uclibc-git-20140212.patch 4.1 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214100215100216100217100218100219100220100221100222100223100224100225100226100227100228100229100230100231100232100233100234100235100236100237100238100239100240100241100242100243100244100245100246100247100248100249100250100251100252100253100254100255100256100257100258100259100260100261100262100263100264100265100266100267100268100269100270100271100272100273100274100275100276100277100278100279100280100281100282100283100284100285100286100287100288100289100290100291100292100293100294100295100296100297100298100299100300100301100302100303100304100305100306100307100308100309100310100311100312100313100314100315100316100317100318100319100320100321100322100323100324100325100326100327100328100329100330100331100332100333100334100335100336100337100338100339100340100341100342100343100344100345100346100347100348100349100350100351100352100353100354100355100356100357100358100359100360100361100362100363100364100365100366100367100368100369100370100371100372100373100374100375100376100377100378100379100380100381100382100383100384100385100386100387100388100389100390100391100392100393100394100395100396100397100398100399100400100401100402100403100404100405100406100407100408100409100410100411100412100413100414100415100416100417100418100419100420100421100422100423100424100425100426100427100428100429100430100431100432100433100434100435100436100437100438100439100440100441100442100443100444100445100446100447100448100449100450100451100452100453100454100455100456100457100458100459100460100461100462100463100464100465100466100467100468100469100470100471100472100473100474100475100476100477100478100479100480100481100482100483100484100485100486100487100488100489100490100491100492100493100494100495100496100497100498100499100500100501100502100503100504100505100506100507100508100509100510100511100512100513100514100515100516100517100518100519100520100521100522100523100524100525100526100527100528100529100530100531100532100533100534100535100536100537100538100539100540100541100542100543100544100545100546100547100548100549100550100551100552100553100554100555100556100557100558100559100560100561100562100563100564100565100566100567100568100569100570100571100572100573100574100575100576100577100578100579100580100581100582100583100584100585100586100587100588100589100590100591100592100593100594100595100596100597100598100599100600100601100602100603100604100605100606100607100608100609100610100611100612100613100614100615100616100617100618100619100620100621100622100623100624100625100626100627100628100629100630100631100632100633100634100635100636100637100638100639100640100641100642100643100644100645100646100647100648100649100650100651100652100653100654100655100656100657100658100659100660100661100662100663100664100665100666100667100668100669100670100671100672100673100674100675100676100677100678100679100680100681100682100683100684100685100686100687100688100689100690100691100692100693100694100695100696100697100698100699100700100701100702100703100704100705100706100707100708100709100710100711100712100713100714100715100716100717100718100719100720100721100722100723100724100725100726100727100728100729100730100731100732100733100734100735100736100737100738100739100740100741100742100743100744100745100746100747100748100749100750100751100752100753100754100755100756100757100758100759100760100761100762100763100764100765100766100767100768100769100770100771100772100773100774100775100776100777100778100779100780100781100782100783100784100785100786100787100788100789100790100791100792100793100794100795100796100797100798100799100800100801100802100803100804100805100806100807100808100809100810100811100812100813100814100815100816100817100818100819100820100821100822100823100824100825100826100827100828100829100830100831100832100833100834100835100836100837100838100839100840100841100842100843100844100845100846100847100848100849100850100851100852100853100854100855100856100857100858100859100860100861100862100863100864100865100866100867100868100869100870100871100872100873100874100875100876100877100878100879100880100881100882100883100884100885100886100887100888100889100890100891100892100893100894100895100896100897100898100899100900100901100902100903100904100905100906100907100908100909100910100911100912100913100914100915100916100917100918100919100920100921100922100923100924100925100926100927100928100929100930100931100932100933100934100935100936100937100938100939100940100941100942100943100944100945100946100947100948100949100950100951100952100953100954100955100956100957100958100959100960100961100962100963100964100965100966100967100968100969100970100971100972100973100974100975100976100977100978100979100980100981100982100983100984100985100986100987100988100989100990100991100992100993100994100995100996100997100998100999101000101001101002101003101004101005101006101007101008101009101010101011101012101013101014101015101016101017101018101019101020101021101022101023101024101025101026101027101028101029101030101031101032101033101034101035101036101037101038101039101040101041101042101043101044101045101046101047101048101049101050101051101052101053101054101055101056101057101058101059101060101061101062101063101064101065101066101067101068101069101070101071101072101073101074101075101076101077101078101079101080101081101082101083101084101085101086101087101088101089101090101091101092101093101094101095101096101097101098101099101100101101101102101103101104101105101106101107101108101109101110101111101112101113101114101115101116101117101118101119101120101121101122101123101124101125101126101127101128101129101130101131101132101133101134101135101136101137101138101139101140101141101142101143101144101145101146101147101148101149101150101151101152101153101154101155101156101157101158101159101160101161101162101163101164101165101166101167101168101169101170101171101172101173101174101175101176101177101178101179101180101181101182101183101184101185101186101187101188101189101190101191101192101193101194101195101196101197101198101199101200101201101202101203101204101205101206101207101208101209101210101211101212101213101214101215101216101217101218101219101220101221101222101223101224101225101226101227101228101229101230101231101232101233101234101235101236101237101238101239101240101241101242101243101244101245101246101247101248101249101250101251101252101253101254101255101256101257101258101259101260101261101262101263101264101265101266101267101268101269101270101271101272101273101274101275101276101277101278101279101280101281101282101283101284101285101286101287101288101289101290101291101292101293101294101295101296101297101298101299101300101301101302101303101304101305101306101307101308101309101310101311101312101313101314101315101316101317101318101319101320101321101322101323101324101325101326101327101328101329101330101331101332101333101334101335101336101337101338101339101340101341101342101343101344101345101346101347101348101349101350101351101352101353101354101355101356101357101358101359101360101361101362101363101364101365101366101367101368101369101370101371101372101373101374101375101376101377101378101379101380101381101382101383101384101385101386101387101388101389101390101391101392101393101394101395101396101397101398101399101400101401101402101403101404101405101406101407101408101409101410101411101412101413101414101415101416101417101418101419101420101421101422101423101424101425101426101427101428101429101430101431101432101433101434101435101436101437101438101439101440101441101442101443101444101445101446101447101448101449101450101451101452101453101454101455101456101457101458101459101460101461101462101463101464101465101466101467101468101469101470101471101472101473101474101475101476101477101478101479101480101481101482101483101484101485101486101487101488101489101490101491101492101493101494101495101496101497101498101499101500101501101502101503101504101505101506101507101508101509101510101511101512101513101514101515101516101517101518101519101520101521101522101523101524101525101526101527101528101529101530101531101532101533101534101535101536101537101538101539101540101541101542101543101544101545101546101547101548101549101550101551101552101553101554101555101556101557101558101559101560101561101562101563101564101565101566101567101568101569101570101571101572101573101574101575101576101577101578101579101580101581101582101583101584101585101586101587101588101589101590101591101592101593101594101595101596101597101598101599101600101601101602101603101604101605101606101607101608101609101610101611101612101613101614101615101616101617101618101619101620101621101622101623101624101625101626101627101628101629101630101631101632101633101634101635101636101637101638101639101640101641101642101643101644101645101646101647101648101649101650101651101652101653101654101655101656101657101658101659101660101661101662101663101664101665101666101667101668101669101670101671101672101673101674101675101676101677101678101679101680101681101682101683101684101685101686101687101688101689101690101691101692101693101694101695101696101697101698101699101700101701101702101703101704101705101706101707101708101709101710101711101712101713101714101715101716101717101718101719101720101721101722101723101724101725101726101727101728101729101730101731101732101733101734101735101736101737101738101739101740101741101742101743101744101745101746101747101748101749101750101751101752101753101754101755101756101757101758101759101760101761101762101763101764101765101766101767101768101769101770101771101772101773101774101775101776101777101778101779101780101781101782101783101784101785101786101787101788101789101790101791101792101793101794101795101796101797101798101799101800101801101802101803101804101805101806101807101808101809101810101811101812101813101814101815101816101817101818101819101820101821101822101823101824101825101826101827101828101829101830101831101832101833101834101835101836101837101838101839101840101841101842101843101844101845101846101847101848101849101850101851101852101853101854101855101856101857101858101859101860101861101862101863101864101865101866101867101868101869101870101871101872101873101874101875101876101877101878101879101880101881101882101883101884101885101886101887101888101889101890101891101892101893101894101895101896101897101898101899101900101901101902101903101904101905101906101907101908101909101910101911101912101913101914101915101916101917101918101919101920101921101922101923101924101925101926101927101928101929101930101931101932101933101934101935101936101937101938101939101940101941101942101943101944101945101946101947101948101949101950101951101952101953101954101955101956101957101958101959101960101961101962101963101964101965101966101967101968101969101970101971101972101973101974101975101976101977101978101979101980101981101982101983101984101985101986101987101988101989101990101991101992101993101994101995101996101997101998101999102000102001102002102003102004102005102006102007102008102009102010102011102012102013102014102015102016102017102018102019102020102021102022102023102024102025102026102027102028102029102030102031102032102033102034102035102036102037102038102039102040102041102042102043102044102045102046102047102048102049102050102051102052102053102054102055102056102057102058102059102060102061102062102063102064102065102066102067102068102069102070102071102072102073102074102075102076102077102078102079102080102081102082102083102084102085102086102087102088102089102090102091102092102093102094102095102096102097102098102099102100102101102102102103102104102105102106102107102108102109102110102111102112102113102114102115102116102117102118102119102120102121102122102123102124102125102126102127102128102129102130102131102132102133102134102135102136102137102138102139102140102141102142102143102144102145102146102147102148102149102150102151102152102153102154102155102156102157102158102159102160102161102162102163102164102165102166102167102168102169102170102171102172102173102174102175102176102177102178102179102180102181102182102183102184102185102186102187102188102189102190102191102192102193102194102195102196102197102198102199102200102201102202102203102204102205102206102207102208102209102210102211102212102213102214102215102216102217102218102219102220102221102222102223102224102225102226102227102228102229102230102231102232102233102234102235102236102237102238102239102240102241102242102243102244102245102246102247102248102249102250102251102252102253102254102255102256102257102258102259102260102261102262102263102264102265102266102267102268102269102270102271102272102273102274102275102276102277102278102279102280102281102282102283102284102285102286102287102288102289102290102291102292102293102294102295102296102297102298102299102300102301102302102303102304102305102306102307102308102309102310102311102312102313102314102315102316102317102318102319102320102321102322102323102324102325102326102327102328102329102330102331102332102333102334102335102336102337102338102339102340102341102342102343102344102345102346102347102348102349102350102351102352102353102354102355102356102357102358102359102360102361102362102363102364102365102366102367102368102369102370102371102372102373102374102375102376102377102378102379102380102381102382102383102384102385102386102387102388102389102390102391102392102393102394102395102396102397102398102399102400102401102402102403102404102405102406102407102408102409102410102411102412102413102414102415102416102417102418102419102420102421102422102423102424102425102426102427102428102429102430102431102432102433102434102435102436102437102438102439102440102441102442102443102444102445102446102447102448102449102450102451102452102453102454102455102456102457102458102459102460102461102462102463102464102465102466102467102468102469102470102471102472102473102474102475102476102477102478102479102480102481102482102483102484102485102486102487102488102489102490102491102492102493102494102495102496102497102498102499102500102501102502102503102504102505102506102507102508102509102510102511102512102513102514102515102516102517102518102519102520102521102522102523102524102525102526102527102528102529102530102531102532102533102534102535102536102537102538102539102540102541102542102543102544102545102546102547102548102549102550102551102552102553102554102555102556102557102558102559102560102561102562102563102564102565102566102567102568102569102570102571102572102573102574102575102576102577102578102579102580102581102582102583102584102585102586102587102588102589102590102591102592102593102594102595102596102597102598102599102600102601102602102603102604102605102606102607102608102609102610102611102612102613102614102615102616102617102618102619102620102621102622102623102624102625102626102627102628102629102630102631102632102633102634102635102636102637102638102639102640102641102642102643102644102645102646102647102648102649102650102651102652102653102654102655102656102657102658102659102660102661102662102663102664102665102666102667102668102669102670102671102672102673102674102675102676102677102678102679102680102681102682102683102684102685102686102687102688102689102690102691102692102693102694102695102696102697102698102699102700102701102702102703102704102705102706102707102708102709102710102711102712102713102714102715102716102717102718102719102720102721102722102723102724102725102726102727102728102729102730102731102732102733102734102735102736102737102738102739102740102741102742102743102744102745102746102747102748102749102750102751102752102753102754102755102756102757102758102759102760102761102762102763102764102765102766102767102768102769102770102771102772102773102774102775102776102777102778102779102780102781102782102783102784102785102786102787102788102789102790102791102792102793102794102795102796102797102798102799102800102801102802102803102804102805102806102807102808102809102810102811102812102813102814102815102816102817102818102819102820102821102822102823102824102825102826102827102828102829102830102831102832102833102834102835102836102837102838102839102840102841102842102843102844102845102846102847102848102849102850102851102852102853102854102855102856102857102858102859102860102861102862102863102864102865102866102867102868102869102870102871102872102873102874102875102876102877102878102879102880102881102882102883102884102885102886102887102888102889102890102891102892102893102894102895102896102897102898102899102900102901102902102903102904102905102906102907102908102909102910102911102912102913102914102915102916102917102918102919102920102921102922102923102924102925102926102927102928102929102930102931102932102933102934102935102936102937102938102939102940102941102942102943102944102945102946102947102948102949102950102951102952102953102954102955102956102957102958102959102960102961102962102963102964102965102966102967102968102969102970102971102972102973102974102975102976102977102978102979102980102981102982102983102984102985102986102987102988102989102990102991102992102993102994102995102996102997102998102999103000103001103002103003103004103005103006103007103008103009103010103011103012103013103014103015103016103017103018103019103020103021103022103023103024103025103026103027103028103029103030103031103032103033103034103035103036103037103038103039103040103041103042103043103044103045103046103047103048103049103050103051103052103053103054103055103056103057103058103059103060103061103062103063103064103065103066103067103068103069103070103071103072103073103074103075103076103077103078103079103080103081103082103083103084103085103086103087103088103089103090103091103092103093103094103095103096103097103098103099103100103101103102103103103104103105103106103107103108103109103110103111103112103113103114103115103116103117103118103119103120103121103122103123103124103125103126103127103128103129103130103131103132103133103134103135103136103137103138103139103140103141103142103143103144103145103146103147103148103149103150103151103152103153103154103155103156103157103158103159103160103161103162103163103164103165103166103167103168103169103170103171103172103173103174103175103176103177103178103179103180103181103182103183103184103185103186103187103188103189103190103191103192103193103194103195103196103197103198103199103200103201103202103203103204103205103206103207103208103209103210103211103212103213103214103215103216103217103218103219103220103221103222103223103224103225103226103227103228103229103230103231103232103233103234103235103236103237103238103239103240103241103242103243103244103245103246103247103248103249103250103251103252103253103254103255103256103257103258103259103260103261103262103263103264103265103266103267103268103269103270103271103272103273103274103275103276103277103278103279103280103281103282103283103284103285103286103287103288103289103290103291103292103293103294103295103296103297103298103299103300103301103302103303103304103305103306103307103308103309103310103311103312103313103314103315103316103317103318103319103320103321103322103323103324103325103326103327103328103329103330103331103332103333103334103335103336103337103338103339103340103341103342103343103344103345103346103347103348103349103350103351103352103353103354103355103356103357103358103359103360103361103362103363103364103365103366103367103368103369103370103371103372103373103374103375103376103377103378103379103380103381103382103383103384103385103386103387103388103389103390103391103392103393103394103395103396103397103398103399103400103401103402103403103404103405103406103407103408103409103410103411103412103413103414103415103416103417103418103419103420103421103422103423103424103425103426103427103428103429103430103431103432103433103434103435103436103437103438103439103440103441103442103443103444103445103446103447103448103449103450103451103452103453103454103455103456103457103458103459103460103461103462103463103464103465103466103467103468103469103470103471103472103473103474103475103476103477103478103479103480103481103482103483103484103485103486103487103488103489103490103491103492103493103494103495103496103497103498103499103500103501103502103503103504103505103506103507103508103509103510103511103512103513103514103515103516103517103518103519103520103521103522103523103524103525103526103527103528103529103530103531103532103533103534103535103536103537103538103539103540103541103542103543103544103545103546103547103548103549103550103551103552103553103554103555103556103557103558103559103560103561103562103563103564103565103566103567103568103569103570103571103572103573103574103575103576103577103578103579103580103581103582103583103584103585103586103587103588103589103590103591103592103593103594103595103596103597103598103599103600103601103602103603103604103605103606103607103608103609103610103611103612103613103614103615103616103617103618103619103620103621103622103623103624103625103626103627103628103629103630103631103632103633103634103635103636103637103638103639103640103641103642103643103644103645103646103647103648103649103650103651103652103653103654103655103656103657103658103659103660103661103662103663103664103665103666103667103668103669103670103671103672103673103674103675103676103677103678103679103680103681103682103683103684103685103686103687103688103689103690103691103692103693103694103695103696103697103698103699103700103701103702103703103704103705103706103707103708103709103710103711103712103713103714103715103716103717103718103719103720103721103722103723103724103725103726103727103728103729103730103731103732103733103734103735103736103737103738103739103740103741103742103743103744103745103746103747103748103749103750103751103752103753103754103755103756103757103758103759103760103761103762103763103764103765103766103767103768103769103770103771103772103773103774103775103776103777103778103779103780103781103782103783103784103785103786103787103788103789103790103791103792103793103794103795103796103797103798103799103800103801103802103803103804103805103806103807103808103809103810103811103812103813103814103815103816103817103818103819103820103821103822103823103824103825103826103827103828103829103830103831103832103833103834103835103836103837103838103839103840103841103842103843103844103845103846103847103848103849103850103851103852103853103854103855103856103857103858103859103860103861103862103863103864103865103866103867103868103869103870103871103872103873103874103875103876103877103878103879103880103881103882103883103884103885103886103887103888103889103890103891103892103893103894103895103896103897103898103899103900103901103902103903103904103905103906103907103908103909103910103911103912103913103914103915103916103917103918103919103920103921103922103923103924103925103926103927103928103929103930103931103932103933103934103935103936103937103938103939103940103941103942103943103944103945103946103947103948103949103950103951103952103953103954103955103956103957103958103959103960103961103962103963103964103965103966103967103968103969103970103971103972103973103974103975103976103977103978103979103980103981103982103983103984103985103986103987103988103989103990103991103992103993103994103995103996103997103998103999104000104001104002104003104004104005104006104007104008104009104010104011104012104013104014104015104016104017104018104019104020104021104022104023104024104025104026104027104028104029104030104031104032104033104034104035104036104037104038104039104040104041104042104043104044104045104046104047104048104049104050104051104052104053104054104055104056104057104058104059104060104061104062104063104064104065104066104067104068104069104070104071104072104073104074104075104076104077104078104079104080104081104082104083104084104085104086104087104088104089104090104091104092104093104094104095104096104097104098104099104100104101104102104103104104104105104106104107104108104109104110104111104112104113104114104115104116104117104118104119104120104121104122104123104124104125104126104127104128104129104130104131104132104133104134104135104136104137104138104139104140104141104142104143104144104145104146104147104148104149104150104151104152104153104154104155104156104157104158104159104160104161104162104163104164104165104166104167104168104169104170104171104172104173104174104175104176104177104178104179104180104181104182104183104184104185104186104187104188104189104190104191104192104193104194104195104196104197104198104199104200104201104202104203104204104205104206104207104208104209104210104211104212104213104214104215104216104217104218104219104220104221104222104223104224104225104226104227104228104229104230104231104232104233104234104235104236104237104238104239104240104241104242104243104244104245104246104247104248104249104250104251104252104253104254104255104256104257104258104259104260104261104262104263104264104265104266104267104268104269104270104271104272104273104274104275104276104277104278104279104280104281104282104283104284104285104286104287104288104289104290104291104292104293104294104295104296104297104298104299104300104301104302104303104304104305104306104307104308104309104310104311104312104313104314104315104316104317104318104319104320104321104322104323104324104325104326104327104328104329104330104331104332104333104334104335104336104337104338104339104340104341104342104343104344104345104346104347104348104349104350104351104352104353104354104355104356104357104358104359104360104361104362104363104364104365104366104367104368104369104370104371104372104373104374104375104376104377104378104379104380104381104382104383104384104385104386104387104388104389104390104391104392104393104394104395104396104397104398104399104400104401104402104403104404104405104406104407104408104409104410104411104412104413104414104415104416104417104418104419104420104421104422104423104424104425104426104427104428104429104430104431104432104433104434104435104436104437104438104439104440104441104442104443104444104445104446104447104448104449104450104451104452104453104454104455104456104457104458104459104460104461104462104463104464104465104466104467104468104469104470104471104472104473104474104475104476104477104478104479104480104481104482104483104484104485104486104487104488104489104490104491104492104493104494104495104496104497104498104499104500104501104502104503104504104505104506104507104508104509104510104511104512104513104514104515104516104517104518104519104520104521104522104523104524104525104526104527104528104529104530104531104532104533104534104535104536104537104538104539104540104541104542104543104544104545104546104547104548104549104550104551104552104553104554104555104556104557104558104559104560104561104562104563104564104565104566104567104568104569104570104571104572104573104574104575104576104577104578104579104580104581104582104583104584104585104586104587104588104589104590104591104592104593104594104595104596104597104598104599104600104601104602104603104604104605104606104607104608104609104610104611104612104613104614104615104616104617104618104619104620104621104622104623104624104625104626104627104628104629104630104631104632104633104634104635104636104637104638104639104640104641104642104643104644104645104646104647104648104649104650104651104652104653104654104655104656104657104658104659104660104661104662104663104664104665104666104667104668104669104670104671104672104673104674104675104676104677104678104679104680104681104682104683104684104685104686104687104688104689104690104691104692104693104694104695104696104697104698104699104700104701104702104703104704104705104706104707104708104709104710104711104712104713104714104715104716104717104718104719104720104721104722104723104724104725104726104727104728104729104730104731104732104733104734104735104736104737104738104739104740104741104742104743104744104745104746104747104748104749104750104751104752104753104754104755104756104757104758104759104760104761104762104763104764104765104766104767104768104769104770104771104772104773104774104775104776104777104778104779104780104781104782104783104784104785104786104787104788104789104790104791104792104793104794104795104796104797104798104799104800104801104802104803104804104805104806104807104808104809104810104811104812104813104814104815104816104817104818104819104820104821104822104823104824104825104826104827104828104829104830104831104832104833104834104835104836104837104838104839104840104841104842104843104844104845104846104847104848104849104850104851104852104853104854104855104856104857104858104859104860104861104862104863104864104865104866104867104868104869104870104871104872104873104874104875104876104877104878104879104880104881104882104883104884104885104886104887104888104889104890104891104892104893104894104895104896104897104898104899104900104901104902104903104904104905104906104907104908104909104910104911104912104913104914104915104916104917104918104919104920104921104922104923104924104925104926104927104928104929104930104931104932104933104934104935104936104937104938104939104940104941104942104943104944104945104946104947104948104949104950104951104952104953104954104955104956104957104958104959104960104961104962104963104964104965104966104967104968104969104970104971104972104973104974104975104976104977104978104979104980104981104982104983104984104985104986104987104988104989104990104991104992104993104994104995104996104997104998104999105000105001105002105003105004105005105006105007105008105009105010105011105012105013105014105015105016105017105018105019105020105021105022105023105024105025105026105027105028105029105030105031105032105033105034105035105036105037105038105039105040105041105042105043105044105045105046105047105048105049105050105051105052105053105054105055105056105057105058105059105060105061105062105063105064105065105066105067105068105069105070105071105072105073105074105075105076105077105078105079105080105081105082105083105084105085105086105087105088105089105090105091105092105093105094105095105096105097105098105099105100105101105102105103105104105105105106105107105108105109105110105111105112105113105114105115105116105117105118105119105120105121105122105123105124105125105126105127105128105129105130105131105132105133105134105135105136105137105138105139105140105141105142105143105144105145105146105147105148105149105150105151105152105153105154105155105156105157105158105159105160105161105162105163105164105165105166105167105168105169105170105171105172105173105174105175105176105177105178105179105180105181105182105183105184105185105186105187105188105189105190105191105192105193105194105195105196105197105198105199105200105201105202105203105204105205105206105207105208105209105210105211105212105213105214105215105216105217105218105219105220105221105222105223105224105225105226105227105228105229105230105231105232105233105234105235105236105237105238105239105240105241105242105243105244105245105246105247105248105249105250105251105252105253105254105255105256105257105258105259105260105261105262105263105264105265105266105267105268105269105270105271105272105273105274105275105276105277105278105279105280105281105282105283105284105285105286105287105288105289105290105291105292105293105294105295105296105297105298105299105300105301105302105303105304105305105306105307105308105309105310105311105312105313105314105315105316105317105318105319105320105321105322105323105324105325105326105327105328105329105330105331105332105333105334105335105336105337105338105339105340105341105342105343105344105345105346105347105348105349105350105351105352105353105354105355105356105357105358105359105360105361105362105363105364105365105366105367105368105369105370105371105372105373105374105375105376105377105378105379105380105381105382105383105384105385105386105387105388105389105390105391105392105393105394105395105396105397105398105399105400105401105402105403105404105405105406105407105408105409105410105411105412105413105414105415105416105417105418105419105420105421105422105423105424105425105426105427105428105429105430105431105432105433105434105435105436105437105438105439105440105441105442105443105444105445105446105447105448105449105450105451105452105453105454105455105456105457105458105459105460105461105462105463105464105465105466105467105468105469105470105471105472105473105474105475105476105477105478105479105480105481105482105483105484105485105486105487105488105489105490105491105492105493105494105495105496105497105498105499105500105501105502105503105504105505105506105507105508105509105510105511105512105513105514105515105516105517105518105519105520105521105522105523105524105525105526105527105528105529105530105531105532105533105534105535105536105537105538105539105540105541105542105543105544105545105546105547105548105549105550105551105552105553105554105555105556105557105558105559105560105561105562105563105564105565105566105567105568105569105570105571105572105573105574105575105576105577105578105579105580105581105582105583105584105585105586105587105588105589105590105591105592105593105594105595105596105597105598105599105600105601105602105603105604105605105606105607105608105609105610105611105612105613105614105615105616105617105618105619105620105621105622105623105624105625105626105627105628105629105630105631105632105633105634105635105636105637105638105639105640105641105642105643105644105645105646105647105648105649105650105651105652105653105654105655105656105657105658105659105660105661105662105663105664105665105666105667105668105669105670105671105672105673105674105675105676105677105678105679105680105681105682105683105684105685105686105687105688105689105690105691105692105693105694105695105696105697105698105699105700105701105702105703105704105705105706105707105708105709105710105711105712105713105714105715105716105717105718105719105720105721105722105723105724105725105726105727105728105729105730105731105732105733105734105735105736105737105738105739105740105741105742105743105744105745105746105747105748105749105750105751105752105753105754105755105756105757105758105759105760105761105762105763105764105765105766105767105768105769105770105771105772105773105774105775105776105777105778105779105780105781105782105783105784105785105786105787105788105789105790105791105792105793105794105795105796105797105798105799105800105801105802105803105804105805105806105807105808105809105810105811105812105813105814105815105816105817105818105819105820105821105822105823105824105825105826105827105828105829105830105831105832105833105834105835105836105837105838105839105840105841105842105843105844105845105846105847105848105849105850105851105852105853105854105855105856105857105858105859105860105861105862105863105864105865105866105867105868105869105870105871105872105873105874105875105876105877105878105879105880105881105882105883105884105885105886105887105888105889105890105891105892105893105894105895105896105897105898105899105900105901105902105903105904105905105906105907105908105909105910105911105912105913105914105915105916105917105918105919105920105921105922105923105924105925105926105927105928105929105930105931105932105933105934105935105936105937105938105939105940105941105942105943105944105945105946105947105948105949105950105951105952105953105954105955105956105957105958105959105960105961105962105963105964105965105966105967105968105969105970105971105972105973105974105975105976105977105978105979105980105981105982105983105984105985105986105987105988105989105990105991105992105993105994105995105996105997105998105999106000106001106002106003106004106005106006106007106008106009106010106011106012106013106014106015106016106017106018106019106020106021106022106023106024106025106026106027106028106029106030106031106032106033106034106035106036106037106038106039106040106041106042106043106044106045106046106047106048106049106050106051106052106053106054106055106056106057106058106059106060106061106062106063106064106065106066106067106068106069106070106071106072106073106074106075106076106077106078106079106080106081106082106083106084106085106086106087106088106089106090106091106092106093106094106095106096106097106098106099106100106101106102106103106104106105106106106107106108106109106110106111106112106113106114106115106116106117106118106119106120106121106122106123106124106125106126106127106128106129106130106131106132106133106134106135106136106137106138106139106140106141106142106143106144106145106146106147106148106149106150106151106152106153106154106155106156106157106158106159106160106161106162106163106164106165106166106167106168106169106170106171106172106173106174106175106176106177106178106179106180106181106182106183106184106185106186106187106188106189106190106191106192106193106194106195106196106197106198106199106200106201106202106203106204106205106206106207106208106209106210106211106212106213106214106215106216106217106218106219106220106221106222106223106224106225106226106227106228106229106230106231106232106233106234106235106236106237106238106239106240106241106242106243106244106245106246106247106248106249106250106251106252106253106254106255106256106257106258106259106260106261106262106263106264106265106266106267106268106269106270106271106272106273106274106275106276106277106278106279106280106281106282106283106284106285106286106287106288106289106290106291106292106293106294106295106296106297106298106299106300106301106302106303106304106305106306106307106308106309106310106311106312106313106314106315106316106317106318106319106320106321106322106323106324106325106326106327106328106329106330106331106332106333106334106335106336106337106338106339106340106341106342106343106344106345106346106347106348106349106350106351106352106353106354106355106356106357106358106359106360106361106362106363106364106365106366106367106368106369106370106371106372106373106374106375106376106377106378106379106380106381106382106383106384106385106386106387106388106389106390106391106392106393106394106395106396106397106398106399106400106401106402106403106404106405106406106407106408106409106410106411106412106413106414106415106416106417106418106419106420106421106422106423106424106425106426106427106428106429106430106431106432106433106434106435106436106437106438106439106440106441106442106443106444106445106446106447106448106449106450106451106452106453106454106455106456106457106458106459106460106461106462106463106464106465106466106467106468106469106470106471106472106473106474106475106476106477106478106479106480106481106482106483106484106485106486106487106488106489106490106491106492106493106494106495106496106497106498106499106500106501106502106503106504106505106506106507106508106509106510106511106512106513106514106515106516106517106518106519106520106521106522106523106524106525106526106527106528106529106530106531106532106533106534106535106536106537106538106539106540106541106542106543106544106545106546106547106548106549106550106551106552106553106554106555106556106557106558106559106560106561106562106563106564106565106566106567106568106569106570106571106572106573106574106575106576106577106578106579106580106581106582106583106584106585106586106587106588106589106590106591106592106593106594106595106596106597106598106599106600106601106602106603106604106605106606106607106608106609106610106611106612106613106614106615106616106617106618106619106620106621106622106623106624106625106626106627106628106629106630106631106632106633106634106635106636106637106638106639106640106641106642106643106644106645106646106647106648106649106650106651106652106653106654106655106656106657106658106659106660106661106662106663106664106665106666106667106668106669106670106671106672106673106674106675106676106677106678106679106680106681106682106683106684106685106686106687106688106689106690106691106692106693106694106695106696106697106698106699106700106701106702106703106704106705106706106707106708106709106710106711106712106713106714106715106716106717106718106719106720106721106722106723106724106725106726106727106728106729106730106731106732106733106734106735106736106737106738106739106740106741106742106743106744106745106746106747106748106749106750106751106752106753106754106755106756106757106758106759106760106761106762106763106764106765106766106767106768106769106770106771106772106773106774106775106776106777106778106779106780106781106782106783106784106785106786106787106788106789106790106791106792106793106794106795106796106797106798106799106800106801106802106803106804106805106806106807106808106809106810106811106812106813106814106815106816106817106818106819106820106821106822106823106824106825106826106827106828106829106830106831106832106833106834106835106836106837106838106839106840106841106842106843106844106845106846106847106848106849106850106851106852106853106854106855106856106857106858106859106860106861106862106863106864106865106866106867106868106869106870106871106872106873106874106875106876106877106878106879106880106881106882106883106884106885106886106887106888106889106890106891106892106893106894106895106896106897106898106899106900106901106902106903106904106905106906106907106908106909106910106911106912106913106914106915106916106917106918106919106920106921106922106923106924106925106926106927106928106929106930106931106932106933106934106935106936106937106938106939106940106941106942106943106944106945106946106947106948106949106950106951106952106953106954106955106956106957106958106959106960106961106962106963106964106965106966106967106968106969106970106971106972106973106974106975106976106977106978106979106980106981106982106983106984106985106986106987106988106989106990106991106992106993106994106995106996106997106998106999107000107001107002107003107004107005107006107007107008107009107010107011107012107013107014107015107016107017107018107019107020107021107022107023107024107025107026107027107028107029107030107031107032107033107034107035107036107037107038107039107040107041107042107043107044107045107046107047107048107049107050107051107052107053107054107055107056107057107058107059107060107061107062107063107064107065107066107067107068107069107070107071107072107073107074107075107076107077107078107079107080107081107082107083107084107085107086107087107088107089107090107091107092107093107094107095107096107097107098107099107100107101107102107103107104107105107106107107107108107109107110107111107112107113107114107115107116107117107118107119107120107121107122107123107124107125107126107127107128107129107130107131107132107133107134107135107136107137107138107139107140107141107142107143107144107145107146107147107148107149107150107151107152107153107154107155107156107157107158107159107160107161107162107163107164107165107166107167107168107169107170107171107172107173107174107175107176107177107178107179107180107181107182107183107184107185107186107187107188107189107190107191107192107193107194107195107196107197107198107199107200107201107202107203107204107205107206107207107208107209107210107211107212107213107214107215107216107217107218107219107220107221107222107223107224107225107226107227107228107229107230107231107232107233107234107235107236107237107238107239107240107241107242107243107244107245107246107247107248107249107250107251107252107253107254107255107256107257107258107259107260107261107262107263107264107265107266107267107268107269107270107271107272107273107274107275107276107277107278107279107280107281107282107283107284107285107286107287107288107289107290107291107292107293107294107295107296107297107298107299107300107301107302107303107304107305107306107307107308107309107310107311107312107313107314107315107316107317107318107319107320107321107322107323107324107325107326107327107328107329107330107331107332107333107334107335107336107337107338107339107340107341107342107343107344107345107346107347107348107349107350107351107352107353107354107355107356107357107358107359107360107361107362107363107364107365107366107367107368107369107370107371107372107373107374107375107376107377107378107379107380107381107382107383107384107385107386107387107388107389107390107391107392107393107394107395107396107397107398107399107400107401107402107403107404107405107406107407107408107409107410107411107412107413107414107415107416107417107418107419107420107421107422107423107424107425107426107427107428107429107430107431107432107433107434107435107436107437107438107439107440107441107442107443107444107445107446107447107448107449107450107451107452107453107454107455107456107457107458107459107460107461107462107463107464107465107466107467107468107469107470107471107472107473107474107475107476107477107478107479107480107481107482107483107484107485107486107487107488107489107490107491107492107493107494107495107496107497107498107499107500107501107502107503107504107505107506107507107508107509107510107511107512107513107514107515107516107517107518107519107520107521107522107523107524107525107526107527107528107529107530107531107532107533107534107535107536107537107538107539107540107541107542107543107544107545107546107547107548107549107550107551107552107553107554107555107556107557107558107559107560107561107562107563107564107565107566107567107568107569107570107571107572107573107574107575107576107577107578107579107580107581107582107583107584107585107586107587107588107589107590107591107592107593107594107595107596107597107598107599107600107601107602107603107604107605107606107607107608107609107610107611107612107613107614107615107616107617107618107619107620107621107622107623107624107625107626107627107628107629107630107631107632107633107634107635107636107637107638107639107640107641107642107643107644107645107646107647107648107649107650107651107652107653107654107655107656107657107658107659107660107661107662107663107664107665107666107667107668107669107670107671107672107673107674107675107676107677107678107679107680107681107682107683107684107685107686107687107688107689107690107691107692107693107694107695107696107697107698107699107700107701107702107703107704107705107706107707107708107709107710107711107712107713107714107715107716107717107718107719107720107721107722107723107724107725107726107727107728107729107730107731107732107733107734107735107736107737107738107739107740107741107742107743107744107745107746107747107748107749107750107751107752107753107754107755107756107757107758107759107760107761107762107763107764107765107766107767107768107769107770107771107772107773107774107775107776107777107778107779107780107781107782107783107784107785107786107787107788107789107790107791107792107793107794107795107796107797107798107799107800107801107802107803107804107805107806107807107808107809107810107811107812107813107814107815107816107817107818107819107820107821107822107823107824107825107826107827107828107829107830107831107832107833107834107835107836107837107838107839107840107841107842107843107844107845107846107847107848107849107850107851107852107853107854107855107856107857107858107859107860107861107862107863107864107865107866107867107868107869107870107871107872107873107874107875107876107877107878107879107880107881107882107883107884107885107886107887107888107889107890107891107892107893107894107895107896107897107898107899107900107901107902107903107904107905107906107907107908107909107910107911107912107913107914107915107916107917107918107919107920107921107922107923107924107925107926107927107928107929107930107931107932107933107934107935107936107937107938107939107940107941107942107943107944107945107946107947107948107949107950107951107952107953107954107955107956107957107958107959107960107961107962107963107964107965107966107967107968107969107970107971107972107973107974107975107976107977107978107979107980107981107982107983107984107985107986107987107988107989107990107991107992107993107994107995107996107997107998107999108000108001108002108003108004108005108006108007108008108009108010108011108012108013108014108015108016108017108018108019108020108021108022108023108024108025108026108027108028108029108030108031108032108033108034108035108036108037108038108039108040108041108042108043108044108045108046108047108048108049108050108051108052108053108054108055108056108057108058108059108060108061108062108063108064108065108066108067108068108069108070108071108072108073108074108075108076108077108078108079108080108081108082108083108084108085108086108087108088108089108090108091108092108093108094108095108096108097108098108099108100108101108102108103108104108105108106108107108108108109108110108111108112108113108114108115108116108117108118108119108120108121108122108123108124108125108126108127108128108129108130108131108132108133108134108135108136108137108138108139108140108141108142108143108144108145108146108147108148108149108150108151108152108153108154108155108156108157108158108159108160108161108162108163108164108165108166108167108168108169108170108171108172108173108174108175108176108177108178108179108180108181108182108183108184108185108186108187108188108189108190108191108192108193108194108195108196108197108198108199108200108201108202108203108204108205108206108207108208108209108210108211108212108213108214108215108216108217108218108219108220108221108222108223108224108225108226108227108228108229108230108231108232108233108234108235108236108237108238108239108240108241108242108243108244108245108246108247108248108249108250108251108252108253108254108255108256108257108258108259108260108261108262108263108264108265108266108267108268108269108270108271108272108273108274108275108276108277108278108279108280108281108282108283108284108285108286108287108288108289108290108291108292108293108294108295108296108297108298108299108300108301108302108303108304108305108306108307108308108309108310108311108312108313108314108315108316108317108318108319108320108321108322108323108324108325108326108327108328108329108330108331108332108333108334108335108336108337108338108339108340108341108342108343108344108345108346108347108348108349108350108351108352108353108354108355108356108357108358108359108360108361108362108363108364108365108366108367108368108369108370108371108372108373108374108375108376108377108378108379108380108381108382108383108384108385108386108387108388108389108390108391108392108393108394108395108396108397108398108399108400108401108402108403108404108405108406108407108408108409108410108411108412108413108414108415108416108417108418108419108420108421108422108423108424108425108426108427108428108429108430108431108432108433108434108435108436108437108438108439108440108441108442108443108444108445108446108447108448108449108450108451108452108453108454108455108456108457108458108459108460108461108462108463108464108465108466108467108468108469108470108471108472108473108474108475108476108477108478108479108480108481108482108483108484108485108486108487108488108489108490108491108492108493108494108495108496108497108498108499108500108501108502108503108504108505108506108507108508108509108510108511108512108513108514108515108516108517108518108519108520108521108522108523108524108525108526108527108528108529108530108531108532108533108534108535108536108537108538108539108540108541108542108543108544108545108546108547108548108549108550108551108552108553108554108555108556108557108558108559108560108561108562108563108564108565108566108567108568108569108570108571108572108573108574108575108576108577108578108579108580108581108582108583108584108585108586108587108588108589108590108591108592108593108594108595108596108597108598108599108600108601108602108603108604108605108606108607108608108609108610108611108612108613108614108615108616108617108618108619108620108621108622108623108624108625108626108627108628108629108630108631108632108633108634108635108636108637108638108639108640108641108642108643108644108645108646108647108648108649108650108651108652108653108654108655108656108657108658108659108660108661108662108663108664108665108666108667108668108669108670108671108672108673108674108675108676108677108678108679108680108681108682108683108684108685108686108687108688108689108690108691108692108693108694108695108696108697108698108699108700108701108702108703108704108705108706108707108708108709108710108711108712108713108714108715108716108717108718108719108720108721108722108723108724108725108726108727108728108729108730108731108732108733108734108735108736108737108738108739108740108741108742108743108744108745108746108747108748108749108750108751108752108753108754108755108756108757108758108759108760108761108762108763108764108765108766108767108768108769108770108771108772108773108774108775108776108777108778108779108780108781108782108783108784108785108786108787108788108789108790108791108792108793108794108795108796108797108798108799108800108801108802108803108804108805108806108807108808108809108810108811108812108813108814108815108816108817108818108819108820108821108822108823108824108825108826108827108828108829108830108831108832108833108834108835108836108837108838108839108840108841108842108843108844108845108846108847108848108849108850108851108852108853108854108855108856108857108858108859108860108861108862108863108864108865108866108867108868108869108870108871108872108873108874108875108876108877108878108879108880108881108882108883108884108885108886108887108888108889108890108891108892108893108894108895108896108897108898108899108900108901108902108903108904108905108906108907108908108909108910108911108912108913108914108915108916108917108918108919108920108921108922108923108924108925108926108927108928108929108930108931108932108933108934108935108936108937108938108939108940108941108942108943108944108945108946108947108948108949108950108951108952108953108954108955108956108957108958108959108960108961108962108963108964108965108966108967108968108969108970108971108972108973108974108975108976108977108978108979108980108981108982108983108984108985108986108987108988108989108990108991108992108993108994108995108996108997108998108999109000109001109002109003109004109005109006109007109008109009109010109011109012109013109014109015109016109017109018109019109020109021109022109023109024109025109026109027109028109029109030109031109032109033109034109035109036109037109038109039109040109041109042109043109044109045109046109047109048109049109050109051109052109053109054109055109056109057109058109059109060109061109062109063109064109065109066109067109068109069109070109071109072109073109074109075109076109077109078109079109080109081109082109083109084109085109086109087109088109089109090109091109092109093109094109095109096109097109098109099109100109101109102109103109104109105109106109107109108109109109110109111109112109113109114109115109116109117109118109119109120109121109122109123109124109125109126109127109128109129109130109131109132109133109134109135109136109137109138109139109140109141109142109143109144109145109146109147109148109149109150109151109152109153109154109155109156109157109158109159109160109161109162109163109164109165109166109167109168109169109170109171109172109173109174109175109176109177109178109179109180109181109182109183109184109185109186109187109188109189109190109191109192109193109194109195109196109197109198109199109200109201109202109203109204109205109206109207109208109209109210109211109212109213109214109215109216109217109218109219109220109221109222109223109224109225109226109227109228109229109230109231109232109233109234109235109236109237109238109239109240109241109242109243109244109245109246109247109248109249109250109251109252109253109254109255109256109257109258109259109260109261109262109263109264109265109266109267109268109269109270109271109272109273109274109275109276109277109278109279109280109281109282109283109284109285109286109287109288109289109290109291109292109293109294109295109296109297109298109299109300109301109302109303109304109305109306109307109308109309109310109311109312109313109314109315109316109317109318109319109320109321109322109323109324109325109326109327109328109329109330109331109332109333109334109335109336109337109338109339109340109341109342109343109344109345109346109347109348109349109350109351109352109353109354109355109356109357109358109359109360109361109362109363109364109365109366109367109368109369109370109371109372109373109374109375109376109377109378109379109380109381109382109383109384109385109386109387109388109389109390109391109392109393109394109395109396109397109398109399109400109401109402109403109404109405109406109407109408109409109410109411109412109413109414109415109416109417109418109419109420109421109422109423109424109425109426109427109428109429109430109431109432109433109434109435109436109437109438109439109440109441109442109443109444109445109446109447109448109449109450109451109452109453109454109455109456109457109458109459109460109461109462109463109464109465109466109467109468109469109470109471109472109473109474109475109476109477109478109479109480109481109482109483109484109485109486109487109488109489109490109491109492109493109494109495109496109497109498109499109500109501109502109503109504109505109506109507109508109509109510109511109512109513109514109515109516109517109518109519109520109521109522109523109524109525109526109527109528109529109530109531109532109533109534109535109536109537109538109539109540109541109542109543109544109545109546109547109548109549109550109551109552109553109554109555109556109557109558109559109560109561109562109563109564109565109566109567109568109569109570109571109572109573109574109575109576109577109578109579109580109581109582109583109584109585109586109587109588109589109590109591109592109593109594109595109596109597109598109599109600109601109602109603109604109605109606109607109608109609109610109611109612109613109614109615109616109617109618109619109620109621109622109623109624109625109626109627109628109629109630109631109632109633109634109635109636109637109638109639109640109641109642109643109644109645109646109647109648109649109650109651109652109653109654109655109656109657109658109659109660109661109662109663109664109665109666109667109668109669109670109671109672109673109674109675109676109677109678109679109680109681109682109683109684109685109686109687109688109689109690109691109692109693109694109695109696109697109698109699109700109701109702109703109704109705109706109707109708109709109710109711109712109713109714109715109716109717109718109719109720109721109722109723109724109725109726109727109728109729109730109731109732109733109734109735109736109737109738109739109740109741109742109743109744109745109746109747109748109749109750109751109752109753109754109755109756109757109758109759109760109761109762109763109764109765109766109767109768109769109770109771109772109773109774109775109776109777109778109779109780109781109782109783109784109785109786109787109788109789109790109791109792109793109794109795109796109797109798109799109800109801109802109803109804109805109806109807109808109809109810109811109812109813109814109815109816109817109818109819109820109821109822109823109824109825109826109827109828109829109830109831109832109833109834109835109836109837109838109839109840109841109842109843109844109845109846109847109848109849109850109851109852109853109854109855109856109857109858109859109860109861109862109863109864109865109866109867109868109869109870109871109872109873109874109875109876109877109878109879109880109881109882109883109884109885109886109887109888109889109890109891109892109893109894109895109896109897109898109899109900109901109902109903109904109905109906109907109908109909109910109911109912109913109914109915109916109917109918109919109920109921109922109923109924109925109926109927109928109929109930109931109932109933109934109935109936109937109938109939109940109941109942109943109944109945109946109947109948109949109950109951109952109953109954109955109956109957109958109959109960109961109962109963109964109965109966109967109968109969109970109971109972109973109974109975109976109977109978109979109980109981109982109983109984109985109986109987109988109989109990109991109992109993109994109995109996109997109998109999110000110001110002110003110004110005110006110007110008110009110010110011110012110013110014110015110016110017110018110019110020110021110022110023110024110025110026110027110028110029110030110031110032110033110034110035110036110037110038110039110040110041110042110043110044110045110046110047110048110049110050110051110052110053110054110055110056110057110058110059110060110061110062110063110064110065110066110067110068110069110070110071110072110073110074110075110076110077110078110079110080110081110082110083110084110085110086110087110088110089110090110091110092110093110094110095110096110097110098110099110100110101110102110103110104110105110106110107110108110109110110110111110112110113110114110115110116110117110118110119110120110121110122110123110124110125110126110127110128110129110130110131110132110133110134110135110136110137110138110139110140110141110142110143110144110145110146110147110148110149110150110151110152110153110154110155110156110157110158110159110160110161110162110163110164110165110166110167110168110169110170110171110172110173110174110175110176110177110178110179110180110181110182110183110184110185110186110187110188110189110190110191110192110193110194110195110196110197110198110199110200110201110202110203110204110205110206110207110208110209110210110211110212110213110214110215110216110217110218110219110220110221110222110223110224110225110226110227110228110229110230110231110232110233110234110235110236110237110238110239110240110241110242110243110244110245110246110247110248110249110250110251110252110253110254110255110256110257110258110259110260110261110262110263110264110265110266110267110268110269110270110271110272110273110274110275110276110277110278110279110280110281110282110283110284110285110286110287110288110289110290110291110292110293110294110295110296110297110298110299110300110301110302110303110304110305110306110307110308110309110310110311110312110313110314110315110316110317110318110319110320110321110322110323110324110325110326110327110328110329110330110331110332110333110334110335110336110337110338110339110340110341110342110343110344110345110346110347110348110349110350110351110352110353110354110355110356110357110358110359110360110361110362110363110364110365110366110367110368110369110370110371110372110373110374110375110376110377110378110379110380110381110382110383110384110385110386110387110388110389110390110391110392110393110394110395110396110397110398110399110400110401110402110403110404110405110406110407110408110409110410110411110412110413110414110415110416110417110418110419110420110421110422110423110424110425110426110427110428110429110430110431110432110433110434110435110436110437110438110439110440110441110442110443110444110445110446110447110448110449110450110451110452110453110454110455110456110457110458110459110460110461110462110463110464110465110466110467110468110469110470110471110472110473110474110475110476110477110478110479110480110481110482110483110484110485110486110487110488110489110490110491110492110493110494110495110496110497110498110499110500110501110502110503110504110505110506110507110508110509110510110511110512110513110514110515110516110517110518110519110520110521110522110523110524110525110526110527110528110529110530110531110532110533110534110535110536110537110538110539110540110541110542110543110544110545110546110547110548110549110550110551110552110553110554110555110556110557110558110559110560110561110562110563110564110565110566110567110568110569110570110571110572110573110574110575110576110577110578110579110580110581110582110583110584110585110586110587110588110589110590110591110592110593110594110595110596110597110598110599110600110601110602110603110604110605110606110607110608110609110610110611110612110613110614110615110616110617110618110619110620110621110622110623110624110625110626110627110628110629110630110631110632110633110634110635110636110637110638110639110640110641110642110643110644110645110646110647110648110649110650110651110652110653110654110655110656110657110658110659110660110661110662110663110664110665110666110667110668110669110670110671110672110673110674110675110676110677110678110679110680110681110682110683110684110685110686110687110688110689110690110691110692110693110694110695110696110697110698110699110700110701110702110703110704110705110706110707110708110709110710110711110712110713110714110715110716110717110718110719110720110721110722110723110724110725110726110727110728110729110730110731110732110733110734110735110736110737110738110739110740110741110742110743110744110745110746110747110748110749110750110751110752110753110754110755110756110757110758110759110760110761110762110763110764110765110766110767110768110769110770110771110772110773110774110775110776110777110778110779110780110781110782110783110784110785110786110787110788110789110790110791110792110793110794110795110796110797110798110799110800110801110802110803110804110805110806110807110808110809110810110811110812110813110814110815110816110817110818110819110820110821110822110823110824110825110826110827110828110829110830110831110832110833110834110835110836110837110838110839110840110841110842110843110844110845110846110847110848110849110850110851110852110853110854110855110856110857110858110859110860110861110862110863110864110865110866110867110868110869110870110871110872110873110874110875110876110877110878110879110880110881110882110883110884110885110886110887110888110889110890110891110892110893110894110895110896110897110898110899110900110901110902110903110904110905110906110907110908110909110910110911110912110913110914110915110916110917110918110919110920110921110922110923110924110925110926110927110928110929110930110931110932110933110934110935110936110937110938110939110940110941110942110943110944110945110946110947110948110949110950110951110952110953110954110955110956110957110958110959110960110961110962110963110964110965110966110967110968110969110970110971110972110973110974110975110976110977110978110979110980110981110982110983110984110985110986110987110988110989110990110991110992110993110994110995110996110997110998110999111000111001111002111003111004111005111006111007111008111009111010111011111012111013111014111015111016111017111018111019111020111021111022111023111024111025111026111027111028111029111030111031111032111033111034111035111036111037111038111039111040111041111042111043111044111045111046111047111048111049111050111051111052111053111054111055111056111057111058111059111060111061111062111063111064111065111066111067111068111069111070111071111072111073111074111075111076111077111078111079111080111081111082111083111084111085111086111087111088111089111090111091111092111093111094111095111096111097111098111099111100111101111102111103111104111105111106111107111108111109111110111111111112111113111114111115111116111117111118111119111120111121111122111123111124111125111126111127111128111129111130111131111132111133111134111135111136111137111138111139111140111141111142111143111144111145111146111147111148111149111150111151111152111153111154111155111156111157111158111159111160111161111162111163111164111165111166111167111168111169111170111171111172111173111174111175111176111177111178111179111180111181111182111183111184111185111186111187111188111189111190111191111192111193111194111195111196111197111198111199111200111201111202111203111204111205111206111207111208111209111210111211111212111213111214111215111216111217111218111219111220111221111222111223111224111225111226111227111228111229111230111231111232111233111234111235111236111237111238111239111240111241111242111243111244111245111246111247111248111249111250111251111252111253111254111255111256111257111258111259111260111261111262111263111264111265111266111267111268111269111270111271111272111273111274111275111276111277111278111279111280111281111282111283111284111285111286111287111288111289111290111291111292111293111294111295111296111297111298111299111300111301111302111303111304111305111306111307111308111309111310111311111312111313111314111315111316111317111318111319111320111321111322111323111324111325111326111327111328111329111330111331111332111333111334111335111336111337111338111339111340111341111342111343111344111345111346111347111348111349111350111351111352111353111354111355111356111357111358111359111360111361111362111363111364111365111366111367111368111369111370111371111372111373111374111375111376111377111378111379111380111381111382111383111384111385111386111387111388111389111390111391111392111393111394111395111396111397111398111399111400111401111402111403111404111405111406111407111408111409111410111411111412111413111414111415111416111417111418111419111420111421111422111423111424111425111426111427111428111429111430111431111432111433111434111435111436111437111438111439111440111441111442111443111444111445111446111447111448111449111450111451111452111453111454111455111456111457111458111459111460111461111462111463111464111465111466111467111468111469111470111471111472111473111474111475111476111477111478111479111480111481111482111483111484111485111486111487111488111489111490111491111492111493111494111495111496111497111498111499111500111501111502111503111504111505111506111507111508111509111510111511111512111513111514111515111516111517111518111519111520111521111522111523111524111525111526111527111528111529111530111531111532111533111534111535111536111537111538111539111540111541111542111543111544111545111546111547111548111549111550111551111552111553111554111555111556111557111558111559111560111561111562111563111564111565111566111567111568111569111570111571111572111573111574111575111576111577111578111579111580111581111582111583111584111585111586111587111588111589111590111591111592111593111594111595111596111597111598111599111600111601111602111603111604111605111606111607111608111609111610111611111612111613111614111615111616111617111618111619111620111621111622111623111624111625111626111627111628111629111630111631111632111633111634111635111636111637111638111639111640111641111642111643111644111645111646111647111648111649111650111651111652111653111654111655111656111657111658111659111660111661111662111663111664111665111666111667111668111669111670111671111672111673111674111675111676111677111678111679111680111681111682111683111684111685111686111687111688111689111690111691111692111693111694111695111696111697111698111699111700111701111702111703111704111705111706111707111708111709111710111711111712111713111714111715111716111717111718111719111720111721111722111723111724111725111726111727111728111729111730111731111732111733111734111735111736111737111738111739111740111741111742111743111744111745111746111747111748111749111750111751111752111753111754111755111756111757111758111759111760111761111762111763111764111765111766111767111768111769111770111771111772111773111774111775111776111777111778111779111780111781111782111783111784111785111786111787111788111789111790111791111792111793111794111795111796111797111798111799111800111801111802111803111804111805111806111807111808111809111810111811111812111813111814111815111816111817111818111819111820111821111822111823111824111825111826111827111828111829111830111831111832111833111834111835111836111837111838111839111840111841111842111843111844111845111846111847111848111849111850111851111852111853111854111855111856111857111858111859111860111861111862111863111864111865111866111867111868111869111870111871111872111873111874111875111876111877111878111879111880111881111882111883111884111885111886111887111888111889111890111891111892111893111894111895111896111897111898111899111900111901111902111903111904111905111906111907111908111909111910111911111912111913111914111915111916111917111918111919111920111921111922111923111924111925111926111927111928111929111930111931111932111933111934111935111936111937111938111939111940111941111942111943111944111945111946111947111948111949111950111951111952111953111954111955111956111957111958111959111960111961111962111963111964111965111966111967111968111969111970111971111972111973111974111975111976111977111978111979111980111981111982111983111984111985111986111987111988111989111990111991111992111993111994111995111996111997111998111999112000112001112002112003112004112005112006112007112008112009112010112011112012112013112014112015112016112017112018112019112020112021112022112023112024112025112026112027112028112029112030112031112032112033112034112035112036112037112038112039112040112041112042112043112044112045112046112047112048112049112050112051112052112053112054112055112056112057112058112059112060112061112062112063112064112065112066112067112068112069112070112071112072112073112074112075112076112077112078112079112080112081112082112083112084112085112086112087112088112089112090112091112092112093112094112095112096112097112098112099112100112101112102112103112104112105112106112107112108112109112110112111112112112113112114112115112116112117112118112119112120112121112122112123112124112125112126112127112128112129112130112131112132112133112134112135112136112137112138112139112140112141112142112143112144112145112146112147112148112149112150112151112152112153112154112155112156112157112158112159112160112161112162112163112164112165112166112167112168112169112170112171112172112173112174112175112176112177112178112179112180112181112182112183112184112185112186112187112188112189112190112191112192112193112194112195112196112197112198112199112200112201112202112203112204112205112206112207112208112209112210112211112212112213112214112215112216112217112218112219112220112221112222112223112224112225112226112227112228112229112230112231112232112233112234112235112236112237112238112239112240112241112242112243112244112245112246112247112248112249112250112251112252112253112254112255112256112257112258112259112260112261112262112263112264112265112266112267112268112269112270112271112272112273112274112275112276112277112278112279112280112281112282112283112284112285112286112287112288112289112290112291112292112293112294112295112296112297112298112299112300112301112302112303112304112305112306112307112308112309112310112311112312112313112314112315112316112317112318112319112320112321112322112323112324112325112326112327112328112329112330112331112332112333112334112335112336112337112338112339112340112341112342112343112344112345112346112347112348112349112350112351112352112353112354112355112356112357112358112359112360112361112362112363112364112365112366112367112368112369112370112371112372112373112374112375112376112377112378112379112380112381112382112383112384112385112386112387112388112389112390112391112392112393112394112395112396112397112398112399112400112401112402112403112404112405112406112407112408112409112410112411112412112413112414112415112416112417112418112419112420112421112422112423112424112425112426112427112428112429112430112431112432112433112434112435112436112437112438112439112440112441112442112443112444112445112446112447112448112449112450112451112452112453112454112455112456112457112458112459112460112461112462112463112464112465112466112467112468112469112470112471112472112473112474112475112476112477112478112479112480112481112482112483112484112485112486112487112488112489112490112491112492112493112494112495112496112497112498112499112500112501112502112503112504112505112506112507112508112509112510112511112512112513112514112515112516112517112518112519112520112521112522112523112524112525112526112527112528112529112530112531112532112533112534112535112536112537112538112539112540112541112542112543112544112545112546112547112548112549112550112551112552112553112554112555112556112557112558112559112560112561112562112563112564112565112566112567112568112569112570112571112572112573112574112575112576112577112578112579112580112581112582112583112584112585112586112587112588112589112590112591112592112593112594112595112596112597112598112599112600112601112602112603112604112605112606112607112608112609112610112611112612112613112614112615112616112617112618112619112620112621112622112623112624112625112626112627112628112629112630112631112632112633112634112635112636112637112638112639112640112641112642112643112644112645112646112647112648112649112650112651112652112653112654112655112656112657112658112659112660112661112662112663112664112665112666112667112668112669112670112671112672112673112674112675112676112677112678112679112680112681112682112683112684112685112686112687112688112689112690112691112692112693112694112695112696112697112698112699112700112701112702112703112704112705112706112707112708112709112710112711112712112713112714112715112716112717112718112719112720112721112722112723112724112725112726112727112728112729112730112731112732112733112734112735112736112737112738112739112740112741112742112743112744112745112746112747112748112749112750112751112752112753112754112755112756112757112758112759112760112761112762112763112764112765112766112767112768112769112770112771112772112773112774112775112776112777112778112779112780112781112782112783112784112785112786112787112788112789112790112791112792112793112794112795112796112797112798112799112800112801112802112803112804112805112806112807112808112809112810112811112812112813112814112815112816112817112818112819112820112821112822112823112824112825112826112827112828112829112830112831112832112833112834112835112836112837112838112839112840112841112842112843112844112845112846112847112848112849112850112851112852112853112854112855112856112857112858112859112860112861112862112863112864112865112866112867112868112869112870112871112872112873112874112875112876112877112878112879112880112881112882112883112884112885112886112887112888112889112890112891112892112893112894112895112896112897112898112899112900112901112902112903112904112905112906112907112908112909112910112911112912112913112914112915112916112917112918112919112920112921112922112923112924112925112926112927112928112929112930112931112932112933112934112935112936112937112938112939112940112941112942112943112944112945112946112947112948112949112950112951112952112953112954112955112956112957112958112959112960112961112962112963112964112965112966112967112968112969112970112971112972112973112974112975112976112977112978112979112980112981112982112983112984112985112986112987112988112989112990112991112992112993112994112995112996112997112998112999113000113001113002113003113004113005113006113007113008113009113010113011113012113013113014113015113016113017113018113019113020113021113022113023113024113025113026113027113028113029113030113031113032113033113034113035113036113037113038113039113040113041113042113043113044113045113046113047113048113049113050113051113052113053113054113055113056113057113058113059113060113061113062113063113064113065113066113067113068113069113070113071113072113073113074113075113076113077113078113079113080113081113082113083113084113085113086113087113088113089113090113091113092113093113094113095113096113097113098113099113100113101113102113103113104113105113106113107113108113109113110113111113112113113113114113115113116113117113118113119113120113121113122113123113124113125113126113127113128113129113130113131113132113133113134113135113136113137113138113139113140113141113142113143113144113145113146113147113148113149113150113151113152113153113154113155113156113157113158113159113160113161113162113163113164113165113166113167113168113169113170113171113172113173113174113175113176113177113178113179113180113181113182113183113184113185113186113187113188113189113190113191113192113193113194113195113196113197113198113199113200113201113202113203113204113205113206113207113208113209113210113211113212113213113214113215113216113217113218113219113220113221113222113223113224113225113226113227113228113229113230113231113232113233113234113235113236113237113238113239113240113241113242113243113244113245113246113247113248113249113250113251113252113253113254113255113256113257113258113259113260113261113262113263113264113265113266113267113268113269113270113271113272113273113274113275113276113277113278113279113280113281113282113283113284113285113286113287113288113289113290113291113292113293113294113295113296113297113298113299113300113301113302113303113304113305113306113307113308113309113310113311113312113313113314113315113316113317113318113319113320113321113322113323113324113325113326113327113328113329113330113331113332113333113334113335113336113337113338113339113340113341113342113343113344113345113346113347113348113349113350113351113352113353113354113355113356113357113358113359113360113361113362113363113364113365113366113367113368113369113370113371113372113373113374113375113376113377113378113379113380113381113382113383113384113385113386113387113388113389113390113391113392113393113394113395113396113397113398113399113400113401113402113403113404113405113406113407113408113409113410113411113412113413113414113415113416113417113418113419113420113421113422113423113424113425113426113427113428113429113430113431113432113433113434113435113436113437113438113439113440113441113442113443113444113445113446113447113448113449113450113451113452113453113454113455113456113457113458113459113460113461113462113463113464113465113466113467113468113469113470113471113472113473113474113475113476113477113478113479113480113481113482113483113484113485113486113487113488113489113490113491113492113493113494113495113496113497113498113499113500113501113502113503113504113505113506113507113508113509113510113511113512113513113514113515113516113517113518113519113520113521113522113523113524113525113526113527113528113529113530113531113532113533113534113535113536113537113538113539113540113541113542113543113544113545113546113547113548113549113550113551113552113553113554113555113556113557113558113559113560113561113562113563113564113565113566113567113568113569113570113571113572113573113574113575113576113577113578113579113580113581113582113583113584113585113586113587113588113589113590113591113592113593113594113595113596113597113598113599113600113601113602113603113604113605113606113607113608113609113610113611113612113613113614113615113616113617113618113619113620113621113622113623113624113625113626113627113628113629113630113631113632113633113634113635113636113637113638113639113640113641113642113643113644113645113646113647113648113649113650113651113652113653113654113655113656113657113658113659113660113661113662113663113664113665113666113667113668113669113670113671113672113673113674113675113676113677113678113679113680113681113682113683113684113685113686113687113688113689113690113691113692113693113694113695113696113697113698113699113700113701113702113703113704113705113706113707113708113709113710113711113712113713113714113715113716113717113718113719113720113721113722113723113724113725113726113727113728113729113730113731113732113733113734113735113736113737113738113739113740113741113742113743113744113745113746113747113748113749113750113751113752113753113754113755113756113757113758113759113760113761113762113763113764113765113766113767113768113769113770113771113772113773113774113775113776113777113778113779113780113781113782113783113784113785113786113787113788113789113790113791113792113793113794113795113796113797113798113799113800113801113802113803113804113805113806113807113808113809113810113811113812113813113814113815113816113817113818113819113820113821113822113823113824113825113826113827113828113829113830113831113832113833113834113835113836113837113838113839113840113841113842113843113844113845113846113847113848113849113850113851113852113853113854113855113856113857113858113859113860113861113862113863113864113865113866113867113868113869113870113871113872113873113874113875113876113877113878113879113880113881113882113883113884113885113886113887113888113889113890113891113892113893113894113895113896113897113898113899113900113901113902113903113904113905113906113907113908113909113910113911113912113913113914113915113916113917113918113919113920113921113922113923113924113925113926113927113928113929113930113931113932113933113934113935113936113937113938113939113940113941113942113943113944113945113946113947113948113949113950113951113952113953113954113955113956113957113958113959113960113961113962113963113964113965113966113967113968113969113970113971113972113973113974113975113976113977113978113979113980113981113982113983113984113985113986113987113988113989113990113991113992113993113994113995113996113997113998113999114000114001114002114003114004114005114006114007114008114009114010114011114012114013114014114015114016114017114018114019114020114021114022114023114024114025114026114027114028114029114030114031114032114033114034114035114036114037114038114039114040114041114042114043114044114045114046114047114048114049114050114051114052114053114054114055114056114057114058114059114060114061114062114063114064114065114066114067114068114069114070114071114072114073114074114075114076114077114078114079114080114081114082114083114084114085114086114087114088114089114090114091114092114093114094114095114096114097114098114099114100114101114102114103114104114105114106114107114108114109114110114111114112114113114114114115114116114117114118114119114120114121114122114123114124114125114126114127114128114129114130114131114132114133114134114135114136114137114138114139114140114141114142114143114144114145114146114147114148114149114150114151114152114153114154114155114156114157114158114159114160114161114162114163114164114165114166114167114168114169114170114171114172114173114174114175114176114177114178114179114180114181114182114183114184114185114186114187114188114189114190114191114192114193114194114195114196114197114198114199114200114201114202114203114204114205114206114207114208114209114210114211114212114213114214114215114216114217114218114219114220114221114222114223114224114225114226114227114228114229114230114231114232114233114234114235114236114237114238114239114240114241114242114243114244114245114246114247114248114249114250114251114252114253114254114255114256114257114258114259114260114261114262114263114264114265114266114267114268114269114270114271114272114273114274114275114276114277114278114279114280114281114282114283114284114285114286114287114288114289114290114291114292114293114294114295114296114297114298114299114300114301114302114303114304114305114306114307114308114309114310114311114312114313114314114315114316114317114318114319114320114321114322114323114324114325114326114327114328114329114330114331114332114333114334114335114336114337114338114339114340114341114342114343114344114345114346114347114348114349114350114351114352114353114354114355114356114357114358114359114360114361114362114363114364114365114366114367114368114369114370114371114372114373114374114375114376114377114378114379114380114381114382114383114384114385114386114387114388114389114390114391114392114393114394114395114396114397114398114399114400114401114402114403114404114405114406114407114408114409114410114411114412114413114414114415114416114417114418114419114420114421114422114423114424114425114426114427114428114429114430114431114432114433114434114435114436114437114438114439114440114441114442114443114444114445114446114447114448114449114450114451114452114453114454114455114456114457114458114459114460114461114462114463114464114465114466114467114468114469114470114471114472114473114474114475114476114477114478114479114480114481114482114483114484114485114486114487114488114489114490114491114492114493114494114495114496114497114498114499114500114501114502114503114504114505114506114507114508114509114510114511114512114513114514114515114516114517114518114519114520114521114522114523114524114525114526114527114528114529114530114531114532114533114534114535114536114537114538114539114540114541114542114543114544114545114546114547114548114549114550114551114552114553114554114555114556114557114558114559114560114561114562114563114564114565114566114567114568114569114570114571114572114573114574114575114576114577114578114579114580114581114582114583114584114585114586114587114588114589114590114591114592114593114594114595114596114597114598114599114600114601114602114603114604114605114606114607114608114609114610114611114612114613114614114615114616114617114618114619114620114621114622114623114624114625114626114627114628114629114630114631114632114633114634114635114636114637114638114639114640114641114642114643114644114645114646114647114648114649114650114651114652114653114654114655114656114657114658114659114660114661114662114663114664114665114666114667114668114669114670114671114672114673114674114675114676114677114678114679114680114681114682114683114684114685114686114687114688114689114690114691114692114693114694114695114696114697114698114699114700114701114702114703114704114705114706114707114708114709114710114711114712114713114714114715114716114717114718114719114720114721114722114723114724114725114726114727114728114729114730114731114732114733114734114735114736114737114738114739114740114741114742114743114744114745114746114747114748114749114750114751114752114753114754114755114756114757114758114759114760114761114762114763114764114765114766114767114768114769114770114771114772114773114774114775114776114777114778114779114780114781114782114783114784114785114786114787114788114789114790114791114792114793114794114795114796114797114798114799114800114801114802114803114804114805114806114807114808114809114810114811114812114813114814114815114816114817114818114819114820114821114822114823114824114825114826114827114828114829114830114831114832114833114834114835114836114837114838114839114840114841114842114843114844114845114846114847114848114849114850114851114852114853114854114855114856114857114858114859114860114861114862114863114864114865114866114867114868114869114870114871114872114873114874114875114876114877114878114879114880114881114882114883114884114885114886114887114888114889114890114891114892114893114894114895114896114897114898114899114900114901114902114903114904114905114906114907114908114909114910114911114912114913114914114915114916114917114918114919114920114921114922114923114924114925114926114927114928114929114930114931114932114933114934114935114936114937114938114939114940114941114942114943114944114945114946114947114948114949114950114951114952114953114954114955114956114957114958114959114960114961114962114963114964114965114966114967114968114969114970114971114972114973114974114975114976114977114978114979114980114981114982114983114984114985114986114987114988114989114990114991114992114993114994114995114996114997114998114999115000115001115002115003115004115005115006115007115008115009115010115011115012115013115014115015115016115017115018115019115020115021115022115023115024115025115026115027115028115029115030115031115032115033115034115035115036115037115038115039115040115041115042115043115044115045115046115047115048115049115050115051115052115053115054115055115056115057115058115059115060115061115062115063115064115065115066115067115068115069115070115071115072115073115074115075115076115077115078115079115080115081115082115083115084115085115086115087115088115089115090115091115092115093115094115095115096115097115098115099115100115101115102115103115104115105115106115107115108115109115110115111115112115113115114115115115116115117115118115119115120115121115122115123115124115125115126115127115128115129115130115131115132115133115134115135115136115137115138115139115140115141115142115143115144115145115146115147115148115149115150115151115152115153115154115155115156115157115158115159115160115161115162115163115164115165115166115167115168115169115170115171115172115173115174115175115176115177115178115179115180115181115182115183115184115185115186115187115188115189115190115191115192115193115194115195115196115197115198115199115200115201115202115203115204115205115206115207115208115209115210115211115212115213115214115215115216115217115218115219115220115221115222115223115224115225115226115227115228115229115230115231115232115233115234115235115236115237115238115239115240115241115242115243115244115245115246115247115248115249115250115251115252115253115254115255115256115257115258115259115260115261115262115263115264115265115266115267115268115269115270115271115272115273115274115275115276115277115278115279115280115281115282115283115284115285115286115287115288115289115290115291115292115293115294115295115296115297115298115299115300115301115302115303115304115305115306115307115308115309115310115311115312115313115314115315115316115317115318115319115320115321115322115323115324115325115326115327115328115329115330115331115332115333115334115335115336115337115338115339115340115341115342115343115344115345115346115347115348115349115350115351115352115353115354115355115356115357115358115359115360115361115362115363115364115365115366115367115368115369115370115371115372115373115374115375115376115377115378115379115380115381115382115383115384115385115386115387115388115389115390115391115392115393115394115395115396115397115398115399115400115401115402115403115404115405115406115407115408115409115410115411115412115413115414115415115416115417115418115419115420115421115422115423115424115425115426115427115428115429115430115431115432115433115434115435115436115437115438115439115440115441115442115443115444115445115446115447115448115449115450115451115452115453115454115455115456115457115458115459115460115461115462115463115464115465115466115467115468115469115470115471115472115473115474115475115476115477115478115479115480115481115482115483115484115485115486115487115488115489115490115491115492115493115494115495115496115497115498115499115500115501115502115503115504115505115506115507115508115509115510115511115512115513115514115515115516115517115518115519115520115521115522115523115524115525115526115527115528115529115530115531115532115533115534115535115536115537115538115539115540115541115542115543115544115545115546115547115548115549115550115551115552115553115554115555115556115557115558115559115560115561115562115563115564115565115566115567115568115569115570115571115572115573115574115575115576115577115578115579115580115581115582115583115584115585115586115587115588115589115590115591115592115593115594115595115596115597115598115599115600115601115602115603115604115605115606115607115608115609115610115611115612115613115614115615115616115617115618115619115620115621115622115623115624115625115626115627115628115629115630115631115632115633115634115635115636115637115638115639115640115641115642115643115644115645115646115647115648115649115650115651115652115653115654115655115656115657115658115659115660115661115662115663115664115665115666115667115668115669115670115671115672115673115674115675115676115677115678115679115680115681115682115683115684115685115686115687115688115689115690115691115692115693115694115695115696115697115698115699115700115701115702115703115704115705115706115707115708115709115710115711115712115713115714115715115716115717115718115719115720115721115722115723115724115725115726115727115728115729115730115731115732115733115734115735115736115737115738115739115740115741115742115743115744115745115746115747115748115749115750115751115752115753115754115755115756115757115758115759115760115761115762115763115764115765115766115767115768115769115770115771115772115773115774115775115776115777115778115779115780115781115782115783115784115785115786115787115788115789115790115791115792115793115794115795115796115797115798115799115800115801115802115803115804115805115806115807115808115809115810115811115812115813115814115815115816115817115818115819115820115821115822115823115824115825115826115827115828115829115830115831115832115833115834115835115836115837115838115839115840115841115842115843115844115845115846115847115848115849115850115851115852115853115854115855115856115857115858115859115860115861115862115863115864115865115866115867115868115869115870115871115872115873115874115875115876115877115878115879115880115881115882115883115884115885115886115887115888115889115890115891115892115893115894115895115896115897115898115899115900115901115902115903115904115905115906115907115908115909115910115911115912115913115914115915115916115917115918115919115920115921115922115923115924115925115926115927115928115929115930115931115932115933115934115935115936115937115938115939115940115941115942115943115944115945115946115947115948115949115950115951115952115953115954115955115956115957115958115959115960115961115962115963115964115965115966115967115968115969115970115971115972115973115974115975115976115977115978115979115980115981115982115983115984115985115986115987115988115989115990115991115992115993115994115995115996115997115998115999116000116001116002116003116004116005116006116007116008116009116010116011116012116013116014116015116016116017116018116019116020116021116022116023116024116025116026116027116028116029116030116031116032116033116034116035116036116037116038116039116040116041116042116043116044116045116046116047116048116049116050116051116052116053116054116055116056116057116058116059116060116061116062116063116064116065116066116067116068116069116070116071116072116073116074116075116076116077116078116079116080116081116082116083116084116085116086116087116088116089116090116091116092116093116094116095116096116097116098116099116100116101116102116103116104116105116106116107116108116109116110116111116112116113116114116115116116116117116118116119116120116121116122116123116124116125116126116127116128116129116130116131116132116133116134116135116136116137116138116139116140116141116142116143116144116145116146116147116148116149116150116151116152116153116154116155116156116157116158116159116160116161116162116163116164116165116166116167116168116169116170116171116172116173116174116175116176116177116178116179116180116181116182116183116184116185116186116187116188116189116190116191116192116193116194116195116196116197116198116199116200116201116202116203116204116205116206116207116208116209116210116211116212116213116214116215116216116217116218116219116220116221116222116223116224116225116226116227116228116229116230116231116232116233116234116235116236116237116238116239116240116241116242116243116244116245116246116247116248116249116250116251116252116253116254116255116256116257116258116259116260116261116262116263116264116265116266116267116268116269116270116271116272116273116274116275116276116277116278116279116280116281116282116283116284116285116286116287116288116289116290116291116292116293116294116295116296116297116298116299116300116301116302116303116304116305116306116307116308116309116310116311116312116313116314116315116316116317116318116319116320116321116322116323116324116325116326116327116328116329116330116331116332116333116334116335116336116337116338116339116340116341116342116343116344116345116346116347116348116349116350116351116352116353116354116355116356116357116358116359116360116361116362116363116364116365116366116367116368116369116370116371116372116373116374116375116376116377116378116379116380116381116382116383116384116385116386116387116388116389116390116391116392116393116394116395116396116397116398116399116400116401116402116403116404116405116406116407116408116409116410116411116412116413116414116415116416116417116418116419116420116421116422116423116424116425116426116427116428116429116430116431116432116433116434116435116436116437116438116439116440116441116442116443116444116445116446116447116448116449116450116451116452116453116454116455116456116457116458116459116460116461116462116463116464116465116466116467116468116469116470116471116472116473116474116475116476116477116478116479116480116481116482116483116484116485116486116487116488116489116490116491116492116493116494116495116496116497116498116499116500116501116502116503116504116505116506116507116508116509116510116511116512116513116514116515116516116517116518116519116520116521116522116523116524116525116526116527116528116529116530116531116532116533116534116535116536116537116538116539116540116541116542116543116544116545116546116547116548116549116550116551116552116553116554116555116556116557116558116559116560116561116562116563116564116565116566116567116568116569116570116571116572116573116574116575116576116577116578116579116580116581116582116583116584116585116586116587116588116589116590116591116592116593116594116595116596116597116598116599116600116601116602116603116604116605116606116607116608116609116610116611116612116613116614116615116616116617116618116619116620116621116622116623116624116625116626116627116628116629116630116631116632116633116634116635116636116637116638116639116640116641116642116643116644116645116646116647116648116649116650116651116652116653116654116655116656116657116658116659116660116661116662116663116664116665116666116667116668116669116670116671116672116673116674116675116676116677116678116679116680116681116682116683116684116685116686116687116688116689116690116691116692116693116694116695116696116697116698116699116700116701116702116703116704116705116706116707116708116709116710116711116712116713116714116715116716116717116718116719116720116721116722116723116724116725116726116727116728116729116730116731116732116733116734116735116736116737116738116739116740116741116742116743116744116745116746116747116748116749116750116751116752116753116754116755116756116757116758116759116760116761116762116763116764116765116766116767116768116769116770116771116772116773116774116775116776116777116778116779116780116781116782116783116784116785116786116787116788116789116790116791116792116793116794116795116796116797116798116799116800116801116802116803116804116805116806116807116808116809116810116811116812116813116814116815116816116817116818116819116820116821116822
  1. diff -Nur uClibc-0.9.33.2/docs/man/arc4random.3 uClibc/docs/man/arc4random.3
  2. --- uClibc-0.9.33.2/docs/man/arc4random.3 1970-01-01 01:00:00.000000000 +0100
  3. +++ uClibc/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/docs/PORTING
  116. --- uClibc-0.9.33.2/docs/PORTING 2012-05-15 09:20:09.000000000 +0200
  117. +++ uClibc/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/extra/config/check.sh
  129. --- uClibc-0.9.33.2/extra/config/check.sh 2012-05-15 09:20:09.000000000 +0200
  130. +++ uClibc/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/extra/config/conf.c
  140. --- uClibc-0.9.33.2/extra/config/conf.c 2012-05-15 09:20:09.000000000 +0200
  141. +++ uClibc/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/extra/config/confdata.c
  711. --- uClibc-0.9.33.2/extra/config/confdata.c 2012-05-15 09:20:09.000000000 +0200
  712. +++ uClibc/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/extra/config/expr.c
  1877. --- uClibc-0.9.33.2/extra/config/expr.c 2012-05-15 09:20:09.000000000 +0200
  1878. +++ uClibc/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/extra/config/expr.h
  2039. --- uClibc-0.9.33.2/extra/config/expr.h 2012-05-15 09:20:09.000000000 +0200
  2040. +++ uClibc/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/extra/config/gconf.c
  2141. --- uClibc-0.9.33.2/extra/config/gconf.c 2012-05-15 09:20:09.000000000 +0200
  2142. +++ uClibc/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/extra/config/gconf.glade
  2586. --- uClibc-0.9.33.2/extra/config/gconf.glade 2012-05-15 09:20:09.000000000 +0200
  2587. +++ uClibc/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/extra/config/.gitignore
  2663. --- uClibc-0.9.33.2/extra/config/.gitignore 2012-05-15 09:20:09.000000000 +0200
  2664. +++ uClibc/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/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/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/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/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/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/extra/config/kconfig-to-uclibc.tar.gz differ
  2787. diff -Nur uClibc-0.9.33.2/extra/config/kxgettext.c uClibc/extra/config/kxgettext.c
  2788. --- uClibc-0.9.33.2/extra/config/kxgettext.c 2012-05-15 09:20:09.000000000 +0200
  2789. +++ uClibc/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/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/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/extra/config/list.h
  5279. --- uClibc-0.9.33.2/extra/config/list.h 1970-01-01 01:00:00.000000000 +0100
  5280. +++ uClibc/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/extra/config/lkc.h
  5414. --- uClibc-0.9.33.2/extra/config/lkc.h 2012-05-15 09:20:09.000000000 +0200
  5415. +++ uClibc/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/extra/config/Makefile
  6552. --- uClibc-0.9.33.2/extra/config/Makefile 2012-05-15 09:20:09.000000000 +0200
  6553. +++ uClibc/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/extra/config/Makefile.kconfig
  6654. --- uClibc-0.9.33.2/extra/config/Makefile.kconfig 2012-05-15 09:20:09.000000000 +0200
  6655. +++ uClibc/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/extra/config/mconf.c
  7045. --- uClibc-0.9.33.2/extra/config/mconf.c 2012-05-15 09:20:09.000000000 +0200
  7046. +++ uClibc/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/extra/config/menu.c
  7872. --- uClibc-0.9.33.2/extra/config/menu.c 2012-05-15 09:20:09.000000000 +0200
  7873. +++ uClibc/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/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/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/extra/config/nconf.c
  8392. --- uClibc-0.9.33.2/extra/config/nconf.c 1970-01-01 01:00:00.000000000 +0100
  8393. +++ uClibc/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/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/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/extra/config/nconf.h
  10613. --- uClibc-0.9.33.2/extra/config/nconf.h 1970-01-01 01:00:00.000000000 +0100
  10614. +++ uClibc/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/extra/config/qconf.cc
  10713. --- uClibc-0.9.33.2/extra/config/qconf.cc 2012-05-15 09:20:09.000000000 +0200
  10714. +++ uClibc/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/extra/config/qconf.h
  11447. --- uClibc-0.9.33.2/extra/config/qconf.h 2012-05-15 09:20:09.000000000 +0200
  11448. +++ uClibc/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/extra/config/README.uClibc
  11664. --- uClibc-0.9.33.2/extra/config/README.uClibc 2012-05-15 09:20:09.000000000 +0200
  11665. +++ uClibc/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/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/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/extra/config/symbol.c
  12320. --- uClibc-0.9.33.2/extra/config/symbol.c 2012-05-15 09:20:09.000000000 +0200
  12321. +++ uClibc/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/extra/config/util.c
  13151. --- uClibc-0.9.33.2/extra/config/util.c 2012-05-15 09:20:09.000000000 +0200
  13152. +++ uClibc/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/extra/config/zconf.gperf
  13280. --- uClibc-0.9.33.2/extra/config/zconf.gperf 2012-05-15 09:20:09.000000000 +0200
  13281. +++ uClibc/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/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/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/extra/config/zconf.l
  13647. --- uClibc-0.9.33.2/extra/config/zconf.l 2012-05-15 09:20:09.000000000 +0200
  13648. +++ uClibc/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/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/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/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/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/extra/config/zconf.y
  17837. --- uClibc-0.9.33.2/extra/config/zconf.y 2012-05-15 09:20:09.000000000 +0200
  17838. +++ uClibc/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/extra/Configs/Config.alpha
  18080. --- uClibc-0.9.33.2/extra/Configs/Config.alpha 2012-05-15 09:20:09.000000000 +0200
  18081. +++ uClibc/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/extra/Configs/Config.arc
  18089. --- uClibc-0.9.33.2/extra/Configs/Config.arc 1970-01-01 01:00:00.000000000 +0100
  18090. +++ uClibc/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/extra/Configs/Config.arm
  18116. --- uClibc-0.9.33.2/extra/Configs/Config.arm 2012-05-15 09:20:09.000000000 +0200
  18117. +++ uClibc/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/extra/Configs/Config.avr32
  18127. --- uClibc-0.9.33.2/extra/Configs/Config.avr32 2012-05-15 09:20:09.000000000 +0200
  18128. +++ uClibc/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/extra/Configs/Config.bfin
  18137. --- uClibc-0.9.33.2/extra/Configs/Config.bfin 2012-05-15 09:20:09.000000000 +0200
  18138. +++ uClibc/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/extra/Configs/Config.cris
  18145. --- uClibc-0.9.33.2/extra/Configs/Config.cris 2012-05-15 09:20:09.000000000 +0200
  18146. +++ uClibc/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/extra/Configs/Config.e1
  18155. --- uClibc-0.9.33.2/extra/Configs/Config.e1 2012-05-15 09:20:09.000000000 +0200
  18156. +++ uClibc/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/extra/Configs/Config.frv
  18163. --- uClibc-0.9.33.2/extra/Configs/Config.frv 2012-05-15 09:20:09.000000000 +0200
  18164. +++ uClibc/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/extra/Configs/Config.h8300
  18171. --- uClibc-0.9.33.2/extra/Configs/Config.h8300 2012-05-15 09:20:09.000000000 +0200
  18172. +++ uClibc/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/extra/Configs/Config.hppa
  18181. --- uClibc-0.9.33.2/extra/Configs/Config.hppa 2012-05-15 09:20:09.000000000 +0200
  18182. +++ uClibc/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/extra/Configs/Config.i386
  18189. --- uClibc-0.9.33.2/extra/Configs/Config.i386 2012-05-15 09:20:09.000000000 +0200
  18190. +++ uClibc/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/extra/Configs/Config.i960
  18286. --- uClibc-0.9.33.2/extra/Configs/Config.i960 2012-05-15 09:20:09.000000000 +0200
  18287. +++ uClibc/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/extra/Configs/Config.ia64
  18294. --- uClibc-0.9.33.2/extra/Configs/Config.ia64 2012-05-15 09:20:09.000000000 +0200
  18295. +++ uClibc/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/extra/Configs/Config.in
  18302. --- uClibc-0.9.33.2/extra/Configs/Config.in 2012-05-15 09:20:09.000000000 +0200
  18303. +++ uClibc/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/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/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/extra/Configs/Config.m68k
  18617. --- uClibc-0.9.33.2/extra/Configs/Config.m68k 2012-05-15 09:20:09.000000000 +0200
  18618. +++ uClibc/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/extra/Configs/Config.metag
  18625. --- uClibc-0.9.33.2/extra/Configs/Config.metag 1970-01-01 01:00:00.000000000 +0100
  18626. +++ uClibc/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/extra/Configs/Config.microblaze
  18661. --- uClibc-0.9.33.2/extra/Configs/Config.microblaze 2012-05-15 09:20:09.000000000 +0200
  18662. +++ uClibc/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/extra/Configs/Config.mips
  18673. --- uClibc-0.9.33.2/extra/Configs/Config.mips 2012-05-15 09:20:09.000000000 +0200
  18674. +++ uClibc/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/extra/Configs/Config.nios
  18691. --- uClibc-0.9.33.2/extra/Configs/Config.nios 2012-05-15 09:20:09.000000000 +0200
  18692. +++ uClibc/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/extra/Configs/Config.nios2
  18700. --- uClibc-0.9.33.2/extra/Configs/Config.nios2 2012-05-15 09:20:09.000000000 +0200
  18701. +++ uClibc/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/extra/Configs/Config.powerpc
  18709. --- uClibc-0.9.33.2/extra/Configs/Config.powerpc 2012-05-15 09:20:09.000000000 +0200
  18710. +++ uClibc/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/extra/Configs/Config.sh
  18719. --- uClibc-0.9.33.2/extra/Configs/Config.sh 2012-05-15 09:20:09.000000000 +0200
  18720. +++ uClibc/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/extra/Configs/Config.sh64
  18729. --- uClibc-0.9.33.2/extra/Configs/Config.sh64 2012-05-15 09:20:09.000000000 +0200
  18730. +++ uClibc/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/extra/Configs/Config.sparc
  18739. --- uClibc-0.9.33.2/extra/Configs/Config.sparc 2012-05-15 09:20:09.000000000 +0200
  18740. +++ uClibc/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/extra/Configs/Config.v850
  18749. --- uClibc-0.9.33.2/extra/Configs/Config.v850 2012-05-15 09:20:09.000000000 +0200
  18750. +++ uClibc/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/extra/Configs/Config.vax
  18758. --- uClibc-0.9.33.2/extra/Configs/Config.vax 2012-05-15 09:20:09.000000000 +0200
  18759. +++ uClibc/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/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/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/extra/Configs/Config.xtensa
  18775. --- uClibc-0.9.33.2/extra/Configs/Config.xtensa 2012-05-15 09:20:09.000000000 +0200
  18776. +++ uClibc/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/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/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/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/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/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/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/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/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/extra/locale/Makefile.in
  18879. --- uClibc-0.9.33.2/extra/locale/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  18880. +++ uClibc/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/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/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/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/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/extra/scripts/getent
  18981. --- uClibc-0.9.33.2/extra/scripts/getent 2012-05-15 09:20:09.000000000 +0200
  18982. +++ uClibc/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/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/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/extra/scripts/relinfo.pl
  19035. --- uClibc-0.9.33.2/extra/scripts/relinfo.pl 2012-05-15 09:20:09.000000000 +0200
  19036. +++ uClibc/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/extra/scripts/unifdef.c
  19054. --- uClibc-0.9.33.2/extra/scripts/unifdef.c 2012-05-15 09:20:09.000000000 +0200
  19055. +++ uClibc/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/extra/scripts/unifdef.h
  20717. --- uClibc-0.9.33.2/extra/scripts/unifdef.h 1970-01-01 01:00:00.000000000 +0100
  20718. +++ uClibc/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/extra/scripts/version.h
  20778. --- uClibc-0.9.33.2/extra/scripts/version.h 1970-01-01 01:00:00.000000000 +0100
  20779. +++ uClibc/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/.git/config uClibc/.git/config
  20784. --- uClibc-0.9.33.2/.git/config 1970-01-01 01:00:00.000000000 +0100
  20785. +++ uClibc/.git/config 2014-02-03 12:32:56.000000000 +0100
  20786. @@ -0,0 +1,11 @@
  20787. +[core]
  20788. + repositoryformatversion = 0
  20789. + filemode = true
  20790. + bare = false
  20791. + logallrefupdates = true
  20792. +[remote "origin"]
  20793. + fetch = +refs/heads/*:refs/remotes/origin/*
  20794. + url = git://git.busybox.net/uClibc
  20795. +[branch "master"]
  20796. + remote = origin
  20797. + merge = refs/heads/master
  20798. diff -Nur uClibc-0.9.33.2/.git/description uClibc/.git/description
  20799. --- uClibc-0.9.33.2/.git/description 1970-01-01 01:00:00.000000000 +0100
  20800. +++ uClibc/.git/description 2014-02-03 12:32:33.000000000 +0100
  20801. @@ -0,0 +1 @@
  20802. +Unnamed repository; edit this file 'description' to name the repository.
  20803. diff -Nur uClibc-0.9.33.2/.git/FETCH_HEAD uClibc/.git/FETCH_HEAD
  20804. --- uClibc-0.9.33.2/.git/FETCH_HEAD 1970-01-01 01:00:00.000000000 +0100
  20805. +++ uClibc/.git/FETCH_HEAD 2014-02-15 14:18:14.000000000 +0100
  20806. @@ -0,0 +1,11 @@
  20807. +79c0857a828abb3f7ec9582a01d706e0ce81f84c branch 'master' of git://git.busybox.net/uClibc
  20808. +80a6c6d96c6201146c4c9d988d16e14243c5664f not-for-merge branch '0.9.31' of git://git.busybox.net/uClibc
  20809. +c408f8f42a9bb5d765432e8cbfd686ccfb70a2c2 not-for-merge branch '0.9.32' of git://git.busybox.net/uClibc
  20810. +7706cd4737ddb89e9b4937936e614d87d1abbd49 not-for-merge branch '0.9.33' of git://git.busybox.net/uClibc
  20811. +a6dfcd03425656208fc548c75f955016c26e8f71 not-for-merge branch '0_9_28' of git://git.busybox.net/uClibc
  20812. +560de2b96857bc26540eb31de44d0e653ad5a4e6 not-for-merge branch '0_9_29' of git://git.busybox.net/uClibc
  20813. +1555437358f20102bc4c2d17a3f6ad361acde5ed not-for-merge branch '0_9_30' of git://git.busybox.net/uClibc
  20814. +5c2f94e7b4223939524cee0f40057a155704127c not-for-merge branch 'future' of git://git.busybox.net/uClibc
  20815. +099ecfb6536497eed33a30307b0ba52daab3ccef not-for-merge branch 'ldso-future' of git://git.busybox.net/uClibc
  20816. +1c1391e6e507337103f2c7ce4da768b2842a8aa1 not-for-merge branch 'prelink' of git://git.busybox.net/uClibc
  20817. +dd4643de1c22376872e7504926ef020f04098898 not-for-merge branch 'superh_fdpic' of git://git.busybox.net/uClibc
  20818. diff -Nur uClibc-0.9.33.2/.git/HEAD uClibc/.git/HEAD
  20819. --- uClibc-0.9.33.2/.git/HEAD 1970-01-01 01:00:00.000000000 +0100
  20820. +++ uClibc/.git/HEAD 2014-02-03 12:32:56.000000000 +0100
  20821. @@ -0,0 +1 @@
  20822. +ref: refs/heads/master
  20823. diff -Nur uClibc-0.9.33.2/.git/hooks/applypatch-msg.sample uClibc/.git/hooks/applypatch-msg.sample
  20824. --- uClibc-0.9.33.2/.git/hooks/applypatch-msg.sample 1970-01-01 01:00:00.000000000 +0100
  20825. +++ uClibc/.git/hooks/applypatch-msg.sample 2014-02-03 12:32:33.000000000 +0100
  20826. @@ -0,0 +1,15 @@
  20827. +#!/bin/sh
  20828. +#
  20829. +# An example hook script to check the commit log message taken by
  20830. +# applypatch from an e-mail message.
  20831. +#
  20832. +# The hook should exit with non-zero status after issuing an
  20833. +# appropriate message if it wants to stop the commit. The hook is
  20834. +# allowed to edit the commit message file.
  20835. +#
  20836. +# To enable this hook, rename this file to "applypatch-msg".
  20837. +
  20838. +. git-sh-setup
  20839. +test -x "$GIT_DIR/hooks/commit-msg" &&
  20840. + exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
  20841. +:
  20842. diff -Nur uClibc-0.9.33.2/.git/hooks/commit-msg.sample uClibc/.git/hooks/commit-msg.sample
  20843. --- uClibc-0.9.33.2/.git/hooks/commit-msg.sample 1970-01-01 01:00:00.000000000 +0100
  20844. +++ uClibc/.git/hooks/commit-msg.sample 2014-02-03 12:32:33.000000000 +0100
  20845. @@ -0,0 +1,24 @@
  20846. +#!/bin/sh
  20847. +#
  20848. +# An example hook script to check the commit log message.
  20849. +# Called by "git commit" with one argument, the name of the file
  20850. +# that has the commit message. The hook should exit with non-zero
  20851. +# status after issuing an appropriate message if it wants to stop the
  20852. +# commit. The hook is allowed to edit the commit message file.
  20853. +#
  20854. +# To enable this hook, rename this file to "commit-msg".
  20855. +
  20856. +# Uncomment the below to add a Signed-off-by line to the message.
  20857. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
  20858. +# hook is more suited to it.
  20859. +#
  20860. +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
  20861. +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
  20862. +
  20863. +# This example catches duplicate Signed-off-by lines.
  20864. +
  20865. +test "" = "$(grep '^Signed-off-by: ' "$1" |
  20866. + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
  20867. + echo >&2 Duplicate Signed-off-by lines.
  20868. + exit 1
  20869. +}
  20870. diff -Nur uClibc-0.9.33.2/.git/hooks/post-update.sample uClibc/.git/hooks/post-update.sample
  20871. --- uClibc-0.9.33.2/.git/hooks/post-update.sample 1970-01-01 01:00:00.000000000 +0100
  20872. +++ uClibc/.git/hooks/post-update.sample 2014-02-03 12:32:33.000000000 +0100
  20873. @@ -0,0 +1,8 @@
  20874. +#!/bin/sh
  20875. +#
  20876. +# An example hook script to prepare a packed repository for use over
  20877. +# dumb transports.
  20878. +#
  20879. +# To enable this hook, rename this file to "post-update".
  20880. +
  20881. +exec git update-server-info
  20882. diff -Nur uClibc-0.9.33.2/.git/hooks/pre-applypatch.sample uClibc/.git/hooks/pre-applypatch.sample
  20883. --- uClibc-0.9.33.2/.git/hooks/pre-applypatch.sample 1970-01-01 01:00:00.000000000 +0100
  20884. +++ uClibc/.git/hooks/pre-applypatch.sample 2014-02-03 12:32:33.000000000 +0100
  20885. @@ -0,0 +1,14 @@
  20886. +#!/bin/sh
  20887. +#
  20888. +# An example hook script to verify what is about to be committed
  20889. +# by applypatch from an e-mail message.
  20890. +#
  20891. +# The hook should exit with non-zero status after issuing an
  20892. +# appropriate message if it wants to stop the commit.
  20893. +#
  20894. +# To enable this hook, rename this file to "pre-applypatch".
  20895. +
  20896. +. git-sh-setup
  20897. +test -x "$GIT_DIR/hooks/pre-commit" &&
  20898. + exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
  20899. +:
  20900. diff -Nur uClibc-0.9.33.2/.git/hooks/pre-commit.sample uClibc/.git/hooks/pre-commit.sample
  20901. --- uClibc-0.9.33.2/.git/hooks/pre-commit.sample 1970-01-01 01:00:00.000000000 +0100
  20902. +++ uClibc/.git/hooks/pre-commit.sample 2014-02-03 12:32:33.000000000 +0100
  20903. @@ -0,0 +1,50 @@
  20904. +#!/bin/sh
  20905. +#
  20906. +# An example hook script to verify what is about to be committed.
  20907. +# Called by "git commit" with no arguments. The hook should
  20908. +# exit with non-zero status after issuing an appropriate message if
  20909. +# it wants to stop the commit.
  20910. +#
  20911. +# To enable this hook, rename this file to "pre-commit".
  20912. +
  20913. +if git rev-parse --verify HEAD >/dev/null 2>&1
  20914. +then
  20915. + against=HEAD
  20916. +else
  20917. + # Initial commit: diff against an empty tree object
  20918. + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
  20919. +fi
  20920. +
  20921. +# If you want to allow non-ascii filenames set this variable to true.
  20922. +allownonascii=$(git config hooks.allownonascii)
  20923. +
  20924. +# Redirect output to stderr.
  20925. +exec 1>&2
  20926. +
  20927. +# Cross platform projects tend to avoid non-ascii filenames; prevent
  20928. +# them from being added to the repository. We exploit the fact that the
  20929. +# printable range starts at the space character and ends with tilde.
  20930. +if [ "$allownonascii" != "true" ] &&
  20931. + # Note that the use of brackets around a tr range is ok here, (it's
  20932. + # even required, for portability to Solaris 10's /usr/bin/tr), since
  20933. + # the square bracket bytes happen to fall in the designated range.
  20934. + test $(git diff --cached --name-only --diff-filter=A -z $against |
  20935. + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
  20936. +then
  20937. + echo "Error: Attempt to add a non-ascii file name."
  20938. + echo
  20939. + echo "This can cause problems if you want to work"
  20940. + echo "with people on other platforms."
  20941. + echo
  20942. + echo "To be portable it is advisable to rename the file ..."
  20943. + echo
  20944. + echo "If you know what you are doing you can disable this"
  20945. + echo "check using:"
  20946. + echo
  20947. + echo " git config hooks.allownonascii true"
  20948. + echo
  20949. + exit 1
  20950. +fi
  20951. +
  20952. +# If there are whitespace errors, print the offending file names and fail.
  20953. +exec git diff-index --check --cached $against --
  20954. diff -Nur uClibc-0.9.33.2/.git/hooks/prepare-commit-msg.sample uClibc/.git/hooks/prepare-commit-msg.sample
  20955. --- uClibc-0.9.33.2/.git/hooks/prepare-commit-msg.sample 1970-01-01 01:00:00.000000000 +0100
  20956. +++ uClibc/.git/hooks/prepare-commit-msg.sample 2014-02-03 12:32:33.000000000 +0100
  20957. @@ -0,0 +1,36 @@
  20958. +#!/bin/sh
  20959. +#
  20960. +# An example hook script to prepare the commit log message.
  20961. +# Called by "git commit" with the name of the file that has the
  20962. +# commit message, followed by the description of the commit
  20963. +# message's source. The hook's purpose is to edit the commit
  20964. +# message file. If the hook fails with a non-zero status,
  20965. +# the commit is aborted.
  20966. +#
  20967. +# To enable this hook, rename this file to "prepare-commit-msg".
  20968. +
  20969. +# This hook includes three examples. The first comments out the
  20970. +# "Conflicts:" part of a merge commit.
  20971. +#
  20972. +# The second includes the output of "git diff --name-status -r"
  20973. +# into the message, just before the "git status" output. It is
  20974. +# commented because it doesn't cope with --amend or with squashed
  20975. +# commits.
  20976. +#
  20977. +# The third example adds a Signed-off-by line to the message, that can
  20978. +# still be edited. This is rarely a good idea.
  20979. +
  20980. +case "$2,$3" in
  20981. + merge,)
  20982. + /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
  20983. +
  20984. +# ,|template,)
  20985. +# /usr/bin/perl -i.bak -pe '
  20986. +# print "\n" . `git diff --cached --name-status -r`
  20987. +# if /^#/ && $first++ == 0' "$1" ;;
  20988. +
  20989. + *) ;;
  20990. +esac
  20991. +
  20992. +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
  20993. +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
  20994. diff -Nur uClibc-0.9.33.2/.git/hooks/pre-rebase.sample uClibc/.git/hooks/pre-rebase.sample
  20995. --- uClibc-0.9.33.2/.git/hooks/pre-rebase.sample 1970-01-01 01:00:00.000000000 +0100
  20996. +++ uClibc/.git/hooks/pre-rebase.sample 2014-02-03 12:32:33.000000000 +0100
  20997. @@ -0,0 +1,169 @@
  20998. +#!/bin/sh
  20999. +#
  21000. +# Copyright (c) 2006, 2008 Junio C Hamano
  21001. +#
  21002. +# The "pre-rebase" hook is run just before "git rebase" starts doing
  21003. +# its job, and can prevent the command from running by exiting with
  21004. +# non-zero status.
  21005. +#
  21006. +# The hook is called with the following parameters:
  21007. +#
  21008. +# $1 -- the upstream the series was forked from.
  21009. +# $2 -- the branch being rebased (or empty when rebasing the current branch).
  21010. +#
  21011. +# This sample shows how to prevent topic branches that are already
  21012. +# merged to 'next' branch from getting rebased, because allowing it
  21013. +# would result in rebasing already published history.
  21014. +
  21015. +publish=next
  21016. +basebranch="$1"
  21017. +if test "$#" = 2
  21018. +then
  21019. + topic="refs/heads/$2"
  21020. +else
  21021. + topic=`git symbolic-ref HEAD` ||
  21022. + exit 0 ;# we do not interrupt rebasing detached HEAD
  21023. +fi
  21024. +
  21025. +case "$topic" in
  21026. +refs/heads/??/*)
  21027. + ;;
  21028. +*)
  21029. + exit 0 ;# we do not interrupt others.
  21030. + ;;
  21031. +esac
  21032. +
  21033. +# Now we are dealing with a topic branch being rebased
  21034. +# on top of master. Is it OK to rebase it?
  21035. +
  21036. +# Does the topic really exist?
  21037. +git show-ref -q "$topic" || {
  21038. + echo >&2 "No such branch $topic"
  21039. + exit 1
  21040. +}
  21041. +
  21042. +# Is topic fully merged to master?
  21043. +not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
  21044. +if test -z "$not_in_master"
  21045. +then
  21046. + echo >&2 "$topic is fully merged to master; better remove it."
  21047. + exit 1 ;# we could allow it, but there is no point.
  21048. +fi
  21049. +
  21050. +# Is topic ever merged to next? If so you should not be rebasing it.
  21051. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
  21052. +only_next_2=`git rev-list ^master ${publish} | sort`
  21053. +if test "$only_next_1" = "$only_next_2"
  21054. +then
  21055. + not_in_topic=`git rev-list "^$topic" master`
  21056. + if test -z "$not_in_topic"
  21057. + then
  21058. + echo >&2 "$topic is already up-to-date with master"
  21059. + exit 1 ;# we could allow it, but there is no point.
  21060. + else
  21061. + exit 0
  21062. + fi
  21063. +else
  21064. + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
  21065. + /usr/bin/perl -e '
  21066. + my $topic = $ARGV[0];
  21067. + my $msg = "* $topic has commits already merged to public branch:\n";
  21068. + my (%not_in_next) = map {
  21069. + /^([0-9a-f]+) /;
  21070. + ($1 => 1);
  21071. + } split(/\n/, $ARGV[1]);
  21072. + for my $elem (map {
  21073. + /^([0-9a-f]+) (.*)$/;
  21074. + [$1 => $2];
  21075. + } split(/\n/, $ARGV[2])) {
  21076. + if (!exists $not_in_next{$elem->[0]}) {
  21077. + if ($msg) {
  21078. + print STDERR $msg;
  21079. + undef $msg;
  21080. + }
  21081. + print STDERR " $elem->[1]\n";
  21082. + }
  21083. + }
  21084. + ' "$topic" "$not_in_next" "$not_in_master"
  21085. + exit 1
  21086. +fi
  21087. +
  21088. +<<\DOC_END
  21089. +
  21090. +This sample hook safeguards topic branches that have been
  21091. +published from being rewound.
  21092. +
  21093. +The workflow assumed here is:
  21094. +
  21095. + * Once a topic branch forks from "master", "master" is never
  21096. + merged into it again (either directly or indirectly).
  21097. +
  21098. + * Once a topic branch is fully cooked and merged into "master",
  21099. + it is deleted. If you need to build on top of it to correct
  21100. + earlier mistakes, a new topic branch is created by forking at
  21101. + the tip of the "master". This is not strictly necessary, but
  21102. + it makes it easier to keep your history simple.
  21103. +
  21104. + * Whenever you need to test or publish your changes to topic
  21105. + branches, merge them into "next" branch.
  21106. +
  21107. +The script, being an example, hardcodes the publish branch name
  21108. +to be "next", but it is trivial to make it configurable via
  21109. +$GIT_DIR/config mechanism.
  21110. +
  21111. +With this workflow, you would want to know:
  21112. +
  21113. +(1) ... if a topic branch has ever been merged to "next". Young
  21114. + topic branches can have stupid mistakes you would rather
  21115. + clean up before publishing, and things that have not been
  21116. + merged into other branches can be easily rebased without
  21117. + affecting other people. But once it is published, you would
  21118. + not want to rewind it.
  21119. +
  21120. +(2) ... if a topic branch has been fully merged to "master".
  21121. + Then you can delete it. More importantly, you should not
  21122. + build on top of it -- other people may already want to
  21123. + change things related to the topic as patches against your
  21124. + "master", so if you need further changes, it is better to
  21125. + fork the topic (perhaps with the same name) afresh from the
  21126. + tip of "master".
  21127. +
  21128. +Let's look at this example:
  21129. +
  21130. + o---o---o---o---o---o---o---o---o---o "next"
  21131. + / / / /
  21132. + / a---a---b A / /
  21133. + / / / /
  21134. + / / c---c---c---c B /
  21135. + / / / \ /
  21136. + / / / b---b C \ /
  21137. + / / / / \ /
  21138. + ---o---o---o---o---o---o---o---o---o---o---o "master"
  21139. +
  21140. +
  21141. +A, B and C are topic branches.
  21142. +
  21143. + * A has one fix since it was merged up to "next".
  21144. +
  21145. + * B has finished. It has been fully merged up to "master" and "next",
  21146. + and is ready to be deleted.
  21147. +
  21148. + * C has not merged to "next" at all.
  21149. +
  21150. +We would want to allow C to be rebased, refuse A, and encourage
  21151. +B to be deleted.
  21152. +
  21153. +To compute (1):
  21154. +
  21155. + git rev-list ^master ^topic next
  21156. + git rev-list ^master next
  21157. +
  21158. + if these match, topic has not merged in next at all.
  21159. +
  21160. +To compute (2):
  21161. +
  21162. + git rev-list master..topic
  21163. +
  21164. + if this is empty, it is fully merged to "master".
  21165. +
  21166. +DOC_END
  21167. diff -Nur uClibc-0.9.33.2/.git/hooks/update.sample uClibc/.git/hooks/update.sample
  21168. --- uClibc-0.9.33.2/.git/hooks/update.sample 1970-01-01 01:00:00.000000000 +0100
  21169. +++ uClibc/.git/hooks/update.sample 2014-02-03 12:32:33.000000000 +0100
  21170. @@ -0,0 +1,128 @@
  21171. +#!/bin/sh
  21172. +#
  21173. +# An example hook script to blocks unannotated tags from entering.
  21174. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
  21175. +#
  21176. +# To enable this hook, rename this file to "update".
  21177. +#
  21178. +# Config
  21179. +# ------
  21180. +# hooks.allowunannotated
  21181. +# This boolean sets whether unannotated tags will be allowed into the
  21182. +# repository. By default they won't be.
  21183. +# hooks.allowdeletetag
  21184. +# This boolean sets whether deleting tags will be allowed in the
  21185. +# repository. By default they won't be.
  21186. +# hooks.allowmodifytag
  21187. +# This boolean sets whether a tag may be modified after creation. By default
  21188. +# it won't be.
  21189. +# hooks.allowdeletebranch
  21190. +# This boolean sets whether deleting branches will be allowed in the
  21191. +# repository. By default they won't be.
  21192. +# hooks.denycreatebranch
  21193. +# This boolean sets whether remotely creating branches will be denied
  21194. +# in the repository. By default this is allowed.
  21195. +#
  21196. +
  21197. +# --- Command line
  21198. +refname="$1"
  21199. +oldrev="$2"
  21200. +newrev="$3"
  21201. +
  21202. +# --- Safety check
  21203. +if [ -z "$GIT_DIR" ]; then
  21204. + echo "Don't run this script from the command line." >&2
  21205. + echo " (if you want, you could supply GIT_DIR then run" >&2
  21206. + echo " $0 <ref> <oldrev> <newrev>)" >&2
  21207. + exit 1
  21208. +fi
  21209. +
  21210. +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
  21211. + echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
  21212. + exit 1
  21213. +fi
  21214. +
  21215. +# --- Config
  21216. +allowunannotated=$(git config --bool hooks.allowunannotated)
  21217. +allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
  21218. +denycreatebranch=$(git config --bool hooks.denycreatebranch)
  21219. +allowdeletetag=$(git config --bool hooks.allowdeletetag)
  21220. +allowmodifytag=$(git config --bool hooks.allowmodifytag)
  21221. +
  21222. +# check for no description
  21223. +projectdesc=$(sed -e '1q' "$GIT_DIR/description")
  21224. +case "$projectdesc" in
  21225. +"Unnamed repository"* | "")
  21226. + echo "*** Project description file hasn't been set" >&2
  21227. + exit 1
  21228. + ;;
  21229. +esac
  21230. +
  21231. +# --- Check types
  21232. +# if $newrev is 0000...0000, it's a commit to delete a ref.
  21233. +zero="0000000000000000000000000000000000000000"
  21234. +if [ "$newrev" = "$zero" ]; then
  21235. + newrev_type=delete
  21236. +else
  21237. + newrev_type=$(git cat-file -t $newrev)
  21238. +fi
  21239. +
  21240. +case "$refname","$newrev_type" in
  21241. + refs/tags/*,commit)
  21242. + # un-annotated tag
  21243. + short_refname=${refname##refs/tags/}
  21244. + if [ "$allowunannotated" != "true" ]; then
  21245. + echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
  21246. + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
  21247. + exit 1
  21248. + fi
  21249. + ;;
  21250. + refs/tags/*,delete)
  21251. + # delete tag
  21252. + if [ "$allowdeletetag" != "true" ]; then
  21253. + echo "*** Deleting a tag is not allowed in this repository" >&2
  21254. + exit 1
  21255. + fi
  21256. + ;;
  21257. + refs/tags/*,tag)
  21258. + # annotated tag
  21259. + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
  21260. + then
  21261. + echo "*** Tag '$refname' already exists." >&2
  21262. + echo "*** Modifying a tag is not allowed in this repository." >&2
  21263. + exit 1
  21264. + fi
  21265. + ;;
  21266. + refs/heads/*,commit)
  21267. + # branch
  21268. + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
  21269. + echo "*** Creating a branch is not allowed in this repository" >&2
  21270. + exit 1
  21271. + fi
  21272. + ;;
  21273. + refs/heads/*,delete)
  21274. + # delete branch
  21275. + if [ "$allowdeletebranch" != "true" ]; then
  21276. + echo "*** Deleting a branch is not allowed in this repository" >&2
  21277. + exit 1
  21278. + fi
  21279. + ;;
  21280. + refs/remotes/*,commit)
  21281. + # tracking branch
  21282. + ;;
  21283. + refs/remotes/*,delete)
  21284. + # delete tracking branch
  21285. + if [ "$allowdeletebranch" != "true" ]; then
  21286. + echo "*** Deleting a tracking branch is not allowed in this repository" >&2
  21287. + exit 1
  21288. + fi
  21289. + ;;
  21290. + *)
  21291. + # Anything else (is there anything else?)
  21292. + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
  21293. + exit 1
  21294. + ;;
  21295. +esac
  21296. +
  21297. +# --- Finished
  21298. +exit 0
  21299. Binary files uClibc-0.9.33.2/.git/index and uClibc/.git/index differ
  21300. diff -Nur uClibc-0.9.33.2/.git/info/exclude uClibc/.git/info/exclude
  21301. --- uClibc-0.9.33.2/.git/info/exclude 1970-01-01 01:00:00.000000000 +0100
  21302. +++ uClibc/.git/info/exclude 2014-02-03 12:32:33.000000000 +0100
  21303. @@ -0,0 +1,6 @@
  21304. +# git ls-files --others --exclude-from=.git/info/exclude
  21305. +# Lines that start with '#' are comments.
  21306. +# For a project mostly in C, the following would be a good set of
  21307. +# exclude patterns (uncomment them if you want to use them):
  21308. +# *.[oa]
  21309. +# *~
  21310. diff -Nur uClibc-0.9.33.2/.git/logs/HEAD uClibc/.git/logs/HEAD
  21311. --- uClibc-0.9.33.2/.git/logs/HEAD 1970-01-01 01:00:00.000000000 +0100
  21312. +++ uClibc/.git/logs/HEAD 2014-02-15 14:18:15.000000000 +0100
  21313. @@ -0,0 +1,2 @@
  21314. +0000000000000000000000000000000000000000 70a04a287a2875c82e6822c36e071afba5b63a62 Waldemar Brodkorb <wbx@openadk.org> 1391427176 +0100 clone: from git://git.busybox.net/uClibc
  21315. +70a04a287a2875c82e6822c36e071afba5b63a62 79c0857a828abb3f7ec9582a01d706e0ce81f84c Waldemar Brodkorb <wbx@openadk.org> 1392470295 +0100 pull: Fast-forward
  21316. diff -Nur uClibc-0.9.33.2/.git/logs/refs/heads/master uClibc/.git/logs/refs/heads/master
  21317. --- uClibc-0.9.33.2/.git/logs/refs/heads/master 1970-01-01 01:00:00.000000000 +0100
  21318. +++ uClibc/.git/logs/refs/heads/master 2014-02-15 14:18:15.000000000 +0100
  21319. @@ -0,0 +1,2 @@
  21320. +0000000000000000000000000000000000000000 70a04a287a2875c82e6822c36e071afba5b63a62 Waldemar Brodkorb <wbx@openadk.org> 1391427176 +0100 clone: from git://git.busybox.net/uClibc
  21321. +70a04a287a2875c82e6822c36e071afba5b63a62 79c0857a828abb3f7ec9582a01d706e0ce81f84c Waldemar Brodkorb <wbx@openadk.org> 1392470295 +0100 pull: Fast-forward
  21322. diff -Nur uClibc-0.9.33.2/.git/logs/refs/remotes/origin/HEAD uClibc/.git/logs/refs/remotes/origin/HEAD
  21323. --- uClibc-0.9.33.2/.git/logs/refs/remotes/origin/HEAD 1970-01-01 01:00:00.000000000 +0100
  21324. +++ uClibc/.git/logs/refs/remotes/origin/HEAD 2014-02-03 12:32:56.000000000 +0100
  21325. @@ -0,0 +1 @@
  21326. +0000000000000000000000000000000000000000 70a04a287a2875c82e6822c36e071afba5b63a62 Waldemar Brodkorb <wbx@openadk.org> 1391427176 +0100 clone: from git://git.busybox.net/uClibc
  21327. diff -Nur uClibc-0.9.33.2/.git/logs/refs/remotes/origin/master uClibc/.git/logs/refs/remotes/origin/master
  21328. --- uClibc-0.9.33.2/.git/logs/refs/remotes/origin/master 1970-01-01 01:00:00.000000000 +0100
  21329. +++ uClibc/.git/logs/refs/remotes/origin/master 2014-02-15 14:18:14.000000000 +0100
  21330. @@ -0,0 +1 @@
  21331. +70a04a287a2875c82e6822c36e071afba5b63a62 79c0857a828abb3f7ec9582a01d706e0ce81f84c Waldemar Brodkorb <wbx@openadk.org> 1392470294 +0100 pull: fast-forward
  21332. Binary files uClibc-0.9.33.2/.git/objects/0e/bc50737b3e6b5e1cfc2575cdb5856bc3a7b9cb and uClibc/.git/objects/0e/bc50737b3e6b5e1cfc2575cdb5856bc3a7b9cb differ
  21333. Binary files uClibc-0.9.33.2/.git/objects/14/0de438ef68ec111ad506f27518f89b5da59b7a and uClibc/.git/objects/14/0de438ef68ec111ad506f27518f89b5da59b7a differ
  21334. Binary files uClibc-0.9.33.2/.git/objects/18/e77de12f0a42964be8fa35bdef982e54a72937 and uClibc/.git/objects/18/e77de12f0a42964be8fa35bdef982e54a72937 differ
  21335. Binary files uClibc-0.9.33.2/.git/objects/24/62d12b78c0ed968bd0ce893291c18072e41709 and uClibc/.git/objects/24/62d12b78c0ed968bd0ce893291c18072e41709 differ
  21336. Binary files uClibc-0.9.33.2/.git/objects/28/d75113146200df1aebe56bbcd41672d2425e02 and uClibc/.git/objects/28/d75113146200df1aebe56bbcd41672d2425e02 differ
  21337. Binary files uClibc-0.9.33.2/.git/objects/29/fc346a393a9c2a66bc3d7ae61cfa67697bde3a and uClibc/.git/objects/29/fc346a393a9c2a66bc3d7ae61cfa67697bde3a differ
  21338. Binary files uClibc-0.9.33.2/.git/objects/2d/de9afa493506e18ae4378edd211f399c2368d1 and uClibc/.git/objects/2d/de9afa493506e18ae4378edd211f399c2368d1 differ
  21339. Binary files uClibc-0.9.33.2/.git/objects/3c/80ed54465c0dba407787a161ff493a7698372f and uClibc/.git/objects/3c/80ed54465c0dba407787a161ff493a7698372f differ
  21340. Binary files uClibc-0.9.33.2/.git/objects/42/6946ea54469a07735f90ca2a0cc4b2f263fe8f and uClibc/.git/objects/42/6946ea54469a07735f90ca2a0cc4b2f263fe8f differ
  21341. Binary files uClibc-0.9.33.2/.git/objects/47/21ac5f837481ef9bfec853a2326c0aa1948011 and uClibc/.git/objects/47/21ac5f837481ef9bfec853a2326c0aa1948011 differ
  21342. Binary files uClibc-0.9.33.2/.git/objects/4d/30d31d252aeea81b1fe63ac25094a0cf18870e and uClibc/.git/objects/4d/30d31d252aeea81b1fe63ac25094a0cf18870e differ
  21343. Binary files uClibc-0.9.33.2/.git/objects/65/a55a7742dc7fee21749c7f3ed443f81a8afce9 and uClibc/.git/objects/65/a55a7742dc7fee21749c7f3ed443f81a8afce9 differ
  21344. Binary files uClibc-0.9.33.2/.git/objects/66/405aba800d98baf78b6e3bd2c59a37e1941124 and uClibc/.git/objects/66/405aba800d98baf78b6e3bd2c59a37e1941124 differ
  21345. Binary files uClibc-0.9.33.2/.git/objects/6c/b02cc14f2b02594dfd189904cb828d9c54330a and uClibc/.git/objects/6c/b02cc14f2b02594dfd189904cb828d9c54330a differ
  21346. Binary files uClibc-0.9.33.2/.git/objects/6f/f1feb249f602ca057b91808e575feb3f2028e1 and uClibc/.git/objects/6f/f1feb249f602ca057b91808e575feb3f2028e1 differ
  21347. diff -Nur uClibc-0.9.33.2/.git/objects/79/c0857a828abb3f7ec9582a01d706e0ce81f84c uClibc/.git/objects/79/c0857a828abb3f7ec9582a01d706e0ce81f84c
  21348. --- uClibc-0.9.33.2/.git/objects/79/c0857a828abb3f7ec9582a01d706e0ce81f84c 1970-01-01 01:00:00.000000000 +0100
  21349. +++ uClibc/.git/objects/79/c0857a828abb3f7ec9582a01d706e0ce81f84c 2014-02-15 14:18:13.000000000 +0100
  21350. @@ -0,0 +1,5 @@
  21351. +x•‘ÑJå0†½ÎSÌ¥¢§¤iÚ´"¢Â
  21352. +^,,çøifÒÛ´$©Ð·ßÙEðF¼þù柟³Ì³KP—ê""([R
  21353. +©–k)ºFöÔZ]Õ=’íZAµÔJt•b«äPm�õœP¡ídÙXĆ+®-W¦•²5JèŠ3½¥q pJôNðkš ípé£x˜Ý ³Ì÷PV�µ�‚o9gYÍx¢àGŽ´%Oáðì¢sã.ÐZà’
  21354. +¿¬ìÝôé%ë¶ë*¸æeöbýæ&Œ{¼…GDøýòçÔÈ£€¸­ëc¯ÙŽÀÅÿ
  21355. +Øù®‘—¡¼=Ò¸ƒó°™ÉõæÒ˜q3j?hÄø‚õûYp~È }.3‹·n€wœî§<ä1Ï“y;“ùÙû¸M‹Y¿Œ�Üà ‹µ‡~¿ýî~_ñŸÞŒý§”¬¨
  21356. \ No newline at end of file
  21357. diff -Nur uClibc-0.9.33.2/.git/objects/7b/797aa69e836cba4f4ca9ce88811dfaf6538bec uClibc/.git/objects/7b/797aa69e836cba4f4ca9ce88811dfaf6538bec
  21358. --- uClibc-0.9.33.2/.git/objects/7b/797aa69e836cba4f4ca9ce88811dfaf6538bec 1970-01-01 01:00:00.000000000 +0100
  21359. +++ uClibc/.git/objects/7b/797aa69e836cba4f4ca9ce88811dfaf6538bec 2014-02-15 14:18:13.000000000 +0100
  21360. @@ -0,0 +1,4 @@
  21361. +x•Ž»NÄ0E©ýîQ²~$~¬VhE±ô Ñ
  21362. +Çžd-mâÈž ò÷˜†‚
  21363. +Š«+ÝÑŸæ9"•¦¿Ã @E§DàbÐÆ3V™!0ÆJa¹ç†i×Ì’ÕeX�ž+­;%¹ì‚Ѓ•ï<ŒÂ2í¹ó=@Yâ6¼¦L_ã€ôi[ÑÑÓÇôÝç²/i-{i}š(—–+SÃé=ë%#u­Ž™>B^®.ú .�›K,þZ§ k¶tžfo?,ÑõÆp]Yœ1B
  21364. +ðVX°©ý¦ó~¤—øI‡-Þ…œS.„¼Äi�Фql†ýøñßÿ•%_4²€8
  21365. \ No newline at end of file
  21366. Binary files uClibc-0.9.33.2/.git/objects/7c/70e0e8c2e16b94b13c8f97bfe23cbd0cf88d0d and uClibc/.git/objects/7c/70e0e8c2e16b94b13c8f97bfe23cbd0cf88d0d differ
  21367. Binary files uClibc-0.9.33.2/.git/objects/7d/c67683b172b61c3c3419654010d25776213bfe and uClibc/.git/objects/7d/c67683b172b61c3c3419654010d25776213bfe differ
  21368. Binary files uClibc-0.9.33.2/.git/objects/86/873ac7b282033ba9719a6c6fda6a3145a27c3e and uClibc/.git/objects/86/873ac7b282033ba9719a6c6fda6a3145a27c3e differ
  21369. Binary files uClibc-0.9.33.2/.git/objects/87/4d5790aee0846cd389284be69708849aeb09e7 and uClibc/.git/objects/87/4d5790aee0846cd389284be69708849aeb09e7 differ
  21370. Binary files uClibc-0.9.33.2/.git/objects/8d/4ed92109fa22093e19c7f042a80630fc63240a and uClibc/.git/objects/8d/4ed92109fa22093e19c7f042a80630fc63240a differ
  21371. Binary files uClibc-0.9.33.2/.git/objects/96/f12aea29db0aa1f5216e517df356c9060d59b1 and uClibc/.git/objects/96/f12aea29db0aa1f5216e517df356c9060d59b1 differ
  21372. Binary files uClibc-0.9.33.2/.git/objects/99/66de808330544a0f52aae5a75293d41d694e07 and uClibc/.git/objects/99/66de808330544a0f52aae5a75293d41d694e07 differ
  21373. Binary files uClibc-0.9.33.2/.git/objects/b4/0d2947a232e86355c3730024a9bdab749c74ab and uClibc/.git/objects/b4/0d2947a232e86355c3730024a9bdab749c74ab differ
  21374. Binary files uClibc-0.9.33.2/.git/objects/b9/68d3c76d43e4e7fad72c6b399b054d5a9d1a90 and uClibc/.git/objects/b9/68d3c76d43e4e7fad72c6b399b054d5a9d1a90 differ
  21375. Binary files uClibc-0.9.33.2/.git/objects/ce/0a147b0c57618fdb6c9dd975d8d26075f0cc44 and uClibc/.git/objects/ce/0a147b0c57618fdb6c9dd975d8d26075f0cc44 differ
  21376. Binary files uClibc-0.9.33.2/.git/objects/d5/01d7c80b92ea4aff6164f442ec528ac2eadbda and uClibc/.git/objects/d5/01d7c80b92ea4aff6164f442ec528ac2eadbda differ
  21377. Binary files uClibc-0.9.33.2/.git/objects/da/5dfbb5c874b58d8ea701ce861f5303cdd7fae9 and uClibc/.git/objects/da/5dfbb5c874b58d8ea701ce861f5303cdd7fae9 differ
  21378. diff -Nur uClibc-0.9.33.2/.git/objects/da/ec1677463134d27b3f6c4cef2907c1ac51be69 uClibc/.git/objects/da/ec1677463134d27b3f6c4cef2907c1ac51be69
  21379. --- uClibc-0.9.33.2/.git/objects/da/ec1677463134d27b3f6c4cef2907c1ac51be69 1970-01-01 01:00:00.000000000 +0100
  21380. +++ uClibc/.git/objects/da/ec1677463134d27b3f6c4cef2907c1ac51be69 2014-02-15 14:18:13.000000000 +0100
  21381. @@ -0,0 +1,2 @@
  21382. +x¥PKnÄ ëšS¼}›ˆÂg4ªª.z€öxI�D„¨êí›9BÕ…½°d˶/)Å£ÖO­�Ñ2LÚr$âF*Fc…‘Ž”ÕÜi‘·¤ÙŽ•rÍ‘KF?0y#H!ü¨ˆëg‡“S#*Áðlk©ðN5¯X|ÒÙ2Õî#~¥
  21383. +÷J{JësÙß–„që}I¯0ŒVÈIiià™œ³K½·Ëòÿ,¶EçopÄ�²'øÆšc^ f˜ÛÁ˜Tk.„| ôrqJ�é×mål=c_qɺ2Ï�û¹ý¹û²{{í
  21384. \ No newline at end of file
  21385. Binary files uClibc-0.9.33.2/.git/objects/e5/cde2eb0ed7df9416fdd6070af07c8448c72a30 and uClibc/.git/objects/e5/cde2eb0ed7df9416fdd6070af07c8448c72a30 differ
  21386. Binary files uClibc-0.9.33.2/.git/objects/e6/3736205fad3f7303cac1ea5469989c645de9cf and uClibc/.git/objects/e6/3736205fad3f7303cac1ea5469989c645de9cf differ
  21387. Binary files uClibc-0.9.33.2/.git/objects/f4/42a777057435a87f6d634b6bfbc6c6401e5ace and uClibc/.git/objects/f4/42a777057435a87f6d634b6bfbc6c6401e5ace differ
  21388. Binary files uClibc-0.9.33.2/.git/objects/pack/pack-41402b140fd3c43322337664fd03e7b208708616.idx and uClibc/.git/objects/pack/pack-41402b140fd3c43322337664fd03e7b208708616.idx differ
  21389. Binary files uClibc-0.9.33.2/.git/objects/pack/pack-41402b140fd3c43322337664fd03e7b208708616.pack and uClibc/.git/objects/pack/pack-41402b140fd3c43322337664fd03e7b208708616.pack differ
  21390. diff -Nur uClibc-0.9.33.2/.git/ORIG_HEAD uClibc/.git/ORIG_HEAD
  21391. --- uClibc-0.9.33.2/.git/ORIG_HEAD 1970-01-01 01:00:00.000000000 +0100
  21392. +++ uClibc/.git/ORIG_HEAD 2014-02-12 15:30:21.000000000 +0100
  21393. @@ -0,0 +1 @@
  21394. +70a04a287a2875c82e6822c36e071afba5b63a62
  21395. diff -Nur uClibc-0.9.33.2/.git/packed-refs uClibc/.git/packed-refs
  21396. --- uClibc-0.9.33.2/.git/packed-refs 1970-01-01 01:00:00.000000000 +0100
  21397. +++ uClibc/.git/packed-refs 2014-02-03 12:32:56.000000000 +0100
  21398. @@ -0,0 +1,105 @@
  21399. +# pack-refs with: peeled
  21400. +80a6c6d96c6201146c4c9d988d16e14243c5664f refs/remotes/origin/0.9.31
  21401. +c408f8f42a9bb5d765432e8cbfd686ccfb70a2c2 refs/remotes/origin/0.9.32
  21402. +7706cd4737ddb89e9b4937936e614d87d1abbd49 refs/remotes/origin/0.9.33
  21403. +a6dfcd03425656208fc548c75f955016c26e8f71 refs/remotes/origin/0_9_28
  21404. +560de2b96857bc26540eb31de44d0e653ad5a4e6 refs/remotes/origin/0_9_29
  21405. +1555437358f20102bc4c2d17a3f6ad361acde5ed refs/remotes/origin/0_9_30
  21406. +5c2f94e7b4223939524cee0f40057a155704127c refs/remotes/origin/future
  21407. +099ecfb6536497eed33a30307b0ba52daab3ccef refs/remotes/origin/ldso-future
  21408. +70a04a287a2875c82e6822c36e071afba5b63a62 refs/remotes/origin/master
  21409. +1c1391e6e507337103f2c7ce4da768b2842a8aa1 refs/remotes/origin/prelink
  21410. +dd4643de1c22376872e7504926ef020f04098898 refs/remotes/origin/superh_fdpic
  21411. +ef2b7af8f296fa089cc3d3823d51cee29b4e2514 refs/tags/0.9.31
  21412. +2b06a997780c53d52a457d40d5dc9fd04ba405c0 refs/tags/0.9.31-rc1
  21413. +0f3059f9a2e27383f14c5fb621cc8c50be45d6d1 refs/tags/0_9_1
  21414. +^64bc6412188b141c010ac3b8e813b837dd991e80
  21415. +207cd42ed7e1635bc37df68d8e319a050bcdf855 refs/tags/0_9_10
  21416. +^6105b44d65f7f1fed172e557bc161883d9f6db5d
  21417. +2f2cde90678e741cb84e41a1b857ec44c97b7f90 refs/tags/0_9_11
  21418. +^f1fc9dcae4beb6f37cb4e1450f5efa3f8b71e848
  21419. +1070020616152a545fc31760c9a7f7e00037e2be refs/tags/0_9_12
  21420. +^10b154404baf8ab8e16f9bce6bf0371f8f5f2ad6
  21421. +4840761c2da4971b2e1e5ec2cac8f2b4e987e00e refs/tags/0_9_13
  21422. +^61a6fc697a9ebb0893895ee06fade5303647171d
  21423. +aa81c2ac206ee3dcbc2baa565d4d1fa3875ae043 refs/tags/0_9_14
  21424. +^66ec482f2f57460e796b82e570bd143f5db04b1d
  21425. +5115bb268509cb675924bd10aa38cb47cff1dc47 refs/tags/0_9_15
  21426. +^e891326e495ff3258e1b331c61131aec54be5fed
  21427. +99a670e91ae78e91539ba02c284239c4e0cba8cd refs/tags/0_9_16
  21428. +^c159d8fb27d14f3e1fa8d743a30c652a6158eff2
  21429. +4bb159c8df7dc19645bc8a3808d026f95c2ac814 refs/tags/0_9_17
  21430. +^aa1a0cd1cf9b9795fda883dae9ac0873644be7ae
  21431. +32256fdbe92642ecfa961ca4772bf9c20f02b8f6 refs/tags/0_9_18
  21432. +^7d7d0766d2b4950c0b82b646ddc9bed3bfd04f63
  21433. +08b067f3c26079955ef0288ebad12603859fbc11 refs/tags/0_9_19
  21434. +^2229d0fa131387b9b8ad16ac88347350a080aeb5
  21435. +8d810986bbd565a31b76e6146c071d5b576985f1 refs/tags/0_9_1a
  21436. +^e9efa23ae121c8976e5dc2bbcf29e029b5087e76
  21437. +c9362f57d817d92c8417154e7716015a3dc5a80f refs/tags/0_9_20
  21438. +^db2863760e4ccb921b9944078c99d80cc293f3ed
  21439. +76ffcf2b1e9fb9c0ae9205be402e9482236772c6 refs/tags/0_9_21
  21440. +^83d06c569c280324874460374f5b2ca3ebe63263
  21441. +f40db7c4bbd5e86a16540df64ed0206ca767607a refs/tags/0_9_22
  21442. +^52214b70d834ce2408da3084865565fcb81ec4f2
  21443. +93e3e0133ac127e9c0f7a8cbe60b6b4b95faca05 refs/tags/0_9_23
  21444. +^85bfb82ad8457167b83c1f5788c30407fbf2c9a7
  21445. +ecdc2c1f8102fe1182e70f04f52abf3ad9334c8b refs/tags/0_9_24
  21446. +^50a55e30e36a5571522e35146ff583c18fc9137d
  21447. +c3988caefac98b0d9b82de36c6f1dacca207bac6 refs/tags/0_9_25
  21448. +^cf0dfb8e9c3968cfcc045092993eb9fffbfca1bd
  21449. +2a2520ea685c2c54417ea6e6370501664fe6c3e8 refs/tags/0_9_26
  21450. +^10b3e8a6a34ef514e39b273ca70e0428ef066446
  21451. +f84f641b3ae98fc073dfb77c8610219a8d14fc84 refs/tags/0_9_27
  21452. +^9acf46c0c74008440f6dfc4d09d82934a56ecd18
  21453. +79d214ff786d3c080f24ec905acdc4ea8e3f4ee3 refs/tags/0_9_27_1
  21454. +^2e6ce6501cd684f4d429b208c411d0d911209076
  21455. +f9400c75addd3d906ea801d72a01c2e9e7fd3f5c refs/tags/0_9_28
  21456. +^19d7c347f8405875e9dcd9ff532eb4942d3702a1
  21457. +d88d365ff0999d33122fb95298176a744f25ca15 refs/tags/0_9_28_1
  21458. +^eb2db570c102e6b90a096baa228a6ec00881753d
  21459. +bce26a6b7556e4c1fe5782f0e06edc2b6faf8ea6 refs/tags/0_9_29
  21460. +^d7afbd04ac00d81bed7da49f0a412081fe4288a1
  21461. +37e8d8164fe3d516ee5d491165784eefad01d91f refs/tags/0_9_29_rc1
  21462. +^f8dbd3102f98716ae0801ca540ab0867d7c90b1b
  21463. +d41499b167b68d79d886be5eb768a4efd9450e54 refs/tags/0_9_30
  21464. +^534e76b4096704ef8c2abe6f39d58ce464b24bde
  21465. +b23e96c8c461b9f494f8f8aac129ffe8b915881f refs/tags/0_9_30_1
  21466. +^57dded090d6bf7f0cf18f27d8b5d86084c5cfd4c
  21467. +aa319dcdbb0a14ec6d392c0dabf0aed873d26a46 refs/tags/0_9_30_2
  21468. +0c4bc968f88206effc215db62859f81671e94afb refs/tags/0_9_30_3
  21469. +d817b1697a4b36d0c0a82114febb4305939afcd4 refs/tags/0_9_30_rc1
  21470. +^c50c578d813fd9424489cc1c30b178baf4482576
  21471. +7e779e91d23ad0d864bfdbd90acf322ee04334db refs/tags/0_9_30_rc2
  21472. +^c50c578d813fd9424489cc1c30b178baf4482576
  21473. +3b0e15fc76dd075a16fde1545592be7d64f4d99c refs/tags/0_9_30_rc3
  21474. +^61d8b174aae08e0cecc71a333c6fea3bc5d7dcd5
  21475. +74e5505940fb4ca2c8198f4020ec9978b99e73dc refs/tags/0_9_8
  21476. +^aa6ece7553a806b57d88ae27be62d69c32aabc4e
  21477. +ad4dc0c21b4545f572bc21da171ca81c828ee1f0 refs/tags/0_9_9
  21478. +^1a88f482efbd802fdb17a12280fd4484d127270f
  21479. +993d096fb31fc2802ed86a82739eac152ee183dc refs/tags/2001_11_23_mdad
  21480. +^c62ed90c4c01a3068ab8fbe3a950200e82525ef6
  21481. +af5fbf7bde16896335eb21d353392c1176f746b2 refs/tags/nptl_merge
  21482. +^a63e523a5ee5599ce83fe7a964fa69d25d5d04ac
  21483. +9bd43a50fea3a12355d400fccf2328a2b492c526 refs/tags/svn_nptl
  21484. +^8a40b252bbaa91fffae6c9ebd88dbb90867a7e2f
  21485. +ef2b7af8f296fa089cc3d3823d51cee29b4e2514 refs/tags/v0.9.31
  21486. +2b06a997780c53d52a457d40d5dc9fd04ba405c0 refs/tags/v0.9.31-rc1
  21487. +132257ad713476c3bcb1afa75da5e64ac1b9e6ce refs/tags/v0.9.31.1
  21488. +^7f7f3e240f5f51976ffed2f1aa11f8a83771ec2a
  21489. +7072abfd63d4f3ddd8b9b0519f61af6a9b21e61a refs/tags/v0.9.32
  21490. +^22e153b5c94c10bd10120bd34a936686514a2299
  21491. +18e751d0d4cafb0d38b04346ce44da1960d14904 refs/tags/v0.9.32-rc1
  21492. +^f7222d84d3d5ae5d5efbf320ce9959020ec07993
  21493. +253baa84a3a340b733fcc645049defed43ce9c6a refs/tags/v0.9.32-rc2
  21494. +^541f53cf24819079242079c5da79d9c5df9a27a8
  21495. +3473ffa4f4c8842a591679c05f6c30aaa24ce455 refs/tags/v0.9.32-rc3
  21496. +^e172884f39f960ed3cf879fb66c6f4fc1846c42d
  21497. +ea7390660d2522d153d073686be48b12c2f7c2c1 refs/tags/v0.9.32.1
  21498. +8c0b2c2886479b39cb345491fc0fa279d6d4b4bb refs/tags/v0.9.33
  21499. +8b443d4425d36ad458633a830ceafeb550a26a43 refs/tags/v0.9.33-rc1
  21500. +3863b7947698c38a025a889c6083913f381049a3 refs/tags/v0.9.33.1
  21501. +^71873086975c1a7af5a5b94e9c3d77dcde556788
  21502. +8bb52c73b5889e3f8af83aacfb4f05a4fac17e80 refs/tags/v0.9.33.2
  21503. +^e12ceeed5a1af59e6b0fc7debf4bb0a90e0acde6
  21504. diff -Nur uClibc-0.9.33.2/.git/refs/heads/master uClibc/.git/refs/heads/master
  21505. --- uClibc-0.9.33.2/.git/refs/heads/master 1970-01-01 01:00:00.000000000 +0100
  21506. +++ uClibc/.git/refs/heads/master 2014-02-15 14:18:15.000000000 +0100
  21507. @@ -0,0 +1 @@
  21508. +79c0857a828abb3f7ec9582a01d706e0ce81f84c
  21509. diff -Nur uClibc-0.9.33.2/.git/refs/remotes/origin/HEAD uClibc/.git/refs/remotes/origin/HEAD
  21510. --- uClibc-0.9.33.2/.git/refs/remotes/origin/HEAD 1970-01-01 01:00:00.000000000 +0100
  21511. +++ uClibc/.git/refs/remotes/origin/HEAD 2014-02-03 12:32:56.000000000 +0100
  21512. @@ -0,0 +1 @@
  21513. +ref: refs/remotes/origin/master
  21514. diff -Nur uClibc-0.9.33.2/.git/refs/remotes/origin/master uClibc/.git/refs/remotes/origin/master
  21515. --- uClibc-0.9.33.2/.git/refs/remotes/origin/master 1970-01-01 01:00:00.000000000 +0100
  21516. +++ uClibc/.git/refs/remotes/origin/master 2014-02-15 14:18:14.000000000 +0100
  21517. @@ -0,0 +1 @@
  21518. +79c0857a828abb3f7ec9582a01d706e0ce81f84c
  21519. diff -Nur uClibc-0.9.33.2/.gitignore uClibc/.gitignore
  21520. --- uClibc-0.9.33.2/.gitignore 2012-05-15 09:20:09.000000000 +0200
  21521. +++ uClibc/.gitignore 2014-02-03 12:32:56.000000000 +0100
  21522. @@ -25,6 +25,7 @@
  21523. .gdb_history
  21524. .gdbinit
  21525. core
  21526. +*.c.[0-9][0-9][0-9]t.*
  21527. #
  21528. # Backups / patches
  21529. diff -Nur uClibc-0.9.33.2/include/alloca.h uClibc/include/alloca.h
  21530. --- uClibc-0.9.33.2/include/alloca.h 2012-05-15 09:20:09.000000000 +0200
  21531. +++ uClibc/include/alloca.h 2014-02-03 12:32:56.000000000 +0100
  21532. @@ -12,9 +12,8 @@
  21533. Lesser General Public License for more details.
  21534. You should have received a copy of the GNU Lesser General Public
  21535. - License along with the GNU C Library; if not, write to the Free
  21536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21537. - 02111-1307 USA. */
  21538. + License along with the GNU C Library; if not, see
  21539. + <http://www.gnu.org/licenses/>. */
  21540. #ifndef _ALLOCA_H
  21541. #define _ALLOCA_H 1
  21542. diff -Nur uClibc-0.9.33.2/include/ar.h uClibc/include/ar.h
  21543. --- uClibc-0.9.33.2/include/ar.h 2012-05-15 09:20:09.000000000 +0200
  21544. +++ uClibc/include/ar.h 2014-02-03 12:32:56.000000000 +0100
  21545. @@ -13,9 +13,8 @@
  21546. Lesser General Public License for more details.
  21547. You should have received a copy of the GNU Lesser General Public
  21548. - License along with the GNU C Library; if not, write to the Free
  21549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21550. - 02111-1307 USA. */
  21551. + License along with the GNU C Library; if not, see
  21552. + <http://www.gnu.org/licenses/>. */
  21553. #ifndef _AR_H
  21554. #define _AR_H 1
  21555. diff -Nur uClibc-0.9.33.2/include/arpa/inet.h uClibc/include/arpa/inet.h
  21556. --- uClibc-0.9.33.2/include/arpa/inet.h 2012-05-15 09:20:09.000000000 +0200
  21557. +++ uClibc/include/arpa/inet.h 2014-02-03 12:32:56.000000000 +0100
  21558. @@ -12,9 +12,8 @@
  21559. Lesser General Public License for more details.
  21560. You should have received a copy of the GNU Lesser General Public
  21561. - License along with the GNU C Library; if not, write to the Free
  21562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21563. - 02111-1307 USA. */
  21564. + License along with the GNU C Library; if not, see
  21565. + <http://www.gnu.org/licenses/>. */
  21566. #ifndef _ARPA_INET_H
  21567. #define _ARPA_INET_H 1
  21568. @@ -32,7 +31,7 @@
  21569. /* Convert Internet host address from numbers-and-dots notation in CP
  21570. into binary data in network byte order. */
  21571. -extern in_addr_t inet_addr (__const char *__cp) __THROW;
  21572. +extern in_addr_t inet_addr (const char *__cp) __THROW;
  21573. libc_hidden_proto(inet_addr)
  21574. /* Return the local host address part of the Internet address in IN. */
  21575. @@ -50,7 +49,7 @@
  21576. /* Extract the network number in network byte order from the address
  21577. in numbers-and-dots natation starting at CP. */
  21578. -extern in_addr_t inet_network (__const char *__cp) __THROW;
  21579. +extern in_addr_t inet_network (const char *__cp) __THROW;
  21580. libc_hidden_proto(inet_network)
  21581. /* Convert Internet number in IN to ASCII representation. The return value
  21582. @@ -60,20 +59,19 @@
  21583. #ifdef __UCLIBC__
  21584. /* Recursion-safe flavor */
  21585. extern char *inet_ntoa_r (struct in_addr __in, char *__buf) __THROW;
  21586. -libc_hidden_proto(inet_ntoa_r)
  21587. #endif
  21588. /* Convert from presentation format of an Internet number in buffer
  21589. starting at CP to the binary network format and store result for
  21590. interface type AF in buffer starting at BUF. */
  21591. -extern int inet_pton (int __af, __const char *__restrict __cp,
  21592. +extern int inet_pton (int __af, const char *__restrict __cp,
  21593. void *__restrict __buf) __THROW;
  21594. libc_hidden_proto(inet_pton)
  21595. /* Convert a Internet address in binary network format for interface
  21596. type AF in buffer starting at CP to presentation form and place
  21597. result in buffer of length LEN astarting at BUF. */
  21598. -extern __const char *inet_ntop (int __af, __const void *__restrict __cp,
  21599. +extern const char *inet_ntop (int __af, const void *__restrict __cp,
  21600. char *__restrict __buf, socklen_t __len)
  21601. __THROW;
  21602. libc_hidden_proto(inet_ntop)
  21603. @@ -83,7 +81,7 @@
  21604. #ifdef __USE_MISC
  21605. /* Convert Internet host address from numbers-and-dots notation in CP
  21606. into binary data and store the result in the structure INP. */
  21607. -extern int inet_aton (__const char *__cp, struct in_addr *__inp) __THROW;
  21608. +extern int inet_aton (const char *__cp, struct in_addr *__inp) __THROW;
  21609. libc_hidden_proto(inet_aton)
  21610. #if 0
  21611. @@ -94,24 +92,24 @@
  21612. /* Convert network number for interface type AF in buffer starting at
  21613. CP to presentation format. The result will specifiy BITS bits of
  21614. the number. */
  21615. -extern char *inet_net_ntop (int __af, __const void *__cp, int __bits,
  21616. +extern char *inet_net_ntop (int __af, const void *__cp, int __bits,
  21617. char *__buf, size_t __len) __THROW;
  21618. /* Convert network number for interface type AF from presentation in
  21619. buffer starting at CP to network format and store result int
  21620. buffer starting at BUF of size LEN. */
  21621. -extern int inet_net_pton (int __af, __const char *__cp,
  21622. +extern int inet_net_pton (int __af, const char *__cp,
  21623. void *__buf, size_t __len) __THROW;
  21624. /* Convert ASCII representation in hexadecimal form of the Internet
  21625. address to binary form and place result in buffer of length LEN
  21626. starting at BUF. */
  21627. -extern unsigned int inet_nsap_addr (__const char *__cp,
  21628. +extern unsigned int inet_nsap_addr (const char *__cp,
  21629. unsigned char *__buf, int __len) __THROW;
  21630. /* Convert internet address in binary form in LEN bytes starting at CP
  21631. a presentation form and place result in BUF. */
  21632. -extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp,
  21633. +extern char *inet_nsap_ntoa (int __len, const unsigned char *__cp,
  21634. char *__buf) __THROW;
  21635. #endif
  21636. #endif
  21637. diff -Nur uClibc-0.9.33.2/include/assert.h uClibc/include/assert.h
  21638. --- uClibc-0.9.33.2/include/assert.h 2012-05-15 09:20:09.000000000 +0200
  21639. +++ uClibc/include/assert.h 2014-02-03 12:32:56.000000000 +0100
  21640. @@ -12,9 +12,8 @@
  21641. Lesser General Public License for more details.
  21642. You should have received a copy of the GNU Lesser General Public
  21643. - License along with the GNU C Library; if not, write to the Free
  21644. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21645. - 02111-1307 USA. */
  21646. + License along with the GNU C Library; if not, see
  21647. + <http://www.gnu.org/licenses/>. */
  21648. /*
  21649. * ISO C99 Standard: 7.2 Diagnostics <assert.h>
  21650. @@ -72,7 +71,7 @@
  21651. # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
  21652. # define __ASSERT_FUNCTION __func__
  21653. # else
  21654. -# define __ASSERT_FUNCTION ((__const char *) 0)
  21655. +# define __ASSERT_FUNCTION ((const char *) 0)
  21656. # endif
  21657. # endif
  21658. diff -Nur uClibc-0.9.33.2/include/atomic.h uClibc/include/atomic.h
  21659. --- uClibc-0.9.33.2/include/atomic.h 2012-05-15 09:20:09.000000000 +0200
  21660. +++ uClibc/include/atomic.h 2014-02-03 12:32:56.000000000 +0100
  21661. @@ -14,9 +14,8 @@
  21662. Lesser General Public License for more details.
  21663. You should have received a copy of the GNU Lesser General Public
  21664. - License along with the GNU C Library; if not, write to the Free
  21665. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21666. - 02111-1307 USA. */
  21667. + License along with the GNU C Library; if not, see
  21668. + <http://www.gnu.org/licenses/>. */
  21669. #ifndef _ATOMIC_H
  21670. #define _ATOMIC_H 1
  21671. diff -Nur uClibc-0.9.33.2/include/byteswap.h uClibc/include/byteswap.h
  21672. --- uClibc-0.9.33.2/include/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  21673. +++ uClibc/include/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  21674. @@ -12,9 +12,8 @@
  21675. Lesser General Public License for more details.
  21676. You should have received a copy of the GNU Lesser General Public
  21677. - License along with the GNU C Library; if not, write to the Free
  21678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21679. - 02111-1307 USA. */
  21680. + License along with the GNU C Library; if not, see
  21681. + <http://www.gnu.org/licenses/>. */
  21682. #ifndef _BYTESWAP_H
  21683. #define _BYTESWAP_H 1
  21684. diff -Nur uClibc-0.9.33.2/include/cancel.h uClibc/include/cancel.h
  21685. --- uClibc-0.9.33.2/include/cancel.h 1970-01-01 01:00:00.000000000 +0100
  21686. +++ uClibc/include/cancel.h 2014-02-03 12:32:56.000000000 +0100
  21687. @@ -0,0 +1,101 @@
  21688. +/* vi: set sw=4 ts=4: */
  21689. +/*
  21690. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  21691. + *
  21692. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  21693. + */
  21694. +
  21695. +#ifndef _CANCEL_H
  21696. +#define _CANCEL_H
  21697. +
  21698. +/*
  21699. + * Usage of this header:
  21700. + * 1. define a static or hidden function __NC(NAME) - expands to __NAME_nocancel
  21701. + * 2. if it is hidden, add the prototype to the appropiate header where NAME has
  21702. + * it's prototype (guarded by _LIBC)
  21703. + * 3. add a CANCELLABLE_SYSCALL(...) line at the end, this will create the function
  21704. + * NAME (as weak) with enabled cancellation for NPTL (and later for new LT), for
  21705. + * LT_OLD it will also create a strong_alias to __libc_NAME to be used in libpthread
  21706. + * 4. if you need libc_hidden_(weak|def) line, use instead lt_libc_hidden, this will
  21707. + * take care of the correct type, weak or strong depending on the THREADS type
  21708. + * 5. If the implementation can't be done using CANCELLABLE_SYSCALL (like for fcntl)
  21709. + * you need to manually add lt_strong_alias() line too, to optionally create the
  21710. + * __libc_NAME alias
  21711. + * 6. if functions are needed to implement __NC(NAME), that themselves are cancellable,
  21712. + * decide how the cancellation should be solved, two variants are possible:
  21713. + * a. use the other function as __NC(FUNC), this way you access the non-cancellable
  21714. + * variant and provide by CANCELLABLE_SYSCALL(...) the dedicated cancellation for NAME.
  21715. + * be aware, that for this case __NC(FUNC) has to be hidden (not static)
  21716. + * b. use the other function with it's name (FUNC) and add LIBC_CANCEL_HANDLED(); at
  21717. + * the end of file with a comment telling us which function took care of the cancellation
  21718. + * Note: LIBC_CANCEL_HANDLED() is noop on uClibc, glibc uses it only for tests, we use
  21719. + * it only for "documentation".
  21720. + *
  21721. + * For now the use of this file is limited to libc, will expand later to support libpthread
  21722. + * and librt as well.
  21723. + */
  21724. +
  21725. +#include <features.h>
  21726. +
  21727. +#ifndef NOT_IN_libc
  21728. +
  21729. +#define __NC(name) _NC(name)
  21730. +#define _NC(name) __##name##_nocancel
  21731. +
  21732. +#define __NC_OLD(name) _NC_OLD(name)
  21733. +#define _NC_OLD(name) __libc_##name
  21734. +
  21735. +#define __NC_PROTO(name) extern __typeof(name) __NC(name) attribute_hidden;
  21736. +#define __NC_OLD_PROTO(name) extern __typeof(name) __NC_OLD(name);
  21737. +
  21738. +#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  21739. +# define __NEW_THREADS 1
  21740. +#else
  21741. +# define SINGLE_THREAD_P 1
  21742. +#endif
  21743. +
  21744. +#ifdef __NEW_THREADS
  21745. +# include <sysdep-cancel.h>
  21746. +
  21747. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21748. +res_type weak_function name param_list \
  21749. +{ \
  21750. + if (SINGLE_THREAD_P) \
  21751. + return __NC(name) params; \
  21752. + int oldtype = LIBC_CANCEL_ASYNC(); \
  21753. + res_type result = __NC(name) params; \
  21754. + LIBC_CANCEL_RESET(oldtype); \
  21755. + return result; \
  21756. +}
  21757. +
  21758. +# define lt_strong_alias(name)
  21759. +# define lt_libc_hidden(name) libc_hidden_def(name)
  21760. +
  21761. +#elif defined __LINUXTHREADS_OLD__
  21762. +
  21763. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21764. +weak_alias(__NC(name),name) \
  21765. +lt_strong_alias(name)
  21766. +
  21767. +# define lt_strong_alias(name) \
  21768. +__NC_OLD_PROTO(name) \
  21769. +strong_alias(name,__NC_OLD(name))
  21770. +# define lt_libc_hidden(name) libc_hidden_weak(name)
  21771. +
  21772. +#else
  21773. +
  21774. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21775. +strong_alias(__NC(name),name)
  21776. +
  21777. +# define lt_strong_alias(name)
  21778. +# define lt_libc_hidden(name) libc_hidden_def(name)
  21779. +
  21780. +#endif
  21781. +
  21782. +/* disable it, useless, glibc uses it only for tests */
  21783. +# undef LIBC_CANCEL_HANDLED
  21784. +# define LIBC_CANCEL_HANDLED()
  21785. +
  21786. +#endif /* NOT_IN_libc */
  21787. +
  21788. +#endif
  21789. diff -Nur uClibc-0.9.33.2/include/complex.h uClibc/include/complex.h
  21790. --- uClibc-0.9.33.2/include/complex.h 2012-05-15 09:20:09.000000000 +0200
  21791. +++ uClibc/include/complex.h 2014-02-03 12:32:56.000000000 +0100
  21792. @@ -1,4 +1,4 @@
  21793. -/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
  21794. +/* Copyright (C) 1997, 1998, 1999, 2000, 2006 Free Software Foundation, Inc.
  21795. This file is part of the GNU C Library.
  21796. The GNU C Library is free software; you can redistribute it and/or
  21797. @@ -12,9 +12,8 @@
  21798. Lesser General Public License for more details.
  21799. You should have received a copy of the GNU Lesser General Public
  21800. - License along with the GNU C Library; if not, write to the Free
  21801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21802. - 02111-1307 USA. */
  21803. + License along with the GNU C Library; if not, see
  21804. + <http://www.gnu.org/licenses/>. */
  21805. /*
  21806. * ISO C99: 7.3 Complex arithmetic <complex.h>
  21807. @@ -84,7 +83,8 @@
  21808. /* And the long double versions. It is non-critical to define them
  21809. here unconditionally since `long double' is required in ISO C99. */
  21810. -#if __STDC__ - 0 || __GNUC__ - 0 && defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
  21811. +#if (__STDC__ - 0 || __GNUC__ - 0) \
  21812. + && defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
  21813. # ifndef _Mlong_double_
  21814. # define _Mlong_double_ long double
  21815. # endif
  21816. diff -Nur uClibc-0.9.33.2/include/cpio.h uClibc/include/cpio.h
  21817. --- uClibc-0.9.33.2/include/cpio.h 2012-05-15 09:20:09.000000000 +0200
  21818. +++ uClibc/include/cpio.h 2014-02-03 12:32:56.000000000 +0100
  21819. @@ -14,9 +14,8 @@
  21820. Lesser General Public License for more details.
  21821. You should have received a copy of the GNU Lesser General Public
  21822. - License along with the GNU C Library; if not, write to the Free
  21823. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21824. - 02111-1307 USA. */
  21825. + License along with the GNU C Library; if not, see
  21826. + <http://www.gnu.org/licenses/>. */
  21827. #ifndef _CPIO_H
  21828. #define _CPIO_H 1
  21829. diff -Nur uClibc-0.9.33.2/include/crypt.h uClibc/include/crypt.h
  21830. --- uClibc-0.9.33.2/include/crypt.h 2012-05-15 09:20:09.000000000 +0200
  21831. +++ uClibc/include/crypt.h 2014-02-03 12:32:56.000000000 +0100
  21832. @@ -12,10 +12,8 @@
  21833. * Lesser General Public License for more details.
  21834. *
  21835. * You should have received a copy of the GNU Lesser General Public
  21836. - * License along with the GNU C Library; if not, write to the Free
  21837. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21838. - * 02111-1307 USA.
  21839. - *
  21840. + * License along with the GNU C Library; see the file COPYING.LIB. If
  21841. + * not, see <http://www.gnu.org/licenses/>.
  21842. */
  21843. #ifndef _CRYPT_H
  21844. diff -Nur uClibc-0.9.33.2/include/ctype.h uClibc/include/ctype.h
  21845. --- uClibc-0.9.33.2/include/ctype.h 2012-05-15 09:20:09.000000000 +0200
  21846. +++ uClibc/include/ctype.h 2014-02-03 12:32:56.000000000 +0100
  21847. @@ -13,9 +13,8 @@
  21848. Lesser General Public License for more details.
  21849. You should have received a copy of the GNU Lesser General Public
  21850. - License along with the GNU C Library; if not, write to the Free
  21851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21852. - 02111-1307 USA. */
  21853. + License along with the GNU C Library; if not, see
  21854. + <http://www.gnu.org/licenses/>. */
  21855. /*
  21856. * ISO C99 Standard 7.4: Character handling <ctype.h>
  21857. diff -Nur uClibc-0.9.33.2/include/dirent.h uClibc/include/dirent.h
  21858. --- uClibc-0.9.33.2/include/dirent.h 2012-05-15 09:20:09.000000000 +0200
  21859. +++ uClibc/include/dirent.h 2014-02-03 12:32:56.000000000 +0100
  21860. @@ -1,4 +1,4 @@
  21861. -/* Copyright (C) 1991-2000, 2003-2005, 2009 Free Software Foundation, Inc.
  21862. +/* Copyright (C) 1991-2000,2003-2005,2009,2010 Free Software Foundation, Inc.
  21863. This file is part of the GNU C Library.
  21864. The GNU C Library is free software; you can redistribute it and/or
  21865. @@ -12,9 +12,8 @@
  21866. Lesser General Public License for more details.
  21867. You should have received a copy of the GNU Lesser General Public
  21868. - License along with the GNU C Library; if not, write to the Free
  21869. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21870. - 02111-1307 USA. */
  21871. + License along with the GNU C Library; if not, see
  21872. + <http://www.gnu.org/licenses/>. */
  21873. /*
  21874. * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
  21875. @@ -132,7 +131,7 @@
  21876. This function is a possible cancellation point and therefore not
  21877. marked with __THROW. */
  21878. -extern DIR *opendir (__const char *__name) __nonnull ((1));
  21879. +extern DIR *opendir (const char *__name) __nonnull ((1));
  21880. libc_hidden_proto(opendir)
  21881. #ifdef __USE_XOPEN2K8
  21882. @@ -224,7 +223,7 @@
  21883. extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
  21884. #endif
  21885. -#if defined __USE_BSD || defined __USE_MISC || defined __XOPEN_2K8
  21886. +#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN2K8
  21887. /* Return the file descriptor used by DIRP. */
  21888. extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
  21889. @@ -256,20 +255,20 @@
  21890. sorted using qsort with CMP, and collected in a malloc'd array in
  21891. *NAMELIST. Returns the number of entries selected, or -1 on error. */
  21892. # ifndef __USE_FILE_OFFSET64
  21893. -extern int scandir (__const char *__restrict __dir,
  21894. +extern int scandir (const char *__restrict __dir,
  21895. struct dirent ***__restrict __namelist,
  21896. - int (*__selector) (__const struct dirent *),
  21897. - int (*__cmp) (__const struct dirent **,
  21898. - __const struct dirent **))
  21899. + int (*__selector) (const struct dirent *),
  21900. + int (*__cmp) (const struct dirent **,
  21901. + const struct dirent **))
  21902. __nonnull ((1, 2));
  21903. # else
  21904. # ifdef __REDIRECT
  21905. extern int __REDIRECT (scandir,
  21906. - (__const char *__restrict __dir,
  21907. + (const char *__restrict __dir,
  21908. struct dirent ***__restrict __namelist,
  21909. - int (*__selector) (__const struct dirent *),
  21910. - int (*__cmp) (__const struct dirent **,
  21911. - __const struct dirent **)),
  21912. + int (*__selector) (const struct dirent *),
  21913. + int (*__cmp) (const struct dirent **,
  21914. + const struct dirent **)),
  21915. scandir64) __nonnull ((1, 2));
  21916. # else
  21917. # define scandir scandir64
  21918. @@ -279,24 +278,24 @@
  21919. # if defined __USE_GNU && defined __USE_LARGEFILE64
  21920. /* This function is like `scandir' but it uses the 64bit dirent structure.
  21921. Please note that the CMP function must now work with struct dirent64 **. */
  21922. -extern int scandir64 (__const char *__restrict __dir,
  21923. +extern int scandir64 (const char *__restrict __dir,
  21924. struct dirent64 ***__restrict __namelist,
  21925. - int (*__selector) (__const struct dirent64 *),
  21926. - int (*__cmp) (__const struct dirent64 **,
  21927. - __const struct dirent64 **))
  21928. + int (*__selector) (const struct dirent64 *),
  21929. + int (*__cmp) (const struct dirent64 **,
  21930. + const struct dirent64 **))
  21931. __nonnull ((1, 2));
  21932. # endif
  21933. /* Function to compare two `struct dirent's alphabetically. */
  21934. # ifndef __USE_FILE_OFFSET64
  21935. -extern int alphasort (__const struct dirent **__e1,
  21936. - __const struct dirent **__e2)
  21937. +extern int alphasort (const struct dirent **__e1,
  21938. + const struct dirent **__e2)
  21939. __THROW __attribute_pure__ __nonnull ((1, 2));
  21940. # else
  21941. # ifdef __REDIRECT
  21942. extern int __REDIRECT_NTH (alphasort,
  21943. - (__const struct dirent **__e1,
  21944. - __const struct dirent **__e2),
  21945. + (const struct dirent **__e1,
  21946. + const struct dirent **__e2),
  21947. alphasort64) __attribute_pure__ __nonnull ((1, 2));
  21948. # else
  21949. # define alphasort alphasort64
  21950. @@ -304,14 +303,14 @@
  21951. # endif
  21952. # if defined __USE_GNU && defined __USE_LARGEFILE64
  21953. -extern int alphasort64 (__const struct dirent64 **__e1,
  21954. - __const struct dirent64 **__e2)
  21955. +extern int alphasort64 (const struct dirent64 **__e1,
  21956. + const struct dirent64 **__e2)
  21957. __THROW __attribute_pure__ __nonnull ((1, 2));
  21958. # endif
  21959. #endif /* Use BSD or misc or XPG7. */
  21960. -#if defined __USE_BSD || defined __USE_MISC
  21961. +#if 0 /* defined __USE_BSD || defined __USE_MISC */
  21962. /* Read directory entries from FD into BUF, reading at most NBYTES.
  21963. Reading starts at offset *BASEP, and *BASEP is updated with the new
  21964. position after reading. Returns the number of bytes read; zero when at
  21965. @@ -344,14 +343,14 @@
  21966. #ifdef __USE_GNU
  21967. /* Function to compare two `struct dirent's by name & version. */
  21968. # ifndef __USE_FILE_OFFSET64
  21969. -extern int versionsort (__const struct dirent **__e1,
  21970. - __const struct dirent **__e2)
  21971. +extern int versionsort (const struct dirent **__e1,
  21972. + const struct dirent **__e2)
  21973. __THROW __attribute_pure__ __nonnull ((1, 2));
  21974. # else
  21975. # ifdef __REDIRECT
  21976. extern int __REDIRECT_NTH (versionsort,
  21977. - (__const struct dirent **__e1,
  21978. - __const struct dirent **__e2),
  21979. + (const struct dirent **__e1,
  21980. + const struct dirent **__e2),
  21981. versionsort64)
  21982. __attribute_pure__ __nonnull ((1, 2));
  21983. # else
  21984. @@ -360,12 +359,19 @@
  21985. # endif
  21986. # ifdef __USE_LARGEFILE64
  21987. -extern int versionsort64 (__const struct dirent64 **__e1,
  21988. - __const struct dirent64 **__e2)
  21989. +extern int versionsort64 (const struct dirent64 **__e1,
  21990. + const struct dirent64 **__e2)
  21991. __THROW __attribute_pure__ __nonnull ((1, 2));
  21992. # endif
  21993. #endif /* Use GNU. */
  21994. __END_DECLS
  21995. +#ifdef _LIBC
  21996. +extern __ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
  21997. +# ifdef __UCLIBC_HAS_LFS__
  21998. +extern __ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
  21999. +# endif
  22000. +#endif
  22001. +
  22002. #endif /* dirent.h */
  22003. diff -Nur uClibc-0.9.33.2/include/dlfcn.h uClibc/include/dlfcn.h
  22004. --- uClibc-0.9.33.2/include/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  22005. +++ uClibc/include/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  22006. @@ -1,6 +1,5 @@
  22007. /* User functions for run-time dynamic loading.
  22008. - Copyright (C) 1995-1999,2000,2001,2003,2004,2006
  22009. - Free Software Foundation, Inc.
  22010. + Copyright (C) 1995-2001,2003,2004,2006,2009 Free Software Foundation, Inc.
  22011. This file is part of the GNU C Library.
  22012. The GNU C Library is free software; you can redistribute it and/or
  22013. @@ -14,9 +13,8 @@
  22014. Lesser General Public License for more details.
  22015. You should have received a copy of the GNU Lesser General Public
  22016. - License along with the GNU C Library; if not, write to the Free
  22017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22018. - 02111-1307 USA. */
  22019. + License along with the GNU C Library; if not, see
  22020. + <http://www.gnu.org/licenses/>. */
  22021. #ifndef _DLFCN_H
  22022. #define _DLFCN_H 1
  22023. @@ -52,11 +50,12 @@
  22024. # endif
  22025. #endif
  22026. +
  22027. __BEGIN_DECLS
  22028. /* Open the shared object FILE and map it in; return a handle that can be
  22029. passed to `dlsym' to get symbol values from it. */
  22030. -extern void *dlopen (__const char *__file, int __mode) __THROW;
  22031. +extern void *dlopen (const char *__file, int __mode) __THROW;
  22032. /* Unmap and close a shared object opened by `dlopen'.
  22033. The handle cannot be used again after calling `dlclose'. */
  22034. @@ -65,17 +64,17 @@
  22035. /* Find the run-time address in the shared object HANDLE refers to
  22036. of the symbol called NAME. */
  22037. extern void *dlsym (void *__restrict __handle,
  22038. - __const char *__restrict __name) __THROW __nonnull ((2));
  22039. + const char *__restrict __name) __THROW __nonnull ((2));
  22040. #if 0 /*def __USE_GNU*/
  22041. /* Like `dlopen', but request object to be allocated in a new namespace. */
  22042. -extern void *dlmopen (Lmid_t __nsid, __const char *__file, int __mode) __THROW;
  22043. +extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROW;
  22044. /* Find the run-time address in the shared object HANDLE refers to
  22045. of the symbol called NAME with VERSION. */
  22046. extern void *dlvsym (void *__restrict __handle,
  22047. - __const char *__restrict __name,
  22048. - __const char *__restrict __version)
  22049. + const char *__restrict __name,
  22050. + const char *__restrict __version)
  22051. __THROW __nonnull ((2, 3));
  22052. #endif
  22053. @@ -90,20 +89,20 @@
  22054. `dladdr'. */
  22055. typedef struct
  22056. {
  22057. - __const char *dli_fname; /* File name of defining object. */
  22058. + const char *dli_fname; /* File name of defining object. */
  22059. void *dli_fbase; /* Load address of that object. */
  22060. - __const char *dli_sname; /* Name of nearest symbol. */
  22061. + const char *dli_sname; /* Name of nearest symbol. */
  22062. void *dli_saddr; /* Exact value of nearest symbol. */
  22063. } Dl_info;
  22064. /* Fill in *INFO with the following information about ADDRESS.
  22065. Returns 0 iff no shared object's segments contain that address. */
  22066. -extern int dladdr (__const void *__address, Dl_info *__info)
  22067. +extern int dladdr (const void *__address, Dl_info *__info)
  22068. __THROW __nonnull ((2));
  22069. #if 0 /* not supported by uClibc */
  22070. /* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */
  22071. -extern int dladdr1 (__const void *__address, Dl_info *__info,
  22072. +extern int dladdr1 (const void *__address, Dl_info *__info,
  22073. void **__extra_info, int __flags) __THROW __nonnull ((2));
  22074. /* These are the possible values for the FLAGS argument to `dladdr1'.
  22075. @@ -166,7 +165,7 @@
  22076. segment, or if the calling thread has not allocated a block for it. */
  22077. RTLD_DI_TLS_DATA = 10,
  22078. - RTLD_DI_MAX = 10,
  22079. + RTLD_DI_MAX = 10
  22080. };
  22081. @@ -186,12 +185,6 @@
  22082. unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
  22083. Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
  22084. } Dl_serinfo;
  22085. -
  22086. -#else
  22087. -
  22088. -/* Get information about the shared objects currently loaded */
  22089. -extern int dlinfo (void);
  22090. -
  22091. #endif
  22092. #endif /* __USE_GNU */
  22093. diff -Nur uClibc-0.9.33.2/include/elf.h uClibc/include/elf.h
  22094. --- uClibc-0.9.33.2/include/elf.h 2012-05-15 09:20:09.000000000 +0200
  22095. +++ uClibc/include/elf.h 2014-02-03 12:32:56.000000000 +0100
  22096. @@ -13,9 +13,8 @@
  22097. Lesser General Public License for more details.
  22098. You should have received a copy of the GNU Lesser General Public
  22099. - License along with the GNU C Library; if not, write to the Free
  22100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22101. - 02111-1307 USA. */
  22102. + License along with the GNU C Library; if not, see
  22103. + <http://www.gnu.org/licenses/>. */
  22104. #ifndef _ELF_H
  22105. #define _ELF_H 1
  22106. @@ -148,8 +147,8 @@
  22107. #define ELFOSABI_SYSV 0 /* Alias. */
  22108. #define ELFOSABI_HPUX 1 /* HP-UX */
  22109. #define ELFOSABI_NETBSD 2 /* NetBSD. */
  22110. -#define ELFOSABI_LINUX 3 /* Linux. */
  22111. -#define ELFOSABI_HURD 4 /* GNU/Hurd */
  22112. +#define ELFOSABI_GNU 3 /* Object uses GNU ELF extensions. */
  22113. +#define ELFOSABI_LINUX ELFOSABI_GNU /* Compatibility alias. */
  22114. #define ELFOSABI_SOLARIS 6 /* Sun Solaris. */
  22115. #define ELFOSABI_AIX 7 /* IBM AIX. */
  22116. #define ELFOSABI_IRIX 8 /* SGI Irix. */
  22117. @@ -260,6 +259,7 @@
  22118. #define EM_PJ 91 /* picoJava */
  22119. #define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
  22120. #define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
  22121. +#define EM_ARCOMPACT 93 /* ARCompact ISA based Cores: ARC 700 */
  22122. #define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
  22123. #define EM_IP2K 101 /* Ubicom IP2022 micro controller */
  22124. #define EM_CR 103 /* National Semiconductor CompactRISC */
  22125. @@ -282,6 +282,9 @@
  22126. unofficial e_machine number should eventually ask registry@caldera.com for
  22127. an officially blessed number to be added to the list above. */
  22128. +/* Imagination Technologies Meta */
  22129. +#define EM_METAG 174
  22130. +
  22131. /* picoJava */
  22132. #define EM_PJ_OLD 99
  22133. @@ -3141,6 +3144,110 @@
  22134. #define R_MICROBLAZE_COPY 21 /* runtime copy */
  22135. #define R_MICROBLAZE_NUM 22
  22136. +/* Meta relocations */
  22137. +#define R_METAG_HIADDR16 0
  22138. +#define R_METAG_LOADDR16 1
  22139. +#define R_METAG_ADDR32 2
  22140. +#define R_METAG_NONE 3
  22141. +#define R_METAG_RELBRANCH 4
  22142. +#define R_METAG_GETSETOFF 5
  22143. +
  22144. +/* Backward compatability */
  22145. +#define R_METAG_REG32OP1 6
  22146. +#define R_METAG_REG32OP2 7
  22147. +#define R_METAG_REG32OP3 8
  22148. +#define R_METAG_REG16OP1 9
  22149. +#define R_METAG_REG16OP2 10
  22150. +#define R_METAG_REG16OP3 11
  22151. +#define R_METAG_REG32OP4 12
  22152. +
  22153. +#define R_METAG_HIOG 13
  22154. +#define R_METAG_LOOG 14
  22155. +
  22156. +/* GNU */
  22157. +#define R_METAG_GNU_VTINHERIT 30
  22158. +#define R_METAG_GNU_VTENTRY 31
  22159. +
  22160. +/* PIC relocations */
  22161. +#define R_METAG_HI16_GOTOFF 32
  22162. +#define R_METAG_LO16_GOTOFF 33
  22163. +#define R_METAG_GETSET_GOTOFF 34
  22164. +#define R_METAG_GETSET_GOT 35
  22165. +#define R_METAG_HI16_GOTPC 36
  22166. +#define R_METAG_LO16_GOTPC 37
  22167. +#define R_METAG_HI16_PLT 38
  22168. +#define R_METAG_LO16_PLT 39
  22169. +#define R_METAG_RELBRANCH_PLT 40
  22170. +#define R_METAG_GOTOFF 41
  22171. +#define R_METAG_PLT 42
  22172. +#define R_METAG_COPY 43
  22173. +#define R_METAG_JMP_SLOT 44
  22174. +#define R_METAG_RELATIVE 45
  22175. +#define R_METAG_GLOB_DAT 46
  22176. +
  22177. +/* TLS relocations */
  22178. +#define R_METAG_TLS_TPOFF 56
  22179. +#define R_METAG_TLS_DTPMOD 57
  22180. +#define R_METAG_TLS_DTPOFF 58
  22181. +
  22182. +/* ARCompact specific relocs */
  22183. +#define R_ARC_NONE 0x0
  22184. +#define R_ARC_8 0x1
  22185. +#define R_ARC_16 0x2
  22186. +#define R_ARC_24 0x3
  22187. +#define R_ARC_32 0x4
  22188. +#define R_ARC_B26 0x5
  22189. +#define R_ARC_B22_PCREL 0x6
  22190. +#define R_ARC_H30 0x7
  22191. +#define R_ARC_N8 0x8
  22192. +#define R_ARC_N16 0x9
  22193. +#define R_ARC_N24 0xA
  22194. +#define R_ARC_N32 0xB
  22195. +#define R_ARC_SDA 0xC
  22196. +#define R_ARC_SECTOFF 0xD
  22197. +#define R_ARC_S21H_PCREL 0xE
  22198. +#define R_ARC_S21W_PCREL 0xF
  22199. +#define R_ARC_S25H_PCREL 0x10
  22200. +#define R_ARC_S25W_PCREL 0x11
  22201. +#define R_ARC_SDA32 0x12
  22202. +#define R_ARC_SDA_LDST 0x13
  22203. +#define R_ARC_SDA_LDST1 0x14
  22204. +#define R_ARC_SDA_LDST2 0x15
  22205. +#define R_ARC_SDA16_LD 0x16
  22206. +#define R_ARC_SDA16_LD1 0x17
  22207. +#define R_ARC_SDA16_LD2 0x18
  22208. +#define R_ARC_S13_PCREL 0x19
  22209. +#define R_ARC_W 0x1A
  22210. +#define R_ARC_32_ME 0x1B
  22211. +#define R_ARC_N32_ME 0x1C
  22212. +#define R_ARC_SECTOFF_ME 0x1D
  22213. +#define R_ARC_SDA32_ME 0x1E
  22214. +#define R_ARC_W_ME 0x1F
  22215. +#define R_ARC_H30_ME 0x20
  22216. +#define R_ARC_SECTOFF_U8 0x21
  22217. +#define R_ARC_SECTOFF_S9 0x22
  22218. +#define R_AC_SECTOFF_U8 0x23
  22219. +#define R_AC_SECTOFF_U8_1 0x24
  22220. +#define R_AC_SECTOFF_U8_2 0x25
  22221. +#define R_AC_SECTOFF_S9 0x26
  22222. +#define R_AC_SECTOFF_S9_1 0x27
  22223. +#define R_AC_SECTOFF_S9_2 0x28
  22224. +#define R_ARC_SECTOFF_ME_1 0x29
  22225. +#define R_ARC_SECTOFF_ME_2 0x2A
  22226. +#define R_ARC_SECTOFF_1 0x2B
  22227. +#define R_ARC_SECTOFF_2 0x2C
  22228. +#define R_ARC_PC32 0x32
  22229. +#define R_ARC_GOTPC32 0x33
  22230. +#define R_ARC_PLT32 0x34
  22231. +#define R_ARC_COPY 0x35
  22232. +#define R_ARC_GLOB_DAT 0x36
  22233. +#define R_ARC_JMP_SLOT 0x37
  22234. +#define R_ARC_RELATIVE 0x38
  22235. +#define R_ARC_GOTOFF 0x39
  22236. +#define R_ARC_GOTPC 0x3A
  22237. +#define R_ARC_GOT32 0x3B
  22238. +#define R_ARC_NUM 0x3C
  22239. +
  22240. #ifdef __cplusplus
  22241. }
  22242. #endif
  22243. diff -Nur uClibc-0.9.33.2/include/endian.h uClibc/include/endian.h
  22244. --- uClibc-0.9.33.2/include/endian.h 2012-05-15 09:20:09.000000000 +0200
  22245. +++ uClibc/include/endian.h 2014-02-03 12:32:56.000000000 +0100
  22246. @@ -12,9 +12,8 @@
  22247. Lesser General Public License for more details.
  22248. You should have received a copy of the GNU Lesser General Public
  22249. - License along with the GNU C Library; if not, write to the Free
  22250. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22251. - 02111-1307 USA. */
  22252. + License along with the GNU C Library; if not, see
  22253. + <http://www.gnu.org/licenses/>. */
  22254. #ifndef _ENDIAN_H
  22255. #define _ENDIAN_H 1
  22256. @@ -55,6 +54,17 @@
  22257. # define __LONG_LONG_PAIR(HI, LO) HI, LO
  22258. #endif
  22259. +#ifdef _LIBC
  22260. +# ifndef __ASSEMBLER__
  22261. +# include <stdint.h>
  22262. +# define OFF_HI(offset) (offset >> 31)
  22263. +# define OFF_LO(offset) (offset)
  22264. +# define OFF64_HI(offset) (uint32_t)(offset >> 32)
  22265. +# define OFF64_LO(offset) (uint32_t)(offset & 0xffffffff)
  22266. +# define OFF_HI_LO(offset) __LONG_LONG_PAIR(OFF_HI(offset), OFF_LO(offset))
  22267. +# define OFF64_HI_LO(offset) __LONG_LONG_PAIR(OFF64_HI(offset), OFF64_LO(offset))
  22268. +# endif
  22269. +#endif
  22270. #ifdef __USE_BSD
  22271. /* Conversion interfaces. */
  22272. diff -Nur uClibc-0.9.33.2/include/err.h uClibc/include/err.h
  22273. --- uClibc-0.9.33.2/include/err.h 2012-05-15 09:20:09.000000000 +0200
  22274. +++ uClibc/include/err.h 2014-02-03 12:32:56.000000000 +0100
  22275. @@ -13,9 +13,8 @@
  22276. Lesser General Public License for more details.
  22277. You should have received a copy of the GNU Lesser General Public
  22278. - License along with the GNU C Library; if not, write to the Free
  22279. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22280. - 02111-1307 USA. */
  22281. + License along with the GNU C Library; if not, see
  22282. + <http://www.gnu.org/licenses/>. */
  22283. #ifndef _ERR_H
  22284. #define _ERR_H 1
  22285. @@ -32,30 +31,26 @@
  22286. /* Print "program: ", FORMAT, ": ", the standard error string for errno,
  22287. and a newline, on stderr. */
  22288. -extern void warn (__const char *__format, ...)
  22289. +extern void warn (const char *__format, ...)
  22290. __attribute__ ((__format__ (__printf__, 1, 2)));
  22291. -extern void vwarn (__const char *__format, __gnuc_va_list)
  22292. +extern void vwarn (const char *__format, __gnuc_va_list)
  22293. __attribute__ ((__format__ (__printf__, 1, 0)));
  22294. -libc_hidden_proto(vwarn)
  22295. /* Likewise, but without ": " and the standard error string. */
  22296. -extern void warnx (__const char *__format, ...)
  22297. +extern void warnx (const char *__format, ...)
  22298. __attribute__ ((__format__ (__printf__, 1, 2)));
  22299. -extern void vwarnx (__const char *__format, __gnuc_va_list)
  22300. +extern void vwarnx (const char *__format, __gnuc_va_list)
  22301. __attribute__ ((__format__ (__printf__, 1, 0)));
  22302. -libc_hidden_proto(vwarnx)
  22303. /* Likewise, and then exit with STATUS. */
  22304. -extern void err (int __status, __const char *__format, ...)
  22305. +extern void err (int __status, const char *__format, ...)
  22306. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  22307. -extern void verr (int __status, __const char *__format, __gnuc_va_list)
  22308. +extern void verr (int __status, const char *__format, __gnuc_va_list)
  22309. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  22310. -libc_hidden_proto(verr)
  22311. -extern void errx (int __status, __const char *__format, ...)
  22312. +extern void errx (int __status, const char *__format, ...)
  22313. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  22314. -extern void verrx (int __status, __const char *, __gnuc_va_list)
  22315. +extern void verrx (int __status, const char *, __gnuc_va_list)
  22316. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  22317. -libc_hidden_proto(verrx)
  22318. __END_DECLS
  22319. diff -Nur uClibc-0.9.33.2/include/errno.h uClibc/include/errno.h
  22320. --- uClibc-0.9.33.2/include/errno.h 2012-05-15 09:20:09.000000000 +0200
  22321. +++ uClibc/include/errno.h 2014-02-03 12:32:56.000000000 +0100
  22322. @@ -12,9 +12,8 @@
  22323. Lesser General Public License for more details.
  22324. You should have received a copy of the GNU Lesser General Public
  22325. - License along with the GNU C Library; if not, write to the Free
  22326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22327. - 02111-1307 USA. */
  22328. + License along with the GNU C Library; if not, see
  22329. + <http://www.gnu.org/licenses/>. */
  22330. /*
  22331. * ISO C99 Standard: 7.5 Errors <errno.h>
  22332. @@ -47,6 +46,9 @@
  22333. extern int errno;
  22334. #endif
  22335. +#ifdef _LIBC
  22336. +extern const char *__progname, *__progname_full;
  22337. +#endif
  22338. #if defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  22339. /* The full and simple forms of the name with which the program was
  22340. diff -Nur uClibc-0.9.33.2/include/error.h uClibc/include/error.h
  22341. --- uClibc-0.9.33.2/include/error.h 2012-05-15 09:20:09.000000000 +0200
  22342. +++ uClibc/include/error.h 2014-02-03 12:32:56.000000000 +0100
  22343. @@ -13,9 +13,8 @@
  22344. Lesser General Public License for more details.
  22345. You should have received a copy of the GNU Lesser General Public
  22346. - License along with the GNU C Library; if not, write to the Free
  22347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22348. - 02111-1307 USA. */
  22349. + License along with the GNU C Library; if not, see
  22350. + <http://www.gnu.org/licenses/>. */
  22351. #ifndef _ERROR_H
  22352. #define _ERROR_H 1
  22353. diff -Nur uClibc-0.9.33.2/include/execinfo.h uClibc/include/execinfo.h
  22354. --- uClibc-0.9.33.2/include/execinfo.h 2012-05-15 09:20:09.000000000 +0200
  22355. +++ uClibc/include/execinfo.h 2014-02-03 12:32:56.000000000 +0100
  22356. @@ -12,9 +12,8 @@
  22357. Lesser General Public License for more details.
  22358. You should have received a copy of the GNU Lesser General Public
  22359. - License along with the GNU C Library; if not, write to the Free
  22360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22361. - 02111-1307 USA. */
  22362. + License along with the GNU C Library; if not, see
  22363. + <http://www.gnu.org/licenses/>. */
  22364. #ifndef _EXECINFO_H
  22365. #define _EXECINFO_H 1
  22366. @@ -30,13 +29,13 @@
  22367. /* Return names of functions from the backtrace list in ARRAY in a newly
  22368. malloc()ed memory block. */
  22369. -extern char **backtrace_symbols (void *__const *__array, int __size)
  22370. +extern char **backtrace_symbols (void *const *__array, int __size)
  22371. __THROW __nonnull ((1));
  22372. /* This function is similar to backtrace_symbols() but it writes the result
  22373. immediately to a file. */
  22374. -extern void backtrace_symbols_fd (void *__const *__array, int __size, int __fd)
  22375. +extern void backtrace_symbols_fd (void *const *__array, int __size, int __fd)
  22376. __THROW __nonnull ((1));
  22377. __END_DECLS
  22378. diff -Nur uClibc-0.9.33.2/include/fcntl.h uClibc/include/fcntl.h
  22379. --- uClibc-0.9.33.2/include/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  22380. +++ uClibc/include/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  22381. @@ -13,9 +13,8 @@
  22382. Lesser General Public License for more details.
  22383. You should have received a copy of the GNU Lesser General Public
  22384. - License along with the GNU C Library; if not, write to the Free
  22385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22386. - 02111-1307 USA. */
  22387. + License along with the GNU C Library; if not, see
  22388. + <http://www.gnu.org/licenses/>. */
  22389. /*
  22390. * POSIX Standard: 6.5 File Control Operations <fcntl.h>
  22391. @@ -75,7 +74,10 @@
  22392. __THROW. */
  22393. #if !defined(__USE_FILE_OFFSET64) || defined(__LP64__)
  22394. extern int fcntl (int __fd, int __cmd, ...);
  22395. +# ifdef _LIBC
  22396. +extern int __fcntl_nocancel(int, int, long) attribute_hidden;
  22397. libc_hidden_proto(fcntl)
  22398. +# endif
  22399. #else
  22400. # ifdef __REDIRECT
  22401. extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
  22402. @@ -85,7 +87,10 @@
  22403. #endif
  22404. #if defined(__USE_LARGEFILE64) && !defined(__LP64__)
  22405. extern int fcntl64 (int __fd, int __cmd, ...);
  22406. +# ifdef _LIBC
  22407. +extern int __fcntl64_nocancel(int, int, long) attribute_hidden;
  22408. libc_hidden_proto(fcntl64)
  22409. +# endif
  22410. #endif
  22411. /* Open FILE and return a new file descriptor for it, or -1 on error.
  22412. @@ -95,18 +100,22 @@
  22413. This function is a cancellation point and therefore not marked with
  22414. __THROW. */
  22415. #ifndef __USE_FILE_OFFSET64
  22416. -extern int open (__const char *__file, int __oflag, ...) __nonnull ((1));
  22417. +extern int open (const char *__file, int __oflag, ...) __nonnull ((1));
  22418. libc_hidden_proto(open)
  22419. +# ifdef _LIBC
  22420. +extern int __open2_nocancel(const char *, int) __nonnull ((1)) attribute_hidden;
  22421. +extern int __open_nocancel(const char *, int, mode_t) __nonnull ((1)) attribute_hidden;
  22422. +# endif
  22423. #else
  22424. # ifdef __REDIRECT
  22425. -extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64)
  22426. +extern int __REDIRECT (open, (const char *__file, int __oflag, ...), open64)
  22427. __nonnull ((1));
  22428. # else
  22429. # define open open64
  22430. # endif
  22431. #endif
  22432. #ifdef __USE_LARGEFILE64
  22433. -extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
  22434. +extern int open64 (const char *__file, int __oflag, ...) __nonnull ((1));
  22435. libc_hidden_proto(open64)
  22436. #endif
  22437. @@ -121,21 +130,20 @@
  22438. This function is a cancellation point and therefore not marked with
  22439. __THROW. */
  22440. # ifndef __USE_FILE_OFFSET64
  22441. -extern int openat (int __fd, __const char *__file, int __oflag, ...)
  22442. +extern int openat (int __fd, const char *__file, int __oflag, ...)
  22443. __nonnull ((2));
  22444. libc_hidden_proto(openat)
  22445. # else
  22446. # ifdef __REDIRECT
  22447. -extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag,
  22448. +extern int __REDIRECT (openat, (int __fd, const char *__file, int __oflag,
  22449. ...), openat64) __nonnull ((2));
  22450. # else
  22451. # define openat openat64
  22452. # endif
  22453. # endif
  22454. -extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
  22455. +extern int openat64 (int __fd, const char *__file, int __oflag, ...)
  22456. __nonnull ((2));
  22457. -libc_hidden_proto(openat64)
  22458. #endif
  22459. /* Create and open FILE, with mode MODE. This takes an `int' MODE
  22460. @@ -144,17 +152,17 @@
  22461. This function is a cancellation point and therefore not marked with
  22462. __THROW. */
  22463. #ifndef __USE_FILE_OFFSET64
  22464. -extern int creat (__const char *__file, __mode_t __mode) __nonnull ((1));
  22465. +extern int creat (const char *__file, __mode_t __mode) __nonnull ((1));
  22466. #else
  22467. # ifdef __REDIRECT
  22468. -extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
  22469. +extern int __REDIRECT (creat, (const char *__file, __mode_t __mode),
  22470. creat64) __nonnull ((1));
  22471. # else
  22472. # define creat creat64
  22473. # endif
  22474. #endif
  22475. #ifdef __USE_LARGEFILE64
  22476. -extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1));
  22477. +extern int creat64 (const char *__file, __mode_t __mode) __nonnull ((1));
  22478. #endif
  22479. #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
  22480. @@ -184,7 +192,6 @@
  22481. # endif
  22482. # ifdef __USE_LARGEFILE64
  22483. extern int lockf64 (int __fd, int __cmd, __off64_t __len);
  22484. -libc_hidden_proto(lockf64)
  22485. # endif
  22486. #endif
  22487. @@ -210,9 +217,7 @@
  22488. #endif
  22489. -#if 0 /* && defined __UCLIBC_HAS_ADVANCED_REALTIME__ */
  22490. -
  22491. -/* FIXME -- uClibc should probably implement these... */
  22492. +#if defined __UCLIBC_HAS_ADVANCED_REALTIME__
  22493. /* Reserve storage for the data of the file associated with FD.
  22494. @@ -234,11 +239,6 @@
  22495. # endif
  22496. #endif
  22497. -#ifdef _LIBC
  22498. -extern int __fcntl_nocancel (int fd, int cmd, ...);
  22499. -libc_hidden_proto(__fcntl_nocancel)
  22500. -#endif
  22501. -
  22502. __END_DECLS
  22503. #endif /* fcntl.h */
  22504. diff -Nur uClibc-0.9.33.2/include/features.h uClibc/include/features.h
  22505. --- uClibc-0.9.33.2/include/features.h 2012-05-15 09:20:09.000000000 +0200
  22506. +++ uClibc/include/features.h 2014-02-03 12:32:56.000000000 +0100
  22507. @@ -12,9 +12,8 @@
  22508. Lesser General Public License for more details.
  22509. You should have received a copy of the GNU Lesser General Public
  22510. - License along with the GNU C Library; if not, write to the Free
  22511. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22512. - 02111-1307 USA. */
  22513. + License along with the GNU C Library; if not, see
  22514. + <http://www.gnu.org/licenses/>. */
  22515. #ifndef _FEATURES_H
  22516. #define _FEATURES_H 1
  22517. diff -Nur uClibc-0.9.33.2/include/fenv.h uClibc/include/fenv.h
  22518. --- uClibc-0.9.33.2/include/fenv.h 2012-05-15 09:20:09.000000000 +0200
  22519. +++ uClibc/include/fenv.h 2014-02-03 12:32:56.000000000 +0100
  22520. @@ -12,9 +12,8 @@
  22521. Lesser General Public License for more details.
  22522. You should have received a copy of the GNU Lesser General Public
  22523. - License along with the GNU C Library; if not, write to the Free
  22524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22525. - 02111-1307 USA. */
  22526. + License along with the GNU C Library; if not, see
  22527. + <http://www.gnu.org/licenses/>. */
  22528. /*
  22529. * ISO C99 7.6: Floating-point environment <fenv.h>
  22530. @@ -73,7 +72,7 @@
  22531. /* Set complete status for exceptions indicated by EXCEPTS according to
  22532. the representation in the object pointed to by FLAGP. */
  22533. -extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
  22534. +extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW;
  22535. /* Determine which of subset of the exceptions specified by EXCEPTS are
  22536. currently set. */
  22537. @@ -102,12 +101,12 @@
  22538. /* Establish the floating-point environment represented by the object
  22539. pointed to by ENVP. */
  22540. -extern int fesetenv (__const fenv_t *__envp) __THROW;
  22541. +extern int fesetenv (const fenv_t *__envp) __THROW;
  22542. /* Save current exceptions in temporary storage, install environment
  22543. represented by object pointed to by ENVP and raise exceptions
  22544. according to saved exceptions. */
  22545. -extern int feupdateenv (__const fenv_t *__envp) __THROW;
  22546. +extern int feupdateenv (const fenv_t *__envp) __THROW;
  22547. /* Include optimization. */
  22548. diff -Nur uClibc-0.9.33.2/include/fnmatch.h uClibc/include/fnmatch.h
  22549. --- uClibc-0.9.33.2/include/fnmatch.h 2012-05-15 09:20:09.000000000 +0200
  22550. +++ uClibc/include/fnmatch.h 2014-02-03 12:32:56.000000000 +0100
  22551. @@ -12,9 +12,8 @@
  22552. Lesser General Public License for more details.
  22553. You should have received a copy of the GNU Lesser General Public
  22554. - License along with the GNU C Library; if not, write to the Free
  22555. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22556. - 02111-1307 USA. */
  22557. + License along with the GNU C Library; if not, see
  22558. + <http://www.gnu.org/licenses/>. */
  22559. #ifndef _FNMATCH_H
  22560. #define _FNMATCH_H 1
  22561. @@ -23,14 +22,6 @@
  22562. extern "C" {
  22563. #endif
  22564. -#ifndef const
  22565. -# if (defined __STDC__ && __STDC__) || defined __cplusplus
  22566. -# define __const const
  22567. -# else
  22568. -# define __const
  22569. -# endif
  22570. -#endif
  22571. -
  22572. /* We #undef these before defining them because some losing systems
  22573. (HP-UX A.08.07 for example) define these in <unistd.h>. */
  22574. #undef FNM_PATHNAME
  22575. @@ -62,7 +53,7 @@
  22576. /* Match NAME against the filename pattern PATTERN,
  22577. returning zero if it matches, FNM_NOMATCH if not. */
  22578. -extern int fnmatch (__const char *__pattern, __const char *__name,
  22579. +extern int fnmatch (const char *__pattern, const char *__name,
  22580. int __flags);
  22581. libc_hidden_proto(fnmatch)
  22582. diff -Nur uClibc-0.9.33.2/include/ftw.h uClibc/include/ftw.h
  22583. --- uClibc-0.9.33.2/include/ftw.h 2012-05-15 09:20:09.000000000 +0200
  22584. +++ uClibc/include/ftw.h 2014-02-03 12:32:56.000000000 +0100
  22585. @@ -12,9 +12,8 @@
  22586. Lesser General Public License for more details.
  22587. You should have received a copy of the GNU Lesser General Public
  22588. - License along with the GNU C Library; if not, write to the Free
  22589. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22590. - 02111-1307 USA. */
  22591. + License along with the GNU C Library; if not, see
  22592. + <http://www.gnu.org/licenses/>. */
  22593. /*
  22594. * X/Open Portability Guide 4.2: ftw.h
  22595. @@ -112,19 +111,19 @@
  22596. /* Convenient types for callback functions. */
  22597. -typedef int (*__ftw_func_t) (__const char *__filename,
  22598. - __const struct stat *__status, int __flag);
  22599. +typedef int (*__ftw_func_t) (const char *__filename,
  22600. + const struct stat *__status, int __flag);
  22601. #ifdef __USE_LARGEFILE64
  22602. -typedef int (*__ftw64_func_t) (__const char *__filename,
  22603. - __const struct stat64 *__status, int __flag);
  22604. +typedef int (*__ftw64_func_t) (const char *__filename,
  22605. + const struct stat64 *__status, int __flag);
  22606. #endif
  22607. #ifdef __USE_XOPEN_EXTENDED
  22608. -typedef int (*__nftw_func_t) (__const char *__filename,
  22609. - __const struct stat *__status, int __flag,
  22610. +typedef int (*__nftw_func_t) (const char *__filename,
  22611. + const struct stat *__status, int __flag,
  22612. struct FTW *__info);
  22613. # ifdef __USE_LARGEFILE64
  22614. -typedef int (*__nftw64_func_t) (__const char *__filename,
  22615. - __const struct stat64 *__status,
  22616. +typedef int (*__nftw64_func_t) (const char *__filename,
  22617. + const struct stat64 *__status,
  22618. int __flag, struct FTW *__info);
  22619. # endif
  22620. #endif
  22621. @@ -135,18 +134,18 @@
  22622. This function is a possible cancellation point and therefore not
  22623. marked with __THROW. */
  22624. # ifndef __USE_FILE_OFFSET64
  22625. -extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)
  22626. +extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
  22627. __nonnull ((1, 2));
  22628. # else
  22629. # ifdef __REDIRECT
  22630. -extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,
  22631. +extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
  22632. int __descriptors), ftw64) __nonnull ((1, 2));
  22633. # else
  22634. # define ftw ftw64
  22635. # endif
  22636. # endif
  22637. # ifdef __USE_LARGEFILE64
  22638. -extern int ftw64 (__const char *__dir, __ftw64_func_t __func,
  22639. +extern int ftw64 (const char *__dir, __ftw64_func_t __func,
  22640. int __descriptors) __nonnull ((1, 2));
  22641. # endif
  22642. #endif
  22643. @@ -158,11 +157,11 @@
  22644. This function is a possible cancellation point and therefore not
  22645. marked with __THROW. */
  22646. # ifndef __USE_FILE_OFFSET64
  22647. -extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,
  22648. +extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
  22649. int __flag) __nonnull ((1, 2));
  22650. # else
  22651. # ifdef __REDIRECT
  22652. -extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,
  22653. +extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
  22654. int __descriptors, int __flag), nftw64)
  22655. __nonnull ((1, 2));
  22656. # else
  22657. @@ -170,7 +169,7 @@
  22658. # endif
  22659. # endif
  22660. # ifdef __USE_LARGEFILE64
  22661. -extern int nftw64 (__const char *__dir, __nftw64_func_t __func,
  22662. +extern int nftw64 (const char *__dir, __nftw64_func_t __func,
  22663. int __descriptors, int __flag) __nonnull ((1, 2));
  22664. # endif
  22665. #endif
  22666. diff -Nur uClibc-0.9.33.2/include/.gitignore uClibc/include/.gitignore
  22667. --- uClibc-0.9.33.2/include/.gitignore 2012-05-15 09:20:09.000000000 +0200
  22668. +++ uClibc/include/.gitignore 2014-02-03 12:32:56.000000000 +0100
  22669. @@ -8,6 +8,7 @@
  22670. #
  22671. /bits/
  22672. /config/
  22673. +/generated/
  22674. /bfin_fixed_code.h
  22675. /bfin_l1layout.h
  22676. @@ -15,6 +16,9 @@
  22677. /dl-osinfo.h
  22678. /fpu_control.h
  22679. /hp-timing.h
  22680. +/jmpbuf-offsets.h
  22681. +/jmpbuf-unwind.h
  22682. +/not-cancel.h
  22683. /pthread.h
  22684. /semaphore.h
  22685. /thread_db.h
  22686. diff -Nur uClibc-0.9.33.2/include/glob.h uClibc/include/glob.h
  22687. --- uClibc-0.9.33.2/include/glob.h 2012-05-15 09:20:09.000000000 +0200
  22688. +++ uClibc/include/glob.h 2014-02-03 12:32:56.000000000 +0100
  22689. @@ -12,9 +12,8 @@
  22690. Lesser General Public License for more details.
  22691. You should have received a copy of the GNU Lesser General Public
  22692. - License along with the GNU C Library; if not, write to the Free
  22693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22694. - 02111-1307 USA. */
  22695. + License along with the GNU C Library; if not, see
  22696. + <http://www.gnu.org/licenses/>. */
  22697. #ifndef _GLOB_H
  22698. #define _GLOB_H 1
  22699. @@ -110,13 +109,13 @@
  22700. #else
  22701. void *(*gl_readdir) (void *);
  22702. #endif
  22703. - void *(*gl_opendir) (__const char *);
  22704. + void *(*gl_opendir) (const char *);
  22705. #ifdef __USE_GNU
  22706. - int (*gl_lstat) (__const char *__restrict, struct stat *__restrict);
  22707. - int (*gl_stat) (__const char *__restrict, struct stat *__restrict);
  22708. + int (*gl_lstat) (const char *__restrict, struct stat *__restrict);
  22709. + int (*gl_stat) (const char *__restrict, struct stat *__restrict);
  22710. #else
  22711. - int (*gl_lstat) (__const char *__restrict, void *__restrict);
  22712. - int (*gl_stat) (__const char *__restrict, void *__restrict);
  22713. + int (*gl_lstat) (const char *__restrict, void *__restrict);
  22714. + int (*gl_stat) (const char *__restrict, void *__restrict);
  22715. #endif
  22716. #endif
  22717. #endif /* __UCLIBC_HAS_GNU_GLOB__ */
  22718. @@ -143,13 +142,13 @@
  22719. # else
  22720. void *(*gl_readdir) (void *);
  22721. # endif
  22722. - void *(*gl_opendir) (__const char *);
  22723. + void *(*gl_opendir) (const char *);
  22724. # ifdef __USE_GNU
  22725. - int (*gl_lstat) (__const char *__restrict, struct stat64 *__restrict);
  22726. - int (*gl_stat) (__const char *__restrict, struct stat64 *__restrict);
  22727. + int (*gl_lstat) (const char *__restrict, struct stat64 *__restrict);
  22728. + int (*gl_stat) (const char *__restrict, struct stat64 *__restrict);
  22729. # else
  22730. - int (*gl_lstat) (__const char *__restrict, void *__restrict);
  22731. - int (*gl_stat) (__const char *__restrict, void *__restrict);
  22732. + int (*gl_lstat) (const char *__restrict, void *__restrict);
  22733. + int (*gl_stat) (const char *__restrict, void *__restrict);
  22734. # endif
  22735. #endif
  22736. #endif /* __UCLIBC_HAS_GNU_GLOB__ */
  22737. @@ -170,8 +169,8 @@
  22738. If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
  22739. Otherwise, `glob' returns zero. */
  22740. #if !defined __USE_FILE_OFFSET64 || __GNUC__ < 2
  22741. -extern int glob (__const char *__restrict __pattern, int __flags,
  22742. - int (*__errfunc) (__const char *, int),
  22743. +extern int glob (const char *__restrict __pattern, int __flags,
  22744. + int (*__errfunc) (const char *, int),
  22745. glob_t *__restrict __pglob) __THROW;
  22746. libc_hidden_proto(glob)
  22747. @@ -179,17 +178,17 @@
  22748. extern void globfree (glob_t *__pglob) __THROW;
  22749. libc_hidden_proto(globfree)
  22750. #else
  22751. -extern int __REDIRECT_NTH (glob, (__const char *__restrict __pattern,
  22752. +extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern,
  22753. int __flags,
  22754. - int (*__errfunc) (__const char *, int),
  22755. + int (*__errfunc) (const char *, int),
  22756. glob_t *__restrict __pglob), glob64);
  22757. extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
  22758. #endif
  22759. #ifdef __USE_LARGEFILE64
  22760. -extern int glob64 (__const char *__restrict __pattern, int __flags,
  22761. - int (*__errfunc) (__const char *, int),
  22762. +extern int glob64 (const char *__restrict __pattern, int __flags,
  22763. + int (*__errfunc) (const char *, int),
  22764. glob64_t *__restrict __pglob) __THROW;
  22765. libc_hidden_proto(glob64)
  22766. @@ -204,7 +203,7 @@
  22767. This function is not part of the interface specified by POSIX.2
  22768. but several programs want to use it. */
  22769. -extern int glob_pattern_p (__const char *__pattern, int __quote) __THROW;
  22770. +extern int glob_pattern_p (const char *__pattern, int __quote) __THROW;
  22771. libc_hidden_proto(glob_pattern_p)
  22772. #endif
  22773. diff -Nur uClibc-0.9.33.2/include/gnu-versions.h uClibc/include/gnu-versions.h
  22774. --- uClibc-0.9.33.2/include/gnu-versions.h 2012-05-15 09:20:09.000000000 +0200
  22775. +++ uClibc/include/gnu-versions.h 2014-02-03 12:32:56.000000000 +0100
  22776. @@ -13,9 +13,8 @@
  22777. Lesser General Public License for more details.
  22778. You should have received a copy of the GNU Lesser General Public
  22779. - License along with the GNU C Library; if not, write to the Free
  22780. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22781. - 02111-1307 USA. */
  22782. + License along with the GNU C Library; if not, see
  22783. + <http://www.gnu.org/licenses/>. */
  22784. #ifndef _GNU_VERSIONS_H
  22785. #define _GNU_VERSIONS_H 1
  22786. diff -Nur uClibc-0.9.33.2/include/grp.h uClibc/include/grp.h
  22787. --- uClibc-0.9.33.2/include/grp.h 2012-05-15 09:20:09.000000000 +0200
  22788. +++ uClibc/include/grp.h 2014-02-03 12:32:56.000000000 +0100
  22789. @@ -12,9 +12,8 @@
  22790. Lesser General Public License for more details.
  22791. You should have received a copy of the GNU Lesser General Public
  22792. - License along with the GNU C Library; if not, write to the Free
  22793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22794. - 02111-1307 USA. */
  22795. + License along with the GNU C Library; if not, see
  22796. + <http://www.gnu.org/licenses/>. */
  22797. /*
  22798. * POSIX Standard: 9.2.1 Group Database Access <grp.h>
  22799. @@ -92,7 +91,7 @@
  22800. cancellation point. But due to similarity with an POSIX interface
  22801. or due to the implementation it is a cancellation point and
  22802. therefore not marked with __THROW. */
  22803. -extern int putgrent (__const struct group *__restrict __p,
  22804. +extern int putgrent (const struct group *__restrict __p,
  22805. FILE *__restrict __f);
  22806. #endif
  22807. @@ -106,7 +105,7 @@
  22808. This function is a possible cancellation point and therefore not
  22809. marked with __THROW. */
  22810. -extern struct group *getgrnam (__const char *__name);
  22811. +extern struct group *getgrnam (const char *__name);
  22812. #if defined __USE_POSIX || defined __USE_MISC
  22813. @@ -149,7 +148,7 @@
  22814. This function is a possible cancellation point and therefore not
  22815. marked with __THROW. */
  22816. -extern int getgrnam_r (__const char *__restrict __name,
  22817. +extern int getgrnam_r (const char *__restrict __name,
  22818. struct group *__restrict __resultbuf,
  22819. char *__restrict __buffer, size_t __buflen,
  22820. struct group **__restrict __result);
  22821. @@ -187,7 +186,7 @@
  22822. cancellation point. But due to similarity with an POSIX interface
  22823. or due to the implementation it is a cancellation point and
  22824. therefore not marked with __THROW. */
  22825. -extern int getgrouplist (__const char *__user, __gid_t __group,
  22826. +extern int getgrouplist (const char *__user, __gid_t __group,
  22827. __gid_t *__groups, int *__ngroups);
  22828. #endif
  22829. @@ -195,7 +194,7 @@
  22830. #if defined __USE_BSD
  22831. /* Set the group set for the current user to GROUPS (N of them). */
  22832. -extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW;
  22833. +extern int setgroups (size_t __n, const __gid_t *__groups) __THROW;
  22834. libc_hidden_proto(setgroups)
  22835. /* Initialize the group set for the current user
  22836. @@ -206,7 +205,7 @@
  22837. cancellation point. But due to similarity with an POSIX interface
  22838. or due to the implementation it is a cancellation point and
  22839. therefore not marked with __THROW. */
  22840. -extern int initgroups (__const char *__user, __gid_t __group);
  22841. +extern int initgroups (const char *__user, __gid_t __group);
  22842. #endif /* Use BSD. */
  22843. diff -Nur uClibc-0.9.33.2/include/iconv.h uClibc/include/iconv.h
  22844. --- uClibc-0.9.33.2/include/iconv.h 2012-05-15 09:20:09.000000000 +0200
  22845. +++ uClibc/include/iconv.h 2014-02-03 12:32:56.000000000 +0100
  22846. @@ -12,9 +12,8 @@
  22847. Lesser General Public License for more details.
  22848. You should have received a copy of the GNU Lesser General Public
  22849. - License along with the GNU C Library; if not, write to the Free
  22850. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22851. - 02111-1307 USA. */
  22852. + License along with the GNU C Library; if not, see
  22853. + <http://www.gnu.org/licenses/>. */
  22854. #ifndef _ICONV_H
  22855. #define _ICONV_H 1
  22856. @@ -39,7 +38,7 @@
  22857. This function is a possible cancellation points and therefore not
  22858. marked with __THROW. */
  22859. -extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
  22860. +extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
  22861. /* Convert at most *INBYTESLEFT bytes from *INBUF according to the
  22862. code conversion algorithm specified by CD and place up to
  22863. diff -Nur uClibc-0.9.33.2/include/ieee754.h uClibc/include/ieee754.h
  22864. --- uClibc-0.9.33.2/include/ieee754.h 2012-05-15 09:20:09.000000000 +0200
  22865. +++ uClibc/include/ieee754.h 2014-02-03 12:32:56.000000000 +0100
  22866. @@ -12,9 +12,8 @@
  22867. Lesser General Public License for more details.
  22868. You should have received a copy of the GNU Lesser General Public
  22869. - License along with the GNU C Library; if not, write to the Free
  22870. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22871. - 02111-1307 USA. */
  22872. + License along with the GNU C Library; if not, see
  22873. + <http://www.gnu.org/licenses/>. */
  22874. #ifndef _IEEE754_H
  22875. diff -Nur uClibc-0.9.33.2/include/ifaddrs.h uClibc/include/ifaddrs.h
  22876. --- uClibc-0.9.33.2/include/ifaddrs.h 2012-05-15 09:20:09.000000000 +0200
  22877. +++ uClibc/include/ifaddrs.h 2014-02-03 12:32:56.000000000 +0100
  22878. @@ -13,9 +13,8 @@
  22879. Lesser General Public License for more details.
  22880. You should have received a copy of the GNU Lesser General Public
  22881. - License along with the GNU C Library; if not, write to the Free
  22882. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22883. - 02111-1307 USA. */
  22884. + License along with the GNU C Library; if not, see
  22885. + <http://www.gnu.org/licenses/>. */
  22886. #ifndef _IFADDRS_H
  22887. #define _IFADDRS_H 1
  22888. diff -Nur uClibc-0.9.33.2/include/inttypes.h uClibc/include/inttypes.h
  22889. --- uClibc-0.9.33.2/include/inttypes.h 2012-05-15 09:20:09.000000000 +0200
  22890. +++ uClibc/include/inttypes.h 2014-02-03 12:32:56.000000000 +0100
  22891. @@ -12,9 +12,8 @@
  22892. Lesser General Public License for more details.
  22893. You should have received a copy of the GNU Lesser General Public
  22894. - License along with the GNU C Library; if not, write to the Free
  22895. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22896. - 02111-1307 USA. */
  22897. + License along with the GNU C Library; if not, see
  22898. + <http://www.gnu.org/licenses/>. */
  22899. /*
  22900. * ISO C99: 7.8 Format conversion of integer types <inttypes.h>
  22901. @@ -304,21 +303,21 @@
  22902. __THROW __attribute__ ((__const__));
  22903. /* Like `strtol' but convert to `intmax_t'. */
  22904. -extern intmax_t strtoimax (__const char *__restrict __nptr,
  22905. +extern intmax_t strtoimax (const char *__restrict __nptr,
  22906. char **__restrict __endptr, int __base) __THROW;
  22907. /* Like `strtoul' but convert to `uintmax_t'. */
  22908. -extern uintmax_t strtoumax (__const char *__restrict __nptr,
  22909. +extern uintmax_t strtoumax (const char *__restrict __nptr,
  22910. char ** __restrict __endptr, int __base) __THROW;
  22911. #ifdef __UCLIBC_HAS_WCHAR__
  22912. /* Like `wcstol' but convert to `intmax_t'. */
  22913. -extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
  22914. +extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
  22915. __gwchar_t **__restrict __endptr, int __base)
  22916. __THROW;
  22917. /* Like `wcstoul' but convert to `uintmax_t'. */
  22918. -extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
  22919. +extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
  22920. __gwchar_t ** __restrict __endptr, int __base)
  22921. __THROW;
  22922. #endif
  22923. @@ -327,44 +326,44 @@
  22924. # if __WORDSIZE == 64
  22925. -extern long int __strtol_internal (__const char *__restrict __nptr,
  22926. +extern long int __strtol_internal (const char *__restrict __nptr,
  22927. char **__restrict __endptr,
  22928. int __base, int __group)
  22929. __THROW __nonnull ((1)) __wur;
  22930. /* Like `strtol' but convert to `intmax_t'. */
  22931. __extern_inline intmax_t
  22932. -__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
  22933. +__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
  22934. int base))
  22935. {
  22936. return __strtol_internal (nptr, endptr, base, 0);
  22937. }
  22938. -extern unsigned long int __strtoul_internal (__const char *
  22939. +extern unsigned long int __strtoul_internal (const char *
  22940. __restrict __nptr,
  22941. char ** __restrict __endptr,
  22942. int __base, int __group)
  22943. __THROW __nonnull ((1)) __wur;
  22944. /* Like `strtoul' but convert to `uintmax_t'. */
  22945. __extern_inline uintmax_t
  22946. -__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
  22947. +__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
  22948. int base))
  22949. {
  22950. return __strtoul_internal (nptr, endptr, base, 0);
  22951. }
  22952. -extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
  22953. +extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
  22954. __gwchar_t **__restrict __endptr,
  22955. int __base, int __group)
  22956. __THROW __nonnull ((1)) __wur;
  22957. /* Like `wcstol' but convert to `intmax_t'. */
  22958. __extern_inline intmax_t
  22959. -__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
  22960. +__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
  22961. __gwchar_t **__restrict endptr, int base))
  22962. {
  22963. return __wcstol_internal (nptr, endptr, base, 0);
  22964. }
  22965. -extern unsigned long int __wcstoul_internal (__const __gwchar_t *
  22966. +extern unsigned long int __wcstoul_internal (const __gwchar_t *
  22967. __restrict __nptr,
  22968. __gwchar_t **
  22969. __restrict __endptr,
  22970. @@ -372,7 +371,7 @@
  22971. __THROW __nonnull ((1)) __wur;
  22972. /* Like `wcstoul' but convert to `uintmax_t'. */
  22973. __extern_inline uintmax_t
  22974. -__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
  22975. +__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
  22976. __gwchar_t **__restrict endptr, int base))
  22977. {
  22978. return __wcstoul_internal (nptr, endptr, base, 0);
  22979. @@ -381,20 +380,20 @@
  22980. # else /* __WORDSIZE == 32 */
  22981. __extension__
  22982. -extern long long int __strtoll_internal (__const char *__restrict __nptr,
  22983. +extern long long int __strtoll_internal (const char *__restrict __nptr,
  22984. char **__restrict __endptr,
  22985. int __base, int __group)
  22986. __THROW __nonnull ((1)) __wur;
  22987. /* Like `strtol' but convert to `intmax_t'. */
  22988. __extern_inline intmax_t
  22989. -__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
  22990. +__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
  22991. int base))
  22992. {
  22993. return __strtoll_internal (nptr, endptr, base, 0);
  22994. }
  22995. __extension__
  22996. -extern unsigned long long int __strtoull_internal (__const char *
  22997. +extern unsigned long long int __strtoull_internal (const char *
  22998. __restrict __nptr,
  22999. char **
  23000. __restrict __endptr,
  23001. @@ -403,21 +402,21 @@
  23002. __THROW __nonnull ((1)) __wur;
  23003. /* Like `strtoul' but convert to `uintmax_t'. */
  23004. __extern_inline uintmax_t
  23005. -__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
  23006. +__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
  23007. int base))
  23008. {
  23009. return __strtoull_internal (nptr, endptr, base, 0);
  23010. }
  23011. __extension__
  23012. -extern long long int __wcstoll_internal (__const __gwchar_t *
  23013. +extern long long int __wcstoll_internal (const __gwchar_t *
  23014. __restrict __nptr,
  23015. __gwchar_t **__restrict __endptr,
  23016. int __base, int __group)
  23017. __THROW __nonnull ((1)) __wur;
  23018. /* Like `wcstol' but convert to `intmax_t'. */
  23019. __extern_inline intmax_t
  23020. -__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
  23021. +__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
  23022. __gwchar_t **__restrict endptr, int base))
  23023. {
  23024. return __wcstoll_internal (nptr, endptr, base, 0);
  23025. @@ -425,7 +424,7 @@
  23026. __extension__
  23027. -extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
  23028. +extern unsigned long long int __wcstoull_internal (const __gwchar_t *
  23029. __restrict __nptr,
  23030. __gwchar_t **
  23031. __restrict __endptr,
  23032. @@ -434,7 +433,7 @@
  23033. __THROW __nonnull ((1)) __wur;
  23034. /* Like `wcstoul' but convert to `uintmax_t'. */
  23035. __extern_inline uintmax_t
  23036. -__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
  23037. +__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
  23038. __gwchar_t **__restrict endptr, int base))
  23039. {
  23040. return __wcstoull_internal (nptr, endptr, base, 0);
  23041. diff -Nur uClibc-0.9.33.2/include/langinfo.h uClibc/include/langinfo.h
  23042. --- uClibc-0.9.33.2/include/langinfo.h 2012-05-15 09:20:09.000000000 +0200
  23043. +++ uClibc/include/langinfo.h 2014-02-03 12:32:56.000000000 +0100
  23044. @@ -13,9 +13,8 @@
  23045. Lesser General Public License for more details.
  23046. You should have received a copy of the GNU Lesser General Public
  23047. - License along with the GNU C Library; if not, write to the Free
  23048. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23049. - 02111-1307 USA. */
  23050. + License along with the GNU C Library; if not, see
  23051. + <http://www.gnu.org/licenses/>. */
  23052. #ifndef _LANGINFO_H
  23053. #define _LANGINFO_H 1
  23054. diff -Nur uClibc-0.9.33.2/include/libc-internal.h uClibc/include/libc-internal.h
  23055. --- uClibc-0.9.33.2/include/libc-internal.h 2012-05-15 09:20:09.000000000 +0200
  23056. +++ uClibc/include/libc-internal.h 2014-02-03 12:32:56.000000000 +0100
  23057. @@ -12,9 +12,8 @@
  23058. Lesser General Public License for more details.
  23059. You should have received a copy of the GNU Lesser General Public
  23060. - License along with the GNU C Library; if not, write to the Free
  23061. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23062. - 02111-1307 USA. */
  23063. + License along with the GNU C Library; if not, see
  23064. + <http://www.gnu.org/licenses/>. */
  23065. #ifndef _LIBC_INTERNAL_H
  23066. #define _LIBC_INTERNAL_H 1
  23067. @@ -29,6 +28,9 @@
  23068. #ifdef __UCLIBC_HAS_TLS__
  23069. # define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec")))
  23070. +#else
  23071. +# define attribute_tls_model_ie
  23072. +# define __thread
  23073. #endif
  23074. /* Pull in things like __attribute_used__ */
  23075. @@ -44,12 +46,12 @@
  23076. # include <stddef.h>
  23077. /* sources are built w/ _GNU_SOURCE, this gets undefined */
  23078. -#ifdef __USE_GNU
  23079. -extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
  23080. -libc_hidden_proto(__xpg_strerror_r)
  23081. -#else
  23082. +#if defined __USE_XOPEN2K && !defined __USE_GNU
  23083. extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen);
  23084. libc_hidden_proto(__glibc_strerror_r)
  23085. +#else
  23086. +extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
  23087. +libc_hidden_proto(__xpg_strerror_r)
  23088. #endif
  23089. /* #include <pthread.h> */
  23090. @@ -70,6 +72,10 @@
  23091. libc_hidden_proto(__chk_fail)
  23092. # endif
  23093. +# ifdef __UCLIBC_HAS_SSP__
  23094. +extern void __stack_chk_fail(void) attribute_noreturn __cold;
  23095. +# endif
  23096. +
  23097. # endif /* IS_IN_libc */
  23098. #endif /* __ASSEMBLER__ */
  23099. diff -Nur uClibc-0.9.33.2/include/libc-symbols.h uClibc/include/libc-symbols.h
  23100. --- uClibc-0.9.33.2/include/libc-symbols.h 2012-05-15 09:20:09.000000000 +0200
  23101. +++ uClibc/include/libc-symbols.h 2014-02-03 12:32:56.000000000 +0100
  23102. @@ -15,9 +15,8 @@
  23103. Lesser General Public License for more details.
  23104. You should have received a copy of the GNU Lesser General Public
  23105. - License along with the GNU C Library; if not, write to the Free
  23106. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23107. - 02111-1307 USA. */
  23108. + License along with the GNU C Library; if not, see
  23109. + <http://www.gnu.org/licenses/>. */
  23110. #ifndef _LIBC_SYMBOLS_H
  23111. #define _LIBC_SYMBOLS_H 1
  23112. @@ -196,12 +195,12 @@
  23113. # define _strong_alias_untyped(name, aliasname) \
  23114. extern __typeof (aliasname) aliasname __attribute__ ((alias (#name)));
  23115. +# ifdef HAVE_WEAK_SYMBOLS
  23116. +
  23117. /* This comes between the return type and function name in
  23118. a function definition to make that definition weak. */
  23119. -# define weak_function __attribute__ ((weak))
  23120. -# define weak_const_function __attribute__ ((weak, __const__))
  23121. -
  23122. -# ifdef HAVE_WEAK_SYMBOLS
  23123. +# define weak_function __attribute__ ((weak))
  23124. +# define weak_const_function __attribute__ ((weak, __const__))
  23125. /* Define ALIASNAME as a weak alias for NAME.
  23126. If weak aliases are not available, this defines a strong alias. */
  23127. @@ -215,6 +214,9 @@
  23128. # else
  23129. +# define weak_function /* empty */
  23130. +# define weak_const_function __attribute__ ((__const__))
  23131. +
  23132. # define weak_alias(name, aliasname) strong_alias(name, aliasname)
  23133. # define weak_extern(symbol) /* Nothing. */
  23134. diff -Nur uClibc-0.9.33.2/include/libgen.h uClibc/include/libgen.h
  23135. --- uClibc-0.9.33.2/include/libgen.h 2012-05-15 09:20:09.000000000 +0200
  23136. +++ uClibc/include/libgen.h 2014-02-03 12:32:56.000000000 +0100
  23137. @@ -12,9 +12,8 @@
  23138. Lesser General Public License for more details.
  23139. You should have received a copy of the GNU Lesser General Public
  23140. - License along with the GNU C Library; if not, write to the Free
  23141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23142. - 02111-1307 USA. */
  23143. + License along with the GNU C Library; if not, see
  23144. + <http://www.gnu.org/licenses/>. */
  23145. #ifndef _LIBGEN_H
  23146. #define _LIBGEN_H 1
  23147. diff -Nur uClibc-0.9.33.2/include/libintl.h uClibc/include/libintl.h
  23148. --- uClibc-0.9.33.2/include/libintl.h 2012-05-15 09:20:09.000000000 +0200
  23149. +++ uClibc/include/libintl.h 2014-02-03 12:32:56.000000000 +0100
  23150. @@ -14,15 +14,16 @@
  23151. Lesser General Public License for more details.
  23152. You should have received a copy of the GNU Lesser General Public
  23153. - License along with the GNU C Library; if not, write to the Free
  23154. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23155. - 02111-1307 USA. */
  23156. + License along with the GNU C Library; if not, see
  23157. + <http://www.gnu.org/licenses/>. */
  23158. #ifndef _LIBINTL_H
  23159. #define _LIBINTL_H 1
  23160. #include <features.h>
  23161. +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
  23162. +
  23163. /* We define an additional symbol to signal that we use the GNU
  23164. implementation of gettext. */
  23165. #define __USE_GNU_GETTEXT 1
  23166. @@ -37,46 +38,46 @@
  23167. /* Look up MSGID in the current default message catalog for the current
  23168. LC_MESSAGES locale. If not found, returns MSGID itself (the default
  23169. text). */
  23170. -extern char *gettext (__const char *__msgid)
  23171. +extern char *gettext (const char *__msgid)
  23172. __THROW __attribute_format_arg__ (1);
  23173. /* Look up MSGID in the DOMAINNAME message catalog for the current
  23174. LC_MESSAGES locale. */
  23175. -extern char *dgettext (__const char *__domainname, __const char *__msgid)
  23176. +extern char *dgettext (const char *__domainname, const char *__msgid)
  23177. __THROW __attribute_format_arg__ (2);
  23178. #if 0 /* uClibc: disabled */
  23179. -extern char *__dgettext (__const char *__domainname, __const char *__msgid)
  23180. +extern char *__dgettext (const char *__domainname, const char *__msgid)
  23181. __THROW __attribute_format_arg__ (2);
  23182. #endif
  23183. /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
  23184. locale. */
  23185. -extern char *dcgettext (__const char *__domainname,
  23186. - __const char *__msgid, int __category)
  23187. +extern char *dcgettext (const char *__domainname,
  23188. + const char *__msgid, int __category)
  23189. __THROW __attribute_format_arg__ (2);
  23190. #if 0 /* uClibc: disabled */
  23191. -extern char *__dcgettext (__const char *__domainname,
  23192. - __const char *__msgid, int __category)
  23193. +extern char *__dcgettext (const char *__domainname,
  23194. + const char *__msgid, int __category)
  23195. __THROW __attribute_format_arg__ (2);
  23196. #endif
  23197. /* Similar to `gettext' but select the plural form corresponding to the
  23198. number N. */
  23199. -extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
  23200. +extern char *ngettext (const char *__msgid1, const char *__msgid2,
  23201. unsigned long int __n)
  23202. __THROW __attribute_format_arg__ (1) __attribute_format_arg__ (2);
  23203. /* Similar to `dgettext' but select the plural form corresponding to the
  23204. number N. */
  23205. -extern char *dngettext (__const char *__domainname, __const char *__msgid1,
  23206. - __const char *__msgid2, unsigned long int __n)
  23207. +extern char *dngettext (const char *__domainname, const char *__msgid1,
  23208. + const char *__msgid2, unsigned long int __n)
  23209. __THROW __attribute_format_arg__ (2) __attribute_format_arg__ (3);
  23210. /* Similar to `dcgettext' but select the plural form corresponding to the
  23211. number N. */
  23212. -extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
  23213. - __const char *__msgid2, unsigned long int __n,
  23214. +extern char *dcngettext (const char *__domainname, const char *__msgid1,
  23215. + const char *__msgid2, unsigned long int __n,
  23216. int __category)
  23217. __THROW __attribute_format_arg__ (2) __attribute_format_arg__ (3);
  23218. @@ -84,17 +85,17 @@
  23219. /* Set the current default message catalog to DOMAINNAME.
  23220. If DOMAINNAME is null, return the current default.
  23221. If DOMAINNAME is "", reset to the default of "messages". */
  23222. -extern char *textdomain (__const char *__domainname) __THROW;
  23223. +extern char *textdomain (const char *__domainname) __THROW;
  23224. /* Specify that the DOMAINNAME message catalog will be found
  23225. in DIRNAME rather than in the system locale data base. */
  23226. -extern char *bindtextdomain (__const char *__domainname,
  23227. - __const char *__dirname) __THROW;
  23228. +extern char *bindtextdomain (const char *__domainname,
  23229. + const char *__dirname) __THROW;
  23230. /* Specify the character encoding in which the messages from the
  23231. DOMAINNAME message catalog will be returned. */
  23232. -extern char *bind_textdomain_codeset (__const char *__domainname,
  23233. - __const char *__codeset) __THROW;
  23234. +extern char *bind_textdomain_codeset (const char *__domainname,
  23235. + const char *__codeset) __THROW;
  23236. /* Optimized version of the function above. */
  23237. @@ -125,4 +126,15 @@
  23238. __END_DECLS
  23239. +#else
  23240. +
  23241. +#define gettext(msgid) ((const char *) (msgid))
  23242. +
  23243. +#endif /* __UCLIBC_HAS_GETTEXT_AWARENESS__ */
  23244. +
  23245. +#ifdef _LIBC
  23246. +# define _(x) gettext(x)
  23247. +# define N_(x) x
  23248. +#endif
  23249. +
  23250. #endif /* libintl.h */
  23251. diff -Nur uClibc-0.9.33.2/include/limits.h uClibc/include/limits.h
  23252. --- uClibc-0.9.33.2/include/limits.h 2012-05-15 09:20:09.000000000 +0200
  23253. +++ uClibc/include/limits.h 2014-02-03 12:32:56.000000000 +0100
  23254. @@ -13,9 +13,8 @@
  23255. Lesser General Public License for more details.
  23256. You should have received a copy of the GNU Lesser General Public
  23257. - License along with the GNU C Library; if not, write to the Free
  23258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23259. - 02111-1307 USA. */
  23260. + License along with the GNU C Library; if not, see
  23261. + <http://www.gnu.org/licenses/>. */
  23262. /*
  23263. * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h>
  23264. diff -Nur uClibc-0.9.33.2/include/link.h uClibc/include/link.h
  23265. --- uClibc-0.9.33.2/include/link.h 2012-05-15 09:20:09.000000000 +0200
  23266. +++ uClibc/include/link.h 2014-02-03 12:32:56.000000000 +0100
  23267. @@ -14,9 +14,8 @@
  23268. Lesser General Public License for more details.
  23269. You should have received a copy of the GNU Lesser General Public
  23270. - License along with the GNU C Library; if not, write to the Free
  23271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23272. - 02111-1307 USA. */
  23273. + License along with the GNU C Library; if not, see
  23274. + <http://www.gnu.org/licenses/>. */
  23275. #ifndef _LINK_H
  23276. #define _LINK_H 1
  23277. @@ -110,7 +109,7 @@
  23278. char *l_name; /* Absolute file name object was found in. */
  23279. ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */
  23280. struct link_map *l_next, *l_prev; /* Chain of loaded objects. */
  23281. -
  23282. +#ifdef _LIBC
  23283. #if defined(USE_TLS) && USE_TLS
  23284. /* Thread-local storage related info. */
  23285. @@ -134,6 +133,7 @@
  23286. /* Nonzero if _dl_init_static_tls should be called for this module */
  23287. unsigned int l_need_tls_init:1;
  23288. #endif
  23289. +#endif
  23290. };
  23291. #ifdef __USE_GNU
  23292. diff -Nur uClibc-0.9.33.2/include/locale.h uClibc/include/locale.h
  23293. --- uClibc-0.9.33.2/include/locale.h 2012-05-15 09:20:09.000000000 +0200
  23294. +++ uClibc/include/locale.h 2014-02-03 12:32:56.000000000 +0100
  23295. @@ -12,9 +12,8 @@
  23296. Lesser General Public License for more details.
  23297. You should have received a copy of the GNU Lesser General Public
  23298. - License along with the GNU C Library; if not, write to the Free
  23299. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23300. - 02111-1307 USA. */
  23301. + License along with the GNU C Library; if not, see
  23302. + <http://www.gnu.org/licenses/>. */
  23303. /*
  23304. * ISO C99 Standard: 7.11 Localization <locale.h>
  23305. @@ -124,7 +123,7 @@
  23306. /* Set and/or return the current locale. */
  23307. -extern char *setlocale (int __category, __const char *__locale) __THROW;
  23308. +extern char *setlocale (int __category, const char *__locale) __THROW;
  23309. /* Return the numeric/monetary information for the current locale. */
  23310. extern struct lconv *localeconv (void) __THROW;
  23311. @@ -133,7 +132,7 @@
  23312. __END_NAMESPACE_STD
  23313. -#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_LOCALE__
  23314. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  23315. /* The concept of one static locale per category is not very well
  23316. thought out. Many applications will need to process its data using
  23317. information from several different locales. Another application is
  23318. @@ -145,19 +144,14 @@
  23319. Attention: all these functions are *not* standardized in any form.
  23320. This is a proof-of-concept implementation. */
  23321. -#ifdef __UCLIBC_HAS_XLOCALE__
  23322. /* Get locale datatype definition. */
  23323. # include <xlocale.h>
  23324. -#endif
  23325. -
  23326. -/* POSIX 2008 makes locale_t official. */
  23327. -typedef __locale_t locale_t;
  23328. /* Return a reference to a data structure representing a set of locale
  23329. datasets. Unlike for the CATEGORY parameter for `setlocale' the
  23330. CATEGORY_MASK parameter here uses a single bit for each category,
  23331. made by OR'ing together LC_*_MASK bits above. */
  23332. -extern __locale_t newlocale (int __category_mask, __const char *__locale,
  23333. +extern __locale_t newlocale (int __category_mask, const char *__locale,
  23334. __locale_t __base) __THROW;
  23335. libc_hidden_proto(newlocale)
  23336. diff -Nur uClibc-0.9.33.2/include/malloc.h uClibc/include/malloc.h
  23337. --- uClibc-0.9.33.2/include/malloc.h 2012-05-15 09:20:09.000000000 +0200
  23338. +++ uClibc/include/malloc.h 2014-02-03 12:32:56.000000000 +0100
  23339. @@ -13,9 +13,8 @@
  23340. Lesser General Public License for more details.
  23341. You should have received a copy of the GNU Lesser General Public
  23342. - License along with the GNU C Library; if not, write to the Free
  23343. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23344. - 02111-1307 USA. */
  23345. + License along with the GNU C Library; if not, see
  23346. + <http://www.gnu.org/licenses/>. */
  23347. #ifndef _MALLOC_H
  23348. #define _MALLOC_H 1
  23349. @@ -124,9 +123,12 @@
  23350. /* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
  23351. extern __malloc_ptr_t memalign __MALLOC_P ((size_t __alignment, size_t __size));
  23352. +libc_hidden_proto(memalign)
  23353. +#ifdef __UCLIBC_SUSV2_LEGACY__
  23354. /* Allocate SIZE bytes on a page boundary. */
  23355. extern __malloc_ptr_t valloc __MALLOC_P ((size_t __size)) __attribute_malloc__;
  23356. +#endif
  23357. #ifdef __MALLOC_STANDARD__
  23358. diff -Nur uClibc-0.9.33.2/include/math.h uClibc/include/math.h
  23359. --- uClibc-0.9.33.2/include/math.h 2012-05-15 09:20:09.000000000 +0200
  23360. +++ uClibc/include/math.h 2014-02-03 12:32:56.000000000 +0100
  23361. @@ -14,9 +14,8 @@
  23362. Lesser General Public License for more details.
  23363. You should have received a copy of the GNU Lesser General Public
  23364. - License along with the GNU C Library; if not, write to the Free
  23365. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23366. - 02111-1307 USA. */
  23367. + License along with the GNU C Library; if not, see
  23368. + <http://www.gnu.org/licenses/>. */
  23369. /*
  23370. * ISO C99 Standard: 7.12 Mathematics <math.h>
  23371. diff -Nur uClibc-0.9.33.2/include/memory.h uClibc/include/memory.h
  23372. --- uClibc-0.9.33.2/include/memory.h 2012-05-15 09:20:09.000000000 +0200
  23373. +++ uClibc/include/memory.h 2014-02-03 12:32:56.000000000 +0100
  23374. @@ -12,9 +12,8 @@
  23375. Lesser General Public License for more details.
  23376. You should have received a copy of the GNU Lesser General Public
  23377. - License along with the GNU C Library; if not, write to the Free
  23378. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23379. - 02111-1307 USA. */
  23380. + License along with the GNU C Library; if not, see
  23381. + <http://www.gnu.org/licenses/>. */
  23382. /*
  23383. * SVID
  23384. diff -Nur uClibc-0.9.33.2/include/mntent.h uClibc/include/mntent.h
  23385. --- uClibc-0.9.33.2/include/mntent.h 2012-05-15 09:20:09.000000000 +0200
  23386. +++ uClibc/include/mntent.h 2014-02-03 12:32:56.000000000 +0100
  23387. @@ -13,9 +13,8 @@
  23388. Lesser General Public License for more details.
  23389. You should have received a copy of the GNU Lesser General Public
  23390. - License along with the GNU C Library; if not, write to the Free
  23391. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23392. - 02111-1307 USA. */
  23393. + License along with the GNU C Library; if not, see
  23394. + <http://www.gnu.org/licenses/>. */
  23395. #ifndef _MNTENT_H
  23396. #define _MNTENT_H 1
  23397. @@ -64,7 +63,7 @@
  23398. /* Prepare to begin reading and/or writing mount table entries from the
  23399. beginning of FILE. MODE is as for `fopen'. */
  23400. -extern FILE *setmntent (__const char *__file, __const char *__mode) __THROW;
  23401. +extern FILE *setmntent (const char *__file, const char *__mode) __THROW;
  23402. libc_hidden_proto(setmntent)
  23403. /* Read one mount table entry from STREAM. Returns a pointer to storage
  23404. @@ -84,7 +83,7 @@
  23405. /* Write the mount table entry described by MNT to STREAM.
  23406. Return zero on success, nonzero on failure. */
  23407. extern int addmntent (FILE *__restrict __stream,
  23408. - __const struct mntent *__restrict __mnt) __THROW;
  23409. + const struct mntent *__restrict __mnt) __THROW;
  23410. /* Close a stream opened with `setmntent'. */
  23411. extern int endmntent (FILE *__stream) __THROW;
  23412. @@ -92,8 +91,8 @@
  23413. /* Search MNT->mnt_opts for an option matching OPT.
  23414. Returns the address of the substring, or null if none found. */
  23415. -extern char *hasmntopt (__const struct mntent *__mnt,
  23416. - __const char *__opt) __THROW;
  23417. +extern char *hasmntopt (const struct mntent *__mnt,
  23418. + const char *__opt) __THROW;
  23419. __END_DECLS
  23420. diff -Nur uClibc-0.9.33.2/include/mqueue.h uClibc/include/mqueue.h
  23421. --- uClibc-0.9.33.2/include/mqueue.h 2012-05-15 09:20:09.000000000 +0200
  23422. +++ uClibc/include/mqueue.h 2014-02-03 12:32:56.000000000 +0100
  23423. @@ -12,9 +12,8 @@
  23424. Lesser General Public License for more details.
  23425. You should have received a copy of the GNU Lesser General Public
  23426. - License along with the GNU C Library; if not, write to the Free
  23427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23428. - 02111-1307 USA. */
  23429. + License along with the GNU C Library; if not, see
  23430. + <http://www.gnu.org/licenses/>. */
  23431. #ifndef _MQUEUE_H
  23432. #define _MQUEUE_H 1
  23433. diff -Nur uClibc-0.9.33.2/include/net/ethernet.h uClibc/include/net/ethernet.h
  23434. --- uClibc-0.9.33.2/include/net/ethernet.h 2012-05-15 09:20:09.000000000 +0200
  23435. +++ uClibc/include/net/ethernet.h 2014-02-03 12:32:56.000000000 +0100
  23436. @@ -12,9 +12,8 @@
  23437. Lesser General Public License for more details.
  23438. You should have received a copy of the GNU Lesser General Public
  23439. - License along with the GNU C Library; if not, write to the Free
  23440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23441. - 02111-1307 USA. */
  23442. + License along with the GNU C Library; if not, see
  23443. + <http://www.gnu.org/licenses/>. */
  23444. /* Based on the FreeBSD version of this file. Curiously, that file
  23445. lacks a copyright in the header. */
  23446. diff -Nur uClibc-0.9.33.2/include/net/if_arp.h uClibc/include/net/if_arp.h
  23447. --- uClibc-0.9.33.2/include/net/if_arp.h 2012-05-15 09:20:09.000000000 +0200
  23448. +++ uClibc/include/net/if_arp.h 2014-02-03 12:32:56.000000000 +0100
  23449. @@ -14,9 +14,8 @@
  23450. Lesser General Public License for more details.
  23451. You should have received a copy of the GNU Lesser General Public
  23452. - License along with the GNU C Library; if not, write to the Free
  23453. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23454. - 02111-1307 USA. */
  23455. + License along with the GNU C Library; if not, see
  23456. + <http://www.gnu.org/licenses/>. */
  23457. /* Based on the 4.4BSD and Linux version of this file. */
  23458. diff -Nur uClibc-0.9.33.2/include/net/if.h uClibc/include/net/if.h
  23459. --- uClibc-0.9.33.2/include/net/if.h 2012-05-15 09:20:09.000000000 +0200
  23460. +++ uClibc/include/net/if.h 2014-02-03 12:32:56.000000000 +0100
  23461. @@ -13,9 +13,8 @@
  23462. Lesser General Public License for more details.
  23463. You should have received a copy of the GNU Lesser General Public
  23464. - License along with the GNU C Library; if not, write to the Free
  23465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23466. - 02111-1307 USA. */
  23467. + License along with the GNU C Library; if not, see
  23468. + <http://www.gnu.org/licenses/>. */
  23469. #ifndef _NET_IF_H
  23470. #define _NET_IF_H 1
  23471. @@ -191,7 +190,7 @@
  23472. __BEGIN_DECLS
  23473. /* Convert an interface name to an index, and vice versa. */
  23474. -extern unsigned int if_nametoindex (__const char *__ifname) __THROW;
  23475. +extern unsigned int if_nametoindex (const char *__ifname) __THROW;
  23476. libc_hidden_proto(if_nametoindex)
  23477. extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __THROW;
  23478. diff -Nur uClibc-0.9.33.2/include/net/if_packet.h uClibc/include/net/if_packet.h
  23479. --- uClibc-0.9.33.2/include/net/if_packet.h 2012-05-15 09:20:09.000000000 +0200
  23480. +++ uClibc/include/net/if_packet.h 2014-02-03 12:32:56.000000000 +0100
  23481. @@ -13,9 +13,8 @@
  23482. Lesser General Public License for more details.
  23483. You should have received a copy of the GNU Lesser General Public
  23484. - License along with the GNU C Library; if not, write to the Free
  23485. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23486. - 02111-1307 USA. */
  23487. + License along with the GNU C Library; if not, see
  23488. + <http://www.gnu.org/licenses/>. */
  23489. #ifndef __IF_PACKET_H
  23490. #define __IF_PACKET_H
  23491. diff -Nur uClibc-0.9.33.2/include/net/if_shaper.h uClibc/include/net/if_shaper.h
  23492. --- uClibc-0.9.33.2/include/net/if_shaper.h 2012-05-15 09:20:09.000000000 +0200
  23493. +++ uClibc/include/net/if_shaper.h 2014-02-03 12:32:56.000000000 +0100
  23494. @@ -12,9 +12,8 @@
  23495. Lesser General Public License for more details.
  23496. You should have received a copy of the GNU Lesser General Public
  23497. - License along with the GNU C Library; if not, write to the Free
  23498. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23499. - 02111-1307 USA. */
  23500. + License along with the GNU C Library; if not, see
  23501. + <http://www.gnu.org/licenses/>. */
  23502. #ifndef _NET_IF_SHAPER_H
  23503. #define _NET_IF_SHAPER_H 1
  23504. diff -Nur uClibc-0.9.33.2/include/net/if_slip.h uClibc/include/net/if_slip.h
  23505. --- uClibc-0.9.33.2/include/net/if_slip.h 2012-05-15 09:20:09.000000000 +0200
  23506. +++ uClibc/include/net/if_slip.h 2014-02-03 12:32:56.000000000 +0100
  23507. @@ -12,9 +12,8 @@
  23508. Lesser General Public License for more details.
  23509. You should have received a copy of the GNU Lesser General Public
  23510. - License along with the GNU C Library; if not, write to the Free
  23511. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23512. - 02111-1307 USA. */
  23513. + License along with the GNU C Library; if not, see
  23514. + <http://www.gnu.org/licenses/>. */
  23515. #ifndef _NET_IF_SLIP_H
  23516. #define _NET_IF_SLIP_H 1
  23517. diff -Nur uClibc-0.9.33.2/include/net/route.h uClibc/include/net/route.h
  23518. --- uClibc-0.9.33.2/include/net/route.h 2012-05-15 09:20:09.000000000 +0200
  23519. +++ uClibc/include/net/route.h 2014-02-03 12:32:56.000000000 +0100
  23520. @@ -12,9 +12,8 @@
  23521. Lesser General Public License for more details.
  23522. You should have received a copy of the GNU Lesser General Public
  23523. - License along with the GNU C Library; if not, write to the Free
  23524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23525. - 02111-1307 USA. */
  23526. + License along with the GNU C Library; if not, see
  23527. + <http://www.gnu.org/licenses/>. */
  23528. /* Based on the 4.4BSD and Linux version of this file. */
  23529. diff -Nur uClibc-0.9.33.2/include/netax25/ax25.h uClibc/include/netax25/ax25.h
  23530. --- uClibc-0.9.33.2/include/netax25/ax25.h 2012-05-15 09:20:09.000000000 +0200
  23531. +++ uClibc/include/netax25/ax25.h 2014-02-03 12:32:56.000000000 +0100
  23532. @@ -12,9 +12,8 @@
  23533. Lesser General Public License for more details.
  23534. You should have received a copy of the GNU Lesser General Public
  23535. - License along with the GNU C Library; if not, write to the Free
  23536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23537. - 02111-1307 USA. */
  23538. + License along with the GNU C Library; if not, see
  23539. + <http://www.gnu.org/licenses/>. */
  23540. #ifndef _NETAX25_AX25_H
  23541. #define _NETAX25_AX25_H 1
  23542. diff -Nur uClibc-0.9.33.2/include/netdb.h uClibc/include/netdb.h
  23543. --- uClibc-0.9.33.2/include/netdb.h 2012-05-15 09:20:09.000000000 +0200
  23544. +++ uClibc/include/netdb.h 2014-02-03 12:32:56.000000000 +0100
  23545. @@ -1,4 +1,4 @@
  23546. -/* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
  23547. +/* Copyright (C) 1996-2002, 2003, 2004, 2009 Free Software Foundation, Inc.
  23548. This file is part of the GNU C Library.
  23549. The GNU C Library is free software; you can redistribute it and/or
  23550. @@ -12,9 +12,8 @@
  23551. Lesser General Public License for more details.
  23552. You should have received a copy of the GNU Lesser General Public
  23553. - License along with the GNU C Library; if not, write to the Free
  23554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23555. - 02111-1307 USA. */
  23556. + License along with the GNU C Library; if not, see
  23557. + <http://www.gnu.org/licenses/>. */
  23558. /* All data returned by the network data base library are supplied in
  23559. host order and returned in network order (suitable for use in
  23560. @@ -59,6 +58,11 @@
  23561. /* Function to get address of global `h_errno' variable. */
  23562. extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
  23563. +#ifdef _LIBC
  23564. +# if !defined(__UCLIBC_HAS_TLS__) && !defined(__UCLIBC_HAS_THREADS__)
  23565. +extern int weak_const_function *__h_errno_location(void);
  23566. +# endif
  23567. +#endif
  23568. libc_hidden_proto(__h_errno_location)
  23569. /* Macros for accessing h_errno from inside libc. */
  23570. @@ -88,8 +92,6 @@
  23571. #endif /* _LIBC */
  23572. /* Possible values left in `h_errno'. */
  23573. -#define NETDB_INTERNAL -1 /* See errno. */
  23574. -#define NETDB_SUCCESS 0 /* No problem. */
  23575. #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */
  23576. #define TRY_AGAIN 2 /* Non-Authoritative Host not found,
  23577. or SERVERFAIL. */
  23578. @@ -97,7 +99,11 @@
  23579. NOTIMP. */
  23580. #define NO_DATA 4 /* Valid name, no data record of requested
  23581. type. */
  23582. -#define NO_ADDRESS NO_DATA /* No address, look for MX record. */
  23583. +#if defined __USE_MISC || defined __USE_GNU
  23584. +# define NETDB_INTERNAL -1 /* See errno. */
  23585. +# define NETDB_SUCCESS 0 /* No problem. */
  23586. +# define NO_ADDRESS NO_DATA /* No address, look for MX record. */
  23587. +#endif
  23588. #ifdef __USE_XOPEN2K
  23589. /* Highest reserved Internet port number. */
  23590. @@ -109,13 +115,15 @@
  23591. # define SCOPE_DELIMITER '%'
  23592. #endif
  23593. +#if defined __USE_MISC || defined __USE_GNU
  23594. /* Print error indicated by `h_errno' variable on standard error. STR
  23595. if non-null is printed before the error string. */
  23596. -extern void herror (__const char *__str) __THROW;
  23597. +extern void herror (const char *__str) __THROW;
  23598. libc_hidden_proto(herror)
  23599. /* Return string associated with error ERR_NUM. */
  23600. -extern __const char *hstrerror (int __err_num) __THROW;
  23601. +extern const char *hstrerror (int __err_num) __THROW;
  23602. +#endif
  23603. /* Description of data base entry for a single host. */
  23604. @@ -126,7 +134,9 @@
  23605. int h_addrtype; /* Host address type. */
  23606. int h_length; /* Length of address. */
  23607. char **h_addr_list; /* List of addresses from name server. */
  23608. -#define h_addr h_addr_list[0] /* Address, for backward compatibility. */
  23609. +#if defined __USE_MISC || defined __USE_GNU
  23610. +# define h_addr h_addr_list[0] /* Address, for backward compatibility.*/
  23611. +#endif
  23612. };
  23613. /* Open host data base files and mark them as staying open even after
  23614. @@ -154,7 +164,7 @@
  23615. This function is a possible cancellation point and therefore not
  23616. marked with __THROW. */
  23617. -extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len,
  23618. +extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
  23619. int __type);
  23620. libc_hidden_proto(gethostbyaddr)
  23621. @@ -162,7 +172,7 @@
  23622. This function is a possible cancellation point and therefore not
  23623. marked with __THROW. */
  23624. -extern struct hostent *gethostbyname (__const char *__name);
  23625. +extern struct hostent *gethostbyname (const char *__name);
  23626. libc_hidden_proto(gethostbyname)
  23627. #ifdef __USE_MISC
  23628. @@ -174,7 +184,7 @@
  23629. cancellation point. But due to similarity with an POSIX interface
  23630. or due to the implementation it is a cancellation point and
  23631. therefore not marked with __THROW. */
  23632. -extern struct hostent *gethostbyname2 (__const char *__name, int __af);
  23633. +extern struct hostent *gethostbyname2 (const char *__name, int __af);
  23634. libc_hidden_proto(gethostbyname2)
  23635. /* Reentrant versions of the functions above. The additional
  23636. @@ -193,7 +203,7 @@
  23637. int *__restrict __h_errnop);
  23638. libc_hidden_proto(gethostent_r)
  23639. -extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len,
  23640. +extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
  23641. int __type,
  23642. struct hostent *__restrict __result_buf,
  23643. char *__restrict __buf, size_t __buflen,
  23644. @@ -201,14 +211,14 @@
  23645. int *__restrict __h_errnop);
  23646. libc_hidden_proto(gethostbyaddr_r)
  23647. -extern int gethostbyname_r (__const char *__restrict __name,
  23648. +extern int gethostbyname_r (const char *__restrict __name,
  23649. struct hostent *__restrict __result_buf,
  23650. char *__restrict __buf, size_t __buflen,
  23651. struct hostent **__restrict __result,
  23652. int *__restrict __h_errnop);
  23653. libc_hidden_proto(gethostbyname_r)
  23654. -extern int gethostbyname2_r (__const char *__restrict __name, int __af,
  23655. +extern int gethostbyname2_r (const char *__restrict __name, int __af,
  23656. struct hostent *__restrict __result_buf,
  23657. char *__restrict __buf, size_t __buflen,
  23658. struct hostent **__restrict __result,
  23659. @@ -250,7 +260,7 @@
  23660. This function is a possible cancellation point and therefore not
  23661. marked with __THROW. */
  23662. -extern struct netent *getnetbyname (__const char *__name);
  23663. +extern struct netent *getnetbyname (const char *__name);
  23664. #ifdef __USE_MISC
  23665. /* Reentrant versions of the functions above. The additional
  23666. @@ -268,13 +278,15 @@
  23667. struct netent **__restrict __result,
  23668. int *__restrict __h_errnop);
  23669. libc_hidden_proto(getnetent_r)
  23670. +
  23671. extern int getnetbyaddr_r (uint32_t __net, int __type,
  23672. struct netent *__restrict __result_buf,
  23673. char *__restrict __buf, size_t __buflen,
  23674. struct netent **__restrict __result,
  23675. int *__restrict __h_errnop);
  23676. libc_hidden_proto(getnetbyaddr_r)
  23677. -extern int getnetbyname_r (__const char *__restrict __name,
  23678. +
  23679. +extern int getnetbyname_r (const char *__restrict __name,
  23680. struct netent *__restrict __result_buf,
  23681. char *__restrict __buf, size_t __buflen,
  23682. struct netent **__restrict __result,
  23683. @@ -319,15 +331,15 @@
  23684. This function is a possible cancellation point and therefore not
  23685. marked with __THROW. */
  23686. -extern struct servent *getservbyname (__const char *__name,
  23687. - __const char *__proto);
  23688. +extern struct servent *getservbyname (const char *__name,
  23689. + const char *__proto);
  23690. /* Return entry from service data base which matches port PORT and
  23691. protocol PROTO.
  23692. This function is a possible cancellation point and therefore not
  23693. marked with __THROW. */
  23694. -extern struct servent *getservbyport (int __port, __const char *__proto);
  23695. +extern struct servent *getservbyport (int __port, const char *__proto);
  23696. libc_hidden_proto(getservbyport)
  23697. @@ -344,14 +356,14 @@
  23698. struct servent **__restrict __result);
  23699. libc_hidden_proto(getservent_r)
  23700. -extern int getservbyname_r (__const char *__restrict __name,
  23701. - __const char *__restrict __proto,
  23702. +extern int getservbyname_r (const char *__restrict __name,
  23703. + const char *__restrict __proto,
  23704. struct servent *__restrict __result_buf,
  23705. char *__restrict __buf, size_t __buflen,
  23706. struct servent **__restrict __result);
  23707. libc_hidden_proto(getservbyname_r)
  23708. -extern int getservbyport_r (int __port, __const char *__restrict __proto,
  23709. +extern int getservbyport_r (int __port, const char *__restrict __proto,
  23710. struct servent *__restrict __result_buf,
  23711. char *__restrict __buf, size_t __buflen,
  23712. struct servent **__restrict __result);
  23713. @@ -393,7 +405,7 @@
  23714. This function is a possible cancellation point and therefore not
  23715. marked with __THROW. */
  23716. -extern struct protoent *getprotobyname (__const char *__name);
  23717. +extern struct protoent *getprotobyname (const char *__name);
  23718. /* Return entry from protocol data base which number is PROTO.
  23719. @@ -415,7 +427,7 @@
  23720. struct protoent **__restrict __result);
  23721. libc_hidden_proto(getprotoent_r)
  23722. -extern int getprotobyname_r (__const char *__restrict __name,
  23723. +extern int getprotobyname_r (const char *__restrict __name,
  23724. struct protoent *__restrict __result_buf,
  23725. char *__restrict __buf, size_t __buflen,
  23726. struct protoent **__restrict __result);
  23727. @@ -435,7 +447,7 @@
  23728. cancellation point. But due to similarity with an POSIX interface
  23729. or due to the implementation it is a cancellation point and
  23730. therefore not marked with __THROW. */
  23731. -extern int setnetgrent (__const char *__netgroup);
  23732. +extern int setnetgrent (const char *__netgroup);
  23733. /* Free all space allocated by previous `setnetgrent' call.
  23734. @@ -463,8 +475,8 @@
  23735. cancellation point. But due to similarity with an POSIX interface
  23736. or due to the implementation it is a cancellation point and
  23737. therefore not marked with __THROW. */
  23738. -extern int innetgr (__const char *__netgroup, __const char *__host,
  23739. - __const char *__user, __const char *domain);
  23740. +extern int innetgr (const char *__netgroup, const char *__host,
  23741. + const char *__user, const char *__domain);
  23742. /* Reentrant version of `getnetgrent' where result is placed in BUFFER.
  23743. @@ -479,12 +491,12 @@
  23744. #endif /* UCLIBC_HAS_NETGROUP */
  23745. #endif /* misc */
  23746. -
  23747. +#ifdef __UCLIBC__
  23748. /* ruserpass - remote password check.
  23749. This function also exists in glibc but is undocumented */
  23750. extern int ruserpass(const char *host, const char **aname, const char **apass);
  23751. libc_hidden_proto(ruserpass)
  23752. -
  23753. +#endif
  23754. #ifdef __USE_BSD
  23755. /* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD.
  23756. @@ -499,9 +511,9 @@
  23757. or due to the implementation it is a cancellation point and
  23758. therefore not marked with __THROW. */
  23759. extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
  23760. - __const char *__restrict __locuser,
  23761. - __const char *__restrict __remuser,
  23762. - __const char *__restrict __cmd, int *__restrict __fd2p);
  23763. + const char *__restrict __locuser,
  23764. + const char *__restrict __remuser,
  23765. + const char *__restrict __cmd, int *__restrict __fd2p);
  23766. #if 0
  23767. /* FIXME */
  23768. @@ -513,9 +525,9 @@
  23769. or due to the implementation it is a cancellation point and
  23770. therefore not marked with __THROW. */
  23771. extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
  23772. - __const char *__restrict __locuser,
  23773. - __const char *__restrict __remuser,
  23774. - __const char *__restrict __cmd, int *__restrict __fd2p,
  23775. + const char *__restrict __locuser,
  23776. + const char *__restrict __remuser,
  23777. + const char *__restrict __cmd, int *__restrict __fd2p,
  23778. sa_family_t __af);
  23779. #endif
  23780. @@ -530,9 +542,9 @@
  23781. or due to the implementation it is a cancellation point and
  23782. therefore not marked with __THROW. */
  23783. extern int rexec (char **__restrict __ahost, int __rport,
  23784. - __const char *__restrict __name,
  23785. - __const char *__restrict __pass,
  23786. - __const char *__restrict __cmd, int *__restrict __fd2p);
  23787. + const char *__restrict __name,
  23788. + const char *__restrict __pass,
  23789. + const char *__restrict __cmd, int *__restrict __fd2p);
  23790. /* This is the equivalent function where the protocol can be selected
  23791. and which therefore can be used for IPv6.
  23792. @@ -542,9 +554,9 @@
  23793. or due to the implementation it is a cancellation point and
  23794. therefore not marked with __THROW. */
  23795. extern int rexec_af (char **__restrict __ahost, int __rport,
  23796. - __const char *__restrict __name,
  23797. - __const char *__restrict __pass,
  23798. - __const char *__restrict __cmd, int *__restrict __fd2p,
  23799. + const char *__restrict __name,
  23800. + const char *__restrict __pass,
  23801. + const char *__restrict __cmd, int *__restrict __fd2p,
  23802. sa_family_t __af);
  23803. libc_hidden_proto(rexec_af)
  23804. @@ -556,8 +568,8 @@
  23805. cancellation point. But due to similarity with an POSIX interface
  23806. or due to the implementation it is a cancellation point and
  23807. therefore not marked with __THROW. */
  23808. -extern int ruserok (__const char *__rhost, int __suser,
  23809. - __const char *__remuser, __const char *__locuser);
  23810. +extern int ruserok (const char *__rhost, int __suser,
  23811. + const char *__remuser, const char *__locuser);
  23812. #if 0
  23813. /* FIXME */
  23814. @@ -568,8 +580,8 @@
  23815. cancellation point. But due to similarity with an POSIX interface
  23816. or due to the implementation it is a cancellation point and
  23817. therefore not marked with __THROW. */
  23818. -extern int ruserok_af (__const char *__rhost, int __suser,
  23819. - __const char *__remuser, __const char *__locuser,
  23820. +extern int ruserok_af (const char *__rhost, int __suser,
  23821. + const char *__remuser, const char *__locuser,
  23822. sa_family_t __af);
  23823. #endif
  23824. @@ -638,15 +650,15 @@
  23825. # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
  23826. # define EAI_AGAIN -3 /* Temporary failure in name resolution. */
  23827. # define EAI_FAIL -4 /* Non-recoverable failure in name res. */
  23828. -# define EAI_NODATA -5 /* No address associated with NAME. */
  23829. # define EAI_FAMILY -6 /* `ai_family' not supported. */
  23830. # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
  23831. # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
  23832. -# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
  23833. # define EAI_MEMORY -10 /* Memory allocation failure. */
  23834. # define EAI_SYSTEM -11 /* System error returned in `errno'. */
  23835. # define EAI_OVERFLOW -12 /* Argument buffer overflow. */
  23836. # ifdef __USE_GNU
  23837. +# define EAI_NODATA -5 /* No address associated with NAME. */
  23838. +# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
  23839. # define EAI_INPROGRESS -100 /* Processing request in progress. */
  23840. # define EAI_CANCELED -101 /* Request canceled. */
  23841. # define EAI_NOTCANCELED -102 /* Request not canceled. */
  23842. @@ -655,8 +667,10 @@
  23843. # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
  23844. # endif
  23845. -# define NI_MAXHOST 1025
  23846. -# define NI_MAXSERV 32
  23847. +# ifdef __USE_MISC
  23848. +# define NI_MAXHOST 1025
  23849. +# define NI_MAXSERV 32
  23850. +# endif
  23851. # define NI_NUMERICHOST 1 /* Don't try to look up hostname. */
  23852. # define NI_NUMERICSERV 2 /* Don't convert port number to name. */
  23853. @@ -676,9 +690,9 @@
  23854. This function is a possible cancellation point and therefore not
  23855. marked with __THROW. */
  23856. -extern int getaddrinfo (__const char *__restrict __name,
  23857. - __const char *__restrict __service,
  23858. - __const struct addrinfo *__restrict __req,
  23859. +extern int getaddrinfo (const char *__restrict __name,
  23860. + const char *__restrict __service,
  23861. + const struct addrinfo *__restrict __req,
  23862. struct addrinfo **__restrict __pai);
  23863. libc_hidden_proto(getaddrinfo)
  23864. @@ -687,13 +701,13 @@
  23865. libc_hidden_proto(freeaddrinfo)
  23866. /* Convert error return from getaddrinfo() to a string. */
  23867. -extern __const char *gai_strerror (int __ecode) __THROW;
  23868. +extern const char *gai_strerror (int __ecode) __THROW;
  23869. /* Translate a socket address to a location and service name.
  23870. This function is a possible cancellation point and therefore not
  23871. marked with __THROW. */
  23872. -extern int getnameinfo (__const struct sockaddr *__restrict __sa,
  23873. +extern int getnameinfo (const struct sockaddr *__restrict __sa,
  23874. socklen_t __salen, char *__restrict __host,
  23875. socklen_t __hostlen, char *__restrict __serv,
  23876. socklen_t __servlen, unsigned int __flags);
  23877. diff -Nur uClibc-0.9.33.2/include/neteconet/ec.h uClibc/include/neteconet/ec.h
  23878. --- uClibc-0.9.33.2/include/neteconet/ec.h 2012-05-15 09:20:09.000000000 +0200
  23879. +++ uClibc/include/neteconet/ec.h 2014-02-03 12:32:56.000000000 +0100
  23880. @@ -13,9 +13,8 @@
  23881. Lesser General Public License for more details.
  23882. You should have received a copy of the GNU Lesser General Public
  23883. - License along with the GNU C Library; if not, write to the Free
  23884. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23885. - 02111-1307 USA. */
  23886. + License along with the GNU C Library; if not, see
  23887. + <http://www.gnu.org/licenses/>. */
  23888. #ifndef _NETECONET_EC_H
  23889. #define _NETECONET_EC_H 1
  23890. diff -Nur uClibc-0.9.33.2/include/netinet/ether.h uClibc/include/netinet/ether.h
  23891. --- uClibc-0.9.33.2/include/netinet/ether.h 2012-05-15 09:20:09.000000000 +0200
  23892. +++ uClibc/include/netinet/ether.h 2014-02-03 12:32:56.000000000 +0100
  23893. @@ -13,9 +13,8 @@
  23894. Lesser General Public License for more details.
  23895. You should have received a copy of the GNU Lesser General Public
  23896. - License along with the GNU C Library; if not, write to the Free
  23897. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23898. - 02111-1307 USA. */
  23899. + License along with the GNU C Library; if not, see
  23900. + <http://www.gnu.org/licenses/>. */
  23901. #ifndef _NETINET_ETHER_H
  23902. #define _NETINET_ETHER_H 1
  23903. @@ -34,27 +33,27 @@
  23904. #if defined __UCLIBC_HAS_SOCKET__ || defined __UCLIBC_HAS_IPV4__ || \
  23905. defined __UCLIBC_HAS_IPV6__
  23906. /* Convert 48 bit Ethernet ADDRess to ASCII. */
  23907. -extern char *ether_ntoa (__const struct ether_addr *__addr) __THROW;
  23908. -extern char *ether_ntoa_r (__const struct ether_addr *__addr, char *__buf)
  23909. +extern char *ether_ntoa (const struct ether_addr *__addr) __THROW;
  23910. +extern char *ether_ntoa_r (const struct ether_addr *__addr, char *__buf)
  23911. __THROW;
  23912. libc_hidden_proto(ether_ntoa_r)
  23913. /* Convert ASCII string S to 48 bit Ethernet address. */
  23914. -extern struct ether_addr *ether_aton (__const char *__asc) __THROW;
  23915. -extern struct ether_addr *ether_aton_r (__const char *__asc,
  23916. +extern struct ether_addr *ether_aton (const char *__asc) __THROW;
  23917. +extern struct ether_addr *ether_aton_r (const char *__asc,
  23918. struct ether_addr *__addr) __THROW;
  23919. libc_hidden_proto(ether_aton_r)
  23920. /* Map 48 bit Ethernet number ADDR to HOSTNAME. */
  23921. -extern int ether_ntohost (char *__hostname, __const struct ether_addr *__addr)
  23922. +extern int ether_ntohost (char *__hostname, const struct ether_addr *__addr)
  23923. __THROW;
  23924. /* Map HOSTNAME to 48 bit Ethernet address. */
  23925. -extern int ether_hostton (__const char *__hostname, struct ether_addr *__addr)
  23926. +extern int ether_hostton (const char *__hostname, struct ether_addr *__addr)
  23927. __THROW;
  23928. /* Scan LINE and set ADDR and HOSTNAME. */
  23929. -extern int ether_line (__const char *__line, struct ether_addr *__addr,
  23930. +extern int ether_line (const char *__line, struct ether_addr *__addr,
  23931. char *__hostname) __THROW;
  23932. #endif
  23933. diff -Nur uClibc-0.9.33.2/include/netinet/icmp6.h uClibc/include/netinet/icmp6.h
  23934. --- uClibc-0.9.33.2/include/netinet/icmp6.h 2012-05-15 09:20:09.000000000 +0200
  23935. +++ uClibc/include/netinet/icmp6.h 2014-02-03 12:32:56.000000000 +0100
  23936. @@ -12,9 +12,8 @@
  23937. Lesser General Public License for more details.
  23938. You should have received a copy of the GNU Lesser General Public
  23939. - License along with the GNU C Library; if not, write to the Free
  23940. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23941. - 02111-1307 USA. */
  23942. + License along with the GNU C Library; if not, see
  23943. + <http://www.gnu.org/licenses/>. */
  23944. #ifndef _NETINET_ICMP6_H
  23945. #define _NETINET_ICMP6_H 1
  23946. diff -Nur uClibc-0.9.33.2/include/netinet/if_ether.h uClibc/include/netinet/if_ether.h
  23947. --- uClibc-0.9.33.2/include/netinet/if_ether.h 2012-05-15 09:20:09.000000000 +0200
  23948. +++ uClibc/include/netinet/if_ether.h 2014-02-03 12:32:56.000000000 +0100
  23949. @@ -12,9 +12,8 @@
  23950. Lesser General Public License for more details.
  23951. You should have received a copy of the GNU Lesser General Public
  23952. - License along with the GNU C Library; if not, write to the Free
  23953. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23954. - 02111-1307 USA. */
  23955. + License along with the GNU C Library; if not, see
  23956. + <http://www.gnu.org/licenses/>. */
  23957. #ifndef __NETINET_IF_ETHER_H
  23958. diff -Nur uClibc-0.9.33.2/include/netinet/if_fddi.h uClibc/include/netinet/if_fddi.h
  23959. --- uClibc-0.9.33.2/include/netinet/if_fddi.h 2012-05-15 09:20:09.000000000 +0200
  23960. +++ uClibc/include/netinet/if_fddi.h 2014-02-03 12:32:56.000000000 +0100
  23961. @@ -12,9 +12,8 @@
  23962. Lesser General Public License for more details.
  23963. You should have received a copy of the GNU Lesser General Public
  23964. - License along with the GNU C Library; if not, write to the Free
  23965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23966. - 02111-1307 USA. */
  23967. + License along with the GNU C Library; if not, see
  23968. + <http://www.gnu.org/licenses/>. */
  23969. #ifndef _NETINET_IF_FDDI_H
  23970. #define _NETINET_IF_FDDI_H 1
  23971. diff -Nur uClibc-0.9.33.2/include/netinet/if_tr.h uClibc/include/netinet/if_tr.h
  23972. --- uClibc-0.9.33.2/include/netinet/if_tr.h 2012-05-15 09:20:09.000000000 +0200
  23973. +++ uClibc/include/netinet/if_tr.h 2014-02-03 12:32:56.000000000 +0100
  23974. @@ -12,9 +12,8 @@
  23975. Lesser General Public License for more details.
  23976. You should have received a copy of the GNU Lesser General Public
  23977. - License along with the GNU C Library; if not, write to the Free
  23978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23979. - 02111-1307 USA. */
  23980. + License along with the GNU C Library; if not, see
  23981. + <http://www.gnu.org/licenses/>. */
  23982. #ifndef _NETINET_IF_TR_H
  23983. #define _NETINET_IF_TR_H 1
  23984. diff -Nur uClibc-0.9.33.2/include/netinet/igmp.h uClibc/include/netinet/igmp.h
  23985. --- uClibc-0.9.33.2/include/netinet/igmp.h 2012-05-15 09:20:09.000000000 +0200
  23986. +++ uClibc/include/netinet/igmp.h 2014-02-03 12:32:56.000000000 +0100
  23987. @@ -12,9 +12,8 @@
  23988. Lesser General Public License for more details.
  23989. You should have received a copy of the GNU Lesser General Public
  23990. - License along with the GNU C Library; if not, write to the Free
  23991. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23992. - 02111-1307 USA. */
  23993. + License along with the GNU C Library; if not, see
  23994. + <http://www.gnu.org/licenses/>. */
  23995. #ifndef _NETINET_IGMP_H
  23996. #define _NETINET_IGMP_H 1
  23997. diff -Nur uClibc-0.9.33.2/include/netinet/in.h uClibc/include/netinet/in.h
  23998. --- uClibc-0.9.33.2/include/netinet/in.h 2012-05-15 09:20:09.000000000 +0200
  23999. +++ uClibc/include/netinet/in.h 2014-02-03 12:32:56.000000000 +0100
  24000. @@ -13,9 +13,8 @@
  24001. Lesser General Public License for more details.
  24002. You should have received a copy of the GNU Lesser General Public
  24003. - License along with the GNU C Library; if not, write to the Free
  24004. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24005. - 02111-1307 USA. */
  24006. + License along with the GNU C Library; if not, see
  24007. + <http://www.gnu.org/licenses/>. */
  24008. #ifndef _NETINET_IN_H
  24009. #define _NETINET_IN_H 1
  24010. @@ -415,43 +414,43 @@
  24011. #if defined __UCLIBC_HAS_IPV6__ || !defined __UCLIBC_STRICT_HEADERS__
  24012. #define IN6_IS_ADDR_UNSPECIFIED(a) \
  24013. - (((__const uint32_t *) (a))[0] == 0 \
  24014. - && ((__const uint32_t *) (a))[1] == 0 \
  24015. - && ((__const uint32_t *) (a))[2] == 0 \
  24016. - && ((__const uint32_t *) (a))[3] == 0)
  24017. + (((const uint32_t *) (a))[0] == 0 \
  24018. + && ((const uint32_t *) (a))[1] == 0 \
  24019. + && ((const uint32_t *) (a))[2] == 0 \
  24020. + && ((const uint32_t *) (a))[3] == 0)
  24021. #define IN6_IS_ADDR_LOOPBACK(a) \
  24022. - (((__const uint32_t *) (a))[0] == 0 \
  24023. - && ((__const uint32_t *) (a))[1] == 0 \
  24024. - && ((__const uint32_t *) (a))[2] == 0 \
  24025. - && ((__const uint32_t *) (a))[3] == htonl (1))
  24026. + (((const uint32_t *) (a))[0] == 0 \
  24027. + && ((const uint32_t *) (a))[1] == 0 \
  24028. + && ((const uint32_t *) (a))[2] == 0 \
  24029. + && ((const uint32_t *) (a))[3] == htonl (1))
  24030. -#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
  24031. +#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff)
  24032. #define IN6_IS_ADDR_LINKLOCAL(a) \
  24033. - ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  24034. + ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  24035. == htonl (0xfe800000))
  24036. #define IN6_IS_ADDR_SITELOCAL(a) \
  24037. - ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  24038. + ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  24039. == htonl (0xfec00000))
  24040. #define IN6_IS_ADDR_V4MAPPED(a) \
  24041. - ((((__const uint32_t *) (a))[0] == 0) \
  24042. - && (((__const uint32_t *) (a))[1] == 0) \
  24043. - && (((__const uint32_t *) (a))[2] == htonl (0xffff)))
  24044. + ((((const uint32_t *) (a))[0] == 0) \
  24045. + && (((const uint32_t *) (a))[1] == 0) \
  24046. + && (((const uint32_t *) (a))[2] == htonl (0xffff)))
  24047. #define IN6_IS_ADDR_V4COMPAT(a) \
  24048. - ((((__const uint32_t *) (a))[0] == 0) \
  24049. - && (((__const uint32_t *) (a))[1] == 0) \
  24050. - && (((__const uint32_t *) (a))[2] == 0) \
  24051. - && (ntohl (((__const uint32_t *) (a))[3]) > 1))
  24052. + ((((const uint32_t *) (a))[0] == 0) \
  24053. + && (((const uint32_t *) (a))[1] == 0) \
  24054. + && (((const uint32_t *) (a))[2] == 0) \
  24055. + && (ntohl (((const uint32_t *) (a))[3]) > 1))
  24056. #define IN6_ARE_ADDR_EQUAL(a,b) \
  24057. - ((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \
  24058. - && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \
  24059. - && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
  24060. - && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
  24061. + ((((const uint32_t *) (a))[0] == ((const uint32_t *) (b))[0]) \
  24062. + && (((const uint32_t *) (a))[1] == ((const uint32_t *) (b))[1]) \
  24063. + && (((const uint32_t *) (a))[2] == ((const uint32_t *) (b))[2]) \
  24064. + && (((const uint32_t *) (a))[3] == ((const uint32_t *) (b))[3]))
  24065. #endif
  24066. #if defined __USE_MISC || defined __USE_GNU
  24067. @@ -470,23 +469,23 @@
  24068. #if defined __UCLIBC_HAS_IPV6__ || !defined __UCLIBC_STRICT_HEADERS__
  24069. #define IN6_IS_ADDR_MC_NODELOCAL(a) \
  24070. (IN6_IS_ADDR_MULTICAST(a) \
  24071. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
  24072. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x1))
  24073. #define IN6_IS_ADDR_MC_LINKLOCAL(a) \
  24074. (IN6_IS_ADDR_MULTICAST(a) \
  24075. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2))
  24076. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x2))
  24077. #define IN6_IS_ADDR_MC_SITELOCAL(a) \
  24078. (IN6_IS_ADDR_MULTICAST(a) \
  24079. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5))
  24080. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x5))
  24081. #define IN6_IS_ADDR_MC_ORGLOCAL(a) \
  24082. (IN6_IS_ADDR_MULTICAST(a) \
  24083. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8))
  24084. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x8))
  24085. #define IN6_IS_ADDR_MC_GLOBAL(a) \
  24086. (IN6_IS_ADDR_MULTICAST(a) \
  24087. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
  24088. + && ((((const uint8_t *) (a))[1] & 0xf) == 0xe))
  24089. #endif
  24090. @@ -514,15 +513,15 @@
  24091. extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
  24092. int __type) __THROW __attribute_deprecated__;
  24093. extern int inet6_option_append (struct cmsghdr *__cmsg,
  24094. - __const uint8_t *__typep, int __multx,
  24095. + const uint8_t *__typep, int __multx,
  24096. int __plusy) __THROW __attribute_deprecated__;
  24097. extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
  24098. int __multx, int __plusy)
  24099. __THROW __attribute_deprecated__;
  24100. -extern int inet6_option_next (__const struct cmsghdr *__cmsg,
  24101. +extern int inet6_option_next (const struct cmsghdr *__cmsg,
  24102. uint8_t **__tptrp)
  24103. __THROW __attribute_deprecated__;
  24104. -extern int inet6_option_find (__const struct cmsghdr *__cmsg,
  24105. +extern int inet6_option_find (const struct cmsghdr *__cmsg,
  24106. uint8_t **__tptrp, int __type)
  24107. __THROW __attribute_deprecated__;
  24108. @@ -550,10 +549,10 @@
  24109. extern socklen_t inet6_rth_space (int __type, int __segments) __THROW;
  24110. extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
  24111. int __segments) __THROW;
  24112. -extern int inet6_rth_add (void *__bp, __const struct in6_addr *__addr) __THROW;
  24113. -extern int inet6_rth_reverse (__const void *__in, void *__out) __THROW;
  24114. -extern int inet6_rth_segments (__const void *__bp) __THROW;
  24115. -extern struct in6_addr *inet6_rth_getaddr (__const void *__bp, int __index)
  24116. +extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __THROW;
  24117. +extern int inet6_rth_reverse (const void *__in, void *__out) __THROW;
  24118. +extern int inet6_rth_segments (const void *__bp) __THROW;
  24119. +extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index)
  24120. __THROW;
  24121. # endif
  24122. # endif
  24123. @@ -572,23 +571,23 @@
  24124. extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
  24125. struct in_addr __group, uint32_t __fmode,
  24126. uint32_t __numsrc,
  24127. - __const struct in_addr *__slist)
  24128. + const struct in_addr *__slist)
  24129. __THROW;
  24130. /* Get source filter. */
  24131. extern int getsourcefilter (int __s, uint32_t __interface_addr,
  24132. - __const struct sockaddr *__group,
  24133. + const struct sockaddr *__group,
  24134. socklen_t __grouplen, uint32_t *__fmode,
  24135. uint32_t *__numsrc,
  24136. struct sockaddr_storage *__slist) __THROW;
  24137. /* Set source filter. */
  24138. extern int setsourcefilter (int __s, uint32_t __interface_addr,
  24139. - __const struct sockaddr *__group,
  24140. + const struct sockaddr *__group,
  24141. socklen_t __grouplen, uint32_t __fmode,
  24142. uint32_t __numsrc,
  24143. - __const struct sockaddr_storage *__slist) __THROW;
  24144. + const struct sockaddr_storage *__slist) __THROW;
  24145. # endif
  24146. #endif /* use GNU */
  24147. diff -Nur uClibc-0.9.33.2/include/netinet/in_systm.h uClibc/include/netinet/in_systm.h
  24148. --- uClibc-0.9.33.2/include/netinet/in_systm.h 2012-05-15 09:20:09.000000000 +0200
  24149. +++ uClibc/include/netinet/in_systm.h 2014-02-03 12:32:56.000000000 +0100
  24150. @@ -13,9 +13,8 @@
  24151. Lesser General Public License for more details.
  24152. You should have received a copy of the GNU Lesser General Public
  24153. - License along with the GNU C Library; if not, write to the Free
  24154. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24155. - 02111-1307 USA. */
  24156. + License along with the GNU C Library; if not, see
  24157. + <http://www.gnu.org/licenses/>. */
  24158. #ifndef _NETINET_IN_SYSTM_H
  24159. #define _NETINET_IN_SYSTM_H 1
  24160. diff -Nur uClibc-0.9.33.2/include/netinet/ip6.h uClibc/include/netinet/ip6.h
  24161. --- uClibc-0.9.33.2/include/netinet/ip6.h 2012-05-15 09:20:09.000000000 +0200
  24162. +++ uClibc/include/netinet/ip6.h 2014-02-03 12:32:56.000000000 +0100
  24163. @@ -12,9 +12,8 @@
  24164. Lesser General Public License for more details.
  24165. You should have received a copy of the GNU Lesser General Public
  24166. - License along with the GNU C Library; if not, write to the Free
  24167. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24168. - 02111-1307 USA. */
  24169. + License along with the GNU C Library; if not, see
  24170. + <http://www.gnu.org/licenses/>. */
  24171. #ifndef _NETINET_IP6_H
  24172. #define _NETINET_IP6_H 1
  24173. diff -Nur uClibc-0.9.33.2/include/netinet/ip.h uClibc/include/netinet/ip.h
  24174. --- uClibc-0.9.33.2/include/netinet/ip.h 2012-05-15 09:20:09.000000000 +0200
  24175. +++ uClibc/include/netinet/ip.h 2014-02-03 12:32:56.000000000 +0100
  24176. @@ -13,9 +13,8 @@
  24177. Lesser General Public License for more details.
  24178. You should have received a copy of the GNU Lesser General Public
  24179. - License along with the GNU C Library; if not, write to the Free
  24180. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24181. - 02111-1307 USA. */
  24182. + License along with the GNU C Library; if not, see
  24183. + <http://www.gnu.org/licenses/>. */
  24184. #ifndef __NETINET_IP_H
  24185. #define __NETINET_IP_H 1
  24186. diff -Nur uClibc-0.9.33.2/include/netinet/ip_icmp.h uClibc/include/netinet/ip_icmp.h
  24187. --- uClibc-0.9.33.2/include/netinet/ip_icmp.h 2012-05-15 09:20:09.000000000 +0200
  24188. +++ uClibc/include/netinet/ip_icmp.h 2014-02-03 12:32:56.000000000 +0100
  24189. @@ -12,9 +12,8 @@
  24190. Lesser General Public License for more details.
  24191. You should have received a copy of the GNU Lesser General Public
  24192. - License along with the GNU C Library; if not, write to the Free
  24193. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24194. - 02111-1307 USA. */
  24195. + License along with the GNU C Library; if not, see
  24196. + <http://www.gnu.org/licenses/>. */
  24197. #ifndef __NETINET_IP_ICMP_H
  24198. #define __NETINET_IP_ICMP_H 1
  24199. diff -Nur uClibc-0.9.33.2/include/netinet/udp.h uClibc/include/netinet/udp.h
  24200. --- uClibc-0.9.33.2/include/netinet/udp.h 2012-05-15 09:20:09.000000000 +0200
  24201. +++ uClibc/include/netinet/udp.h 2014-02-03 12:32:56.000000000 +0100
  24202. @@ -12,9 +12,8 @@
  24203. Lesser General Public License for more details.
  24204. You should have received a copy of the GNU Lesser General Public
  24205. - License along with the GNU C Library; if not, write to the Free
  24206. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24207. - 02111-1307 USA. */
  24208. + License along with the GNU C Library; if not, see
  24209. + <http://www.gnu.org/licenses/>. */
  24210. /*
  24211. * Copyright (C) 1982, 1986 Regents of the University of California.
  24212. diff -Nur uClibc-0.9.33.2/include/netipx/ipx.h uClibc/include/netipx/ipx.h
  24213. --- uClibc-0.9.33.2/include/netipx/ipx.h 2012-05-15 09:20:09.000000000 +0200
  24214. +++ uClibc/include/netipx/ipx.h 2014-02-03 12:32:56.000000000 +0100
  24215. @@ -12,9 +12,8 @@
  24216. Lesser General Public License for more details.
  24217. You should have received a copy of the GNU Lesser General Public
  24218. - License along with the GNU C Library; if not, write to the Free
  24219. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24220. - 02111-1307 USA. */
  24221. + License along with the GNU C Library; if not, see
  24222. + <http://www.gnu.org/licenses/>. */
  24223. #ifndef __NETIPX_IPX_H
  24224. #define __NETIPX_IPX_H 1
  24225. diff -Nur uClibc-0.9.33.2/include/netpacket/packet.h uClibc/include/netpacket/packet.h
  24226. --- uClibc-0.9.33.2/include/netpacket/packet.h 2012-05-15 09:20:09.000000000 +0200
  24227. +++ uClibc/include/netpacket/packet.h 2014-02-03 12:32:56.000000000 +0100
  24228. @@ -13,9 +13,8 @@
  24229. Lesser General Public License for more details.
  24230. You should have received a copy of the GNU Lesser General Public
  24231. - License along with the GNU C Library; if not, write to the Free
  24232. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24233. - 02111-1307 USA. */
  24234. + License along with the GNU C Library; if not, see
  24235. + <http://www.gnu.org/licenses/>. */
  24236. #ifndef __NETPACKET_PACKET_H
  24237. #define __NETPACKET_PACKET_H 1
  24238. diff -Nur uClibc-0.9.33.2/include/nl_types.h uClibc/include/nl_types.h
  24239. --- uClibc-0.9.33.2/include/nl_types.h 2012-05-15 09:20:09.000000000 +0200
  24240. +++ uClibc/include/nl_types.h 2014-02-03 12:32:56.000000000 +0100
  24241. @@ -12,9 +12,8 @@
  24242. Lesser General Public License for more details.
  24243. You should have received a copy of the GNU Lesser General Public
  24244. - License along with the GNU C Library; if not, write to the Free
  24245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24246. - 02111-1307 USA. */
  24247. + License along with the GNU C Library; if not, see
  24248. + <http://www.gnu.org/licenses/>. */
  24249. #ifndef _NL_TYPES_H
  24250. #define _NL_TYPES_H 1
  24251. @@ -49,12 +48,12 @@
  24252. This function is a possible cancellation point and therefore not
  24253. marked with __THROW. */
  24254. -extern nl_catd catopen (__const char *__cat_name, int __flag) __nonnull ((1));
  24255. +extern nl_catd catopen (const char *__cat_name, int __flag) __nonnull ((1));
  24256. /* Return translation with NUMBER in SET of CATALOG; if not found
  24257. return STRING. */
  24258. extern char *catgets (nl_catd __catalog, int __set, int __number,
  24259. - __const char *__string) __THROW __nonnull ((1));
  24260. + const char *__string) __THROW __nonnull ((1));
  24261. /* Close message CATALOG. */
  24262. extern int catclose (nl_catd __catalog) __THROW __nonnull ((1));
  24263. diff -Nur uClibc-0.9.33.2/include/obstack.h uClibc/include/obstack.h
  24264. --- uClibc-0.9.33.2/include/obstack.h 2012-05-15 09:20:09.000000000 +0200
  24265. +++ uClibc/include/obstack.h 2014-02-03 12:32:56.000000000 +0100
  24266. @@ -14,9 +14,8 @@
  24267. Lesser General Public License for more details.
  24268. You should have received a copy of the GNU Lesser General Public
  24269. - License along with the GNU C Library; if not, write to the Free
  24270. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  24271. - Boston, MA 02110-1301, USA. */
  24272. + License along with the GNU C Library; if not, see
  24273. + <http://www.gnu.org/licenses/>. */
  24274. /* Summary:
  24275. @@ -180,6 +179,7 @@
  24276. /* Declare the external functions we use; they are in obstack.c. */
  24277. extern void _obstack_newchunk (struct obstack *, int);
  24278. +libc_hidden_proto(_obstack_newchunk)
  24279. extern int _obstack_begin (struct obstack *, int, int,
  24280. void *(*) (long), void (*) (void *));
  24281. extern int _obstack_begin_1 (struct obstack *, int, int,
  24282. diff -Nur uClibc-0.9.33.2/include/printf.h uClibc/include/printf.h
  24283. --- uClibc-0.9.33.2/include/printf.h 2012-05-15 09:20:09.000000000 +0200
  24284. +++ uClibc/include/printf.h 2014-02-03 12:32:56.000000000 +0100
  24285. @@ -12,9 +12,8 @@
  24286. Lesser General Public License for more details.
  24287. You should have received a copy of the GNU Lesser General Public
  24288. - License along with the GNU C Library; if not, write to the Free
  24289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24290. - 02111-1307 USA. */
  24291. + License along with the GNU C Library; if not, see
  24292. + <http://www.gnu.org/licenses/>. */
  24293. /* March 11, 2001 Manuel Novoa III
  24294. *
  24295. @@ -143,14 +142,14 @@
  24296. #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
  24297. typedef int (*printf_function) (FILE *__stream,
  24298. - __const struct printf_info *__info,
  24299. - __const void *__const *__args);
  24300. + const struct printf_info *__info,
  24301. + const void *const *__args);
  24302. /* Type of a printf specifier-arginfo function.
  24303. INFO gives information about the format specification.
  24304. N, ARGTYPES, and return value are as for parse_printf_format. */
  24305. -typedef int printf_arginfo_function (__const struct printf_info *__info,
  24306. +typedef int printf_arginfo_function (const struct printf_info *__info,
  24307. size_t __n, int *__argtypes);
  24308. @@ -174,7 +173,7 @@
  24309. array it is passed with the types of the arguments it wants, and return
  24310. the number of arguments it wants. */
  24311. -extern size_t parse_printf_format (__const char *__restrict __fmt, size_t __n,
  24312. +extern size_t parse_printf_format (const char *__restrict __fmt, size_t __n,
  24313. int *__restrict __argtypes) __THROW;
  24314. @@ -222,11 +221,11 @@
  24315. the format specifier is a uppercase character powers of 1000 are
  24316. used. Otherwise powers of 1024. */
  24317. extern int printf_size (FILE *__restrict __fp,
  24318. - __const struct printf_info *__info,
  24319. - __const void *__const *__restrict __args) __THROW;
  24320. + const struct printf_info *__info,
  24321. + const void *const *__restrict __args) __THROW;
  24322. /* This is the appropriate argument information function for `printf_size'. */
  24323. -extern int printf_size_info (__const struct printf_info *__restrict
  24324. +extern int printf_size_info (const struct printf_info *__restrict
  24325. __info, size_t __n, int *__restrict __argtypes)
  24326. __THROW;
  24327. diff -Nur uClibc-0.9.33.2/include/pty.h uClibc/include/pty.h
  24328. --- uClibc-0.9.33.2/include/pty.h 2012-05-15 09:20:09.000000000 +0200
  24329. +++ uClibc/include/pty.h 2014-02-03 12:32:56.000000000 +0100
  24330. @@ -13,9 +13,8 @@
  24331. Lesser General Public License for more details.
  24332. You should have received a copy of the GNU Lesser General Public
  24333. - License along with the GNU C Library; if not, write to the Free
  24334. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24335. - 02111-1307 USA. */
  24336. + License along with the GNU C Library; if not, see
  24337. + <http://www.gnu.org/licenses/>. */
  24338. #ifndef _PTY_H
  24339. #define _PTY_H 1
  24340. diff -Nur uClibc-0.9.33.2/include/pwd.h uClibc/include/pwd.h
  24341. --- uClibc-0.9.33.2/include/pwd.h 2012-05-15 09:20:09.000000000 +0200
  24342. +++ uClibc/include/pwd.h 2014-02-03 12:32:56.000000000 +0100
  24343. @@ -12,9 +12,8 @@
  24344. Lesser General Public License for more details.
  24345. You should have received a copy of the GNU Lesser General Public
  24346. - License along with the GNU C Library; if not, write to the Free
  24347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24348. - 02111-1307 USA. */
  24349. + License along with the GNU C Library; if not, see
  24350. + <http://www.gnu.org/licenses/>. */
  24351. /*
  24352. * POSIX Standard: 9.2.2 User Database Access <pwd.h>
  24353. @@ -100,7 +99,7 @@
  24354. cancellation point. But due to similarity with an POSIX interface
  24355. or due to the implementation it is a cancellation point and
  24356. therefore not marked with __THROW. */
  24357. -extern int putpwent (__const struct passwd *__restrict __p,
  24358. +extern int putpwent (const struct passwd *__restrict __p,
  24359. FILE *__restrict __f);
  24360. #endif
  24361. @@ -114,7 +113,8 @@
  24362. This function is a possible cancellation point and therefore not
  24363. marked with __THROW. */
  24364. -extern struct passwd *getpwnam (__const char *__name);
  24365. +extern struct passwd *getpwnam (const char *__name);
  24366. +libc_hidden_proto(getpwnam)
  24367. #if defined __USE_POSIX || defined __USE_MISC
  24368. @@ -149,7 +149,7 @@
  24369. struct passwd **__restrict __result);
  24370. libc_hidden_proto(getpwuid_r)
  24371. -extern int getpwnam_r (__const char *__restrict __name,
  24372. +extern int getpwnam_r (const char *__restrict __name,
  24373. struct passwd *__restrict __resultbuf,
  24374. char *__restrict __buffer, size_t __buflen,
  24375. struct passwd **__restrict __result);
  24376. diff -Nur uClibc-0.9.33.2/include/regex.h uClibc/include/regex.h
  24377. --- uClibc-0.9.33.2/include/regex.h 2012-05-15 09:20:09.000000000 +0200
  24378. +++ uClibc/include/regex.h 2014-02-03 12:32:56.000000000 +0100
  24379. @@ -1,6 +1,6 @@
  24380. /* Definitions for data structures and routines for the regular
  24381. expression library.
  24382. - Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005
  24383. + Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008
  24384. Free Software Foundation, Inc.
  24385. This file is part of the GNU C Library.
  24386. @@ -15,28 +15,16 @@
  24387. Lesser General Public License for more details.
  24388. You should have received a copy of the GNU Lesser General Public
  24389. - License along with the GNU C Library; if not, write to the Free
  24390. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24391. - 02111-1307 USA. */
  24392. + License along with the GNU C Library; if not, see
  24393. + <http://www.gnu.org/licenses/>. */
  24394. #ifndef _REGEX_H
  24395. #define _REGEX_H 1
  24396. -#include <features.h>
  24397. -
  24398. #include <sys/types.h>
  24399. __BEGIN_DECLS
  24400. -/* POSIX says that <sys/types.h> must be included (by the caller) before
  24401. - <regex.h>. */
  24402. -
  24403. -#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
  24404. -/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
  24405. - should be there. */
  24406. -# include <stddef.h>
  24407. -#endif
  24408. -
  24409. /* The following two types have to be signed and unsigned integer type
  24410. wide enough to hold a value of a pointer. For most ANSI compilers
  24411. ptrdiff_t and size_t should be likely OK. Still size of these two
  24412. @@ -51,20 +39,21 @@
  24413. add or remove a bit, only one other definition need change. */
  24414. typedef unsigned long int reg_syntax_t;
  24415. +#ifdef __USE_GNU
  24416. /* If this bit is not set, then \ inside a bracket expression is literal.
  24417. If set, then such a \ quotes the following character. */
  24418. -#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
  24419. +# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
  24420. /* If this bit is not set, then + and ? are operators, and \+ and \? are
  24421. literals.
  24422. If set, then \+ and \? are operators and + and ? are literals. */
  24423. -#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
  24424. +# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
  24425. /* If this bit is set, then character classes are supported. They are:
  24426. [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
  24427. [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
  24428. If not set, then character classes are not supported. */
  24429. -#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
  24430. +# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
  24431. /* If this bit is set, then ^ and $ are always anchors (outside bracket
  24432. expressions, of course).
  24433. @@ -78,7 +67,7 @@
  24434. POSIX draft 11.2 says that * etc. in leading positions is undefined.
  24435. We already implemented a previous draft which made those constructs
  24436. invalid, though, so we haven't changed the code back. */
  24437. -#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
  24438. +# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
  24439. /* If this bit is set, then special characters are always special
  24440. regardless of where they are in the pattern.
  24441. @@ -86,71 +75,71 @@
  24442. some contexts; otherwise they are ordinary. Specifically,
  24443. * + ? and intervals are only special when not after the beginning,
  24444. open-group, or alternation operator. */
  24445. -#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
  24446. +# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
  24447. /* If this bit is set, then *, +, ?, and { cannot be first in an re or
  24448. immediately after an alternation or begin-group operator. */
  24449. -#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
  24450. +# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
  24451. /* If this bit is set, then . matches newline.
  24452. If not set, then it doesn't. */
  24453. -#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
  24454. +# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
  24455. /* If this bit is set, then . doesn't match NUL.
  24456. If not set, then it does. */
  24457. -#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
  24458. +# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
  24459. /* If this bit is set, nonmatching lists [^...] do not match newline.
  24460. If not set, they do. */
  24461. -#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
  24462. +# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
  24463. /* If this bit is set, either \{...\} or {...} defines an
  24464. interval, depending on RE_NO_BK_BRACES.
  24465. If not set, \{, \}, {, and } are literals. */
  24466. -#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
  24467. +# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
  24468. /* If this bit is set, +, ? and | aren't recognized as operators.
  24469. If not set, they are. */
  24470. -#define RE_LIMITED_OPS (RE_INTERVALS << 1)
  24471. +# define RE_LIMITED_OPS (RE_INTERVALS << 1)
  24472. /* If this bit is set, newline is an alternation operator.
  24473. If not set, newline is literal. */
  24474. -#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
  24475. +# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
  24476. /* If this bit is set, then `{...}' defines an interval, and \{ and \}
  24477. are literals.
  24478. If not set, then `\{...\}' defines an interval. */
  24479. -#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
  24480. +# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
  24481. /* If this bit is set, (...) defines a group, and \( and \) are literals.
  24482. If not set, \(...\) defines a group, and ( and ) are literals. */
  24483. -#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
  24484. +# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
  24485. /* If this bit is set, then \<digit> matches <digit>.
  24486. If not set, then \<digit> is a back-reference. */
  24487. -#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
  24488. +# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
  24489. /* If this bit is set, then | is an alternation operator, and \| is literal.
  24490. If not set, then \| is an alternation operator, and | is literal. */
  24491. -#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
  24492. +# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
  24493. /* If this bit is set, then an ending range point collating higher
  24494. than the starting range point, as in [z-a], is invalid.
  24495. If not set, then when ending range point collates higher than the
  24496. starting range point, the range is ignored. */
  24497. -#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
  24498. +# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
  24499. /* If this bit is set, then an unmatched ) is ordinary.
  24500. If not set, then an unmatched ) is invalid. */
  24501. -#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
  24502. +# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
  24503. /* If this bit is set, succeed as soon as we match the whole pattern,
  24504. without further backtracking. */
  24505. -#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
  24506. +# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
  24507. /* If this bit is set, do not process the GNU regex operators.
  24508. If not set, then the GNU regex operators are recognized. */
  24509. -#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
  24510. +# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
  24511. /* If this bit is set, turn on internal regex debugging.
  24512. If not set, and debugging was on, turn it off.
  24513. @@ -158,29 +147,30 @@
  24514. We define this bit always, so that all that's needed to turn on
  24515. debugging is to recompile regex.c; the calling code can always have
  24516. this bit set, and it won't affect anything in the normal case. */
  24517. -#define RE_DEBUG (RE_NO_GNU_OPS << 1)
  24518. +# define RE_DEBUG (RE_NO_GNU_OPS << 1)
  24519. /* If this bit is set, a syntactically invalid interval is treated as
  24520. a string of ordinary characters. For example, the ERE 'a{1' is
  24521. treated as 'a\{1'. */
  24522. -#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
  24523. +# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
  24524. /* If this bit is set, then ignore case when matching.
  24525. If not set, then case is significant. */
  24526. -#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
  24527. +# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
  24528. /* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
  24529. for ^, because it is difficult to scan the regex backwards to find
  24530. whether ^ should be special. */
  24531. -#define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
  24532. +# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
  24533. /* If this bit is set, then \{ cannot be first in an bre or
  24534. immediately after an alternation or begin-group operator. */
  24535. -#define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
  24536. +# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
  24537. /* If this bit is set, then no_sub will be set to 1 during
  24538. re_compile_pattern. */
  24539. -#define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
  24540. +# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
  24541. +#endif
  24542. /* This global variable defines the particular regexp syntax to use (for
  24543. some interfaces). When a regexp is compiled, the syntax used is
  24544. @@ -188,6 +178,7 @@
  24545. already-compiled regexps. */
  24546. extern reg_syntax_t re_syntax_options;
  24547. +#ifdef __USE_GNU
  24548. /* Define combinations of the above bits for the standard possibilities.
  24549. (The [[[ comments delimit what gets put into the Texinfo file, so
  24550. don't delete them!) */
  24551. @@ -262,11 +253,12 @@
  24552. /* Maximum number of duplicates an interval can allow. Some systems
  24553. (erroneously) define this in other header files, but we want our
  24554. value, so remove any previous define. */
  24555. -#ifdef RE_DUP_MAX
  24556. -# undef RE_DUP_MAX
  24557. -#endif
  24558. +# ifdef RE_DUP_MAX
  24559. +# undef RE_DUP_MAX
  24560. +# endif
  24561. /* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
  24562. -#define RE_DUP_MAX (0x7fff)
  24563. +# define RE_DUP_MAX (0x7fff)
  24564. +#endif
  24565. /* POSIX `cflags' bits (i.e., information for `regcomp'). */
  24566. @@ -310,7 +302,7 @@
  24567. `re_error_msg' table in regex.c. */
  24568. typedef enum
  24569. {
  24570. -#ifdef _XOPEN_SOURCE
  24571. +#if defined _XOPEN_SOURCE || defined __USE_XOPEN2K
  24572. REG_ENOSYS = -1, /* This will never happen for this implementation. */
  24573. #endif
  24574. @@ -345,7 +337,16 @@
  24575. private to the regex routines. */
  24576. #ifndef RE_TRANSLATE_TYPE
  24577. -# define RE_TRANSLATE_TYPE unsigned char *
  24578. +# define __RE_TRANSLATE_TYPE unsigned char *
  24579. +# ifdef __USE_GNU
  24580. +# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
  24581. +# endif
  24582. +#endif
  24583. +
  24584. +#ifdef __USE_GNU
  24585. +# define __REPB_PREFIX(name) name
  24586. +#else
  24587. +# define __REPB_PREFIX(name) __##name
  24588. #endif
  24589. struct re_pattern_buffer
  24590. @@ -353,27 +354,27 @@
  24591. /* Space that holds the compiled pattern. It is declared as
  24592. `unsigned char *' because its elements are sometimes used as
  24593. array indexes. */
  24594. - unsigned char *buffer;
  24595. + unsigned char *__REPB_PREFIX(buffer);
  24596. /* Number of bytes to which `buffer' points. */
  24597. - unsigned long int allocated;
  24598. + unsigned long int __REPB_PREFIX(allocated);
  24599. /* Number of bytes actually used in `buffer'. */
  24600. - unsigned long int used;
  24601. + unsigned long int __REPB_PREFIX(used);
  24602. /* Syntax setting with which the pattern was compiled. */
  24603. - reg_syntax_t syntax;
  24604. + reg_syntax_t __REPB_PREFIX(syntax);
  24605. /* Pointer to a fastmap, if any, otherwise zero. re_search uses the
  24606. fastmap, if there is one, to skip over impossible starting points
  24607. for matches. */
  24608. - char *fastmap;
  24609. + char *__REPB_PREFIX(fastmap);
  24610. /* Either a translate table to apply to all characters before
  24611. comparing them, or zero for no translation. The translation is
  24612. applied to a pattern when it is compiled and to a string when it
  24613. is matched. */
  24614. - RE_TRANSLATE_TYPE translate;
  24615. + __RE_TRANSLATE_TYPE __REPB_PREFIX(translate);
  24616. /* Number of subexpressions found by the compiler. */
  24617. size_t re_nsub;
  24618. @@ -382,34 +383,36 @@
  24619. Well, in truth it's used only in `re_search_2', to see whether or
  24620. not we should use the fastmap, so we don't set this absolutely
  24621. perfectly; see `re_compile_fastmap' (the `duplicate' case). */
  24622. - unsigned can_be_null : 1;
  24623. + unsigned __REPB_PREFIX(can_be_null) : 1;
  24624. /* If REGS_UNALLOCATED, allocate space in the `regs' structure
  24625. for `max (RE_NREGS, re_nsub + 1)' groups.
  24626. If REGS_REALLOCATE, reallocate space if necessary.
  24627. If REGS_FIXED, use what's there. */
  24628. -#define REGS_UNALLOCATED 0
  24629. -#define REGS_REALLOCATE 1
  24630. -#define REGS_FIXED 2
  24631. - unsigned regs_allocated : 2;
  24632. +#ifdef __USE_GNU
  24633. +# define REGS_UNALLOCATED 0
  24634. +# define REGS_REALLOCATE 1
  24635. +# define REGS_FIXED 2
  24636. +#endif
  24637. + unsigned __REPB_PREFIX(regs_allocated) : 2;
  24638. /* Set to zero when `regex_compile' compiles a pattern; set to one
  24639. by `re_compile_fastmap' if it updates the fastmap. */
  24640. - unsigned fastmap_accurate : 1;
  24641. + unsigned __REPB_PREFIX(fastmap_accurate) : 1;
  24642. /* If set, `re_match_2' does not return information about
  24643. subexpressions. */
  24644. - unsigned no_sub : 1;
  24645. + unsigned __REPB_PREFIX(no_sub) : 1;
  24646. /* If set, a beginning-of-line anchor doesn't match at the beginning
  24647. of the string. */
  24648. - unsigned not_bol : 1;
  24649. + unsigned __REPB_PREFIX(not_bol) : 1;
  24650. /* Similarly for an end-of-line anchor. */
  24651. - unsigned not_eol : 1;
  24652. + unsigned __REPB_PREFIX(not_eol) : 1;
  24653. /* If true, an anchor at a newline matches. */
  24654. - unsigned newline_anchor : 1;
  24655. + unsigned __REPB_PREFIX(newline_anchor) : 1;
  24656. };
  24657. typedef struct re_pattern_buffer regex_t;
  24658. @@ -418,6 +421,7 @@
  24659. typedef int regoff_t;
  24660. +#ifdef __USE_GNU
  24661. /* This is the structure we store register match data in. See
  24662. regex.texinfo for a full description of what registers match. */
  24663. struct re_registers
  24664. @@ -431,8 +435,9 @@
  24665. /* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
  24666. `re_match_2' returns information about at least this many registers
  24667. the first time a `regs' structure is passed. */
  24668. -#ifndef RE_NREGS
  24669. -# define RE_NREGS 30
  24670. +# ifndef RE_NREGS
  24671. +# define RE_NREGS 30
  24672. +# endif
  24673. #endif
  24674. @@ -447,7 +452,7 @@
  24675. /* Declarations for routines. */
  24676. -
  24677. +#ifdef __USE_GNU
  24678. /* Sets the current default syntax to SYNTAX, and return the old syntax.
  24679. You can also simply assign to the `re_syntax_options' variable. */
  24680. extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
  24681. @@ -515,8 +520,9 @@
  24682. struct re_registers *__regs,
  24683. unsigned int __num_regs,
  24684. regoff_t *__starts, regoff_t *__ends);
  24685. +#endif /* Use GNU */
  24686. -#if defined _REGEX_RE_COMP || defined _LIBC
  24687. +#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD)
  24688. # ifndef _CRAY
  24689. /* 4.2 bsd compatibility. */
  24690. extern char *re_comp (const char *);
  24691. @@ -537,7 +543,8 @@
  24692. #endif
  24693. /* gcc 3.1 and up support the [restrict] syntax. */
  24694. #ifndef __restrict_arr
  24695. -# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
  24696. +# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) \
  24697. + && !defined __GNUG__
  24698. # define __restrict_arr __restrict
  24699. # else
  24700. # define __restrict_arr
  24701. diff -Nur uClibc-0.9.33.2/include/regexp.h uClibc/include/regexp.h
  24702. --- uClibc-0.9.33.2/include/regexp.h 2012-05-15 09:20:09.000000000 +0200
  24703. +++ uClibc/include/regexp.h 2014-02-03 12:32:56.000000000 +0100
  24704. @@ -14,9 +14,8 @@
  24705. Lesser General Public License for more details.
  24706. You should have received a copy of the GNU Lesser General Public
  24707. - License along with the GNU C Library; if not, write to the Free
  24708. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24709. - 02111-1307 USA. */
  24710. + License along with the GNU C Library; if not, see
  24711. + <http://www.gnu.org/licenses/>. */
  24712. #ifndef _REGEXP_H
  24713. #define _REGEXP_H 1
  24714. @@ -103,7 +102,7 @@
  24715. on the macros. */
  24716. char *
  24717. compile (char *__restrict instring, char *__restrict expbuf,
  24718. - __const char *__restrict endbuf, int eof)
  24719. + const char *__restrict endbuf, int eof)
  24720. {
  24721. char *__input_buffer = NULL;
  24722. size_t __input_size = 0;
  24723. @@ -216,14 +215,14 @@
  24724. found in the buffer starting at EXPBUF. `loc1' will return the
  24725. first character matched and `loc2' points to the next unmatched
  24726. character. */
  24727. -extern int step (__const char *__restrict __string,
  24728. - __const char *__restrict __expbuf) __THROW;
  24729. +extern int step (const char *__restrict __string,
  24730. + const char *__restrict __expbuf) __THROW;
  24731. /* Match the beginning of STRING with the compiled regular expression
  24732. in EXPBUF. If the match is successful `loc2' will contain the
  24733. position of the first unmatched character. */
  24734. -extern int advance (__const char *__restrict __string,
  24735. - __const char *__restrict __expbuf) __THROW;
  24736. +extern int advance (const char *__restrict __string,
  24737. + const char *__restrict __expbuf) __THROW;
  24738. #endif
  24739. diff -Nur uClibc-0.9.33.2/include/rpc/auth_des.h uClibc/include/rpc/auth_des.h
  24740. --- uClibc-0.9.33.2/include/rpc/auth_des.h 2012-05-15 09:20:09.000000000 +0200
  24741. +++ uClibc/include/rpc/auth_des.h 2014-02-03 12:32:56.000000000 +0100
  24742. @@ -12,9 +12,8 @@
  24743. Lesser General Public License for more details.
  24744. You should have received a copy of the GNU Lesser General Public
  24745. - License along with the GNU C Library; if not, write to the Free
  24746. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24747. - 02111-1307 USA. */
  24748. + License along with the GNU C Library; if not, see
  24749. + <http://www.gnu.org/licenses/>. */
  24750. #ifndef _RPC_AUTH_DES_H
  24751. #define _RPC_AUTH_DES_H 1
  24752. @@ -89,27 +88,26 @@
  24753. #define adv_nickname adv_int_u
  24754. /* Map a des credential into a unix cred. */
  24755. -extern int authdes_getucred (__const struct authdes_cred * __adc,
  24756. +extern int authdes_getucred (const struct authdes_cred * __adc,
  24757. uid_t * __uid, gid_t * __gid,
  24758. short *__grouplen, gid_t * __groups) __THROW;
  24759. /* Get the public key for NAME and place it in KEY. NAME can only be
  24760. up to MAXNETNAMELEN bytes long and the destination buffer KEY should
  24761. have HEXKEYBYTES + 1 bytes long to fit all characters from the key. */
  24762. -extern int getpublickey (__const char *__name, char *__key) __THROW;
  24763. +extern int getpublickey (const char *__name, char *__key) __THROW;
  24764. /* Get the secret key for NAME and place it in KEY. PASSWD is used to
  24765. decrypt the encrypted key stored in the database. NAME can only be
  24766. up to MAXNETNAMELEN bytes long and the destination buffer KEY
  24767. should have HEXKEYBYTES + 1 bytes long to fit all characters from
  24768. the key. */
  24769. -extern int getsecretkey (__const char *__name, char *__key,
  24770. - __const char *__passwd) __THROW;
  24771. +extern int getsecretkey (const char *__name, char *__key,
  24772. + const char *__passwd) __THROW;
  24773. #endif
  24774. extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep,
  24775. struct rpc_timeval *__timeout) __THROW;
  24776. -libc_hidden_proto(rtime)
  24777. __END_DECLS
  24778. diff -Nur uClibc-0.9.33.2/include/rpc/auth.h uClibc/include/rpc/auth.h
  24779. --- uClibc-0.9.33.2/include/rpc/auth.h 2012-05-15 09:20:09.000000000 +0200
  24780. +++ uClibc/include/rpc/auth.h 2014-02-03 12:32:56.000000000 +0100
  24781. @@ -41,17 +41,6 @@
  24782. #ifndef _RPC_AUTH_H
  24783. #define _RPC_AUTH_H 1
  24784. -#ifdef _LIBC
  24785. -/* Some adjustments to make the libc source from glibc
  24786. - * compile more easily with uClibc... */
  24787. -#ifndef __FORCE_GLIBC
  24788. -#define __FORCE_GLIBC
  24789. -#endif
  24790. -#ifndef _GNU_SOURCE
  24791. -#define _GNU_SOURCE
  24792. -#endif
  24793. -#define _(X) X
  24794. -#endif
  24795. #include <features.h>
  24796. #include <rpc/xdr.h>
  24797. @@ -107,6 +96,10 @@
  24798. struct opaque_auth ah_cred;
  24799. struct opaque_auth ah_verf;
  24800. union des_block ah_key;
  24801. + /* not sure whether non-const-ness is a part of the spec... if it is,
  24802. + * enclose "const" in #ifdef _LIBC / #endif
  24803. + * to make it effective only for libc compile */
  24804. + const
  24805. struct auth_ops {
  24806. void (*ah_nextverf) (AUTH *);
  24807. int (*ah_marshal) (AUTH *, XDR *); /* nextverf & serialize */
  24808. @@ -200,11 +193,11 @@
  24809. *
  24810. */
  24811. extern int getnetname (char *) __THROW;
  24812. -extern int host2netname (char *, __const char *, __const char *) __THROW;
  24813. -extern int user2netname (char *, __const uid_t, __const char *) __THROW;
  24814. -extern int netname2user (__const char *, uid_t *, gid_t *, int *, gid_t *)
  24815. +extern int host2netname (char *, const char *, const char *) __THROW;
  24816. +extern int user2netname (char *, const uid_t, const char *) __THROW;
  24817. +extern int netname2user (const char *, uid_t *, gid_t *, int *, gid_t *)
  24818. __THROW;
  24819. -extern int netname2host (__const char *, char *, __const int) __THROW;
  24820. +extern int netname2host (const char *, char *, const int) __THROW;
  24821. /*
  24822. *
  24823. diff -Nur uClibc-0.9.33.2/include/rpc/clnt.h uClibc/include/rpc/clnt.h
  24824. --- uClibc-0.9.33.2/include/rpc/clnt.h 2012-05-15 09:20:09.000000000 +0200
  24825. +++ uClibc/include/rpc/clnt.h 2014-02-03 12:32:56.000000000 +0100
  24826. @@ -281,7 +281,7 @@
  24827. * u_long prog;
  24828. * u_long vers;
  24829. */
  24830. -extern CLIENT *clntraw_create (__const u_long __prog, __const u_long __vers)
  24831. +extern CLIENT *clntraw_create (const u_long __prog, const u_long __vers)
  24832. __THROW;
  24833. @@ -295,8 +295,8 @@
  24834. * u_ong vers; -- version number
  24835. * char *prot; -- protocol
  24836. */
  24837. -extern CLIENT *clnt_create (__const char *__host, __const u_long __prog,
  24838. - __const u_long __vers, __const char *__prot)
  24839. +extern CLIENT *clnt_create (const char *__host, const u_long __prog,
  24840. + const u_long __vers, const char *__prot)
  24841. __THROW;
  24842. @@ -365,18 +365,18 @@
  24843. libc_hidden_proto(clntunix_create)
  24844. -extern int callrpc (__const char *__host, __const u_long __prognum,
  24845. - __const u_long __versnum, __const u_long __procnum,
  24846. - __const xdrproc_t __inproc, __const char *__in,
  24847. - __const xdrproc_t __outproc, char *__out) __THROW;
  24848. +extern int callrpc (const char *__host, const u_long __prognum,
  24849. + const u_long __versnum, const u_long __procnum,
  24850. + const xdrproc_t __inproc, const char *__in,
  24851. + const xdrproc_t __outproc, char *__out) __THROW;
  24852. extern int _rpc_dtablesize (void) __THROW;
  24853. libc_hidden_proto(_rpc_dtablesize)
  24854. /*
  24855. * Print why creation failed
  24856. */
  24857. -extern void clnt_pcreateerror (__const char *__msg); /* stderr */
  24858. -extern char *clnt_spcreateerror(__const char *__msg) __THROW; /* string */
  24859. +extern void clnt_pcreateerror (const char *__msg); /* stderr */
  24860. +extern char *clnt_spcreateerror(const char *__msg) __THROW; /* string */
  24861. libc_hidden_proto(clnt_spcreateerror)
  24862. /*
  24863. @@ -387,10 +387,10 @@
  24864. /*
  24865. * Print an English error message, given the client error code
  24866. */
  24867. -extern void clnt_perror (CLIENT *__clnt, __const char *__msg);
  24868. +extern void clnt_perror (CLIENT *__clnt, const char *__msg);
  24869. /* stderr */
  24870. libc_hidden_proto(clnt_perror)
  24871. -extern char *clnt_sperror (CLIENT *__clnt, __const char *__msg) __THROW;
  24872. +extern char *clnt_sperror (CLIENT *__clnt, const char *__msg) __THROW;
  24873. /* string */
  24874. libc_hidden_proto(clnt_sperror)
  24875. @@ -416,7 +416,7 @@
  24876. /*
  24877. * get the port number on the host for the rpc program,version and proto
  24878. */
  24879. -extern int getrpcport (__const char * __host, u_long __prognum,
  24880. +extern int getrpcport (const char * __host, u_long __prognum,
  24881. u_long __versnum, u_int proto) __THROW;
  24882. /*
  24883. diff -Nur uClibc-0.9.33.2/include/rpc/netdb.h uClibc/include/rpc/netdb.h
  24884. --- uClibc-0.9.33.2/include/rpc/netdb.h 2012-05-15 09:20:09.000000000 +0200
  24885. +++ uClibc/include/rpc/netdb.h 2014-02-03 12:32:56.000000000 +0100
  24886. @@ -54,7 +54,7 @@
  24887. libc_hidden_proto(setrpcent)
  24888. extern void endrpcent (void) __THROW;
  24889. libc_hidden_proto(endrpcent)
  24890. -extern struct rpcent *getrpcbyname (__const char *__name) __THROW;
  24891. +extern struct rpcent *getrpcbyname (const char *__name) __THROW;
  24892. libc_hidden_proto(getrpcbyname)
  24893. extern struct rpcent *getrpcbynumber (int __number) __THROW;
  24894. libc_hidden_proto(getrpcbynumber)
  24895. @@ -62,7 +62,7 @@
  24896. libc_hidden_proto(getrpcent)
  24897. #if defined __USE_MISC && defined __UCLIBC_HAS_REENTRANT_RPC__
  24898. -extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf,
  24899. +extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf,
  24900. char *__buffer, size_t __buflen,
  24901. struct rpcent **__result) __THROW;
  24902. diff -Nur uClibc-0.9.33.2/include/rpc/pmap_clnt.h uClibc/include/rpc/pmap_clnt.h
  24903. --- uClibc-0.9.33.2/include/rpc/pmap_clnt.h 2012-05-15 09:20:09.000000000 +0200
  24904. +++ uClibc/include/rpc/pmap_clnt.h 2014-02-03 12:32:56.000000000 +0100
  24905. @@ -69,30 +69,30 @@
  24906. * address if the responder to the broadcast.
  24907. */
  24908. -extern bool_t pmap_set (__const u_long __program, __const u_long __vers,
  24909. +extern bool_t pmap_set (const u_long __program, const u_long __vers,
  24910. int __protocol, u_short __port) __THROW;
  24911. libc_hidden_proto(pmap_set)
  24912. -extern bool_t pmap_unset (__const u_long __program, __const u_long __vers)
  24913. +extern bool_t pmap_unset (const u_long __program, const u_long __vers)
  24914. __THROW;
  24915. libc_hidden_proto(pmap_unset)
  24916. extern struct pmaplist *pmap_getmaps (struct sockaddr_in *__address) __THROW;
  24917. extern enum clnt_stat pmap_rmtcall (struct sockaddr_in *__addr,
  24918. - __const u_long __prog,
  24919. - __const u_long __vers,
  24920. - __const u_long __proc,
  24921. + const u_long __prog,
  24922. + const u_long __vers,
  24923. + const u_long __proc,
  24924. xdrproc_t __xdrargs,
  24925. caddr_t __argsp, xdrproc_t __xdrres,
  24926. caddr_t __resp, struct timeval __tout,
  24927. u_long *__port_ptr) __THROW;
  24928. -extern enum clnt_stat clnt_broadcast (__const u_long __prog,
  24929. - __const u_long __vers,
  24930. - __const u_long __proc, xdrproc_t __xargs,
  24931. +extern enum clnt_stat clnt_broadcast (const u_long __prog,
  24932. + const u_long __vers,
  24933. + const u_long __proc, xdrproc_t __xargs,
  24934. caddr_t __argsp, xdrproc_t __xresults,
  24935. caddr_t __resultsp,
  24936. resultproc_t __eachresult) __THROW;
  24937. extern u_short pmap_getport (struct sockaddr_in *__address,
  24938. - __const u_long __program,
  24939. - __const u_long __version, u_int __protocol)
  24940. + const u_long __program,
  24941. + const u_long __version, u_int __protocol)
  24942. __THROW;
  24943. libc_hidden_proto(pmap_getport)
  24944. diff -Nur uClibc-0.9.33.2/include/rpc/rpc.h uClibc/include/rpc/rpc.h
  24945. --- uClibc-0.9.33.2/include/rpc/rpc.h 2012-05-15 09:20:09.000000000 +0200
  24946. +++ uClibc/include/rpc/rpc.h 2014-02-03 12:32:56.000000000 +0100
  24947. @@ -38,19 +38,6 @@
  24948. #ifndef _RPC_RPC_H
  24949. #define _RPC_RPC_H 1
  24950. -#ifdef _LIBC
  24951. -/* Some adjustments to make the libc source from glibc
  24952. - * compile more easily with uClibc... */
  24953. -#ifndef __FORCE_GLIBC
  24954. -#define __FORCE_GLIBC
  24955. -#endif
  24956. -#ifndef _GNU_SOURCE
  24957. -#define _GNU_SOURCE
  24958. -#endif
  24959. -#define _(X) X
  24960. -#include <features.h>
  24961. -#endif
  24962. -
  24963. #include <rpc/types.h> /* some typedefs */
  24964. #include <netinet/in.h>
  24965. @@ -109,11 +96,6 @@
  24966. libc_hidden_proto(__rpc_thread_svc_max_pollfd)
  24967. #define svc_max_pollfd (*__rpc_thread_svc_max_pollfd ())
  24968. -extern bool_t xdr_accepted_reply (XDR *xdrs, struct accepted_reply *ar);
  24969. -libc_hidden_proto(xdr_accepted_reply)
  24970. -extern bool_t xdr_rejected_reply (XDR *xdrs, struct rejected_reply *rr);
  24971. -libc_hidden_proto(xdr_rejected_reply)
  24972. -
  24973. __END_DECLS
  24974. #endif /* rpc/rpc.h */
  24975. diff -Nur uClibc-0.9.33.2/include/rpc/rpc_msg.h uClibc/include/rpc/rpc_msg.h
  24976. --- uClibc-0.9.33.2/include/rpc/rpc_msg.h 2012-05-15 09:20:09.000000000 +0200
  24977. +++ uClibc/include/rpc/rpc_msg.h 2014-02-03 12:32:56.000000000 +0100
  24978. @@ -201,6 +201,26 @@
  24979. __THROW;
  24980. libc_hidden_proto(_seterr_reply)
  24981. +#ifdef __UCLIBC__
  24982. +/*
  24983. + * XDR routine to handle an accepted rpc reply.
  24984. + * xdr_accepted_reply(xdrs, rej)
  24985. + * XDR *xdrs;
  24986. + * struct accepted_reply *rej;
  24987. + */
  24988. +extern bool_t xdr_accepted_reply(XDR *__xdrs, struct accepted_reply *__ar);
  24989. +libc_hidden_proto(xdr_accepted_reply)
  24990. +
  24991. +/*
  24992. + * XDR routine to handle a rejected rpc reply.
  24993. + * xdr_rejected_reply(xdrs, rej)
  24994. + * XDR *xdrs;
  24995. + * struct rejected_reply *rej;
  24996. + */
  24997. +extern bool_t xdr_rejected_reply(XDR *__xdrs, struct rejected_reply *__rr);
  24998. +libc_hidden_proto(xdr_rejected_reply)
  24999. +#endif
  25000. +
  25001. __END_DECLS
  25002. #endif /* rpc/rpc_msg.h */
  25003. diff -Nur uClibc-0.9.33.2/include/rpc/types.h uClibc/include/rpc/types.h
  25004. --- uClibc-0.9.33.2/include/rpc/types.h 2012-05-15 09:20:09.000000000 +0200
  25005. +++ uClibc/include/rpc/types.h 2014-02-03 12:32:56.000000000 +0100
  25006. @@ -33,19 +33,6 @@
  25007. #ifndef _RPC_TYPES_H
  25008. #define _RPC_TYPES_H 1
  25009. -#ifdef _LIBC
  25010. -/* Some adjustments to make the libc source from glibc
  25011. - * compile more easily with uClibc... */
  25012. -#ifndef __FORCE_GLIBC
  25013. -#define __FORCE_GLIBC
  25014. -#endif
  25015. -#ifndef _GNU_SOURCE
  25016. -#define _GNU_SOURCE
  25017. -#endif
  25018. -#define _(X) X
  25019. -#endif
  25020. -#include <features.h>
  25021. -
  25022. typedef int bool_t;
  25023. typedef int enum_t;
  25024. /* This needs to be changed to uint32_t in the future */
  25025. diff -Nur uClibc-0.9.33.2/include/rpc/xdr.h uClibc/include/rpc/xdr.h
  25026. --- uClibc-0.9.33.2/include/rpc/xdr.h 2012-05-15 09:20:09.000000000 +0200
  25027. +++ uClibc/include/rpc/xdr.h 2014-02-03 12:32:56.000000000 +0100
  25028. @@ -36,14 +36,6 @@
  25029. #ifndef _RPC_XDR_H
  25030. #define _RPC_XDR_H 1
  25031. -#ifdef _LIBC
  25032. -/* Some adjustments to make the libc source from glibc
  25033. - * compile more easily with uClibc... */
  25034. -# ifndef __FORCE_GLIBC
  25035. -# define __FORCE_GLIBC
  25036. -# endif
  25037. -# define _(X) X
  25038. -#endif
  25039. #include <features.h>
  25040. #include <sys/types.h>
  25041. #include <rpc/types.h>
  25042. @@ -120,17 +112,21 @@
  25043. struct XDR
  25044. {
  25045. enum xdr_op x_op; /* operation; fast additional param */
  25046. + /* not sure whether non-const-ness is a part of the spec... if it is,
  25047. + * enclose "const" in #ifdef _LIBC / #endif
  25048. + * to make it effective only for libc compile */
  25049. + const
  25050. struct xdr_ops
  25051. {
  25052. bool_t (*x_getlong) (XDR *__xdrs, long *__lp);
  25053. /* get a long from underlying stream */
  25054. - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp);
  25055. + bool_t (*x_putlong) (XDR *__xdrs, const long *__lp);
  25056. /* put a long to " */
  25057. bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len);
  25058. /* get some bytes from " */
  25059. - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len);
  25060. + bool_t (*x_putbytes) (XDR *__xdrs, const char *__addr, u_int __len);
  25061. /* put some bytes to " */
  25062. - u_int (*x_getpostn) (__const XDR *__xdrs);
  25063. + u_int (*x_getpostn) (const XDR *__xdrs);
  25064. /* returns bytes off from beginning */
  25065. bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos);
  25066. /* lets you reposition the stream */
  25067. @@ -140,7 +136,7 @@
  25068. /* free privates of this xdr_stream */
  25069. bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip);
  25070. /* get a int from underlying stream */
  25071. - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip);
  25072. + bool_t (*x_putint32) (XDR *__xdrs, const int32_t *__ip);
  25073. /* put a int to " */
  25074. }
  25075. *x_ops;
  25076. @@ -320,6 +316,8 @@
  25077. extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW;
  25078. extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW;
  25079. extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW;
  25080. +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW;
  25081. +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW;
  25082. extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW;
  25083. libc_hidden_proto(xdr_bool)
  25084. extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW;
  25085. @@ -336,7 +334,7 @@
  25086. extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW;
  25087. libc_hidden_proto(xdr_string)
  25088. extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp,
  25089. - __const struct xdr_discrim *__choices,
  25090. + const struct xdr_discrim *__choices,
  25091. xdrproc_t dfault) __THROW;
  25092. libc_hidden_proto(xdr_union)
  25093. extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW;
  25094. @@ -372,7 +370,7 @@
  25095. */
  25096. /* XDR using memory buffers */
  25097. -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr,
  25098. +extern void xdrmem_create (XDR *__xdrs, const caddr_t __addr,
  25099. u_int __size, enum xdr_op __xop) __THROW;
  25100. libc_hidden_proto(xdrmem_create)
  25101. diff -Nur uClibc-0.9.33.2/include/sched.h uClibc/include/sched.h
  25102. --- uClibc-0.9.33.2/include/sched.h 2012-05-15 09:20:09.000000000 +0200
  25103. +++ uClibc/include/sched.h 2014-02-03 12:32:56.000000000 +0100
  25104. @@ -13,9 +13,8 @@
  25105. Lesser General Public License for more details.
  25106. You should have received a copy of the GNU Lesser General Public
  25107. - License along with the GNU C Library; if not, write to the Free
  25108. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25109. - 02111-1307 USA. */
  25110. + License along with the GNU C Library; if not, see
  25111. + <http://www.gnu.org/licenses/>. */
  25112. #ifndef _SCHED_H
  25113. #define _SCHED_H 1
  25114. @@ -40,7 +39,7 @@
  25115. __BEGIN_DECLS
  25116. /* Set scheduling parameters for a process. */
  25117. -extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
  25118. +extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
  25119. __THROW;
  25120. /* Retrieve scheduling parameters for a particular process. */
  25121. @@ -48,7 +47,7 @@
  25122. /* Set scheduling algorithm and/or parameters for a process. */
  25123. extern int sched_setscheduler (__pid_t __pid, int __policy,
  25124. - __const struct sched_param *__param) __THROW;
  25125. + const struct sched_param *__param) __THROW;
  25126. /* Retrieve scheduling algorithm for a particular purpose. */
  25127. extern int sched_getscheduler (__pid_t __pid) __THROW;
  25128. @@ -108,11 +107,19 @@
  25129. /* Set the CPU affinity for a task */
  25130. extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
  25131. - __const cpu_set_t *__cpuset) __THROW;
  25132. + const cpu_set_t *__cpuset) __THROW;
  25133. /* Get the CPU affinity for a task */
  25134. extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
  25135. cpu_set_t *__cpuset) __THROW;
  25136. +
  25137. +# ifdef _LIBC
  25138. +extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
  25139. + int __flags, void *__arg, ...);
  25140. +extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
  25141. + size_t __child_stack_size, int __flags, void *__arg, ...);
  25142. +# endif
  25143. +
  25144. #endif
  25145. __END_DECLS
  25146. diff -Nur uClibc-0.9.33.2/include/scsi/scsi.h uClibc/include/scsi/scsi.h
  25147. --- uClibc-0.9.33.2/include/scsi/scsi.h 2012-05-15 09:20:09.000000000 +0200
  25148. +++ uClibc/include/scsi/scsi.h 2014-02-03 12:32:56.000000000 +0100
  25149. @@ -12,9 +12,8 @@
  25150. Lesser General Public License for more details.
  25151. You should have received a copy of the GNU Lesser General Public
  25152. - License along with the GNU C Library; if not, write to the Free
  25153. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25154. - 02111-1307 USA. */
  25155. + License along with the GNU C Library; if not, see
  25156. + <http://www.gnu.org/licenses/>. */
  25157. /*
  25158. * This header file contains public constants and structures used by
  25159. diff -Nur uClibc-0.9.33.2/include/scsi/scsi_ioctl.h uClibc/include/scsi/scsi_ioctl.h
  25160. --- uClibc-0.9.33.2/include/scsi/scsi_ioctl.h 2012-05-15 09:20:09.000000000 +0200
  25161. +++ uClibc/include/scsi/scsi_ioctl.h 2014-02-03 12:32:56.000000000 +0100
  25162. @@ -12,9 +12,8 @@
  25163. Lesser General Public License for more details.
  25164. You should have received a copy of the GNU Lesser General Public
  25165. - License along with the GNU C Library; if not, write to the Free
  25166. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25167. - 02111-1307 USA. */
  25168. + License along with the GNU C Library; if not, see
  25169. + <http://www.gnu.org/licenses/>. */
  25170. #ifndef _SCSI_IOCTL_H
  25171. #define _SCSI_IOCTL_H
  25172. diff -Nur uClibc-0.9.33.2/include/scsi/sg.h uClibc/include/scsi/sg.h
  25173. --- uClibc-0.9.33.2/include/scsi/sg.h 2012-05-15 09:20:09.000000000 +0200
  25174. +++ uClibc/include/scsi/sg.h 2014-02-03 12:32:56.000000000 +0100
  25175. @@ -12,9 +12,8 @@
  25176. Lesser General Public License for more details.
  25177. You should have received a copy of the GNU Lesser General Public
  25178. - License along with the GNU C Library; if not, write to the Free
  25179. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25180. - 02111-1307 USA. */
  25181. + License along with the GNU C Library; if not, see
  25182. + <http://www.gnu.org/licenses/>. */
  25183. /*
  25184. History:
  25185. diff -Nur uClibc-0.9.33.2/include/search.h uClibc/include/search.h
  25186. --- uClibc-0.9.33.2/include/search.h 2012-05-15 09:20:09.000000000 +0200
  25187. +++ uClibc/include/search.h 2014-02-03 12:32:56.000000000 +0100
  25188. @@ -13,9 +13,8 @@
  25189. Lesser General Public License for more details.
  25190. You should have received a copy of the GNU Lesser General Public
  25191. - License along with the GNU C Library; if not, write to the Free
  25192. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25193. - 02111-1307 USA. */
  25194. + License along with the GNU C Library; if not, see
  25195. + <http://www.gnu.org/licenses/>. */
  25196. #ifndef _SEARCH_H
  25197. #define _SEARCH_H 1
  25198. @@ -52,7 +51,7 @@
  25199. /* For use with hsearch(3). */
  25200. #ifndef __COMPAR_FN_T
  25201. # define __COMPAR_FN_T
  25202. -typedef int (*__compar_fn_t) (__const void *, __const void *);
  25203. +typedef int (*__compar_fn_t) (const void *, const void *);
  25204. # ifdef __USE_GNU
  25205. typedef __compar_fn_t comparison_fn_t;
  25206. @@ -130,30 +129,30 @@
  25207. /* Search for an entry matching the given KEY in the tree pointed to
  25208. by *ROOTP and insert a new element if not found. */
  25209. -extern void *tsearch (__const void *__key, void **__rootp,
  25210. +extern void *tsearch (const void *__key, void **__rootp,
  25211. __compar_fn_t __compar);
  25212. libc_hidden_proto(tsearch)
  25213. /* Search for an entry matching the given KEY in the tree pointed to
  25214. by *ROOTP. If no matching entry is available return NULL. */
  25215. -extern void *tfind (__const void *__key, void *__const *__rootp,
  25216. +extern void *tfind (const void *__key, void *const *__rootp,
  25217. __compar_fn_t __compar);
  25218. libc_hidden_proto(tfind)
  25219. /* Remove the element matching KEY from the tree pointed to by *ROOTP. */
  25220. -extern void *tdelete (__const void *__restrict __key,
  25221. +extern void *tdelete (const void *__restrict __key,
  25222. void **__restrict __rootp,
  25223. __compar_fn_t __compar);
  25224. #ifndef __ACTION_FN_T
  25225. # define __ACTION_FN_T
  25226. -typedef void (*__action_fn_t) (__const void *__nodep, VISIT __value,
  25227. +typedef void (*__action_fn_t) (const void *__nodep, VISIT __value,
  25228. int __level);
  25229. #endif
  25230. /* Walk through the whole tree and call the ACTION callback for every node
  25231. or leaf. */
  25232. -extern void twalk (__const void *__root, __action_fn_t __action);
  25233. +extern void twalk (const void *__root, __action_fn_t __action);
  25234. #ifdef __USE_GNU
  25235. /* Callback type for function to free a tree node. If the keys are atomic
  25236. @@ -168,13 +167,13 @@
  25237. /* Perform linear search for KEY by comparing by COMPAR in an array
  25238. [BASE,BASE+NMEMB*SIZE). */
  25239. -extern void *lfind (__const void *__key, __const void *__base,
  25240. +extern void *lfind (const void *__key, const void *__base,
  25241. size_t *__nmemb, size_t __size, __compar_fn_t __compar);
  25242. libc_hidden_proto(lfind)
  25243. /* Perform linear search for KEY by comparing by COMPAR function in
  25244. array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */
  25245. -extern void *lsearch (__const void *__key, void *__base,
  25246. +extern void *lsearch (const void *__key, void *__base,
  25247. size_t *__nmemb, size_t __size, __compar_fn_t __compar);
  25248. __END_DECLS
  25249. diff -Nur uClibc-0.9.33.2/include/setjmp.h uClibc/include/setjmp.h
  25250. --- uClibc-0.9.33.2/include/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  25251. +++ uClibc/include/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  25252. @@ -1,4 +1,4 @@
  25253. -/* Copyright (C) 1991-1999, 2001 Free Software Foundation, Inc.
  25254. +/* Copyright (C) 1991-1999,2001,2002,2007,2009 Free Software Foundation, Inc.
  25255. This file is part of the GNU C Library.
  25256. The GNU C Library is free software; you can redistribute it and/or
  25257. @@ -12,9 +12,8 @@
  25258. Lesser General Public License for more details.
  25259. You should have received a copy of the GNU Lesser General Public
  25260. - License along with the GNU C Library; if not, write to the Free
  25261. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25262. - 02111-1307 USA. */
  25263. + License along with the GNU C Library; if not, see
  25264. + <http://www.gnu.org/licenses/>. */
  25265. /*
  25266. * ISO C99 Standard: 7.13 Nonlocal jumps <setjmp.h>
  25267. @@ -30,8 +29,9 @@
  25268. #include <bits/setjmp.h> /* Get `__jmp_buf'. */
  25269. #include <bits/sigset.h> /* Get `__sigset_t'. */
  25270. +
  25271. /* Calling environment, plus possibly a saved signal mask. */
  25272. -typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */
  25273. +struct __jmp_buf_tag
  25274. {
  25275. /* NOTE: The machine-dependent definitions of `__sigsetjmp'
  25276. assume that a `jmp_buf' begins with a `__jmp_buf' and that
  25277. @@ -40,23 +40,29 @@
  25278. __jmp_buf __jmpbuf; /* Calling environment. */
  25279. int __mask_was_saved; /* Saved the signal mask? */
  25280. __sigset_t __saved_mask; /* Saved signal mask. */
  25281. - } jmp_buf[1];
  25282. + };
  25283. +
  25284. +__BEGIN_NAMESPACE_STD
  25285. +
  25286. +typedef struct __jmp_buf_tag jmp_buf[1];
  25287. /* Store the calling environment in ENV, also saving the signal mask.
  25288. Return 0. */
  25289. extern int setjmp (jmp_buf __env) __THROW;
  25290. -/* Store the calling environment in ENV, not saving the signal mask.
  25291. - Return 0. */
  25292. -extern int _setjmp (jmp_buf __env) __THROW;
  25293. +__END_NAMESPACE_STD
  25294. /* Store the calling environment in ENV, also saving the
  25295. signal mask if SAVEMASK is nonzero. Return 0.
  25296. This is the internal name for `sigsetjmp'. */
  25297. -extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW;
  25298. +extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW;
  25299. #ifndef __FAVOR_BSD
  25300. +/* Store the calling environment in ENV, not saving the signal mask.
  25301. + Return 0. */
  25302. +extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW;
  25303. +
  25304. /* Do not save the signal mask. This is equivalent to the `_setjmp'
  25305. BSD function. */
  25306. # define setjmp(env) _setjmp (env)
  25307. @@ -68,15 +74,20 @@
  25308. #endif /* Favor BSD. */
  25309. +__BEGIN_NAMESPACE_STD
  25310. +
  25311. /* Jump to the environment saved in ENV, making the
  25312. `setjmp' call there return VAL, or 1 if VAL is 0. */
  25313. -extern void longjmp (jmp_buf __env, int __val)
  25314. +extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
  25315. __THROW __attribute__ ((__noreturn__));
  25316. +
  25317. +__END_NAMESPACE_STD
  25318. +
  25319. #if defined __USE_BSD || defined __USE_XOPEN
  25320. /* Same. Usually `_longjmp' is used with `_setjmp', which does not save
  25321. the signal mask. But it is how ENV was saved that determines whether
  25322. `longjmp' restores the mask; `_longjmp' is just an alias. */
  25323. -extern void _longjmp (jmp_buf __env, int __val)
  25324. +extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
  25325. __THROW __attribute__ ((__noreturn__));
  25326. #endif
  25327. @@ -85,7 +96,7 @@
  25328. /* Use the same type for `jmp_buf' and `sigjmp_buf'.
  25329. The `__mask_was_saved' flag determines whether
  25330. or not `longjmp' will restore the signal mask. */
  25331. -typedef jmp_buf sigjmp_buf;
  25332. +typedef struct __jmp_buf_tag sigjmp_buf[1];
  25333. /* Store the calling environment in ENV, also saving the
  25334. signal mask if SAVEMASK is nonzero. Return 0. */
  25335. @@ -101,4 +112,16 @@
  25336. __END_DECLS
  25337. +#ifdef _LIBC
  25338. +extern void __longjmp(__jmp_buf __env, int __val) attribute_noreturn;
  25339. +libc_hidden_proto(__longjmp)
  25340. +extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  25341. +extern __typeof(siglongjmp) __libc_siglongjmp attribute_noreturn;
  25342. +extern void _longjmp_unwind(jmp_buf __env, int __val);
  25343. +libc_hidden_proto(_longjmp_unwind)
  25344. +extern int __sigjmp_save(sigjmp_buf __env, int __savemask) attribute_hidden;
  25345. +/* We use the normal longjmp for unwinding */
  25346. +# define __libc_unwind_longjmp(buf, val) __libc_longjmp(buf, val)
  25347. +#endif
  25348. +
  25349. #endif /* setjmp.h */
  25350. diff -Nur uClibc-0.9.33.2/include/sgtty.h uClibc/include/sgtty.h
  25351. --- uClibc-0.9.33.2/include/sgtty.h 2012-05-15 09:20:09.000000000 +0200
  25352. +++ uClibc/include/sgtty.h 2014-02-03 12:32:56.000000000 +0100
  25353. @@ -12,9 +12,8 @@
  25354. Lesser General Public License for more details.
  25355. You should have received a copy of the GNU Lesser General Public
  25356. - License along with the GNU C Library; if not, write to the Free
  25357. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25358. - 02111-1307 USA. */
  25359. + License along with the GNU C Library; if not, see
  25360. + <http://www.gnu.org/licenses/>. */
  25361. #ifndef _SGTTY_H
  25362. #define _SGTTY_H 1
  25363. @@ -38,7 +37,7 @@
  25364. extern int gtty (int __fd, struct sgttyb *__params) __THROW;
  25365. /* Set the terminal parameters associated with FD to *PARAMS. */
  25366. -extern int stty (int __fd, __const struct sgttyb *__params) __THROW;
  25367. +extern int stty (int __fd, const struct sgttyb *__params) __THROW;
  25368. #endif
  25369. diff -Nur uClibc-0.9.33.2/include/shadow.h uClibc/include/shadow.h
  25370. --- uClibc-0.9.33.2/include/shadow.h 2012-05-15 09:20:09.000000000 +0200
  25371. +++ uClibc/include/shadow.h 2014-02-03 12:32:56.000000000 +0100
  25372. @@ -12,9 +12,8 @@
  25373. Lesser General Public License for more details.
  25374. You should have received a copy of the GNU Lesser General Public
  25375. - License along with the GNU C Library; if not, write to the Free
  25376. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25377. - 02111-1307 USA. */
  25378. + License along with the GNU C Library; if not, see
  25379. + <http://www.gnu.org/licenses/>. */
  25380. /* Declaration of types and functions for shadow password suite. */
  25381. @@ -84,7 +83,7 @@
  25382. cancellation point. But due to similarity with an POSIX interface
  25383. or due to the implementation it is a cancellation point and
  25384. therefore not marked with __THROW. */
  25385. -extern struct spwd *getspnam (__const char *__name);
  25386. +extern struct spwd *getspnam (const char *__name);
  25387. /* Read shadow entry from STRING.
  25388. @@ -92,7 +91,7 @@
  25389. cancellation point. But due to similarity with an POSIX interface
  25390. or due to the implementation it is a cancellation point and
  25391. therefore not marked with __THROW. */
  25392. -extern struct spwd *sgetspent (__const char *__string);
  25393. +extern struct spwd *sgetspent (const char *__string);
  25394. /* Read next shadow entry from STREAM.
  25395. @@ -108,7 +107,7 @@
  25396. cancellation point. But due to similarity with an POSIX interface
  25397. or due to the implementation it is a cancellation point and
  25398. therefore not marked with __THROW. */
  25399. -extern int putspent (__const struct spwd *__p, FILE *__stream);
  25400. +extern int putspent (const struct spwd *__p, FILE *__stream);
  25401. #ifdef __USE_MISC
  25402. @@ -122,12 +121,12 @@
  25403. size_t __buflen, struct spwd **__result);
  25404. libc_hidden_proto(getspent_r)
  25405. -extern int getspnam_r (__const char *__name, struct spwd *__result_buf,
  25406. +extern int getspnam_r (const char *__name, struct spwd *__result_buf,
  25407. char *__buffer, size_t __buflen,
  25408. struct spwd **__result);
  25409. libc_hidden_proto(getspnam_r)
  25410. -extern int sgetspent_r (__const char *__string, struct spwd *__result_buf,
  25411. +extern int sgetspent_r (const char *__string, struct spwd *__result_buf,
  25412. char *__buffer, size_t __buflen,
  25413. struct spwd **__result);
  25414. libc_hidden_proto(sgetspent_r)
  25415. diff -Nur uClibc-0.9.33.2/include/signal.h uClibc/include/signal.h
  25416. --- uClibc-0.9.33.2/include/signal.h 2012-05-15 09:20:09.000000000 +0200
  25417. +++ uClibc/include/signal.h 2014-02-03 12:32:56.000000000 +0100
  25418. @@ -1,4 +1,4 @@
  25419. -/* Copyright (C) 1991-2003, 2004 Free Software Foundation, Inc.
  25420. +/* Copyright (C) 1991-2003, 2004, 2007, 2009 Free Software Foundation, Inc.
  25421. This file is part of the GNU C Library.
  25422. The GNU C Library is free software; you can redistribute it and/or
  25423. @@ -12,9 +12,8 @@
  25424. Lesser General Public License for more details.
  25425. You should have received a copy of the GNU Lesser General Public
  25426. - License along with the GNU C Library; if not, write to the Free
  25427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25428. - 02111-1307 USA. */
  25429. + License along with the GNU C Library; if not, see
  25430. + <http://www.gnu.org/licenses/>. */
  25431. /*
  25432. * ISO C99 Standard: 7.14 Signal handling <signal.h>
  25433. @@ -87,15 +86,27 @@
  25434. typedef __pid_t pid_t;
  25435. # define __pid_t_defined
  25436. # endif
  25437. +#endif
  25438. +#ifdef __USE_XOPEN
  25439. # ifndef __uid_t_defined
  25440. typedef __uid_t uid_t;
  25441. # define __uid_t_defined
  25442. # endif
  25443. #endif /* Unix98 */
  25444. +#if defined __USE_POSIX199309 && defined __UCLIBC_HAS_REALTIME__
  25445. +/* We need `struct timespec' later on. */
  25446. +# define __need_timespec
  25447. +# include <time.h>
  25448. +
  25449. +/* Get the `siginfo_t' type plus the needed symbols. */
  25450. +# include <bits/siginfo.h>
  25451. +#endif
  25452. +
  25453. /* Type of a signal handler. */
  25454. typedef void (*__sighandler_t) (int);
  25455. +
  25456. #if defined __UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL__
  25457. /* The X/Open definition of `signal' specifies the SVID semantic. Use
  25458. the additional function `sysv_signal' when X/Open compatibility is
  25459. @@ -156,17 +167,23 @@
  25460. libc_hidden_proto(raise)
  25461. __END_NAMESPACE_STD
  25462. -#ifdef __USE_SVID
  25463. +#if 0 /*def __USE_SVID*/
  25464. /* SVID names for the same things. */
  25465. extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
  25466. __THROW;
  25467. extern int gsignal (int __sig) __THROW;
  25468. #endif /* Use SVID. */
  25469. -#ifdef __USE_MISC
  25470. +/* glibc guards the next two wrong with __USE_XOPEN2K */
  25471. +#if defined __USE_MISC || defined __USE_XOPEN2K8
  25472. /* Print a message describing the meaning of the given signal number. */
  25473. -extern void psignal (int __sig, __const char *__s);
  25474. -#endif /* Use misc. */
  25475. +extern void psignal (int __sig, const char *__s);
  25476. +#endif /* Use misc or POSIX 2008. */
  25477. +
  25478. +#if 0 /*def __USE_XOPEN2K8*/
  25479. +/* Print a message describing the meaning of the given signal information. */
  25480. +extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
  25481. +#endif /* POSIX 2008. */
  25482. #ifdef __UCLIBC_SUSV4_LEGACY__
  25483. /* The `sigpause' function has two different interfaces. The original
  25484. @@ -177,23 +194,25 @@
  25485. This function is a cancellation point and therefore not marked with
  25486. __THROW. */
  25487. -extern int __sigpause (int __sig_or_mask, int __is_sig);
  25488. -libc_hidden_proto(__sigpause)
  25489. +/*extern int __sigpause (int __sig_or_mask, int __is_sig);*/
  25490. #ifdef __FAVOR_BSD
  25491. /* Set the mask of blocked signals to MASK,
  25492. wait for a signal to arrive, and then restore the mask. */
  25493. -extern int sigpause (int __mask) __THROW __attribute_deprecated__;
  25494. -# define sigpause(mask) __sigpause ((mask), 0)
  25495. +/*extern int sigpause (int __mask) __THROW __attribute_deprecated__;
  25496. +# define sigpause(mask) __sigpause ((mask), 0)*/
  25497. +/* uClibc note: BSD sigpause is available as __bsd_sigpause.
  25498. + * It is intentionally not prototyped */
  25499. #else
  25500. # ifdef __USE_XOPEN
  25501. /* Remove a signal from the signal mask and suspend the process. */
  25502. -# define sigpause(sig) __sigpause ((sig), 1)
  25503. +extern int sigpause(int __sig);
  25504. +/*# define sigpause(sig) __sigpause ((sig), 1)*/
  25505. # endif
  25506. #endif
  25507. #endif /* __UCLIBC_SUSV4_LEGACY__ */
  25508. -#ifdef __USE_BSD
  25509. +#if 0 /*def __USE_BSD*/
  25510. /* None of the following functions should be used anymore. They are here
  25511. only for compatibility. A single word (`int') is not guaranteed to be
  25512. enough to hold a complete signal mask and therefore these functions
  25513. @@ -203,14 +222,10 @@
  25514. # define sigmask(sig) __sigmask(sig)
  25515. /* Block signals in MASK, returning the old mask. */
  25516. -extern int sigblock (int __mask) __THROW;
  25517. -/* collides with libc_hidden_proto: __attribute_deprecated__; */
  25518. -libc_hidden_proto(sigblock)
  25519. +extern int sigblock (int __mask) __THROW __attribute_deprecated__;
  25520. /* Set the mask of blocked signals to MASK, returning the old mask. */
  25521. -extern int sigsetmask (int __mask) __THROW;
  25522. -/* collides with libc_hidden_proto: __attribute_deprecated__; */
  25523. -libc_hidden_proto(sigsetmask)
  25524. +extern int sigsetmask (int __mask) __THROW __attribute_deprecated__;
  25525. /* Return currently selected signal mask. */
  25526. extern int siggetmask (void) __THROW __attribute_deprecated__;
  25527. @@ -228,22 +243,11 @@
  25528. #ifdef __USE_POSIX
  25529. -# ifdef __USE_POSIX199309
  25530. -/* We need `struct timespec' later on. */
  25531. -# define __need_timespec
  25532. -# include <time.h>
  25533. -
  25534. -/* Get the `siginfo_t' type plus the needed symbols. */
  25535. -# include <bits/siginfo.h>
  25536. -# endif
  25537. -
  25538. /* Clear all signals from SET. */
  25539. extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
  25540. -libc_hidden_proto(sigemptyset)
  25541. /* Set all signals in SET. */
  25542. extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1));
  25543. -libc_hidden_proto(sigfillset)
  25544. /* Add SIGNO to SET. */
  25545. extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
  25546. @@ -254,20 +258,20 @@
  25547. libc_hidden_proto(sigdelset)
  25548. /* Return 1 if SIGNO is in SET, 0 if not. */
  25549. -extern int sigismember (__const sigset_t *__set, int __signo)
  25550. +extern int sigismember (const sigset_t *__set, int __signo)
  25551. __THROW __nonnull ((1));
  25552. # ifdef __USE_GNU
  25553. /* Return non-empty value is SET is not empty. */
  25554. -extern int sigisemptyset (__const sigset_t *__set) __THROW __nonnull ((1));
  25555. +extern int sigisemptyset (const sigset_t *__set) __THROW __nonnull ((1));
  25556. /* Build new signal set by combining the two inputs set using logical AND. */
  25557. -extern int sigandset (sigset_t *__set, __const sigset_t *__left,
  25558. - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  25559. +extern int sigandset (sigset_t *__set, const sigset_t *__left,
  25560. + const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  25561. /* Build new signal set by combining the two inputs set using logical OR. */
  25562. -extern int sigorset (sigset_t *__set, __const sigset_t *__left,
  25563. - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  25564. +extern int sigorset (sigset_t *__set, const sigset_t *__left,
  25565. + const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  25566. # endif /* GNU */
  25567. /* Get the system-specific definitions of `struct sigaction'
  25568. @@ -275,7 +279,7 @@
  25569. # include <bits/sigaction.h>
  25570. /* Get and/or change the set of blocked signals. */
  25571. -extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
  25572. +extern int sigprocmask (int __how, const sigset_t *__restrict __set,
  25573. sigset_t *__restrict __oset) __THROW;
  25574. libc_hidden_proto(sigprocmask)
  25575. @@ -284,14 +288,50 @@
  25576. This function is a cancellation point and therefore not marked with
  25577. __THROW. */
  25578. -extern int sigsuspend (__const sigset_t *__set) __nonnull ((1));
  25579. +extern int sigsuspend (const sigset_t *__set) __nonnull ((1));
  25580. +#ifdef _LIBC
  25581. +extern __typeof(sigsuspend) __sigsuspend_nocancel attribute_hidden;
  25582. libc_hidden_proto(sigsuspend)
  25583. +#endif
  25584. /* Get and/or set the action for signal SIG. */
  25585. -extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
  25586. +extern int sigaction (int __sig, const struct sigaction *__restrict __act,
  25587. struct sigaction *__restrict __oact) __THROW;
  25588. +#ifdef _LIBC
  25589. +# if 0 /* this is in headers */
  25590. +/* In uclibc, userspace struct sigaction is identical to
  25591. + * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  25592. + * See sigaction.h
  25593. + */
  25594. +struct old_kernel_sigaction;
  25595. +extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
  25596. + struct old_kernel_sigaction *) attribute_hidden;
  25597. +# else /* this is how the function is built */
  25598. +extern __typeof(sigaction) __syscall_sigaction attribute_hidden;
  25599. +# endif
  25600. +# define __need_size_t
  25601. +# include <stddef.h>
  25602. +/* candidate for attribute_hidden, if NPTL would behave */
  25603. +extern int __syscall_rt_sigaction(int, const struct sigaction *,
  25604. + struct sigaction *, size_t)
  25605. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  25606. + attribute_hidden
  25607. +# endif
  25608. + ;
  25609. +extern __typeof(sigaction) __libc_sigaction;
  25610. libc_hidden_proto(sigaction)
  25611. +# ifdef __mips__
  25612. +# define _KERNEL_NSIG_WORDS (_NSIG / _MIPS_SZLONG)
  25613. +typedef struct {
  25614. + unsigned long sig[_KERNEL_NSIG_WORDS];
  25615. +} kernel_sigset_t;
  25616. +# define __SYSCALL_SIGSET_T_SIZE (sizeof(kernel_sigset_t))
  25617. +# else
  25618. +# define __SYSCALL_SIGSET_T_SIZE (_NSIG / 8)
  25619. +# endif
  25620. +#endif
  25621. +
  25622. /* Put in SET all signals that are blocked and waiting to be delivered. */
  25623. extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
  25624. @@ -300,7 +340,7 @@
  25625. This function is a cancellation point and therefore not marked with
  25626. __THROW. */
  25627. -extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
  25628. +extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
  25629. __nonnull ((1, 2));
  25630. # if defined __USE_POSIX199309 && defined __UCLIBC_HAS_REALTIME__
  25631. @@ -308,30 +348,29 @@
  25632. This function is a cancellation point and therefore not marked with
  25633. __THROW. */
  25634. -extern int sigwaitinfo (__const sigset_t *__restrict __set,
  25635. +extern int sigwaitinfo (const sigset_t *__restrict __set,
  25636. siginfo_t *__restrict __info) __nonnull ((1));
  25637. #ifdef _LIBC
  25638. extern __typeof(sigwaitinfo) __sigwaitinfo attribute_hidden;
  25639. #endif
  25640. -libc_hidden_proto(sigwaitinfo)
  25641. /* Select any of pending signals from SET and place information in INFO.
  25642. Wait the time specified by TIMEOUT if no signal is pending.
  25643. This function is a cancellation point and therefore not marked with
  25644. __THROW. */
  25645. -extern int sigtimedwait (__const sigset_t *__restrict __set,
  25646. +extern int sigtimedwait (const sigset_t *__restrict __set,
  25647. siginfo_t *__restrict __info,
  25648. - __const struct timespec *__restrict __timeout)
  25649. + const struct timespec *__restrict __timeout)
  25650. __nonnull ((1));
  25651. #ifdef _LIBC
  25652. -extern __typeof(sigtimedwait) __sigtimedwait attribute_hidden;
  25653. -#endif
  25654. +extern __typeof(sigtimedwait) __sigtimedwait_nocancel attribute_hidden;
  25655. libc_hidden_proto(sigtimedwait)
  25656. +#endif
  25657. /* Send signal SIG to the process PID. Associate data in VAL with the
  25658. signal. */
  25659. -extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
  25660. +extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
  25661. __THROW;
  25662. # endif /* Use POSIX 199306. */
  25663. @@ -343,9 +382,10 @@
  25664. /* Names of the signals. This variable exists only for compatibility.
  25665. Use `strsignal' instead (see <string.h>). */
  25666. # define _sys_siglist sys_siglist
  25667. -extern __const char *__const sys_siglist[_NSIG];
  25668. +extern const char *const sys_siglist[_NSIG];
  25669. # endif
  25670. +#ifndef __UCLIBC_STRICT_HEADERS__
  25671. /* Structure passed to `sigvec'. */
  25672. struct sigvec
  25673. {
  25674. @@ -360,27 +400,34 @@
  25675. # define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */
  25676. # define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */
  25677. # define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */
  25678. +#endif
  25679. +#if 0
  25680. /* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member
  25681. of VEC. The signals in `sv_mask' will be blocked while the handler runs.
  25682. If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be
  25683. reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL,
  25684. it is filled in with the old information for SIG. */
  25685. -extern int sigvec (int __sig, __const struct sigvec *__vec,
  25686. +extern int sigvec (int __sig, const struct sigvec *__vec,
  25687. struct sigvec *__ovec) __THROW;
  25688. +#endif
  25689. /* Get machine-dependent `struct sigcontext' and signal subcodes. */
  25690. # include <bits/sigcontext.h>
  25691. +#if 0
  25692. /* Restore the state saved in SCP. */
  25693. extern int sigreturn (struct sigcontext *__scp) __THROW;
  25694. +#endif
  25695. #endif /* use BSD. */
  25696. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  25697. +# define __need_size_t
  25698. +# include <stddef.h>
  25699. # ifdef __UCLIBC_SUSV4_LEGACY__
  25700. /* If INTERRUPT is nonzero, make signal SIG interrupt system calls
  25701. @@ -406,7 +453,7 @@
  25702. /* Alternate signal handler stack interface.
  25703. This interface should always be preferred over `sigstack'. */
  25704. -extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
  25705. +extern int sigaltstack (const struct sigaltstack *__restrict __ss,
  25706. struct sigaltstack *__restrict __oss) __THROW;
  25707. #endif /* use BSD or X/Open Unix. */
  25708. @@ -442,6 +489,13 @@
  25709. /* Return number of available real-time signal with lowest priority. */
  25710. extern int __libc_current_sigrtmax (void) __THROW;
  25711. +#ifdef _LIBC
  25712. +extern sigset_t _sigintr attribute_hidden;
  25713. +/* simplified version without parameter checking */
  25714. +# include <string.h>
  25715. +# undef __sigemptyset
  25716. +# define __sigemptyset(ss) (memset(ss, '\0', sizeof(sigset_t)), 0)
  25717. +#endif
  25718. #endif /* signal.h */
  25719. __END_DECLS
  25720. diff -Nur uClibc-0.9.33.2/include/spawn.h uClibc/include/spawn.h
  25721. --- uClibc-0.9.33.2/include/spawn.h 1970-01-01 01:00:00.000000000 +0100
  25722. +++ uClibc/include/spawn.h 2014-02-03 12:32:56.000000000 +0100
  25723. @@ -0,0 +1,289 @@
  25724. +/* Definitions for POSIX spawn interface.
  25725. + Copyright (C) 2000,2003,2004,2009,2011,2012 Free Software Foundation, Inc.
  25726. + This file is part of the GNU C Library.
  25727. +
  25728. + The GNU C Library is free software; you can redistribute it and/or
  25729. + modify it under the terms of the GNU Lesser General Public
  25730. + License as published by the Free Software Foundation; either
  25731. + version 2.1 of the License, or (at your option) any later version.
  25732. +
  25733. + The GNU C Library is distributed in the hope that it will be useful,
  25734. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  25735. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  25736. + Lesser General Public License for more details.
  25737. +
  25738. + You should have received a copy of the GNU Lesser General Public
  25739. + License along with the GNU C Library; if not, see
  25740. + <http://www.gnu.org/licenses/>. */
  25741. +
  25742. +#ifndef _SPAWN_H
  25743. +#define _SPAWN_H 1
  25744. +
  25745. +#include <features.h>
  25746. +#include <sched.h>
  25747. +#define __need_sigset_t
  25748. +#include <signal.h>
  25749. +#include <sys/types.h>
  25750. +
  25751. +/* For the tiny inlines (errno/free/memset). */
  25752. +#include <errno.h>
  25753. +#include <string.h>
  25754. +#include <stdlib.h>
  25755. +
  25756. +
  25757. +/* Data structure to contain attributes for thread creation. */
  25758. +typedef struct
  25759. +{
  25760. + short int __flags;
  25761. + pid_t __pgrp;
  25762. + sigset_t __sd;
  25763. + sigset_t __ss;
  25764. + struct sched_param __sp;
  25765. + int __policy;
  25766. + int __pad[16];
  25767. +} posix_spawnattr_t;
  25768. +
  25769. +
  25770. +/* Data structure to contain information about the actions to be
  25771. + performed in the new process with respect to file descriptors. */
  25772. +typedef struct
  25773. +{
  25774. + int __allocated;
  25775. + int __used;
  25776. + struct __spawn_action *__actions;
  25777. + int __pad[16];
  25778. +} posix_spawn_file_actions_t;
  25779. +
  25780. +
  25781. +/* Flags to be set in the `posix_spawnattr_t'. */
  25782. +#define POSIX_SPAWN_RESETIDS 0x01
  25783. +#define POSIX_SPAWN_SETPGROUP 0x02
  25784. +#define POSIX_SPAWN_SETSIGDEF 0x04
  25785. +#define POSIX_SPAWN_SETSIGMASK 0x08
  25786. +#define POSIX_SPAWN_SETSCHEDPARAM 0x10
  25787. +#define POSIX_SPAWN_SETSCHEDULER 0x20
  25788. +#ifdef __USE_GNU
  25789. +# define POSIX_SPAWN_USEVFORK 0x40
  25790. +#endif
  25791. +
  25792. +
  25793. +#define __POSIX_SPAWN_MASK (POSIX_SPAWN_RESETIDS \
  25794. + | POSIX_SPAWN_SETPGROUP \
  25795. + | POSIX_SPAWN_SETSIGDEF \
  25796. + | POSIX_SPAWN_SETSIGMASK \
  25797. + | POSIX_SPAWN_SETSCHEDPARAM \
  25798. + | POSIX_SPAWN_SETSCHEDULER \
  25799. + | POSIX_SPAWN_USEVFORK)
  25800. +
  25801. +__BEGIN_DECLS
  25802. +
  25803. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  25804. + Before running the process perform the actions described in FILE-ACTIONS.
  25805. +
  25806. + This function is a possible cancellation point and therefore not
  25807. + marked with __THROW. */
  25808. +extern int posix_spawn (pid_t *__restrict __pid,
  25809. + const char *__restrict __path,
  25810. + const posix_spawn_file_actions_t *__restrict
  25811. + __file_actions,
  25812. + const posix_spawnattr_t *__restrict __attrp,
  25813. + char *const __argv[__restrict_arr],
  25814. + char *const __envp[__restrict_arr]);
  25815. +
  25816. +/* Similar to `posix_spawn' but search for FILE in the PATH.
  25817. +
  25818. + This function is a possible cancellation point and therefore not
  25819. + marked with __THROW. */
  25820. +extern int posix_spawnp (pid_t *__pid, const char *__file,
  25821. + const posix_spawn_file_actions_t *__file_actions,
  25822. + const posix_spawnattr_t *__attrp,
  25823. + char *const __argv[], char *const __envp[]);
  25824. +
  25825. +
  25826. +/* Initialize data structure with attributes for `spawn' to default values. */
  25827. +static inline
  25828. +int posix_spawnattr_init (posix_spawnattr_t *__attr)
  25829. +{
  25830. + memset (__attr, 0, sizeof (*__attr));
  25831. + return 0;
  25832. +}
  25833. +
  25834. +/* Free resources associated with ATTR. */
  25835. +static inline
  25836. +int posix_spawnattr_destroy (posix_spawnattr_t *__attr)
  25837. +{
  25838. + return 0;
  25839. +}
  25840. +
  25841. +/* Store signal mask for signals with default handling from ATTR in
  25842. + SIGDEFAULT. */
  25843. +static inline
  25844. +int posix_spawnattr_getsigdefault (const posix_spawnattr_t *
  25845. + __restrict __attr,
  25846. + sigset_t *__restrict __sigdefault)
  25847. +{
  25848. + memcpy (__sigdefault, &__attr->__sd, sizeof (sigset_t));
  25849. + return 0;
  25850. +}
  25851. +
  25852. +/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */
  25853. +static inline
  25854. +int posix_spawnattr_setsigdefault (posix_spawnattr_t *__restrict __attr,
  25855. + const sigset_t *__restrict
  25856. + __sigdefault)
  25857. +{
  25858. + memcpy (&__attr->__sd, __sigdefault, sizeof (sigset_t));
  25859. + return 0;
  25860. +}
  25861. +
  25862. +/* Store signal mask for the new process from ATTR in SIGMASK. */
  25863. +static inline
  25864. +int posix_spawnattr_getsigmask (const posix_spawnattr_t *__restrict
  25865. + __attr,
  25866. + sigset_t *__restrict __sigmask)
  25867. +{
  25868. + memcpy (__sigmask, &__attr->__ss, sizeof (sigset_t));
  25869. + return 0;
  25870. +}
  25871. +
  25872. +/* Set signal mask for the new process in ATTR to SIGMASK. */
  25873. +static inline
  25874. +int posix_spawnattr_setsigmask (posix_spawnattr_t *__restrict __attr,
  25875. + const sigset_t *__restrict __sigmask)
  25876. +{
  25877. + memcpy (&__attr->__ss, __sigmask, sizeof (sigset_t));
  25878. + return 0;
  25879. +}
  25880. +
  25881. +/* Get flag word from the attribute structure. */
  25882. +static inline
  25883. +int posix_spawnattr_getflags (const posix_spawnattr_t *__restrict
  25884. + __attr,
  25885. + short int *__restrict __flags)
  25886. +{
  25887. + *__flags = __attr->__flags;
  25888. + return 0;
  25889. +}
  25890. +
  25891. +/* Store flags in the attribute structure. */
  25892. +static inline
  25893. +int posix_spawnattr_setflags (posix_spawnattr_t *_attr,
  25894. + short int __flags)
  25895. +{
  25896. + /* Check no invalid bits are set. */
  25897. + if (__flags & ~__POSIX_SPAWN_MASK)
  25898. + return EINVAL;
  25899. +
  25900. + _attr->__flags = __flags;
  25901. + return 0;
  25902. +}
  25903. +
  25904. +/* Get process group ID from the attribute structure. */
  25905. +static inline
  25906. +int posix_spawnattr_getpgroup (const posix_spawnattr_t *__restrict
  25907. + __attr, pid_t *__restrict __pgroup)
  25908. +{
  25909. + *__pgroup = __attr->__pgrp;
  25910. + return 0;
  25911. +}
  25912. +
  25913. +/* Store process group ID in the attribute structure. */
  25914. +static inline
  25915. +int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr,
  25916. + pid_t __pgroup)
  25917. +{
  25918. + __attr->__pgrp = __pgroup;
  25919. + return 0;
  25920. +}
  25921. +
  25922. +/* Get scheduling policy from the attribute structure. */
  25923. +static inline
  25924. +int posix_spawnattr_getschedpolicy (const posix_spawnattr_t *
  25925. + __restrict __attr,
  25926. + int *__restrict __schedpolicy)
  25927. +{
  25928. + *__schedpolicy = __attr->__policy;
  25929. + return 0;
  25930. +}
  25931. +
  25932. +/* Store scheduling policy in the attribute structure. */
  25933. +static inline
  25934. +int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr,
  25935. + int __schedpolicy)
  25936. +{
  25937. + switch (__schedpolicy) {
  25938. + case SCHED_OTHER:
  25939. + case SCHED_FIFO:
  25940. + case SCHED_RR:
  25941. + break;
  25942. + default:
  25943. + return EINVAL;
  25944. + }
  25945. +
  25946. + __attr->__policy = __schedpolicy;
  25947. + return 0;
  25948. +}
  25949. +
  25950. +/* Get scheduling parameters from the attribute structure. */
  25951. +static inline
  25952. +int posix_spawnattr_getschedparam (const posix_spawnattr_t *
  25953. + __restrict __attr,
  25954. + struct sched_param *__restrict
  25955. + __schedparam)
  25956. +{
  25957. + memcpy (__schedparam, &__attr->__sp, sizeof (__attr->__sp));
  25958. + return 0;
  25959. +}
  25960. +
  25961. +/* Store scheduling parameters in the attribute structure. */
  25962. +static inline
  25963. +int posix_spawnattr_setschedparam (posix_spawnattr_t *__restrict __attr,
  25964. + const struct sched_param *
  25965. + __restrict __schedparam)
  25966. +{
  25967. + __attr->__sp = *__schedparam;
  25968. + return 0;
  25969. +}
  25970. +
  25971. +/* Initialize data structure for file attribute for `spawn' call. */
  25972. +static inline
  25973. +int posix_spawn_file_actions_init (posix_spawn_file_actions_t *
  25974. + __file_actions)
  25975. +{
  25976. + memset (__file_actions, 0, sizeof (*__file_actions));
  25977. + return 0;
  25978. +}
  25979. +
  25980. +/* Free resources associated with FILE-ACTIONS. */
  25981. +static inline
  25982. +int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *
  25983. + __file_actions)
  25984. +{
  25985. + free (__file_actions->__actions);
  25986. + return 0;
  25987. +}
  25988. +
  25989. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  25990. + `open' for the given file during the `spawn' call. */
  25991. +extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t *
  25992. + __restrict __file_actions,
  25993. + int __fd,
  25994. + const char *__restrict __path,
  25995. + int __oflag, mode_t __mode)
  25996. + __THROW;
  25997. +
  25998. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  25999. + `close' for the given file descriptor during the `spawn' call. */
  26000. +extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *
  26001. + __file_actions, int __fd)
  26002. + __THROW;
  26003. +
  26004. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  26005. + `dup2' for the given file descriptors during the `spawn' call. */
  26006. +extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *
  26007. + __file_actions,
  26008. + int __fd, int __newfd) __THROW;
  26009. +
  26010. +__END_DECLS
  26011. +
  26012. +#endif /* spawn.h */
  26013. diff -Nur uClibc-0.9.33.2/include/stdint.h uClibc/include/stdint.h
  26014. --- uClibc-0.9.33.2/include/stdint.h 2012-05-15 09:20:09.000000000 +0200
  26015. +++ uClibc/include/stdint.h 2014-02-03 12:32:56.000000000 +0100
  26016. @@ -12,9 +12,8 @@
  26017. Lesser General Public License for more details.
  26018. You should have received a copy of the GNU Lesser General Public
  26019. - License along with the GNU C Library; if not, write to the Free
  26020. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26021. - 02111-1307 USA. */
  26022. + License along with the GNU C Library; if not, see
  26023. + <http://www.gnu.org/licenses/>. */
  26024. /*
  26025. * ISO C99: 7.18 Integer types <stdint.h>
  26026. diff -Nur uClibc-0.9.33.2/include/stdio_ext.h uClibc/include/stdio_ext.h
  26027. --- uClibc-0.9.33.2/include/stdio_ext.h 2012-05-15 09:20:09.000000000 +0200
  26028. +++ uClibc/include/stdio_ext.h 2014-02-03 12:32:56.000000000 +0100
  26029. @@ -13,9 +13,8 @@
  26030. Lesser General Public License for more details.
  26031. You should have received a copy of the GNU Lesser General Public
  26032. - License along with the GNU C Library; if not, write to the Free
  26033. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26034. - 02111-1307 USA. */
  26035. + License along with the GNU C Library; if not, see
  26036. + <http://www.gnu.org/licenses/>. */
  26037. /* This header contains the same definitions as the header of the same name
  26038. on Sun's Solaris OS. */
  26039. diff -Nur uClibc-0.9.33.2/include/stdio.h uClibc/include/stdio.h
  26040. --- uClibc-0.9.33.2/include/stdio.h 2012-05-15 09:20:09.000000000 +0200
  26041. +++ uClibc/include/stdio.h 2014-02-03 12:32:56.000000000 +0100
  26042. @@ -13,9 +13,8 @@
  26043. Lesser General Public License for more details.
  26044. You should have received a copy of the GNU Lesser General Public
  26045. - License along with the GNU C Library; if not, write to the Free
  26046. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26047. - 02111-1307 USA. */
  26048. + License along with the GNU C Library; if not, see
  26049. + <http://www.gnu.org/licenses/>. */
  26050. /*
  26051. * ISO C99 Standard: 7.19 Input/output <stdio.h>
  26052. @@ -142,16 +141,17 @@
  26053. __BEGIN_NAMESPACE_STD
  26054. /* Remove file FILENAME. */
  26055. -extern int remove (__const char *__filename) __THROW;
  26056. +extern int remove (const char *__filename) __THROW;
  26057. libc_hidden_proto(remove)
  26058. /* Rename file OLD to NEW. */
  26059. -extern int rename (__const char *__old, __const char *__new) __THROW;
  26060. +extern int rename (const char *__old, const char *__new) __THROW;
  26061. __END_NAMESPACE_STD
  26062. #ifdef __USE_ATFILE
  26063. /* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */
  26064. -extern int renameat (int __oldfd, __const char *__old, int __newfd,
  26065. - __const char *__new) __THROW;
  26066. +extern int renameat (int __oldfd, const char *__old, int __newfd,
  26067. + const char *__new) __THROW;
  26068. +libc_hidden_proto(renameat)
  26069. #endif
  26070. __BEGIN_NAMESPACE_STD
  26071. @@ -194,7 +194,7 @@
  26072. If not and if DIR is not NULL, that value is checked. If that fails,
  26073. P_tmpdir is tried and finally "/tmp". The storage for the filename
  26074. is allocated by `malloc'. */
  26075. -extern char *tempnam (__const char *__dir, __const char *__pfx)
  26076. +extern char *tempnam (const char *__dir, const char *__pfx)
  26077. __THROW __attribute_malloc__ __wur;
  26078. #endif
  26079. @@ -242,23 +242,23 @@
  26080. This function is a possible cancellation point and therefore not
  26081. marked with __THROW. */
  26082. -extern FILE *fopen (__const char *__restrict __filename,
  26083. - __const char *__restrict __modes) __wur;
  26084. +extern FILE *fopen (const char *__restrict __filename,
  26085. + const char *__restrict __modes) __wur;
  26086. libc_hidden_proto(fopen)
  26087. /* Open a file, replacing an existing stream with it.
  26088. This function is a possible cancellation point and therefore not
  26089. marked with __THROW. */
  26090. -extern FILE *freopen (__const char *__restrict __filename,
  26091. - __const char *__restrict __modes,
  26092. +extern FILE *freopen (const char *__restrict __filename,
  26093. + const char *__restrict __modes,
  26094. FILE *__restrict __stream) __wur;
  26095. #else
  26096. # ifdef __REDIRECT
  26097. -extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
  26098. - __const char *__restrict __modes), fopen64)
  26099. +extern FILE *__REDIRECT (fopen, (const char *__restrict __filename,
  26100. + const char *__restrict __modes), fopen64)
  26101. __wur;
  26102. -extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
  26103. - __const char *__restrict __modes,
  26104. +extern FILE *__REDIRECT (freopen, (const char *__restrict __filename,
  26105. + const char *__restrict __modes,
  26106. FILE *__restrict __stream), freopen64)
  26107. __wur;
  26108. # else
  26109. @@ -268,38 +268,39 @@
  26110. #endif
  26111. __END_NAMESPACE_STD
  26112. #ifdef __USE_LARGEFILE64
  26113. -extern FILE *fopen64 (__const char *__restrict __filename,
  26114. - __const char *__restrict __modes) __wur;
  26115. +extern FILE *fopen64 (const char *__restrict __filename,
  26116. + const char *__restrict __modes) __wur;
  26117. libc_hidden_proto(fopen64)
  26118. -extern FILE *freopen64 (__const char *__restrict __filename,
  26119. - __const char *__restrict __modes,
  26120. +extern FILE *freopen64 (const char *__restrict __filename,
  26121. + const char *__restrict __modes,
  26122. FILE *__restrict __stream) __wur;
  26123. #endif
  26124. #ifdef __USE_POSIX
  26125. /* Create a new stream that refers to an existing system file descriptor. */
  26126. -extern FILE *fdopen (int __fd, __const char *__modes) __THROW __wur;
  26127. +extern FILE *fdopen (int __fd, const char *__modes) __THROW __wur;
  26128. libc_hidden_proto(fdopen)
  26129. #endif
  26130. -#ifdef __USE_GNU
  26131. #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
  26132. +#ifdef __USE_GNU
  26133. /* Create a new stream that refers to the given magic cookie,
  26134. and uses the given functions for input and output. */
  26135. extern FILE *fopencookie (void *__restrict __magic_cookie,
  26136. - __const char *__restrict __modes,
  26137. + const char *__restrict __modes,
  26138. _IO_cookie_io_functions_t __io_funcs) __THROW __wur;
  26139. libc_hidden_proto(fopencookie)
  26140. +#endif
  26141. +#ifdef __USE_XOPEN2K8
  26142. /* Create a new stream that refers to a memory buffer. */
  26143. -extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
  26144. +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  26145. __THROW __wur;
  26146. /* Open a stream that writes into a malloc'd buffer that is expanded as
  26147. necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
  26148. and the number of characters written on fflush or fclose. */
  26149. -extern FILE *open_memstream (char **__restrict __bufloc,
  26150. - size_t *__restrict __sizeloc) __THROW __wur;
  26151. +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW __wur;
  26152. libc_hidden_proto(open_memstream)
  26153. #endif
  26154. #endif
  26155. @@ -334,17 +335,17 @@
  26156. This function is a possible cancellation point and therefore not
  26157. marked with __THROW. */
  26158. extern int fprintf (FILE *__restrict __stream,
  26159. - __const char *__restrict __format, ...);
  26160. + const char *__restrict __format, ...);
  26161. libc_hidden_proto(fprintf)
  26162. /* Write formatted output to stdout.
  26163. This function is a possible cancellation point and therefore not
  26164. marked with __THROW. */
  26165. -extern int printf (__const char *__restrict __format, ...);
  26166. +extern int printf (const char *__restrict __format, ...);
  26167. libc_hidden_proto(printf)
  26168. /* Write formatted output to S. */
  26169. extern int sprintf (char *__restrict __s,
  26170. - __const char *__restrict __format, ...)
  26171. + const char *__restrict __format, ...)
  26172. __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
  26173. libc_hidden_proto(sprintf)
  26174. @@ -352,16 +353,16 @@
  26175. This function is a possible cancellation point and therefore not
  26176. marked with __THROW. */
  26177. -extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
  26178. +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
  26179. __gnuc_va_list __arg);
  26180. libc_hidden_proto(vfprintf)
  26181. /* Write formatted output to stdout from argument list ARG.
  26182. This function is a possible cancellation point and therefore not
  26183. marked with __THROW. */
  26184. -extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
  26185. +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
  26186. /* Write formatted output to S from argument list ARG. */
  26187. -extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
  26188. +extern int vsprintf (char *__restrict __s, const char *__restrict __format,
  26189. __gnuc_va_list __arg)
  26190. __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
  26191. __END_NAMESPACE_STD
  26192. @@ -370,12 +371,12 @@
  26193. __BEGIN_NAMESPACE_C99
  26194. /* Maximum chars of output to write in MAXLEN. */
  26195. extern int snprintf (char *__restrict __s, size_t __maxlen,
  26196. - __const char *__restrict __format, ...)
  26197. + const char *__restrict __format, ...)
  26198. __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
  26199. libc_hidden_proto(snprintf)
  26200. extern int vsnprintf (char *__restrict __s, size_t __maxlen,
  26201. - __const char *__restrict __format, __gnuc_va_list __arg)
  26202. + const char *__restrict __format, __gnuc_va_list __arg)
  26203. __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
  26204. libc_hidden_proto(vsnprintf)
  26205. __END_NAMESPACE_C99
  26206. @@ -384,31 +385,33 @@
  26207. #ifdef __USE_GNU
  26208. /* Write formatted output to a string dynamically allocated with `malloc'.
  26209. Store the address of the string in *PTR. */
  26210. -extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
  26211. +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
  26212. __gnuc_va_list __arg)
  26213. __THROW __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
  26214. libc_hidden_proto(vasprintf)
  26215. #if 0 /* uClibc: disabled */
  26216. extern int __asprintf (char **__restrict __ptr,
  26217. - __const char *__restrict __fmt, ...)
  26218. + const char *__restrict __fmt, ...)
  26219. __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
  26220. #endif
  26221. extern int asprintf (char **__restrict __ptr,
  26222. - __const char *__restrict __fmt, ...)
  26223. + const char *__restrict __fmt, ...)
  26224. __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
  26225. libc_hidden_proto(asprintf)
  26226. +#endif
  26227. +#ifdef __USE_XOPEN2K8
  26228. /* Write formatted output to a file descriptor.
  26229. These functions are not part of POSIX and therefore no official
  26230. cancellation point. But due to similarity with an POSIX interface
  26231. or due to the implementation they are cancellation points and
  26232. therefore not marked with __THROW. */
  26233. -extern int vdprintf (int __fd, __const char *__restrict __fmt,
  26234. +extern int vdprintf (int __fd, const char *__restrict __fmt,
  26235. __gnuc_va_list __arg)
  26236. __attribute__ ((__format__ (__printf__, 2, 0)));
  26237. libc_hidden_proto(vdprintf)
  26238. -extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
  26239. +extern int dprintf (int __fd, const char *__restrict __fmt, ...)
  26240. __attribute__ ((__format__ (__printf__, 2, 3)));
  26241. #endif
  26242. @@ -419,18 +422,18 @@
  26243. This function is a possible cancellation point and therefore not
  26244. marked with __THROW. */
  26245. extern int fscanf (FILE *__restrict __stream,
  26246. - __const char *__restrict __format, ...)
  26247. + const char *__restrict __format, ...)
  26248. __attribute__ ((__format__ (__scanf__, 2, 3))) __wur;
  26249. libc_hidden_proto(fscanf)
  26250. /* Read formatted input from stdin.
  26251. This function is a possible cancellation point and therefore not
  26252. marked with __THROW. */
  26253. -extern int scanf (__const char *__restrict __format, ...)
  26254. +extern int scanf (const char *__restrict __format, ...)
  26255. __attribute__ ((__format__ (__scanf__, 1, 2))) __wur;
  26256. /* Read formatted input from S. */
  26257. -extern int sscanf (__const char *__restrict __s,
  26258. - __const char *__restrict __format, ...)
  26259. +extern int sscanf (const char *__restrict __s,
  26260. + const char *__restrict __format, ...)
  26261. __THROW __attribute__ ((__format__ (__scanf__, 2, 3)));
  26262. libc_hidden_proto(sscanf)
  26263. __END_NAMESPACE_STD
  26264. @@ -441,7 +444,7 @@
  26265. This function is a possible cancellation point and therefore not
  26266. marked with __THROW. */
  26267. -extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
  26268. +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
  26269. __gnuc_va_list __arg)
  26270. __attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
  26271. libc_hidden_proto(vfscanf)
  26272. @@ -450,12 +453,12 @@
  26273. This function is a possible cancellation point and therefore not
  26274. marked with __THROW. */
  26275. -extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
  26276. +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
  26277. __attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
  26278. /* Read formatted input from S into argument list ARG. */
  26279. -extern int vsscanf (__const char *__restrict __s,
  26280. - __const char *__restrict __format, __gnuc_va_list __arg)
  26281. +extern int vsscanf (const char *__restrict __s,
  26282. + const char *__restrict __format, __gnuc_va_list __arg)
  26283. __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
  26284. libc_hidden_proto(vsscanf)
  26285. __END_NAMESPACE_C99
  26286. @@ -491,9 +494,6 @@
  26287. libc_hidden_proto(getc_unlocked)
  26288. extern int getchar_unlocked (void);
  26289. libc_hidden_proto(getchar_unlocked)
  26290. -
  26291. -/* SUSv3 allows getc_unlocked to be a macro */
  26292. -#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
  26293. #endif /* Use POSIX or MISC. */
  26294. #ifdef __USE_MISC
  26295. @@ -519,7 +519,6 @@
  26296. extern int fputc (int __c, FILE *__stream);
  26297. libc_hidden_proto(fputc)
  26298. extern int putc (int __c, FILE *__stream);
  26299. -libc_hidden_proto(putc)
  26300. /* Write a character to stdout.
  26301. @@ -540,7 +539,6 @@
  26302. or due to the implementation it is a cancellation point and
  26303. therefore not marked with __THROW. */
  26304. extern int fputc_unlocked (int __c, FILE *__stream);
  26305. -libc_hidden_proto(fputc_unlocked)
  26306. #endif /* Use MISC. */
  26307. #if defined __USE_POSIX || defined __USE_MISC
  26308. @@ -549,11 +547,7 @@
  26309. These functions are possible cancellation points and therefore not
  26310. marked with __THROW. */
  26311. extern int putc_unlocked (int __c, FILE *__stream);
  26312. -libc_hidden_proto(putc_unlocked)
  26313. extern int putchar_unlocked (int __c);
  26314. -
  26315. -/* SUSv3 allows putc_unlocked to be a macro */
  26316. -#define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
  26317. #endif /* Use POSIX or MISC. */
  26318. @@ -597,7 +591,7 @@
  26319. #endif
  26320. -#ifdef __USE_GNU
  26321. +#ifdef __USE_XOPEN2K8
  26322. /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
  26323. (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
  26324. NULL), pointing to *N characters of space. It is realloc'd as
  26325. @@ -636,14 +630,14 @@
  26326. This function is a possible cancellation points and therefore not
  26327. marked with __THROW. */
  26328. -extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
  26329. +extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
  26330. libc_hidden_proto(fputs)
  26331. /* Write a string, followed by a newline, to stdout.
  26332. This function is a possible cancellation points and therefore not
  26333. marked with __THROW. */
  26334. -extern int puts (__const char *__s);
  26335. +extern int puts (const char *__s);
  26336. /* Push a character back onto the input buffer of STREAM.
  26337. @@ -665,7 +659,7 @@
  26338. This function is a possible cancellation points and therefore not
  26339. marked with __THROW. */
  26340. -extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
  26341. +extern size_t fwrite (const void *__restrict __ptr, size_t __size,
  26342. size_t __n, FILE *__restrict __s) __wur;
  26343. libc_hidden_proto(fwrite)
  26344. __END_NAMESPACE_STD
  26345. @@ -677,7 +671,7 @@
  26346. cancellation point. But due to similarity with an POSIX interface
  26347. or due to the implementation it is a cancellation point and
  26348. therefore not marked with __THROW. */
  26349. -extern int fputs_unlocked (__const char *__restrict __s,
  26350. +extern int fputs_unlocked (const char *__restrict __s,
  26351. FILE *__restrict __stream);
  26352. libc_hidden_proto(fputs_unlocked)
  26353. #endif
  26354. @@ -692,7 +686,7 @@
  26355. extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
  26356. size_t __n, FILE *__restrict __stream) __wur;
  26357. libc_hidden_proto(fread_unlocked)
  26358. -extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
  26359. +extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
  26360. size_t __n, FILE *__restrict __stream) __wur;
  26361. libc_hidden_proto(fwrite_unlocked)
  26362. #endif
  26363. @@ -760,13 +754,13 @@
  26364. This function is a possible cancellation point and therefore not
  26365. marked with __THROW. */
  26366. -extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
  26367. +extern int fsetpos (FILE *__stream, const fpos_t *__pos);
  26368. #else
  26369. # ifdef __REDIRECT
  26370. extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
  26371. fpos_t *__restrict __pos), fgetpos64);
  26372. extern int __REDIRECT (fsetpos,
  26373. - (FILE *__stream, __const fpos_t *__pos), fsetpos64);
  26374. + (FILE *__stream, const fpos_t *__pos), fsetpos64);
  26375. # else
  26376. # define fgetpos fgetpos64
  26377. # define fsetpos fsetpos64
  26378. @@ -780,7 +774,7 @@
  26379. extern __off64_t ftello64 (FILE *__stream) __wur;
  26380. libc_hidden_proto(ftello64)
  26381. extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
  26382. -extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
  26383. +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
  26384. #endif
  26385. __BEGIN_NAMESPACE_STD
  26386. @@ -805,7 +799,7 @@
  26387. This function is a possible cancellation point and therefore not
  26388. marked with __THROW. */
  26389. -extern void perror (__const char *__s);
  26390. +extern void perror (const char *__s);
  26391. libc_hidden_proto(perror)
  26392. __END_NAMESPACE_STD
  26393. @@ -814,7 +808,7 @@
  26394. function provides all the needed functionality. */
  26395. #ifdef __USE_BSD
  26396. extern int sys_nerr;
  26397. -extern __const char *__const sys_errlist[];
  26398. +extern const char *const sys_errlist[];
  26399. #endif
  26400. #endif /* __UCLIBC_HAS_SYS_ERRLIST__ */
  26401. @@ -838,7 +832,7 @@
  26402. This function is a possible cancellation point and therefore not
  26403. marked with __THROW. */
  26404. -extern FILE *popen (__const char *__command, __const char *__modes) __wur;
  26405. +extern FILE *popen (const char *__command, const char *__modes) __wur;
  26406. /* Close a stream opened by popen and return the status of its child.
  26407. @@ -860,18 +854,19 @@
  26408. #endif /* Use X/Open, but not issue 6. */
  26409. -#if 0 /* def __USE_GNU uClibc note: not supported */
  26410. +#if defined __USE_GNU && defined __UCLIBC_HAS_OBSTACK__
  26411. struct obstack; /* See <obstack.h>. */
  26412. /* Write formatted output to an obstack. */
  26413. extern int obstack_printf (struct obstack *__restrict __obstack,
  26414. - __const char *__restrict __format, ...)
  26415. + const char *__restrict __format, ...)
  26416. __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
  26417. extern int obstack_vprintf (struct obstack *__restrict __obstack,
  26418. - __const char *__restrict __format,
  26419. + const char *__restrict __format,
  26420. __gnuc_va_list __args)
  26421. __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
  26422. -#endif /* Use GNU. */
  26423. +libc_hidden_proto(obstack_vprintf)
  26424. +#endif /* USE_GNU && UCLIBC_HAS_OBSTACK. */
  26425. #if defined __USE_POSIX || defined __USE_MISC
  26426. @@ -893,27 +888,31 @@
  26427. declared here which do not belong into this header. But we have to
  26428. follow. In GNU mode we don't do this nonsense. */
  26429. # define __need_getopt
  26430. +/* keep this on uClibc in bits/, we need it when GNU_GETOPT is disabled */
  26431. # include <bits/getopt.h>
  26432. #endif /* X/Open, but not issue 6 and not for GNU. */
  26433. /* If we are compiling with optimizing read this file. It contains
  26434. several optimizing inline functions and macros. */
  26435. +
  26436. +#ifdef __UCLIBC__
  26437. +
  26438. #define fgetc(_fp) __FGETC(_fp)
  26439. #define fputc(_ch, _fp) __FPUTC(_ch, _fp)
  26440. +#if defined __USE_POSIX || defined __USE_MISC
  26441. +/* SUSv3 allows getc_unlocked to be a macro */
  26442. +#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
  26443. +/* SUSv3 allows putc_unlocked to be a macro */
  26444. +#define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
  26445. +#endif
  26446. +
  26447. #ifdef __USE_MISC
  26448. #define fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)
  26449. #define fputc_unlocked(_ch, _fp) __FPUTC_UNLOCKED(_ch, _fp)
  26450. #endif
  26451. -#ifndef __STDIO_GETC_MACRO
  26452. -#define __stdin stdin
  26453. -#endif
  26454. #define getchar() __GETC(__stdin)
  26455. -
  26456. -#ifndef __STDIO_PUTC_MACRO
  26457. -#define __stdout stdout
  26458. -#endif
  26459. #define putchar(_ch) __PUTC((_ch), __stdout)
  26460. #if defined __USE_POSIX || defined __USE_MISC
  26461. @@ -932,6 +931,8 @@
  26462. #define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)
  26463. #endif
  26464. +#endif
  26465. +
  26466. __END_DECLS
  26467. #endif /* <stdio.h> included. */
  26468. diff -Nur uClibc-0.9.33.2/include/stdlib.h uClibc/include/stdlib.h
  26469. --- uClibc-0.9.33.2/include/stdlib.h 2012-05-15 09:20:09.000000000 +0200
  26470. +++ uClibc/include/stdlib.h 2014-02-03 12:32:56.000000000 +0100
  26471. @@ -12,9 +12,8 @@
  26472. Lesser General Public License for more details.
  26473. You should have received a copy of the GNU Lesser General Public
  26474. - License along with the GNU C Library; if not, write to the Free
  26475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26476. - 02111-1307 USA. */
  26477. + License along with the GNU C Library; if not, see
  26478. + <http://www.gnu.org/licenses/>. */
  26479. /*
  26480. * ISO C99 Standard: 7.20 General utilities <stdlib.h>
  26481. @@ -155,22 +154,22 @@
  26482. __BEGIN_NAMESPACE_STD
  26483. #ifdef __UCLIBC_HAS_FLOATS__
  26484. /* Convert a string to a floating-point number. */
  26485. -extern double atof (__const char *__nptr)
  26486. +extern double atof (const char *__nptr)
  26487. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  26488. #endif /* __UCLIBC_HAS_FLOATS__ */
  26489. /* Convert a string to an integer. */
  26490. -extern int atoi (__const char *__nptr)
  26491. +extern int atoi (const char *__nptr)
  26492. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  26493. libc_hidden_proto(atoi)
  26494. /* Convert a string to a long integer. */
  26495. -extern long int atol (__const char *__nptr)
  26496. +extern long int atol (const char *__nptr)
  26497. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  26498. __END_NAMESPACE_STD
  26499. #if defined __USE_ISOC99 || defined __USE_MISC
  26500. __BEGIN_NAMESPACE_C99
  26501. /* Convert a string to a long long integer. */
  26502. -__extension__ extern long long int atoll (__const char *__nptr)
  26503. +__extension__ extern long long int atoll (const char *__nptr)
  26504. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  26505. __END_NAMESPACE_C99
  26506. #endif
  26507. @@ -178,7 +177,7 @@
  26508. #ifdef __UCLIBC_HAS_FLOATS__
  26509. __BEGIN_NAMESPACE_STD
  26510. /* Convert a string to a floating-point number. */
  26511. -extern double strtod (__const char *__restrict __nptr,
  26512. +extern double strtod (const char *__restrict __nptr,
  26513. char **__restrict __endptr)
  26514. __THROW __nonnull ((1)) __wur;
  26515. libc_hidden_proto(strtod)
  26516. @@ -187,10 +186,10 @@
  26517. #ifdef __USE_ISOC99
  26518. __BEGIN_NAMESPACE_C99
  26519. /* Likewise for `float' and `long double' sizes of floating-point numbers. */
  26520. -extern float strtof (__const char *__restrict __nptr,
  26521. +extern float strtof (const char *__restrict __nptr,
  26522. char **__restrict __endptr) __THROW __nonnull ((1)) __wur;
  26523. -extern long double strtold (__const char *__restrict __nptr,
  26524. +extern long double strtold (const char *__restrict __nptr,
  26525. char **__restrict __endptr)
  26526. __THROW __nonnull ((1)) __wur;
  26527. __END_NAMESPACE_C99
  26528. @@ -199,12 +198,12 @@
  26529. __BEGIN_NAMESPACE_STD
  26530. /* Convert a string to a long integer. */
  26531. -extern long int strtol (__const char *__restrict __nptr,
  26532. +extern long int strtol (const char *__restrict __nptr,
  26533. char **__restrict __endptr, int __base)
  26534. __THROW __nonnull ((1)) __wur;
  26535. libc_hidden_proto(strtol)
  26536. /* Convert a string to an unsigned long integer. */
  26537. -extern unsigned long int strtoul (__const char *__restrict __nptr,
  26538. +extern unsigned long int strtoul (const char *__restrict __nptr,
  26539. char **__restrict __endptr, int __base)
  26540. __THROW __nonnull ((1)) __wur;
  26541. libc_hidden_proto(strtoul)
  26542. @@ -215,12 +214,12 @@
  26543. /* Convert a string to a quadword integer. */
  26544. __extension__
  26545. -extern quad_t strtoq (__const char *__restrict __nptr,
  26546. +extern quad_t strtoq (const char *__restrict __nptr,
  26547. char **__restrict __endptr, int __base)
  26548. __THROW __nonnull ((1)) __wur;
  26549. /* Convert a string to an unsigned quadword integer. */
  26550. __extension__
  26551. -extern u_quad_t strtouq (__const char *__restrict __nptr,
  26552. +extern u_quad_t strtouq (const char *__restrict __nptr,
  26553. char **__restrict __endptr, int __base)
  26554. __THROW __nonnull ((1)) __wur;
  26555. #endif /* GCC and use BSD. */
  26556. @@ -229,13 +228,13 @@
  26557. __BEGIN_NAMESPACE_C99
  26558. /* Convert a string to a quadword integer. */
  26559. __extension__
  26560. -extern long long int strtoll (__const char *__restrict __nptr,
  26561. +extern long long int strtoll (const char *__restrict __nptr,
  26562. char **__restrict __endptr, int __base)
  26563. __THROW __nonnull ((1)) __wur;
  26564. libc_hidden_proto(strtoll)
  26565. /* Convert a string to an unsigned quadword integer. */
  26566. __extension__
  26567. -extern unsigned long long int strtoull (__const char *__restrict __nptr,
  26568. +extern unsigned long long int strtoull (const char *__restrict __nptr,
  26569. char **__restrict __endptr, int __base)
  26570. __THROW __nonnull ((1)) __wur;
  26571. __END_NAMESPACE_C99
  26572. @@ -260,39 +259,39 @@
  26573. /* Special versions of the functions above which take the locale to
  26574. use as an additional parameter. */
  26575. -extern long int strtol_l (__const char *__restrict __nptr,
  26576. +extern long int strtol_l (const char *__restrict __nptr,
  26577. char **__restrict __endptr, int __base,
  26578. __locale_t __loc) __THROW __nonnull ((1, 4)) __wur;
  26579. libc_hidden_proto(strtol_l)
  26580. -extern unsigned long int strtoul_l (__const char *__restrict __nptr,
  26581. +extern unsigned long int strtoul_l (const char *__restrict __nptr,
  26582. char **__restrict __endptr,
  26583. int __base, __locale_t __loc)
  26584. __THROW __nonnull ((1, 4)) __wur;
  26585. libc_hidden_proto(strtoul_l)
  26586. __extension__
  26587. -extern long long int strtoll_l (__const char *__restrict __nptr,
  26588. +extern long long int strtoll_l (const char *__restrict __nptr,
  26589. char **__restrict __endptr, int __base,
  26590. __locale_t __loc)
  26591. __THROW __nonnull ((1, 4)) __wur;
  26592. __extension__
  26593. -extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
  26594. +extern unsigned long long int strtoull_l (const char *__restrict __nptr,
  26595. char **__restrict __endptr,
  26596. int __base, __locale_t __loc)
  26597. __THROW __nonnull ((1, 4)) __wur;
  26598. #ifdef __UCLIBC_HAS_FLOATS__
  26599. -extern double strtod_l (__const char *__restrict __nptr,
  26600. +extern double strtod_l (const char *__restrict __nptr,
  26601. char **__restrict __endptr, __locale_t __loc)
  26602. __THROW __nonnull ((1, 3)) __wur;
  26603. -extern float strtof_l (__const char *__restrict __nptr,
  26604. +extern float strtof_l (const char *__restrict __nptr,
  26605. char **__restrict __endptr, __locale_t __loc)
  26606. __THROW __nonnull ((1, 3)) __wur;
  26607. -extern long double strtold_l (__const char *__restrict __nptr,
  26608. +extern long double strtold_l (const char *__restrict __nptr,
  26609. char **__restrict __endptr,
  26610. __locale_t __loc)
  26611. __THROW __nonnull ((1, 3)) __wur;
  26612. @@ -307,7 +306,7 @@
  26613. extern char *l64a (long int __n) __THROW __wur;
  26614. /* Read a number from a string S in base 64 as above. */
  26615. -extern long int a64l (__const char *__s)
  26616. +extern long int a64l (const char *__s)
  26617. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  26618. #endif /* Use SVID || extended X/Open. */
  26619. @@ -564,14 +563,14 @@
  26620. __BEGIN_NAMESPACE_STD
  26621. /* Return the value of envariable NAME, or NULL if it doesn't exist. */
  26622. -extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur;
  26623. +extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
  26624. libc_hidden_proto(getenv)
  26625. __END_NAMESPACE_STD
  26626. #if 0
  26627. /* This function is similar to the above but returns NULL if the
  26628. programs is running with SUID or SGID enabled. */
  26629. -extern char *__secure_getenv (__const char *__name)
  26630. +extern char *__secure_getenv (const char *__name)
  26631. __THROW __nonnull ((1)) __wur;
  26632. #endif
  26633. @@ -585,12 +584,12 @@
  26634. #if defined __USE_BSD || defined __USE_XOPEN2K
  26635. /* Set NAME to VALUE in the environment.
  26636. If REPLACE is nonzero, overwrite an existing value. */
  26637. -extern int setenv (__const char *__name, __const char *__value, int __replace)
  26638. +extern int setenv (const char *__name, const char *__value, int __replace)
  26639. __THROW __nonnull ((2));
  26640. libc_hidden_proto(setenv)
  26641. /* Remove the variable NAME from the environment. */
  26642. -extern int unsetenv (__const char *__name) __THROW;
  26643. +extern int unsetenv (const char *__name) __THROW;
  26644. libc_hidden_proto(unsetenv)
  26645. #endif
  26646. @@ -652,20 +651,43 @@
  26647. extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur;
  26648. #endif
  26649. +#ifdef __USE_GNU
  26650. +/* Generate a unique temporary file name from TEMPLATE similar to
  26651. + mkstemp. But allow the caller to pass additional flags which are
  26652. + used in the open call to create the file..
  26653. +
  26654. + This function is a possible cancellation point and therefore not
  26655. + marked with __THROW. */
  26656. +# ifndef __USE_FILE_OFFSET64
  26657. +extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur;
  26658. +# else
  26659. +# ifdef __REDIRECT
  26660. +extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
  26661. + __nonnull ((1)) __wur;
  26662. +# else
  26663. +# define mkostemp mkostemp64
  26664. +# endif
  26665. +# endif
  26666. +# ifdef __USE_LARGEFILE64
  26667. +extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
  26668. +# endif
  26669. +
  26670. +#endif
  26671. +
  26672. __BEGIN_NAMESPACE_STD
  26673. /* Execute the given line as a shell command.
  26674. This function is a cancellation point and therefore not marked with
  26675. __THROW. */
  26676. -extern int system (__const char *__command) __wur;
  26677. +extern int system (const char *__command) __wur;
  26678. __END_NAMESPACE_STD
  26679. #ifdef __USE_GNU
  26680. /* Return a malloc'd string containing the canonical absolute name of the
  26681. existing named file. */
  26682. -extern char *canonicalize_file_name (__const char *__name)
  26683. +extern char *canonicalize_file_name (const char *__name)
  26684. __THROW __nonnull ((1)) __wur;
  26685. #endif
  26686. @@ -675,7 +697,7 @@
  26687. PATH_MAX chars or more, returns null with `errno' set to
  26688. ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
  26689. returns the name in RESOLVED. */
  26690. -extern char *realpath (__const char *__restrict __name,
  26691. +extern char *realpath (const char *__restrict __name,
  26692. char *__restrict __resolved) __THROW __wur;
  26693. libc_hidden_proto(realpath)
  26694. #endif
  26695. @@ -684,20 +706,20 @@
  26696. /* Shorthand for type of comparison functions. */
  26697. #ifndef __COMPAR_FN_T
  26698. # define __COMPAR_FN_T
  26699. -typedef int (*__compar_fn_t) (__const void *, __const void *);
  26700. +typedef int (*__compar_fn_t) (const void *, const void *);
  26701. # ifdef __USE_GNU
  26702. typedef __compar_fn_t comparison_fn_t;
  26703. # endif
  26704. #endif
  26705. #ifdef __USE_GNU
  26706. -typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
  26707. +typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
  26708. #endif
  26709. __BEGIN_NAMESPACE_STD
  26710. /* Do a binary search for KEY in BASE, which consists of NMEMB elements
  26711. of SIZE bytes each, using COMPAR to perform the comparisons. */
  26712. -extern void *bsearch (__const void *__key, __const void *__base,
  26713. +extern void *bsearch (const void *__key, const void *__base,
  26714. size_t __nmemb, size_t __size, __compar_fn_t __compar)
  26715. __nonnull ((1, 2, 5)) __wur;
  26716. @@ -807,11 +829,11 @@
  26717. __BEGIN_NAMESPACE_STD
  26718. /* Return the length of the multibyte character
  26719. in S, which is no longer than N. */
  26720. -extern int mblen (__const char *__s, size_t __n) __THROW __wur;
  26721. +extern int mblen (const char *__s, size_t __n) __THROW __wur;
  26722. /* Return the length of the given multibyte character,
  26723. putting its `wchar_t' representation in *PWC. */
  26724. extern int mbtowc (wchar_t *__restrict __pwc,
  26725. - __const char *__restrict __s, size_t __n) __THROW __wur;
  26726. + const char *__restrict __s, size_t __n) __THROW __wur;
  26727. /* Put the multibyte character represented
  26728. by WCHAR in S, returning its length. */
  26729. extern int wctomb (char *__s, wchar_t __wchar) __THROW __wur;
  26730. @@ -819,21 +841,21 @@
  26731. /* Convert a multibyte string to a wide char string. */
  26732. extern size_t mbstowcs (wchar_t *__restrict __pwcs,
  26733. - __const char *__restrict __s, size_t __n) __THROW;
  26734. + const char *__restrict __s, size_t __n) __THROW;
  26735. /* Convert a wide char string to multibyte string. */
  26736. extern size_t wcstombs (char *__restrict __s,
  26737. - __const wchar_t *__restrict __pwcs, size_t __n)
  26738. + const wchar_t *__restrict __pwcs, size_t __n)
  26739. __THROW;
  26740. __END_NAMESPACE_STD
  26741. #endif /* __UCLIBC_HAS_WCHAR__ */
  26742. -#if 0 /*def __USE_SVID*/
  26743. +#ifdef __USE_SVID
  26744. /* Determine whether the string value of RESPONSE matches the affirmation
  26745. or negative response expression as specified by the LC_MESSAGES category
  26746. in the program's current locale. Returns 1 if affirmative, 0 if
  26747. negative, and -1 if not matching. */
  26748. -extern int rpmatch (__const char *__response) __THROW __nonnull ((1)) __wur;
  26749. +extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur;
  26750. #endif
  26751. @@ -845,7 +867,7 @@
  26752. suboption. On exit *OPTIONP is set to the beginning of the next
  26753. token or at the terminating NUL character. */
  26754. extern int getsubopt (char **__restrict __optionp,
  26755. - char *__const *__restrict __tokens,
  26756. + char *const *__restrict __tokens,
  26757. char **__restrict __valuep)
  26758. __THROW __nonnull ((1, 2, 3)) __wur;
  26759. #endif
  26760. @@ -854,7 +876,7 @@
  26761. #ifdef __USE_XOPEN
  26762. # if defined __UCLIBC_HAS_CRYPT__
  26763. /* Setup DES tables according KEY. */
  26764. -extern void setkey (__const char *__key) __THROW __nonnull ((1));
  26765. +extern void setkey (const char *__key) __THROW __nonnull ((1));
  26766. # endif /* __UCLIBC_HAS_CRYPT__ */
  26767. #endif
  26768. @@ -864,7 +886,6 @@
  26769. #ifdef __USE_XOPEN2K
  26770. /* Return a master pseudo-terminal handle. */
  26771. extern int posix_openpt (int __oflag) __wur;
  26772. -libc_hidden_proto(posix_openpt)
  26773. #endif
  26774. #ifdef __USE_XOPEN
  26775. @@ -910,8 +931,8 @@
  26776. #endif
  26777. #ifdef __UCLIBC_HAS_ARC4RANDOM__
  26778. -#include <stdint.h>
  26779. -extern uint32_t arc4random(void);
  26780. +# include <sys/types.h>
  26781. +extern u_int32_t arc4random(void);
  26782. extern void arc4random_stir(void);
  26783. extern void arc4random_addrandom(unsigned char *, int);
  26784. #endif
  26785. diff -Nur uClibc-0.9.33.2/include/string.h uClibc/include/string.h
  26786. --- uClibc-0.9.33.2/include/string.h 2012-05-15 09:20:09.000000000 +0200
  26787. +++ uClibc/include/string.h 2014-02-03 12:32:56.000000000 +0100
  26788. @@ -1,4 +1,4 @@
  26789. -/* Copyright (C) 1991-1993, 1995-2003, 2004 Free Software Foundation, Inc.
  26790. +/* Copyright (C) 1991-1993,1995-2004,2007,2009 Free Software Foundation, Inc.
  26791. This file is part of the GNU C Library.
  26792. The GNU C Library is free software; you can redistribute it and/or
  26793. @@ -12,9 +12,8 @@
  26794. Lesser General Public License for more details.
  26795. You should have received a copy of the GNU Lesser General Public
  26796. - License along with the GNU C Library; if not, write to the Free
  26797. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26798. - 02111-1307 USA. */
  26799. + License along with the GNU C Library; if not, see
  26800. + <http://www.gnu.org/licenses/>. */
  26801. /*
  26802. * ISO C99 Standard: 7.21 String handling <string.h>
  26803. @@ -36,12 +35,12 @@
  26804. __BEGIN_NAMESPACE_STD
  26805. /* Copy N bytes of SRC to DEST. */
  26806. extern void *memcpy (void *__restrict __dest,
  26807. - __const void *__restrict __src, size_t __n)
  26808. + const void *__restrict __src, size_t __n)
  26809. __THROW __nonnull ((1, 2));
  26810. libc_hidden_proto(memcpy)
  26811. /* Copy N bytes of SRC to DEST, guaranteeing
  26812. correct behavior for overlapping strings. */
  26813. -extern void *memmove (void *__dest, __const void *__src, size_t __n)
  26814. +extern void *memmove (void *__dest, const void *__src, size_t __n)
  26815. __THROW __nonnull ((1, 2));
  26816. libc_hidden_proto(memmove)
  26817. __END_NAMESPACE_STD
  26818. @@ -50,7 +49,7 @@
  26819. Return the position in DEST one byte past where C was copied,
  26820. or NULL if C was not found in the first N bytes of SRC. */
  26821. #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN
  26822. -extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
  26823. +extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
  26824. int __c, size_t __n)
  26825. __THROW __nonnull ((1, 2));
  26826. libc_hidden_proto(memccpy)
  26827. @@ -63,12 +62,12 @@
  26828. libc_hidden_proto(memset)
  26829. /* Compare N bytes of S1 and S2. */
  26830. -extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
  26831. +extern int memcmp (const void *__s1, const void *__s2, size_t __n)
  26832. __THROW __attribute_pure__ __nonnull ((1, 2));
  26833. libc_hidden_proto(memcmp)
  26834. /* Search N bytes of S for C. */
  26835. -extern void *memchr (__const void *__s, int __c, size_t __n)
  26836. +extern void *memchr (const void *__s, int __c, size_t __n)
  26837. __THROW __attribute_pure__ __nonnull ((1));
  26838. libc_hidden_proto(memchr)
  26839. __END_NAMESPACE_STD
  26840. @@ -76,12 +75,12 @@
  26841. #ifdef __USE_GNU
  26842. /* Search in S for C. This is similar to `memchr' but there is no
  26843. length limit. */
  26844. -extern void *rawmemchr (__const void *__s, int __c)
  26845. +extern void *rawmemchr (const void *__s, int __c)
  26846. __THROW __attribute_pure__ __nonnull ((1));
  26847. libc_hidden_proto(rawmemchr)
  26848. /* Search N bytes of S for the final occurrence of C. */
  26849. -extern void *memrchr (__const void *__s, int __c, size_t __n)
  26850. +extern void *memrchr (const void *__s, int __c, size_t __n)
  26851. __THROW __attribute_pure__ __nonnull ((1));
  26852. libc_hidden_proto(memrchr)
  26853. #endif
  26854. @@ -89,62 +88,62 @@
  26855. __BEGIN_NAMESPACE_STD
  26856. /* Copy SRC to DEST. */
  26857. -extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
  26858. +extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
  26859. __THROW __nonnull ((1, 2));
  26860. libc_hidden_proto(strcpy)
  26861. /* Copy no more than N characters of SRC to DEST. */
  26862. extern char *strncpy (char *__restrict __dest,
  26863. - __const char *__restrict __src, size_t __n)
  26864. + const char *__restrict __src, size_t __n)
  26865. __THROW __nonnull ((1, 2));
  26866. libc_hidden_proto(strncpy)
  26867. /* Append SRC onto DEST. */
  26868. -extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
  26869. +extern char *strcat (char *__restrict __dest, const char *__restrict __src)
  26870. __THROW __nonnull ((1, 2));
  26871. libc_hidden_proto(strcat)
  26872. /* Append no more than N characters from SRC onto DEST. */
  26873. -extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
  26874. +extern char *strncat (char *__restrict __dest, const char *__restrict __src,
  26875. size_t __n) __THROW __nonnull ((1, 2));
  26876. libc_hidden_proto(strncat)
  26877. /* Compare S1 and S2. */
  26878. -extern int strcmp (__const char *__s1, __const char *__s2)
  26879. +extern int strcmp (const char *__s1, const char *__s2)
  26880. __THROW __attribute_pure__ __nonnull ((1, 2));
  26881. libc_hidden_proto(strcmp)
  26882. /* Compare N characters of S1 and S2. */
  26883. -extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
  26884. +extern int strncmp (const char *__s1, const char *__s2, size_t __n)
  26885. __THROW __attribute_pure__ __nonnull ((1, 2));
  26886. libc_hidden_proto(strncmp)
  26887. /* Compare the collated forms of S1 and S2. */
  26888. -extern int strcoll (__const char *__s1, __const char *__s2)
  26889. +extern int strcoll (const char *__s1, const char *__s2)
  26890. __THROW __attribute_pure__ __nonnull ((1, 2));
  26891. libc_hidden_proto(strcoll)
  26892. /* Put a transformation of SRC into no more than N bytes of DEST. */
  26893. extern size_t strxfrm (char *__restrict __dest,
  26894. - __const char *__restrict __src, size_t __n)
  26895. + const char *__restrict __src, size_t __n)
  26896. __THROW __nonnull ((2));
  26897. __END_NAMESPACE_STD
  26898. -#if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  26899. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  26900. /* The following functions are equivalent to the both above but they
  26901. take the locale they use for the collation as an extra argument.
  26902. This is not standardsized but something like will come. */
  26903. # include <xlocale.h>
  26904. /* Compare the collated forms of S1 and S2 using rules from L. */
  26905. -extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
  26906. +extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l)
  26907. __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  26908. libc_hidden_proto(strcoll_l)
  26909. /* Put a transformation of SRC into no more than N bytes of DEST. */
  26910. -extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
  26911. +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
  26912. __locale_t __l) __THROW __nonnull ((2, 4));
  26913. libc_hidden_proto(strxfrm_l)
  26914. #endif
  26915. #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  26916. /* Duplicate S, returning an identical malloc'd string. */
  26917. -extern char *strdup (__const char *__s)
  26918. +extern char *strdup (const char *__s)
  26919. __THROW __attribute_malloc__ __nonnull ((1));
  26920. libc_hidden_proto(strdup)
  26921. #endif
  26922. @@ -152,8 +151,8 @@
  26923. /* Return a malloc'd copy of at most N bytes of STRING. The
  26924. resultant string is terminated even if no null terminator
  26925. appears before STRING[N]. */
  26926. -#if defined __USE_GNU
  26927. -extern char *strndup (__const char *__string, size_t __n)
  26928. +#if defined __USE_XOPEN2K8
  26929. +extern char *strndup (const char *__string, size_t __n)
  26930. __THROW __attribute_malloc__ __nonnull ((1));
  26931. libc_hidden_proto(strndup)
  26932. #endif
  26933. @@ -163,7 +162,7 @@
  26934. # define strdupa(s) \
  26935. (__extension__ \
  26936. ({ \
  26937. - __const char *__old = (s); \
  26938. + const char *__old = (s); \
  26939. size_t __len = strlen (__old) + 1; \
  26940. char *__new = (char *) __builtin_alloca (__len); \
  26941. (char *) memcpy (__new, __old, __len); \
  26942. @@ -173,7 +172,7 @@
  26943. # define strndupa(s, n) \
  26944. (__extension__ \
  26945. ({ \
  26946. - __const char *__old = (s); \
  26947. + const char *__old = (s); \
  26948. size_t __len = strnlen (__old, (n)); \
  26949. char *__new = (char *) __builtin_alloca (__len + 1); \
  26950. __new[__len] = '\0'; \
  26951. @@ -183,11 +182,11 @@
  26952. __BEGIN_NAMESPACE_STD
  26953. /* Find the first occurrence of C in S. */
  26954. -extern char *strchr (__const char *__s, int __c)
  26955. +extern char *strchr (const char *__s, int __c)
  26956. __THROW __attribute_pure__ __nonnull ((1));
  26957. libc_hidden_proto(strchr)
  26958. /* Find the last occurrence of C in S. */
  26959. -extern char *strrchr (__const char *__s, int __c)
  26960. +extern char *strrchr (const char *__s, int __c)
  26961. __THROW __attribute_pure__ __nonnull ((1));
  26962. libc_hidden_proto(strrchr)
  26963. __END_NAMESPACE_STD
  26964. @@ -195,7 +194,7 @@
  26965. #ifdef __USE_GNU
  26966. /* This function is similar to `strchr'. But it returns a pointer to
  26967. the closing NUL byte in case C is not found in S. */
  26968. -extern char *strchrnul (__const char *__s, int __c)
  26969. +extern char *strchrnul (const char *__s, int __c)
  26970. __THROW __attribute_pure__ __nonnull ((1));
  26971. libc_hidden_proto(strchrnul)
  26972. #endif
  26973. @@ -203,26 +202,26 @@
  26974. __BEGIN_NAMESPACE_STD
  26975. /* Return the length of the initial segment of S which
  26976. consists entirely of characters not in REJECT. */
  26977. -extern size_t strcspn (__const char *__s, __const char *__reject)
  26978. +extern size_t strcspn (const char *__s, const char *__reject)
  26979. __THROW __attribute_pure__ __nonnull ((1, 2));
  26980. libc_hidden_proto(strcspn)
  26981. /* Return the length of the initial segment of S which
  26982. consists entirely of characters in ACCEPT. */
  26983. -extern size_t strspn (__const char *__s, __const char *__accept)
  26984. +extern size_t strspn (const char *__s, const char *__accept)
  26985. __THROW __attribute_pure__ __nonnull ((1, 2));
  26986. libc_hidden_proto(strspn)
  26987. /* Find the first occurrence in S of any character in ACCEPT. */
  26988. -extern char *strpbrk (__const char *__s, __const char *__accept)
  26989. +extern char *strpbrk (const char *__s, const char *__accept)
  26990. __THROW __attribute_pure__ __nonnull ((1, 2));
  26991. libc_hidden_proto(strpbrk)
  26992. /* Find the first occurrence of NEEDLE in HAYSTACK. */
  26993. -extern char *strstr (__const char *__haystack, __const char *__needle)
  26994. +extern char *strstr (const char *__haystack, const char *__needle)
  26995. __THROW __attribute_pure__ __nonnull ((1, 2));
  26996. libc_hidden_proto(strstr)
  26997. /* Divide S into tokens separated by characters in DELIM. */
  26998. -extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
  26999. +extern char *strtok (char *__restrict __s, const char *__restrict __delim)
  27000. __THROW __nonnull ((2));
  27001. libc_hidden_proto(strtok)
  27002. __END_NAMESPACE_STD
  27003. @@ -231,12 +230,12 @@
  27004. passed between calls are stored in SAVE_PTR. */
  27005. #if 0 /* uClibc: disabled */
  27006. extern char *__strtok_r (char *__restrict __s,
  27007. - __const char *__restrict __delim,
  27008. + const char *__restrict __delim,
  27009. char **__restrict __save_ptr)
  27010. __THROW __nonnull ((2, 3));
  27011. #endif
  27012. #if defined __USE_POSIX || defined __USE_MISC
  27013. -extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
  27014. +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
  27015. char **__restrict __save_ptr)
  27016. __THROW __nonnull ((2, 3));
  27017. libc_hidden_proto(strtok_r)
  27018. @@ -244,7 +243,7 @@
  27019. #ifdef __USE_GNU
  27020. /* Similar to `strstr' but this function ignores the case of both strings. */
  27021. -extern char *strcasestr (__const char *__haystack, __const char *__needle)
  27022. +extern char *strcasestr (const char *__haystack, const char *__needle)
  27023. __THROW __attribute_pure__ __nonnull ((1, 2));
  27024. libc_hidden_proto(strcasestr)
  27025. #endif
  27026. @@ -253,19 +252,19 @@
  27027. /* Find the first occurrence of NEEDLE in HAYSTACK.
  27028. NEEDLE is NEEDLELEN bytes long;
  27029. HAYSTACK is HAYSTACKLEN bytes long. */
  27030. -extern void *memmem (__const void *__haystack, size_t __haystacklen,
  27031. - __const void *__needle, size_t __needlelen)
  27032. +extern void *memmem (const void *__haystack, size_t __haystacklen,
  27033. + const void *__needle, size_t __needlelen)
  27034. __THROW __attribute_pure__ __nonnull ((1, 3));
  27035. /* Copy N bytes of SRC to DEST, return pointer to bytes after the
  27036. last written byte. */
  27037. #if 0 /* uClibc: disabled */
  27038. extern void *__mempcpy (void *__restrict __dest,
  27039. - __const void *__restrict __src, size_t __n)
  27040. + const void *__restrict __src, size_t __n)
  27041. __THROW __nonnull ((1, 2));
  27042. #endif
  27043. extern void *mempcpy (void *__restrict __dest,
  27044. - __const void *__restrict __src, size_t __n)
  27045. + const void *__restrict __src, size_t __n)
  27046. __THROW __nonnull ((1, 2));
  27047. libc_hidden_proto(mempcpy)
  27048. #endif
  27049. @@ -273,15 +272,15 @@
  27050. __BEGIN_NAMESPACE_STD
  27051. /* Return the length of S. */
  27052. -extern size_t strlen (__const char *__s)
  27053. +extern size_t strlen (const char *__s)
  27054. __THROW __attribute_pure__ __nonnull ((1));
  27055. libc_hidden_proto(strlen)
  27056. __END_NAMESPACE_STD
  27057. -#ifdef __USE_GNU
  27058. +#ifdef __USE_XOPEN2K8
  27059. /* Find the length of STRING, but scan at most MAXLEN characters.
  27060. If no '\0' terminator is found in that many characters, return MAXLEN. */
  27061. -extern size_t strnlen (__const char *__string, size_t __maxlen)
  27062. +extern size_t strnlen (const char *__string, size_t __maxlen)
  27063. __THROW __attribute_pure__ __nonnull ((1));
  27064. libc_hidden_proto(strnlen)
  27065. #endif
  27066. @@ -329,6 +328,12 @@
  27067. # endif
  27068. #endif
  27069. +#if 0 /*defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__*/
  27070. +/* Translate error number to string according to the locale L. */
  27071. +extern char *strerror_l (int __errnum, __locale_t __l) __THROW;
  27072. +#endif
  27073. +
  27074. +
  27075. /* We define this function always since `bzero' is sometimes needed when
  27076. the namespace rules does not allow this. */
  27077. #if 0 /* uClibc: disabled */
  27078. @@ -338,22 +343,22 @@
  27079. #ifdef __USE_BSD
  27080. # ifdef __UCLIBC_SUSV3_LEGACY__
  27081. /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
  27082. -extern void bcopy (__const void *__src, void *__dest, size_t __n)
  27083. +extern void bcopy (const void *__src, void *__dest, size_t __n)
  27084. __THROW __nonnull ((1, 2));
  27085. /* Set N bytes of S to 0. */
  27086. extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
  27087. /* Compare N bytes of S1 and S2 (same as memcmp). */
  27088. -extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
  27089. +extern int bcmp (const void *__s1, const void *__s2, size_t __n)
  27090. __THROW __attribute_pure__ __nonnull ((1, 2));
  27091. /* Find the first occurrence of C in S (same as strchr). */
  27092. -extern char *index (__const char *__s, int __c)
  27093. +extern char *index (const char *__s, int __c)
  27094. __THROW __attribute_pure__ __nonnull ((1));
  27095. /* Find the last occurrence of C in S (same as strrchr). */
  27096. -extern char *rindex (__const char *__s, int __c)
  27097. +extern char *rindex (const char *__s, int __c)
  27098. __THROW __attribute_pure__ __nonnull ((1));
  27099. # else
  27100. # ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
  27101. @@ -385,25 +390,25 @@
  27102. # endif
  27103. /* Compare S1 and S2, ignoring case. */
  27104. -extern int strcasecmp (__const char *__s1, __const char *__s2)
  27105. +extern int strcasecmp (const char *__s1, const char *__s2)
  27106. __THROW __attribute_pure__ __nonnull ((1, 2));
  27107. libc_hidden_proto(strcasecmp)
  27108. /* Compare no more than N chars of S1 and S2, ignoring case. */
  27109. -extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
  27110. +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
  27111. __THROW __attribute_pure__ __nonnull ((1, 2));
  27112. libc_hidden_proto(strncasecmp)
  27113. #endif /* Use BSD. */
  27114. -#if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  27115. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  27116. /* Again versions of a few functions which use the given locale instead
  27117. of the global one. */
  27118. -extern int strcasecmp_l (__const char *__s1, __const char *__s2,
  27119. +extern int strcasecmp_l (const char *__s1, const char *__s2,
  27120. __locale_t __loc)
  27121. __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  27122. libc_hidden_proto(strcasecmp_l)
  27123. -extern int strncasecmp_l (__const char *__s1, __const char *__s2,
  27124. +extern int strncasecmp_l (const char *__s1, const char *__s2,
  27125. size_t __n, __locale_t __loc)
  27126. __THROW __attribute_pure__ __nonnull ((1, 2, 4));
  27127. libc_hidden_proto(strncasecmp_l)
  27128. @@ -413,27 +418,22 @@
  27129. /* Return the next DELIM-delimited token from *STRINGP,
  27130. terminating it with a '\0', and update *STRINGP to point past it. */
  27131. extern char *strsep (char **__restrict __stringp,
  27132. - __const char *__restrict __delim)
  27133. + const char *__restrict __delim)
  27134. __THROW __nonnull ((1, 2));
  27135. libc_hidden_proto(strsep)
  27136. #endif
  27137. -#ifdef __USE_GNU
  27138. -/* Compare S1 and S2 as strings holding name & indices/version numbers. */
  27139. -extern int strverscmp (__const char *__s1, __const char *__s2)
  27140. - __THROW __attribute_pure__ __nonnull ((1, 2));
  27141. -libc_hidden_proto(strverscmp)
  27142. -
  27143. +#ifdef __USE_XOPEN2K8
  27144. /* Return a string describing the meaning of the signal number in SIG. */
  27145. extern char *strsignal (int __sig) __THROW;
  27146. libc_hidden_proto(strsignal)
  27147. /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
  27148. # if 0 /* uClibc: disabled */
  27149. -extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
  27150. +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
  27151. __THROW __nonnull ((1, 2));
  27152. # endif
  27153. -extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
  27154. +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
  27155. __THROW __nonnull ((1, 2));
  27156. libc_hidden_proto(stpcpy)
  27157. @@ -441,12 +441,19 @@
  27158. the last character written into DEST. */
  27159. # if 0 /* uClibc: disabled */
  27160. extern char *__stpncpy (char *__restrict __dest,
  27161. - __const char *__restrict __src, size_t __n)
  27162. + const char *__restrict __src, size_t __n)
  27163. __THROW __nonnull ((1, 2));
  27164. # endif
  27165. extern char *stpncpy (char *__restrict __dest,
  27166. - __const char *__restrict __src, size_t __n)
  27167. + const char *__restrict __src, size_t __n)
  27168. __THROW __nonnull ((1, 2));
  27169. +#endif
  27170. +
  27171. +#ifdef __USE_GNU
  27172. +/* Compare S1 and S2 as strings holding name & indices/version numbers. */
  27173. +extern int strverscmp (const char *__s1, const char *__s2)
  27174. + __THROW __attribute_pure__ __nonnull ((1, 2));
  27175. +libc_hidden_proto(strverscmp)
  27176. # if 0 /* uClibc does not support strfry or memfrob. */
  27177. /* Sautee STRING briskly. */
  27178. @@ -461,8 +468,7 @@
  27179. declare the function if the `basename' macro is available (defined
  27180. in <libgen.h>) which makes the XPG version of this function
  27181. available. */
  27182. -extern char *basename (__const char *__filename) __THROW __nonnull ((1));
  27183. -libc_hidden_proto(basename)
  27184. +extern char *basename (const char *__filename) __THROW __nonnull ((1));
  27185. # endif
  27186. #endif /* __USE_GNU */
  27187. diff -Nur uClibc-0.9.33.2/include/strings.h uClibc/include/strings.h
  27188. --- uClibc-0.9.33.2/include/strings.h 2012-05-15 09:20:09.000000000 +0200
  27189. +++ uClibc/include/strings.h 2014-02-03 12:32:56.000000000 +0100
  27190. @@ -1,4 +1,4 @@
  27191. -/* Copyright (C) 1991,92,96,97,99,2000,2001 Free Software Foundation, Inc.
  27192. +/* Copyright (C) 1991,92,96,97,99,2000,2001,2009 Free Software Foundation, Inc.
  27193. This file is part of the GNU C Library.
  27194. The GNU C Library is free software; you can redistribute it and/or
  27195. @@ -12,9 +12,8 @@
  27196. Lesser General Public License for more details.
  27197. You should have received a copy of the GNU Lesser General Public
  27198. - License along with the GNU C Library; if not, write to the Free
  27199. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27200. - 02111-1307 USA. */
  27201. + License along with the GNU C Library; if not, see
  27202. + <http://www.gnu.org/licenses/>. */
  27203. #ifndef _STRINGS_H
  27204. #define _STRINGS_H 1
  27205. @@ -35,22 +34,22 @@
  27206. # ifdef __UCLIBC_SUSV3_LEGACY__
  27207. /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
  27208. -extern void bcopy (__const void *__src, void *__dest, size_t __n)
  27209. +extern void bcopy (const void *__src, void *__dest, size_t __n)
  27210. __THROW __nonnull ((1, 2));
  27211. /* Set N bytes of S to 0. */
  27212. extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
  27213. /* Compare N bytes of S1 and S2 (same as memcmp). */
  27214. -extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
  27215. +extern int bcmp (const void *__s1, const void *__s2, size_t __n)
  27216. __THROW __attribute_pure__ __nonnull ((1, 2));
  27217. /* Find the first occurrence of C in S (same as strchr). */
  27218. -extern char *index (__const char *__s, int __c)
  27219. +extern char *index (const char *__s, int __c)
  27220. __THROW __attribute_pure__ __nonnull ((1));
  27221. /* Find the last occurrence of C in S (same as strrchr). */
  27222. -extern char *rindex (__const char *__s, int __c)
  27223. +extern char *rindex (const char *__s, int __c)
  27224. __THROW __attribute_pure__ __nonnull ((1));
  27225. # else
  27226. # ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
  27227. @@ -69,10 +68,11 @@
  27228. /* Return the position of the first bit set in I, or 0 if none are set.
  27229. The least-significant bit is position 1, the most-significant 32. */
  27230. extern int ffs (int __i) __THROW __attribute__ ((__const__));
  27231. +libc_hidden_proto(ffs)
  27232. /* The following two functions are non-standard but necessary for non-32 bit
  27233. platforms. */
  27234. -#if 0 /*def __USE_GNU*/
  27235. +# ifdef __USE_GNU
  27236. extern int ffsl (long int __l) __THROW __attribute__ ((__const__));
  27237. # ifdef __GNUC__
  27238. __extension__ extern int ffsll (long long int __ll)
  27239. @@ -81,17 +81,39 @@
  27240. # endif
  27241. /* Compare S1 and S2, ignoring case. */
  27242. -extern int strcasecmp (__const char *__s1, __const char *__s2)
  27243. +extern int strcasecmp (const char *__s1, const char *__s2)
  27244. __THROW __attribute_pure__ __nonnull ((1, 2));
  27245. +libc_hidden_proto(strcasecmp)
  27246. /* Compare no more than N chars of S1 and S2, ignoring case. */
  27247. -extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
  27248. +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
  27249. __THROW __attribute_pure__ __nonnull ((1, 2));
  27250. +libc_hidden_proto(strncasecmp)
  27251. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  27252. +/* The following functions are equivalent to the both above but they
  27253. + take the locale they use for the collation as an extra argument.
  27254. + This is not standardsized but something like will come. */
  27255. +# include <xlocale.h>
  27256. +
  27257. +/* Again versions of a few functions which use the given locale instead
  27258. + of the global one. */
  27259. +extern int strcasecmp_l (const char *__s1, const char *__s2,
  27260. + __locale_t __loc)
  27261. + __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  27262. +libc_hidden_proto(strcasecmp_l)
  27263. +
  27264. +extern int strncasecmp_l (const char *__s1, const char *__s2,
  27265. + size_t __n, __locale_t __loc)
  27266. + __THROW __attribute_pure__ __nonnull ((1, 2, 4));
  27267. +libc_hidden_proto(strncasecmp_l)
  27268. +#endif
  27269. __END_DECLS
  27270. #ifdef _LIBC
  27271. +/* comment is wrong and will face this, when HAS_GNU option will be added
  27272. + * header is SuSv standard */
  27273. #error "<strings.h> should not be included from libc."
  27274. #endif
  27275. diff -Nur uClibc-0.9.33.2/include/sys/cdefs.h uClibc/include/sys/cdefs.h
  27276. --- uClibc-0.9.33.2/include/sys/cdefs.h 2012-05-15 09:20:09.000000000 +0200
  27277. +++ uClibc/include/sys/cdefs.h 2014-02-03 12:32:56.000000000 +0100
  27278. @@ -13,9 +13,8 @@
  27279. Lesser General Public License for more details.
  27280. You should have received a copy of the GNU Lesser General Public
  27281. - License along with the GNU C Library; if not, write to the Free
  27282. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27283. - 02111-1307 USA. */
  27284. + License along with the GNU C Library; if not, see
  27285. + <http://www.gnu.org/licenses/>. */
  27286. #ifndef _SYS_CDEFS_H
  27287. #define _SYS_CDEFS_H 1
  27288. @@ -63,10 +62,6 @@
  27289. # define __THROW
  27290. # define __NTH(fct) fct
  27291. -# define __const const
  27292. -# define __signed signed
  27293. -# define __volatile volatile
  27294. -
  27295. #endif /* GCC. */
  27296. /* These two macros are not used in glibc anymore. They are kept here
  27297. diff -Nur uClibc-0.9.33.2/include/sys/dir.h uClibc/include/sys/dir.h
  27298. --- uClibc-0.9.33.2/include/sys/dir.h 2012-05-15 09:20:09.000000000 +0200
  27299. +++ uClibc/include/sys/dir.h 2014-02-03 12:32:56.000000000 +0100
  27300. @@ -12,9 +12,8 @@
  27301. Lesser General Public License for more details.
  27302. You should have received a copy of the GNU Lesser General Public
  27303. - License along with the GNU C Library; if not, write to the Free
  27304. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27305. - 02111-1307 USA. */
  27306. + License along with the GNU C Library; if not, see
  27307. + <http://www.gnu.org/licenses/>. */
  27308. #ifndef _SYS_DIR_H
  27309. #define _SYS_DIR_H 1
  27310. diff -Nur uClibc-0.9.33.2/include/sys/file.h uClibc/include/sys/file.h
  27311. --- uClibc-0.9.33.2/include/sys/file.h 2012-05-15 09:20:09.000000000 +0200
  27312. +++ uClibc/include/sys/file.h 2014-02-03 12:32:56.000000000 +0100
  27313. @@ -12,9 +12,8 @@
  27314. Lesser General Public License for more details.
  27315. You should have received a copy of the GNU Lesser General Public
  27316. - License along with the GNU C Library; if not, write to the Free
  27317. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27318. - 02111-1307 USA. */
  27319. + License along with the GNU C Library; if not, see
  27320. + <http://www.gnu.org/licenses/>. */
  27321. #ifndef _SYS_FILE_H
  27322. #define _SYS_FILE_H 1
  27323. diff -Nur uClibc-0.9.33.2/include/sys/fsuid.h uClibc/include/sys/fsuid.h
  27324. --- uClibc-0.9.33.2/include/sys/fsuid.h 2012-05-15 09:20:09.000000000 +0200
  27325. +++ uClibc/include/sys/fsuid.h 2014-02-03 12:32:56.000000000 +0100
  27326. @@ -12,9 +12,8 @@
  27327. Lesser General Public License for more details.
  27328. You should have received a copy of the GNU Lesser General Public
  27329. - License along with the GNU C Library; if not, write to the Free
  27330. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27331. - 02111-1307 USA. */
  27332. + License along with the GNU C Library; if not, see
  27333. + <http://www.gnu.org/licenses/>. */
  27334. #ifndef _SYS_FSUID_H
  27335. #define _SYS_FSUID_H 1
  27336. diff -Nur uClibc-0.9.33.2/include/sys/ioctl.h uClibc/include/sys/ioctl.h
  27337. --- uClibc-0.9.33.2/include/sys/ioctl.h 2012-05-15 09:20:09.000000000 +0200
  27338. +++ uClibc/include/sys/ioctl.h 2014-02-03 12:32:56.000000000 +0100
  27339. @@ -12,9 +12,8 @@
  27340. Lesser General Public License for more details.
  27341. You should have received a copy of the GNU Lesser General Public
  27342. - License along with the GNU C Library; if not, write to the Free
  27343. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27344. - 02111-1307 USA. */
  27345. + License along with the GNU C Library; if not, see
  27346. + <http://www.gnu.org/licenses/>. */
  27347. #ifndef _SYS_IOCTL_H
  27348. #define _SYS_IOCTL_H 1
  27349. diff -Nur uClibc-0.9.33.2/include/sys/ipc.h uClibc/include/sys/ipc.h
  27350. --- uClibc-0.9.33.2/include/sys/ipc.h 2012-05-15 09:20:09.000000000 +0200
  27351. +++ uClibc/include/sys/ipc.h 2014-02-03 12:32:56.000000000 +0100
  27352. @@ -12,9 +12,8 @@
  27353. Lesser General Public License for more details.
  27354. You should have received a copy of the GNU Lesser General Public
  27355. - License along with the GNU C Library; if not, write to the Free
  27356. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27357. - 02111-1307 USA. */
  27358. + License along with the GNU C Library; if not, see
  27359. + <http://www.gnu.org/licenses/>. */
  27360. #ifndef _SYS_IPC_H
  27361. #define _SYS_IPC_H 1
  27362. @@ -51,7 +50,7 @@
  27363. __BEGIN_DECLS
  27364. /* Generates key for System V style IPC. */
  27365. -extern key_t ftok (__const char *__pathname, int __proj_id) __THROW;
  27366. +extern key_t ftok (const char *__pathname, int __proj_id) __THROW;
  27367. __END_DECLS
  27368. diff -Nur uClibc-0.9.33.2/include/sys/kdaemon.h uClibc/include/sys/kdaemon.h
  27369. --- uClibc-0.9.33.2/include/sys/kdaemon.h 2012-05-15 09:20:09.000000000 +0200
  27370. +++ uClibc/include/sys/kdaemon.h 2014-02-03 12:32:56.000000000 +0100
  27371. @@ -12,9 +12,8 @@
  27372. Lesser General Public License for more details.
  27373. You should have received a copy of the GNU Lesser General Public
  27374. - License along with the GNU C Library; if not, write to the Free
  27375. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27376. - 02111-1307 USA. */
  27377. + License along with the GNU C Library; if not, see
  27378. + <http://www.gnu.org/licenses/>. */
  27379. /* Interfaces to control the various kernel daemons. */
  27380. diff -Nur uClibc-0.9.33.2/include/sys/kd.h uClibc/include/sys/kd.h
  27381. --- uClibc-0.9.33.2/include/sys/kd.h 2012-05-15 09:20:09.000000000 +0200
  27382. +++ uClibc/include/sys/kd.h 2014-02-03 12:32:56.000000000 +0100
  27383. @@ -12,9 +12,8 @@
  27384. Lesser General Public License for more details.
  27385. You should have received a copy of the GNU Lesser General Public
  27386. - License along with the GNU C Library; if not, write to the Free
  27387. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27388. - 02111-1307 USA. */
  27389. + License along with the GNU C Library; if not, see
  27390. + <http://www.gnu.org/licenses/>. */
  27391. #ifndef _SYS_KD_H
  27392. #define _SYS_KD_H 1
  27393. diff -Nur uClibc-0.9.33.2/include/sys/klog.h uClibc/include/sys/klog.h
  27394. --- uClibc-0.9.33.2/include/sys/klog.h 2012-05-15 09:20:09.000000000 +0200
  27395. +++ uClibc/include/sys/klog.h 2014-02-03 12:32:56.000000000 +0100
  27396. @@ -12,9 +12,8 @@
  27397. Lesser General Public License for more details.
  27398. You should have received a copy of the GNU Lesser General Public
  27399. - License along with the GNU C Library; if not, write to the Free
  27400. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27401. - 02111-1307 USA. */
  27402. + License along with the GNU C Library; if not, see
  27403. + <http://www.gnu.org/licenses/>. */
  27404. #ifndef _SYS_KLOG_H
  27405. diff -Nur uClibc-0.9.33.2/include/sys/mman.h uClibc/include/sys/mman.h
  27406. --- uClibc-0.9.33.2/include/sys/mman.h 2012-05-15 09:20:09.000000000 +0200
  27407. +++ uClibc/include/sys/mman.h 2014-02-03 12:32:56.000000000 +0100
  27408. @@ -13,9 +13,8 @@
  27409. Lesser General Public License for more details.
  27410. You should have received a copy of the GNU Lesser General Public
  27411. - License along with the GNU C Library; if not, write to the Free
  27412. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27413. - 02111-1307 USA. */
  27414. + License along with the GNU C Library; if not, see
  27415. + <http://www.gnu.org/licenses/>. */
  27416. #ifndef _SYS_MMAN_H
  27417. #define _SYS_MMAN_H 1
  27418. @@ -115,10 +114,10 @@
  27419. /* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to
  27420. be memory resident. */
  27421. -extern int mlock (__const void *__addr, size_t __len) __THROW;
  27422. +extern int mlock (const void *__addr, size_t __len) __THROW;
  27423. /* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN). */
  27424. -extern int munlock (__const void *__addr, size_t __len) __THROW;
  27425. +extern int munlock (const void *__addr, size_t __len) __THROW;
  27426. /* Cause all currently mapped pages of the process to be memory resident
  27427. until unlocked by a call to the `munlockall', until the process exits,
  27428. @@ -133,8 +132,8 @@
  27429. /* On no-mmu systems, memory cannot be swapped out, so
  27430. * these functions will always succeed. */
  27431. -static __inline__ int mlock (__const void *__addr, size_t __len) { return 0; }
  27432. -static __inline__ int munlock (__const void *__addr, size_t __len) { return 0; }
  27433. +static __inline__ int mlock (const void *__addr, size_t __len) { return 0; }
  27434. +static __inline__ int munlock (const void *__addr, size_t __len) { return 0; }
  27435. static __inline__ int mlockall (int __flags) { return 0; }
  27436. static __inline__ int munlockall (void) { return 0; }
  27437. #endif
  27438. @@ -170,10 +169,10 @@
  27439. /* Open shared memory segment. */
  27440. -extern int shm_open (__const char *__name, int __oflag, mode_t __mode);
  27441. +extern int shm_open (const char *__name, int __oflag, mode_t __mode);
  27442. /* Remove shared memory segment. */
  27443. -extern int shm_unlink (__const char *__name);
  27444. +extern int shm_unlink (const char *__name);
  27445. __END_DECLS
  27446. diff -Nur uClibc-0.9.33.2/include/sys/mount.h uClibc/include/sys/mount.h
  27447. --- uClibc-0.9.33.2/include/sys/mount.h 2012-05-15 09:20:09.000000000 +0200
  27448. +++ uClibc/include/sys/mount.h 2014-02-03 12:32:56.000000000 +0100
  27449. @@ -1,5 +1,5 @@
  27450. /* Header file for mounting/unmount Linux filesystems.
  27451. - Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc.
  27452. + Copyright (C) 1996-2000, 2004, 2010, 2012 Free Software Foundation, Inc.
  27453. This file is part of the GNU C Library.
  27454. The GNU C Library is free software; you can redistribute it and/or
  27455. @@ -13,9 +13,8 @@
  27456. Lesser General Public License for more details.
  27457. You should have received a copy of the GNU Lesser General Public
  27458. - License along with the GNU C Library; if not, write to the Free
  27459. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27460. - 02111-1307 USA. */
  27461. + License along with the GNU C Library; if not, see
  27462. + <http://www.gnu.org/licenses/>. */
  27463. /* This is taken from /usr/include/linux/fs.h. */
  27464. @@ -47,23 +46,46 @@
  27465. #define MS_REMOUNT MS_REMOUNT
  27466. MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
  27467. #define MS_MANDLOCK MS_MANDLOCK
  27468. - S_WRITE = 128, /* Write on file/directory/symlink. */
  27469. -#define S_WRITE S_WRITE
  27470. - S_APPEND = 256, /* Append-only file. */
  27471. -#define S_APPEND S_APPEND
  27472. - S_IMMUTABLE = 512, /* Immutable file. */
  27473. -#define S_IMMUTABLE S_IMMUTABLE
  27474. + MS_DIRSYNC = 128, /* Directory modifications are synchronous. */
  27475. +#define MS_DIRSYNC MS_DIRSYNC
  27476. MS_NOATIME = 1024, /* Do not update access times. */
  27477. #define MS_NOATIME MS_NOATIME
  27478. MS_NODIRATIME = 2048, /* Do not update directory access times. */
  27479. #define MS_NODIRATIME MS_NODIRATIME
  27480. MS_BIND = 4096, /* Bind directory at different place. */
  27481. #define MS_BIND MS_BIND
  27482. + MS_MOVE = 8192,
  27483. +#define MS_MOVE MS_MOVE
  27484. + MS_REC = 16384,
  27485. +#define MS_REC MS_REC
  27486. + MS_SILENT = 32768,
  27487. +#define MS_SILENT MS_SILENT
  27488. + MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */
  27489. +#define MS_POSIXACL MS_POSIXACL
  27490. + MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */
  27491. +#define MS_UNBINDABLE MS_UNBINDABLE
  27492. + MS_PRIVATE = 1 << 18, /* Change to private. */
  27493. +#define MS_PRIVATE MS_PRIVATE
  27494. + MS_SLAVE = 1 << 19, /* Change to slave. */
  27495. +#define MS_SLAVE MS_SLAVE
  27496. + MS_SHARED = 1 << 20, /* Change to shared. */
  27497. +#define MS_SHARED MS_SHARED
  27498. + MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */
  27499. +#define MS_RELATIME MS_RELATIME
  27500. + MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */
  27501. +#define MS_KERNMOUNT MS_KERNMOUNT
  27502. + MS_I_VERSION = 1 << 23, /* Update inode I_version field. */
  27503. +#define MS_I_VERSION MS_I_VERSION
  27504. + MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */
  27505. +#define MS_STRICTATIME MS_STRICTATIME
  27506. + MS_ACTIVE = 1 << 30,
  27507. +#define MS_ACTIVE MS_ACTIVE
  27508. + MS_NOUSER = 1 << 31
  27509. +#define MS_NOUSER MS_NOUSER
  27510. };
  27511. /* Flags that can be altered by MS_REMOUNT */
  27512. -#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME \
  27513. - |MS_NODIRATIME)
  27514. +#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
  27515. /* Magic mount flag number. Has to be or-ed to the flag values. */
  27516. @@ -100,23 +122,28 @@
  27517. #define MNT_FORCE MNT_FORCE
  27518. MNT_DETACH = 2, /* Just detach from the tree. */
  27519. #define MNT_DETACH MNT_DETACH
  27520. - MNT_EXPIRE = 4 /* Mark for expiry. */
  27521. + MNT_EXPIRE = 4, /* Mark for expiry. */
  27522. #define MNT_EXPIRE MNT_EXPIRE
  27523. + UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */
  27524. +#define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW
  27525. };
  27526. __BEGIN_DECLS
  27527. /* Mount a filesystem. */
  27528. -extern int mount (__const char *__special_file, __const char *__dir,
  27529. - __const char *__fstype, unsigned long int __rwflag,
  27530. - __const void *__data) __THROW;
  27531. +extern int mount (const char *__special_file, const char *__dir,
  27532. + const char *__fstype, unsigned long int __rwflag,
  27533. + const void *__data) __THROW;
  27534. /* Unmount a filesystem. */
  27535. -extern int umount (__const char *__special_file) __THROW;
  27536. +extern int umount (const char *__special_file) __THROW;
  27537. +#ifdef __UCLIBC_LINUX_SPECIFIC__
  27538. /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */
  27539. -extern int umount2 (__const char *__special_file, int __flags) __THROW;
  27540. +extern int umount2 (const char *__special_file, int __flags) __THROW;
  27541. +libc_hidden_proto(umount2)
  27542. +#endif
  27543. __END_DECLS
  27544. diff -Nur uClibc-0.9.33.2/include/sys/msg.h uClibc/include/sys/msg.h
  27545. --- uClibc-0.9.33.2/include/sys/msg.h 2012-05-15 09:20:09.000000000 +0200
  27546. +++ uClibc/include/sys/msg.h 2014-02-03 12:32:56.000000000 +0100
  27547. @@ -13,9 +13,8 @@
  27548. Lesser General Public License for more details.
  27549. You should have received a copy of the GNU Lesser General Public
  27550. - License along with the GNU C Library; if not, write to the Free
  27551. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27552. - 02111-1307 USA. */
  27553. + License along with the GNU C Library; if not, see
  27554. + <http://www.gnu.org/licenses/>. */
  27555. #ifndef _SYS_MSG_H
  27556. #define _SYS_MSG_H
  27557. @@ -77,7 +76,7 @@
  27558. This function is a cancellation point and therefore not marked with
  27559. __THROW. */
  27560. -extern int msgsnd (int __msqid, __const void *__msgp, size_t __msgsz,
  27561. +extern int msgsnd (int __msqid, const void *__msgp, size_t __msgsz,
  27562. int __msgflg);
  27563. __END_DECLS
  27564. diff -Nur uClibc-0.9.33.2/include/sys/mtio.h uClibc/include/sys/mtio.h
  27565. --- uClibc-0.9.33.2/include/sys/mtio.h 2012-05-15 09:20:09.000000000 +0200
  27566. +++ uClibc/include/sys/mtio.h 2014-02-03 12:32:56.000000000 +0100
  27567. @@ -13,9 +13,8 @@
  27568. Lesser General Public License for more details.
  27569. You should have received a copy of the GNU Lesser General Public
  27570. - License along with the GNU C Library; if not, write to the Free
  27571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27572. - 02111-1307 USA. */
  27573. + License along with the GNU C Library; if not, see
  27574. + <http://www.gnu.org/licenses/>. */
  27575. /* Written by H. Bergman <hennus@cybercomm.nl>. */
  27576. diff -Nur uClibc-0.9.33.2/include/sys/param.h uClibc/include/sys/param.h
  27577. --- uClibc-0.9.33.2/include/sys/param.h 2012-05-15 09:20:09.000000000 +0200
  27578. +++ uClibc/include/sys/param.h 2014-02-03 12:32:56.000000000 +0100
  27579. @@ -12,9 +12,8 @@
  27580. Lesser General Public License for more details.
  27581. You should have received a copy of the GNU Lesser General Public
  27582. - License along with the GNU C Library; if not, write to the Free
  27583. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27584. - 02111-1307 USA. */
  27585. + License along with the GNU C Library; if not, see
  27586. + <http://www.gnu.org/licenses/>. */
  27587. #ifndef _SYS_PARAM_H
  27588. #define _SYS_PARAM_H 1
  27589. diff -Nur uClibc-0.9.33.2/include/sys/personality.h uClibc/include/sys/personality.h
  27590. --- uClibc-0.9.33.2/include/sys/personality.h 2012-05-15 09:20:09.000000000 +0200
  27591. +++ uClibc/include/sys/personality.h 2014-02-03 12:32:56.000000000 +0100
  27592. @@ -12,9 +12,8 @@
  27593. Lesser General Public License for more details.
  27594. You should have received a copy of the GNU Lesser General Public
  27595. - License along with the GNU C Library; if not, write to the Free
  27596. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27597. - 02111-1307 USA. */
  27598. + License along with the GNU C Library; if not, see
  27599. + <http://www.gnu.org/licenses/>. */
  27600. /* Taken verbatim from Linux 2.4 (include/linux/personality.h). */
  27601. diff -Nur uClibc-0.9.33.2/include/sys/poll.h uClibc/include/sys/poll.h
  27602. --- uClibc-0.9.33.2/include/sys/poll.h 2012-05-15 09:20:09.000000000 +0200
  27603. +++ uClibc/include/sys/poll.h 2014-02-03 12:32:56.000000000 +0100
  27604. @@ -13,9 +13,8 @@
  27605. Lesser General Public License for more details.
  27606. You should have received a copy of the GNU Lesser General Public
  27607. - License along with the GNU C Library; if not, write to the Free
  27608. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27609. - 02111-1307 USA. */
  27610. + License along with the GNU C Library; if not, see
  27611. + <http://www.gnu.org/licenses/>. */
  27612. #ifndef _SYS_POLL_H
  27613. #define _SYS_POLL_H 1
  27614. @@ -66,9 +65,8 @@
  27615. This function is a cancellation point and therefore not marked with
  27616. __THROW. */
  27617. extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
  27618. - __const struct timespec *__timeout,
  27619. - __const __sigset_t *__ss);
  27620. -libc_hidden_proto(ppoll)
  27621. + const struct timespec *__timeout,
  27622. + const __sigset_t *__ss);
  27623. #endif
  27624. __END_DECLS
  27625. diff -Nur uClibc-0.9.33.2/include/sys/quota.h uClibc/include/sys/quota.h
  27626. --- uClibc-0.9.33.2/include/sys/quota.h 2012-05-15 09:20:09.000000000 +0200
  27627. +++ uClibc/include/sys/quota.h 2014-02-03 12:32:56.000000000 +0100
  27628. @@ -30,8 +30,6 @@
  27629. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  27630. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27631. * SUCH DAMAGE.
  27632. - *
  27633. - * Version: $Id: quota.h,v 1.1 2002/01/03 04:00:09 andersen Exp $
  27634. */
  27635. #ifndef _SYS_QUOTA_H
  27636. @@ -40,6 +38,19 @@
  27637. #include <features.h>
  27638. #include <sys/types.h>
  27639. +#ifdef __UCLIBC__
  27640. +# undef _LINUX_QUOTA_VERSION
  27641. +# define _LINUX_QUOTA_VERSION 1
  27642. +#endif
  27643. +
  27644. +/*
  27645. + * Select between different incompatible quota versions.
  27646. + * Default to the version used by Linux kernel version 2.4.22
  27647. + * or later. */
  27648. +#ifndef _LINUX_QUOTA_VERSION
  27649. +# define _LINUX_QUOTA_VERSION 2
  27650. +#endif
  27651. +
  27652. /*
  27653. * Convert diskblocks to blocks and the other way around.
  27654. * currently only to fool the BSD source. :-)
  27655. @@ -94,21 +105,33 @@
  27656. #define SUBCMDSHIFT 8
  27657. #define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
  27658. -#define Q_QUOTAON 0x0100 /* enable quotas */
  27659. -#define Q_QUOTAOFF 0x0200 /* disable quotas */
  27660. -#define Q_GETQUOTA 0x0300 /* get limits and usage */
  27661. -#define Q_SETQUOTA 0x0400 /* set limits and usage */
  27662. -#define Q_SETUSE 0x0500 /* set usage */
  27663. -#define Q_SYNC 0x0600 /* sync disk copy of a filesystems quotas */
  27664. -#define Q_SETQLIM 0x0700 /* set limits */
  27665. -#define Q_GETSTATS 0x0800 /* get collected stats */
  27666. -#define Q_RSQUASH 0x1000 /* set root_squash option */
  27667. +#if _LINUX_QUOTA_VERSION < 2
  27668. +# define Q_QUOTAON 0x0100 /* enable quotas */
  27669. +# define Q_QUOTAOFF 0x0200 /* disable quotas */
  27670. +# define Q_GETQUOTA 0x0300 /* get limits and usage */
  27671. +# define Q_SETQUOTA 0x0400 /* set limits and usage */
  27672. +# define Q_SETUSE 0x0500 /* set usage */
  27673. +# define Q_SYNC 0x0600 /* sync disk copy of a filesystems quotas */
  27674. +# define Q_SETQLIM 0x0700 /* set limits */
  27675. +# define Q_GETSTATS 0x0800 /* get collected stats */
  27676. +# define Q_RSQUASH 0x1000 /* set root_squash option */
  27677. +#else
  27678. +# define Q_SYNC 0x800001 /* sync disk copy of a filesystems quotas */
  27679. +# define Q_QUOTAON 0x800002 /* turn quotas on */
  27680. +# define Q_QUOTAOFF 0x800003 /* turn quotas off */
  27681. +# define Q_GETFMT 0x800004 /* get quota format used on given filesystem */
  27682. +# define Q_GETINFO 0x800005 /* get information about quota files */
  27683. +# define Q_SETINFO 0x800006 /* set information about quota files */
  27684. +# define Q_GETQUOTA 0x800007 /* get user quota structure */
  27685. +# define Q_SETQUOTA 0x800008 /* set user quota structure */
  27686. +#endif
  27687. /*
  27688. * The following structure defines the format of the disk quota file
  27689. * (as it appears on disk) - the file is an array of these structures
  27690. * indexed by user or group number.
  27691. */
  27692. +#if _LINUX_QUOTA_VERSION < 2
  27693. struct dqblk
  27694. {
  27695. u_int32_t dqb_bhardlimit; /* absolute limit on disk blks alloc */
  27696. @@ -120,13 +143,45 @@
  27697. time_t dqb_btime; /* time limit for excessive disk use */
  27698. time_t dqb_itime; /* time limit for excessive files */
  27699. };
  27700. +#else
  27701. +
  27702. +/* Flags that indicate which fields in dqblk structure are valid. */
  27703. +#define QIF_BLIMITS 1
  27704. +#define QIF_SPACE 2
  27705. +#define QIF_ILIMITS 4
  27706. +#define QIF_INODES 8
  27707. +#define QIF_BTIME 16
  27708. +#define QIF_ITIME 32
  27709. +#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
  27710. +#define QIF_USAGE (QIF_SPACE | QIF_INODES)
  27711. +#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
  27712. +#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
  27713. +
  27714. +struct dqblk
  27715. + {
  27716. + u_int64_t dqb_bhardlimit; /* absolute limit on disk quota blocks alloc */
  27717. + u_int64_t dqb_bsoftlimit; /* preferred limit on disk quota blocks */
  27718. + u_int64_t dqb_curspace; /* current quota block count */
  27719. + u_int64_t dqb_ihardlimit; /* maximum # allocated inodes */
  27720. + u_int64_t dqb_isoftlimit; /* preferred inode limit */
  27721. + u_int64_t dqb_curinodes; /* current # allocated inodes */
  27722. + u_int64_t dqb_btime; /* time limit for excessive disk use */
  27723. + u_int64_t dqb_itime; /* time limit for excessive files */
  27724. + u_int32_t dqb_valid; /* bitmask of QIF_* constants */
  27725. + };
  27726. +#endif
  27727. /*
  27728. * Shorthand notation.
  27729. */
  27730. #define dq_bhardlimit dq_dqb.dqb_bhardlimit
  27731. #define dq_bsoftlimit dq_dqb.dqb_bsoftlimit
  27732. -#define dq_curblocks dq_dqb.dqb_curblocks
  27733. +#if _LINUX_QUOTA_VERSION < 2
  27734. +# define dq_curblocks dq_dqb.dqb_curblocks
  27735. +#else
  27736. +# define dq_curspace dq_dqb.dqb_curspace
  27737. +# define dq_valid dq_dqb.dqb_valid
  27738. +#endif
  27739. #define dq_ihardlimit dq_dqb.dqb_ihardlimit
  27740. #define dq_isoftlimit dq_dqb.dqb_isoftlimit
  27741. #define dq_curinodes dq_dqb.dqb_curinodes
  27742. @@ -135,6 +190,7 @@
  27743. #define dqoff(UID) ((loff_t)((UID) * sizeof (struct dqblk)))
  27744. +#if _LINUX_QUOTA_VERSION < 2
  27745. struct dqstats
  27746. {
  27747. u_int32_t lookups;
  27748. @@ -147,6 +203,22 @@
  27749. u_int32_t free_dquots;
  27750. u_int32_t syncs;
  27751. };
  27752. +#else
  27753. +
  27754. +/* Flags that indicate which fields in dqinfo structure are valid. */
  27755. +# define IIF_BGRACE 1
  27756. +# define IIF_IGRACE 2
  27757. +# define IIF_FLAGS 4
  27758. +# define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
  27759. +
  27760. +struct dqinfo
  27761. + {
  27762. + u_int64_t dqi_bgrace;
  27763. + u_int64_t dqi_igrace;
  27764. + u_int32_t dqi_flags;
  27765. + u_int32_t dqi_valid;
  27766. + };
  27767. +#endif
  27768. __BEGIN_DECLS
  27769. diff -Nur uClibc-0.9.33.2/include/sys/reboot.h uClibc/include/sys/reboot.h
  27770. --- uClibc-0.9.33.2/include/sys/reboot.h 2012-05-15 09:20:09.000000000 +0200
  27771. +++ uClibc/include/sys/reboot.h 2014-02-03 12:32:56.000000000 +0100
  27772. @@ -12,9 +12,8 @@
  27773. Lesser General Public License for more details.
  27774. You should have received a copy of the GNU Lesser General Public
  27775. - License along with the GNU C Library; if not, write to the Free
  27776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27777. - 02111-1307 USA. */
  27778. + License along with the GNU C Library; if not, see
  27779. + <http://www.gnu.org/licenses/>. */
  27780. /* This file should define RB_* macros to be used as flag
  27781. bits in the argument to the `reboot' system call. */
  27782. diff -Nur uClibc-0.9.33.2/include/sys/resource.h uClibc/include/sys/resource.h
  27783. --- uClibc-0.9.33.2/include/sys/resource.h 2012-05-15 09:20:09.000000000 +0200
  27784. +++ uClibc/include/sys/resource.h 2014-02-03 12:32:56.000000000 +0100
  27785. @@ -12,9 +12,8 @@
  27786. Lesser General Public License for more details.
  27787. You should have received a copy of the GNU Lesser General Public
  27788. - License along with the GNU C Library; if not, write to the Free
  27789. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27790. - 02111-1307 USA. */
  27791. + License along with the GNU C Library; if not, see
  27792. + <http://www.gnu.org/licenses/>. */
  27793. #ifndef _SYS_RESOURCE_H
  27794. #define _SYS_RESOURCE_H 1
  27795. @@ -69,12 +68,12 @@
  27796. Return 0 if successful, -1 if not (and sets errno). */
  27797. #ifndef __USE_FILE_OFFSET64
  27798. extern int setrlimit (__rlimit_resource_t __resource,
  27799. - __const struct rlimit *__rlimits) __THROW;
  27800. + const struct rlimit *__rlimits) __THROW;
  27801. libc_hidden_proto(setrlimit)
  27802. #else
  27803. # ifdef __REDIRECT_NTH
  27804. extern int __REDIRECT_NTH (setrlimit, (__rlimit_resource_t __resource,
  27805. - __const struct rlimit *__rlimits),
  27806. + const struct rlimit *__rlimits),
  27807. setrlimit64);
  27808. # else
  27809. # define setrlimit setrlimit64
  27810. @@ -82,7 +81,7 @@
  27811. #endif
  27812. #ifdef __USE_LARGEFILE64
  27813. extern int setrlimit64 (__rlimit_resource_t __resource,
  27814. - __const struct rlimit64 *__rlimits) __THROW;
  27815. + const struct rlimit64 *__rlimits) __THROW;
  27816. #endif
  27817. /* Return resource usage information on process indicated by WHO
  27818. diff -Nur uClibc-0.9.33.2/include/sys/select.h uClibc/include/sys/select.h
  27819. --- uClibc-0.9.33.2/include/sys/select.h 2012-05-15 09:20:09.000000000 +0200
  27820. +++ uClibc/include/sys/select.h 2014-02-03 12:32:56.000000000 +0100
  27821. @@ -13,9 +13,8 @@
  27822. Lesser General Public License for more details.
  27823. You should have received a copy of the GNU Lesser General Public
  27824. - License along with the GNU C Library; if not, write to the Free
  27825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27826. - 02111-1307 USA. */
  27827. + License along with the GNU C Library; if not, see
  27828. + <http://www.gnu.org/licenses/>. */
  27829. /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */
  27830. @@ -110,7 +109,10 @@
  27831. fd_set *__restrict __writefds,
  27832. fd_set *__restrict __exceptfds,
  27833. struct timeval *__restrict __timeout);
  27834. +#ifdef _LIBC
  27835. +extern __typeof(select) __select_nocancel attribute_hidden;
  27836. libc_hidden_proto(select)
  27837. +#endif
  27838. #ifdef __USE_XOPEN2K
  27839. /* Same as above only that the TIMEOUT value is given with higher
  27840. diff -Nur uClibc-0.9.33.2/include/sys/sem.h uClibc/include/sys/sem.h
  27841. --- uClibc-0.9.33.2/include/sys/sem.h 2012-05-15 09:20:09.000000000 +0200
  27842. +++ uClibc/include/sys/sem.h 2014-02-03 12:32:56.000000000 +0100
  27843. @@ -12,9 +12,8 @@
  27844. Lesser General Public License for more details.
  27845. You should have received a copy of the GNU Lesser General Public
  27846. - License along with the GNU C Library; if not, write to the Free
  27847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27848. - 02111-1307 USA. */
  27849. + License along with the GNU C Library; if not, see
  27850. + <http://www.gnu.org/licenses/>. */
  27851. #ifndef _SYS_SEM_H
  27852. #define _SYS_SEM_H 1
  27853. @@ -61,7 +60,7 @@
  27854. #ifdef __USE_GNU
  27855. /* Operate on semaphore with timeout. */
  27856. extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
  27857. - __const struct timespec *__timeout) __THROW;
  27858. + const struct timespec *__timeout) __THROW;
  27859. #endif
  27860. __END_DECLS
  27861. diff -Nur uClibc-0.9.33.2/include/sys/sendfile.h uClibc/include/sys/sendfile.h
  27862. --- uClibc-0.9.33.2/include/sys/sendfile.h 2012-05-15 09:20:09.000000000 +0200
  27863. +++ uClibc/include/sys/sendfile.h 2014-02-03 12:32:56.000000000 +0100
  27864. @@ -13,9 +13,8 @@
  27865. Lesser General Public License for more details.
  27866. You should have received a copy of the GNU Lesser General Public
  27867. - License along with the GNU C Library; if not, write to the Free
  27868. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27869. - 02111-1307 USA. */
  27870. + License along with the GNU C Library; if not, see
  27871. + <http://www.gnu.org/licenses/>. */
  27872. #ifndef _SYS_SENDFILE_H
  27873. #define _SYS_SENDFILE_H 1
  27874. @@ -45,6 +44,7 @@
  27875. #ifdef __USE_LARGEFILE64
  27876. extern ssize_t sendfile64 (int __out_fd, int __in_fd, __off64_t *__offset,
  27877. size_t __count) __THROW;
  27878. +libc_hidden_proto(sendfile64)
  27879. #endif
  27880. __END_DECLS
  27881. diff -Nur uClibc-0.9.33.2/include/sys/shm.h uClibc/include/sys/shm.h
  27882. --- uClibc-0.9.33.2/include/sys/shm.h 2012-05-15 09:20:09.000000000 +0200
  27883. +++ uClibc/include/sys/shm.h 2014-02-03 12:32:56.000000000 +0100
  27884. @@ -12,9 +12,8 @@
  27885. Lesser General Public License for more details.
  27886. You should have received a copy of the GNU Lesser General Public
  27887. - License along with the GNU C Library; if not, write to the Free
  27888. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27889. - 02111-1307 USA. */
  27890. + License along with the GNU C Library; if not, see
  27891. + <http://www.gnu.org/licenses/>. */
  27892. #ifndef _SYS_SHM_H
  27893. #define _SYS_SHM_H 1
  27894. @@ -54,11 +53,11 @@
  27895. extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
  27896. /* Attach shared memory segment. */
  27897. -extern void *shmat (int __shmid, __const void *__shmaddr, int __shmflg)
  27898. +extern void *shmat (int __shmid, const void *__shmaddr, int __shmflg)
  27899. __THROW;
  27900. /* Detach shared memory segment. */
  27901. -extern int shmdt (__const void *__shmaddr) __THROW;
  27902. +extern int shmdt (const void *__shmaddr) __THROW;
  27903. __END_DECLS
  27904. diff -Nur uClibc-0.9.33.2/include/sys/socket.h uClibc/include/sys/socket.h
  27905. --- uClibc-0.9.33.2/include/sys/socket.h 2012-05-15 09:20:09.000000000 +0200
  27906. +++ uClibc/include/sys/socket.h 2014-02-03 12:32:56.000000000 +0100
  27907. @@ -14,9 +14,8 @@
  27908. Lesser General Public License for more details.
  27909. You should have received a copy of the GNU Lesser General Public
  27910. - License along with the GNU C Library; if not, write to the Free
  27911. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27912. - 02111-1307 USA. */
  27913. + License along with the GNU C Library; if not, see
  27914. + <http://www.gnu.org/licenses/>. */
  27915. #ifndef _SYS_SOCKET_H
  27916. #define _SYS_SOCKET_H 1
  27917. @@ -69,7 +68,7 @@
  27918. old-style declaration, too. */
  27919. #if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU
  27920. # define __SOCKADDR_ARG struct sockaddr *__restrict
  27921. -# define __CONST_SOCKADDR_ARG __const struct sockaddr *
  27922. +# define __CONST_SOCKADDR_ARG const struct sockaddr *
  27923. #else
  27924. /* Add more `struct sockaddr_AF' types here as necessary.
  27925. These are all the ones I found on NetBSD and Linux. */
  27926. @@ -92,7 +91,7 @@
  27927. typedef union { __SOCKADDR_ALLTYPES
  27928. } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
  27929. # undef __SOCKADDR_ONETYPE
  27930. -# define __SOCKADDR_ONETYPE(type) __const struct type *__restrict __##type##__;
  27931. +# define __SOCKADDR_ONETYPE(type) const struct type *__restrict __##type##__;
  27932. typedef union { __SOCKADDR_ALLTYPES
  27933. } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
  27934. # undef __SOCKADDR_ONETYPE
  27935. @@ -142,7 +141,7 @@
  27936. This function is a cancellation point and therefore not marked with
  27937. __THROW. */
  27938. -extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
  27939. +extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);
  27940. libc_hidden_proto(send)
  27941. /* Read N bytes into BUF from socket FD.
  27942. @@ -158,10 +157,13 @@
  27943. This function is a cancellation point and therefore not marked with
  27944. __THROW. */
  27945. -extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
  27946. +extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
  27947. int __flags, __CONST_SOCKADDR_ARG __addr,
  27948. socklen_t __addr_len);
  27949. +#ifdef _LIBC
  27950. +extern __typeof(sendto) __sendto_nocancel attribute_hidden;
  27951. libc_hidden_proto(sendto)
  27952. +#endif
  27953. /* Read N bytes into BUF through socket FD.
  27954. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
  27955. @@ -173,7 +175,10 @@
  27956. extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
  27957. int __flags, __SOCKADDR_ARG __addr,
  27958. socklen_t *__restrict __addr_len);
  27959. +#ifdef _LIBC
  27960. +extern __typeof(recvfrom) __recvfrom_nocancel attribute_hidden;
  27961. libc_hidden_proto(recvfrom)
  27962. +#endif
  27963. /* Send a message described MESSAGE on socket FD.
  27964. @@ -181,7 +186,7 @@
  27965. This function is a cancellation point and therefore not marked with
  27966. __THROW. */
  27967. -extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
  27968. +extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
  27969. int __flags);
  27970. libc_hidden_proto(sendmsg)
  27971. @@ -205,7 +210,7 @@
  27972. to *OPTVAL (which is OPTLEN bytes long).
  27973. Returns 0 on success, -1 for errors. */
  27974. extern int setsockopt (int __fd, int __level, int __optname,
  27975. - __const void *__optval, socklen_t __optlen) __THROW;
  27976. + const void *__optval, socklen_t __optlen) __THROW;
  27977. libc_hidden_proto(setsockopt)
  27978. @@ -260,4 +265,8 @@
  27979. __END_DECLS
  27980. +#ifdef _LIBC
  27981. +extern int __socketcall(int, unsigned long *) attribute_hidden;
  27982. +#endif
  27983. +
  27984. #endif /* sys/socket.h */
  27985. diff -Nur uClibc-0.9.33.2/include/sys/statfs.h uClibc/include/sys/statfs.h
  27986. --- uClibc-0.9.33.2/include/sys/statfs.h 2012-05-15 09:20:09.000000000 +0200
  27987. +++ uClibc/include/sys/statfs.h 2014-02-03 12:32:56.000000000 +0100
  27988. @@ -13,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. #ifndef _SYS_STATFS_H
  27997. #define _SYS_STATFS_H 1
  27998. @@ -29,19 +28,20 @@
  27999. /* Return information about the filesystem on which FILE resides. */
  28000. #ifndef __USE_FILE_OFFSET64
  28001. -extern int statfs (__const char *__file, struct statfs *__buf)
  28002. +extern int statfs (const char *__file, struct statfs *__buf)
  28003. __THROW __nonnull ((1, 2));
  28004. +libc_hidden_proto(statfs)
  28005. #else
  28006. # ifdef __REDIRECT_NTH
  28007. extern int __REDIRECT_NTH (statfs,
  28008. - (__const char *__file, struct statfs *__buf),
  28009. + (const char *__file, struct statfs *__buf),
  28010. statfs64) __nonnull ((1, 2));
  28011. # else
  28012. # define statfs statfs64
  28013. # endif
  28014. #endif
  28015. #ifdef __USE_LARGEFILE64
  28016. -extern int statfs64 (__const char *__file, struct statfs64 *__buf)
  28017. +extern int statfs64 (const char *__file, struct statfs64 *__buf)
  28018. __THROW __nonnull ((1, 2));
  28019. libc_hidden_proto(statfs64)
  28020. #endif
  28021. diff -Nur uClibc-0.9.33.2/include/sys/stat.h uClibc/include/sys/stat.h
  28022. --- uClibc-0.9.33.2/include/sys/stat.h 2012-05-15 09:20:09.000000000 +0200
  28023. +++ uClibc/include/sys/stat.h 2014-02-03 12:32:56.000000000 +0100
  28024. @@ -13,9 +13,8 @@
  28025. Lesser General Public License for more details.
  28026. You should have received a copy of the GNU Lesser General Public
  28027. - License along with the GNU C Library; if not, write to the Free
  28028. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28029. - 02111-1307 USA. */
  28030. + License along with the GNU C Library; if not, see
  28031. + <http://www.gnu.org/licenses/>. */
  28032. /*
  28033. * POSIX Standard: 5.6 File Characteristics <sys/stat.h>
  28034. @@ -206,7 +205,7 @@
  28035. #ifndef __USE_FILE_OFFSET64
  28036. /* Get file attributes for FILE and put them in BUF. */
  28037. -extern int stat (__const char *__restrict __file,
  28038. +extern int stat (const char *__restrict __file,
  28039. struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
  28040. libc_hidden_proto(stat)
  28041. @@ -216,7 +215,7 @@
  28042. libc_hidden_proto(fstat)
  28043. #else
  28044. # ifdef __REDIRECT_NTH
  28045. -extern int __REDIRECT_NTH (stat, (__const char *__restrict __file,
  28046. +extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
  28047. struct stat *__restrict __buf), stat64)
  28048. __nonnull ((1, 2));
  28049. extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
  28050. @@ -227,7 +226,7 @@
  28051. # endif
  28052. #endif
  28053. #ifdef __USE_LARGEFILE64
  28054. -extern int stat64 (__const char *__restrict __file,
  28055. +extern int stat64 (const char *__restrict __file,
  28056. struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
  28057. extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
  28058. libc_hidden_proto(stat64)
  28059. @@ -239,12 +238,13 @@
  28060. Relative path names are interpreted relative to FD unless FD is
  28061. AT_FDCWD. */
  28062. # ifndef __USE_FILE_OFFSET64
  28063. -extern int fstatat (int __fd, __const char *__restrict __file,
  28064. +extern int fstatat (int __fd, const char *__restrict __file,
  28065. struct stat *__restrict __buf, int __flag)
  28066. __THROW __nonnull ((2, 3));
  28067. +libc_hidden_proto(fstatat)
  28068. # else
  28069. # ifdef __REDIRECT_NTH
  28070. -extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file,
  28071. +extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
  28072. struct stat *__restrict __buf,
  28073. int __flag),
  28074. fstatat64) __nonnull ((2, 3));
  28075. @@ -254,9 +254,10 @@
  28076. # endif
  28077. # ifdef __USE_LARGEFILE64
  28078. -extern int fstatat64 (int __fd, __const char *__restrict __file,
  28079. +extern int fstatat64 (int __fd, const char *__restrict __file,
  28080. struct stat64 *__restrict __buf, int __flag)
  28081. __THROW __nonnull ((2, 3));
  28082. +libc_hidden_proto(fstatat64)
  28083. # endif
  28084. #endif
  28085. @@ -264,13 +265,13 @@
  28086. # ifndef __USE_FILE_OFFSET64
  28087. /* Get file attributes about FILE and put them in BUF.
  28088. If FILE is a symbolic link, do not follow it. */
  28089. -extern int lstat (__const char *__restrict __file,
  28090. +extern int lstat (const char *__restrict __file,
  28091. struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
  28092. libc_hidden_proto(lstat)
  28093. # else
  28094. # ifdef __REDIRECT_NTH
  28095. extern int __REDIRECT_NTH (lstat,
  28096. - (__const char *__restrict __file,
  28097. + (const char *__restrict __file,
  28098. struct stat *__restrict __buf), lstat64)
  28099. __nonnull ((1, 2));
  28100. # else
  28101. @@ -278,7 +279,7 @@
  28102. # endif
  28103. # endif
  28104. # ifdef __USE_LARGEFILE64
  28105. -extern int lstat64 (__const char *__restrict __file,
  28106. +extern int lstat64 (const char *__restrict __file,
  28107. struct stat64 *__restrict __buf)
  28108. __THROW __nonnull ((1, 2));
  28109. libc_hidden_proto(lstat64)
  28110. @@ -287,7 +288,7 @@
  28111. /* Set file access permissions for FILE to MODE.
  28112. If FILE is a symbolic link, this affects its target instead. */
  28113. -extern int chmod (__const char *__file, __mode_t __mode)
  28114. +extern int chmod (const char *__file, __mode_t __mode)
  28115. __THROW __nonnull ((1));
  28116. libc_hidden_proto(chmod)
  28117. @@ -295,7 +296,7 @@
  28118. /* Set file access permissions for FILE to MODE.
  28119. If FILE is a symbolic link, this affects the link itself
  28120. rather than its target. */
  28121. -extern int lchmod (__const char *__file, __mode_t __mode)
  28122. +extern int lchmod (const char *__file, __mode_t __mode)
  28123. __THROW __nonnull ((1));
  28124. #endif
  28125. @@ -307,9 +308,10 @@
  28126. #ifdef __USE_ATFILE
  28127. /* Set file access permissions of FILE relative to
  28128. the directory FD is open on. */
  28129. -extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
  28130. +extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
  28131. int __flag)
  28132. __THROW __nonnull ((2)) __wur;
  28133. +libc_hidden_proto(fchmodat)
  28134. #endif /* Use ATFILE. */
  28135. @@ -325,7 +327,7 @@
  28136. #endif
  28137. /* Create a new directory named PATH, with permission bits MODE. */
  28138. -extern int mkdir (__const char *__path, __mode_t __mode)
  28139. +extern int mkdir (const char *__path, __mode_t __mode)
  28140. __THROW __nonnull ((1));
  28141. libc_hidden_proto(mkdir)
  28142. @@ -333,15 +335,16 @@
  28143. /* Like mkdir, create a new directory with permission bits MODE. But
  28144. interpret relative PATH names relative to the directory associated
  28145. with FD. */
  28146. -extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
  28147. +extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
  28148. __THROW __nonnull ((2));
  28149. +libc_hidden_proto(mkdirat)
  28150. #endif
  28151. /* Create a device file named PATH, with permission and special bits MODE
  28152. and device number DEV (which can be constructed from major and minor
  28153. device numbers with the `makedev' macro above). */
  28154. #if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  28155. -extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
  28156. +extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
  28157. __THROW __nonnull ((1));
  28158. libc_hidden_proto(mknod)
  28159. @@ -349,7 +352,7 @@
  28160. /* Like mknod, create a new device file with permission bits MODE and
  28161. device number DEV. But interpret relative PATH names relative to
  28162. the directory associated with FD. */
  28163. -extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
  28164. +extern int mknodat (int __fd, const char *__path, __mode_t __mode,
  28165. __dev_t __dev) __THROW __nonnull ((2));
  28166. libc_hidden_proto(mknodat)
  28167. # endif
  28168. @@ -357,22 +360,22 @@
  28169. /* Create a new FIFO named PATH, with permission bits MODE. */
  28170. -extern int mkfifo (__const char *__path, __mode_t __mode)
  28171. +extern int mkfifo (const char *__path, __mode_t __mode)
  28172. __THROW __nonnull ((1));
  28173. #ifdef __USE_ATFILE
  28174. /* Like mkfifo, create a new FIFO with permission bits MODE. But
  28175. interpret relative PATH names relative to the directory associated
  28176. with FD. */
  28177. -extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
  28178. +extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
  28179. __THROW __nonnull ((2));
  28180. #endif
  28181. #ifdef __USE_ATFILE
  28182. /* Set file access and modification times relative to directory file
  28183. descriptor. */
  28184. -extern int utimensat (int __fd, __const char *__path,
  28185. - __const struct timespec __times[2],
  28186. +extern int utimensat (int __fd, const char *__path,
  28187. + const struct timespec __times[2],
  28188. int __flags)
  28189. __THROW __nonnull ((2));
  28190. libc_hidden_proto(utimensat)
  28191. @@ -380,7 +383,7 @@
  28192. #ifdef __USE_XOPEN2K8
  28193. /* Set file access and modification times of the file associated with FD. */
  28194. -extern int futimens (int __fd, __const struct timespec __times[2]) __THROW;
  28195. +extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
  28196. #endif
  28197. /* on uClibc we have unversioned struct stat and mknod.
  28198. diff -Nur uClibc-0.9.33.2/include/sys/statvfs.h uClibc/include/sys/statvfs.h
  28199. --- uClibc-0.9.33.2/include/sys/statvfs.h 2012-05-15 09:20:09.000000000 +0200
  28200. +++ uClibc/include/sys/statvfs.h 2014-02-03 12:32:56.000000000 +0100
  28201. @@ -13,9 +13,8 @@
  28202. Lesser General Public License for more details.
  28203. You should have received a copy of the GNU Lesser General Public
  28204. - License along with the GNU C Library; if not, write to the Free
  28205. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28206. - 02111-1307 USA. */
  28207. + License along with the GNU C Library; if not, see
  28208. + <http://www.gnu.org/licenses/>. */
  28209. #ifndef _SYS_STATVFS_H
  28210. #define _SYS_STATVFS_H 1
  28211. @@ -49,14 +48,14 @@
  28212. /* Return information about the filesystem on which FILE resides. */
  28213. #ifndef __USE_FILE_OFFSET64
  28214. -extern int statvfs (__const char *__restrict __file,
  28215. +extern int statvfs (const char *__restrict __file,
  28216. struct statvfs *__restrict __buf)
  28217. __THROW __nonnull ((1, 2));
  28218. libc_hidden_proto(statvfs)
  28219. #else
  28220. # ifdef __REDIRECT_NTH
  28221. extern int __REDIRECT_NTH (statvfs,
  28222. - (__const char *__restrict __file,
  28223. + (const char *__restrict __file,
  28224. struct statvfs *__restrict __buf), statvfs64)
  28225. __nonnull ((1, 2));
  28226. # else
  28227. @@ -64,7 +63,7 @@
  28228. # endif
  28229. #endif
  28230. #ifdef __USE_LARGEFILE64
  28231. -extern int statvfs64 (__const char *__restrict __file,
  28232. +extern int statvfs64 (const char *__restrict __file,
  28233. struct statvfs64 *__restrict __buf)
  28234. __THROW __nonnull ((1, 2));
  28235. #endif
  28236. diff -Nur uClibc-0.9.33.2/include/sys/swap.h uClibc/include/sys/swap.h
  28237. --- uClibc-0.9.33.2/include/sys/swap.h 2012-05-15 09:20:09.000000000 +0200
  28238. +++ uClibc/include/sys/swap.h 2014-02-03 12:32:56.000000000 +0100
  28239. @@ -13,9 +13,8 @@
  28240. Lesser General Public License for more details.
  28241. You should have received a copy of the GNU Lesser General Public
  28242. - License along with the GNU C Library; if not, write to the Free
  28243. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28244. - 02111-1307 USA. */
  28245. + License along with the GNU C Library; if not, see
  28246. + <http://www.gnu.org/licenses/>. */
  28247. #ifndef _SYS_SWAP_H
  28248. @@ -33,10 +32,10 @@
  28249. /* Make the block special device PATH available to the system for swapping.
  28250. This call is restricted to the super-user. */
  28251. -extern int swapon (__const char *__path, int __flags) __THROW;
  28252. +extern int swapon (const char *__path, int __flags) __THROW;
  28253. /* Stop using block special device PATH for swapping. */
  28254. -extern int swapoff (__const char *__path) __THROW;
  28255. +extern int swapoff (const char *__path) __THROW;
  28256. __END_DECLS
  28257. diff -Nur uClibc-0.9.33.2/include/sys/syscall.h uClibc/include/sys/syscall.h
  28258. --- uClibc-0.9.33.2/include/sys/syscall.h 2012-05-15 09:20:09.000000000 +0200
  28259. +++ uClibc/include/sys/syscall.h 2014-02-03 12:32:56.000000000 +0100
  28260. @@ -12,9 +12,8 @@
  28261. Lesser General Public License for more details.
  28262. You should have received a copy of the GNU Lesser General Public
  28263. - License along with the GNU C Library; if not, write to the Free
  28264. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28265. - 02111-1307 USA. */
  28266. + License along with the GNU C Library; if not, see
  28267. + <http://www.gnu.org/licenses/>. */
  28268. #ifndef _SYSCALL_H
  28269. #define _SYSCALL_H 1
  28270. diff -Nur uClibc-0.9.33.2/include/sys/sysctl.h uClibc/include/sys/sysctl.h
  28271. --- uClibc-0.9.33.2/include/sys/sysctl.h 2012-05-15 09:20:09.000000000 +0200
  28272. +++ uClibc/include/sys/sysctl.h 2014-02-03 12:32:56.000000000 +0100
  28273. @@ -12,9 +12,8 @@
  28274. Lesser General Public License for more details.
  28275. You should have received a copy of the GNU Lesser General Public
  28276. - License along with the GNU C Library; if not, write to the Free
  28277. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28278. - 02111-1307 USA. */
  28279. + License along with the GNU C Library; if not, see
  28280. + <http://www.gnu.org/licenses/>. */
  28281. #ifndef _SYS_SYSCTL_H
  28282. #define _SYS_SYSCTL_H 1
  28283. diff -Nur uClibc-0.9.33.2/include/sys/sysinfo.h uClibc/include/sys/sysinfo.h
  28284. --- uClibc-0.9.33.2/include/sys/sysinfo.h 2012-05-15 09:20:09.000000000 +0200
  28285. +++ uClibc/include/sys/sysinfo.h 2014-02-03 12:32:56.000000000 +0100
  28286. @@ -12,9 +12,8 @@
  28287. Lesser General Public License for more details.
  28288. You should have received a copy of the GNU Lesser General Public
  28289. - License along with the GNU C Library; if not, write to the Free
  28290. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28291. - 02111-1307 USA. */
  28292. + License along with the GNU C Library; if not, see
  28293. + <http://www.gnu.org/licenses/>. */
  28294. #ifndef _SYS_SYSINFO_H
  28295. #define _SYS_SYSINFO_H 1
  28296. diff -Nur uClibc-0.9.33.2/include/sys/syslog.h uClibc/include/sys/syslog.h
  28297. --- uClibc-0.9.33.2/include/sys/syslog.h 2012-05-15 09:20:09.000000000 +0200
  28298. +++ uClibc/include/sys/syslog.h 2014-02-03 12:32:56.000000000 +0100
  28299. @@ -179,14 +179,12 @@
  28300. This function is a possible cancellation point and therefore not
  28301. marked with __THROW. */
  28302. extern void closelog (void);
  28303. -libc_hidden_proto(closelog)
  28304. /* Open connection to system logger.
  28305. This function is a possible cancellation point and therefore not
  28306. marked with __THROW. */
  28307. -extern void openlog (__const char *__ident, int __option, int __facility);
  28308. -libc_hidden_proto(openlog)
  28309. +extern void openlog (const char *__ident, int __option, int __facility);
  28310. /* Set the log mask level. */
  28311. extern int setlogmask (int __mask) __THROW;
  28312. @@ -195,7 +193,7 @@
  28313. This function is a possible cancellation point and therefore not
  28314. marked with __THROW. */
  28315. -extern void syslog (int __pri, __const char *__fmt, ...)
  28316. +extern void syslog (int __pri, const char *__fmt, ...)
  28317. __attribute__ ((__format__ (__printf__, 2, 3)));
  28318. libc_hidden_proto(syslog)
  28319. @@ -206,9 +204,8 @@
  28320. cancellation point. But due to similarity with an POSIX interface
  28321. or due to the implementation it is a cancellation point and
  28322. therefore not marked with __THROW. */
  28323. -extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
  28324. +extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
  28325. __attribute__ ((__format__ (__printf__, 2, 0)));
  28326. -libc_hidden_proto(vsyslog)
  28327. #endif
  28328. __END_DECLS
  28329. diff -Nur uClibc-0.9.33.2/include/sys/sysmacros.h uClibc/include/sys/sysmacros.h
  28330. --- uClibc-0.9.33.2/include/sys/sysmacros.h 2012-05-15 09:20:09.000000000 +0200
  28331. +++ uClibc/include/sys/sysmacros.h 2014-02-03 12:32:56.000000000 +0100
  28332. @@ -13,9 +13,8 @@
  28333. Lesser General Public License for more details.
  28334. You should have received a copy of the GNU Lesser General Public
  28335. - License along with the GNU C Library; if not, write to the Free
  28336. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28337. - 02111-1307 USA. */
  28338. + License along with the GNU C Library; if not, see
  28339. + <http://www.gnu.org/licenses/>. */
  28340. #ifndef _SYS_SYSMACROS_H
  28341. #define _SYS_SYSMACROS_H 1
  28342. diff -Nur uClibc-0.9.33.2/include/sys/timeb.h uClibc/include/sys/timeb.h
  28343. --- uClibc-0.9.33.2/include/sys/timeb.h 2012-05-15 09:20:09.000000000 +0200
  28344. +++ uClibc/include/sys/timeb.h 2014-02-03 12:32:56.000000000 +0100
  28345. @@ -12,9 +12,8 @@
  28346. Lesser General Public License for more details.
  28347. You should have received a copy of the GNU Lesser General Public
  28348. - License along with the GNU C Library; if not, write to the Free
  28349. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28350. - 02111-1307 USA. */
  28351. + License along with the GNU C Library; if not, see
  28352. + <http://www.gnu.org/licenses/>. */
  28353. #ifndef _SYS_TIMEB_H
  28354. #define _SYS_TIMEB_H 1
  28355. diff -Nur uClibc-0.9.33.2/include/sys/time.h uClibc/include/sys/time.h
  28356. --- uClibc-0.9.33.2/include/sys/time.h 2012-05-15 09:20:09.000000000 +0200
  28357. +++ uClibc/include/sys/time.h 2014-02-03 12:32:56.000000000 +0100
  28358. @@ -13,9 +13,8 @@
  28359. Lesser General Public License for more details.
  28360. You should have received a copy of the GNU Lesser General Public
  28361. - License along with the GNU C Library; if not, write to the Free
  28362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28363. - 02111-1307 USA. */
  28364. + License along with the GNU C Library; if not, see
  28365. + <http://www.gnu.org/licenses/>. */
  28366. #ifndef _SYS_TIME_H
  28367. #define _SYS_TIME_H 1
  28368. @@ -77,8 +76,8 @@
  28369. #ifdef __USE_BSD
  28370. /* Set the current time of day and timezone information.
  28371. This call is restricted to the super-user. */
  28372. -extern int settimeofday (__const struct timeval *__tv,
  28373. - __const struct timezone *__tz)
  28374. +extern int settimeofday (const struct timeval *__tv,
  28375. + const struct timezone *__tz)
  28376. __THROW __nonnull ((1));
  28377. libc_hidden_proto(settimeofday)
  28378. @@ -86,7 +85,7 @@
  28379. If OLDDELTA is not NULL, it is filled in with the amount
  28380. of time adjustment remaining to be done from the last `adjtime' call.
  28381. This call is restricted to the super-user. */
  28382. -extern int adjtime (__const struct timeval *__delta,
  28383. +extern int adjtime (const struct timeval *__delta,
  28384. struct timeval *__olddelta) __THROW;
  28385. #endif
  28386. @@ -133,25 +132,25 @@
  28387. set *OLD to the old value of timer WHICH.
  28388. Returns 0 on success, -1 on errors. */
  28389. extern int setitimer (__itimer_which_t __which,
  28390. - __const struct itimerval *__restrict __new,
  28391. + const struct itimerval *__restrict __new,
  28392. struct itimerval *__restrict __old) __THROW;
  28393. libc_hidden_proto(setitimer)
  28394. /* Change the access time of FILE to TVP[0] and the modification time of
  28395. FILE to TVP[1]. If TVP is a null pointer, use the current time instead.
  28396. Returns 0 on success, -1 on errors. */
  28397. -extern int utimes (__const char *__file, __const struct timeval __tvp[2])
  28398. +extern int utimes (const char *__file, const struct timeval __tvp[2])
  28399. __THROW __nonnull ((1));
  28400. libc_hidden_proto(utimes)
  28401. #ifdef __USE_BSD
  28402. /* Same as `utimes', but does not follow symbolic links. */
  28403. -extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
  28404. +extern int lutimes (const char *__file, const struct timeval __tvp[2])
  28405. __THROW __nonnull ((1));
  28406. #if 0
  28407. /* Same as `utimes', but takes an open file descriptor instead of a name. */
  28408. -extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
  28409. +extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
  28410. #endif
  28411. #endif
  28412. @@ -159,8 +158,8 @@
  28413. /* Change the access time of FILE relative to FD to TVP[0] and the
  28414. modification time of FILE to TVP[1]. If TVP is a null pointer, use
  28415. the current time instead. Returns 0 on success, -1 on errors. */
  28416. -extern int futimesat (int __fd, __const char *__file,
  28417. - __const struct timeval __tvp[2]) __THROW;
  28418. +extern int futimesat (int __fd, const char *__file,
  28419. + const struct timeval __tvp[2]) __THROW;
  28420. #endif
  28421. diff -Nur uClibc-0.9.33.2/include/sys/times.h uClibc/include/sys/times.h
  28422. --- uClibc-0.9.33.2/include/sys/times.h 2012-05-15 09:20:09.000000000 +0200
  28423. +++ uClibc/include/sys/times.h 2014-02-03 12:32:56.000000000 +0100
  28424. @@ -12,9 +12,8 @@
  28425. Lesser General Public License for more details.
  28426. You should have received a copy of the GNU Lesser General Public
  28427. - License along with the GNU C Library; if not, write to the Free
  28428. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28429. - 02111-1307 USA. */
  28430. + License along with the GNU C Library; if not, see
  28431. + <http://www.gnu.org/licenses/>. */
  28432. /*
  28433. * POSIX Standard: 4.5.2 Process Times <sys/times.h>
  28434. diff -Nur uClibc-0.9.33.2/include/sys/timex.h uClibc/include/sys/timex.h
  28435. --- uClibc-0.9.33.2/include/sys/timex.h 2012-05-15 09:20:09.000000000 +0200
  28436. +++ uClibc/include/sys/timex.h 2014-02-03 12:32:56.000000000 +0100
  28437. @@ -12,9 +12,8 @@
  28438. Lesser General Public License for more details.
  28439. You should have received a copy of the GNU Lesser General Public
  28440. - License along with the GNU C Library; if not, write to the Free
  28441. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28442. - 02111-1307 USA. */
  28443. + License along with the GNU C Library; if not, see
  28444. + <http://www.gnu.org/licenses/>. */
  28445. #ifndef _SYS_TIMEX_H
  28446. #define _SYS_TIMEX_H 1
  28447. diff -Nur uClibc-0.9.33.2/include/sys/types.h uClibc/include/sys/types.h
  28448. --- uClibc-0.9.33.2/include/sys/types.h 2012-05-15 09:20:09.000000000 +0200
  28449. +++ uClibc/include/sys/types.h 2014-02-03 12:32:56.000000000 +0100
  28450. @@ -13,9 +13,8 @@
  28451. Lesser General Public License for more details.
  28452. You should have received a copy of the GNU Lesser General Public
  28453. - License along with the GNU C Library; if not, write to the Free
  28454. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28455. - 02111-1307 USA. */
  28456. + License along with the GNU C Library; if not, see
  28457. + <http://www.gnu.org/licenses/>. */
  28458. /*
  28459. * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
  28460. @@ -165,7 +164,7 @@
  28461. typedef int int32_t;
  28462. # if __WORDSIZE == 64
  28463. typedef long int int64_t;
  28464. -# elif defined __GNUC__ || defined __ICC
  28465. +# elif defined __GNUC__ || defined __ICC || defined __TenDRA__
  28466. __extension__ typedef long long int int64_t;
  28467. # endif
  28468. # endif
  28469. @@ -176,7 +175,7 @@
  28470. typedef unsigned int u_int32_t;
  28471. # if __WORDSIZE == 64
  28472. typedef unsigned long int u_int64_t;
  28473. -# elif defined __GNUC__ || defined __ICC
  28474. +# elif defined __GNUC__ || defined __ICC || defined __TenDRA__
  28475. __extension__ typedef unsigned long long int u_int64_t;
  28476. # endif
  28477. diff -Nur uClibc-0.9.33.2/include/sys/uio.h uClibc/include/sys/uio.h
  28478. --- uClibc-0.9.33.2/include/sys/uio.h 2012-05-15 09:20:09.000000000 +0200
  28479. +++ uClibc/include/sys/uio.h 2014-02-03 12:32:56.000000000 +0100
  28480. @@ -12,9 +12,8 @@
  28481. Lesser General Public License for more details.
  28482. You should have received a copy of the GNU Lesser General Public
  28483. - License along with the GNU C Library; if not, write to the Free
  28484. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28485. - 02111-1307 USA. */
  28486. + License along with the GNU C Library; if not, see
  28487. + <http://www.gnu.org/licenses/>. */
  28488. #ifndef _SYS_UIO_H
  28489. #define _SYS_UIO_H 1
  28490. @@ -37,7 +36,7 @@
  28491. This function is a cancellation point and therefore not marked with
  28492. __THROW. */
  28493. -extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count);
  28494. +extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count);
  28495. /* Write data pointed by the buffers described by IOVEC, which
  28496. is a vector of COUNT `struct iovec's, to file descriptor FD.
  28497. @@ -47,7 +46,7 @@
  28498. This function is a cancellation point and therefore not marked with
  28499. __THROW. */
  28500. -extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count);
  28501. +extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count);
  28502. __END_DECLS
  28503. diff -Nur uClibc-0.9.33.2/include/sys/un.h uClibc/include/sys/un.h
  28504. --- uClibc-0.9.33.2/include/sys/un.h 2012-05-15 09:20:09.000000000 +0200
  28505. +++ uClibc/include/sys/un.h 2014-02-03 12:32:56.000000000 +0100
  28506. @@ -12,9 +12,8 @@
  28507. Lesser General Public License for more details.
  28508. You should have received a copy of the GNU Lesser General Public
  28509. - License along with the GNU C Library; if not, write to the Free
  28510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28511. - 02111-1307 USA. */
  28512. + License along with the GNU C Library; if not, see
  28513. + <http://www.gnu.org/licenses/>. */
  28514. #ifndef _SYS_UN_H
  28515. #define _SYS_UN_H 1
  28516. diff -Nur uClibc-0.9.33.2/include/sys/ustat.h uClibc/include/sys/ustat.h
  28517. --- uClibc-0.9.33.2/include/sys/ustat.h 2012-05-15 09:20:09.000000000 +0200
  28518. +++ uClibc/include/sys/ustat.h 2014-02-03 12:32:56.000000000 +0100
  28519. @@ -13,9 +13,8 @@
  28520. Lesser General Public License for more details.
  28521. You should have received a copy of the GNU Lesser General Public
  28522. - License along with the GNU C Library; if not, write to the Free
  28523. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28524. - 02111-1307 USA. */
  28525. + License along with the GNU C Library; if not, see
  28526. + <http://www.gnu.org/licenses/>. */
  28527. /*
  28528. * This interface is obsolete. Use <sys/statfs.h> instead.
  28529. diff -Nur uClibc-0.9.33.2/include/sys/utsname.h uClibc/include/sys/utsname.h
  28530. --- uClibc-0.9.33.2/include/sys/utsname.h 2012-05-15 09:20:09.000000000 +0200
  28531. +++ uClibc/include/sys/utsname.h 2014-02-03 12:32:56.000000000 +0100
  28532. @@ -12,9 +12,8 @@
  28533. Lesser General Public License for more details.
  28534. You should have received a copy of the GNU Lesser General Public
  28535. - License along with the GNU C Library; if not, write to the Free
  28536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28537. - 02111-1307 USA. */
  28538. + License along with the GNU C Library; if not, see
  28539. + <http://www.gnu.org/licenses/>. */
  28540. /*
  28541. * POSIX Standard: 4.4 System Identification <sys/utsname.h>
  28542. diff -Nur uClibc-0.9.33.2/include/sys/wait.h uClibc/include/sys/wait.h
  28543. --- uClibc-0.9.33.2/include/sys/wait.h 2012-05-15 09:20:09.000000000 +0200
  28544. +++ uClibc/include/sys/wait.h 2014-02-03 12:32:56.000000000 +0100
  28545. @@ -13,9 +13,8 @@
  28546. Lesser General Public License for more details.
  28547. You should have received a copy of the GNU Lesser General Public
  28548. - License along with the GNU C Library; if not, write to the Free
  28549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28550. - 02111-1307 USA. */
  28551. + License along with the GNU C Library; if not, see
  28552. + <http://www.gnu.org/licenses/>. */
  28553. /*
  28554. * POSIX Standard: 3.2.1 Wait for Process Termination <sys/wait.h>
  28555. @@ -47,7 +46,7 @@
  28556. (__extension__ (((union { __typeof(status) __in; int __i; }) \
  28557. { .__in = (status) }).__i))
  28558. # else
  28559. -# define __WAIT_INT(status) (*(__const int *) &(status))
  28560. +# define __WAIT_INT(status) (*(const int *) &(status))
  28561. # endif
  28562. /* This is the type of the argument to `wait'. The funky union
  28563. @@ -137,7 +136,10 @@
  28564. This function is a cancellation point and therefore not marked with
  28565. __THROW. */
  28566. extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options);
  28567. +#ifdef _LIBC
  28568. +extern __typeof(waitpid) __waitpid_nocancel attribute_hidden;
  28569. libc_hidden_proto(waitpid)
  28570. +#endif
  28571. #if defined __USE_SVID || defined __USE_XOPEN
  28572. # define __need_siginfo_t
  28573. @@ -158,10 +160,6 @@
  28574. #endif
  28575. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  28576. -/* This being here makes the prototypes valid whether or not
  28577. - we have already included <sys/resource.h> to define `struct rusage'. */
  28578. -struct rusage;
  28579. -
  28580. /* Wait for a child to exit. When one does, put its status in *STAT_LOC and
  28581. return its process ID. For errors return (pid_t) -1. If USAGE is not
  28582. nil, store information about the child's resource usage there. If the
  28583. @@ -175,9 +173,12 @@
  28584. /* PID is like waitpid. Other args are like wait3. */
  28585. extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options,
  28586. struct rusage *__usage) __THROW;
  28587. -libc_hidden_proto(wait4)
  28588. #endif /* Use BSD. */
  28589. +#ifdef _LIBC
  28590. +extern __pid_t __wait4_nocancel(__pid_t, __WAIT_STATUS, int, struct rusage *) attribute_hidden;
  28591. +#endif
  28592. +
  28593. __END_DECLS
  28594. diff -Nur uClibc-0.9.33.2/include/sys/xattr.h uClibc/include/sys/xattr.h
  28595. --- uClibc-0.9.33.2/include/sys/xattr.h 2012-05-15 09:20:09.000000000 +0200
  28596. +++ uClibc/include/sys/xattr.h 2014-02-03 12:32:56.000000000 +0100
  28597. @@ -12,9 +12,8 @@
  28598. Lesser General Public License for more details.
  28599. You should have received a copy of the GNU Lesser General Public
  28600. - License along with the GNU C Library; if not, write to the Free
  28601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28602. - 02111-1307 USA. */
  28603. + License along with the GNU C Library; if not, see
  28604. + <http://www.gnu.org/licenses/>. */
  28605. #ifndef _SYS_XATTR_H
  28606. #define _SYS_XATTR_H 1
  28607. @@ -37,48 +36,48 @@
  28608. /* Set the attribute NAME of the file pointed to by PATH to VALUE (which
  28609. is SIZE bytes long). Return 0 on success, -1 for errors. */
  28610. -extern int setxattr (__const char *__path, __const char *__name,
  28611. - __const void *__value, size_t __size, int __flags)
  28612. +extern int setxattr (const char *__path, const char *__name,
  28613. + const void *__value, size_t __size, int __flags)
  28614. __THROW;
  28615. /* Set the attribute NAME of the file pointed to by PATH to VALUE (which is
  28616. SIZE bytes long), not following symlinks for the last pathname component.
  28617. Return 0 on success, -1 for errors. */
  28618. -extern int lsetxattr (__const char *__path, __const char *__name,
  28619. - __const void *__value, size_t __size, int __flags)
  28620. +extern int lsetxattr (const char *__path, const char *__name,
  28621. + const void *__value, size_t __size, int __flags)
  28622. __THROW;
  28623. /* Set the attribute NAME of the file descriptor FD to VALUE (which is SIZE
  28624. bytes long). Return 0 on success, -1 for errors. */
  28625. -extern int fsetxattr (int __fd, __const char *__name, __const void *__value,
  28626. +extern int fsetxattr (int __fd, const char *__name, const void *__value,
  28627. size_t __size, int __flags) __THROW;
  28628. /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is
  28629. SIZE bytes long). Return 0 on success, -1 for errors. */
  28630. -extern ssize_t getxattr (__const char *__path, __const char *__name,
  28631. +extern ssize_t getxattr (const char *__path, const char *__name,
  28632. void *__value, size_t __size) __THROW;
  28633. /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is
  28634. SIZE bytes long), not following symlinks for the last pathname component.
  28635. Return 0 on success, -1 for errors. */
  28636. -extern ssize_t lgetxattr (__const char *__path, __const char *__name,
  28637. +extern ssize_t lgetxattr (const char *__path, const char *__name,
  28638. void *__value, size_t __size) __THROW;
  28639. /* Get the attribute NAME of the file descriptor FD to VALUE (which is SIZE
  28640. bytes long). Return 0 on success, -1 for errors. */
  28641. -extern ssize_t fgetxattr (int __fd, __const char *__name, void *__value,
  28642. +extern ssize_t fgetxattr (int __fd, const char *__name, void *__value,
  28643. size_t __size) __THROW;
  28644. /* List attributes of the file pointed to by PATH into the user-supplied
  28645. buffer LIST (which is SIZE bytes big). Return 0 on success, -1 for
  28646. errors. */
  28647. -extern ssize_t listxattr (__const char *__path, char *__list, size_t __size)
  28648. +extern ssize_t listxattr (const char *__path, char *__list, size_t __size)
  28649. __THROW;
  28650. /* List attributes of the file pointed to by PATH into the user-supplied
  28651. buffer LIST (which is SIZE bytes big), not following symlinks for the
  28652. last pathname component. Return 0 on success, -1 for errors. */
  28653. -extern ssize_t llistxattr (__const char *__path, char *__list, size_t __size)
  28654. +extern ssize_t llistxattr (const char *__path, char *__list, size_t __size)
  28655. __THROW;
  28656. /* List attributes of the file descriptor FD into the user-supplied buffer
  28657. @@ -88,16 +87,16 @@
  28658. /* Remove the attribute NAME from the file pointed to by PATH. Return 0
  28659. on success, -1 for errors. */
  28660. -extern int removexattr (__const char *__path, __const char *__name) __THROW;
  28661. +extern int removexattr (const char *__path, const char *__name) __THROW;
  28662. /* Remove the attribute NAME from the file pointed to by PATH, not
  28663. following symlinks for the last pathname component. Return 0 on
  28664. success, -1 for errors. */
  28665. -extern int lremovexattr (__const char *__path, __const char *__name) __THROW;
  28666. +extern int lremovexattr (const char *__path, const char *__name) __THROW;
  28667. /* Remove the attribute NAME from the file descriptor FD. Return 0 on
  28668. success, -1 for errors. */
  28669. -extern int fremovexattr (int __fd, __const char *__name) __THROW;
  28670. +extern int fremovexattr (int __fd, const char *__name) __THROW;
  28671. __END_DECLS
  28672. diff -Nur uClibc-0.9.33.2/include/tar.h uClibc/include/tar.h
  28673. --- uClibc-0.9.33.2/include/tar.h 2012-05-15 09:20:09.000000000 +0200
  28674. +++ uClibc/include/tar.h 2014-02-03 12:32:56.000000000 +0100
  28675. @@ -14,9 +14,8 @@
  28676. Lesser General Public License for more details.
  28677. You should have received a copy of the GNU Lesser General Public
  28678. - License along with the GNU C Library; if not, write to the Free
  28679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28680. - 02111-1307 USA. */
  28681. + License along with the GNU C Library; if not, see
  28682. + <http://www.gnu.org/licenses/>. */
  28683. #ifndef _TAR_H
  28684. #define _TAR_H 1
  28685. diff -Nur uClibc-0.9.33.2/include/termios.h uClibc/include/termios.h
  28686. --- uClibc-0.9.33.2/include/termios.h 2012-05-15 09:20:09.000000000 +0200
  28687. +++ uClibc/include/termios.h 2014-02-03 12:32:56.000000000 +0100
  28688. @@ -12,9 +12,8 @@
  28689. Lesser General Public License for more details.
  28690. You should have received a copy of the GNU Lesser General Public
  28691. - License along with the GNU C Library; if not, write to the Free
  28692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28693. - 02111-1307 USA. */
  28694. + License along with the GNU C Library; if not, see
  28695. + <http://www.gnu.org/licenses/>. */
  28696. /*
  28697. * POSIX Standard: 7.1-2 General Terminal Interface <termios.h>
  28698. @@ -46,10 +45,10 @@
  28699. #endif
  28700. /* Return the output baud rate stored in *TERMIOS_P. */
  28701. -extern speed_t cfgetospeed (__const struct termios *__termios_p) __THROW;
  28702. +extern speed_t cfgetospeed (const struct termios *__termios_p) __THROW;
  28703. /* Return the input baud rate stored in *TERMIOS_P. */
  28704. -extern speed_t cfgetispeed (__const struct termios *__termios_p) __THROW;
  28705. +extern speed_t cfgetispeed (const struct termios *__termios_p) __THROW;
  28706. /* Set the output baud rate stored in *TERMIOS_P to SPEED. */
  28707. extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __THROW;
  28708. @@ -72,7 +71,7 @@
  28709. /* Set the state of FD to *TERMIOS_P.
  28710. Values for OPTIONAL_ACTIONS (TCSA*) are in <bits/termios.h>. */
  28711. extern int tcsetattr (int __fd, int __optional_actions,
  28712. - __const struct termios *__termios_p) __THROW;
  28713. + const struct termios *__termios_p) __THROW;
  28714. libc_hidden_proto(tcsetattr)
  28715. diff -Nur uClibc-0.9.33.2/include/tgmath.h uClibc/include/tgmath.h
  28716. --- uClibc-0.9.33.2/include/tgmath.h 2012-05-15 09:20:09.000000000 +0200
  28717. +++ uClibc/include/tgmath.h 2014-02-03 12:32:56.000000000 +0100
  28718. @@ -1,4 +1,5 @@
  28719. -/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
  28720. +/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007
  28721. + Free Software Foundation, Inc.
  28722. This file is part of the GNU C Library.
  28723. The GNU C Library is free software; you can redistribute it and/or
  28724. @@ -12,9 +13,8 @@
  28725. Lesser General Public License for more details.
  28726. You should have received a copy of the GNU Lesser General Public
  28727. - License along with the GNU C Library; if not, write to the Free
  28728. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28729. - 02111-1307 USA. */
  28730. + License along with the GNU C Library; if not, see
  28731. + <http://www.gnu.org/licenses/>. */
  28732. /*
  28733. * ISO C99 Standard: 7.22 Type-generic math <tgmath.h>
  28734. @@ -47,174 +47,199 @@
  28735. /* 1 if 'type' is a floating type, 0 if 'type' is an integer type.
  28736. Allows for _Bool. Expands to an integer constant expression. */
  28737. -# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))
  28738. +# if 0 /* __GNUC_PREREQ (3, 1) */
  28739. +# define __floating_type(type) \
  28740. + (__builtin_classify_type ((type) 0) == 8 \
  28741. + || (__builtin_classify_type ((type) 0) == 9 \
  28742. + && __builtin_classify_type (__real__ ((type) 0)) == 8))
  28743. +# else
  28744. +# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))
  28745. +# endif
  28746. /* The tgmath real type for T, where E is 0 if T is an integer type and
  28747. 1 for a floating type. */
  28748. # define __tgmath_real_type_sub(T, E) \
  28749. - __typeof__(*(0 ? (__typeof__ (0 ? (double *) 0 : (void *) (E))) 0 \
  28750. - : (__typeof__ (0 ? (T *) 0 : (void *) (!(E)))) 0))
  28751. + __typeof__ (*(0 ? (__typeof__ (0 ? (double *) 0 : (void *) (E))) 0 \
  28752. + : (__typeof__ (0 ? (T *) 0 : (void *) (!(E)))) 0))
  28753. /* The tgmath real type of EXPR. */
  28754. # define __tgmath_real_type(expr) \
  28755. - __tgmath_real_type_sub(__typeof__(expr), __floating_type(__typeof__(expr)))
  28756. + __tgmath_real_type_sub (__typeof__ ((__typeof__ (expr)) 0), \
  28757. + __floating_type (__typeof__ (expr)))
  28758. /* We have two kinds of generic macros: to support functions which are
  28759. only defined on real valued parameters and those which are defined
  28760. for complex functions as well. */
  28761. # define __TGMATH_UNARY_REAL_ONLY(Val, Fct) \
  28762. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28763. - if (sizeof (Val) == sizeof (double) \
  28764. - || __builtin_classify_type (Val) != 8) \
  28765. - __tgmres = Fct (Val); \
  28766. - else if (sizeof (Val) == sizeof (float)) \
  28767. - __tgmres = Fct##f (Val); \
  28768. - else \
  28769. - __tgmres = __tgml(Fct) (Val); \
  28770. - __tgmres; }))
  28771. + (__extension__ ((sizeof (Val) == sizeof (double) \
  28772. + || __builtin_classify_type (Val) != 8) \
  28773. + ? (__tgmath_real_type (Val)) Fct (Val) \
  28774. + : (sizeof (Val) == sizeof (float)) \
  28775. + ? (__tgmath_real_type (Val)) Fct##f (Val) \
  28776. + : (__tgmath_real_type (Val)) __tgml(Fct) (Val)))
  28777. +
  28778. +# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \
  28779. + (__extension__ ((sizeof (Val) == sizeof (double) \
  28780. + || __builtin_classify_type (Val) != 8) \
  28781. + ? (RetType) Fct (Val) \
  28782. + : (sizeof (Val) == sizeof (float)) \
  28783. + ? (RetType) Fct##f (Val) \
  28784. + : (RetType) __tgml(Fct) (Val)))
  28785. # define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \
  28786. - (__extension__ ({ __tgmath_real_type (Val1) __tgmres; \
  28787. - if (sizeof (Val1) == sizeof (double) \
  28788. - || __builtin_classify_type (Val1) != 8) \
  28789. - __tgmres = Fct (Val1, Val2); \
  28790. - else if (sizeof (Val1) == sizeof (float)) \
  28791. - __tgmres = Fct##f (Val1, Val2); \
  28792. - else \
  28793. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28794. - __tgmres; }))
  28795. + (__extension__ ((sizeof (Val1) == sizeof (double) \
  28796. + || __builtin_classify_type (Val1) != 8) \
  28797. + ? (__tgmath_real_type (Val1)) Fct (Val1, Val2) \
  28798. + : (sizeof (Val1) == sizeof (float)) \
  28799. + ? (__tgmath_real_type (Val1)) Fct##f (Val1, Val2) \
  28800. + : (__tgmath_real_type (Val1)) __tgml(Fct) (Val1, Val2)))
  28801. # define __TGMATH_BINARY_REAL_ONLY(Val1, Val2, Fct) \
  28802. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28803. - if ((sizeof (Val1) > sizeof (double) \
  28804. - || sizeof (Val2) > sizeof (double)) \
  28805. - && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28806. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28807. - else if (sizeof (Val1) == sizeof (double) \
  28808. - || sizeof (Val2) == sizeof (double) \
  28809. - || __builtin_classify_type (Val1) != 8 \
  28810. - || __builtin_classify_type (Val2) != 8) \
  28811. - __tgmres = Fct (Val1, Val2); \
  28812. - else \
  28813. - __tgmres = Fct##f (Val1, Val2); \
  28814. - __tgmres; }))
  28815. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28816. + || sizeof (Val2) > sizeof (double)) \
  28817. + && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28818. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28819. + + (__tgmath_real_type (Val2)) 0)) \
  28820. + __tgml(Fct) (Val1, Val2) \
  28821. + : (sizeof (Val1) == sizeof (double) \
  28822. + || sizeof (Val2) == sizeof (double) \
  28823. + || __builtin_classify_type (Val1) != 8 \
  28824. + || __builtin_classify_type (Val2) != 8) \
  28825. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28826. + + (__tgmath_real_type (Val2)) 0)) \
  28827. + Fct (Val1, Val2) \
  28828. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28829. + + (__tgmath_real_type (Val2)) 0)) \
  28830. + Fct##f (Val1, Val2)))
  28831. # define __TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY(Val1, Val2, Val3, Fct) \
  28832. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28833. - if ((sizeof (Val1) > sizeof (double) \
  28834. - || sizeof (Val2) > sizeof (double)) \
  28835. - && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28836. - __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
  28837. - else if (sizeof (Val1) == sizeof (double) \
  28838. - || sizeof (Val2) == sizeof (double) \
  28839. - || __builtin_classify_type (Val1) != 8 \
  28840. - || __builtin_classify_type (Val2) != 8) \
  28841. - __tgmres = Fct (Val1, Val2, Val3); \
  28842. - else \
  28843. - __tgmres = Fct##f (Val1, Val2, Val3); \
  28844. - __tgmres; }))
  28845. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28846. + || sizeof (Val2) > sizeof (double)) \
  28847. + && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28848. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28849. + + (__tgmath_real_type (Val2)) 0)) \
  28850. + __tgml(Fct) (Val1, Val2, Val3) \
  28851. + : (sizeof (Val1) == sizeof (double) \
  28852. + || sizeof (Val2) == sizeof (double) \
  28853. + || __builtin_classify_type (Val1) != 8 \
  28854. + || __builtin_classify_type (Val2) != 8) \
  28855. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28856. + + (__tgmath_real_type (Val2)) 0)) \
  28857. + Fct (Val1, Val2, Val3) \
  28858. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28859. + + (__tgmath_real_type (Val2)) 0)) \
  28860. + Fct##f (Val1, Val2, Val3)))
  28861. # define __TGMATH_TERNARY_REAL_ONLY(Val1, Val2, Val3, Fct) \
  28862. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2) + (Val3)) __tgmres;\
  28863. - if ((sizeof (Val1) > sizeof (double) \
  28864. - || sizeof (Val2) > sizeof (double) \
  28865. - || sizeof (Val3) > sizeof (double)) \
  28866. - && __builtin_classify_type ((Val1) + (Val2) \
  28867. - + (Val3)) == 8) \
  28868. - __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
  28869. - else if (sizeof (Val1) == sizeof (double) \
  28870. - || sizeof (Val2) == sizeof (double) \
  28871. - || sizeof (Val3) == sizeof (double) \
  28872. - || __builtin_classify_type (Val1) != 8 \
  28873. - || __builtin_classify_type (Val2) != 8 \
  28874. - || __builtin_classify_type (Val3) != 8) \
  28875. - __tgmres = Fct (Val1, Val2, Val3); \
  28876. - else \
  28877. - __tgmres = Fct##f (Val1, Val2, Val3); \
  28878. - __tgmres; }))
  28879. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28880. + || sizeof (Val2) > sizeof (double) \
  28881. + || sizeof (Val3) > sizeof (double)) \
  28882. + && __builtin_classify_type ((Val1) + (Val2) + (Val3)) \
  28883. + == 8) \
  28884. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28885. + + (__tgmath_real_type (Val2)) 0 \
  28886. + + (__tgmath_real_type (Val3)) 0)) \
  28887. + __tgml(Fct) (Val1, Val2, Val3) \
  28888. + : (sizeof (Val1) == sizeof (double) \
  28889. + || sizeof (Val2) == sizeof (double) \
  28890. + || sizeof (Val3) == sizeof (double) \
  28891. + || __builtin_classify_type (Val1) != 8 \
  28892. + || __builtin_classify_type (Val2) != 8 \
  28893. + || __builtin_classify_type (Val3) != 8) \
  28894. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28895. + + (__tgmath_real_type (Val2)) 0 \
  28896. + + (__tgmath_real_type (Val3)) 0)) \
  28897. + Fct (Val1, Val2, Val3) \
  28898. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28899. + + (__tgmath_real_type (Val2)) 0 \
  28900. + + (__tgmath_real_type (Val3)) 0)) \
  28901. + Fct##f (Val1, Val2, Val3)))
  28902. /* XXX This definition has to be changed as soon as the compiler understands
  28903. the imaginary keyword. */
  28904. # define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \
  28905. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28906. - if (sizeof (__real__ (Val)) > sizeof (double) \
  28907. - && __builtin_classify_type (__real__ (Val)) == 8) \
  28908. - { \
  28909. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28910. - __tgmres = __tgml(Fct) (Val); \
  28911. - else \
  28912. - __tgmres = __tgml(Cfct) (Val); \
  28913. - } \
  28914. - else if (sizeof (__real__ (Val)) == sizeof (double) \
  28915. - || __builtin_classify_type (__real__ (Val)) \
  28916. - != 8) \
  28917. - { \
  28918. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28919. - __tgmres = Fct (Val); \
  28920. - else \
  28921. - __tgmres = Cfct (Val); \
  28922. - } \
  28923. - else \
  28924. - { \
  28925. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28926. - __tgmres = Fct##f (Val); \
  28927. - else \
  28928. - __tgmres = Cfct##f (Val); \
  28929. - } \
  28930. - __tgmres; }))
  28931. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28932. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28933. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28934. + ? (__tgmath_real_type (Val)) Fct (Val) \
  28935. + : (__tgmath_real_type (Val)) Cfct (Val)) \
  28936. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28937. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28938. + ? (__tgmath_real_type (Val)) Fct##f (Val) \
  28939. + : (__tgmath_real_type (Val)) Cfct##f (Val)) \
  28940. + : ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28941. + ? (__tgmath_real_type (Val)) __tgml(Fct) (Val) \
  28942. + : (__tgmath_real_type (Val)) __tgml(Cfct) (Val))))
  28943. +
  28944. +# define __TGMATH_UNARY_IMAG(Val, Cfct) \
  28945. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28946. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28947. + ? (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28948. + + _Complex_I)) Cfct (Val) \
  28949. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28950. + ? (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28951. + + _Complex_I)) Cfct##f (Val) \
  28952. + : (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28953. + + _Complex_I)) __tgml(Cfct) (Val)))
  28954. /* XXX This definition has to be changed as soon as the compiler understands
  28955. the imaginary keyword. */
  28956. -# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
  28957. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28958. - if (sizeof (Val) == sizeof (__complex__ double) \
  28959. - || __builtin_classify_type (__real__ (Val)) != 8) \
  28960. - __tgmres = Fct (Val); \
  28961. - else if (sizeof (Val) == sizeof (__complex__ float)) \
  28962. - __tgmres = Fct##f (Val); \
  28963. - else \
  28964. - __tgmres = __tgml(Fct) (Val); \
  28965. - __tgmres; }))
  28966. +# define __TGMATH_UNARY_REAL_IMAG_RET_REAL(Val, Fct, Cfct) \
  28967. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28968. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28969. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28970. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28971. + Fct (Val) \
  28972. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28973. + Cfct (Val)) \
  28974. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28975. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28976. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28977. + Fct##f (Val) \
  28978. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28979. + Cfct##f (Val)) \
  28980. + : ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28981. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28982. + __tgml(Fct) (Val) \
  28983. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28984. + __tgml(Cfct) (Val))))
  28985. /* XXX This definition has to be changed as soon as the compiler understands
  28986. the imaginary keyword. */
  28987. # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \
  28988. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28989. - if ((sizeof (__real__ (Val1)) > sizeof (double) \
  28990. - || sizeof (__real__ (Val2)) > sizeof (double)) \
  28991. - && __builtin_classify_type (__real__ (Val1) \
  28992. - + __real__ (Val2)) \
  28993. - == 8) \
  28994. - { \
  28995. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  28996. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28997. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28998. - else \
  28999. - __tgmres = __tgml(Cfct) (Val1, Val2); \
  29000. - } \
  29001. - else if (sizeof (__real__ (Val1)) == sizeof (double) \
  29002. - || sizeof (__real__ (Val2)) == sizeof(double) \
  29003. - || (__builtin_classify_type (__real__ (Val1)) \
  29004. - != 8) \
  29005. - || (__builtin_classify_type (__real__ (Val2)) \
  29006. - != 8)) \
  29007. - { \
  29008. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  29009. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  29010. - __tgmres = Fct (Val1, Val2); \
  29011. - else \
  29012. - __tgmres = Cfct (Val1, Val2); \
  29013. - } \
  29014. - else \
  29015. - { \
  29016. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  29017. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  29018. - __tgmres = Fct##f (Val1, Val2); \
  29019. - else \
  29020. - __tgmres = Cfct##f (Val1, Val2); \
  29021. - } \
  29022. - __tgmres; }))
  29023. + (__extension__ (((sizeof (__real__ (Val1)) > sizeof (double) \
  29024. + || sizeof (__real__ (Val2)) > sizeof (double)) \
  29025. + && __builtin_classify_type (__real__ (Val1) \
  29026. + + __real__ (Val2)) == 8) \
  29027. + ? ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  29028. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  29029. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  29030. + + (__tgmath_real_type (Val2)) 0)) \
  29031. + __tgml(Fct) (Val1, Val2) \
  29032. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  29033. + + (__tgmath_real_type (Val2)) 0)) \
  29034. + __tgml(Cfct) (Val1, Val2)) \
  29035. + : (sizeof (__real__ (Val1)) == sizeof (double) \
  29036. + || sizeof (__real__ (Val2)) == sizeof (double) \
  29037. + || __builtin_classify_type (__real__ (Val1)) != 8 \
  29038. + || __builtin_classify_type (__real__ (Val2)) != 8) \
  29039. + ? ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  29040. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  29041. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  29042. + + (__tgmath_real_type (Val2)) 0)) \
  29043. + Fct (Val1, Val2) \
  29044. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  29045. + + (__tgmath_real_type (Val2)) 0)) \
  29046. + Cfct (Val1, Val2)) \
  29047. + : ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  29048. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  29049. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  29050. + + (__tgmath_real_type (Val2)) 0)) \
  29051. + Fct##f (Val1, Val2) \
  29052. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  29053. + + (__tgmath_real_type (Val2)) 0)) \
  29054. + Cfct##f (Val1, Val2))))
  29055. #else
  29056. # error "Unsupported compiler; you cannot use <tgmath.h>"
  29057. #endif
  29058. @@ -317,7 +342,7 @@
  29059. #define ceil(Val) __TGMATH_UNARY_REAL_ONLY (Val, ceil)
  29060. /* Absolute value of X. */
  29061. -#define fabs(Val) __TGMATH_UNARY_REAL_IMAG (Val, fabs, cabs)
  29062. +#define fabs(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, fabs, cabs)
  29063. /* Largest integer not greater than X. */
  29064. #define floor(Val) __TGMATH_UNARY_REAL_ONLY (Val, floor)
  29065. @@ -345,13 +370,13 @@
  29066. /* Round X to nearest integral value according to current rounding
  29067. direction. */
  29068. -#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
  29069. -#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
  29070. +#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint)
  29071. +#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint)
  29072. /* Round X to nearest integral value, rounding halfway cases away from
  29073. zero. */
  29074. -#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
  29075. -#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
  29076. +#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround)
  29077. +#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround)
  29078. /* Return X with its signed changed to Y's. */
  29079. @@ -376,7 +401,7 @@
  29080. /* Return the remainder of integer divison X / Y with infinite precision. */
  29081. #define remainder(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, remainder)
  29082. -#if defined __UCLIBC_SUSV3_LEGACY__
  29083. +#ifdef __UCLIBC_SUSV3_LEGACY__
  29084. /* Return X times (2 to the Nth power). */
  29085. #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
  29086. # define scalb(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, scalb)
  29087. @@ -388,10 +413,10 @@
  29088. /* Return X times (2 to the Nth power). */
  29089. #define scalbln(Val1, Val2) \
  29090. __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln)
  29091. -#endif /* UCLIBC_SUSV3_LEGACY */
  29092. +#endif /* __UCLIBC_SUSV3_LEGACY__ */
  29093. /* Return the binary exponent of X, which must be nonzero. */
  29094. -#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb)
  29095. +#define ilogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, int, ilogb)
  29096. /* Return positive difference between X and Y. */
  29097. @@ -412,21 +437,21 @@
  29098. /* Absolute value, conjugates, and projection. */
  29099. /* Argument value of Z. */
  29100. -#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg)
  29101. +#define carg(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, carg, carg)
  29102. /* Complex conjugate of Z. */
  29103. -#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj)
  29104. +#define conj(Val) __TGMATH_UNARY_IMAG (Val, conj)
  29105. /* Projection of Z onto the Riemann sphere. */
  29106. -#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj)
  29107. +#define cproj(Val) __TGMATH_UNARY_IMAG (Val, cproj)
  29108. /* Decomposing complex values. */
  29109. /* Imaginary part of Z. */
  29110. -#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag)
  29111. +#define cimag(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, cimag, cimag)
  29112. /* Real part of Z. */
  29113. -#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal)
  29114. +#define creal(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, creal, creal)
  29115. #endif /* tgmath.h */
  29116. diff -Nur uClibc-0.9.33.2/include/time.h uClibc/include/time.h
  29117. --- uClibc-0.9.33.2/include/time.h 2012-05-15 09:20:09.000000000 +0200
  29118. +++ uClibc/include/time.h 2014-02-03 12:32:56.000000000 +0100
  29119. @@ -1,5 +1,4 @@
  29120. -/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006
  29121. - Free Software Foundation, Inc.
  29122. +/* Copyright (C) 1991-2003,2006,2009 Free Software Foundation, Inc.
  29123. This file is part of the GNU C Library.
  29124. The GNU C Library is free software; you can redistribute it and/or
  29125. @@ -13,9 +12,8 @@
  29126. Lesser General Public License for more details.
  29127. You should have received a copy of the GNU Lesser General Public
  29128. - License along with the GNU C Library; if not, write to the Free
  29129. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29130. - 02111-1307 USA. */
  29131. + License along with the GNU C Library; if not, see
  29132. + <http://www.gnu.org/licenses/>. */
  29133. /*
  29134. * ISO C99 Standard: 7.23 Date and time <time.h>
  29135. @@ -146,10 +144,10 @@
  29136. #ifdef __UCLIBC_HAS_TM_EXTENSIONS__
  29137. #ifdef __USE_BSD
  29138. long int tm_gmtoff; /* Seconds east of UTC. */
  29139. - __const char *tm_zone; /* Timezone abbreviation. */
  29140. + const char *tm_zone; /* Timezone abbreviation. */
  29141. #else
  29142. long int __tm_gmtoff; /* Seconds east of UTC. */
  29143. - __const char *__tm_zone; /* Timezone abbreviation. */
  29144. + const char *__tm_zone; /* Timezone abbreviation. */
  29145. #endif
  29146. #endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
  29147. };
  29148. @@ -195,7 +193,9 @@
  29149. __THROW __attribute__ ((__const__));
  29150. #endif /* __UCLIBC_HAS_FLOATS__ */
  29151. -#define CLOCK_IDFIELD_SIZE 3
  29152. +#ifdef _LIBC
  29153. +# define CLOCK_IDFIELD_SIZE 3
  29154. +#endif
  29155. /* Return the `time_t' representation of TP and normalize TP. */
  29156. extern time_t mktime (struct tm *__tp) __THROW;
  29157. @@ -205,32 +205,34 @@
  29158. Write no more than MAXSIZE characters and return the number
  29159. of characters written, or 0 if it would exceed MAXSIZE. */
  29160. extern size_t strftime (char *__restrict __s, size_t __maxsize,
  29161. - __const char *__restrict __format,
  29162. - __const struct tm *__restrict __tp) __THROW;
  29163. + const char *__restrict __format,
  29164. + const struct tm *__restrict __tp) __THROW;
  29165. __END_NAMESPACE_STD
  29166. # ifdef __USE_XOPEN
  29167. /* Parse S according to FORMAT and store binary time information in TP.
  29168. The return value is a pointer to the first unparsed character in S. */
  29169. -extern char *strptime (__const char *__restrict __s,
  29170. - __const char *__restrict __fmt, struct tm *__tp)
  29171. +extern char *strptime (const char *__restrict __s,
  29172. + const char *__restrict __fmt, struct tm *__tp)
  29173. __THROW;
  29174. # endif
  29175. #ifdef __UCLIBC_HAS_XLOCALE__
  29176. -# ifdef __USE_GNU
  29177. +# ifdef __USE_XOPEN2K8
  29178. /* Similar to the two functions above but take the information from
  29179. the provided locale and not the global locale. */
  29180. # include <xlocale.h>
  29181. extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
  29182. - __const char *__restrict __format,
  29183. - __const struct tm *__restrict __tp,
  29184. + const char *__restrict __format,
  29185. + const struct tm *__restrict __tp,
  29186. __locale_t __loc) __THROW;
  29187. libc_hidden_proto(strftime_l)
  29188. +# endif
  29189. -extern char *strptime_l (__const char *__restrict __s,
  29190. - __const char *__restrict __fmt, struct tm *__tp,
  29191. +# ifdef __USE_GNU
  29192. +extern char *strptime_l (const char *__restrict __s,
  29193. + const char *__restrict __fmt, struct tm *__tp,
  29194. __locale_t __loc) __THROW;
  29195. libc_hidden_proto(strptime_l)
  29196. # endif
  29197. @@ -240,23 +242,23 @@
  29198. __BEGIN_NAMESPACE_STD
  29199. /* Return the `struct tm' representation of *TIMER
  29200. in Universal Coordinated Time (aka Greenwich Mean Time). */
  29201. -extern struct tm *gmtime (__const time_t *__timer) __THROW;
  29202. +extern struct tm *gmtime (const time_t *__timer) __THROW;
  29203. /* Return the `struct tm' representation
  29204. of *TIMER in the local timezone. */
  29205. -extern struct tm *localtime (__const time_t *__timer) __THROW;
  29206. +extern struct tm *localtime (const time_t *__timer) __THROW;
  29207. libc_hidden_proto(localtime)
  29208. __END_NAMESPACE_STD
  29209. # if defined __USE_POSIX || defined __USE_MISC
  29210. /* Return the `struct tm' representation of *TIMER in UTC,
  29211. using *TP to store the result. */
  29212. -extern struct tm *gmtime_r (__const time_t *__restrict __timer,
  29213. +extern struct tm *gmtime_r (const time_t *__restrict __timer,
  29214. struct tm *__restrict __tp) __THROW;
  29215. /* Return the `struct tm' representation of *TIMER in local time,
  29216. using *TP to store the result. */
  29217. -extern struct tm *localtime_r (__const time_t *__restrict __timer,
  29218. +extern struct tm *localtime_r (const time_t *__restrict __timer,
  29219. struct tm *__restrict __tp) __THROW;
  29220. libc_hidden_proto(localtime_r)
  29221. # endif /* POSIX or misc */
  29222. @@ -264,11 +266,11 @@
  29223. __BEGIN_NAMESPACE_STD
  29224. /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  29225. that is the representation of TP in this format. */
  29226. -extern char *asctime (__const struct tm *__tp) __THROW;
  29227. +extern char *asctime (const struct tm *__tp) __THROW;
  29228. libc_hidden_proto(asctime)
  29229. /* Equivalent to `asctime (localtime (timer))'. */
  29230. -extern char *ctime (__const time_t *__timer) __THROW;
  29231. +extern char *ctime (const time_t *__timer) __THROW;
  29232. libc_hidden_proto(ctime)
  29233. __END_NAMESPACE_STD
  29234. @@ -277,12 +279,12 @@
  29235. /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  29236. that is the representation of TP in this format. */
  29237. -extern char *asctime_r (__const struct tm *__restrict __tp,
  29238. +extern char *asctime_r (const struct tm *__restrict __tp,
  29239. char *__restrict __buf) __THROW;
  29240. libc_hidden_proto(asctime_r)
  29241. /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
  29242. -extern char *ctime_r (__const time_t *__restrict __timer,
  29243. +extern char *ctime_r (const time_t *__restrict __timer,
  29244. char *__restrict __buf) __THROW;
  29245. # endif /* POSIX or misc */
  29246. @@ -314,7 +316,8 @@
  29247. # ifdef __USE_SVID
  29248. /* Set the system time to *WHEN.
  29249. This call is restricted to the superuser. */
  29250. -extern int stime (__const time_t *__when) __THROW;
  29251. +extern int stime (const time_t *__when) __THROW;
  29252. +libc_hidden_proto(stime)
  29253. # endif
  29254. @@ -345,7 +348,7 @@
  29255. This function is a cancellation point and therefore not marked with
  29256. __THROW. */
  29257. -extern int nanosleep (__const struct timespec *__requested_time,
  29258. +extern int nanosleep (const struct timespec *__requested_time,
  29259. struct timespec *__remaining);
  29260. libc_hidden_proto(nanosleep)
  29261. @@ -358,23 +361,24 @@
  29262. extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
  29263. /* Set clock CLOCK_ID to value TP. */
  29264. -extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
  29265. +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
  29266. __THROW;
  29267. # endif /* __UCLIBC_HAS_REALTIME__ */
  29268. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  29269. -# if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  29270. +
  29271. +# if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  29272. +# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  29273. /* High-resolution sleep with the specified clock.
  29274. This function is a cancellation point and therefore not marked with
  29275. __THROW. */
  29276. extern int clock_nanosleep (clockid_t __clock_id, int __flags,
  29277. - __const struct timespec *__req,
  29278. + const struct timespec *__req,
  29279. struct timespec *__rem);
  29280. /* Return clock ID for CPU-time clock. */
  29281. extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
  29282. -# endif
  29283. -# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  29284. +# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  29285. +# endif
  29286. # if defined __UCLIBC_HAS_REALTIME__
  29287. /* Create new per-process timer using CLOCK_ID. */
  29288. @@ -387,7 +391,7 @@
  29289. /* Set timer TIMERID to VALUE, returning old value in OVLAUE. */
  29290. extern int timer_settime (timer_t __timerid, int __flags,
  29291. - __const struct itimerspec *__restrict __value,
  29292. + const struct itimerspec *__restrict __value,
  29293. struct itimerspec *__restrict __ovalue) __THROW;
  29294. /* Get current value of timer TIMERID and store it in VLAUE. */
  29295. @@ -423,7 +427,7 @@
  29296. This function is a possible cancellation points and therefore not
  29297. marked with __THROW. */
  29298. -extern struct tm *getdate (__const char *__string);
  29299. +extern struct tm *getdate (const char *__string);
  29300. # endif
  29301. # ifdef __USE_GNU
  29302. @@ -437,7 +441,7 @@
  29303. cancellation point. But due to similarity with an POSIX interface
  29304. or due to the implementation it is a cancellation point and
  29305. therefore not marked with __THROW. */
  29306. -extern int getdate_r (__const char *__restrict __string,
  29307. +extern int getdate_r (const char *__restrict __string,
  29308. struct tm *__restrict __resbufp);
  29309. # endif
  29310. #endif /* __UCLIBC_MJN3_ONLY__ */
  29311. diff -Nur uClibc-0.9.33.2/include/ttyent.h uClibc/include/ttyent.h
  29312. --- uClibc-0.9.33.2/include/ttyent.h 2012-05-15 09:20:09.000000000 +0200
  29313. +++ uClibc/include/ttyent.h 2014-02-03 12:32:56.000000000 +0100
  29314. @@ -57,7 +57,7 @@
  29315. extern struct ttyent *getttyent (void) __THROW;
  29316. libc_hidden_proto(getttyent)
  29317. -extern struct ttyent *getttynam (__const char *__tty) __THROW;
  29318. +extern struct ttyent *getttynam (const char *__tty) __THROW;
  29319. extern int setttyent (void) __THROW;
  29320. libc_hidden_proto(setttyent)
  29321. extern int endttyent (void) __THROW;
  29322. diff -Nur uClibc-0.9.33.2/include/ucontext.h uClibc/include/ucontext.h
  29323. --- uClibc-0.9.33.2/include/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  29324. +++ uClibc/include/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  29325. @@ -12,21 +12,46 @@
  29326. Lesser General Public License for more details.
  29327. You should have received a copy of the GNU Lesser General Public
  29328. - License along with the GNU C Library; if not, write to the Free
  29329. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29330. - 02111-1307 USA. */
  29331. + License along with the GNU C Library; if not, see
  29332. + <http://www.gnu.org/licenses/>. */
  29333. +
  29334. +/* The System V ABI user-level context switching support functions
  29335. + are marked obsolescent by SuSv3. */
  29336. #ifndef _UCONTEXT_H
  29337. #define _UCONTEXT_H 1
  29338. #include <features.h>
  29339. +#ifdef __UCLIBC_HAS_CONTEXT_FUNCS__
  29340. +
  29341. /* Get machine dependent definition of data structures. */
  29342. #include <sys/ucontext.h>
  29343. -/* The System V ABI user-level context switching support functions
  29344. - * are marked obsolescent by SuSv3, and are not implemented by
  29345. - * uClibc. This header is therefore empty. */
  29346. +__BEGIN_DECLS
  29347. +
  29348. +/* Get user context and store it in variable pointed to by UCP. */
  29349. +extern int getcontext (ucontext_t *__ucp) __THROW;
  29350. +
  29351. +/* Set user context from information of variable pointed to by UCP. */
  29352. +extern int setcontext (const ucontext_t *__ucp) __THROW;
  29353. +
  29354. +/* Save current context in context variable pointed to by OUCP and set
  29355. + context from variable pointed to by UCP. */
  29356. +extern int swapcontext (ucontext_t *__restrict __oucp,
  29357. + const ucontext_t *__restrict __ucp) __THROW;
  29358. +
  29359. +/* Manipulate user context UCP to continue with calling functions FUNC
  29360. + and the ARGC-1 parameters following ARGC when the context is used
  29361. + the next time in `setcontext' or `swapcontext'.
  29362. +
  29363. + We cannot say anything about the parameters FUNC takes; `void'
  29364. + is as good as any other choice. */
  29365. +extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
  29366. + int __argc, ...) __THROW;
  29367. +
  29368. +__END_DECLS
  29369. +#endif
  29370. #endif /* ucontext.h */
  29371. diff -Nur uClibc-0.9.33.2/include/ulimit.h uClibc/include/ulimit.h
  29372. --- uClibc-0.9.33.2/include/ulimit.h 2012-05-15 09:20:09.000000000 +0200
  29373. +++ uClibc/include/ulimit.h 2014-02-03 12:32:56.000000000 +0100
  29374. @@ -12,9 +12,8 @@
  29375. Lesser General Public License for more details.
  29376. You should have received a copy of the GNU Lesser General Public
  29377. - License along with the GNU C Library; if not, write to the Free
  29378. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29379. - 02111-1307 USA. */
  29380. + License along with the GNU C Library; if not, see
  29381. + <http://www.gnu.org/licenses/>. */
  29382. #ifndef _ULIMIT_H
  29383. #define _ULIMIT_H 1
  29384. diff -Nur uClibc-0.9.33.2/include/unistd.h uClibc/include/unistd.h
  29385. --- uClibc-0.9.33.2/include/unistd.h 2012-05-15 09:20:09.000000000 +0200
  29386. +++ uClibc/include/unistd.h 2014-02-03 12:32:56.000000000 +0100
  29387. @@ -1,4 +1,4 @@
  29388. -/* Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
  29389. +/* Copyright (C) 1991-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  29390. This file is part of the GNU C Library.
  29391. The GNU C Library is free software; you can redistribute it and/or
  29392. @@ -12,9 +12,8 @@
  29393. Lesser General Public License for more details.
  29394. You should have received a copy of the GNU Lesser General Public
  29395. - License along with the GNU C Library; if not, write to the Free
  29396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29397. - 02111-1307 USA. */
  29398. + License along with the GNU C Library; if not, see
  29399. + <http://www.gnu.org/licenses/>. */
  29400. /*
  29401. * POSIX Standard: 2.10 Symbolic Constants <unistd.h>
  29402. @@ -30,35 +29,67 @@
  29403. /* These may be used to determine what facilities are present at compile time.
  29404. Their values can be obtained at run time from `sysconf'. */
  29405. +#ifdef __USE_XOPEN2K8
  29406. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. */
  29407. +# define _POSIX_VERSION 200809L
  29408. +#elif defined __USE_XOPEN2K
  29409. /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */
  29410. -#define _POSIX_VERSION 200112L
  29411. +# define _POSIX_VERSION 200112L
  29412. +#elif defined __USE_POSIX199506
  29413. +/* POSIX Standard approved as ISO/IEC 9945-1 as of June 1995. */
  29414. +# define _POSIX_VERSION 199506L
  29415. +#elif defined __USE_POSIX199309
  29416. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1993. */
  29417. +# define _POSIX_VERSION 199309L
  29418. +#else
  29419. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1990. */
  29420. +# define _POSIX_VERSION 199009L
  29421. +#endif
  29422. /* These are not #ifdef __USE_POSIX2 because they are
  29423. in the theoretically application-owned namespace. */
  29424. +#ifdef __USE_XOPEN2K8
  29425. +# define __POSIX2_THIS_VERSION 200809L
  29426. +/* The utilities on GNU systems also correspond to this version. */
  29427. +#elif defined __USE_XOPEN2K
  29428. +/* The utilities on GNU systems also correspond to this version. */
  29429. +# define __POSIX2_THIS_VERSION 200112L
  29430. +#elif defined __USE_POSIX199506
  29431. +/* The utilities on GNU systems also correspond to this version. */
  29432. +# define __POSIX2_THIS_VERSION 199506L
  29433. +#else
  29434. +/* The utilities on GNU systems also correspond to this version. */
  29435. +# define __POSIX2_THIS_VERSION 199209L
  29436. +#endif
  29437. +
  29438. /* The utilities on GNU systems also correspond to this version. */
  29439. -#define _POSIX2_VERSION 200112L
  29440. +#define _POSIX2_VERSION __POSIX2_THIS_VERSION
  29441. /* If defined, the implementation supports the
  29442. C Language Bindings Option. */
  29443. -#define _POSIX2_C_BIND 200112L
  29444. +#define _POSIX2_C_BIND __POSIX2_THIS_VERSION
  29445. /* If defined, the implementation supports the
  29446. C Language Development Utilities Option. */
  29447. -#define _POSIX2_C_DEV 200112L
  29448. +#define _POSIX2_C_DEV __POSIX2_THIS_VERSION
  29449. /* If defined, the implementation supports the
  29450. Software Development Utilities Option. */
  29451. -#define _POSIX2_SW_DEV 200112L
  29452. +#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
  29453. #if 0 /* uClibc does not provide the utility */
  29454. /* If defined, the implementation supports the
  29455. creation of locales with the localedef utility. */
  29456. -#define _POSIX2_LOCALEDEF 200112L
  29457. +#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
  29458. #endif
  29459. /* X/Open version number to which the library conforms. It is selectable. */
  29460. -#ifdef __USE_UNIX98
  29461. +#ifdef __USE_XOPEN2K8
  29462. +# define _XOPEN_VERSION 700
  29463. +#elif defined __USE_XOPEN2K
  29464. +# define _XOPEN_VERSION 600
  29465. +#elif defined __USE_UNIX98
  29466. # define _XOPEN_VERSION 500
  29467. #else
  29468. # define _XOPEN_VERSION 4
  29469. @@ -171,6 +202,8 @@
  29470. */
  29471. #include <bits/posix_opt.h>
  29472. +/* keep it after posix_opt.h, it overwrites based on uClibc's config options */
  29473. +#include <bits/uClibc_posix_opt.h>
  29474. /* Get the environment definitions from Unix98. */
  29475. #ifdef __USE_UNIX98
  29476. @@ -255,16 +288,16 @@
  29477. #define F_OK 0 /* Test for existence. */
  29478. /* Test for access to NAME using the real UID and real GID. */
  29479. -extern int access (__const char *__name, int __type) __THROW __nonnull ((1));
  29480. +extern int access (const char *__name, int __type) __THROW __nonnull ((1));
  29481. #if 0 /*def __USE_GNU*/
  29482. /* Test for access to NAME using the effective UID and GID
  29483. (as normal file operations use). */
  29484. -extern int euidaccess (__const char *__name, int __type)
  29485. +extern int euidaccess (const char *__name, int __type)
  29486. __THROW __nonnull ((1));
  29487. /* An alias for `euidaccess', used by some other systems. */
  29488. -extern int eaccess (__const char *__name, int __type)
  29489. +extern int eaccess (const char *__name, int __type)
  29490. __THROW __nonnull ((1));
  29491. #endif
  29492. @@ -272,8 +305,9 @@
  29493. /* Test for access to FILE relative to the directory FD is open on.
  29494. If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
  29495. otherwise use real IDs like `access'. */
  29496. -extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
  29497. +extern int faccessat (int __fd, const char *__file, int __type, int __flag)
  29498. __THROW __nonnull ((2)) __wur;
  29499. +libc_hidden_proto(faccessat)
  29500. #endif /* Use GNU. */
  29501. @@ -299,7 +333,10 @@
  29502. Return the new file position. */
  29503. #ifndef __USE_FILE_OFFSET64
  29504. extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
  29505. +# ifdef _LIBC
  29506. +extern __typeof(lseek) __lseek_nocancel attribute_hidden;
  29507. libc_hidden_proto(lseek)
  29508. +# endif
  29509. #else
  29510. # ifdef __REDIRECT_NTH
  29511. extern __off64_t __REDIRECT_NTH (lseek,
  29512. @@ -312,7 +349,10 @@
  29513. #ifdef __USE_LARGEFILE64
  29514. extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
  29515. __THROW;
  29516. +# ifdef _LIBC
  29517. +extern __typeof(lseek64) __lseek64_nocancel attribute_hidden;
  29518. libc_hidden_proto(lseek64)
  29519. +# endif
  29520. #endif
  29521. /* Close the file descriptor FD.
  29522. @@ -320,7 +360,11 @@
  29523. This function is a cancellation point and therefore not marked with
  29524. __THROW. */
  29525. extern int close (int __fd);
  29526. +#ifdef _LIBC
  29527. +extern __typeof(close) __close_nocancel attribute_hidden;
  29528. +extern void __close_nocancel_no_status(int) attribute_hidden;
  29529. libc_hidden_proto(close)
  29530. +#endif
  29531. /* Read NBYTES into BUF from FD. Return the
  29532. number read, -1 for errors or 0 for EOF.
  29533. @@ -328,14 +372,20 @@
  29534. This function is a cancellation point and therefore not marked with
  29535. __THROW. */
  29536. extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
  29537. +#ifdef _LIBC
  29538. +extern __typeof(read) __read_nocancel attribute_hidden;
  29539. libc_hidden_proto(read)
  29540. +#endif
  29541. /* Write N bytes of BUF to FD. Return the number written, or -1.
  29542. This function is a cancellation point and therefore not marked with
  29543. __THROW. */
  29544. -extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
  29545. +extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
  29546. +#ifdef _LIBC
  29547. +extern __typeof(write) __write_nocancel attribute_hidden;
  29548. libc_hidden_proto(write)
  29549. +#endif
  29550. #ifdef __USE_UNIX98
  29551. # ifndef __USE_FILE_OFFSET64
  29552. @@ -353,14 +403,14 @@
  29553. This function is a cancellation point and therefore not marked with
  29554. __THROW. */
  29555. -extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  29556. +extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
  29557. __off_t __offset) __wur;
  29558. # else
  29559. # ifdef __REDIRECT
  29560. extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
  29561. __off64_t __offset),
  29562. pread64) __wur;
  29563. -extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
  29564. +extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
  29565. size_t __nbytes, __off64_t __offset),
  29566. pwrite64) __wur;
  29567. # else
  29568. @@ -377,7 +427,7 @@
  29569. __off64_t __offset) __wur;
  29570. /* Write N bytes of BUF to FD at the given position OFFSET without
  29571. changing the file pointer. Return the number written, or -1. */
  29572. -extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
  29573. +extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
  29574. __off64_t __offset) __wur;
  29575. # endif
  29576. #endif
  29577. @@ -446,7 +496,7 @@
  29578. /* Change the owner and group of FILE. */
  29579. -extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
  29580. +extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
  29581. __THROW __nonnull ((1)) __wur;
  29582. libc_hidden_proto(chown)
  29583. @@ -457,7 +507,7 @@
  29584. /* Change owner and group of FILE, if it is a symbolic
  29585. link the ownership of the symbolic link is changed. */
  29586. -extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
  29587. +extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
  29588. __THROW __nonnull ((1)) __wur;
  29589. #endif /* Use BSD || X/Open Unix. */
  29590. @@ -465,13 +515,14 @@
  29591. #ifdef __USE_ATFILE
  29592. /* Change the owner and group of FILE relative to the directory FD is open
  29593. on. */
  29594. -extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
  29595. +extern int fchownat (int __fd, const char *__file, __uid_t __owner,
  29596. __gid_t __group, int __flag)
  29597. __THROW __nonnull ((2)) __wur;
  29598. +libc_hidden_proto(fchownat)
  29599. #endif /* Use GNU. */
  29600. /* Change the process's working directory to PATH. */
  29601. -extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur;
  29602. +extern int chdir (const char *__path) __THROW __nonnull ((1)) __wur;
  29603. libc_hidden_proto(chdir)
  29604. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  29605. @@ -513,6 +564,13 @@
  29606. extern int dup2 (int __fd, int __fd2) __THROW;
  29607. libc_hidden_proto(dup2)
  29608. +#ifdef __USE_GNU
  29609. +/* Duplicate FD to FD2, closing FD2 and making it open on the same
  29610. + file while setting flags according to FLAGS. */
  29611. +extern int dup3 (int __fd, int __fd2, int __flags) __THROW;
  29612. +libc_hidden_proto(dup3)
  29613. +#endif
  29614. +
  29615. /* NULL-terminated array of "NAME=VALUE" environment variables. */
  29616. extern char **__environ;
  29617. #ifdef __USE_GNU
  29618. @@ -522,48 +580,56 @@
  29619. /* Replace the current process, executing PATH with arguments ARGV and
  29620. environment ENVP. ARGV and ENVP are terminated by NULL pointers. */
  29621. -extern int execve (__const char *__path, char *__const __argv[],
  29622. - char *__const __envp[]) __THROW __nonnull ((1));
  29623. +extern int execve (const char *__path, char *const __argv[],
  29624. + char *const __envp[]) __THROW __nonnull ((1));
  29625. libc_hidden_proto(execve)
  29626. -#if 0 /*def __USE_GNU*/
  29627. +#if 0 /*def __USE_XOPEN2K8*/
  29628. /* Execute the file FD refers to, overlaying the running program image.
  29629. ARGV and ENVP are passed to the new program, as for `execve'. */
  29630. -extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
  29631. +extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
  29632. __THROW;
  29633. #endif
  29634. /* Execute PATH with arguments ARGV and environment from `environ'. */
  29635. -extern int execv (__const char *__path, char *__const __argv[])
  29636. +extern int execv (const char *__path, char *const __argv[])
  29637. __THROW __nonnull ((1));
  29638. libc_hidden_proto(execv)
  29639. /* Execute PATH with all arguments after PATH until a NULL pointer,
  29640. and the argument after that for environment. */
  29641. -extern int execle (__const char *__path, __const char *__arg, ...)
  29642. +extern int execle (const char *__path, const char *__arg, ...)
  29643. __THROW __nonnull ((1));
  29644. libc_hidden_proto(execle)
  29645. /* Execute PATH with all arguments after PATH until
  29646. a NULL pointer and environment from `environ'. */
  29647. -extern int execl (__const char *__path, __const char *__arg, ...)
  29648. +extern int execl (const char *__path, const char *__arg, ...)
  29649. __THROW __nonnull ((1));
  29650. libc_hidden_proto(execl)
  29651. /* Execute FILE, searching in the `PATH' environment variable if it contains
  29652. no slashes, with arguments ARGV and environment from `environ'. */
  29653. -extern int execvp (__const char *__file, char *__const __argv[])
  29654. +extern int execvp (const char *__file, char *const __argv[])
  29655. __THROW __nonnull ((1));
  29656. libc_hidden_proto(execvp)
  29657. /* Execute FILE, searching in the `PATH' environment variable if
  29658. it contains no slashes, with all arguments after FILE until a
  29659. NULL pointer and environment from `environ'. */
  29660. -extern int execlp (__const char *__file, __const char *__arg, ...)
  29661. +extern int execlp (const char *__file, const char *__arg, ...)
  29662. __THROW __nonnull ((1));
  29663. libc_hidden_proto(execlp)
  29664. +#ifdef __USE_GNU
  29665. +/* Execute FILE, searching in the `PATH' environment variable if it contains
  29666. + no slashes, with arguments ARGV and environment from a pointer */
  29667. +extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[])
  29668. + __THROW __nonnull ((1));
  29669. +libc_hidden_proto(execvpe)
  29670. +#endif
  29671. +
  29672. #if defined __USE_MISC || defined __USE_XOPEN
  29673. /* Add INC to priority of the current process. */
  29674. @@ -582,7 +648,7 @@
  29675. #include <bits/confname.h>
  29676. /* Get file-specific configuration information about PATH. */
  29677. -extern long int pathconf (__const char *__path, int __name)
  29678. +extern long int pathconf (const char *__path, int __name)
  29679. __THROW __nonnull ((1));
  29680. /* Get file-specific configuration about descriptor FD. */
  29681. @@ -767,7 +833,12 @@
  29682. Return -1 for errors, 0 to the new process,
  29683. and the process ID of the new process to the old process. */
  29684. extern __pid_t fork (void) __THROW;
  29685. +# ifdef _LIBC
  29686. +# ifdef __UCLIBC_HAS_THREADS__
  29687. +extern __typeof(fork) __libc_fork;
  29688. +# endif
  29689. libc_hidden_proto(fork)
  29690. +# endif
  29691. #endif
  29692. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  29693. @@ -779,8 +850,10 @@
  29694. libc_hidden_proto(vfork)
  29695. #endif /* Use BSD. */
  29696. +#if 0 /* psm: seems unused , exit-thread.S is not compiled */
  29697. /* Special exit function which only terminates the current thread. */
  29698. extern void __exit_thread (int val) __attribute__ ((__noreturn__));
  29699. +#endif
  29700. /* Return the pathname of the terminal FD is open on, or NULL on errors.
  29701. The returned storage is good only until the next call to this function. */
  29702. @@ -797,7 +870,6 @@
  29703. extern int isatty (int __fd) __THROW;
  29704. libc_hidden_proto(isatty)
  29705. -
  29706. #if 0 /*defined __USE_BSD \
  29707. || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98)*/
  29708. /* Return the index into the active-logins file (utmp) for
  29709. @@ -807,26 +879,27 @@
  29710. /* Make a link to FROM named TO. */
  29711. -extern int link (__const char *__from, __const char *__to)
  29712. +extern int link (const char *__from, const char *__to)
  29713. __THROW __nonnull ((1, 2)) __wur;
  29714. #ifdef __USE_ATFILE
  29715. /* Like link but relative paths in TO and FROM are interpreted relative
  29716. to FROMFD and TOFD respectively. */
  29717. -extern int linkat (int __fromfd, __const char *__from, int __tofd,
  29718. - __const char *__to, int __flags)
  29719. +extern int linkat (int __fromfd, const char *__from, int __tofd,
  29720. + const char *__to, int __flags)
  29721. __THROW __nonnull ((2, 4)) __wur;
  29722. +libc_hidden_proto(linkat)
  29723. #endif
  29724. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
  29725. /* Make a symbolic link to FROM named TO. */
  29726. -extern int symlink (__const char *__from, __const char *__to)
  29727. +extern int symlink (const char *__from, const char *__to)
  29728. __THROW __nonnull ((1, 2)) __wur;
  29729. /* Read the contents of the symbolic link PATH into no more than
  29730. LEN bytes of BUF. The contents are not null-terminated.
  29731. Returns the number of characters read, or -1 for errors. */
  29732. -extern ssize_t readlink (__const char *__restrict __path,
  29733. +extern ssize_t readlink (const char *__restrict __path,
  29734. char *__restrict __buf, size_t __len)
  29735. __THROW __nonnull ((1, 2)) __wur;
  29736. libc_hidden_proto(readlink)
  29737. @@ -834,27 +907,30 @@
  29738. #ifdef __USE_ATFILE
  29739. /* Like symlink but a relative path in TO is interpreted relative to TOFD. */
  29740. -extern int symlinkat (__const char *__from, int __tofd,
  29741. - __const char *__to) __THROW __nonnull ((1, 3)) __wur;
  29742. +extern int symlinkat (const char *__from, int __tofd,
  29743. + const char *__to) __THROW __nonnull ((1, 3)) __wur;
  29744. +libc_hidden_proto(symlinkat)
  29745. /* Like readlink but a relative PATH is interpreted relative to FD. */
  29746. -extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
  29747. +extern ssize_t readlinkat (int __fd, const char *__restrict __path,
  29748. char *__restrict __buf, size_t __len)
  29749. __THROW __nonnull ((2, 3)) __wur;
  29750. +libc_hidden_proto(readlinkat)
  29751. #endif
  29752. /* Remove the link NAME. */
  29753. -extern int unlink (__const char *__name) __THROW __nonnull ((1));
  29754. +extern int unlink (const char *__name) __THROW __nonnull ((1));
  29755. libc_hidden_proto(unlink)
  29756. #ifdef __USE_ATFILE
  29757. /* Remove the link NAME relative to FD. */
  29758. -extern int unlinkat (int __fd, __const char *__name, int __flag)
  29759. +extern int unlinkat (int __fd, const char *__name, int __flag)
  29760. __THROW __nonnull ((2));
  29761. +libc_hidden_proto(unlinkat)
  29762. #endif
  29763. /* Remove the directory PATH. */
  29764. -extern int rmdir (__const char *__path) __THROW __nonnull ((1));
  29765. +extern int rmdir (const char *__path) __THROW __nonnull ((1));
  29766. libc_hidden_proto(rmdir)
  29767. @@ -884,7 +960,7 @@
  29768. #if 0 /*def __USE_BSD*/
  29769. /* Set the login name returned by `getlogin'. */
  29770. -extern int setlogin (__const char *__name) __THROW __nonnull ((1));
  29771. +extern int setlogin (const char *__name) __THROW __nonnull ((1));
  29772. #endif
  29773. @@ -910,13 +986,14 @@
  29774. #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
  29775. /* Set the name of the current host to NAME, which is LEN bytes long.
  29776. This call is restricted to the super-user. */
  29777. -extern int sethostname (__const char *__name, size_t __len)
  29778. +extern int sethostname (const char *__name, size_t __len)
  29779. __THROW __nonnull ((1)) __wur;
  29780. /* Set the current machine's Internet number to ID.
  29781. This call is restricted to the super-user. */
  29782. extern int sethostid (long int __id) __THROW __wur;
  29783. +
  29784. #if defined __UCLIBC_BSD_SPECIFIC__ || defined _LIBC
  29785. /* Get and set the NIS (aka YP) domain name, if any.
  29786. Called just like `gethostname' and `sethostname'.
  29787. @@ -926,10 +1003,11 @@
  29788. libc_hidden_proto(getdomainname)
  29789. #endif
  29790. #if defined __UCLIBC_BSD_SPECIFIC__
  29791. -extern int setdomainname (__const char *__name, size_t __len)
  29792. +extern int setdomainname (const char *__name, size_t __len)
  29793. __THROW __nonnull ((1)) __wur;
  29794. #endif
  29795. +
  29796. #if defined __UCLIBC_LINUX_SPECIFIC__
  29797. /* Revoke access permissions to all processes currently communicating
  29798. with the control terminal, and then send a SIGHUP signal to the process
  29799. @@ -939,7 +1017,7 @@
  29800. #if 0
  29801. /* Revoke the access of all descriptors currently open on FILE. */
  29802. -extern int revoke (__const char *__file) __THROW __nonnull ((1)) __wur;
  29803. +extern int revoke (const char *__file) __THROW __nonnull ((1)) __wur;
  29804. /* Enable statistical profiling, writing samples of the PC into at most
  29805. @@ -956,7 +1034,7 @@
  29806. /* Turn accounting on if NAME is an existing file. The system will then write
  29807. a record for each process as it terminates, to this file. If NAME is NULL,
  29808. turn accounting off. This call is restricted to the super-user. */
  29809. -extern int acct (__const char *__name) __THROW;
  29810. +extern int acct (const char *__name) __THROW;
  29811. /* Successive calls return the shells listed in `/etc/shells'. */
  29812. @@ -977,21 +1055,21 @@
  29813. #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
  29814. /* Make PATH be the root directory (the starting point for absolute paths).
  29815. This call is restricted to the super-user. */
  29816. -extern int chroot (__const char *__path) __THROW __nonnull ((1)) __wur;
  29817. +extern int chroot (const char *__path) __THROW __nonnull ((1)) __wur;
  29818. /* Prompt with PROMPT and read a string from the terminal without echoing.
  29819. Uses /dev/tty if possible; otherwise stderr and stdin. */
  29820. -extern char *getpass (__const char *__prompt) __nonnull ((1));
  29821. +extern char *getpass (const char *__prompt) __nonnull ((1));
  29822. #endif /* Use BSD || X/Open. */
  29823. -#if defined __USE_BSD || defined __USE_XOPEN
  29824. +#if defined __USE_BSD || defined __USE_XOPEN || defined __USE_XOPEN2K
  29825. /* Make all changes done to FD actually appear on disk.
  29826. This function is a cancellation point and therefore not marked with
  29827. __THROW. */
  29828. extern int fsync (int __fd);
  29829. -#endif /* Use BSD || X/Open. */
  29830. +#endif /* Use BSD || X/Open || Unix98. */
  29831. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  29832. @@ -1017,21 +1095,22 @@
  29833. /* Truncate FILE to LENGTH bytes. */
  29834. # ifndef __USE_FILE_OFFSET64
  29835. -extern int truncate (__const char *__file, __off_t __length)
  29836. +extern int truncate (const char *__file, __off_t __length)
  29837. __THROW __nonnull ((1)) __wur;
  29838. libc_hidden_proto(truncate)
  29839. # else
  29840. # ifdef __REDIRECT_NTH
  29841. extern int __REDIRECT_NTH (truncate,
  29842. - (__const char *__file, __off64_t __length),
  29843. + (const char *__file, __off64_t __length),
  29844. truncate64) __nonnull ((1)) __wur;
  29845. # else
  29846. # define truncate truncate64
  29847. # endif
  29848. # endif
  29849. # ifdef __USE_LARGEFILE64
  29850. -extern int truncate64 (__const char *__file, __off64_t __length)
  29851. +extern int truncate64 (const char *__file, __off64_t __length)
  29852. __THROW __nonnull ((1)) __wur;
  29853. +libc_hidden_proto(truncate64)
  29854. # endif
  29855. #endif /* Use BSD || X/Open Unix. */
  29856. @@ -1120,7 +1199,6 @@
  29857. # endif
  29858. # ifdef __USE_LARGEFILE64
  29859. extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur;
  29860. -libc_hidden_proto(lockf64)
  29861. # endif
  29862. #endif /* Use misc and F_LOCK not already defined. */
  29863. @@ -1142,7 +1220,7 @@
  29864. && defined __UCLIBC_HAS_REALTIME__
  29865. /* Synchronize at least the data part of a file with the underlying
  29866. media. */
  29867. -extern int fdatasync (int __fildes) __THROW;
  29868. +extern int fdatasync (int __fildes);
  29869. #endif /* Use POSIX199309 */
  29870. @@ -1151,7 +1229,7 @@
  29871. #ifdef __USE_XOPEN
  29872. # if defined __UCLIBC_HAS_CRYPT__
  29873. /* Encrypt at most 8 characters from KEY using salt to perturb DES. */
  29874. -extern char *crypt (__const char *__key, __const char *__salt)
  29875. +extern char *crypt (const char *__key, const char *__salt)
  29876. __THROW __nonnull ((1, 2));
  29877. /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
  29878. @@ -1164,7 +1242,7 @@
  29879. FROM and copy the result to TO. The value of TO must not be in the
  29880. range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
  29881. is without partner. */
  29882. -extern void swab (__const void *__restrict __from, void *__restrict __to,
  29883. +extern void swab (const void *__restrict __from, void *__restrict __to,
  29884. ssize_t __n) __THROW __nonnull ((1, 2));
  29885. #endif
  29886. @@ -1178,7 +1256,7 @@
  29887. /* Define some macros helping to catch buffer overflows. */
  29888. -#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
  29889. +#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
  29890. # include <bits/unistd.h>
  29891. #endif
  29892. @@ -1191,6 +1269,7 @@
  29893. #endif
  29894. typedef signed smallint_type smallint;
  29895. typedef unsigned smallint_type smalluint;
  29896. +extern size_t __pagesize attribute_hidden;
  29897. #endif
  29898. diff -Nur uClibc-0.9.33.2/include/utime.h uClibc/include/utime.h
  29899. --- uClibc-0.9.33.2/include/utime.h 2012-05-15 09:20:09.000000000 +0200
  29900. +++ uClibc/include/utime.h 2014-02-03 12:32:56.000000000 +0100
  29901. @@ -12,9 +12,8 @@
  29902. Lesser General Public License for more details.
  29903. You should have received a copy of the GNU Lesser General Public
  29904. - License along with the GNU C Library; if not, write to the Free
  29905. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29906. - 02111-1307 USA. */
  29907. + License along with the GNU C Library; if not, see
  29908. + <http://www.gnu.org/licenses/>. */
  29909. /*
  29910. * POSIX Standard: 5.6.6 Set File Access and Modification Times <utime.h>
  29911. @@ -43,8 +42,8 @@
  29912. /* Set the access and modification times of FILE to those given in
  29913. *FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
  29914. -extern int utime (__const char *__file,
  29915. - __const struct utimbuf *__file_times)
  29916. +extern int utime (const char *__file,
  29917. + const struct utimbuf *__file_times)
  29918. __THROW __nonnull ((1));
  29919. libc_hidden_proto(utime)
  29920. diff -Nur uClibc-0.9.33.2/include/utmp.h uClibc/include/utmp.h
  29921. --- uClibc-0.9.33.2/include/utmp.h 2012-05-15 09:20:09.000000000 +0200
  29922. +++ uClibc/include/utmp.h 2014-02-03 12:32:56.000000000 +0100
  29923. @@ -12,9 +12,8 @@
  29924. Lesser General Public License for more details.
  29925. You should have received a copy of the GNU Lesser General Public
  29926. - License along with the GNU C Library; if not, write to the Free
  29927. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29928. - 02111-1307 USA. */
  29929. + License along with the GNU C Library; if not, see
  29930. + <http://www.gnu.org/licenses/>. */
  29931. #ifndef _UTMP_H
  29932. #define _UTMP_H 1
  29933. @@ -44,60 +43,52 @@
  29934. /* Write the given entry into utmp and wtmp. */
  29935. -extern void login (__const struct utmp *__entry) __THROW;
  29936. +extern void login (const struct utmp *__entry) __THROW;
  29937. /* Write the utmp entry to say the user on UT_LINE has logged out. */
  29938. -extern int logout (__const char *__ut_line) __THROW;
  29939. +extern int logout (const char *__ut_line) __THROW;
  29940. /* Append to wtmp an entry for the current time and the given info. */
  29941. -extern void logwtmp (__const char *__ut_line, __const char *__ut_name,
  29942. - __const char *__ut_host) __THROW;
  29943. +extern void logwtmp (const char *__ut_line, const char *__ut_name,
  29944. + const char *__ut_host) __THROW;
  29945. #endif
  29946. /* Append entry UTMP to the wtmp-like file WTMP_FILE. */
  29947. -extern void updwtmp (__const char *__wtmp_file, __const struct utmp *__utmp)
  29948. +extern void updwtmp (const char *__wtmp_file, const struct utmp *__utmp)
  29949. __THROW;
  29950. -libc_hidden_proto(updwtmp)
  29951. /* Change name of the utmp file to be examined. */
  29952. -extern int utmpname (__const char *__file) __THROW;
  29953. -libc_hidden_proto(utmpname)
  29954. +extern int utmpname (const char *__file) __THROW;
  29955. /* Read next entry from a utmp-like file. */
  29956. extern struct utmp *getutent (void) __THROW;
  29957. -libc_hidden_proto(getutent)
  29958. /* Reset the input stream to the beginning of the file. */
  29959. extern void setutent (void) __THROW;
  29960. -libc_hidden_proto(setutent)
  29961. /* Close the current open file. */
  29962. extern void endutent (void) __THROW;
  29963. -libc_hidden_proto(endutent)
  29964. /* Search forward from the current point in the utmp file until the
  29965. next entry with a ut_type matching ID->ut_type. */
  29966. -extern struct utmp *getutid (__const struct utmp *__id) __THROW;
  29967. -libc_hidden_proto(getutid)
  29968. +extern struct utmp *getutid (const struct utmp *__id) __THROW;
  29969. /* Search forward from the current point in the utmp file until the
  29970. next entry with a ut_line matching LINE->ut_line. */
  29971. -extern struct utmp *getutline (__const struct utmp *__line) __THROW;
  29972. -libc_hidden_proto(getutline)
  29973. +extern struct utmp *getutline (const struct utmp *__line) __THROW;
  29974. /* Write out entry pointed to by UTMP_PTR into the utmp file. */
  29975. -extern struct utmp *pututline (__const struct utmp *__utmp_ptr) __THROW;
  29976. -libc_hidden_proto(pututline)
  29977. +extern struct utmp *pututline (const struct utmp *__utmp_ptr) __THROW;
  29978. #if 0 /* def __USE_MISC */
  29979. /* Reentrant versions of the file for handling utmp files. */
  29980. extern int getutent_r (struct utmp *__buffer, struct utmp **__result) __THROW;
  29981. -extern int getutid_r (__const struct utmp *__id, struct utmp *__buffer,
  29982. +extern int getutid_r (const struct utmp *__id, struct utmp *__buffer,
  29983. struct utmp **__result) __THROW;
  29984. -extern int getutline_r (__const struct utmp *__line,
  29985. +extern int getutline_r (const struct utmp *__line,
  29986. struct utmp *__buffer, struct utmp **__result) __THROW;
  29987. #endif /* Use misc. */
  29988. diff -Nur uClibc-0.9.33.2/include/utmpx.h uClibc/include/utmpx.h
  29989. --- uClibc-0.9.33.2/include/utmpx.h 2012-05-15 09:20:09.000000000 +0200
  29990. +++ uClibc/include/utmpx.h 2014-02-03 12:32:56.000000000 +0100
  29991. @@ -12,9 +12,8 @@
  29992. Lesser General Public License for more details.
  29993. You should have received a copy of the GNU Lesser General Public
  29994. - License along with the GNU C Library; if not, write to the Free
  29995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29996. - 02111-1307 USA. */
  29997. + License along with the GNU C Library; if not, see
  29998. + <http://www.gnu.org/licenses/>. */
  29999. #ifndef _UTMPX_H
  30000. #define _UTMPX_H 1
  30001. @@ -69,19 +68,19 @@
  30002. This function is a possible cancellation point and therefore not
  30003. marked with __THROW. */
  30004. -extern struct utmpx *getutxid (__const struct utmpx *__id);
  30005. +extern struct utmpx *getutxid (const struct utmpx *__id);
  30006. /* Get the user accounting database entry corresponding to LINE.
  30007. This function is a possible cancellation point and therefore not
  30008. marked with __THROW. */
  30009. -extern struct utmpx *getutxline (__const struct utmpx *__line);
  30010. +extern struct utmpx *getutxline (const struct utmpx *__line);
  30011. /* Write the entry UTMPX into the user accounting database.
  30012. This function is a possible cancellation point and therefore not
  30013. marked with __THROW. */
  30014. -extern struct utmpx *pututxline (__const struct utmpx *__utmpx);
  30015. +extern struct utmpx *pututxline (const struct utmpx *__utmpx);
  30016. #ifdef __USE_GNU
  30017. @@ -91,7 +90,7 @@
  30018. cancellation point. But due to similarity with an POSIX interface
  30019. or due to the implementation it is a cancellation point and
  30020. therefore not marked with __THROW. */
  30021. -extern int utmpxname (__const char *__file);
  30022. +extern int utmpxname (const char *__file);
  30023. /* Append entry UTMP to the wtmpx-like file WTMPX_FILE.
  30024. @@ -99,8 +98,8 @@
  30025. cancellation point. But due to similarity with an POSIX interface
  30026. or due to the implementation it is a cancellation point and
  30027. therefore not marked with __THROW. */
  30028. -extern void updwtmpx (__const char *__wtmpx_file,
  30029. - __const struct utmpx *__utmpx);
  30030. +extern void updwtmpx (const char *__wtmpx_file,
  30031. + const struct utmpx *__utmpx);
  30032. /* Copy the information in UTMPX to UTMP.
  30033. @@ -109,7 +108,7 @@
  30034. cancellation point. But due to similarity with an POSIX interface
  30035. or due to the implementation it is a cancellation point and
  30036. therefore not marked with __THROW. */
  30037. -extern void getutmp (__const struct utmpx *__utmpx,
  30038. +extern void getutmp (const struct utmpx *__utmpx,
  30039. struct utmp *__utmp);
  30040. /* Copy the information in UTMP to UTMPX.
  30041. @@ -118,7 +117,7 @@
  30042. cancellation point. But due to similarity with an POSIX interface
  30043. or due to the implementation it is a cancellation point and
  30044. therefore not marked with __THROW. */
  30045. -extern void getutmpx (__const struct utmp *__utmp,
  30046. +extern void getutmpx (const struct utmp *__utmp,
  30047. struct utmpx *__utmpx);
  30048. #endif
  30049. diff -Nur uClibc-0.9.33.2/include/values.h uClibc/include/values.h
  30050. --- uClibc-0.9.33.2/include/values.h 2012-05-15 09:20:09.000000000 +0200
  30051. +++ uClibc/include/values.h 2014-02-03 12:32:56.000000000 +0100
  30052. @@ -13,9 +13,8 @@
  30053. Lesser General Public License for more details.
  30054. You should have received a copy of the GNU Lesser General Public
  30055. - License along with the GNU C Library; if not, write to the Free
  30056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  30057. - 02111-1307 USA. */
  30058. + License along with the GNU C Library; if not, see
  30059. + <http://www.gnu.org/licenses/>. */
  30060. /* This interface is obsolete. New programs should use
  30061. <limits.h> and/or <float.h> instead of <values.h>. */
  30062. diff -Nur uClibc-0.9.33.2/include/wchar.h uClibc/include/wchar.h
  30063. --- uClibc-0.9.33.2/include/wchar.h 2012-05-15 09:20:09.000000000 +0200
  30064. +++ uClibc/include/wchar.h 2014-02-03 12:32:56.000000000 +0100
  30065. @@ -12,9 +12,8 @@
  30066. Lesser General Public License for more details.
  30067. You should have received a copy of the GNU Lesser General Public
  30068. - License along with the GNU C Library; if not, write to the Free
  30069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  30070. - 02111-1307 USA. */
  30071. + License along with the GNU C Library; if not, see
  30072. + <http://www.gnu.org/licenses/>. */
  30073. /*
  30074. * ISO C99 Standard: 7.24
  30075. @@ -133,46 +132,46 @@
  30076. /* This incomplete type is defined in <time.h> but needed here because
  30077. of `wcsftime'. */
  30078. struct tm;
  30079. +__END_NAMESPACE_STD
  30080. /* XXX We have to clean this up at some point. Since tm is in the std
  30081. namespace but wcsftime is in __c99 the type wouldn't be found
  30082. without inserting it in the global namespace. */
  30083. __USING_NAMESPACE_STD(tm)
  30084. -__END_NAMESPACE_STD
  30085. __BEGIN_NAMESPACE_C99
  30086. /* Copy SRC to DEST. */
  30087. extern wchar_t *wcscpy (wchar_t *__restrict __dest,
  30088. - __const wchar_t *__restrict __src) __THROW;
  30089. + const wchar_t *__restrict __src) __THROW;
  30090. /* Copy no more than N wide-characters of SRC to DEST. */
  30091. extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
  30092. - __const wchar_t *__restrict __src, size_t __n)
  30093. + const wchar_t *__restrict __src, size_t __n)
  30094. __THROW;
  30095. /* Append SRC onto DEST. */
  30096. extern wchar_t *wcscat (wchar_t *__restrict __dest,
  30097. - __const wchar_t *__restrict __src) __THROW;
  30098. + const wchar_t *__restrict __src) __THROW;
  30099. libc_hidden_proto(wcscat)
  30100. /* Append no more than N wide-characters of SRC onto DEST. */
  30101. extern wchar_t *wcsncat (wchar_t *__restrict __dest,
  30102. - __const wchar_t *__restrict __src, size_t __n)
  30103. + const wchar_t *__restrict __src, size_t __n)
  30104. __THROW;
  30105. /* Compare S1 and S2. */
  30106. -extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
  30107. +extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
  30108. __THROW __attribute_pure__;
  30109. libc_hidden_proto(wcscmp)
  30110. /* Compare N wide-characters of S1 and S2. */
  30111. -extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  30112. +extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
  30113. __THROW __attribute_pure__;
  30114. __END_NAMESPACE_C99
  30115. #ifdef __USE_GNU
  30116. /* Compare S1 and S2, ignoring case. */
  30117. -extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
  30118. +extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) __THROW;
  30119. /* Compare no more than N chars of S1 and S2, ignoring case. */
  30120. -extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
  30121. +extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2,
  30122. size_t __n) __THROW;
  30123. #ifdef __UCLIBC_HAS_XLOCALE__
  30124. @@ -180,11 +179,11 @@
  30125. the provided locale and not the global locale. */
  30126. # include <xlocale.h>
  30127. -extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  30128. +extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  30129. __locale_t __loc) __THROW;
  30130. libc_hidden_proto(wcscasecmp_l)
  30131. -extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  30132. +extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  30133. size_t __n, __locale_t __loc) __THROW;
  30134. libc_hidden_proto(wcsncasecmp_l)
  30135. #endif /* __UCLIBC_HAS_XLOCALE__ */
  30136. @@ -193,13 +192,13 @@
  30137. __BEGIN_NAMESPACE_C99
  30138. /* Compare S1 and S2, both interpreted as appropriate to the
  30139. LC_COLLATE category of the current locale. */
  30140. -extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
  30141. +extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW;
  30142. libc_hidden_proto(wcscoll)
  30143. /* Transform S2 into array pointed to by S1 such that if wcscmp is
  30144. applied to two transformed strings the result is the as applying
  30145. `wcscoll' to the original strings. */
  30146. extern size_t wcsxfrm (wchar_t *__restrict __s1,
  30147. - __const wchar_t *__restrict __s2, size_t __n) __THROW;
  30148. + const wchar_t *__restrict __s2, size_t __n) __THROW;
  30149. __END_NAMESPACE_C99
  30150. #ifdef __USE_GNU
  30151. @@ -209,76 +208,79 @@
  30152. /* Compare S1 and S2, both interpreted as appropriate to the
  30153. LC_COLLATE category of the given locale. */
  30154. -extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
  30155. +extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2,
  30156. __locale_t __loc) __THROW;
  30157. libc_hidden_proto(wcscoll_l)
  30158. /* Transform S2 into array pointed to by S1 such that if wcscmp is
  30159. applied to two transformed strings the result is the as applying
  30160. `wcscoll' to the original strings. */
  30161. -extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
  30162. +extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
  30163. size_t __n, __locale_t __loc) __THROW;
  30164. libc_hidden_proto(wcsxfrm_l)
  30165. #endif /* __UCLIBC_HAS_XLOCALE__ */
  30166. /* Duplicate S, returning an identical malloc'd string. */
  30167. -extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
  30168. +extern wchar_t *wcsdup (const wchar_t *__s) __THROW __attribute_malloc__;
  30169. #endif
  30170. __BEGIN_NAMESPACE_C99
  30171. /* Find the first occurrence of WC in WCS. */
  30172. -extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
  30173. +extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
  30174. __THROW __attribute_pure__;
  30175. /* Find the last occurrence of WC in WCS. */
  30176. -extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
  30177. +extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
  30178. __THROW __attribute_pure__;
  30179. __END_NAMESPACE_C99
  30180. #ifdef __USE_GNU
  30181. /* This function is similar to `wcschr'. But it returns a pointer to
  30182. the closing NUL wide character in case C is not found in S. */
  30183. -extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
  30184. +extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc)
  30185. __THROW __attribute_pure__;
  30186. #endif
  30187. __BEGIN_NAMESPACE_C99
  30188. /* Return the length of the initial segmet of WCS which
  30189. consists entirely of wide characters not in REJECT. */
  30190. -extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
  30191. +extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
  30192. __THROW __attribute_pure__;
  30193. /* Return the length of the initial segmet of WCS which
  30194. consists entirely of wide characters in ACCEPT. */
  30195. -extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
  30196. +extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
  30197. __THROW __attribute_pure__;
  30198. libc_hidden_proto(wcsspn)
  30199. /* Find the first occurrence in WCS of any character in ACCEPT. */
  30200. -extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
  30201. +extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept)
  30202. __THROW __attribute_pure__;
  30203. libc_hidden_proto(wcspbrk)
  30204. /* Find the first occurrence of NEEDLE in HAYSTACK. */
  30205. -extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
  30206. +/* SuSv uses restrict keyword, glibc does not */
  30207. +extern wchar_t *wcsstr (const wchar_t *__restrict __haystack, const wchar_t *__restrict __needle)
  30208. __THROW __attribute_pure__;
  30209. /* Divide WCS into tokens separated by characters in DELIM. */
  30210. extern wchar_t *wcstok (wchar_t *__restrict __s,
  30211. - __const wchar_t *__restrict __delim,
  30212. + const wchar_t *__restrict __delim,
  30213. wchar_t **__restrict __ptr) __THROW;
  30214. /* Return the number of wide characters in S. */
  30215. -extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
  30216. +extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__;
  30217. libc_hidden_proto(wcslen)
  30218. __END_NAMESPACE_C99
  30219. #if defined __USE_XOPEN && defined __UCLIBC_SUSV3_LEGACY__
  30220. /* Another name for `wcsstr' from XPG4. */
  30221. -extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
  30222. +/* SuSv3 did not use restrict keyword, probably because it was marked LEGACY
  30223. + we do to be in sync with wcsstr */
  30224. +extern wchar_t *wcswcs (const wchar_t *__restrict __haystack, const wchar_t *__restrict __needle)
  30225. __THROW __attribute_pure__;
  30226. #endif
  30227. #ifdef __USE_GNU
  30228. /* Return the number of wide characters in S, but at most MAXLEN. */
  30229. -extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
  30230. +extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
  30231. __THROW __attribute_pure__;
  30232. libc_hidden_proto(wcsnlen)
  30233. #endif
  30234. @@ -286,23 +288,24 @@
  30235. __BEGIN_NAMESPACE_C99
  30236. /* Search N wide characters of S for C. */
  30237. -extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
  30238. +extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n)
  30239. __THROW __attribute_pure__;
  30240. libc_hidden_proto(wmemchr)
  30241. /* Compare N wide characters of S1 and S2. */
  30242. -extern int wmemcmp (__const wchar_t *__restrict __s1,
  30243. - __const wchar_t *__restrict __s2, size_t __n)
  30244. +/* SuSv4 does not use restrict keyword for S1 and S2, glibc does */
  30245. +extern int wmemcmp (const wchar_t *__s1,
  30246. + const wchar_t *__s2, size_t __n)
  30247. __THROW __attribute_pure__;
  30248. /* Copy N wide characters of SRC to DEST. */
  30249. extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
  30250. - __const wchar_t *__restrict __s2, size_t __n) __THROW;
  30251. + const wchar_t *__restrict __s2, size_t __n) __THROW;
  30252. libc_hidden_proto(wmemcpy)
  30253. /* Copy N wide characters of SRC to DEST, guaranteeing
  30254. correct behavior for overlapping strings. */
  30255. -extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  30256. +extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
  30257. __THROW;
  30258. /* Set N wide characters of S to C. */
  30259. @@ -313,7 +316,7 @@
  30260. /* Copy N wide characters of SRC to DEST and return pointer to following
  30261. wide character. */
  30262. extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
  30263. - __const wchar_t *__restrict __s2, size_t __n)
  30264. + const wchar_t *__restrict __s2, size_t __n)
  30265. __THROW;
  30266. libc_hidden_proto(wmempcpy)
  30267. #endif
  30268. @@ -331,13 +334,13 @@
  30269. /* Determine whether PS points to an object representing the initial
  30270. state. */
  30271. -extern int mbsinit (__const mbstate_t *__ps) __THROW __attribute_pure__;
  30272. +extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__;
  30273. libc_hidden_proto(mbsinit)
  30274. /* Write wide character representation of multibyte character pointed
  30275. to by S to PWC. */
  30276. extern size_t mbrtowc (wchar_t *__restrict __pwc,
  30277. - __const char *__restrict __s, size_t __n,
  30278. + const char *__restrict __s, size_t __n,
  30279. mbstate_t *__p) __THROW;
  30280. libc_hidden_proto(mbrtowc)
  30281. @@ -348,24 +351,24 @@
  30282. /* Return number of bytes in multibyte character pointed to by S. */
  30283. #if 0 /* uClibc: disabled */
  30284. -extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
  30285. +extern size_t __mbrlen (const char *__restrict __s, size_t __n,
  30286. mbstate_t *__restrict __ps) __THROW;
  30287. #endif
  30288. -extern size_t mbrlen (__const char *__restrict __s, size_t __n,
  30289. +extern size_t mbrlen (const char *__restrict __s, size_t __n,
  30290. mbstate_t *__restrict __ps) __THROW;
  30291. libc_hidden_proto(mbrlen)
  30292. /* Write wide character representation of multibyte character string
  30293. SRC to DST. */
  30294. extern size_t mbsrtowcs (wchar_t *__restrict __dst,
  30295. - __const char **__restrict __src, size_t __len,
  30296. + const char **__restrict __src, size_t __len,
  30297. mbstate_t *__restrict __ps) __THROW;
  30298. libc_hidden_proto(mbsrtowcs)
  30299. /* Write multibyte character representation of wide character string
  30300. SRC to DST. */
  30301. extern size_t wcsrtombs (char *__restrict __dst,
  30302. - __const wchar_t **__restrict __src, size_t __len,
  30303. + const wchar_t **__restrict __src, size_t __len,
  30304. mbstate_t *__restrict __ps) __THROW;
  30305. libc_hidden_proto(wcsrtombs)
  30306. __END_NAMESPACE_C99
  30307. @@ -375,14 +378,14 @@
  30308. /* Write wide character representation of at most NMC bytes of the
  30309. multibyte character string SRC to DST. */
  30310. extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
  30311. - __const char **__restrict __src, size_t __nmc,
  30312. + const char **__restrict __src, size_t __nmc,
  30313. size_t __len, mbstate_t *__restrict __ps) __THROW;
  30314. libc_hidden_proto(mbsnrtowcs)
  30315. /* Write multibyte character representation of at most NWC characters
  30316. from the wide character string SRC to DST. */
  30317. extern size_t wcsnrtombs (char *__restrict __dst,
  30318. - __const wchar_t **__restrict __src,
  30319. + const wchar_t **__restrict __src,
  30320. size_t __nwc, size_t __len,
  30321. mbstate_t *__restrict __ps) __THROW;
  30322. libc_hidden_proto(wcsnrtombs)
  30323. @@ -396,7 +399,7 @@
  30324. /* Determine number of column positions required for first N wide
  30325. characters (or fewer if S ends before this) in S. */
  30326. -extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW;
  30327. +extern int wcswidth (const wchar_t *__s, size_t __n) __THROW;
  30328. libc_hidden_proto(wcswidth)
  30329. #endif /* Use X/Open. */
  30330. @@ -405,14 +408,14 @@
  30331. #ifdef __UCLIBC_HAS_FLOATS__
  30332. /* Convert initial portion of the wide string NPTR to `double'
  30333. representation. */
  30334. -extern double wcstod (__const wchar_t *__restrict __nptr,
  30335. +extern double wcstod (const wchar_t *__restrict __nptr,
  30336. wchar_t **__restrict __endptr) __THROW;
  30337. #ifdef __USE_ISOC99
  30338. /* Likewise for `float' and `long double' sizes of floating-point numbers. */
  30339. -extern float wcstof (__const wchar_t *__restrict __nptr,
  30340. +extern float wcstof (const wchar_t *__restrict __nptr,
  30341. wchar_t **__restrict __endptr) __THROW;
  30342. -extern long double wcstold (__const wchar_t *__restrict __nptr,
  30343. +extern long double wcstold (const wchar_t *__restrict __nptr,
  30344. wchar_t **__restrict __endptr) __THROW;
  30345. #endif /* C99 */
  30346. #endif /* __UCLIBC_HAS_FLOATS__ */
  30347. @@ -420,44 +423,44 @@
  30348. /* Convert initial portion of wide string NPTR to `long int'
  30349. representation. */
  30350. -extern long int wcstol (__const wchar_t *__restrict __nptr,
  30351. +extern long int wcstol (const wchar_t *__restrict __nptr,
  30352. wchar_t **__restrict __endptr, int __base) __THROW;
  30353. /* Convert initial portion of wide string NPTR to `unsigned long int'
  30354. representation. */
  30355. -extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
  30356. +extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
  30357. wchar_t **__restrict __endptr, int __base)
  30358. __THROW;
  30359. #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU)
  30360. -/* Convert initial portion of wide string NPTR to `long int'
  30361. +/* Convert initial portion of wide string NPTR to `long long int'
  30362. representation. */
  30363. __extension__
  30364. -extern long long int wcstoll (__const wchar_t *__restrict __nptr,
  30365. +extern long long int wcstoll (const wchar_t *__restrict __nptr,
  30366. wchar_t **__restrict __endptr, int __base)
  30367. __THROW;
  30368. /* Convert initial portion of wide string NPTR to `unsigned long long int'
  30369. representation. */
  30370. __extension__
  30371. -extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
  30372. +extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
  30373. wchar_t **__restrict __endptr,
  30374. int __base) __THROW;
  30375. #endif /* ISO C99 or GCC and GNU. */
  30376. __END_NAMESPACE_C99
  30377. #if defined __GNUC__ && defined __USE_GNU
  30378. -/* Convert initial portion of wide string NPTR to `long int'
  30379. +/* Convert initial portion of wide string NPTR to `long long int'
  30380. representation. */
  30381. __extension__
  30382. -extern long long int wcstoq (__const wchar_t *__restrict __nptr,
  30383. +extern long long int wcstoq (const wchar_t *__restrict __nptr,
  30384. wchar_t **__restrict __endptr, int __base)
  30385. __THROW;
  30386. /* Convert initial portion of wide string NPTR to `unsigned long long int'
  30387. representation. */
  30388. __extension__
  30389. -extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
  30390. +extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr,
  30391. wchar_t **__restrict __endptr,
  30392. int __base) __THROW;
  30393. #endif /* GCC and use GNU. */
  30394. @@ -481,35 +484,35 @@
  30395. /* Special versions of the functions above which take the locale to
  30396. use as an additional parameter. */
  30397. -extern long int wcstol_l (__const wchar_t *__restrict __nptr,
  30398. +extern long int wcstol_l (const wchar_t *__restrict __nptr,
  30399. wchar_t **__restrict __endptr, int __base,
  30400. __locale_t __loc) __THROW;
  30401. -extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
  30402. +extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr,
  30403. wchar_t **__restrict __endptr,
  30404. int __base, __locale_t __loc) __THROW;
  30405. __extension__
  30406. -extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
  30407. +extern long long int wcstoll_l (const wchar_t *__restrict __nptr,
  30408. wchar_t **__restrict __endptr,
  30409. int __base, __locale_t __loc) __THROW;
  30410. __extension__
  30411. -extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
  30412. +extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr,
  30413. wchar_t **__restrict __endptr,
  30414. int __base, __locale_t __loc)
  30415. __THROW;
  30416. #ifdef __UCLIBC_HAS_FLOATS__
  30417. -extern double wcstod_l (__const wchar_t *__restrict __nptr,
  30418. +extern double wcstod_l (const wchar_t *__restrict __nptr,
  30419. wchar_t **__restrict __endptr, __locale_t __loc)
  30420. __THROW;
  30421. -extern float wcstof_l (__const wchar_t *__restrict __nptr,
  30422. +extern float wcstof_l (const wchar_t *__restrict __nptr,
  30423. wchar_t **__restrict __endptr, __locale_t __loc)
  30424. __THROW;
  30425. -extern long double wcstold_l (__const wchar_t *__restrict __nptr,
  30426. +extern long double wcstold_l (const wchar_t *__restrict __nptr,
  30427. wchar_t **__restrict __endptr,
  30428. __locale_t __loc) __THROW;
  30429. #endif /* __UCLIBC_HAS_FLOATS__ */
  30430. @@ -520,11 +523,11 @@
  30431. #ifdef __USE_GNU
  30432. /* Copy SRC to DEST, returning the address of the terminating L'\0' in
  30433. DEST. */
  30434. -extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW;
  30435. +extern wchar_t *wcpcpy (wchar_t *__dest, const wchar_t *__src) __THROW;
  30436. /* Copy no more than N characters of SRC to DEST, returning the address of
  30437. the last character written into DEST. */
  30438. -extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
  30439. +extern wchar_t *wcpncpy (wchar_t *__dest, const wchar_t *__src, size_t __n)
  30440. __THROW;
  30441. #endif /* use GNU */
  30442. @@ -542,17 +545,17 @@
  30443. This function is a possible cancellation point and therefore not
  30444. marked with __THROW. */
  30445. extern int fwprintf (__FILE *__restrict __stream,
  30446. - __const wchar_t *__restrict __format, ...)
  30447. + const wchar_t *__restrict __format, ...)
  30448. /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
  30449. /* Write formatted output to stdout.
  30450. This function is a possible cancellation point and therefore not
  30451. marked with __THROW. */
  30452. -extern int wprintf (__const wchar_t *__restrict __format, ...)
  30453. +extern int wprintf (const wchar_t *__restrict __format, ...)
  30454. /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
  30455. /* Write formatted output of at most N characters to S. */
  30456. extern int swprintf (wchar_t *__restrict __s, size_t __n,
  30457. - __const wchar_t *__restrict __format, ...)
  30458. + const wchar_t *__restrict __format, ...)
  30459. __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
  30460. /* Write formatted output to S from argument list ARG.
  30461. @@ -560,7 +563,7 @@
  30462. This function is a possible cancellation point and therefore not
  30463. marked with __THROW. */
  30464. extern int vfwprintf (__FILE *__restrict __s,
  30465. - __const wchar_t *__restrict __format,
  30466. + const wchar_t *__restrict __format,
  30467. __gnuc_va_list __arg)
  30468. /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
  30469. libc_hidden_proto(vfwprintf)
  30470. @@ -568,13 +571,13 @@
  30471. This function is a possible cancellation point and therefore not
  30472. marked with __THROW. */
  30473. -extern int vwprintf (__const wchar_t *__restrict __format,
  30474. +extern int vwprintf (const wchar_t *__restrict __format,
  30475. __gnuc_va_list __arg)
  30476. /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
  30477. /* Write formatted output of at most N character to S from argument
  30478. list ARG. */
  30479. extern int vswprintf (wchar_t *__restrict __s, size_t __n,
  30480. - __const wchar_t *__restrict __format,
  30481. + const wchar_t *__restrict __format,
  30482. __gnuc_va_list __arg)
  30483. __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
  30484. libc_hidden_proto(vswprintf)
  30485. @@ -585,17 +588,17 @@
  30486. This function is a possible cancellation point and therefore not
  30487. marked with __THROW. */
  30488. extern int fwscanf (__FILE *__restrict __stream,
  30489. - __const wchar_t *__restrict __format, ...)
  30490. + const wchar_t *__restrict __format, ...)
  30491. /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
  30492. /* Read formatted input from stdin.
  30493. This function is a possible cancellation point and therefore not
  30494. marked with __THROW. */
  30495. -extern int wscanf (__const wchar_t *__restrict __format, ...)
  30496. +extern int wscanf (const wchar_t *__restrict __format, ...)
  30497. /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
  30498. /* Read formatted input from S. */
  30499. -extern int swscanf (__const wchar_t *__restrict __s,
  30500. - __const wchar_t *__restrict __format, ...)
  30501. +extern int swscanf (const wchar_t *__restrict __s,
  30502. + const wchar_t *__restrict __format, ...)
  30503. __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
  30504. __END_NAMESPACE_C99
  30505. @@ -609,7 +612,7 @@
  30506. This function is a possible cancellation point and therefore not
  30507. marked with __THROW. */
  30508. extern int vfwscanf (__FILE *__restrict __s,
  30509. - __const wchar_t *__restrict __format,
  30510. + const wchar_t *__restrict __format,
  30511. __gnuc_va_list __arg)
  30512. /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
  30513. libc_hidden_proto(vfwscanf)
  30514. @@ -617,12 +620,12 @@
  30515. This function is a possible cancellation point and therefore not
  30516. marked with __THROW. */
  30517. -extern int vwscanf (__const wchar_t *__restrict __format,
  30518. +extern int vwscanf (const wchar_t *__restrict __format,
  30519. __gnuc_va_list __arg)
  30520. /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
  30521. /* Read formatted input from S into argument list ARG. */
  30522. -extern int vswscanf (__const wchar_t *__restrict __s,
  30523. - __const wchar_t *__restrict __format,
  30524. +extern int vswscanf (const wchar_t *__restrict __s,
  30525. + const wchar_t *__restrict __format,
  30526. __gnuc_va_list __arg)
  30527. __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
  30528. libc_hidden_proto(vswscanf)
  30529. @@ -652,6 +655,7 @@
  30530. These functions are possible cancellation points and therefore not
  30531. marked with __THROW. */
  30532. extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
  30533. +libc_hidden_proto(fputwc)
  30534. extern wint_t putwc (wchar_t __wc, __FILE *__stream);
  30535. /* Write a character to stdout.
  30536. @@ -673,7 +677,7 @@
  30537. This function is a possible cancellation points and therefore not
  30538. marked with __THROW. */
  30539. -extern int fputws (__const wchar_t *__restrict __ws,
  30540. +extern int fputws (const wchar_t *__restrict __ws,
  30541. __FILE *__restrict __stream);
  30542. libc_hidden_proto(fputws)
  30543. @@ -743,7 +747,7 @@
  30544. cancellation point. But due to similarity with an POSIX interface
  30545. or due to the implementation it is a cancellation point and
  30546. therefore not marked with __THROW. */
  30547. -extern int fputws_unlocked (__const wchar_t *__restrict __ws,
  30548. +extern int fputws_unlocked (const wchar_t *__restrict __ws,
  30549. __FILE *__restrict __stream);
  30550. libc_hidden_proto(fputws_unlocked)
  30551. #endif
  30552. @@ -754,8 +758,8 @@
  30553. Write no more than MAXSIZE wide characters and return the number
  30554. of wide characters written, or 0 if it would exceed MAXSIZE. */
  30555. extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
  30556. - __const wchar_t *__restrict __format,
  30557. - __const struct tm *__restrict __tp) __THROW;
  30558. + const wchar_t *__restrict __format,
  30559. + const struct tm *__restrict __tp) __THROW;
  30560. __END_NAMESPACE_C99
  30561. # if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  30562. @@ -764,8 +768,8 @@
  30563. /* Similar to `wcsftime' but takes the information from
  30564. the provided locale and not the global locale. */
  30565. extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
  30566. - __const wchar_t *__restrict __format,
  30567. - __const struct tm *__restrict __tp,
  30568. + const wchar_t *__restrict __format,
  30569. + const struct tm *__restrict __tp,
  30570. __locale_t __loc) __THROW;
  30571. libc_hidden_proto(wcsftime_l)
  30572. # endif
  30573. diff -Nur uClibc-0.9.33.2/include/wctype.h uClibc/include/wctype.h
  30574. --- uClibc-0.9.33.2/include/wctype.h 2012-05-15 09:20:09.000000000 +0200
  30575. +++ uClibc/include/wctype.h 2014-02-03 12:32:56.000000000 +0100
  30576. @@ -12,9 +12,8 @@
  30577. Lesser General Public License for more details.
  30578. You should have received a copy of the GNU Lesser General Public
  30579. - License along with the GNU C Library; if not, write to the Free
  30580. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  30581. - 02111-1307 USA. */
  30582. + License along with the GNU C Library; if not, see
  30583. + <http://www.gnu.org/licenses/>. */
  30584. /*
  30585. * ISO C99 Standard: 7.25
  30586. @@ -183,7 +182,7 @@
  30587. /* Construct value that describes a class of wide characters identified
  30588. by the string argument PROPERTY. */
  30589. -extern wctype_t wctype (__const char *__property) __THROW;
  30590. +extern wctype_t wctype (const char *__property) __THROW;
  30591. libc_hidden_proto(wctype)
  30592. /* Determine whether the wide-character WC has the property described by
  30593. @@ -200,7 +199,7 @@
  30594. __BEGIN_NAMESPACE_C99
  30595. /* Scalar type that can hold values which represent locale-specific
  30596. character mappings. */
  30597. -/* uClibc note: glibc uses - typedef __const __int32_t *wctrans_t; */
  30598. +/* uClibc note: glibc uses - typedef const __int32_t *wctrans_t; */
  30599. typedef unsigned int wctrans_t;
  30600. __END_NAMESPACE_C99
  30601. #ifdef __USE_GNU
  30602. @@ -235,7 +234,7 @@
  30603. __BEGIN_NAMESPACE_C99
  30604. /* Construct value that describes a mapping between wide characters
  30605. identified by the string argument PROPERTY. */
  30606. -extern wctrans_t wctrans (__const char *__property) __THROW;
  30607. +extern wctrans_t wctrans (const char *__property) __THROW;
  30608. libc_hidden_proto(wctrans)
  30609. /* Map the wide character WC using the mapping described by DESC. */
  30610. @@ -304,7 +303,7 @@
  30611. /* Construct value that describes a class of wide characters identified
  30612. by the string argument PROPERTY. */
  30613. -extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
  30614. +extern wctype_t wctype_l (const char *__property, __locale_t __locale)
  30615. __THROW;
  30616. /* Determine whether the wide-character WC has the property described by
  30617. @@ -328,7 +327,7 @@
  30618. /* Construct value that describes a mapping between wide characters
  30619. identified by the string argument PROPERTY. */
  30620. -extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
  30621. +extern wctrans_t wctrans_l (const char *__property, __locale_t __locale)
  30622. __THROW;
  30623. /* Map the wide character WC using the mapping described by DESC. */
  30624. diff -Nur uClibc-0.9.33.2/include/wordexp.h uClibc/include/wordexp.h
  30625. --- uClibc-0.9.33.2/include/wordexp.h 2012-05-15 09:20:09.000000000 +0200
  30626. +++ uClibc/include/wordexp.h 2014-02-03 12:32:56.000000000 +0100
  30627. @@ -12,9 +12,8 @@
  30628. Lesser General Public License for more details.
  30629. You should have received a copy of the GNU Lesser General Public
  30630. - License along with the GNU C Library; if not, write to the Free
  30631. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  30632. - 02111-1307 USA. */
  30633. + License along with the GNU C Library; if not, see
  30634. + <http://www.gnu.org/licenses/>. */
  30635. #ifndef _WORDEXP_H
  30636. #define _WORDEXP_H 1
  30637. @@ -60,7 +59,7 @@
  30638. };
  30639. /* Do word expansion of WORDS into PWORDEXP. */
  30640. -extern int wordexp (__const char *__restrict __words,
  30641. +extern int wordexp (const char *__restrict __words,
  30642. wordexp_t *__restrict __pwordexp, int __flags);
  30643. /* Free the storage allocated by a `wordexp' call. */
  30644. diff -Nur uClibc-0.9.33.2/include/xlocale.h uClibc/include/xlocale.h
  30645. --- uClibc-0.9.33.2/include/xlocale.h 2012-05-15 09:20:09.000000000 +0200
  30646. +++ uClibc/include/xlocale.h 2014-02-03 12:32:56.000000000 +0100
  30647. @@ -14,9 +14,8 @@
  30648. Lesser General Public License for more details.
  30649. You should have received a copy of the GNU Lesser General Public
  30650. - License along with the GNU C Library; if not, write to the Free
  30651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  30652. - 02111-1307 USA. */
  30653. + License along with the GNU C Library; if not, see
  30654. + <http://www.gnu.org/licenses/>. */
  30655. #ifndef _XLOCALE_H
  30656. #define _XLOCALE_H 1
  30657. @@ -39,11 +38,11 @@
  30658. /* Note: LC_ALL is not a valid index into this array. */
  30659. const char *__names[13];
  30660. } *__locale_t;
  30661. +#else
  30662. +# include <bits/uClibc_locale.h>
  30663. +#endif
  30664. /* POSIX 2008 makes locale_t official. */
  30665. typedef __locale_t locale_t;
  30666. -#else
  30667. -# include <locale.h>
  30668. -#endif
  30669. #endif /* xlocale.h */
  30670. diff -Nur uClibc-0.9.33.2/ldso/include/dl-defs.h uClibc/ldso/include/dl-defs.h
  30671. --- uClibc-0.9.33.2/ldso/include/dl-defs.h 2012-05-15 09:20:09.000000000 +0200
  30672. +++ uClibc/ldso/include/dl-defs.h 2014-02-03 12:32:56.000000000 +0100
  30673. @@ -5,8 +5,8 @@
  30674. * GNU Lesser General Public License version 2.1 or later.
  30675. */
  30676. -#ifndef _LD_DEFS_H
  30677. -#define _LD_DEFS_H
  30678. +#ifndef _DL_DEFS_H
  30679. +#define _DL_DEFS_H
  30680. #define FLAG_ANY -1
  30681. #define FLAG_TYPE_MASK 0x00ff
  30682. @@ -72,6 +72,11 @@
  30683. #endif
  30684. +#ifdef _LIBC
  30685. +/* arch specific defines */
  30686. +#include <dl-sysdep.h>
  30687. +#endif
  30688. +
  30689. /* Provide a means for a port to pass additional arguments to the _dl_start
  30690. function. */
  30691. #ifndef DL_START
  30692. @@ -281,4 +286,4 @@
  30693. # define DL_GET_RUN_ADDR(loadaddr, mapaddr) (mapaddr)
  30694. #endif
  30695. -#endif /* _LD_DEFS_H */
  30696. +#endif /* _DL_DEFS_H */
  30697. diff -Nur uClibc-0.9.33.2/ldso/include/dl-elf.h uClibc/ldso/include/dl-elf.h
  30698. --- uClibc-0.9.33.2/ldso/include/dl-elf.h 2012-05-15 09:20:09.000000000 +0200
  30699. +++ uClibc/ldso/include/dl-elf.h 2014-02-03 12:32:56.000000000 +0100
  30700. @@ -5,19 +5,22 @@
  30701. * GNU Lesser General Public License version 2.1 or later.
  30702. */
  30703. -#ifndef LINUXELF_H
  30704. -#define LINUXELF_H
  30705. +#ifndef _DL_ELF_H
  30706. +#define _DL_ELF_H
  30707. +#include <features.h>
  30708. +#include <bits/wordsize.h>
  30709. #include <dl-string.h> /* before elf.h to get ELF_USES_RELOCA right */
  30710. #include <elf.h>
  30711. #include <link.h>
  30712. +#include <dl-defs.h>
  30713. +#include <dlfcn.h>
  30714. -/* Forward declarations for stuff defined in ld_hash.h */
  30715. +/* Forward declarations for stuff defined in dl-hash.h */
  30716. struct dyn_elf;
  30717. struct elf_resolve;
  30718. struct r_scope_elem;
  30719. -#include <dl-defs.h>
  30720. #ifdef __LDSO_CACHE_SUPPORT__
  30721. extern int _dl_map_cache(void);
  30722. extern int _dl_unmap_cache(void);
  30723. @@ -29,7 +32,7 @@
  30724. #define DL_RESOLVE_SECURE 0x0001
  30725. #define DL_RESOLVE_NOLOAD 0x0002
  30726. -/* Function prototypes for non-static stuff in readelflib1.c */
  30727. +/* Function prototypes for non-static stuff in elfinterp.c */
  30728. extern void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  30729. unsigned long rel_addr, unsigned long rel_size);
  30730. extern int _dl_parse_relocation_information(struct dyn_elf *rpnt,
  30731. @@ -39,8 +42,6 @@
  30732. int trace_loaded_objects);
  30733. extern struct elf_resolve * _dl_load_elf_shared_library(unsigned rflags,
  30734. struct dyn_elf **rpnt, const char *libname);
  30735. -extern struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libname,
  30736. - int trace_loaded_objects);
  30737. extern int _dl_linux_resolve(void);
  30738. extern int _dl_fixup(struct dyn_elf *rpnt, struct r_scope_elem *scope, int flag);
  30739. extern void _dl_protect_relro (struct elf_resolve *l);
  30740. @@ -222,11 +223,6 @@
  30741. #ifdef __DSBT__
  30742. /* Get the mapped address of the DSBT base. */
  30743. ADJUST_DYN_INFO(DT_DSBT_BASE_IDX, load_off);
  30744. -
  30745. - /* Initialize loadmap dsbt info. */
  30746. - load_off.map->dsbt_table = (void *)dynamic_info[DT_DSBT_BASE_IDX];
  30747. - load_off.map->dsbt_size = dynamic_info[DT_DSBT_SIZE_IDX];
  30748. - load_off.map->dsbt_index = dynamic_info[DT_DSBT_INDEX_IDX];
  30749. #endif
  30750. #undef ADJUST_DYN_INFO
  30751. return rtld_flags;
  30752. @@ -259,4 +255,4 @@
  30753. (((X) & PF_X) ? PROT_EXEC : 0))
  30754. -#endif /* LINUXELF_H */
  30755. +#endif /* _DL_ELF_H */
  30756. diff -Nur uClibc-0.9.33.2/ldso/include/dlfcn.h uClibc/ldso/include/dlfcn.h
  30757. --- uClibc-0.9.33.2/ldso/include/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  30758. +++ uClibc/ldso/include/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  30759. @@ -19,9 +19,9 @@
  30760. `dladdr'. */
  30761. typedef struct
  30762. {
  30763. - __const char *dli_fname; /* File name of defining object. */
  30764. + const char *dli_fname; /* File name of defining object. */
  30765. void *dli_fbase; /* Load address of that object. */
  30766. - __const char *dli_sname; /* Name of nearest symbol. */
  30767. + const char *dli_sname; /* Name of nearest symbol. */
  30768. void *dli_saddr; /* Exact value of nearest symbol. */
  30769. } Dl_info;
  30770. diff -Nur uClibc-0.9.33.2/ldso/include/dl-hash.h uClibc/ldso/include/dl-hash.h
  30771. --- uClibc-0.9.33.2/ldso/include/dl-hash.h 2012-05-15 09:20:09.000000000 +0200
  30772. +++ uClibc/ldso/include/dl-hash.h 2014-02-03 12:32:56.000000000 +0100
  30773. @@ -5,8 +5,8 @@
  30774. * GNU Lesser General Public License version 2.1 or later.
  30775. */
  30776. -#ifndef _LD_HASH_H_
  30777. -#define _LD_HASH_H_
  30778. +#ifndef _DL_HASH_H
  30779. +#define _DL_HASH_H
  30780. #ifndef RTLD_NEXT
  30781. #define RTLD_NEXT ((void*)-1)
  30782. @@ -139,6 +139,12 @@
  30783. memory when the module is dlclose()d. */
  30784. struct funcdesc_ht *funcdesc_ht;
  30785. #endif
  30786. +#ifdef __DSBT__
  30787. + /* Information for DSBT */
  30788. + void **dsbt_table;
  30789. + unsigned long dsbt_size;
  30790. + unsigned long dsbt_index;
  30791. +#endif
  30792. };
  30793. #define RELOCS_DONE 0x000001
  30794. @@ -160,17 +166,7 @@
  30795. struct elf_resolve *mytpnt, int type_class,
  30796. struct symbol_ref *symbol);
  30797. -extern int _dl_linux_dynamic_link(void);
  30798. -
  30799. extern char * _dl_library_path;
  30800. -extern char * _dl_not_lazy;
  30801. -
  30802. -static __inline__ int _dl_symbol(char * name)
  30803. -{
  30804. - if (name[0] != '_' || name[1] != 'd' || name[2] != 'l' || name[3] != '_')
  30805. - return 0;
  30806. - return 1;
  30807. -}
  30808. #define LD_ERROR_NOFILE 1
  30809. #define LD_ERROR_NOZERO 2
  30810. @@ -184,4 +180,4 @@
  30811. #define LD_BAD_HANDLE 10
  30812. #define LD_NO_SYMBOL 11
  30813. -#endif /* _LD_HASH_H_ */
  30814. +#endif /* _DL_HASH_H */
  30815. diff -Nur uClibc-0.9.33.2/ldso/include/dl-string.h uClibc/ldso/include/dl-string.h
  30816. --- uClibc-0.9.33.2/ldso/include/dl-string.h 2012-05-15 09:20:09.000000000 +0200
  30817. +++ uClibc/ldso/include/dl-string.h 2014-02-03 12:32:56.000000000 +0100
  30818. @@ -5,12 +5,16 @@
  30819. * GNU Lesser General Public License version 2.1 or later.
  30820. */
  30821. -#ifndef _LINUX_STRING_H_
  30822. -#define _LINUX_STRING_H_
  30823. +#ifndef _DL_STRING_H
  30824. +#define _DL_STRING_H
  30825. -#include <dl-sysdep.h> /* for do_rem */
  30826. #include <features.h>
  30827. +#define __need_NULL
  30828. +#include <stddef.h>
  30829. +
  30830. +#include <dl-defs.h> /* for do_rem by dl-sysdep.h */
  30831. +
  30832. /* provide some sane defaults */
  30833. #ifndef do_rem
  30834. # define do_rem(result, n, base) ((result) = (n) % (base))
  30835. @@ -19,25 +23,7 @@
  30836. # define do_div_10(result, remain) ((result) /= 10)
  30837. #endif
  30838. -static size_t _dl_strlen(const char *str);
  30839. -static char *_dl_strcat(char *dst, const char *src);
  30840. -static char *_dl_strcpy(char *dst, const char *src);
  30841. -static int _dl_strcmp(const char *s1, const char *s2);
  30842. -static int _dl_strncmp(const char *s1, const char *s2, size_t len);
  30843. -static char *_dl_strchr(const char *str, int c);
  30844. -static char *_dl_strrchr(const char *str, int c);
  30845. -static char *_dl_strstr(const char *s1, const char *s2);
  30846. -static void *_dl_memcpy(void *dst, const void *src, size_t len);
  30847. -static int _dl_memcmp(const void *s1, const void *s2, size_t len);
  30848. -static void *_dl_memset(void *str, int c, size_t len);
  30849. -static char *_dl_get_last_path_component(char *path);
  30850. -static char *_dl_simple_ltoa(char *local, unsigned long i);
  30851. -static char *_dl_simple_ltoahex(char *local, unsigned long i);
  30852. -
  30853. -#ifndef NULL
  30854. -#define NULL ((void *) 0)
  30855. -#endif
  30856. -
  30857. +#ifdef IS_IN_rtld
  30858. static __always_inline size_t _dl_strlen(const char *str)
  30859. {
  30860. register const char *ptr = (char *) str-1;
  30861. @@ -84,22 +70,6 @@
  30862. return c1 - c2;
  30863. }
  30864. -static __always_inline int _dl_strncmp(const char *s1, const char *s2, size_t len)
  30865. -{
  30866. - register unsigned char c1 = '\0';
  30867. - register unsigned char c2 = '\0';
  30868. -
  30869. - s1--;s2--;
  30870. - while (len > 0) {
  30871. - c1 = (unsigned char) *++s1;
  30872. - c2 = (unsigned char) *++s2;
  30873. - if (c1 == '\0' || c1 != c2)
  30874. - return c1 - c2;
  30875. - len--;
  30876. - }
  30877. - return c1 - c2;
  30878. -}
  30879. -
  30880. static __always_inline char * _dl_strchr(const char *str, int c)
  30881. {
  30882. register char ch;
  30883. @@ -172,7 +142,7 @@
  30884. return 0;
  30885. }
  30886. -#if defined(powerpc)
  30887. +#if defined(__powerpc__)
  30888. /* Will generate smaller and faster code due to loop unrolling.*/
  30889. static __always_inline void * _dl_memset(void *to, int c, size_t n)
  30890. {
  30891. @@ -228,7 +198,19 @@
  30892. ;/* empty */
  30893. return ptr == path ? ptr : ptr+1;
  30894. }
  30895. +#else /* IS_IN_rtld */
  30896. +# include <string.h>
  30897. +# define _dl_strlen strlen
  30898. +# define _dl_strcat strcat
  30899. +# define _dl_strcpy strcpy
  30900. +# define _dl_strcmp strcmp
  30901. +# define _dl_strrchr strrchr
  30902. +# define _dl_memcpy memcpy
  30903. +# define _dl_memcmp memcmp
  30904. +# define _dl_memset memset
  30905. +#endif /* IS_IN_rtld */
  30906. +#if defined IS_IN_rtld || defined __SUPPORT_LD_DEBUG__
  30907. /* Early on, we can't call printf, so use this to print out
  30908. * numbers using the SEND_STDERR() macro. Avoid using mod
  30909. * or using long division */
  30910. @@ -246,7 +228,9 @@
  30911. } while (i > 0);
  30912. return p;
  30913. }
  30914. +#endif
  30915. +#ifdef IS_IN_rtld
  30916. static __always_inline char * _dl_simple_ltoahex(char *local, unsigned long i)
  30917. {
  30918. /* 16 digits plus a leading "0x" plus a null terminator,
  30919. @@ -266,9 +250,6 @@
  30920. return p;
  30921. }
  30922. -
  30923. -
  30924. -
  30925. /* The following macros may be used in dl-startup.c to debug
  30926. * ldso before ldso has fixed itself up to make function calls */
  30927. @@ -285,7 +266,7 @@
  30928. /* On some arches constant strings are referenced through the GOT.
  30929. * This requires that load_addr must already be defined... */
  30930. #if defined(mc68000) || defined(__arm__) || defined(__thumb__) || \
  30931. - defined(__mips__) || defined(__sh__) || defined(__powerpc__) || \
  30932. + defined(__sh__) || defined(__powerpc__) || \
  30933. defined(__avr32__) || defined(__xtensa__) || defined(__sparc__) || defined(__microblaze__)
  30934. # define CONSTANT_STRING_GOT_FIXUP(X) \
  30935. if ((X) < (const char *) load_addr) (X) += load_addr
  30936. @@ -362,4 +343,6 @@
  30937. # define SEND_ADDRESS_STDERR_DEBUG(X, add_a_newline)
  30938. #endif
  30939. -#endif
  30940. +#endif /* IS_IN_rtld */
  30941. +
  30942. +#endif /* _DL_STRING_H */
  30943. diff -Nur uClibc-0.9.33.2/ldso/include/dl-syscall.h uClibc/ldso/include/dl-syscall.h
  30944. --- uClibc-0.9.33.2/ldso/include/dl-syscall.h 2012-05-15 09:20:09.000000000 +0200
  30945. +++ uClibc/ldso/include/dl-syscall.h 2014-02-03 12:32:56.000000000 +0100
  30946. @@ -5,8 +5,8 @@
  30947. * GNU Lesser General Public License version 2.1 or later.
  30948. */
  30949. -#ifndef _LD_SYSCALL_H_
  30950. -#define _LD_SYSCALL_H_
  30951. +#ifndef _DL_SYSCALL_H
  30952. +#define _DL_SYSCALL_H
  30953. /* We can't use the real errno in ldso, since it has not yet
  30954. * been dynamicly linked in yet. */
  30955. @@ -20,6 +20,8 @@
  30956. /* For MAP_ANONYMOUS -- differs between platforms */
  30957. #define _SYS_MMAN_H 1
  30958. #include <bits/mman.h>
  30959. +
  30960. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  30961. /* Pull in whatever this particular arch's kernel thinks the kernel version of
  30962. * struct stat should look like. It turns out that each arch has a different
  30963. * opinion on the subject, and different kernel revs use different names... */
  30964. @@ -35,6 +37,13 @@
  30965. #define S_ISUID 04000 /* Set user ID on execution. */
  30966. #define S_ISGID 02000 /* Set group ID on execution. */
  30967. +#else
  30968. +/* 1. common-generic ABI doesn't need kernel_stat translation
  30969. + * 3. S_IS?ID already provided by stat.h
  30970. + */
  30971. +#include <sys/stat.h>
  30972. +#endif
  30973. +
  30974. /* Here are the definitions for some syscalls that are used
  30975. by the dynamic linker. The idea is that we want to be able
  30976. @@ -48,9 +57,18 @@
  30977. #define __NR__dl_close __NR_close
  30978. static __always_inline _syscall1(int, _dl_close, int, fd)
  30979. -#define __NR__dl_open __NR_open
  30980. +#if defined __NR_openat && !defined __NR_open
  30981. +static __always_inline int _dl_open(const char *fn,
  30982. + int flags, __kernel_mode_t mode)
  30983. +{
  30984. + return INLINE_SYSCALL(openat, 4, AT_FDCWD, fn, flags, mode);
  30985. +}
  30986. +
  30987. +#elif defined __NR_open
  30988. +# define __NR__dl_open __NR_open
  30989. static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags,
  30990. __kernel_mode_t, mode)
  30991. +#endif
  30992. #define __NR__dl_write __NR_write
  30993. static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
  30994. @@ -64,11 +82,27 @@
  30995. static __always_inline _syscall3(int, _dl_mprotect, const void *, addr,
  30996. unsigned long, len, int, prot)
  30997. -#define __NR__dl_stat __NR_stat
  30998. +#if defined __NR_fstatat64 && !defined __NR_stat
  30999. +# define __NR__dl_fstatat64 __NR_fstatat64
  31000. +static __always_inline _syscall4(int, _dl_fstatat64, int, fd, const char *,
  31001. + fn, struct stat *, stat, int, flags)
  31002. +
  31003. +static __always_inline int _dl_stat(const char *file_name,
  31004. + struct stat *buf)
  31005. +{
  31006. + return _dl_fstatat64(AT_FDCWD, file_name, buf, 0);
  31007. +}
  31008. +#elif defined __NR_stat
  31009. +# define __NR__dl_stat __NR_stat
  31010. static __always_inline _syscall2(int, _dl_stat, const char *, file_name,
  31011. struct stat *, buf)
  31012. +#endif
  31013. -#define __NR__dl_fstat __NR_fstat
  31014. +#if defined __NR_fstat64 && !defined __NR_fstat
  31015. +# define __NR__dl_fstat __NR_fstat64
  31016. +#elif defined __NR_fstat
  31017. +# define __NR__dl_fstat __NR_fstat
  31018. +#endif
  31019. static __always_inline _syscall2(int, _dl_fstat, int, fd, struct stat *, buf)
  31020. #define __NR__dl_munmap __NR_munmap
  31021. @@ -104,9 +138,15 @@
  31022. #define __NR__dl_getpid __NR_getpid
  31023. static __always_inline _syscall0(gid_t, _dl_getpid)
  31024. -#define __NR__dl_readlink __NR_readlink
  31025. +#if defined __NR_readlinkat && !defined __NR_readlink
  31026. +# define __NR__dl_readlink __NR_readlinkat
  31027. +static __always_inline _syscall4(int, _dl_readlink, int, id, const char *, path,
  31028. + char *, buf, size_t, bufsiz)
  31029. +#elif defined __NR_readlink
  31030. +# define __NR__dl_readlink __NR_readlink
  31031. static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
  31032. size_t, bufsiz)
  31033. +#endif
  31034. #ifdef __NR_pread64
  31035. #define __NR___syscall_pread __NR_pread64
  31036. @@ -187,4 +227,4 @@
  31037. #endif
  31038. }
  31039. -#endif /* _LD_SYSCALL_H_ */
  31040. +#endif /* _DL_SYSCALL_H */
  31041. diff -Nur uClibc-0.9.33.2/ldso/include/ldsodefs.h uClibc/ldso/include/ldsodefs.h
  31042. --- uClibc-0.9.33.2/ldso/include/ldsodefs.h 2012-05-15 09:20:09.000000000 +0200
  31043. +++ uClibc/ldso/include/ldsodefs.h 2014-02-03 12:32:56.000000000 +0100
  31044. @@ -66,7 +66,7 @@
  31045. /* Taken from glibc/elf/dl-reloc.c */
  31046. #define CHECK_STATIC_TLS(sym_map) \
  31047. do { \
  31048. - if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
  31049. + if (unlikely((sym_map)->l_tls_offset == NO_TLS_OFFSET)) \
  31050. _dl_allocate_static_tls (sym_map); \
  31051. } while (0)
  31052. diff -Nur uClibc-0.9.33.2/ldso/include/ldso.h uClibc/ldso/include/ldso.h
  31053. --- uClibc-0.9.33.2/ldso/include/ldso.h 2012-05-15 09:20:09.000000000 +0200
  31054. +++ uClibc/ldso/include/ldso.h 2014-02-03 12:32:56.000000000 +0100
  31055. @@ -5,8 +5,8 @@
  31056. * GNU Lesser General Public License version 2.1 or later.
  31057. */
  31058. -#ifndef _LDSO_H_
  31059. -#define _LDSO_H_
  31060. +#ifndef _LDSO_H
  31061. +#define _LDSO_H
  31062. #include <features.h>
  31063. @@ -30,6 +30,10 @@
  31064. #include <stddef.h> /* for ptrdiff_t */
  31065. #include <stdbool.h>
  31066. #define _FCNTL_H
  31067. +/* We need this if arch has only new syscalls defined */
  31068. +#ifndef AT_FDCWD
  31069. +#define AT_FDCWD -100
  31070. +#endif /* AT_FDCWD */
  31071. #include <bits/fcntl.h>
  31072. #include <bits/wordsize.h>
  31073. /* Pull in the arch specific type information */
  31074. @@ -42,7 +46,6 @@
  31075. #ifndef __ARCH_HAS_NO_SHARED__
  31076. #include <dl-syscall.h>
  31077. #include <dl-string.h>
  31078. -#include <dlfcn.h>
  31079. /* Now the ldso specific headers */
  31080. #include <dl-elf.h>
  31081. #ifdef __UCLIBC_HAS_TLS__
  31082. @@ -84,16 +87,15 @@
  31083. #else
  31084. #define _dl_trace_prelink 0
  31085. #endif
  31086. +#ifdef __DSBT__
  31087. +extern void **_dl_ldso_dsbt;
  31088. +#endif
  31089. #if defined(USE_TLS) && USE_TLS
  31090. extern void _dl_add_to_slotinfo (struct link_map *l);
  31091. extern void ** __attribute__ ((const)) _dl_initial_error_catch_tsd (void);
  31092. #endif
  31093. -#ifdef USE_TLS
  31094. -void _dl_add_to_slotinfo (struct link_map *l);
  31095. -void ** __attribute__ ((const)) _dl_initial_error_catch_tsd (void);
  31096. -#endif
  31097. #ifdef __SUPPORT_LD_DEBUG__
  31098. extern char *_dl_debug;
  31099. extern char *_dl_debug_symbols;
  31100. @@ -110,7 +112,8 @@
  31101. #else
  31102. # define __dl_debug_dprint(fmt, args...) do {} while (0)
  31103. # define _dl_if_debug_dprint(fmt, args...) do {} while (0)
  31104. -# define _dl_debug_file 2
  31105. +/* disabled on purpose, _dl_debug_file should be guarded by __SUPPORT_LD_DEBUG__
  31106. +# define _dl_debug_file 2*/
  31107. #endif /* __SUPPORT_LD_DEBUG__ */
  31108. #ifdef IS_IN_rtld
  31109. @@ -146,8 +149,19 @@
  31110. extern void _dl_free(void *);
  31111. extern char *_dl_getenv(const char *symbol, char **envp);
  31112. extern void _dl_unsetenv(const char *symbol, char **envp);
  31113. +#ifdef IS_IN_rtld
  31114. extern char *_dl_strdup(const char *string);
  31115. extern void _dl_dprintf(int, const char *, ...);
  31116. +#else
  31117. +# include <string.h>
  31118. +# define _dl_strdup strdup
  31119. +# include <stdio.h>
  31120. +# ifdef __USE_GNU
  31121. +# define _dl_dprintf dprintf
  31122. +# else
  31123. +# define _dl_dprintf(fd, fmt, args...) fprintf(stderr, fmt, ## args)
  31124. +# endif
  31125. +#endif
  31126. #ifndef DL_GET_READY_TO_RUN_EXTRA_PARMS
  31127. # define DL_GET_READY_TO_RUN_EXTRA_PARMS
  31128. @@ -168,4 +182,4 @@
  31129. #include <dl-defs.h>
  31130. #endif
  31131. -#endif /* _LDSO_H_ */
  31132. +#endif /* _LDSO_H */
  31133. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-debug.h uClibc/ldso/ldso/arc/dl-debug.h
  31134. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-debug.h 1970-01-01 01:00:00.000000000 +0100
  31135. +++ uClibc/ldso/ldso/arc/dl-debug.h 2014-02-03 12:32:56.000000000 +0100
  31136. @@ -0,0 +1,68 @@
  31137. +/*
  31138. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31139. + *
  31140. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31141. + */
  31142. +static const char *_dl_reltypes_tab[] =
  31143. +{
  31144. + "R_ARC_NONE", /* 0 */
  31145. + "R_ARC_8",
  31146. + "R_ARC_16",
  31147. + "R_ARC_24",
  31148. + "R_ARC_32",
  31149. + "R_ARC_B26", /* 5 */
  31150. + "R_ARC_B22_PCREL",
  31151. + "R_ARC_H30",
  31152. + "R_ARC_N8",
  31153. + "R_ARC_N16",
  31154. + "R_ARC_N24", /* 10 */
  31155. + "R_ARC_N32",
  31156. + "R_ARC_SDA",
  31157. + "R_ARC_SECTOFF",
  31158. + "R_ARC_S21H_PCREL",
  31159. + "R_ARC_S21W_PCREL", /* 15 */
  31160. + "R_ARC_S25H_PCREL",
  31161. + "R_ARC_S25W_PCREL",
  31162. + "R_ARC_SDA32",
  31163. + "R_ARC_SDA_LDST",
  31164. + "R_ARC_SDA_LDST1", /* 20 */
  31165. + "R_ARC_SDA_LDST2",
  31166. + "R_ARC_SDA16_LD",
  31167. + "R_ARC_SDA16_LD1",
  31168. + "R_ARC_SDA16_LD2",
  31169. + "R_ARC_S13_PCREL", /* 25 */
  31170. + "R_ARC_W",
  31171. + "R_ARC_32_ME",
  31172. + "R_ARC_N32_ME",
  31173. + "R_ARC_SECTOFF_ME",
  31174. + "R_ARC_SDA32_ME", /* 30 */
  31175. + "R_ARC_W_ME",
  31176. + "R_ARC_H30_ME",
  31177. + "R_ARC_SECTOFF_U8",
  31178. + "R_ARC_SECTOFF_S9",
  31179. + "R_AC_SECTOFF_U8", /* 35 */
  31180. + "R_AC_SECTOFF_U8_1",
  31181. + "R_AC_SECTOFF_U8_2",
  31182. + "R_AC_SECTOFF_S9",
  31183. + "R_AC_SECTOFF_S9_1",
  31184. + "R_AC_SECTOFF_S9_2", /* 40 */
  31185. + "R_ARC_SECTOFF_ME_1",
  31186. + "R_ARC_SECTOFF_ME_2",
  31187. + "R_ARC_SECTOFF_1",
  31188. + "R_ARC_SECTOFF_2",
  31189. + "", /* 45 */
  31190. + "",
  31191. + "",
  31192. + "",
  31193. + "",
  31194. + "R_ARC_PC32", /* 50 */
  31195. + "R_ARC_GOTPC32",
  31196. + "R_ARC_PLT32",
  31197. + "R_ARC_COPY",
  31198. + "R_ARC_GLOB_DAT",
  31199. + "R_ARC_JMP_SLOT", /* 55 */
  31200. + "R_ARC_RELATIVE",
  31201. + "R_ARC_GOTOFF",
  31202. + "R_ARC_GOTPC",
  31203. + "R_ARC_GOT32",
  31204. +};
  31205. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-startup.h uClibc/ldso/ldso/arc/dl-startup.h
  31206. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-startup.h 1970-01-01 01:00:00.000000000 +0100
  31207. +++ uClibc/ldso/ldso/arc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31208. @@ -0,0 +1,89 @@
  31209. +/*
  31210. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31211. + *
  31212. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31213. + */
  31214. +
  31215. +/*
  31216. + * vineetg: Refactoring/cleanup of loader entry point
  31217. + * Removed 6 useless insns
  31218. + * Joern Improved it even further:
  31219. + * -better insn scheduling
  31220. + * -no need for conditional code for _dl_skip_args
  31221. + * -use of assembler .&2 expressions vs. @gotpc refs (avoids need for GP)
  31222. + *
  31223. + * What this code does:
  31224. + * -ldso starts execution here when kernel returns from execve()
  31225. + * -calls into generic ldso entry point _dl_start( )
  31226. + * -optionally adjusts argc for executable if exec passed as cmd
  31227. + * -calls into app main with address of finaliser
  31228. + */
  31229. +__asm__(
  31230. + ".section .text \n"
  31231. + ".align 4 \n"
  31232. + ".global _start \n"
  31233. + ".hidden _start \n"
  31234. + ".type _start,@function \n"
  31235. +
  31236. + "_start: \n"
  31237. + " ; ldso entry point, returns app entry point \n"
  31238. + " bl.d _dl_start \n"
  31239. + " mov_s r0, sp ; pass ptr to aux vector tbl \n"
  31240. +
  31241. + " ; If ldso ran as cmd with executable file nm as arg \n"
  31242. + " ; skip the extra args calc by dl_start() \n"
  31243. + " ld_s r1, [sp] ; orig argc from aux-vec Tbl \n"
  31244. +#ifdef STAR_9000535888_FIXED
  31245. + " ld r12, [pcl, _dl_skip_args-.+(.&2)] \n"
  31246. +#else
  31247. + " add r12, pcl, _dl_skip_args-.+(.&2) \n"
  31248. + " ld r12, [r12] \n"
  31249. +#endif
  31250. +
  31251. + " add r2, pcl, _dl_fini-.+(.&2) ; finalizer \n"
  31252. +
  31253. + " add2 sp, sp, r12 ; discard argv entries from stack\n"
  31254. + " sub_s r1, r1, r12 ; adjusted argc, on stack \n"
  31255. + " st_s r1, [sp] \n"
  31256. +
  31257. + " j_s.d [r0] ; app entry point \n"
  31258. + " mov_s r0, r2 ; ptr to finalizer _dl_fini \n"
  31259. +
  31260. + ".size _start,.-_start \n"
  31261. + ".previous \n"
  31262. +);
  31263. +
  31264. +/*
  31265. + * Get a pointer to the argv array. On many platforms this can be just
  31266. + * the address if the first argument, on other platforms we need to
  31267. + * do something a little more subtle here.
  31268. + */
  31269. +#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long*) ARGS + 1)
  31270. +
  31271. +/*
  31272. + * Dynamic loader bootstrapping:
  31273. + * Since we don't modify text at runtime, these can only be data relos
  31274. + * (so safe to assume that they are word aligned).
  31275. + * And also they HAVE to be RELATIVE relos only
  31276. + * @RELP is the relo entry being processed
  31277. + * @REL is the pointer to the address we are relocating.
  31278. + * @SYMBOL is the symbol involved in the relocation
  31279. + * @LOAD is the load address.
  31280. + */
  31281. +
  31282. +#define PERFORM_BOOTSTRAP_RELOC(RELP,REL,SYMBOL,LOAD,SYMTAB) \
  31283. +do { \
  31284. + int type = ELF32_R_TYPE((RELP)->r_info); \
  31285. + if (likely(type == R_ARC_RELATIVE)) \
  31286. + *REL += (unsigned long) LOAD; \
  31287. + else \
  31288. + _dl_exit(1); \
  31289. +}while(0)
  31290. +
  31291. +/*
  31292. + * This will go away once we have DT_RELACOUNT
  31293. + */
  31294. +#define ARCH_NEEDS_BOOTSTRAP_RELOCS
  31295. +
  31296. +/* we dont need to spit out argc, argv etc for debugging */
  31297. +#define NO_EARLY_SEND_STDERR 1
  31298. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-syscalls.h uClibc/ldso/ldso/arc/dl-syscalls.h
  31299. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-syscalls.h 1970-01-01 01:00:00.000000000 +0100
  31300. +++ uClibc/ldso/ldso/arc/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  31301. @@ -0,0 +1,7 @@
  31302. +/*
  31303. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31304. + *
  31305. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31306. + */
  31307. +
  31308. +/* stub for arch-specific syscall issues */
  31309. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-sysdep.h uClibc/ldso/ldso/arc/dl-sysdep.h
  31310. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-sysdep.h 1970-01-01 01:00:00.000000000 +0100
  31311. +++ uClibc/ldso/ldso/arc/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31312. @@ -0,0 +1,150 @@
  31313. +/*
  31314. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31315. + *
  31316. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31317. + */
  31318. +
  31319. +#include "elf.h"
  31320. +
  31321. +/*
  31322. + * Define this if the system uses RELOCA.
  31323. + */
  31324. +#define ELF_USES_RELOCA
  31325. +
  31326. +/*
  31327. + * Dynamic Linking ABI for ARCompact ISA
  31328. + *
  31329. + * PLT
  31330. + * --------------------------------
  31331. + * | ld r11, [pcl, off-to-GOT[1] | 0 (20 bytes)
  31332. + * | | 4
  31333. + * plt0 | ld r10, [pcl, off-to-GOT[2] | 8
  31334. + * | | 12
  31335. + * | j [r10] | 16
  31336. + * --------------------------------
  31337. + * | Base address of GOT | 20
  31338. + * --------------------------------
  31339. + * | ld r12, [pcl, off-to-GOT[3] | 24 (12 bytes each)
  31340. + * plt1 | |
  31341. + * | j_s.d [r12] | 32
  31342. + * | mov_s r12, pcl | 34
  31343. + * --------------------------------
  31344. + * | | 36
  31345. + * ~ ~
  31346. + * ~ ~
  31347. + * | |
  31348. + * --------------------------------
  31349. + *
  31350. + * GOT
  31351. + * --------------
  31352. + * | [0] |
  31353. + * --------------
  31354. + * | [1] | Module info - setup by ldso
  31355. + * --------------
  31356. + * | [2] | resolver entry point
  31357. + * --------------
  31358. + * | [3] |
  31359. + * | ... | Runtime address for function symbols
  31360. + * | [f] |
  31361. + * --------------
  31362. + * | [f+1] |
  31363. + * | ... | Runtime address for data symbols
  31364. + * | [last] |
  31365. + * --------------
  31366. + */
  31367. +
  31368. +/*
  31369. + * Initialization sequence for a GOT.
  31370. + * Caller elf_resolve() seeds @GOT_BASE from DT_PLTGOT - which essentially is
  31371. + * pointer to first PLT entry. The actual GOT base is 5th word in PLT
  31372. + *
  31373. + */
  31374. +#define INIT_GOT(GOT_BASE,MODULE) \
  31375. +do { \
  31376. + unsigned long *__plt_base = (unsigned long *)GOT_BASE; \
  31377. + GOT_BASE = (unsigned long *)(__plt_base[5] + \
  31378. + (unsigned long)MODULE->loadaddr); \
  31379. + GOT_BASE[1] = (unsigned long) MODULE; \
  31380. + GOT_BASE[2] = (unsigned long) _dl_linux_resolve; \
  31381. +} while(0)
  31382. +
  31383. +/* Here we define the magic numbers that this dynamic loader should accept */
  31384. +#define MAGIC1 EM_ARCOMPACT
  31385. +#undef MAGIC2
  31386. +
  31387. +/* Used for error messages */
  31388. +#define ELF_TARGET "ARC"
  31389. +
  31390. +struct elf_resolve;
  31391. +extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt,
  31392. + unsigned int plt_pc);
  31393. +
  31394. +extern unsigned __udivmodsi4(unsigned, unsigned) attribute_hidden;
  31395. +
  31396. +#define do_rem(result, n, base) ((result) = \
  31397. + \
  31398. + __builtin_constant_p (base) ? (n) % (unsigned) (base) : \
  31399. + __extension__ ({ \
  31400. + register unsigned r1 __asm__ ("r1") = (base); \
  31401. + \
  31402. + __asm__("bl.d @__udivmodsi4` mov r0,%1" \
  31403. + : "=r" (r1) \
  31404. + : "r" (n), "r" (r1) \
  31405. + : "r0", "r2", "r3", "r4", "lp_count", "blink", "cc"); \
  31406. + \
  31407. + r1; \
  31408. + }) \
  31409. +)
  31410. +
  31411. +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
  31412. + PLT entries should not be allowed to define the value.
  31413. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
  31414. + of the main executable's symbols, as for a COPY reloc. */
  31415. +#define elf_machine_type_class(type) \
  31416. + ((((type) == R_ARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \
  31417. + | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY))
  31418. +
  31419. +/*
  31420. + * Get the runtime address of GOT[0]
  31421. + */
  31422. +static __always_inline Elf32_Addr elf_machine_dynamic(void)
  31423. +{
  31424. + Elf32_Addr dyn;
  31425. +
  31426. + __asm__("ld %0,[pcl,_DYNAMIC@gotpc]\n\t" : "=r" (dyn));
  31427. + return dyn;
  31428. +
  31429. +/*
  31430. + * Another way would have been to simply return GP, which due to some
  31431. + * PIC reference would be automatically setup by gcc in caller
  31432. + * register Elf32_Addr *got __asm__ ("gp"); return *got;
  31433. + */
  31434. +}
  31435. +
  31436. +/* Return the run-time load address of the shared object. */
  31437. +static __always_inline Elf32_Addr elf_machine_load_address(void)
  31438. +{
  31439. + /* To find the loadaddr we subtract the runtime addr of any symbol
  31440. + * say _dl_start from it's build-time addr.
  31441. + */
  31442. + Elf32_Addr addr, tmp;
  31443. + __asm__ (
  31444. + "ld %1, [pcl, _dl_start@gotpc] ;build addr of _dl_start \n"
  31445. + "add %0, pcl, _dl_start-.+(.&2) ;runtime addr of _dl_start \n"
  31446. + "sub %0, %0, %1 ;delta \n"
  31447. + : "=&r" (addr), "=r"(tmp)
  31448. + );
  31449. + return addr;
  31450. +}
  31451. +
  31452. +static __always_inline void
  31453. +elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
  31454. + Elf32_Word relative_count)
  31455. +{
  31456. + Elf32_Rel * rpnt = (void *) rel_addr;
  31457. + --rpnt;
  31458. + do {
  31459. + Elf32_Addr *const reloc_addr = (void *) (load_off + (++rpnt)->r_offset);
  31460. + *reloc_addr += load_off;
  31461. + } while (--relative_count);
  31462. +}
  31463. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/elfinterp.c uClibc/ldso/ldso/arc/elfinterp.c
  31464. --- uClibc-0.9.33.2/ldso/ldso/arc/elfinterp.c 1970-01-01 01:00:00.000000000 +0100
  31465. +++ uClibc/ldso/ldso/arc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31466. @@ -0,0 +1,279 @@
  31467. +/*
  31468. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31469. + *
  31470. + * Lots of code copied from ../i386/elfinterp.c, so:
  31471. + * Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
  31472. + * David Engel, Hongjiu Lu and Mitch D'Souza
  31473. + * Copyright (C) 2001-2002, Erik Andersen
  31474. + * All rights reserved.
  31475. + *
  31476. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31477. + */
  31478. +#include "ldso.h"
  31479. +
  31480. +#define ARC_PLT_SIZE 12
  31481. +
  31482. +unsigned long
  31483. +_dl_linux_resolver(struct elf_resolve *tpnt, unsigned int plt_pc)
  31484. +{
  31485. + ELF_RELOC *this_reloc, *rel_base;
  31486. + char *strtab, *symname, *new_addr;
  31487. + ElfW(Sym) *symtab;
  31488. + int symtab_index;
  31489. + unsigned int *got_addr;
  31490. + unsigned long plt_base;
  31491. + int plt_idx;
  31492. +
  31493. + /* start of .rela.plt */
  31494. + rel_base = (ELF_RELOC *)(tpnt->dynamic_info[DT_JMPREL]);
  31495. +
  31496. + /* starts of .plt (addr of PLT0) */
  31497. + plt_base = tpnt->dynamic_info[DT_PLTGOT];
  31498. +
  31499. + /*
  31500. + * compute the idx of the yet-unresolved PLT entry in .plt
  31501. + * Same idx will be used to find the relo entry in .rela.plt
  31502. + */
  31503. + plt_idx = (plt_pc - plt_base)/ARC_PLT_SIZE - 2; /* ignoring 2 dummy PLTs */
  31504. +
  31505. + this_reloc = rel_base + plt_idx;
  31506. +
  31507. + symtab_index = ELF_R_SYM(this_reloc->r_info);
  31508. + symtab = (ElfW(Sym) *)(intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
  31509. + strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]);
  31510. + symname= strtab + symtab[symtab_index].st_name;
  31511. +
  31512. + /* relo-offset to fixup, shd be a .got entry */
  31513. + got_addr = (unsigned int *)(this_reloc->r_offset + tpnt->loadaddr);
  31514. +
  31515. + /* Get the address of the GOT entry */
  31516. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt,
  31517. + ELF_RTYPE_CLASS_PLT, NULL);
  31518. +
  31519. + if (unlikely(!new_addr)) {
  31520. + _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname);
  31521. + _dl_exit(1);
  31522. + }
  31523. +
  31524. +
  31525. +#if defined __SUPPORT_LD_DEBUG__
  31526. + if (_dl_debug_bindings) {
  31527. + _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  31528. + if (_dl_debug_detail)
  31529. + _dl_dprintf(_dl_debug_file, "\n\tpatched %x ==> %pc @ %pl\n",
  31530. + *got_addr, new_addr, got_addr);
  31531. + }
  31532. +
  31533. + if (!_dl_debug_nofixups)
  31534. + *got_addr = (unsigned int)new_addr;
  31535. +#else
  31536. + /* Update the .got entry with the runtime address of symbol */
  31537. + *got_addr = (unsigned int)new_addr;
  31538. +#endif
  31539. +
  31540. + /*
  31541. + * Return the new addres, where the asm trampoline will jump to
  31542. + * after re-setting up the orig args
  31543. + */
  31544. + return (unsigned long) new_addr;
  31545. +}
  31546. +
  31547. +
  31548. +static int
  31549. +_dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  31550. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  31551. +{
  31552. + int reloc_type;
  31553. + int symtab_index;
  31554. + char *symname;
  31555. + unsigned long *reloc_addr;
  31556. + unsigned long symbol_addr;
  31557. +#if defined __SUPPORT_LD_DEBUG__
  31558. + unsigned long old_val = 0;
  31559. +#endif
  31560. + struct symbol_ref sym_ref;
  31561. +
  31562. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  31563. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  31564. + symtab_index = ELF_R_SYM(rpnt->r_info);
  31565. + symbol_addr = 0;
  31566. +
  31567. + sym_ref.sym = &symtab[symtab_index];
  31568. + sym_ref.tpnt = NULL;
  31569. +
  31570. +#if defined __SUPPORT_LD_DEBUG__
  31571. + if (reloc_addr)
  31572. + old_val = *reloc_addr;
  31573. +#endif
  31574. +
  31575. + if (symtab_index) {
  31576. + symname = strtab + symtab[symtab_index].st_name;
  31577. + symbol_addr = (unsigned long) _dl_find_hash(symname, scope, tpnt,
  31578. + elf_machine_type_class(reloc_type), &sym_ref);
  31579. +
  31580. + /*
  31581. + * We want to allow undefined references to weak symbols,
  31582. + * this might have been intentional. We should not be linking
  31583. + * local symbols here, so all bases should be covered.
  31584. + */
  31585. +
  31586. + if (unlikely(!symbol_addr
  31587. + && ELF_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) {
  31588. + /* Non-fatal if called from dlopen, hence different ret code */
  31589. + return 1;
  31590. + }
  31591. + } else if (reloc_type == R_ARC_RELATIVE ) {
  31592. + *reloc_addr += tpnt->loadaddr;
  31593. + goto log_entry;
  31594. + }
  31595. +
  31596. + switch (reloc_type) {
  31597. + case R_ARC_32:
  31598. + *reloc_addr += symbol_addr + rpnt->r_addend;
  31599. + break;
  31600. + case R_ARC_PC32:
  31601. + *reloc_addr += symbol_addr + rpnt->r_addend - (unsigned long) reloc_addr;
  31602. + break;
  31603. + case R_ARC_GLOB_DAT:
  31604. + case R_ARC_JMP_SLOT:
  31605. + *reloc_addr = symbol_addr;
  31606. + break;
  31607. + case R_ARC_COPY:
  31608. + _dl_memcpy((void *) reloc_addr,(void *) symbol_addr,
  31609. + symtab[symtab_index].st_size);
  31610. + break;
  31611. + default:
  31612. + return -1;
  31613. + }
  31614. +
  31615. +log_entry:
  31616. +#if defined __SUPPORT_LD_DEBUG__
  31617. + if (_dl_debug_detail)
  31618. + _dl_dprintf(_dl_debug_file,"\tpatched: %lx ==> %lx @ %pl: addend %x ",
  31619. + old_val, *reloc_addr, reloc_addr, rpnt->r_addend);
  31620. +#endif
  31621. +
  31622. + return 0;
  31623. +}
  31624. +
  31625. +static int
  31626. +_dl_do_lazy_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  31627. + ELF_RELOC *rpnt)
  31628. +{
  31629. + int reloc_type;
  31630. + unsigned long *reloc_addr;
  31631. +#if defined __SUPPORT_LD_DEBUG__
  31632. + unsigned long old_val;
  31633. +#endif
  31634. +
  31635. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  31636. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  31637. +
  31638. +#if defined __SUPPORT_LD_DEBUG__
  31639. + old_val = *reloc_addr;
  31640. +#endif
  31641. +
  31642. + switch (reloc_type) {
  31643. + case R_ARC_JMP_SLOT:
  31644. + *reloc_addr += tpnt->loadaddr;
  31645. + break;
  31646. + default:
  31647. + return -1;
  31648. + }
  31649. +
  31650. +#if defined __SUPPORT_LD_DEBUG__
  31651. + if (_dl_debug_reloc && _dl_debug_detail)
  31652. + _dl_dprintf(_dl_debug_file, "\tpatched: %lx ==> %lx @ %pl\n",
  31653. + old_val, *reloc_addr, reloc_addr);
  31654. +#endif
  31655. +
  31656. + return 0;
  31657. +}
  31658. +
  31659. +#define ___DO_LAZY 1
  31660. +#define ___DO_NOW 2
  31661. +
  31662. +static int _dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  31663. + unsigned long rel_addr, unsigned long rel_size, int type)
  31664. +{
  31665. + unsigned int i;
  31666. + char *strtab;
  31667. + ElfW(Sym) *symtab;
  31668. + ELF_RELOC *rpnt;
  31669. + int symtab_index;
  31670. + int res = 0;
  31671. +
  31672. + /* Now parse the relocation information */
  31673. + rpnt = (ELF_RELOC *)(intptr_t) (rel_addr);
  31674. + rel_size = rel_size / sizeof(ELF_RELOC);
  31675. +
  31676. + symtab = (ElfW(Sym) *)(intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
  31677. + strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]);
  31678. +
  31679. + for (i = 0; i < rel_size; i++, rpnt++) {
  31680. +
  31681. + symtab_index = ELF_R_SYM(rpnt->r_info);
  31682. +
  31683. + debug_sym(symtab,strtab,symtab_index);
  31684. + debug_reloc(symtab,strtab,rpnt);
  31685. +
  31686. + /* constant propagation subsumes the 'if' */
  31687. + if (type == ___DO_LAZY)
  31688. + res = _dl_do_lazy_reloc(tpnt, scope, rpnt);
  31689. + else
  31690. + res = _dl_do_reloc(tpnt, scope, rpnt, symtab, strtab);
  31691. +
  31692. + if (res != 0)
  31693. + break;
  31694. + }
  31695. +
  31696. + if (unlikely(res != 0)) {
  31697. + if (res < 0) {
  31698. + int reloc_type = ELF_R_TYPE(rpnt->r_info);
  31699. +#if defined __SUPPORT_LD_DEBUG__
  31700. + _dl_dprintf(2, "can't handle reloc type %s\n ",
  31701. + _dl_reltypes(reloc_type));
  31702. +#else
  31703. + _dl_dprintf(2, "can't handle reloc type %x\n",
  31704. + reloc_type);
  31705. +#endif
  31706. + _dl_exit(-res);
  31707. + } else {
  31708. + _dl_dprintf(2, "can't resolve symbol\n");
  31709. + /* Fall thru to return res */
  31710. + }
  31711. + }
  31712. +
  31713. + return res;
  31714. +}
  31715. +
  31716. +void
  31717. +_dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  31718. + unsigned long rel_addr,
  31719. + unsigned long rel_size)
  31720. +{
  31721. + /* This func is called for processing .rela.plt of loaded module(s)
  31722. + * The relo entries handled are JMP_SLOT type for fixing up .got slots
  31723. + * for external function calls.
  31724. + * This function doesn't resolve the slots: that is done lazily at
  31725. + * runtime. The build linker (at least thats what happens for ARC) had
  31726. + * pre-init the .got slots to point to PLT0. All that is done here is
  31727. + * to fix them up to point to load value of PLT0 (as opposed to the
  31728. + * build value).
  31729. + * On ARC, the loadaddr of dyn exec is zero, thus elfaddr == loadaddr
  31730. + * Thus there is no point in adding "0" to values and un-necessarily
  31731. + * stir up the caches and TLB.
  31732. + * For ldso processing busybox binary, this skips over 380 relo entries
  31733. + */
  31734. + if (rpnt->dyn->loadaddr != 0)
  31735. + _dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, ___DO_LAZY);
  31736. +}
  31737. +
  31738. +int
  31739. +_dl_parse_relocation_information(struct dyn_elf *rpnt,
  31740. + struct r_scope_elem *scope,
  31741. + unsigned long rel_addr,
  31742. + unsigned long rel_size)
  31743. +{
  31744. + return _dl_parse(rpnt->dyn, scope, rel_addr, rel_size, ___DO_NOW);
  31745. +}
  31746. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/resolve.S uClibc/ldso/ldso/arc/resolve.S
  31747. --- uClibc-0.9.33.2/ldso/ldso/arc/resolve.S 1970-01-01 01:00:00.000000000 +0100
  31748. +++ uClibc/ldso/ldso/arc/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31749. @@ -0,0 +1,57 @@
  31750. +/*
  31751. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31752. + *
  31753. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31754. + */
  31755. +
  31756. +#include <sysdep.h>
  31757. +#include <sys/syscall.h>
  31758. +
  31759. +; Save the registers which resolver could possibly clobber
  31760. +; r0-r9: args to the function - symbol being resolved
  31761. +; r10-r12 are already clobbered by PLTn, PLT0 thus neednot be saved
  31762. +
  31763. +.macro SAVE_CALLER_SAVED
  31764. + push_s r0
  31765. + push_s r1
  31766. + push_s r2
  31767. + push_s r3
  31768. + st.a r4, [sp, -4]
  31769. + st.a r5, [sp, -4]
  31770. + st.a r6, [sp, -4]
  31771. + st.a r7, [sp, -4]
  31772. + st.a r8, [sp, -4]
  31773. + st.a r9, [sp, -4]
  31774. + push_s blink
  31775. +.endm
  31776. +
  31777. +.macro RESTORE_CALLER_SAVED_BUT_R0
  31778. + ld.ab blink,[sp, 4]
  31779. + ld.ab r9, [sp, 4]
  31780. + ld.ab r8, [sp, 4]
  31781. + ld.ab r7, [sp, 4]
  31782. + ld.ab r6, [sp, 4]
  31783. + ld.ab r5, [sp, 4]
  31784. + ld.ab r4, [sp, 4]
  31785. + pop_s r3
  31786. + pop_s r2
  31787. + pop_s r1
  31788. +.endm
  31789. +
  31790. +; Upon entry, PLTn, which led us here, sets up the following regs
  31791. +; r11 = Module info (tpnt pointer as expected by resolver)
  31792. +; r12 = PC of the PLTn itself - needed by resolver to find
  31793. +; corresponding .rela.plt entry
  31794. +
  31795. +ENTRY(_dl_linux_resolve)
  31796. + ; args to func being resolved, which resolver might clobber
  31797. + SAVE_CALLER_SAVED
  31798. +
  31799. + mov_s r1, r12
  31800. + bl.d _dl_linux_resolver
  31801. + mov r0, r11
  31802. +
  31803. + RESTORE_CALLER_SAVED_BUT_R0
  31804. + j_s.d [r0] ; r0 has resolved function addr
  31805. + pop_s r0 ; restore first arg to resolved call
  31806. +END(_dl_linux_resolve)
  31807. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/aeabi_read_tp.S uClibc/ldso/ldso/arm/aeabi_read_tp.S
  31808. --- uClibc-0.9.33.2/ldso/ldso/arm/aeabi_read_tp.S 2012-05-15 09:20:09.000000000 +0200
  31809. +++ uClibc/ldso/ldso/arm/aeabi_read_tp.S 2014-02-03 12:32:56.000000000 +0100
  31810. @@ -29,9 +29,8 @@
  31811. Lesser General Public License for more details.
  31812. You should have received a copy of the GNU Lesser General Public
  31813. - License along with the GNU C Library; if not, write to the Free
  31814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  31815. - 02111-1307 USA. */
  31816. + License along with the GNU C Library; if not, see
  31817. + <http://www.gnu.org/licenses/>. */
  31818. #include <features.h>
  31819. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/dl-startup.h uClibc/ldso/ldso/arm/dl-startup.h
  31820. --- uClibc-0.9.33.2/ldso/ldso/arm/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31821. +++ uClibc/ldso/ldso/arm/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31822. @@ -14,6 +14,7 @@
  31823. " .text\n"
  31824. " .globl _start\n"
  31825. " .type _start,%function\n"
  31826. + " .hidden _start\n"
  31827. "_start:\n"
  31828. " @ at start time, all the args are on the stack\n"
  31829. " mov r0, sp\n"
  31830. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/dl-sysdep.h uClibc/ldso/ldso/arm/dl-sysdep.h
  31831. --- uClibc-0.9.33.2/ldso/ldso/arm/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  31832. +++ uClibc/ldso/ldso/arm/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31833. @@ -58,11 +58,6 @@
  31834. struct elf_resolve;
  31835. unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
  31836. -/* 4096 bytes alignment */
  31837. -#define PAGE_ALIGN 0xfffff000
  31838. -#define ADDR_ALIGN 0xfff
  31839. -#define OFFS_ALIGN 0x7ffff000
  31840. -
  31841. /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
  31842. TLS variable, so undefined references should not be allowed to
  31843. define the value.
  31844. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/elfinterp.c uClibc/ldso/ldso/arm/elfinterp.c
  31845. --- uClibc-0.9.33.2/ldso/ldso/arm/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31846. +++ uClibc/ldso/ldso/arm/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31847. @@ -77,9 +77,9 @@
  31848. _dl_exit(1);
  31849. }
  31850. #if defined (__SUPPORT_LD_DEBUG__)
  31851. -#if !defined __SUPPORT_LD_DEBUG_EARLY__
  31852. +# if !defined __SUPPORT_LD_DEBUG_EARLY__
  31853. if ((unsigned long) got_addr < 0x40000000)
  31854. -#endif
  31855. +# endif
  31856. {
  31857. if (_dl_debug_bindings)
  31858. {
  31859. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/resolve.S uClibc/ldso/ldso/arm/resolve.S
  31860. --- uClibc-0.9.33.2/ldso/ldso/arm/resolve.S 2012-05-15 09:20:09.000000000 +0200
  31861. +++ uClibc/ldso/ldso/arm/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31862. @@ -101,7 +101,7 @@
  31863. .text
  31864. .align 4 @ 16 byte boundary and there are 32 bytes below (arm case)
  31865. - #if !defined(__thumb__) || defined(__thumb2__)
  31866. +#if 1 /*(!defined(__thumb__) || defined __THUMB_INTERWORK__) || defined(__thumb2__)*/
  31867. .arm
  31868. .globl _dl_linux_resolve
  31869. .type _dl_linux_resolve,%function
  31870. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/thumb_atomics.S uClibc/ldso/ldso/arm/thumb_atomics.S
  31871. --- uClibc-0.9.33.2/ldso/ldso/arm/thumb_atomics.S 2012-05-15 09:20:09.000000000 +0200
  31872. +++ uClibc/ldso/ldso/arm/thumb_atomics.S 2014-02-03 12:32:56.000000000 +0100
  31873. @@ -29,9 +29,8 @@
  31874. Lesser General Public License for more details.
  31875. You should have received a copy of the GNU Lesser General Public
  31876. - License along with the GNU C Library; if not, write to the Free
  31877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  31878. - 02111-1307 USA. */
  31879. + License along with the GNU C Library; if not, see
  31880. + <http://www.gnu.org/licenses/>. */
  31881. #include <features.h>
  31882. diff -Nur uClibc-0.9.33.2/ldso/ldso/avr32/dl-startup.h uClibc/ldso/ldso/avr32/dl-startup.h
  31883. --- uClibc-0.9.33.2/ldso/ldso/avr32/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31884. +++ uClibc/ldso/ldso/avr32/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31885. @@ -12,6 +12,7 @@
  31886. __asm__(" .text\n"
  31887. " .global _start\n"
  31888. " .type _start,@function\n"
  31889. + " .hidden _start\n"
  31890. "_start:\n"
  31891. /* All arguments are on the stack initially */
  31892. " mov r12, sp\n"
  31893. diff -Nur uClibc-0.9.33.2/ldso/ldso/avr32/dl-sysdep.h uClibc/ldso/ldso/avr32/dl-sysdep.h
  31894. --- uClibc-0.9.33.2/ldso/ldso/avr32/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  31895. +++ uClibc/ldso/ldso/avr32/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31896. @@ -35,8 +35,6 @@
  31897. GOT_BASE[_i] += (unsigned long)MODULE->loadaddr; \
  31898. } while (0)
  31899. -#define do_rem(result, n, base) ((result) = (n) % (base))
  31900. -
  31901. /* Here we define the magic numbers that this dynamic loader should accept */
  31902. #define MAGIC1 EM_AVR32
  31903. #undef MAGIC2
  31904. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/dl-startup.h uClibc/ldso/ldso/bfin/dl-startup.h
  31905. --- uClibc-0.9.33.2/ldso/ldso/bfin/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31906. +++ uClibc/ldso/ldso/bfin/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31907. @@ -14,9 +14,8 @@
  31908. Library General Public License for more details.
  31909. You should have received a copy of the GNU Lesser General Public
  31910. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31911. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31912. -USA. */
  31913. +License along with uClibc; see the file COPYING.LIB. If not, see
  31914. +<http://www.gnu.org/licenses/>. */
  31915. /* Any assembly language/system dependent hacks needed to setup
  31916. * boot1.c so it will work as expected and cope with whatever platform
  31917. @@ -40,10 +39,7 @@
  31918. " .text\n"
  31919. " .global __start\n"
  31920. " .type __start,@function\n"
  31921. - /* Build system expects a "_start" for the entry point;
  31922. - provide it as it's free to do so with aliases. */
  31923. - " .set _start, __start\n"
  31924. - " .global _start\n"
  31925. + " .hidden __start\n"
  31926. "__start:\n"
  31927. " call .Lcall\n"
  31928. ".Lcall:\n"
  31929. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/dl-syscalls.h uClibc/ldso/ldso/bfin/dl-syscalls.h
  31930. --- uClibc-0.9.33.2/ldso/ldso/bfin/dl-syscalls.h 2012-05-15 09:20:09.000000000 +0200
  31931. +++ uClibc/ldso/ldso/bfin/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  31932. @@ -14,9 +14,8 @@
  31933. Library General Public License for more details.
  31934. You should have received a copy of the GNU Lesser General Public
  31935. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31936. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31937. -USA. */
  31938. +License along with uClibc; see the file COPYING.LIB. If not, see
  31939. +<http://www.gnu.org/licenses/>. */
  31940. #ifdef __NR_sram_alloc
  31941. #define __NR__dl_sram_alloc __NR_sram_alloc
  31942. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/elfinterp.c uClibc/ldso/ldso/bfin/elfinterp.c
  31943. --- uClibc-0.9.33.2/ldso/ldso/bfin/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31944. +++ uClibc/ldso/ldso/bfin/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31945. @@ -20,9 +20,8 @@
  31946. Library General Public License for more details.
  31947. You should have received a copy of the GNU Lesser General Public
  31948. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31949. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31950. -USA. */
  31951. +License along with uClibc; see the file COPYING.LIB. If not, see
  31952. +<http://www.gnu.org/licenses/>. */
  31953. #include <sys/cdefs.h> /* __attribute_used__ */
  31954. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/resolve.S uClibc/ldso/ldso/bfin/resolve.S
  31955. --- uClibc-0.9.33.2/ldso/ldso/bfin/resolve.S 2012-05-15 09:20:09.000000000 +0200
  31956. +++ uClibc/ldso/ldso/bfin/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31957. @@ -14,9 +14,8 @@
  31958. Library General Public License for more details.
  31959. You should have received a copy of the GNU Lesser General Public
  31960. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31961. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31962. -USA. */
  31963. +License along with uClibc; see the file COPYING.LIB. If not, see
  31964. +<http://www.gnu.org/licenses/>. */
  31965. /* The function below is tail-called by resolver stubs when a
  31966. lazily-bound function is called. It must preserve all
  31967. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/dl-startup.h uClibc/ldso/ldso/c6x/dl-startup.h
  31968. --- uClibc-0.9.33.2/ldso/ldso/c6x/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31969. +++ uClibc/ldso/ldso/c6x/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31970. @@ -6,10 +6,9 @@
  31971. *
  31972. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  31973. */
  31974. -
  31975. #undef DL_START
  31976. #define DL_START(X) \
  31977. -int \
  31978. +static void * __attribute_used__ \
  31979. _dl_start (unsigned placeholder, \
  31980. struct elf32_dsbt_loadmap *dl_boot_progmap, \
  31981. struct elf32_dsbt_loadmap *dl_boot_ldsomap, \
  31982. @@ -34,7 +33,6 @@
  31983. * B4 --> executable loadmap address
  31984. * A6 --> interpreter loadmap address
  31985. * B6 --> dynamic section address
  31986. - * B14 --> our DP setup by kernel
  31987. *
  31988. * NB: DSBT index is always 0 for the executable
  31989. * and 1 for the interpreter
  31990. @@ -42,7 +40,76 @@
  31991. __asm__(" .text\n"
  31992. ".globl _start\n"
  31993. + ".hidden _start\n"
  31994. "_start:\n"
  31995. + /* Find interpreter DSBT base in dynamic section */
  31996. + " MV .S2 B6,B2\n"
  31997. + " || ADD .D1X B6,4,A2\n"
  31998. + " LDW .D2T2 *B2++[2],B0\n"
  31999. + " || LDW .D1T1 *A2++[2],A0\n"
  32000. + " MVKL .S2 " __stringify(DT_C6000_DSBT_BASE) ",B7\n"
  32001. + " MVKH .S2 " __stringify(DT_C6000_DSBT_BASE) ",B7\n"
  32002. + " NOP\n"
  32003. + " NOP\n"
  32004. + /*
  32005. + * B0 now holds dynamic tag and A0 holds tag value.
  32006. + * Loop through looking for DSBT base tag
  32007. + */
  32008. + "0:\n"
  32009. + " [B0] CMPEQ .L2 B0,B7,B1\n"
  32010. + " || [!B0] MVK .S2 1,B1\n"
  32011. + " [!B1] BNOP .S1 0b,5\n"
  32012. + " ||[!B1] LDW .D2T2 *B2++[2],B0\n"
  32013. + " ||[!B1] LDW .D1T1 *A2++[2],A0\n"
  32014. + /*
  32015. + * DSBT base in A0 needs to be relocated.
  32016. + * Search through our loadmap to find where it got loaded.
  32017. + *
  32018. + * struct elf32_dsbt_loadmap {
  32019. + * Elf32_Half version;
  32020. + * Elf32_Half nsegs;
  32021. + * struct {
  32022. + * Elf32_Addr addr;
  32023. + * Elf32_Addr p_vaddr;
  32024. + * Elf32_Word p_memsz;
  32025. + * } segments[];
  32026. + * }
  32027. + *
  32028. + */
  32029. + " MV .S1 A6,A1\n"
  32030. + " [!A1] MV .S1X B4,A1\n"
  32031. + " ADD .D1 A1,2,A3\n"
  32032. + " LDHU .D1T2 *A3++[1],B0\n" /* nsegs */
  32033. + " LDW .D1T1 *A3++[1],A10\n" /* addr */
  32034. + " LDW .D1T1 *A3++[1],A11\n" /* p_vaddr */
  32035. + " LDW .D1T1 *A3++[1],A12\n" /* p_memsz */
  32036. + " NOP\n"
  32037. + " NOP\n"
  32038. + /*
  32039. + * Here we have:
  32040. + * B0 -> number of segments to search.
  32041. + * A3 -> pointer to next segment to check
  32042. + * A10 -> segment load address
  32043. + * A11 -> ELF segment virt address
  32044. + * A12 -> ELF segment size
  32045. + */
  32046. + "0:\n"
  32047. + " [!B0] B .S2 0f\n"
  32048. + " SUB .D2 B0,1,B0\n"
  32049. + " CMPLTU .L1 A0,A11,A13\n"
  32050. + " || SUB .S1 A12,1,A12\n"
  32051. + " ADD .D1 A11,A12,A12\n"
  32052. + " CMPGTU .L1 A0,A12,A14\n"
  32053. + " OR .L1 A13,A14,A2\n"
  32054. + " [A2] B .S2 0b\n"
  32055. + " || [!A2] SUB .L1 A0,A11,A0\n"
  32056. + " [B0] LDW .D1T1 *A3++[1],A10\n" /* addr */
  32057. + " || [!A2] ADD .L1 A0,A10,A0\n"
  32058. + " [B0] LDW .D1T1 *A3++[1],A11\n" /* p_vaddr */
  32059. + " [B0] LDW .D1T1 *A3++[1],A12\n" /* p_memsz */
  32060. + " MV .S2X A0,B14\n"
  32061. + " NOP\n"
  32062. + "0:\n"
  32063. " B .S2 _dl_start\n"
  32064. " STW .D2T2 B14, *+B14[1]\n"
  32065. " ADD .D1X B15,8,A8\n"
  32066. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/dl-sysdep.h uClibc/ldso/ldso/c6x/dl-sysdep.h
  32067. --- uClibc-0.9.33.2/ldso/ldso/c6x/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  32068. +++ uClibc/ldso/ldso/c6x/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32069. @@ -52,13 +52,13 @@
  32070. struct funcdesc_ht;
  32071. struct elf32_dsbt_loadaddr;
  32072. -/* We must force strings used early in the bootstrap into the text
  32073. - segment (const data), such that they are referenced relative to
  32074. - the DP register rather than through the GOT which will not have
  32075. - been relocated when these are used. */
  32076. +/* Current toolchains access constant strings via unrelocated GOT
  32077. + entries. Fortunately, we have enough in place to just call the
  32078. + relocation function early on. */
  32079. #undef SEND_EARLY_STDERR
  32080. #define SEND_EARLY_STDERR(S) \
  32081. - do { static char __s[] = (S); SEND_STDERR (__s); } while (0)
  32082. + do { char *__p = __reloc_pointer((S), dl_boot_ldsomap?:dl_boot_progmap);\
  32083. + SEND_STDERR (__p); } while (0)
  32084. #define DL_LOADADDR_TYPE struct elf32_dsbt_loadaddr
  32085. @@ -114,7 +114,7 @@
  32086. (__dl_loadaddr_unmap ((LIB)->loadaddr))
  32087. #define DL_LOADADDR_BASE(LOADADDR) \
  32088. - ((LOADADDR).map->dsbt_table)
  32089. + ((LOADADDR).map)
  32090. #define DL_ADDR_IN_LOADADDR(ADDR, TPNT, TFROM) \
  32091. (! (TFROM) && __dl_addr_in_loadaddr ((void*)(ADDR), (TPNT)->loadaddr))
  32092. @@ -150,18 +150,28 @@
  32093. /*
  32094. - * Compute the GOT address.
  32095. - * Also setup program and interpreter DSBT table entries.
  32096. + * C6X doesn't really need the GOT here.
  32097. + * The GOT is placed just past the DSBT table, so we could find it by
  32098. + * using the DSBT register + table size found in the dynamic section.
  32099. + *
  32100. + * do { \
  32101. + * unsigned long *ldso_dsbt; \
  32102. + * ElfW(Dyn) *d = dl_boot_ldso_dyn_pointer; \
  32103. + * while (d->d_tag != DT_NULL) { \
  32104. + * if (d->d_tag == DT_C6000_DSBT_SIZE) { \
  32105. + * __asm__ (" MV .S2 B14,%0\n" \
  32106. + * : "=b" (ldso_dsbt)); \
  32107. + * (GOT) = ldso_dsbt + d->d_un.d_val; \
  32108. + * break; \
  32109. + * } \
  32110. + * d++; \
  32111. + * } \
  32112. + * } while(0)
  32113. + *
  32114. + * Instead, just point it to the DSBT table to avoid unused variable warning.
  32115. */
  32116. #define DL_BOOT_COMPUTE_GOT(GOT) \
  32117. - do { \
  32118. - unsigned long *ldso_dsbt, *prog_dsbt; \
  32119. - ldso_dsbt = dl_boot_ldsomap->dsbt_table; \
  32120. - prog_dsbt = dl_boot_progmap->dsbt_table; \
  32121. - ldso_dsbt[0] = prog_dsbt[0] = (unsigned long)prog_dsbt; \
  32122. - ldso_dsbt[1] = prog_dsbt[1] = (unsigned long)ldso_dsbt; \
  32123. - (GOT) = ldso_dsbt + dl_boot_ldsomap->dsbt_size; \
  32124. - } while(0)
  32125. + __asm__ (" MV .S2 B14,%0\n" : "=b" (GOT))
  32126. #define DL_BOOT_COMPUTE_DYN(dpnt, got, load_addr) \
  32127. ((dpnt) = dl_boot_ldso_dyn_pointer)
  32128. @@ -186,12 +196,9 @@
  32129. # undef __USE_GNU
  32130. #endif
  32131. -static __always_inline Elf32_Addr
  32132. -elf_machine_load_address (void)
  32133. -{
  32134. - /* this is never an issue on DSBT systems */
  32135. - return 0;
  32136. -}
  32137. +/* we need this for __LDSO_STANDALONE_SUPPORT__ */
  32138. +#define elf_machine_load_address() \
  32139. + (dl_boot_ldsomap ?: dl_boot_progmap)->segs[0].addr
  32140. static __always_inline void
  32141. elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
  32142. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/elfinterp.c uClibc/ldso/ldso/c6x/elfinterp.c
  32143. --- uClibc-0.9.33.2/ldso/ldso/c6x/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32144. +++ uClibc/ldso/ldso/c6x/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32145. @@ -69,14 +69,12 @@
  32146. got_addr = (char **) DL_RELOC_ADDR(tpnt->loadaddr, this_reloc->r_offset);
  32147. /* Get the address to be used to fill in the GOT entry. */
  32148. - new_addr = _dl_find_hash(symname, tpnt->symbol_scope, tpnt,
  32149. - ELF_RTYPE_CLASS_PLT, NULL);
  32150. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT, NULL);
  32151. if (unlikely(!new_addr)) {
  32152. _dl_dprintf(2, "%s: can't resolve symbol '%s' in lib '%s'.\n", _dl_progname, symname, tpnt->libname);
  32153. _dl_exit(1);
  32154. }
  32155. -
  32156. #if defined (__SUPPORT_LD_DEBUG__)
  32157. if (_dl_debug_bindings) {
  32158. _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  32159. @@ -96,9 +94,9 @@
  32160. }
  32161. static int
  32162. -_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
  32163. +_dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32164. unsigned long rel_addr, unsigned long rel_size,
  32165. - int (*reloc_fnc) (struct elf_resolve *tpnt, struct dyn_elf *scope,
  32166. + int (*reloc_fnc) (struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32167. ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab))
  32168. {
  32169. unsigned int i;
  32170. @@ -148,7 +146,7 @@
  32171. }
  32172. static int
  32173. -_dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
  32174. +_dl_do_reloc (struct elf_resolve *tpnt,struct r_scope_elem *scope,
  32175. ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  32176. {
  32177. int reloc_type;
  32178. @@ -157,7 +155,9 @@
  32179. unsigned long *reloc_addr;
  32180. unsigned long symbol_addr, sym_val;
  32181. long reloc_addend;
  32182. - unsigned long old_val, new_val;
  32183. + unsigned long old_val, new_val = 0;
  32184. + struct symbol_ref sym_ref;
  32185. + struct elf_resolve *symbol_tpnt;
  32186. reloc_addr = (unsigned long *)(intptr_t)
  32187. DL_RELOC_ADDR (tpnt->loadaddr, rpnt->r_offset);
  32188. @@ -167,14 +167,17 @@
  32189. symtab_index = ELF_R_SYM(rpnt->r_info);
  32190. symbol_addr = 0;
  32191. symname = strtab + symtab[symtab_index].st_name;
  32192. + sym_ref.sym = &symtab[symtab_index];
  32193. + sym_ref.tpnt = NULL;
  32194. if (ELF_ST_BIND (symtab[symtab_index].st_info) == STB_LOCAL) {
  32195. symbol_addr = (unsigned long)
  32196. DL_RELOC_ADDR (tpnt->loadaddr, symtab[symtab_index].st_value);
  32197. + symbol_tpnt = tpnt;
  32198. } else {
  32199. - symbol_addr = (unsigned long) _dl_find_hash(strtab + symtab[symtab_index].st_name,
  32200. - scope, tpnt, elf_machine_type_class(reloc_type),
  32201. - NULL);
  32202. + symbol_addr = (unsigned long) _dl_find_hash(symname,
  32203. + scope, NULL, elf_machine_type_class(reloc_type),
  32204. + &sym_ref);
  32205. /*
  32206. * We want to allow undefined references to weak symbols - this might
  32207. * have been intentional. We should not be linking local symbols
  32208. @@ -186,6 +189,7 @@
  32209. _dl_progname, strtab + symtab[symtab_index].st_name);
  32210. _dl_exit (1);
  32211. }
  32212. + symbol_tpnt = sym_ref.tpnt;
  32213. }
  32214. old_val = *reloc_addr;
  32215. sym_val = symbol_addr + reloc_addend;
  32216. @@ -199,7 +203,7 @@
  32217. *reloc_addr = sym_val;
  32218. break;
  32219. case R_C6000_DSBT_INDEX:
  32220. - new_val = (old_val & ~0x007fff00) | ((tpnt->loadaddr.map->dsbt_index & 0x7fff) << 8);
  32221. + new_val = (old_val & ~0x007fff00) | ((symbol_tpnt->dsbt_index & 0x7fff) << 8);
  32222. *reloc_addr = new_val;
  32223. break;
  32224. case R_C6000_ABS_L16:
  32225. @@ -242,7 +246,7 @@
  32226. static int
  32227. _dl_do_lazy_reloc (struct elf_resolve *tpnt,
  32228. - struct dyn_elf *scope attribute_unused,
  32229. + struct r_scope_elem *scope attribute_unused,
  32230. ELF_RELOC *rpnt, ElfW(Sym) *symtab attribute_unused,
  32231. char *strtab attribute_unused)
  32232. {
  32233. @@ -283,9 +287,9 @@
  32234. int
  32235. _dl_parse_relocation_information
  32236. -(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size)
  32237. +(struct dyn_elf *rpnt, struct r_scope_elem *scope, unsigned long rel_addr, unsigned long rel_size)
  32238. {
  32239. - return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size, _dl_do_reloc);
  32240. + return _dl_parse(rpnt->dyn, scope, rel_addr, rel_size, _dl_do_reloc);
  32241. }
  32242. /* We don't have copy relocs. */
  32243. diff -Nur uClibc-0.9.33.2/ldso/ldso/cris/dl-startup.h uClibc/ldso/ldso/cris/dl-startup.h
  32244. --- uClibc-0.9.33.2/ldso/ldso/cris/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32245. +++ uClibc/ldso/ldso/cris/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32246. @@ -10,6 +10,7 @@
  32247. " .text\n" \
  32248. " .globl _start\n" \
  32249. " .type _start,@function\n" \
  32250. +" .hidden _start\n" \
  32251. "_start:\n" \
  32252. " move.d $sp,$r10\n" \
  32253. " lapc _dl_start,$r9\n" \
  32254. @@ -28,6 +29,7 @@
  32255. " .text\n" \
  32256. " .globl _start\n" \
  32257. " .type _start,@function\n" \
  32258. +" .hidden _start\n" \
  32259. "_start:\n" \
  32260. " move.d $sp,$r10\n" \
  32261. " move.d $pc,$r9\n" \
  32262. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-elf.c uClibc/ldso/ldso/dl-elf.c
  32263. --- uClibc-0.9.33.2/ldso/ldso/dl-elf.c 2012-05-15 09:20:09.000000000 +0200
  32264. +++ uClibc/ldso/ldso/dl-elf.c 2014-02-03 12:32:56.000000000 +0100
  32265. @@ -174,8 +174,11 @@
  32266. _dl_strcpy(mylibname, "."); /* Assume current dir if empty path */
  32267. _dl_strcat(mylibname, "/");
  32268. _dl_strcat(mylibname, name);
  32269. - if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL)
  32270. - return tpnt;
  32271. +#ifdef __LDSO_SAFE_RUNPATH__
  32272. + if (*mylibname == '/')
  32273. +#endif
  32274. + if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL)
  32275. + return tpnt;
  32276. path_n = path+1;
  32277. }
  32278. path++;
  32279. @@ -500,7 +503,7 @@
  32280. return NULL;
  32281. }
  32282. header = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE,
  32283. - MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0);
  32284. + MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZED, -1, 0);
  32285. if (_dl_mmap_check_error(header)) {
  32286. _dl_dprintf(2, "%s:%i: can't map '%s'\n", _dl_progname, __LINE__, libname);
  32287. _dl_internal_error_number = LD_ERROR_MMAP_FAILED;
  32288. @@ -739,7 +742,7 @@
  32289. }
  32290. }
  32291. #else
  32292. - _dl_dprintf(_dl_debug_file, "Can't modify %s's text section."
  32293. + _dl_dprintf(2, "Can't modify %s's text section."
  32294. " Use GCC option -fPIC for shared objects, please.\n",
  32295. libname);
  32296. _dl_exit(1);
  32297. @@ -791,7 +794,7 @@
  32298. #endif
  32299. {
  32300. # ifdef __SUPPORT_LD_DEBUG_EARLY__
  32301. - unsigned int tmp = (unsigned int) tpnt->l_tls_initimage;
  32302. + char *tmp = (char *) tpnt->l_tls_initimage;
  32303. tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
  32304. _dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n", tmp, tpnt->l_tls_initimage, tpnt->l_tls_initimage_size);
  32305. tmp = 0;
  32306. @@ -851,10 +854,15 @@
  32307. /* Handle DSBT initialization */
  32308. {
  32309. struct elf_resolve *t, *ref;
  32310. - int idx = tpnt->loadaddr.map->dsbt_index;
  32311. - unsigned *dsbt = tpnt->loadaddr.map->dsbt_table;
  32312. + int idx = tpnt->dsbt_index;
  32313. + void **dsbt = tpnt->dsbt_table;
  32314. - if (idx == 0) {
  32315. + /*
  32316. + * It is okay (required actually) to have zero idx for an executable.
  32317. + * This is the case when running ldso standalone and the program
  32318. + * is being mapped in via _dl_load_shared_library().
  32319. + */
  32320. + if (idx == 0 && tpnt->libtype != elf_executable) {
  32321. if (!dynamic_info[DT_TEXTREL]) {
  32322. /* This DSO has not been assigned an index. */
  32323. _dl_dprintf(2, "%s: '%s' is missing a dsbt index assignment!\n",
  32324. @@ -869,9 +877,9 @@
  32325. break;
  32326. }
  32327. }
  32328. - idx = tpnt->loadaddr.map->dsbt_size;
  32329. + idx = tpnt->dsbt_size;
  32330. while (idx-- > 0)
  32331. - if (!ref || ref->loadaddr.map->dsbt_table[idx] == NULL)
  32332. + if (!ref || ref->dsbt_table[idx] == NULL)
  32333. break;
  32334. if (idx <= 0) {
  32335. _dl_dprintf(2, "%s: '%s' caused DSBT table overflow!\n",
  32336. @@ -880,43 +888,36 @@
  32337. }
  32338. _dl_if_debug_dprint("\n\tfile='%s'; assigned index %d\n",
  32339. libname, idx);
  32340. - tpnt->loadaddr.map->dsbt_index = idx;
  32341. + tpnt->dsbt_index = idx;
  32342. + }
  32343. + /* make sure index is not already used */
  32344. + if (_dl_ldso_dsbt[idx]) {
  32345. + struct elf_resolve *dup;
  32346. + const char *dup_name;
  32347. +
  32348. + for (dup = _dl_loaded_modules; dup; dup = dup->next)
  32349. + if (dup != tpnt && dup->dsbt_index == idx)
  32350. + break;
  32351. + if (dup)
  32352. + dup_name = dup->libname;
  32353. + else if (idx == 1)
  32354. + dup_name = "runtime linker";
  32355. + else
  32356. + dup_name = "unknown library";
  32357. + _dl_dprintf(2, "%s: '%s' dsbt index %d already used by %s!\n",
  32358. + _dl_progname, libname, idx, dup_name);
  32359. + _dl_exit(1);
  32360. }
  32361. /*
  32362. * Setup dsbt slot for this module in dsbt of all modules.
  32363. */
  32364. - ref = NULL;
  32365. - for (t = _dl_loaded_modules; t; t = t->next) {
  32366. - /* find a dsbt table from another module */
  32367. - if (ref == NULL && t != tpnt) {
  32368. - ref = t;
  32369. -
  32370. - /* make sure index is not already used */
  32371. - if (t->loadaddr.map->dsbt_table[idx]) {
  32372. - struct elf_resolve *dup;
  32373. - char *dup_name;
  32374. -
  32375. - for (dup = _dl_loaded_modules; dup; dup = dup->next)
  32376. - if (dup != tpnt && dup->loadaddr.map->dsbt_index == idx)
  32377. - break;
  32378. - if (dup)
  32379. - dup_name = dup->libname;
  32380. - else if (idx == 1)
  32381. - dup_name = "runtime linker";
  32382. - else
  32383. - dup_name = "unknown library";
  32384. - _dl_dprintf(2, "%s: '%s' dsbt index %d already used by %s!\n",
  32385. - _dl_progname, libname, idx, dup_name);
  32386. - _dl_exit(1);
  32387. - }
  32388. - }
  32389. - t->loadaddr.map->dsbt_table[idx] = (unsigned)dsbt;
  32390. - }
  32391. - if (ref)
  32392. - _dl_memcpy(dsbt, ref->loadaddr.map->dsbt_table,
  32393. - tpnt->loadaddr.map->dsbt_size * sizeof(unsigned *));
  32394. + for (t = _dl_loaded_modules; t; t = t->next)
  32395. + t->dsbt_table[idx] = dsbt;
  32396. + _dl_ldso_dsbt[idx] = dsbt;
  32397. + _dl_memcpy(dsbt, _dl_ldso_dsbt,
  32398. + tpnt->dsbt_size * sizeof(tpnt->dsbt_table[0]));
  32399. }
  32400. #endif
  32401. _dl_if_debug_dprint("\n\tfile='%s'; generating link map\n", libname);
  32402. @@ -1006,6 +1007,7 @@
  32403. return goof;
  32404. }
  32405. +#ifdef IS_IN_rtld
  32406. /* Minimal printf which handles only %s, %d, and %x */
  32407. void _dl_dprintf(int fd, const char *fmt, ...)
  32408. {
  32409. @@ -1071,7 +1073,7 @@
  32410. break;
  32411. }
  32412. case 'x':
  32413. - case 'X':
  32414. + case 'p':
  32415. {
  32416. char tmp[22];
  32417. #if __WORDSIZE > 32
  32418. @@ -1108,6 +1110,7 @@
  32419. _dl_strcpy(retval, string);
  32420. return retval;
  32421. }
  32422. +#endif
  32423. unsigned int _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[],
  32424. void *debug_addr, DL_LOADADDR_TYPE load_off)
  32425. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-hash.c uClibc/ldso/ldso/dl-hash.c
  32426. --- uClibc-0.9.33.2/ldso/ldso/dl-hash.c 2012-05-15 09:20:09.000000000 +0200
  32427. +++ uClibc/ldso/ldso/dl-hash.c 2014-02-03 12:32:56.000000000 +0100
  32428. @@ -115,6 +115,15 @@
  32429. tpnt->dynamic_addr = (ElfW(Dyn) *)dynamic_addr;
  32430. tpnt->libtype = loaded_file;
  32431. +#ifdef __DSBT__
  32432. + if (dynamic_info[DT_DSBT_BASE_IDX] != 0)
  32433. + tpnt->dsbt_table = (void *)dynamic_info[DT_DSBT_BASE_IDX];
  32434. + if (dynamic_info[DT_DSBT_SIZE_IDX] != 0)
  32435. + tpnt->dsbt_size = dynamic_info[DT_DSBT_SIZE_IDX];
  32436. + if (dynamic_info[DT_DSBT_INDEX_IDX] != 0)
  32437. + tpnt->dsbt_index = dynamic_info[DT_DSBT_INDEX_IDX];
  32438. +#endif /* __DSBT__ */
  32439. +
  32440. #ifdef __LDSO_GNU_HASH_SUPPORT__
  32441. if (dynamic_info[DT_GNU_HASH_IDX] != 0) {
  32442. Elf32_Word *hash32 = (Elf_Symndx*)dynamic_info[DT_GNU_HASH_IDX];
  32443. @@ -355,7 +364,6 @@
  32444. #if defined(USE_TLS) && USE_TLS
  32445. if (ELF_ST_TYPE(sym->st_info) == STT_TLS) {
  32446. _dl_assert(sym_ref != NULL);
  32447. - sym_ref->tpnt = tpnt;
  32448. return (char *)sym->st_value;
  32449. }
  32450. #endif
  32451. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-tls.c uClibc/ldso/ldso/dl-tls.c
  32452. --- uClibc-0.9.33.2/ldso/ldso/dl-tls.c 2012-05-15 09:20:09.000000000 +0200
  32453. +++ uClibc/ldso/ldso/dl-tls.c 2014-02-03 12:32:56.000000000 +0100
  32454. @@ -922,8 +922,7 @@
  32455. generation. */
  32456. ++_dl_tls_generation;
  32457. - _dl_dprintf (_dl_debug_file,
  32458. - "cannot create TLS data structures: ABORT\n");
  32459. + _dl_dprintf(2, "cannot create TLS data structures: ABORT\n");
  32460. _dl_exit (127);
  32461. }
  32462. diff -Nur uClibc-0.9.33.2/ldso/ldso/i386/dl-startup.h uClibc/ldso/ldso/i386/dl-startup.h
  32463. --- uClibc-0.9.33.2/ldso/ldso/i386/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32464. +++ uClibc/ldso/ldso/i386/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32465. @@ -7,6 +7,7 @@
  32466. " .text\n"
  32467. " .globl _start\n"
  32468. " .type _start,@function\n"
  32469. + " .hidden _start\n"
  32470. "_start:\n"
  32471. " call _dl_start\n"
  32472. " # Save the user entry point address in %edi.\n"
  32473. diff -Nur uClibc-0.9.33.2/ldso/ldso/ldso.c uClibc/ldso/ldso/ldso.c
  32474. --- uClibc-0.9.33.2/ldso/ldso/ldso.c 2012-05-15 09:20:09.000000000 +0200
  32475. +++ uClibc/ldso/ldso/ldso.c 2014-02-03 12:32:56.000000000 +0100
  32476. @@ -64,7 +64,7 @@
  32477. bool _dl_verbose = true; /* On by default */
  32478. bool prelinked = false;
  32479. #endif
  32480. -static int _dl_secure = 1; /* Are we dealing with setuid stuff? */
  32481. +int _dl_secure = 1; /* Are we dealing with setuid stuff? */
  32482. #ifdef __SUPPORT_LD_DEBUG__
  32483. char *_dl_debug = NULL;
  32484. @@ -77,17 +77,11 @@
  32485. int _dl_debug_file = 2;
  32486. #endif
  32487. -#if defined (__LDSO_STANDALONE_SUPPORT__) && defined (__sh__)
  32488. -/* Not hidden, needed for standalone execution. */
  32489. -/*
  32490. - * FIXME: align dl_start for SH to other archs so that we can keep this symbol
  32491. - * hidden and we don't need to handle in __uClibc_main
  32492. - */
  32493. +#ifdef __DSBT__
  32494. +void **_dl_ldso_dsbt = NULL;
  32495. +#endif
  32496. -unsigned long _dl_skip_args = 0;
  32497. -#else
  32498. unsigned long attribute_hidden _dl_skip_args = 0;
  32499. -#endif
  32500. const char *_dl_progname = UCLIBC_LDSO; /* The name of the executable being run */
  32501. #include "dl-startup.c"
  32502. @@ -245,9 +239,9 @@
  32503. _dl_debug_early("mmapping more memory\n");
  32504. _dl_mmap_zero = _dl_malloc_addr = _dl_mmap((void *) 0, rounded_size,
  32505. - PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0);
  32506. + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZED, -1, 0);
  32507. if (_dl_mmap_check_error(_dl_mmap_zero)) {
  32508. - _dl_dprintf(_dl_debug_file, "%s: mmap of a spare page failed!\n", _dl_progname);
  32509. + _dl_dprintf(2, "%s: mmap of a spare page failed!\n", _dl_progname);
  32510. _dl_exit(20);
  32511. }
  32512. }
  32513. @@ -464,9 +458,14 @@
  32514. _dl_progname = argv[0];
  32515. }
  32516. +#ifdef __DSBT__
  32517. + _dl_ldso_dsbt = (void *)tpnt->dynamic_info[DT_DSBT_BASE_IDX];
  32518. + _dl_ldso_dsbt[tpnt->dynamic_info[DT_DSBT_INDEX_IDX]] = _dl_ldso_dsbt;
  32519. +#endif
  32520. +
  32521. #ifndef __LDSO_STANDALONE_SUPPORT__
  32522. if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) {
  32523. - _dl_dprintf(_dl_debug_file, "Standalone execution is not enabled\n");
  32524. + _dl_dprintf(2, "Standalone execution is not enabled\n");
  32525. _dl_exit(1);
  32526. }
  32527. #endif
  32528. @@ -504,15 +503,15 @@
  32529. const char *nextp;
  32530. _dl_secure = 1;
  32531. +#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
  32532. + _dl_preload = _dl_getenv("LD_PRELOAD", envp);
  32533. +#endif
  32534. nextp = unsecure_envvars;
  32535. do {
  32536. _dl_unsetenv (nextp, envp);
  32537. /* We could use rawmemchr but this need not be fast. */
  32538. nextp = _dl_strchr(nextp, '\0') + 1;
  32539. } while (*nextp != '\0');
  32540. -#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
  32541. - _dl_preload = NULL;
  32542. -#endif
  32543. #ifdef __LDSO_LD_LIBRARY_PATH__
  32544. _dl_library_path = NULL;
  32545. #endif
  32546. @@ -580,7 +579,7 @@
  32547. */
  32548. app_tpnt = _dl_load_elf_shared_library(_dl_secure, &rpnt, _dl_progname);
  32549. if (!app_tpnt) {
  32550. - _dl_dprintf(_dl_debug_file, "can't load '%s'\n", _dl_progname);
  32551. + _dl_dprintf(2, "can't load '%s'\n", _dl_progname);
  32552. _dl_exit(16);
  32553. }
  32554. /*
  32555. @@ -675,7 +674,7 @@
  32556. }
  32557. #else
  32558. if (app_tpnt->dynamic_info[DT_TEXTREL]) {
  32559. - _dl_dprintf(_dl_debug_file, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
  32560. + _dl_dprintf(2, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
  32561. _dl_exit(1);
  32562. }
  32563. #endif
  32564. @@ -698,6 +697,11 @@
  32565. app_tpnt->mapaddr = app_mapaddr;
  32566. app_tpnt->rtld_flags = unlazy | RTLD_GLOBAL;
  32567. app_tpnt->usage_count++;
  32568. +#ifdef __DSBT__
  32569. + _dl_ldso_dsbt[0] = app_tpnt->dsbt_table;
  32570. + _dl_memcpy(app_tpnt->dsbt_table, _dl_ldso_dsbt,
  32571. + app_tpnt->dsbt_size * sizeof(tpnt->dsbt_table[0]));
  32572. +#endif
  32573. lpnt = (unsigned long *) (app_tpnt->dynamic_info[DT_PLTGOT]);
  32574. #ifdef ALLOW_ZERO_PLTGOT
  32575. if (lpnt)
  32576. @@ -733,7 +737,7 @@
  32577. _dl_debug_early("Found TLS header for application program\n");
  32578. break;
  32579. #else
  32580. - _dl_dprintf(_dl_debug_file, "Program uses unsupported TLS data!\n");
  32581. + _dl_dprintf(2, "Program uses unsupported TLS data!\n");
  32582. _dl_exit(1);
  32583. #endif
  32584. }
  32585. @@ -747,7 +751,8 @@
  32586. * case the executable is actually an ET_DYN object.
  32587. */
  32588. if (app_tpnt->l_tls_initimage != NULL) {
  32589. - unsigned int tmp = (unsigned int) app_tpnt->l_tls_initimage;
  32590. + char *tmp attribute_unused =
  32591. + (char *) app_tpnt->l_tls_initimage;
  32592. app_tpnt->l_tls_initimage =
  32593. (char *) app_tpnt->l_tls_initimage + app_tpnt->loadaddr;
  32594. _dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n",
  32595. @@ -823,7 +828,7 @@
  32596. #ifndef __LDSO_LDD_SUPPORT__
  32597. if (trace_loaded_objects) {
  32598. - _dl_dprintf(_dl_debug_file, "Use the ldd provided by uClibc\n");
  32599. + _dl_dprintf(2, "Use the ldd provided by uClibc\n");
  32600. _dl_exit(1);
  32601. }
  32602. #endif
  32603. @@ -879,8 +884,9 @@
  32604. else
  32605. #endif
  32606. {
  32607. - _dl_dprintf(_dl_debug_file, "%s: can't load " "library '%s'\n", _dl_progname, str);
  32608. - _dl_exit(15);
  32609. + _dl_dprintf(2, "%s: library '%s' "
  32610. + "from LD_PRELOAD can't be preloaded: ignored.\n",
  32611. + _dl_progname, str);
  32612. }
  32613. } else {
  32614. tpnt1->rtld_flags = unlazy | RTLD_GLOBAL;
  32615. @@ -923,7 +929,7 @@
  32616. }
  32617. if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY, 0)) < 0) {
  32618. - _dl_dprintf(_dl_debug_file, "%s: can't open file '%s'\n",
  32619. + _dl_dprintf(2, "%s: can't open file '%s'\n",
  32620. _dl_progname, LDSO_PRELOAD);
  32621. break;
  32622. }
  32623. @@ -932,7 +938,7 @@
  32624. PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
  32625. _dl_close(fd);
  32626. if (preload == (caddr_t) -1) {
  32627. - _dl_dprintf(_dl_debug_file, "%s:%i: can't map '%s'\n",
  32628. + _dl_dprintf(2, "%s:%i: can't map '%s'\n",
  32629. _dl_progname, __LINE__, LDSO_PRELOAD);
  32630. break;
  32631. }
  32632. @@ -971,7 +977,7 @@
  32633. else
  32634. # endif
  32635. {
  32636. - _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, cp2);
  32637. + _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, cp2);
  32638. _dl_exit(15);
  32639. }
  32640. } else {
  32641. @@ -1032,7 +1038,7 @@
  32642. } else
  32643. #endif
  32644. {
  32645. - _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
  32646. + _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
  32647. _dl_exit(16);
  32648. }
  32649. }
  32650. diff -Nur uClibc-0.9.33.2/ldso/ldso/m68k/dl-startup.h uClibc/ldso/ldso/m68k/dl-startup.h
  32651. --- uClibc-0.9.33.2/ldso/ldso/m68k/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32652. +++ uClibc/ldso/ldso/m68k/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32653. @@ -19,6 +19,7 @@
  32654. .text\n\
  32655. .globl _start\n\
  32656. .type _start,@function\n\
  32657. + .hidden _start\n\
  32658. _start:\n\
  32659. move.l %sp, -(%sp)\n\
  32660. jbsr _dl_start\n\
  32661. diff -Nur uClibc-0.9.33.2/ldso/ldso/m68k/elfinterp.c uClibc/ldso/ldso/m68k/elfinterp.c
  32662. --- uClibc-0.9.33.2/ldso/ldso/m68k/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32663. +++ uClibc/ldso/ldso/m68k/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32664. @@ -241,8 +241,11 @@
  32665. _dl_memcpy ((void *) reloc_addr,
  32666. (void *) symbol_addr,
  32667. sym_ref.sym->st_size);
  32668. - } else
  32669. + }
  32670. +#if defined (__SUPPORT_LD_DEBUG__)
  32671. + else
  32672. _dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
  32673. +#endif
  32674. break;
  32675. default:
  32676. diff -Nur uClibc-0.9.33.2/ldso/ldso/Makefile.in uClibc/ldso/ldso/Makefile.in
  32677. --- uClibc-0.9.33.2/ldso/ldso/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  32678. +++ uClibc/ldso/ldso/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  32679. @@ -36,7 +36,7 @@
  32680. else
  32681. LDFLAGS-$(UCLIBC_LDSO_NAME).so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
  32682. endif
  32683. -LDFLAGS-$(UCLIBC_LDSO_NAME).so += -Wl,-e,_start -Wl,-z,now -Wl,-Bsymbolic \
  32684. +LDFLAGS-$(UCLIBC_LDSO_NAME).so += -Wl,-e,$(SYMBOL_PREFIX)_start -Wl,-z,now -Wl,-Bsymbolic \
  32685. -Wl,--export-dynamic $(CFLAG_-Wl--sort-common) -Wl,--discard-locals \
  32686. $(CFLAG_-Wl--discard-all) -Wl,--no-undefined
  32687. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-debug.h uClibc/ldso/ldso/metag/dl-debug.h
  32688. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-debug.h 1970-01-01 01:00:00.000000000 +0100
  32689. +++ uClibc/ldso/ldso/metag/dl-debug.h 2014-02-03 12:32:56.000000000 +0100
  32690. @@ -0,0 +1,33 @@
  32691. +/*
  32692. + * Meta ELF shared library loader support.
  32693. + *
  32694. + * Program to load an elf binary on a linux system, and run it.
  32695. + * References to symbols in sharable libraries can be resolved
  32696. + * by either an ELF sharable library or a linux style of shared
  32697. + * library.
  32698. + *
  32699. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32700. + *
  32701. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32702. + */
  32703. +
  32704. +static const char *_dl_reltypes_tab[] = {
  32705. + [0] "R_METAG_HIADDR16", "R_METAG_LOADDR16", "R_METAG_ADDR32",
  32706. + [3] "R_METAG_NONE", "R_METAG_RELBRANCH", "R_METAG_GETSETOFF",
  32707. + [6] "R_METAG_REG32OP1", "R_METAG_REG32OP2", "R_METAG_REG32OP3",
  32708. + [9] "R_METAG_REG16OP1", "R_METAG_REG16OP2", "R_METAG_REG16OP3",
  32709. + [12] "R_METAG_REG32OP4", "R_METAG_HIOG", "R_METAG_LOOG",
  32710. + [30] "R_METAG_GNU_VTINHERIT", "R_METAG_GNU_VTENTRY",
  32711. + [32] "R_METAG_HI16_GOTOFF", "R_METAG_LO16_GOTOFF",
  32712. + [34] "R_METAG_GETSET_GOTOFF", "R_METAG_GETSET_GOT",
  32713. + [36] "R_METAG_HI16_GOTPC", "R_METAG_LO16_GOTPC",
  32714. + [38] "R_METAG_HI16_PLT", "R_METAG_LO16_PLT",
  32715. + [40] "R_METAG_RELBRANCH_PLT", "R_METAG_GOTOFF",
  32716. + [42] "R_METAG_PLT", "R_METAG_COPY", "R_METAG_JMP_SLOT",
  32717. + [45] "R_METAG_RELATIVE", "R_METAG_GLOB_DAT", "R_METAG_TLS_GD",
  32718. + [48] "R_METAG_TLS_LDM", "R_METAG_TLS_LDO_HI16", "R_METAG_TLS_LDO_LO16",
  32719. + [51] "R_METAG_TLS_LDO", "R_METAG_TLS_IE", "R_METAG_TLS_IENONPIC",
  32720. + [54] "R_METAG_TLS_IENONPIC_HI16", "R_METAG_TLS_IENONPIC_LO16",
  32721. + [56] "R_METAG_TLS_TPOFF", "R_METAG_TLS_DTPMOD", "R_METAG_TLS_DTPOFF",
  32722. + [59] "R_METAG_TLS_LE", "R_METAG_TLS_LE_HI16", "R_METAG_TLS_LE_LO16"
  32723. +};
  32724. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-inlines.h uClibc/ldso/ldso/metag/dl-inlines.h
  32725. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-inlines.h 1970-01-01 01:00:00.000000000 +0100
  32726. +++ uClibc/ldso/ldso/metag/dl-inlines.h 2014-02-03 12:32:56.000000000 +0100
  32727. @@ -0,0 +1,39 @@
  32728. +/*
  32729. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32730. + *
  32731. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32732. + */
  32733. +
  32734. +static __always_inline int
  32735. +__dl_is_special_segment (Elf32_Ehdr *epnt,
  32736. + Elf32_Phdr *ppnt)
  32737. +{
  32738. + if (ppnt->p_type != PT_LOAD &&
  32739. + ppnt->p_type != PT_DYNAMIC)
  32740. + return 0;
  32741. +
  32742. + if (ppnt->p_vaddr >= 0x80000000 &&
  32743. + ppnt->p_vaddr < 0x82060000)
  32744. + return 1;
  32745. +
  32746. + if (ppnt->p_vaddr >= 0xe0200000 &&
  32747. + ppnt->p_vaddr < 0xe0260000)
  32748. + return 1;
  32749. +
  32750. + return 0;
  32751. +}
  32752. +
  32753. +static __always_inline char *
  32754. +__dl_map_segment (Elf32_Ehdr *epnt,
  32755. + Elf32_Phdr *ppnt,
  32756. + int infile,
  32757. + int flags)
  32758. +{
  32759. + char *addr = (char *)ppnt->p_vaddr;
  32760. +
  32761. + if (_DL_PREAD (infile, addr, ppnt->p_filesz, ppnt->p_offset) != ppnt->p_filesz) {
  32762. + return 0;
  32763. + }
  32764. +
  32765. + return addr;
  32766. +}
  32767. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-startup.h uClibc/ldso/ldso/metag/dl-startup.h
  32768. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-startup.h 1970-01-01 01:00:00.000000000 +0100
  32769. +++ uClibc/ldso/ldso/metag/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32770. @@ -0,0 +1,68 @@
  32771. +/*
  32772. + * Copyright (C) 2013 Imagination Technologies Ltd.
  32773. + *
  32774. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32775. + */
  32776. +
  32777. +/*
  32778. + * This code fixes the stack pointer so that the dynamic linker
  32779. + * can find argc, argv and auxvt (Auxillary Vector Table).
  32780. + */
  32781. +
  32782. +__asm__ (
  32783. +" .text\n"
  32784. +" .global __start\n"
  32785. +" .type __start,@function\n"
  32786. +" .hidden __start\n"
  32787. +"_start:\n"
  32788. +"__start:\n"
  32789. +" MSETL [A0StP++],D0Ar4,D0Ar2\n"
  32790. +" MOV D1Ar1,D0Ar2\n"
  32791. +" CALLR D1RtP,__dl_start\n"
  32792. +" GETL D0Ar2,D1Ar1,[A0StP+#-(1*8)]\n"
  32793. +" GETL D0Ar4,D1Ar3,[A0StP+#-(2*8)]\n"
  32794. +" ADDT A1LbP,CPC1,#HI(__GLOBAL_OFFSET_TABLE__)\n"
  32795. +" ADD A1LbP,A1LbP,#LO(__GLOBAL_OFFSET_TABLE__+4)\n"
  32796. +" ADDT A1LbP,A1LbP,#HI(__dl_fini@GOTOFF)\n"
  32797. +" ADD A1LbP,A1LbP,#LO(__dl_fini@GOTOFF)\n"
  32798. +" MOV D0Ar4, A1LbP\n"
  32799. +" SUB A0StP,A0StP,#(2*8)\n"
  32800. +" MOV PC,D0Re0\n"
  32801. +" .size __start,.-__start\n"
  32802. +" .previous\n"
  32803. +);
  32804. +
  32805. +
  32806. +/*
  32807. + * Get a pointer to the argv array. On many platforms this can be just
  32808. + * the address if the first argument, on other platforms we need to
  32809. + * do something a little more subtle here.
  32810. + */
  32811. +
  32812. +#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS))
  32813. +
  32814. +
  32815. +/* Handle relocation of the symbols in the dynamic loader. */
  32816. +static inline
  32817. +void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
  32818. + unsigned long symbol_addr, unsigned long load_addr, Elf32_Sym *symtab)
  32819. +{
  32820. + switch (ELF32_R_TYPE(rpnt->r_info)) {
  32821. + case R_METAG_GLOB_DAT:
  32822. + case R_METAG_JMP_SLOT:
  32823. + case R_METAG_ADDR32:
  32824. + *reloc_addr = symbol_addr;
  32825. + break;
  32826. + case R_METAG_RELATIVE:
  32827. + *reloc_addr = load_addr + rpnt->r_addend;
  32828. + break;
  32829. + case R_METAG_RELBRANCH:
  32830. + *reloc_addr = symbol_addr + rpnt->r_addend - *reloc_addr - 4;
  32831. + break;
  32832. + case R_METAG_NONE:
  32833. + break;
  32834. + default:
  32835. + _dl_exit(1);
  32836. + break;
  32837. + }
  32838. +}
  32839. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-syscalls.h uClibc/ldso/ldso/metag/dl-syscalls.h
  32840. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-syscalls.h 1970-01-01 01:00:00.000000000 +0100
  32841. +++ uClibc/ldso/ldso/metag/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  32842. @@ -0,0 +1,6 @@
  32843. +/* stub for arch-specific syscall issues
  32844. + *
  32845. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32846. + *
  32847. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32848. + */
  32849. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-sysdep.h uClibc/ldso/ldso/metag/dl-sysdep.h
  32850. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-sysdep.h 1970-01-01 01:00:00.000000000 +0100
  32851. +++ uClibc/ldso/ldso/metag/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32852. @@ -0,0 +1,121 @@
  32853. +/*
  32854. + * Meta can never use Elf32_Rel relocations.
  32855. + *
  32856. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32857. + *
  32858. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32859. + */
  32860. +
  32861. +#define ELF_USES_RELOCA
  32862. +
  32863. +#include <elf.h>
  32864. +
  32865. +/* Initialization sequence for the GOT. */
  32866. +#define INIT_GOT(GOT_BASE,MODULE) \
  32867. +{ \
  32868. + GOT_BASE[1] = (unsigned long) MODULE; \
  32869. + GOT_BASE[2] = (unsigned long) _dl_linux_resolve; \
  32870. +}
  32871. +
  32872. +/* Maximum unsigned GOT [GS]ETD offset size, ie. 2^(11+2). */
  32873. +#define GOT_REG_OFFSET 0x2000
  32874. +
  32875. +/* Defined some magic numbers that this ld.so should accept. */
  32876. +#define MAGIC1 EM_METAG
  32877. +#undef MAGIC2
  32878. +#define ELF_TARGET "META"
  32879. +
  32880. +/* Need bootstrap relocations */
  32881. +#define ARCH_NEEDS_BOOTSTRAP_RELOCS
  32882. +
  32883. +struct elf_resolve;
  32884. +extern unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry);
  32885. +
  32886. +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
  32887. + TLS variable, so undefined references should not be allowed to
  32888. + define the value.
  32889. +
  32890. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
  32891. + of the main executable's symbols, as for a COPY reloc. */
  32892. +#define elf_machine_type_class(type) \
  32893. + ((((type) == R_METAG_JMP_SLOT || (type) == R_METAG_TLS_DTPMOD \
  32894. + || (type) == R_METAG_TLS_DTPOFF || (type) == R_METAG_TLS_TPOFF) \
  32895. + * ELF_RTYPE_CLASS_PLT) \
  32896. + | (((type) == R_METAG_COPY) * ELF_RTYPE_CLASS_COPY))
  32897. +
  32898. +static inline Elf32_Addr
  32899. +elf_machine_dynamic(Elf32_Ehdr *header)
  32900. +{
  32901. + Elf32_Addr *got;
  32902. +
  32903. + __asm__ ("MOV %0,A1LbP" : "=r" (got));
  32904. +
  32905. + if (header->e_ident[EI_ABIVERSION] >= 1) {
  32906. + /* GOT register offset was introduced with ABI v1 */
  32907. + got = (Elf32_Addr*)((void*)got - GOT_REG_OFFSET);
  32908. + }
  32909. + return *got;
  32910. +}
  32911. +
  32912. +#define DL_BOOT_COMPUTE_GOT(GOT) \
  32913. + ((GOT) = elf_machine_dynamic(header))
  32914. +
  32915. +static inline Elf32_Addr
  32916. +elf_machine_load_address(void)
  32917. +{
  32918. + Elf32_Addr addr;
  32919. + __asm__ ("MOV D1Ar1,A1LbP\n"
  32920. + "ADDT D1Ar1,D1Ar1,#HI(__dl_start@GOTOFF)\n"
  32921. + "ADD D1Ar1,D1Ar1,#LO(__dl_start@GOTOFF)\n"
  32922. + "ADDT D0Ar2,D0Ar2,#HI(__dl_start_addr@GOTOFF)\n"
  32923. + "ADD D0Ar2,D0Ar2,#LO(__dl_start_addr@GOTOFF)\n"
  32924. + "GETD D0Ar2,[D0Ar2]\n"
  32925. + "SUB %0,D1Ar1,D0Ar2\n"
  32926. + ".section .data\n"
  32927. + "__dl_start_addr: .long __dl_start\n"
  32928. + ".previous\n"
  32929. + : "=d" (addr) : : "D1Ar1", "D0Ar2");
  32930. + return addr;
  32931. +}
  32932. +
  32933. +static inline void
  32934. +elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
  32935. + Elf32_Word relative_count)
  32936. +{
  32937. + Elf32_Rela *rpnt = (void *)rel_addr;
  32938. +
  32939. + --rpnt;
  32940. + do {
  32941. + Elf32_Addr *const reloc_addr =
  32942. + (void *)(load_off + (++rpnt)->r_offset);
  32943. +
  32944. + *reloc_addr = load_off + rpnt->r_addend;
  32945. + } while (--relative_count);
  32946. +}
  32947. +
  32948. +#define DL_MALLOC_ALIGN 8
  32949. +
  32950. +#define HAVE_DL_INLINES_H
  32951. +
  32952. +#define DL_IS_SPECIAL_SEGMENT(EPNT, PPNT) \
  32953. + __dl_is_special_segment(EPNT, PPNT)
  32954. +#define DL_MAP_SEGMENT(EPNT, PPNT, INFILE, FLAGS) \
  32955. + __dl_map_segment (EPNT, PPNT, INFILE, FLAGS)
  32956. +
  32957. +#define DL_CHECK_LIB_TYPE(epnt, piclib, _dl_progname, libname) \
  32958. +do \
  32959. +{ \
  32960. + ElfW(Phdr) *ppnt_; \
  32961. + char *header_ = (char *)epnt; \
  32962. + ppnt_ = (ElfW(Phdr) *)(intptr_t) & header_[epnt->e_phoff]; \
  32963. + if (ppnt_->p_vaddr >= 0x80000000 && \
  32964. + ppnt_->p_vaddr < 0x82060000) \
  32965. + (piclib) = 2; \
  32966. + if (ppnt_->p_vaddr >= 0xe0200000 && \
  32967. + ppnt_->p_vaddr < 0xe0260000) \
  32968. + (piclib) = 2; \
  32969. +} \
  32970. +while (0)
  32971. +
  32972. +#define _DL_PREAD(FD, BUF, SIZE, OFFSET) \
  32973. + (_dl_pread((FD), (BUF), (SIZE), (OFFSET)))
  32974. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/elfinterp.c uClibc/ldso/ldso/metag/elfinterp.c
  32975. --- uClibc-0.9.33.2/ldso/ldso/metag/elfinterp.c 1970-01-01 01:00:00.000000000 +0100
  32976. +++ uClibc/ldso/ldso/metag/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32977. @@ -0,0 +1,318 @@
  32978. +/*
  32979. + * Meta ELF shared library loader support.
  32980. + *
  32981. + * Program to load an elf binary on a linux system, and run it.
  32982. + * References to symbols in sharable libraries can be resolved
  32983. + * by either an ELF sharable library or a linux style of shared
  32984. + * library.
  32985. + *
  32986. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32987. + *
  32988. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32989. + */
  32990. +
  32991. +#include "ldso.h"
  32992. +
  32993. +/* Defined in resolve.S. */
  32994. +extern int _dl_linux_resolve(void);
  32995. +
  32996. +static inline unsigned long __get_unaligned_reloc(unsigned long *addr)
  32997. +{
  32998. + char *rel_addr = (char *)addr;
  32999. + unsigned long val;
  33000. +
  33001. + val = *rel_addr++ & 0xff;
  33002. + val |= (*rel_addr++ << 8) & 0x0000ff00;
  33003. + val |= (*rel_addr++ << 16) & 0x00ff0000;
  33004. + val |= (*rel_addr++ << 24) & 0xff000000;
  33005. +
  33006. + return val;
  33007. +}
  33008. +
  33009. +static inline void __put_unaligned_reloc(unsigned long *addr,
  33010. + unsigned long val)
  33011. +{
  33012. + char *rel_addr = (char *)addr;
  33013. +
  33014. + *rel_addr++ = (val & 0x000000ff);
  33015. + *rel_addr++ = ((val & 0x0000ff00) >> 8);
  33016. + *rel_addr++ = ((val & 0x00ff0000) >> 16);
  33017. + *rel_addr++ = ((val & 0xff000000) >> 24);
  33018. +}
  33019. +
  33020. +unsigned long
  33021. +_dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
  33022. +{
  33023. + int symtab_index;
  33024. + char *strtab;
  33025. + char *symname;
  33026. + char *new_addr;
  33027. + char *rel_addr;
  33028. + char **got_addr;
  33029. + ElfW(Sym) *symtab;
  33030. + ELF_RELOC *this_reloc;
  33031. + unsigned long instr_addr;
  33032. +
  33033. + rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
  33034. +
  33035. + this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
  33036. + symtab_index = ELF_R_SYM(this_reloc->r_info);
  33037. +
  33038. + symtab = (ElfW(Sym) *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
  33039. + strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
  33040. + symname = strtab + symtab[symtab_index].st_name;
  33041. +
  33042. + /* Address of the jump instruction to fix up. */
  33043. + instr_addr = ((unsigned long)this_reloc->r_offset +
  33044. + (unsigned long)tpnt->loadaddr);
  33045. + got_addr = (char **)instr_addr;
  33046. +
  33047. + /* Get the address of the GOT entry. */
  33048. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt,
  33049. + ELF_RTYPE_CLASS_PLT, NULL);
  33050. + if (unlikely(!new_addr)) {
  33051. + _dl_dprintf(2, "%s: Can't resolve symbol '%s'\n",
  33052. + _dl_progname, symname);
  33053. + _dl_exit(1);
  33054. + }
  33055. +
  33056. +#if defined (__SUPPORT_LD_DEBUG__)
  33057. + if (_dl_debug_bindings) {
  33058. + _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  33059. + if (_dl_debug_detail)
  33060. + _dl_dprintf(_dl_debug_file,
  33061. + "\n\tpatched: %x ==> %x @ %x\n",
  33062. + *got_addr, new_addr, got_addr);
  33063. + }
  33064. + if (!_dl_debug_nofixups) {
  33065. + *got_addr = new_addr;
  33066. + }
  33067. +#else
  33068. + *got_addr = new_addr;
  33069. +#endif
  33070. +
  33071. + return (unsigned long)new_addr;
  33072. +}
  33073. +
  33074. +static int
  33075. +_dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  33076. + unsigned long rel_addr, unsigned long rel_size,
  33077. + int (*reloc_fnc)(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  33078. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab))
  33079. +{
  33080. + int symtab_index;
  33081. + unsigned int i;
  33082. + char *strtab;
  33083. + ElfW(Sym) *symtab;
  33084. + ELF_RELOC *rpnt;
  33085. +
  33086. + /* Parse the relocation information. */
  33087. + rpnt = (ELF_RELOC *)(intptr_t)rel_addr;
  33088. + rel_size /= sizeof(ELF_RELOC);
  33089. +
  33090. + symtab = (ElfW(Sym) *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
  33091. + strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
  33092. +
  33093. + for (i = 0; i < rel_size; i++, rpnt++) {
  33094. + int res;
  33095. +
  33096. + symtab_index = ELF_R_SYM(rpnt->r_info);
  33097. +
  33098. + debug_sym(symtab, strtab, symtab_index);
  33099. + debug_reloc(symtab, strtab, rpnt);
  33100. +
  33101. + /* Pass over to actual relocation function. */
  33102. + res = reloc_fnc(tpnt, scope, rpnt, symtab, strtab);
  33103. +
  33104. + if (res == 0)
  33105. + continue;
  33106. +
  33107. + _dl_dprintf(2, "\n%s: ", _dl_progname);
  33108. +
  33109. + if (symtab_index)
  33110. + _dl_dprintf(2, "symbol '%s': ",
  33111. + strtab + symtab[symtab_index].st_name);
  33112. +
  33113. + if (unlikely(res < 0)) {
  33114. + int reloc_type = ELF_R_TYPE(rpnt->r_info);
  33115. +
  33116. +#if defined (__SUPPORT_LD_DEBUG__)
  33117. + _dl_dprintf(2, "can't handle reloc type %s\n",
  33118. + _dl_reltypes(reloc_type));
  33119. +#else
  33120. + _dl_dprintf(2, "can't handle reloc type %x\n",
  33121. + reloc_type);
  33122. +#endif
  33123. + _dl_exit(-res);
  33124. + } else if (unlikely(res > 0)) {
  33125. + _dl_dprintf(2, "can't resolve symbol\n");
  33126. + return res;
  33127. + }
  33128. + }
  33129. +
  33130. + return 0;
  33131. +}
  33132. +
  33133. +static int
  33134. +_dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  33135. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  33136. +{
  33137. + int reloc_type;
  33138. + int symtab_index;
  33139. + char *symname = NULL;
  33140. + unsigned long *reloc_addr;
  33141. + unsigned long symbol_addr;
  33142. +#if defined (__SUPPORT_LD_DEBUG__)
  33143. + unsigned long old_val = 0;
  33144. +#endif
  33145. + struct elf_resolve *tls_tpnt = NULL;
  33146. + struct symbol_ref sym_ref;
  33147. +
  33148. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  33149. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  33150. + symtab_index = ELF_R_SYM(rpnt->r_info);
  33151. + symbol_addr = 0;
  33152. + sym_ref.sym = &symtab[symtab_index];
  33153. + sym_ref.tpnt = NULL;
  33154. +
  33155. + if (symtab_index) {
  33156. + symname = strtab + symtab[symtab_index].st_name;
  33157. + symbol_addr = (unsigned long)_dl_find_hash(symname, scope, tpnt,
  33158. + elf_machine_type_class(reloc_type), &sym_ref);
  33159. +
  33160. + if (!symbol_addr
  33161. + && ELF_ST_TYPE(symtab[symtab_index].st_info) != STT_TLS
  33162. + && ELF_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
  33163. + _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
  33164. + _dl_progname, symname);
  33165. + return 1;
  33166. + };
  33167. + if (_dl_trace_prelink) {
  33168. + _dl_debug_lookup(symname, tpnt, &symtab[symtab_index],
  33169. + &sym_ref, elf_machine_type_class(reloc_type));
  33170. + }
  33171. + tls_tpnt = sym_ref.tpnt;
  33172. + }
  33173. +
  33174. +#if defined (__SUPPORT_LD_DEBUG__)
  33175. + if (reloc_type != R_METAG_NONE)
  33176. + old_val = __get_unaligned_reloc(reloc_addr);
  33177. +#endif
  33178. +
  33179. +#if defined USE_TLS && USE_TLS
  33180. + /* In case of a TLS reloc, tls_tpnt NULL means we have an 'anonymous'
  33181. + symbol. This is the case for a static tls variable, so the lookup
  33182. + module is just that one is referencing the tls variable. */
  33183. + if (!tls_tpnt)
  33184. + tls_tpnt = tpnt;
  33185. +#endif
  33186. + switch (reloc_type) {
  33187. + case R_METAG_NONE:
  33188. + break;
  33189. + case R_METAG_GLOB_DAT:
  33190. + case R_METAG_JMP_SLOT:
  33191. + case R_METAG_ADDR32:
  33192. + __put_unaligned_reloc(reloc_addr,
  33193. + symbol_addr + rpnt->r_addend);
  33194. + break;
  33195. + case R_METAG_COPY:
  33196. +#if defined (__SUPPORT_LD_DEBUG__)
  33197. + if (_dl_debug_move)
  33198. + _dl_dprintf(_dl_debug_file,
  33199. + "\t%s move %d bytes from %x to %x\n",
  33200. + symname, symtab[symtab_index].st_size,
  33201. + symbol_addr + rpnt->r_addend,
  33202. + reloc_addr);
  33203. +#endif
  33204. +
  33205. + _dl_memcpy((char *)reloc_addr,
  33206. + (char *)symbol_addr + rpnt->r_addend,
  33207. + symtab[symtab_index].st_size);
  33208. + break;
  33209. + case R_METAG_RELATIVE:
  33210. + __put_unaligned_reloc(reloc_addr,
  33211. + (unsigned long)tpnt->loadaddr +
  33212. + rpnt->r_addend);
  33213. + break;
  33214. +#if defined USE_TLS && USE_TLS
  33215. + case R_METAG_TLS_DTPMOD:
  33216. + *reloc_addr = tls_tpnt->l_tls_modid;
  33217. + break;
  33218. + case R_METAG_TLS_DTPOFF:
  33219. + *reloc_addr = symbol_addr;
  33220. + break;
  33221. + case R_METAG_TLS_TPOFF:
  33222. + CHECK_STATIC_TLS ((struct link_map *) tls_tpnt);
  33223. + *reloc_addr = tls_tpnt->l_tls_offset + symbol_addr + rpnt->r_addend;
  33224. + break;
  33225. +#endif
  33226. + default:
  33227. + return -1; /* Calls _dl_exit(1). */
  33228. + }
  33229. +
  33230. +#if defined (__SUPPORT_LD_DEBUG__)
  33231. + if (_dl_debug_reloc && _dl_debug_detail && reloc_type != R_METAG_NONE) {
  33232. + unsigned long new_val = __get_unaligned_reloc(reloc_addr);
  33233. + _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
  33234. + old_val, new_val, reloc_addr);
  33235. + }
  33236. +#endif
  33237. +
  33238. + return 0;
  33239. +}
  33240. +
  33241. +static int
  33242. +_dl_do_lazy_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  33243. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  33244. +{
  33245. + int reloc_type;
  33246. + unsigned long *reloc_addr;
  33247. +#if defined (__SUPPORT_LD_DEBUG__)
  33248. + unsigned long old_val;
  33249. +#endif
  33250. +
  33251. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  33252. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  33253. +
  33254. +#if defined (__SUPPORT_LD_DEBUG__)
  33255. + old_val = *reloc_addr;
  33256. +#endif
  33257. +
  33258. + switch (reloc_type) {
  33259. + case R_METAG_NONE:
  33260. + break;
  33261. + case R_METAG_JMP_SLOT:
  33262. + *reloc_addr += (unsigned long)tpnt->loadaddr;
  33263. + break;
  33264. + default:
  33265. + return -1; /* Calls _dl_exit(1). */
  33266. + }
  33267. +
  33268. +#if defined (__SUPPORT_LD_DEBUG__)
  33269. + if (_dl_debug_reloc && _dl_debug_detail)
  33270. + _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
  33271. + old_val, *reloc_addr, reloc_addr);
  33272. +#endif
  33273. +
  33274. + return 0;
  33275. +}
  33276. +
  33277. +/* External interface to the generic part of the dynamic linker. */
  33278. +
  33279. +void
  33280. +_dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  33281. + unsigned long rel_addr,
  33282. + unsigned long rel_size)
  33283. +{
  33284. + _dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
  33285. +}
  33286. +
  33287. +int
  33288. +_dl_parse_relocation_information(struct dyn_elf *rpnt,
  33289. + struct r_scope_elem *scope,
  33290. + unsigned long rel_addr,
  33291. + unsigned long rel_size)
  33292. +{
  33293. + return _dl_parse(rpnt->dyn, scope, rel_addr,
  33294. + rel_size, _dl_do_reloc);
  33295. +}
  33296. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/metag_load_tp.S uClibc/ldso/ldso/metag/metag_load_tp.S
  33297. --- uClibc-0.9.33.2/ldso/ldso/metag/metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  33298. +++ uClibc/ldso/ldso/metag/metag_load_tp.S 2014-02-03 12:32:56.000000000 +0100
  33299. @@ -0,0 +1,20 @@
  33300. +! Copyright (C) 2013 Imagination Technologies Ltd.
  33301. +
  33302. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  33303. +
  33304. +#include <features.h>
  33305. +
  33306. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  33307. +
  33308. +#include <sysdep.h>
  33309. +
  33310. + .text
  33311. + .global ___metag_load_tp
  33312. + .type ___metag_load_tp,@function
  33313. +
  33314. +___metag_load_tp:
  33315. + MOVT D1Ar1,#HI(0x6ffff000)
  33316. + JUMP D1Ar1,#LO(0x6ffff000)
  33317. + .size ___metag_load_tp,.-___metag_load_tp
  33318. +
  33319. +#endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  33320. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/resolve.S uClibc/ldso/ldso/metag/resolve.S
  33321. --- uClibc-0.9.33.2/ldso/ldso/metag/resolve.S 1970-01-01 01:00:00.000000000 +0100
  33322. +++ uClibc/ldso/ldso/metag/resolve.S 2014-02-03 12:32:56.000000000 +0100
  33323. @@ -0,0 +1,51 @@
  33324. +/*
  33325. + * Meta dynamic resolver
  33326. + *
  33327. + * Copyright (C) 2013 Imagination Technologies Ltd.
  33328. + *
  33329. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  33330. + *
  33331. + * This function is _not_ called directly. It is jumped to (so no return
  33332. + * address is on the stack) when attempting to use a symbol that has not yet
  33333. + * been resolved. The first time a jump symbol (such as a function call inside
  33334. + * a shared library) is used (before it gets resolved) it will jump here to
  33335. + * _dl_linux_resolve. When we get called the stack looks like this:
  33336. + * reloc_entry
  33337. + * tpnt
  33338. + *
  33339. + * This function saves all the registers then makes the function call
  33340. + * _dl_linux_resolver(tpnt, reloc_entry). _dl_linux_resolver() figures out
  33341. + * where the jump symbol is _really_ supposed to have jumped to and returns
  33342. + * that to us. Once we have that, we overwrite tpnt with this fixed up
  33343. + * address. We then clean up after ourselves, put all the registers back how we
  33344. + * found them, then we jump to the fixed up address, which is where the jump
  33345. + * symbol that got us here really wanted to jump to in the first place.
  33346. + * -Erik Andersen
  33347. + */
  33348. +
  33349. + .text
  33350. + .global __dl_linux_resolve
  33351. + .type __dl_linux_resolve,@function
  33352. +
  33353. +__dl_linux_resolve:
  33354. + !! Save registers on the stack. Do we need to save any more here?
  33355. + MSETL [A0StP++],D0Ar6,D0Ar4,D0Ar2,D0FrT
  33356. + SETL [A0StP++],A0FrP,A1LbP
  33357. + !! Get the args for _dl_linux_resolver off the stack
  33358. + GETL D0Re0,D1Re0,[A0StP+#-(6*8)]
  33359. + GETD D1Ar1,[D0Re0]
  33360. + MOV D0Ar2,D1Re0
  33361. + !! Multiply plt_index by sizeof(Elf32_Rela)
  33362. + MULW D0Ar2,D0Ar2,#12
  33363. + !! Call the resolver
  33364. + CALLR D1RtP,__dl_linux_resolver
  33365. + !! Restore the registers from the stack
  33366. + SUB A0.2,A0StP,#(1*8)
  33367. + GETL A0FrP,A1LbP,[A0.2]
  33368. + SUB A0.2,A0.2,#(4*8)
  33369. + MGETL D0Ar6,D0Ar4,D0Ar2,D0FrT,[A0.2]
  33370. + !! Also take into account args pushed by PLT
  33371. + SUB A0StP,A0StP,#(6*8)
  33372. + !! Jump to the resolved address
  33373. + MOV PC,D0Re0
  33374. + .size __dl_linux_resolve, .-__dl_linux_resolve
  33375. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/dl-startup.h uClibc/ldso/ldso/microblaze/dl-startup.h
  33376. --- uClibc-0.9.33.2/ldso/ldso/microblaze/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33377. +++ uClibc/ldso/ldso/microblaze/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33378. @@ -12,14 +12,14 @@
  33379. Lesser General Public License for more details.
  33380. You should have received a copy of the GNU Lesser General Public
  33381. - License along with the GNU C Library; if not, write to the Free
  33382. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33383. - 02111-1307 USA. */
  33384. + License along with the GNU C Library; if not, see
  33385. + <http://www.gnu.org/licenses/>. */
  33386. __asm__ ("\
  33387. .text\n\
  33388. .globl _start\n\
  33389. .type _start,@function\n\
  33390. + .hidden _start\n\
  33391. _start:\n\
  33392. addk r5,r0,r1\n\
  33393. addk r3,r0,r0\n\
  33394. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/dl-sysdep.h uClibc/ldso/ldso/microblaze/dl-sysdep.h
  33395. --- uClibc-0.9.33.2/ldso/ldso/microblaze/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  33396. +++ uClibc/ldso/ldso/microblaze/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  33397. @@ -12,9 +12,8 @@
  33398. Lesser General Public License for more details.
  33399. You should have received a copy of the GNU Lesser General Public
  33400. - License along with the GNU C Library; if not, write to the Free
  33401. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33402. - 02111-1307 USA. */
  33403. + License along with the GNU C Library; if not, see
  33404. + <http://www.gnu.org/licenses/>. */
  33405. /* Use reloca */
  33406. #define ELF_USES_RELOCA
  33407. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/resolve.S uClibc/ldso/ldso/microblaze/resolve.S
  33408. --- uClibc-0.9.33.2/ldso/ldso/microblaze/resolve.S 2012-05-15 09:20:09.000000000 +0200
  33409. +++ uClibc/ldso/ldso/microblaze/resolve.S 2014-02-03 12:32:56.000000000 +0100
  33410. @@ -18,9 +18,8 @@
  33411. Lesser General Public License for more details.
  33412. You should have received a copy of the GNU Lesser General Public
  33413. - License along with the GNU C Library; if not, write to the Free
  33414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33415. - 02111-1307 USA. */
  33416. + License along with the GNU C Library; if not, see
  33417. + <http://www.gnu.org/licenses/>. */
  33418. .text
  33419. .align 4
  33420. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/dl-startup.h uClibc/ldso/ldso/mips/dl-startup.h
  33421. --- uClibc-0.9.33.2/ldso/ldso/mips/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33422. +++ uClibc/ldso/ldso/mips/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33423. @@ -12,6 +12,7 @@
  33424. " .globl _start\n"
  33425. " .ent _start\n"
  33426. " .type _start,@function\n"
  33427. + " .hidden _start\n"
  33428. "_start:\n"
  33429. " .set noreorder\n"
  33430. " move $25, $31\n"
  33431. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/elfinterp.c uClibc/ldso/ldso/mips/elfinterp.c
  33432. --- uClibc-0.9.33.2/ldso/ldso/mips/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  33433. +++ uClibc/ldso/ldso/mips/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  33434. @@ -259,11 +259,11 @@
  33435. case R_MIPS_TLS_TPREL32:
  33436. case R_MIPS_TLS_TPREL64:
  33437. CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
  33438. - *(ElfW(Word) *)reloc_addr +=
  33439. + *(ElfW(Addr) *)reloc_addr +=
  33440. TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
  33441. #ifdef __SUPPORT_LD_DEBUG__
  33442. _dl_dprintf(2, "TLS_TPREL : %s, %x, %x\n",
  33443. - symname, old_val, *((unsigned int *)reloc_addr));
  33444. + symname, old_val, *((unsigned long *)reloc_addr));
  33445. #endif
  33446. break;
  33447. }
  33448. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/README uClibc/ldso/ldso/mips/README
  33449. --- uClibc-0.9.33.2/ldso/ldso/mips/README 2012-05-15 09:20:09.000000000 +0200
  33450. +++ uClibc/ldso/ldso/mips/README 2014-02-03 12:32:56.000000000 +0100
  33451. @@ -13,7 +13,7 @@
  33452. elfinterp.c
  33453. -----------
  33454. Contains the runtime resolver code taken from the function
  33455. -'__dl_runtime_resolve' in 'sysdeps/mips/dl-machine.h'. Also
  33456. +'__dl_runtime_resolve' in 'sysdeps/mips/dl-trampoline.h'. Also
  33457. contains the function to perform relocations for objects
  33458. other than the linker itself. The code was taken from the
  33459. function 'elf_machine_rel' in 'sysdeps/mips/dl-machine.h'.
  33460. @@ -47,6 +47,6 @@
  33461. ---------
  33462. Contains the low-level assembly code for the dynamic runtime
  33463. resolver. The code is taken from the assembly code function
  33464. -'_dl_runtime_resolve' in the file 'sysdeps/mips/dl-machine.h'.
  33465. +'_dl_runtime_resolve' in the file 'sysdeps/mips/dl-trampoline.h'.
  33466. The code looks a bit different since we only need to pass the
  33467. symbol index and the old GP register.
  33468. diff -Nur uClibc-0.9.33.2/ldso/ldso/powerpc/dl-startup.h uClibc/ldso/ldso/powerpc/dl-startup.h
  33469. --- uClibc-0.9.33.2/ldso/ldso/powerpc/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33470. +++ uClibc/ldso/ldso/powerpc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33471. @@ -8,6 +8,7 @@
  33472. " .text\n"
  33473. " .globl _start\n"
  33474. " .type _start,@function\n"
  33475. + " .hidden _start\n"
  33476. "_start:\n"
  33477. " mr 3,1\n" /* Pass SP to _dl_start in r3 */
  33478. " li 0,0\n"
  33479. diff -Nur uClibc-0.9.33.2/ldso/ldso/powerpc/elfinterp.c uClibc/ldso/ldso/powerpc/elfinterp.c
  33480. --- uClibc-0.9.33.2/ldso/ldso/powerpc/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  33481. +++ uClibc/ldso/ldso/powerpc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  33482. @@ -234,12 +234,12 @@
  33483. case R_PPC_ADDR32:
  33484. case R_PPC_GLOB_DAT:
  33485. *reloc_addr = finaladdr;
  33486. - goto out_nocode; /* No code code modified */
  33487. + goto out_nocode; /* No code modified */
  33488. case R_PPC_JMP_SLOT:
  33489. {
  33490. if (tpnt->dynamic_info[DT_PPC_GOT_IDX] != 0) {
  33491. *reloc_addr = finaladdr;
  33492. - goto out_nocode; /* No code code modified */
  33493. + goto out_nocode; /* No code modified */
  33494. } else {
  33495. Elf32_Sword delta = finaladdr - (Elf32_Word)reloc_addr;
  33496. if (delta<<6>>6 == delta) {
  33497. @@ -275,7 +275,7 @@
  33498. symbol_addr, reloc_addr);
  33499. #endif
  33500. _dl_memcpy((char *) reloc_addr, (char *) finaladdr, sym_ref.sym->st_size);
  33501. - goto out_nocode; /* No code code modified */
  33502. + goto out_nocode; /* No code modified */
  33503. case R_PPC_ADDR16_HA:
  33504. finaladdr += 0x8000; /* fall through. */
  33505. case R_PPC_ADDR16_HI:
  33506. @@ -314,7 +314,7 @@
  33507. return -1;
  33508. #endif
  33509. case R_PPC_NONE:
  33510. - goto out_nocode; /* No code code modified */
  33511. + goto out_nocode; /* No code modified */
  33512. default:
  33513. _dl_dprintf(2, "%s: can't handle reloc type ", _dl_progname);
  33514. #if defined (__SUPPORT_LD_DEBUG__)
  33515. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh/dl-startup.h uClibc/ldso/ldso/sh/dl-startup.h
  33516. --- uClibc-0.9.33.2/ldso/ldso/sh/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33517. +++ uClibc/ldso/ldso/sh/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33518. @@ -6,6 +6,7 @@
  33519. " .text\n"
  33520. " .globl _start\n"
  33521. " .type _start,@function\n"
  33522. + " .hidden _start\n"
  33523. "_start:\n"
  33524. " mov r15, r4\n"
  33525. " mov.l .L_dl_start, r0\n"
  33526. @@ -16,12 +17,22 @@
  33527. " mov.l .L_got, r12 ! Load the GOT on r12\n"
  33528. " mova .L_got, r0\n"
  33529. " add r0, r12\n"
  33530. + " mov.l .L_dl_skip_args,r0\n"
  33531. + " mov.l @(r0,r12),r0\n"
  33532. + " mov.l @r0,r0\n"
  33533. + " mov.l @r15,r5 ! Get the original argument count\n"
  33534. + " sub r0,r5 ! Subtract _dl_skip_args from it\n"
  33535. + " shll2 r0\n"
  33536. + " add r0,r15 ! Adjust the stack pointer to skip _dl_skip_args words\n"
  33537. + " mov.l r5,@r15 ! Store back the modified argument count\n"
  33538. " mov.l .L_dl_fini, r0\n"
  33539. " mov.l @(r0,r12), r4 ! Pass the finalizer in r4\n"
  33540. " jmp @r8\n"
  33541. " nop\n"
  33542. ".L_dl_start:\n"
  33543. " .long _dl_start-.jmp_loc\n"
  33544. + ".L_dl_skip_args:\n"
  33545. + " .long _dl_skip_args@GOT\n"
  33546. ".L_dl_fini:\n"
  33547. " .long _dl_fini@GOT\n"
  33548. ".L_got:\n"
  33549. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh/elfinterp.c uClibc/ldso/ldso/sh/elfinterp.c
  33550. --- uClibc-0.9.33.2/ldso/ldso/sh/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  33551. +++ uClibc/ldso/ldso/sh/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  33552. @@ -160,7 +160,9 @@
  33553. unsigned long old_val;
  33554. #endif
  33555. +#if defined USE_TLS && USE_TLS
  33556. struct elf_resolve *tls_tpnt = NULL;
  33557. +#endif
  33558. struct symbol_ref sym_ref;
  33559. reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
  33560. @@ -193,7 +195,9 @@
  33561. _dl_debug_lookup (symname, tpnt, &symtab[symtab_index],
  33562. &sym_ref, elf_machine_type_class(reloc_type));
  33563. }
  33564. +#if defined USE_TLS && USE_TLS
  33565. tls_tpnt = sym_ref.tpnt;
  33566. +#endif
  33567. }
  33568. #if defined (__SUPPORT_LD_DEBUG__)
  33569. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh64/dl-startup.h uClibc/ldso/ldso/sh64/dl-startup.h
  33570. --- uClibc-0.9.33.2/ldso/ldso/sh64/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33571. +++ uClibc/ldso/ldso/sh64/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33572. @@ -7,6 +7,7 @@
  33573. " .section .text..SHmedia32,\"ax\"\n" \
  33574. " .globl _start\n" \
  33575. " .type _start, @function\n" \
  33576. +" .hidden _start\n" \
  33577. " .align 5\n" \
  33578. "_start:\n" \
  33579. " ! Set r12 to point to GOT\n" \
  33580. diff -Nur uClibc-0.9.33.2/ldso/ldso/sparc/dl-startup.h uClibc/ldso/ldso/sparc/dl-startup.h
  33581. --- uClibc-0.9.33.2/ldso/ldso/sparc/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33582. +++ uClibc/ldso/ldso/sparc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33583. @@ -8,6 +8,7 @@
  33584. .text\n\
  33585. .global _start\n\
  33586. .type _start,%function\n\
  33587. + .hidden _start\n\
  33588. .align 32\n\
  33589. .register %g2, #scratch\n\
  33590. _start:\n\
  33591. diff -Nur uClibc-0.9.33.2/ldso/ldso/sparc/elfinterp.c uClibc/ldso/ldso/sparc/elfinterp.c
  33592. --- uClibc-0.9.33.2/ldso/ldso/sparc/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  33593. +++ uClibc/ldso/ldso/sparc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  33594. @@ -275,8 +275,11 @@
  33595. _dl_memcpy((char *)reloc_addr,
  33596. (char *)symbol_addr,
  33597. sym_ref.sym->st_size);
  33598. - } else
  33599. + }
  33600. +#if defined (__SUPPORT_LD_DEBUG__)
  33601. + else
  33602. _dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
  33603. +#endif
  33604. break;
  33605. #if defined USE_TLS && USE_TLS
  33606. case R_SPARC_TLS_DTPMOD32:
  33607. diff -Nur uClibc-0.9.33.2/ldso/ldso/x86_64/dl-startup.h uClibc/ldso/ldso/x86_64/dl-startup.h
  33608. --- uClibc-0.9.33.2/ldso/ldso/x86_64/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33609. +++ uClibc/ldso/ldso/x86_64/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33610. @@ -10,6 +10,7 @@
  33611. " .text\n"
  33612. " .global _start\n"
  33613. " .type _start,%function\n"
  33614. + " .hidden _start\n"
  33615. "_start:\n"
  33616. " movq %rsp, %rdi\n"
  33617. " call _dl_start\n"
  33618. diff -Nur uClibc-0.9.33.2/ldso/ldso/x86_64/dl-sysdep.h uClibc/ldso/ldso/x86_64/dl-sysdep.h
  33619. --- uClibc-0.9.33.2/ldso/ldso/x86_64/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  33620. +++ uClibc/ldso/ldso/x86_64/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  33621. @@ -16,9 +16,8 @@
  33622. Lesser General Public License for more details.
  33623. You should have received a copy of the GNU Lesser General Public
  33624. - License along with the GNU C Library; if not, write to the Free
  33625. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33626. - 02111-1307 USA. */
  33627. + License along with the GNU C Library; if not, see
  33628. + <http://www.gnu.org/licenses/>. */
  33629. /* Define this if the system uses RELOCA. */
  33630. #define ELF_USES_RELOCA
  33631. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/dl-startup.h uClibc/ldso/ldso/xtensa/dl-startup.h
  33632. --- uClibc-0.9.33.2/ldso/ldso/xtensa/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  33633. +++ uClibc/ldso/ldso/xtensa/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  33634. @@ -13,6 +13,7 @@
  33635. " .align 4\n"
  33636. " .global _start\n"
  33637. " .type _start, @function\n"
  33638. + " .hidden _start\n"
  33639. "_start:\n"
  33640. " # Compute load offset in a2: the GOT has not yet been relocated\n"
  33641. " # but the entries for local symbols contain the relative offsets\n"
  33642. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/dl-sysdep.h uClibc/ldso/ldso/xtensa/dl-sysdep.h
  33643. --- uClibc-0.9.33.2/ldso/ldso/xtensa/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  33644. +++ uClibc/ldso/ldso/xtensa/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  33645. @@ -14,9 +14,8 @@
  33646. Lesser General Public License for more details.
  33647. You should have received a copy of the GNU Lesser General Public
  33648. - License along with the GNU C Library; if not, write to the Free
  33649. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  33650. - Boston, MA 02110-1301, USA. */
  33651. + License along with the GNU C Library; if not, see
  33652. + <http://www.gnu.org/licenses/>. */
  33653. /* Define this if the system uses RELOCA. */
  33654. #define ELF_USES_RELOCA
  33655. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/resolve.S uClibc/ldso/ldso/xtensa/resolve.S
  33656. --- uClibc-0.9.33.2/ldso/ldso/xtensa/resolve.S 2012-05-15 09:20:09.000000000 +0200
  33657. +++ uClibc/ldso/ldso/xtensa/resolve.S 2014-02-03 12:32:56.000000000 +0100
  33658. @@ -14,9 +14,8 @@
  33659. Lesser General Public License for more details.
  33660. You should have received a copy of the GNU Lesser General Public
  33661. - License along with the GNU C Library; if not, write to the Free
  33662. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  33663. - Boston, MA 02110-1301, USA. */
  33664. + License along with the GNU C Library; if not, see
  33665. + <http://www.gnu.org/licenses/>. */
  33666. #define MIN_FRAME_SIZE 32
  33667. diff -Nur uClibc-0.9.33.2/ldso/libdl/libdl.c uClibc/ldso/libdl/libdl.c
  33668. --- uClibc-0.9.33.2/ldso/libdl/libdl.c 2012-05-15 09:20:09.000000000 +0200
  33669. +++ uClibc/ldso/libdl/libdl.c 2014-02-03 12:32:56.000000000 +0100
  33670. @@ -32,7 +32,7 @@
  33671. #include <ldso.h>
  33672. #include <stdio.h>
  33673. -#include <string.h> /* Needed for 'strstr' prototype' */
  33674. +#include <string.h>
  33675. #include <stdbool.h>
  33676. #include <bits/uClibc_mutex.h>
  33677. @@ -42,6 +42,7 @@
  33678. #if defined(USE_TLS) && USE_TLS
  33679. #include <ldsodefs.h>
  33680. +#include <dl-tls.h>
  33681. extern void _dl_add_to_slotinfo(struct link_map *l);
  33682. #endif
  33683. @@ -51,7 +52,6 @@
  33684. #ifdef SHARED
  33685. # if defined(USE_TLS) && USE_TLS
  33686. -# include <dl-tls.h>
  33687. extern struct link_map *_dl_update_slotinfo(unsigned long int req_modid);
  33688. # endif
  33689. @@ -269,7 +269,7 @@
  33690. #endif
  33691. #ifndef __LDSO_NO_CLEANUP__
  33692. -void dl_cleanup(void) __attribute__ ((destructor));
  33693. +void dl_cleanup(void) attribute_hidden __attribute__ ((destructor));
  33694. void dl_cleanup(void)
  33695. {
  33696. struct dyn_elf *h, *n;
  33697. @@ -296,11 +296,10 @@
  33698. return p - list;
  33699. }
  33700. -static void *do_dlopen(const char *libname, int flag)
  33701. +static void *do_dlopen(const char *libname, int flag, ElfW(Addr) from)
  33702. {
  33703. struct elf_resolve *tpnt, *tfrom;
  33704. struct dyn_elf *dyn_chain, *rpnt = NULL, *dyn_ptr, *relro_ptr, *handle;
  33705. - ElfW(Addr) from;
  33706. struct elf_resolve *tpnt1;
  33707. void (*dl_brk) (void);
  33708. int now_flag;
  33709. @@ -309,7 +308,9 @@
  33710. struct elf_resolve **init_fini_list;
  33711. static bool _dl_init;
  33712. struct elf_resolve **local_scope;
  33713. +#ifdef SHARED
  33714. struct r_scope_elem *ls;
  33715. +#endif
  33716. #if defined(USE_TLS) && USE_TLS
  33717. bool any_tls = false;
  33718. #endif
  33719. @@ -320,8 +321,6 @@
  33720. return NULL;
  33721. }
  33722. - from = (ElfW(Addr)) __builtin_return_address(0);
  33723. -
  33724. if (!_dl_init) {
  33725. _dl_init = true;
  33726. _dl_malloc_function = malloc;
  33727. @@ -335,7 +334,7 @@
  33728. # ifdef __SUPPORT_LD_DEBUG__
  33729. _dl_debug = getenv("LD_DEBUG");
  33730. if (_dl_debug) {
  33731. - if (_dl_strstr(_dl_debug, "all")) {
  33732. + if (strstr(_dl_debug, "all")) {
  33733. _dl_debug_detail = _dl_debug_move = _dl_debug_symbols
  33734. = _dl_debug_reloc = _dl_debug_bindings = _dl_debug_nofixups = (void*)1;
  33735. } else {
  33736. @@ -377,7 +376,7 @@
  33737. if (getenv("LD_BIND_NOW"))
  33738. now_flag = RTLD_NOW;
  33739. -#if !defined SHARED && defined __LDSO_LIBRARY_PATH__
  33740. +#if !defined SHARED && defined __LDSO_LD_LIBRARY_PATH__
  33741. /* When statically linked, the _dl_library_path is not yet initialized */
  33742. _dl_library_path = getenv("LD_LIBRARY_PATH");
  33743. #endif
  33744. @@ -393,7 +392,7 @@
  33745. return NULL;
  33746. }
  33747. dyn_chain = (struct dyn_elf *) malloc(sizeof(struct dyn_elf));
  33748. - _dl_memset(dyn_chain, 0, sizeof(struct dyn_elf));
  33749. + memset(dyn_chain, 0, sizeof(struct dyn_elf));
  33750. dyn_chain->dyn = tpnt;
  33751. tpnt->rtld_flags |= (flag & RTLD_GLOBAL);
  33752. @@ -444,7 +443,7 @@
  33753. /* This list is for dlsym() and relocation */
  33754. dyn_ptr->next = (struct dyn_elf *) malloc(sizeof(struct dyn_elf));
  33755. - _dl_memset (dyn_ptr->next, 0, sizeof (struct dyn_elf));
  33756. + memset (dyn_ptr->next, 0, sizeof (struct dyn_elf));
  33757. dyn_ptr = dyn_ptr->next;
  33758. dyn_ptr->dyn = tpnt1;
  33759. /* Used to record RTLD_LOCAL scope */
  33760. @@ -544,11 +543,18 @@
  33761. * to the GOT tables. We need to do this in reverse order so that COPY
  33762. * directives work correctly */
  33763. - /* Get the tail of the list */
  33764. +#ifdef SHARED
  33765. + /*
  33766. + * Get the tail of the list.
  33767. + * In the static case doesn't need to extend the global scope, it is
  33768. + * ready to be used as it is, because _dl_loaded_modules already points
  33769. + * to the dlopened library.
  33770. + */
  33771. for (ls = &_dl_loaded_modules->symbol_scope; ls && ls->next; ls = ls->next);
  33772. /* Extend the global scope by adding the local scope of the dlopened DSO. */
  33773. ls->next = &dyn_chain->dyn->symbol_scope;
  33774. +#endif
  33775. #ifdef __mips__
  33776. /*
  33777. * Relocation of the GOT entries for MIPS have to be done
  33778. @@ -661,7 +667,8 @@
  33779. void *ret;
  33780. __UCLIBC_MUTEX_CONDITIONAL_LOCK(_dl_mutex, 1);
  33781. - ret = do_dlopen(libname, flag);
  33782. + ret = do_dlopen(libname, flag,
  33783. + (ElfW(Addr)) __builtin_return_address(0));
  33784. __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(_dl_mutex, 1);
  33785. return ret;
  33786. @@ -671,7 +678,7 @@
  33787. {
  33788. struct elf_resolve *tpnt, *tfrom;
  33789. struct dyn_elf *handle;
  33790. - ElfW(Addr) from;
  33791. + ElfW(Addr) from = 0;
  33792. struct dyn_elf *rpnt;
  33793. void *ret;
  33794. struct symbol_ref sym_ref = { NULL, NULL };
  33795. @@ -729,7 +736,13 @@
  33796. tpnt = NULL;
  33797. if (handle == _dl_symbol_tables)
  33798. tpnt = handle->dyn; /* Only search RTLD_GLOBAL objs if global object */
  33799. - ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
  33800. +
  33801. + do {
  33802. + ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
  33803. + if (ret != NULL)
  33804. + break;
  33805. + handle = handle->next;
  33806. + } while (from && handle);
  33807. #if defined(USE_TLS) && USE_TLS && defined SHARED
  33808. if (sym_ref.sym && (ELF_ST_TYPE(sym_ref.sym->st_info) == STT_TLS) && (sym_ref.tpnt)) {
  33809. @@ -1081,8 +1094,10 @@
  33810. * Dump information to stderr about the current loaded modules
  33811. */
  33812. #ifdef __USE_GNU
  33813. +# if 0
  33814. static const char type[][4] = { "Lib", "Exe", "Int", "Mod" };
  33815. +/* reimplement this, being a GNU extension it should be the same as on glibc */
  33816. int dlinfo(void)
  33817. {
  33818. struct elf_resolve *tpnt;
  33819. @@ -1109,6 +1124,7 @@
  33820. }
  33821. return 0;
  33822. }
  33823. +#endif
  33824. static int do_dladdr(const void *__address, Dl_info * __info)
  33825. {
  33826. diff -Nur uClibc-0.9.33.2/ldso/libdl/Makefile.in uClibc/ldso/libdl/Makefile.in
  33827. --- uClibc-0.9.33.2/ldso/libdl/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  33828. +++ uClibc/ldso/libdl/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  33829. @@ -23,7 +23,7 @@
  33830. LDFLAGS-libdl.so := $(LDFLAGS)
  33831. ifeq ($(LDSO_NO_CLEANUP),)
  33832. -LDFLAGS-libdl.so += -Wl,-fini,dl_cleanup
  33833. +LDFLAGS-libdl.so += -Wl,-fini,$(SYMBOL_PREFIX)dl_cleanup
  33834. endif
  33835. LIBS-libdl.so := $(LIBS) $(ldso)
  33836. diff -Nur uClibc-0.9.33.2/ldso/man/dlopen.3 uClibc/ldso/man/dlopen.3
  33837. --- uClibc-0.9.33.2/ldso/man/dlopen.3 2012-05-15 09:20:09.000000000 +0200
  33838. +++ uClibc/ldso/man/dlopen.3 2014-02-03 12:32:56.000000000 +0100
  33839. @@ -19,9 +19,8 @@
  33840. .\" GNU General Public License for more details.
  33841. .\"
  33842. .\" You should have received a copy of the GNU General Public
  33843. -.\" License along with this manual; if not, write to the Free
  33844. -.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  33845. -.\" USA.
  33846. +.\" License along with this manual; if not, see
  33847. +.\" <http://www.gnu.org/licenses/>.
  33848. .\"
  33849. .TH DLOPEN 3 "16 May 1995" "Linux" "Linux Programmer's Manual"
  33850. .SH NAME
  33851. diff -Nur uClibc-0.9.33.2/libc/.gitignore uClibc/libc/.gitignore
  33852. --- uClibc-0.9.33.2/libc/.gitignore 1970-01-01 01:00:00.000000000 +0100
  33853. +++ uClibc/libc/.gitignore 2014-02-03 12:32:56.000000000 +0100
  33854. @@ -0,0 +1 @@
  33855. +ucontext_i.[chs]
  33856. diff -Nur uClibc-0.9.33.2/libc/inet/addr.c uClibc/libc/inet/addr.c
  33857. --- uClibc-0.9.33.2/libc/inet/addr.c 2012-05-15 09:20:09.000000000 +0200
  33858. +++ uClibc/libc/inet/addr.c 2014-02-03 12:32:56.000000000 +0100
  33859. @@ -17,8 +17,6 @@
  33860. * Changed to use _int10tostr.
  33861. */
  33862. -#define __FORCE_GLIBC
  33863. -#include <features.h>
  33864. #include <stdio.h>
  33865. #include <string.h>
  33866. #include <ctype.h>
  33867. @@ -114,7 +112,7 @@
  33868. #define INET_NTOA_MAX_LEN 16 /* max 12 digits + 3 '.'s + 1 nul */
  33869. -char *inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN])
  33870. +static char *__inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN])
  33871. {
  33872. in_addr_t addr = ntohl(in.s_addr);
  33873. int i;
  33874. @@ -133,12 +131,12 @@
  33875. return p+1;
  33876. }
  33877. -libc_hidden_def(inet_ntoa_r)
  33878. +strong_alias(__inet_ntoa_r,inet_ntoa_r)
  33879. char *inet_ntoa(struct in_addr in)
  33880. {
  33881. static char buf[INET_NTOA_MAX_LEN];
  33882. - return inet_ntoa_r(in, buf);
  33883. + return __inet_ntoa_r(in, buf);
  33884. }
  33885. libc_hidden_def(inet_ntoa)
  33886. #endif
  33887. @@ -153,18 +151,18 @@
  33888. */
  33889. struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host)
  33890. {
  33891. - in_addr_t addr;
  33892. + struct in_addr in;
  33893. if (net < 128)
  33894. - addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
  33895. + in.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
  33896. else if (net < 65536)
  33897. - addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
  33898. + in.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
  33899. else if (net < 16777216UL)
  33900. - addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
  33901. + in.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
  33902. else
  33903. - addr = net | host;
  33904. - addr = htonl(addr);
  33905. - return *(struct in_addr *)&addr;
  33906. + in.s_addr = net | host;
  33907. + in.s_addr = htonl(in.s_addr);
  33908. + return in;
  33909. }
  33910. libc_hidden_def(inet_makeaddr)
  33911. #endif
  33912. diff -Nur uClibc-0.9.33.2/libc/inet/ether_addr.c uClibc/libc/inet/ether_addr.c
  33913. --- uClibc-0.9.33.2/libc/inet/ether_addr.c 2012-05-15 09:20:09.000000000 +0200
  33914. +++ uClibc/libc/inet/ether_addr.c 2014-02-03 12:32:56.000000000 +0100
  33915. @@ -13,9 +13,8 @@
  33916. Lesser General Public License for more details.
  33917. You should have received a copy of the GNU Lesser General Public
  33918. - License along with the GNU C Library; if not, write to the Free
  33919. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33920. - 02111-1307 USA.
  33921. + License along with the GNU C Library; see the file COPYING.LIB. If
  33922. + not, see <http://www.gnu.org/licenses/>.
  33923. */
  33924. /*
  33925. @@ -23,8 +22,6 @@
  33926. * - initial uClibc port
  33927. */
  33928. -#define __FORCE_GLIBC
  33929. -#include <features.h>
  33930. #include <ctype.h>
  33931. #include <stdio.h>
  33932. #include <stdlib.h>
  33933. diff -Nur uClibc-0.9.33.2/libc/inet/gai_strerror.c uClibc/libc/inet/gai_strerror.c
  33934. --- uClibc-0.9.33.2/libc/inet/gai_strerror.c 2012-05-15 09:20:09.000000000 +0200
  33935. +++ uClibc/libc/inet/gai_strerror.c 2014-02-03 12:32:56.000000000 +0100
  33936. @@ -13,17 +13,13 @@
  33937. Lesser General Public License for more details.
  33938. You should have received a copy of the GNU Lesser General Public
  33939. - License along with the GNU C Library; if not, write to the Free
  33940. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33941. - 02111-1307 USA. */
  33942. + License along with the GNU C Library; if not, see
  33943. + <http://www.gnu.org/licenses/>. */
  33944. -#define __FORCE_GLIBC
  33945. -#include <features.h>
  33946. #include <stdio.h>
  33947. #include <netdb.h>
  33948. +#include <libintl.h>
  33949. -#define N_(x) x
  33950. -#define _(x) x
  33951. static const struct
  33952. {
  33953. int code;
  33954. diff -Nur uClibc-0.9.33.2/libc/inet/getaddrinfo.c uClibc/libc/inet/getaddrinfo.c
  33955. --- uClibc-0.9.33.2/libc/inet/getaddrinfo.c 2012-05-15 09:20:09.000000000 +0200
  33956. +++ uClibc/libc/inet/getaddrinfo.c 2014-02-03 12:32:56.000000000 +0100
  33957. @@ -51,8 +51,6 @@
  33958. If these license terms cause you a real problem, contact the author. */
  33959. -#define __FORCE_GLIBC
  33960. -#include <features.h>
  33961. #include <assert.h>
  33962. #include <errno.h>
  33963. #include <netdb.h>
  33964. @@ -283,7 +281,7 @@
  33965. ai->ai_protocol = req->ai_protocol;
  33966. ai->ai_addrlen = sizeof(struct sockaddr_un);
  33967. ai->ai_addr = (void *)ai + sizeof(struct addrinfo);
  33968. -#if SALEN
  33969. +#if 0 /* SALEN */
  33970. ((struct sockaddr_un *)ai->ai_addr)->sun_len = sizeof(struct sockaddr_un);
  33971. #endif /* SALEN */
  33972. @@ -713,7 +711,7 @@
  33973. (*pai)->ai_protocol = st2->protocol;
  33974. (*pai)->ai_addrlen = socklen;
  33975. (*pai)->ai_addr = (void *) (*pai) + sizeof(struct addrinfo);
  33976. -#if defined SALEN
  33977. +#if 0 /* SALEN */
  33978. (*pai)->ai_addr->sa_len = socklen;
  33979. #endif
  33980. (*pai)->ai_addr->sa_family = family;
  33981. diff -Nur uClibc-0.9.33.2/libc/inet/herror.c uClibc/libc/inet/herror.c
  33982. --- uClibc-0.9.33.2/libc/inet/herror.c 2012-05-15 09:20:09.000000000 +0200
  33983. +++ uClibc/libc/inet/herror.c 2014-02-03 12:32:56.000000000 +0100
  33984. @@ -17,8 +17,6 @@
  33985. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  33986. */
  33987. -#define __FORCE_GLIBC
  33988. -#include <features.h>
  33989. #include <stdio.h>
  33990. #include <string.h>
  33991. #include <netdb.h>
  33992. diff -Nur uClibc-0.9.33.2/libc/inet/hostid.c uClibc/libc/inet/hostid.c
  33993. --- uClibc-0.9.33.2/libc/inet/hostid.c 2012-05-15 09:20:09.000000000 +0200
  33994. +++ uClibc/libc/inet/hostid.c 2014-02-03 12:32:56.000000000 +0100
  33995. @@ -5,8 +5,6 @@
  33996. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  33997. */
  33998. -#define __FORCE_GLIBC
  33999. -#include <features.h>
  34000. #include <errno.h>
  34001. #include <unistd.h>
  34002. #include <sys/types.h>
  34003. diff -Nur uClibc-0.9.33.2/libc/inet/ifaddrs.c uClibc/libc/inet/ifaddrs.c
  34004. --- uClibc-0.9.33.2/libc/inet/ifaddrs.c 2012-05-15 09:20:09.000000000 +0200
  34005. +++ uClibc/libc/inet/ifaddrs.c 2014-02-03 12:32:56.000000000 +0100
  34006. @@ -13,12 +13,9 @@
  34007. Lesser General Public License for more details.
  34008. You should have received a copy of the GNU Lesser General Public
  34009. - License along with the GNU C Library; if not, write to the Free
  34010. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34011. - 02111-1307 USA. */
  34012. + License along with the GNU C Library; if not, see
  34013. + <http://www.gnu.org/licenses/>. */
  34014. -#define __FORCE_GLIBC
  34015. -#include <features.h>
  34016. #include <alloca.h>
  34017. #include <assert.h>
  34018. #include <errno.h>
  34019. @@ -33,7 +30,6 @@
  34020. #include <string.h>
  34021. #include <sys/ioctl.h>
  34022. #include <sys/socket.h>
  34023. -#include <libc-internal.h>
  34024. #include <time.h>
  34025. #include <unistd.h>
  34026. diff -Nur uClibc-0.9.33.2/libc/inet/if_index.c uClibc/libc/inet/if_index.c
  34027. --- uClibc-0.9.33.2/libc/inet/if_index.c 2012-05-15 09:20:09.000000000 +0200
  34028. +++ uClibc/libc/inet/if_index.c 2014-02-03 12:32:56.000000000 +0100
  34029. @@ -13,15 +13,12 @@
  34030. Lesser General Public License for more details.
  34031. You should have received a copy of the GNU Lesser General Public
  34032. - License along with the GNU C Library; if not, write to the Free
  34033. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34034. - 02111-1307 USA.
  34035. + License along with the GNU C Library; see the file COPYING.LIB. If
  34036. + not, see <http://www.gnu.org/licenses/>.
  34037. Reworked Dec 2002 by Erik Andersen <andersen@codepoet.org>
  34038. */
  34039. -#define __FORCE_GLIBC
  34040. -#include <features.h>
  34041. #include <string.h>
  34042. #include <alloca.h>
  34043. #include <errno.h>
  34044. @@ -31,7 +28,6 @@
  34045. #include <net/if.h>
  34046. #include <sys/socket.h>
  34047. #include <sys/ioctl.h>
  34048. -#include <libc-internal.h>
  34049. #include <not-cancel.h>
  34050. #include "netlinkaccess.h"
  34051. diff -Nur uClibc-0.9.33.2/libc/inet/in6_addr.c uClibc/libc/inet/in6_addr.c
  34052. --- uClibc-0.9.33.2/libc/inet/in6_addr.c 2012-05-15 09:20:09.000000000 +0200
  34053. +++ uClibc/libc/inet/in6_addr.c 2014-02-03 12:32:56.000000000 +0100
  34054. @@ -13,12 +13,9 @@
  34055. Lesser General Public License for more details.
  34056. You should have received a copy of the GNU Lesser General Public
  34057. - License along with the GNU C Library; if not, write to the Free
  34058. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34059. - 02111-1307 USA. */
  34060. + License along with the GNU C Library; if not, see
  34061. + <http://www.gnu.org/licenses/>. */
  34062. -#define __FORCE_GLIBC
  34063. -#include <features.h>
  34064. #include <netinet/in.h>
  34065. #ifdef __UCLIBC_HAS_IPV6__
  34066. diff -Nur uClibc-0.9.33.2/libc/inet/inet_addr.c uClibc/libc/inet/inet_addr.c
  34067. --- uClibc-0.9.33.2/libc/inet/inet_addr.c 2012-05-15 09:20:09.000000000 +0200
  34068. +++ uClibc/libc/inet/inet_addr.c 2014-02-03 12:32:56.000000000 +0100
  34069. @@ -4,5 +4,5 @@
  34070. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  34071. */
  34072. -#define L_inet_makeaddr
  34073. +#define L_inet_addr
  34074. #include "addr.c"
  34075. diff -Nur uClibc-0.9.33.2/libc/inet/inet_makeaddr.c uClibc/libc/inet/inet_makeaddr.c
  34076. --- uClibc-0.9.33.2/libc/inet/inet_makeaddr.c 2012-05-15 09:20:09.000000000 +0200
  34077. +++ uClibc/libc/inet/inet_makeaddr.c 2014-02-03 12:32:56.000000000 +0100
  34078. @@ -4,5 +4,5 @@
  34079. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  34080. */
  34081. -#define L_inet_addr
  34082. +#define L_inet_makeaddr
  34083. #include "addr.c"
  34084. diff -Nur uClibc-0.9.33.2/libc/inet/inet_net.c uClibc/libc/inet/inet_net.c
  34085. --- uClibc-0.9.33.2/libc/inet/inet_net.c 2012-05-15 09:20:09.000000000 +0200
  34086. +++ uClibc/libc/inet/inet_net.c 2014-02-03 12:32:56.000000000 +0100
  34087. @@ -32,8 +32,6 @@
  34088. * SUCH DAMAGE.
  34089. */
  34090. -#define __FORCE_GLIBC
  34091. -#include <features.h>
  34092. #include <ctype.h>
  34093. #include <netinet/in.h>
  34094. #include <arpa/inet.h>
  34095. diff -Nur uClibc-0.9.33.2/libc/inet/Makefile.in uClibc/libc/inet/Makefile.in
  34096. --- uClibc-0.9.33.2/libc/inet/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  34097. +++ uClibc/libc/inet/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  34098. @@ -11,33 +11,34 @@
  34099. INET_DIR := $(top_srcdir)libc/inet
  34100. INET_OUT := $(top_builddir)libc/inet
  34101. +V4_OR_V6 := $(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6))
  34102. CFLAGS-inet := -DRESOLVER="\"resolv.c\""
  34103. CSRC-y :=
  34104. # des uses ntohl
  34105. -CSRC-$(findstring y,$(UCLIBC_HAS_CRYPT_IMPL)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += ntohl.c
  34106. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  34107. +CSRC-$(findstring y,$(UCLIBC_HAS_CRYPT_IMPL)$(V4_OR_V6)) += ntohl.c
  34108. +CSRC-$(V4_OR_V6) += \
  34109. getservice.c getproto.c getnet.c hostid.c \
  34110. inet_net.c herror.c if_index.c gai_strerror.c getaddrinfo.c \
  34111. ifaddrs.c ntop.c
  34112. CSRC-$(UCLIBC_HAS_IPV6) += in6_addr.c
  34113. # multi source addr.c
  34114. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  34115. +CSRC-$(V4_OR_V6) += \
  34116. inet_aton.c inet_addr.c inet_ntoa.c inet_makeaddr.c \
  34117. inet_lnaof.c inet_netof.c
  34118. # multi source resolv.c
  34119. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  34120. +CSRC-$(V4_OR_V6) += \
  34121. encodeh.c decodeh.c encoded.c decoded.c \
  34122. encodeq.c encodea.c \
  34123. read_etc_hosts_r.c \
  34124. dnslookup.c opennameservers.c closenameservers.c \
  34125. getnameinfo.c \
  34126. gethostent.c gethostent_r.c
  34127. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  34128. +CSRC-$(V4_OR_V6) += \
  34129. get_hosts_byaddr_r.c get_hosts_byname_r.c \
  34130. gethostbyaddr_r.c gethostbyname_r.c gethostbyname2_r.c \
  34131. gethostbyaddr.c gethostbyname.c gethostbyname2.c
  34132. -CSRC-$(findstring y,$(UCLIBC_HAS_RESOLVER_SUPPORT)) += \
  34133. +CSRC-$(UCLIBC_HAS_RESOLVER_SUPPORT) += \
  34134. ns_netint.c ns_parse.c res_data.c \
  34135. res_init.c res_query.c res_comp.c ns_name.c \
  34136. _res_state.c
  34137. @@ -52,7 +53,7 @@
  34138. socketcalls_CSRC-$(UCLIBC_LINUX_SPECIFIC) += accept4.c
  34139. CSRC-$(UCLIBC_HAS_SOCKET) += $(socketcalls_CSRC-y) opensock.c
  34140. -CSRC-$(findstring y,$(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += ethers.c ether_addr.c
  34141. +CSRC-$(findstring y,$(UCLIBC_HAS_SOCKET)$(V4_OR_V6)) += ethers.c ether_addr.c
  34142. INET_SRC := $(patsubst %.c,$(INET_DIR)/%.c,$(CSRC-y))
  34143. INET_OBJ := $(patsubst %.c,$(INET_OUT)/%.o,$(CSRC-y))
  34144. diff -Nur uClibc-0.9.33.2/libc/inet/netlinkaccess.h uClibc/libc/inet/netlinkaccess.h
  34145. --- uClibc-0.9.33.2/libc/inet/netlinkaccess.h 2012-05-15 09:20:09.000000000 +0200
  34146. +++ uClibc/libc/inet/netlinkaccess.h 2014-02-03 12:32:56.000000000 +0100
  34147. @@ -12,9 +12,8 @@
  34148. Lesser General Public License for more details.
  34149. You should have received a copy of the GNU Lesser General Public
  34150. - License along with the GNU C Library; if not, write to the Free
  34151. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34152. - 02111-1307 USA. */
  34153. + License along with the GNU C Library; if not, see
  34154. + <http://www.gnu.org/licenses/>. */
  34155. #ifndef _NETLINKACCESS_H
  34156. #define _NETLINKACCESS_H 1
  34157. diff -Nur uClibc-0.9.33.2/libc/inet/ntohl.c uClibc/libc/inet/ntohl.c
  34158. --- uClibc-0.9.33.2/libc/inet/ntohl.c 2012-05-15 09:20:09.000000000 +0200
  34159. +++ uClibc/libc/inet/ntohl.c 2014-02-03 12:32:56.000000000 +0100
  34160. @@ -6,9 +6,6 @@
  34161. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  34162. */
  34163. -#include <stdint.h>
  34164. -#include <endian.h>
  34165. -#include <byteswap.h>
  34166. #include <netinet/in.h>
  34167. #undef ntohl
  34168. @@ -16,51 +13,30 @@
  34169. #undef htonl
  34170. #undef htons
  34171. -#if __BYTE_ORDER == __BIG_ENDIAN
  34172. -uint32_t ntohl (uint32_t x)
  34173. -{
  34174. - return x;
  34175. -}
  34176. -
  34177. -uint16_t ntohs (uint16_t x)
  34178. -{
  34179. - return x;
  34180. -}
  34181. -
  34182. -uint32_t htonl (uint32_t x)
  34183. -{
  34184. - return x;
  34185. -}
  34186. +#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN
  34187. +# error "You seem to have an unsupported byteorder"
  34188. +#endif
  34189. -uint16_t htons (uint16_t x)
  34190. -{
  34191. - return x;
  34192. -}
  34193. -#elif __BYTE_ORDER == __LITTLE_ENDIAN
  34194. uint32_t ntohl (uint32_t x)
  34195. {
  34196. +#if __BYTE_ORDER == __BIG_ENDIAN
  34197. + return x;
  34198. +#else
  34199. return __bswap_32(x);
  34200. +#endif
  34201. }
  34202. +libc_hidden_def(ntohl)
  34203. +strong_alias(ntohl,htonl)
  34204. +libc_hidden_def(htonl)
  34205. uint16_t ntohs (uint16_t x)
  34206. {
  34207. - return __bswap_16(x);
  34208. -}
  34209. -
  34210. -uint32_t htonl (uint32_t x)
  34211. -{
  34212. - return __bswap_32(x);
  34213. -}
  34214. -
  34215. -uint16_t htons (uint16_t x)
  34216. -{
  34217. - return __bswap_16(x);
  34218. -}
  34219. +#if __BYTE_ORDER == __BIG_ENDIAN
  34220. + return x;
  34221. #else
  34222. -#error "You seem to have an unsupported byteorder"
  34223. + return __bswap_16(x);
  34224. #endif
  34225. -
  34226. -libc_hidden_def(ntohl)
  34227. +}
  34228. libc_hidden_def(ntohs)
  34229. -libc_hidden_def(htonl)
  34230. +strong_alias(ntohs,htons)
  34231. libc_hidden_def(htons)
  34232. diff -Nur uClibc-0.9.33.2/libc/inet/ntop.c uClibc/libc/inet/ntop.c
  34233. --- uClibc-0.9.33.2/libc/inet/ntop.c 2012-05-15 09:20:09.000000000 +0200
  34234. +++ uClibc/libc/inet/ntop.c 2014-02-03 12:32:56.000000000 +0100
  34235. @@ -15,8 +15,6 @@
  34236. * SOFTWARE.
  34237. */
  34238. -#define __FORCE_GLIBC
  34239. -#include <features.h>
  34240. #include <sys/param.h>
  34241. #include <sys/types.h>
  34242. #include <sys/socket.h>
  34243. diff -Nur uClibc-0.9.33.2/libc/inet/opensock.c uClibc/libc/inet/opensock.c
  34244. --- uClibc-0.9.33.2/libc/inet/opensock.c 2012-05-15 09:20:09.000000000 +0200
  34245. +++ uClibc/libc/inet/opensock.c 2014-02-03 12:32:56.000000000 +0100
  34246. @@ -12,18 +12,11 @@
  34247. Lesser General Public License for more details.
  34248. You should have received a copy of the GNU Lesser General Public
  34249. - License along with the GNU C Library; if not, write to the Free
  34250. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34251. - 02111-1307 USA. */
  34252. + License along with the GNU C Library; if not, see
  34253. + <http://www.gnu.org/licenses/>. */
  34254. -#include <assert.h>
  34255. -#include <errno.h>
  34256. -#include <stdio.h>
  34257. -#include <string.h>
  34258. -#include <unistd.h>
  34259. #include <sys/socket.h>
  34260. -#include <features.h>
  34261. -#include <libc-internal.h>
  34262. +#include <bits/kernel-features.h>
  34263. /* Return a socket of any type. The socket can be used in subsequent
  34264. ioctl calls to talk to the kernel. */
  34265. diff -Nur uClibc-0.9.33.2/libc/inet/resolv.c uClibc/libc/inet/resolv.c
  34266. --- uClibc-0.9.33.2/libc/inet/resolv.c 2012-05-15 09:20:09.000000000 +0200
  34267. +++ uClibc/libc/inet/resolv.c 2014-02-03 12:32:56.000000000 +0100
  34268. @@ -293,8 +293,6 @@
  34269. - a sequence of labels ending with a pointer
  34270. */
  34271. -#define __FORCE_GLIBC
  34272. -#include <features.h>
  34273. #include <string.h>
  34274. #include <stdio.h>
  34275. #include <stdio_ext.h>
  34276. @@ -317,6 +315,7 @@
  34277. #include <sys/utsname.h>
  34278. #include <sys/un.h>
  34279. #include <sys/stat.h>
  34280. +#include <sys/param.h>
  34281. #include <bits/uClibc_mutex.h>
  34282. #include "internal/parse_config.h"
  34283. @@ -406,7 +405,7 @@
  34284. } sockaddr46_t;
  34285. -__UCLIBC_MUTEX_EXTERN(__resolv_lock);
  34286. +__UCLIBC_MUTEX_EXTERN(__resolv_lock) attribute_hidden;
  34287. /* Protected by __resolv_lock */
  34288. extern void (*__res_sync)(void) attribute_hidden;
  34289. @@ -566,7 +565,7 @@
  34290. #ifdef L_encodeh
  34291. -int attribute_hidden __encode_header(struct resolv_header *h, unsigned char *dest, int maxlen)
  34292. +int __encode_header(struct resolv_header *h, unsigned char *dest, int maxlen)
  34293. {
  34294. if (maxlen < HFIXEDSZ)
  34295. return -1;
  34296. @@ -595,7 +594,7 @@
  34297. #ifdef L_decodeh
  34298. -void attribute_hidden __decode_header(unsigned char *data,
  34299. +void __decode_header(unsigned char *data,
  34300. struct resolv_header *h)
  34301. {
  34302. h->id = (data[0] << 8) | data[1];
  34303. @@ -619,7 +618,7 @@
  34304. /* Encode a dotted string into nameserver transport-level encoding.
  34305. This routine is fairly dumb, and doesn't attempt to compress
  34306. the data */
  34307. -int attribute_hidden __encode_dotted(const char *dotted, unsigned char *dest, int maxlen)
  34308. +int __encode_dotted(const char *dotted, unsigned char *dest, int maxlen)
  34309. {
  34310. unsigned used = 0;
  34311. @@ -657,7 +656,7 @@
  34312. /* Decode a dotted string from nameserver transport-level encoding.
  34313. This routine understands compressed data. */
  34314. -int attribute_hidden __decode_dotted(const unsigned char *packet,
  34315. +int __decode_dotted(const unsigned char *packet,
  34316. int offset,
  34317. int packet_len,
  34318. char *dest,
  34319. @@ -722,7 +721,7 @@
  34320. #ifdef L_encodeq
  34321. -int attribute_hidden __encode_question(const struct resolv_question *q,
  34322. +int __encode_question(const struct resolv_question *q,
  34323. unsigned char *dest,
  34324. int maxlen)
  34325. {
  34326. @@ -750,7 +749,7 @@
  34327. #ifdef L_encodea
  34328. -int attribute_hidden __encode_answer(struct resolv_answer *a, unsigned char *dest, int maxlen)
  34329. +int __encode_answer(struct resolv_answer *a, unsigned char *dest, int maxlen)
  34330. {
  34331. int i;
  34332. @@ -864,7 +863,7 @@
  34333. const char *name,
  34334. int type,
  34335. unsigned char *packet,
  34336. - int maxlen);
  34337. + int maxlen) attribute_hidden;
  34338. int __form_query(int id,
  34339. const char *name,
  34340. int type,
  34341. @@ -956,7 +955,7 @@
  34342. }
  34343. /* Must be called under __resolv_lock. */
  34344. -void attribute_hidden __open_nameservers(void)
  34345. +void __open_nameservers(void)
  34346. {
  34347. static uint32_t resolv_conf_mtime;
  34348. @@ -1122,7 +1121,7 @@
  34349. #ifdef L_closenameservers
  34350. /* Must be called under __resolv_lock. */
  34351. -void attribute_hidden __close_nameservers(void)
  34352. +void __close_nameservers(void)
  34353. {
  34354. if (__nameserver != (void*) &__local_nameserver)
  34355. free(__nameserver);
  34356. @@ -1230,7 +1229,7 @@
  34357. * appended. (why the filed is called "dotted" I have no idea)
  34358. * This is a malloced string. May be NULL because strdup failed.
  34359. */
  34360. -int attribute_hidden __dns_lookup(const char *name,
  34361. +int __dns_lookup(const char *name,
  34362. int type,
  34363. unsigned char **outpacket,
  34364. struct resolv_answer *a)
  34365. @@ -1594,7 +1593,7 @@
  34366. #define HALISTOFF (sizeof(char*) * MAXTOKENS)
  34367. #define INADDROFF (HALISTOFF + 2 * sizeof(char*))
  34368. -int attribute_hidden __read_etc_hosts_r(
  34369. +int __read_etc_hosts_r(
  34370. parser_t * parser,
  34371. const char *name,
  34372. int type,
  34373. @@ -1708,7 +1707,7 @@
  34374. #ifdef L_get_hosts_byname_r
  34375. -int attribute_hidden __get_hosts_byname_r(const char *name,
  34376. +int __get_hosts_byname_r(const char *name,
  34377. int type,
  34378. struct hostent *result_buf,
  34379. char *buf,
  34380. @@ -1724,7 +1723,7 @@
  34381. #ifdef L_get_hosts_byaddr_r
  34382. -int attribute_hidden __get_hosts_byaddr_r(const char *addr,
  34383. +int __get_hosts_byaddr_r(const char *addr,
  34384. int len,
  34385. int type,
  34386. struct hostent *result_buf,
  34387. @@ -1775,7 +1774,7 @@
  34388. unsigned flags)
  34389. {
  34390. int serrno = errno;
  34391. - unsigned ok;
  34392. + bool ok = 0;
  34393. struct hostent *hoste = NULL;
  34394. char domain[256];
  34395. @@ -1785,16 +1784,15 @@
  34396. if (sa == NULL || addrlen < sizeof(sa_family_t))
  34397. return EAI_FAMILY;
  34398. - ok = sa->sa_family;
  34399. - if (ok == AF_LOCAL) /* valid */;
  34400. + if (sa->sa_family == AF_LOCAL) /* valid */;
  34401. #ifdef __UCLIBC_HAS_IPV4__
  34402. - else if (ok == AF_INET) {
  34403. + else if (sa->sa_family == AF_INET) {
  34404. if (addrlen < sizeof(struct sockaddr_in))
  34405. return EAI_FAMILY;
  34406. }
  34407. #endif
  34408. #ifdef __UCLIBC_HAS_IPV6__
  34409. - else if (ok == AF_INET6) {
  34410. + else if (sa->sa_family == AF_INET6) {
  34411. if (addrlen < sizeof(struct sockaddr_in6))
  34412. return EAI_FAMILY;
  34413. }
  34414. @@ -1802,7 +1800,6 @@
  34415. else
  34416. return EAI_FAMILY;
  34417. - ok = 0;
  34418. if (host != NULL && hostlen > 0)
  34419. switch (sa->sa_family) {
  34420. case AF_INET:
  34421. @@ -1826,21 +1823,18 @@
  34422. if (hoste) {
  34423. char *c;
  34424. -#undef min
  34425. -#define min(x,y) (((x) > (y)) ? (y) : (x))
  34426. if ((flags & NI_NOFQDN)
  34427. && (getdomainname(domain, sizeof(domain)) == 0)
  34428. && (c = strstr(hoste->h_name, domain)) != NULL
  34429. && (c != hoste->h_name) && (*(--c) == '.')
  34430. ) {
  34431. strncpy(host, hoste->h_name,
  34432. - min(hostlen, (size_t) (c - hoste->h_name)));
  34433. - host[min(hostlen - 1, (size_t) (c - hoste->h_name))] = '\0';
  34434. + MIN(hostlen, (size_t) (c - hoste->h_name)));
  34435. + host[MIN(hostlen - 1, (size_t) (c - hoste->h_name))] = '\0';
  34436. } else {
  34437. strncpy(host, hoste->h_name, hostlen);
  34438. }
  34439. ok = 1;
  34440. -#undef min
  34441. }
  34442. }
  34443. @@ -3432,6 +3426,7 @@
  34444. */
  34445. }
  34446. +/* has to be called under __resolv_lock */
  34447. static int
  34448. __res_vinit(res_state rp, int preinit)
  34449. {
  34450. @@ -3440,7 +3435,6 @@
  34451. int m = 0;
  34452. #endif
  34453. - __UCLIBC_MUTEX_LOCK(__resolv_lock);
  34454. __close_nameservers();
  34455. __open_nameservers();
  34456. @@ -3532,29 +3526,87 @@
  34457. rp->options |= RES_INIT;
  34458. + return 0;
  34459. +}
  34460. +
  34461. +static unsigned int
  34462. +res_randomid(void)
  34463. +{
  34464. + return 0xffff & getpid();
  34465. +}
  34466. +
  34467. +/* Our res_init never fails (always returns 0) */
  34468. +int
  34469. +res_init(void)
  34470. +{
  34471. + /*
  34472. + * These three fields used to be statically initialized. This made
  34473. + * it hard to use this code in a shared library. It is necessary,
  34474. + * now that we're doing dynamic initialization here, that we preserve
  34475. + * the old semantics: if an application modifies one of these three
  34476. + * fields of _res before res_init() is called, res_init() will not
  34477. + * alter them. Of course, if an application is setting them to
  34478. + * _zero_ before calling res_init(), hoping to override what used
  34479. + * to be the static default, we can't detect it and unexpected results
  34480. + * will follow. Zero for any of these fields would make no sense,
  34481. + * so one can safely assume that the applications were already getting
  34482. + * unexpected results.
  34483. + *
  34484. + * _res.options is tricky since some apps were known to diddle the bits
  34485. + * before res_init() was first called. We can't replicate that semantic
  34486. + * with dynamic initialization (they may have turned bits off that are
  34487. + * set in RES_DEFAULT). Our solution is to declare such applications
  34488. + * "broken". They could fool us by setting RES_INIT but none do (yet).
  34489. + */
  34490. +
  34491. + __UCLIBC_MUTEX_LOCK(__resolv_lock);
  34492. +
  34493. + if (!_res.retrans)
  34494. + _res.retrans = RES_TIMEOUT;
  34495. + if (!_res.retry)
  34496. + _res.retry = 4;
  34497. + if (!(_res.options & RES_INIT))
  34498. + _res.options = RES_DEFAULT;
  34499. +
  34500. + /*
  34501. + * This one used to initialize implicitly to zero, so unless the app
  34502. + * has set it to something in particular, we can randomize it now.
  34503. + */
  34504. + if (!_res.id)
  34505. + _res.id = res_randomid();
  34506. +
  34507. + __res_sync = NULL;
  34508. + __res_vinit(&_res, 1);
  34509. + __res_sync = res_sync_func;
  34510. +
  34511. __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  34512. +
  34513. return 0;
  34514. }
  34515. +libc_hidden_def(res_init)
  34516. static void
  34517. -__res_iclose(void)
  34518. +__res_iclose(res_state statp)
  34519. {
  34520. + struct __res_state * rp = statp;
  34521. __UCLIBC_MUTEX_LOCK(__resolv_lock);
  34522. + if (rp == NULL)
  34523. + rp = __res_state();
  34524. __close_nameservers();
  34525. __res_sync = NULL;
  34526. #ifdef __UCLIBC_HAS_IPV6__
  34527. {
  34528. - char *p1 = (char*) &(_res.nsaddr_list[0]);
  34529. - int m = 0;
  34530. + char *p1 = (char*) &(rp->nsaddr_list[0]);
  34531. + unsigned int m = 0;
  34532. /* free nsaddrs[m] if they do not point to nsaddr_list[x] */
  34533. - while (m < ARRAY_SIZE(_res._u._ext.nsaddrs)) {
  34534. - char *p2 = (char*)(_res._u._ext.nsaddrs[m++]);
  34535. - if (p2 < p1 || (p2 - p1) > sizeof(_res.nsaddr_list))
  34536. + while (m < ARRAY_SIZE(rp->_u._ext.nsaddrs)) {
  34537. + char *p2 = (char*)(rp->_u._ext.nsaddrs[m++]);
  34538. + if (p2 < p1 || (p2 - p1) > (signed)sizeof(rp->nsaddr_list))
  34539. free(p2);
  34540. }
  34541. }
  34542. #endif
  34543. - memset(&_res, 0, sizeof(_res));
  34544. + memset(rp, 0, sizeof(struct __res_state));
  34545. __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  34546. }
  34547. @@ -3569,13 +3621,13 @@
  34548. void
  34549. res_nclose(res_state statp)
  34550. {
  34551. - __res_iclose();
  34552. + __res_iclose(statp);
  34553. }
  34554. #ifdef __UCLIBC_HAS_BSD_RES_CLOSE__
  34555. void res_close(void)
  34556. {
  34557. - __res_iclose();
  34558. + __res_iclose(NULL);
  34559. }
  34560. #endif
  34561. @@ -3595,74 +3647,14 @@
  34562. # if defined __UCLIBC_HAS_TLS__
  34563. # undef __resp
  34564. __thread struct __res_state *__resp = &_res;
  34565. -/*
  34566. - * FIXME: Add usage of hidden attribute for this when used in the shared
  34567. - * library. It currently crashes the linker when doing section
  34568. - * relocations.
  34569. - */
  34570. extern __thread struct __res_state *__libc_resp
  34571. - __attribute__ ((alias ("__resp"))) attribute_hidden;
  34572. + __attribute__ ((alias ("__resp"))) attribute_hidden attribute_tls_model_ie;
  34573. # else
  34574. # undef __resp
  34575. struct __res_state *__resp = &_res;
  34576. # endif
  34577. #endif /* !__UCLIBC_HAS_THREADS__ */
  34578. -static unsigned int
  34579. -res_randomid(void)
  34580. -{
  34581. - return 0xffff & getpid();
  34582. -}
  34583. -
  34584. -/* Our res_init never fails (always returns 0) */
  34585. -int
  34586. -res_init(void)
  34587. -{
  34588. - /*
  34589. - * These three fields used to be statically initialized. This made
  34590. - * it hard to use this code in a shared library. It is necessary,
  34591. - * now that we're doing dynamic initialization here, that we preserve
  34592. - * the old semantics: if an application modifies one of these three
  34593. - * fields of _res before res_init() is called, res_init() will not
  34594. - * alter them. Of course, if an application is setting them to
  34595. - * _zero_ before calling res_init(), hoping to override what used
  34596. - * to be the static default, we can't detect it and unexpected results
  34597. - * will follow. Zero for any of these fields would make no sense,
  34598. - * so one can safely assume that the applications were already getting
  34599. - * unexpected results.
  34600. - *
  34601. - * _res.options is tricky since some apps were known to diddle the bits
  34602. - * before res_init() was first called. We can't replicate that semantic
  34603. - * with dynamic initialization (they may have turned bits off that are
  34604. - * set in RES_DEFAULT). Our solution is to declare such applications
  34605. - * "broken". They could fool us by setting RES_INIT but none do (yet).
  34606. - */
  34607. -
  34608. - __UCLIBC_MUTEX_LOCK(__resolv_lock);
  34609. -
  34610. - if (!_res.retrans)
  34611. - _res.retrans = RES_TIMEOUT;
  34612. - if (!_res.retry)
  34613. - _res.retry = 4;
  34614. - if (!(_res.options & RES_INIT))
  34615. - _res.options = RES_DEFAULT;
  34616. -
  34617. - /*
  34618. - * This one used to initialize implicitly to zero, so unless the app
  34619. - * has set it to something in particular, we can randomize it now.
  34620. - */
  34621. - if (!_res.id)
  34622. - _res.id = res_randomid();
  34623. - __res_sync = res_sync_func;
  34624. -
  34625. - __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  34626. -
  34627. - __res_vinit(&_res, 1);
  34628. -
  34629. - return 0;
  34630. -}
  34631. -libc_hidden_def(res_init)
  34632. -
  34633. /*
  34634. * Set up default settings. If the configuration file exist, the values
  34635. * there will have precedence. Otherwise, the server address is set to
  34636. @@ -3687,7 +3679,11 @@
  34637. int
  34638. res_ninit(res_state statp)
  34639. {
  34640. - return __res_vinit(statp, 0);
  34641. + int ret;
  34642. + __UCLIBC_MUTEX_LOCK(__resolv_lock);
  34643. + ret = __res_vinit(statp, 0);
  34644. + __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  34645. + return ret;
  34646. }
  34647. #endif /* L_res_init */
  34648. @@ -3740,11 +3736,10 @@
  34649. free(a.dotted);
  34650. - if (a.atype == type) { /* CNAME */
  34651. - if (i > anslen)
  34652. - i = anslen;
  34653. - memcpy(answer, packet, i);
  34654. - }
  34655. + if (i > anslen)
  34656. + i = anslen;
  34657. + memcpy(answer, packet, i);
  34658. +
  34659. free(packet);
  34660. return i;
  34661. }
  34662. @@ -4227,7 +4222,7 @@
  34663. hp = (HEADER *) buf;
  34664. hp->id = getpid() & 0xffff;
  34665. hp->opcode = op;
  34666. - hp->rd = (_res.options & RES_RECURSE) != 0U;
  34667. + hp->rd = (_res_options & RES_RECURSE) != 0U;
  34668. hp->rcode = NOERROR;
  34669. cp = buf + HFIXEDSZ;
  34670. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/auth_none.c uClibc/libc/inet/rpc/auth_none.c
  34671. --- uClibc-0.9.33.2/libc/inet/rpc/auth_none.c 2012-05-15 09:20:09.000000000 +0200
  34672. +++ uClibc/libc/inet/rpc/auth_none.c 2014-02-03 12:32:56.000000000 +0100
  34673. @@ -35,8 +35,6 @@
  34674. * credentials and verifiers to remote systems.
  34675. */
  34676. -#define __FORCE_GLIBC
  34677. -#include <features.h>
  34678. #include "rpc_private.h"
  34679. @@ -66,49 +64,54 @@
  34680. char marshalled_client[MAX_MARSHAL_SIZE];
  34681. u_int mcnt;
  34682. };
  34683. +
  34684. +static struct authnone_private_s authnone_private;
  34685. #ifdef __UCLIBC_HAS_THREADS__
  34686. -#define authnone_private (*(struct authnone_private_s **)&RPC_THREAD_VARIABLE(authnone_private_s))
  34687. -#else
  34688. -static struct authnone_private_s *authnone_private;
  34689. +__libc_once_define(static, authnone_private_guard);
  34690. #endif
  34691. -AUTH *
  34692. -authnone_create (void)
  34693. +static void authnone_create_once (void);
  34694. +
  34695. +static void
  34696. +authnone_create_once (void)
  34697. {
  34698. struct authnone_private_s *ap;
  34699. XDR xdr_stream;
  34700. XDR *xdrs;
  34701. - ap = (struct authnone_private_s *) authnone_private;
  34702. - if (ap == NULL)
  34703. - {
  34704. - ap = (struct authnone_private_s *) calloc (1, sizeof (*ap));
  34705. - if (ap == NULL)
  34706. - return NULL;
  34707. - authnone_private = ap;
  34708. - }
  34709. - if (!ap->mcnt)
  34710. - {
  34711. - ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
  34712. - ap->no_client.ah_ops = (struct auth_ops *)&ops;
  34713. - xdrs = &xdr_stream;
  34714. - xdrmem_create (xdrs, ap->marshalled_client, (u_int) MAX_MARSHAL_SIZE,
  34715. - XDR_ENCODE);
  34716. - (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_cred);
  34717. - (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_verf);
  34718. - ap->mcnt = XDR_GETPOS (xdrs);
  34719. - XDR_DESTROY (xdrs);
  34720. - }
  34721. - return (&ap->no_client);
  34722. + ap = &authnone_private;
  34723. +
  34724. + ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
  34725. + ap->no_client.ah_ops = (struct auth_ops *) &ops;
  34726. + xdrs = &xdr_stream;
  34727. + xdrmem_create(xdrs, ap->marshalled_client,
  34728. + (u_int) MAX_MARSHAL_SIZE, XDR_ENCODE);
  34729. + (void) xdr_opaque_auth(xdrs, &ap->no_client.ah_cred);
  34730. + (void) xdr_opaque_auth(xdrs, &ap->no_client.ah_verf);
  34731. + ap->mcnt = XDR_GETPOS (xdrs);
  34732. + XDR_DESTROY (xdrs);
  34733. +}
  34734. +
  34735. +AUTH *
  34736. +authnone_create (void)
  34737. +{
  34738. +#ifdef __UCLIBC_HAS_THREADS__
  34739. + __libc_once (authnone_private_guard, authnone_create_once);
  34740. +#else
  34741. + authnone_create_once();
  34742. +#endif
  34743. + return &authnone_private.no_client;
  34744. }
  34745. libc_hidden_def(authnone_create)
  34746. static bool_t
  34747. -authnone_marshal (AUTH *client attribute_unused, XDR *xdrs)
  34748. +authnone_marshal (AUTH *client, XDR *xdrs)
  34749. {
  34750. struct authnone_private_s *ap;
  34751. - ap = authnone_private;
  34752. + /* authnone_create returned authnone_private->no_client, which is
  34753. + the first field of struct authnone_private_s. */
  34754. + ap = (struct authnone_private_s *) client;
  34755. if (ap == NULL)
  34756. return FALSE;
  34757. return (*xdrs->x_ops->x_putbytes) (xdrs, ap->marshalled_client, ap->mcnt);
  34758. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/auth_unix.c uClibc/libc/inet/rpc/auth_unix.c
  34759. --- uClibc-0.9.33.2/libc/inet/rpc/auth_unix.c 2012-05-15 09:20:09.000000000 +0200
  34760. +++ uClibc/libc/inet/rpc/auth_unix.c 2014-02-03 12:32:56.000000000 +0100
  34761. @@ -38,13 +38,11 @@
  34762. * for the credentials.
  34763. */
  34764. -#define __FORCE_GLIBC
  34765. -#include <features.h>
  34766. -
  34767. #include <limits.h>
  34768. #include <stdio.h>
  34769. #include <string.h>
  34770. #include <unistd.h>
  34771. +#include <libintl.h>
  34772. #include <sys/param.h>
  34773. #include <rpc/types.h>
  34774. @@ -52,10 +50,6 @@
  34775. #include <rpc/auth.h>
  34776. #include <rpc/auth_unix.h>
  34777. -#ifdef USE_IN_LIBIO
  34778. -# include <wchar.h>
  34779. -#endif
  34780. -
  34781. /*
  34782. * Unix authenticator operations vector
  34783. */
  34784. @@ -65,7 +59,7 @@
  34785. static bool_t authunix_refresh (AUTH *);
  34786. static void authunix_destroy (AUTH *);
  34787. -static struct auth_ops auth_unix_ops = {
  34788. +static const struct auth_ops auth_unix_ops = {
  34789. authunix_nextverf,
  34790. authunix_marshal,
  34791. authunix_validate,
  34792. @@ -111,13 +105,7 @@
  34793. if (auth == NULL || au == NULL)
  34794. {
  34795. no_memory:
  34796. -#ifdef USE_IN_LIBIO
  34797. - if (_IO_fwide (stderr, 0) > 0)
  34798. - (void) fwprintf (stderr, L"%s",
  34799. - _("authunix_create: out of memory\n"));
  34800. - else
  34801. -#endif
  34802. - (void) fputs (_("authunix_create: out of memory\n"), stderr);
  34803. + (void) fputs (_("authunix_create: out of memory\n"), stderr);
  34804. mem_free (auth, sizeof (*auth));
  34805. mem_free (au, sizeof (*au));
  34806. return NULL;
  34807. @@ -326,7 +314,7 @@
  34808. xdrmem_create (xdrs, au->au_marshed, MAX_AUTH_BYTES, XDR_ENCODE);
  34809. if ((!xdr_opaque_auth (xdrs, &(auth->ah_cred))) ||
  34810. (!xdr_opaque_auth (xdrs, &(auth->ah_verf))))
  34811. - perror (_("auth_none.c - Fatal marshalling problem"));
  34812. + perror (_("auth_unix.c - Fatal marshalling problem"));
  34813. else
  34814. au->au_mpos = XDR_GETPOS (xdrs);
  34815. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/bindresvport.c uClibc/libc/inet/rpc/bindresvport.c
  34816. --- uClibc-0.9.33.2/libc/inet/rpc/bindresvport.c 2012-05-15 09:20:09.000000000 +0200
  34817. +++ uClibc/libc/inet/rpc/bindresvport.c 2014-02-03 12:32:56.000000000 +0100
  34818. @@ -30,9 +30,6 @@
  34819. * Copyright (c) 1987 by Sun Microsystems, Inc.
  34820. */
  34821. -#define __FORCE_GLIBC
  34822. -#include <features.h>
  34823. -
  34824. #include <errno.h>
  34825. #include <unistd.h>
  34826. #include <string.h>
  34827. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_generic.c uClibc/libc/inet/rpc/clnt_generic.c
  34828. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_generic.c 2012-05-15 09:20:09.000000000 +0200
  34829. +++ uClibc/libc/inet/rpc/clnt_generic.c 2014-02-03 12:32:56.000000000 +0100
  34830. @@ -30,9 +30,6 @@
  34831. * Copyright (C) 1987, Sun Microsystems, Inc.
  34832. */
  34833. -#define __FORCE_GLIBC
  34834. -#include <features.h>
  34835. -
  34836. #include <alloca.h>
  34837. #include <errno.h>
  34838. #include <string.h>
  34839. @@ -119,7 +116,7 @@
  34840. prttmpbuf = alloca (prtbuflen);
  34841. while (getprotobyname_r (proto, &protobuf, prttmpbuf, prtbuflen, &p) != 0
  34842. || p == NULL)
  34843. - if (errno != ERANGE)
  34844. + if (errno != ERANGE)
  34845. {
  34846. struct rpc_createerr *ce = &get_rpc_createerr ();
  34847. ce->cf_stat = RPC_UNKNOWNPROTO;
  34848. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_perror.c uClibc/libc/inet/rpc/clnt_perror.c
  34849. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_perror.c 2012-05-15 09:20:09.000000000 +0200
  34850. +++ uClibc/libc/inet/rpc/clnt_perror.c 2014-02-03 12:32:56.000000000 +0100
  34851. @@ -38,19 +38,10 @@
  34852. *
  34853. */
  34854. -#define __FORCE_GLIBC
  34855. -#include <features.h>
  34856. -
  34857. #include <stdio.h>
  34858. #include <string.h>
  34859. #include "rpc_private.h"
  34860. -#ifdef USE_IN_LIBIO
  34861. -# include <wchar.h>
  34862. -# include <libio/iolibio.h>
  34863. -# define fputs(s, f) _IO_fputs (s, f)
  34864. -#endif
  34865. -
  34866. static char *auth_errmsg (enum auth_stat stat) internal_function;
  34867. #ifdef __UCLIBC_HAS_THREADS__
  34868. @@ -81,74 +72,74 @@
  34869. static const char rpc_errstr[] =
  34870. {
  34871. #define RPC_SUCCESS_IDX 0
  34872. - _("RPC: Success")
  34873. + N_("RPC: Success")
  34874. "\0"
  34875. #define RPC_CANTENCODEARGS_IDX (RPC_SUCCESS_IDX + sizeof "RPC: Success")
  34876. - _("RPC: Can't encode arguments")
  34877. + N_("RPC: Can't encode arguments")
  34878. "\0"
  34879. #define RPC_CANTDECODERES_IDX (RPC_CANTENCODEARGS_IDX \
  34880. + sizeof "RPC: Can't encode arguments")
  34881. - _("RPC: Can't decode result")
  34882. + N_("RPC: Can't decode result")
  34883. "\0"
  34884. #define RPC_CANTSEND_IDX (RPC_CANTDECODERES_IDX \
  34885. + sizeof "RPC: Can't decode result")
  34886. - _("RPC: Unable to send")
  34887. + N_("RPC: Unable to send")
  34888. "\0"
  34889. #define RPC_CANTRECV_IDX (RPC_CANTSEND_IDX \
  34890. + sizeof "RPC: Unable to send")
  34891. - _("RPC: Unable to receive")
  34892. + N_("RPC: Unable to receive")
  34893. "\0"
  34894. #define RPC_TIMEDOUT_IDX (RPC_CANTRECV_IDX \
  34895. + sizeof "RPC: Unable to receive")
  34896. - _("RPC: Timed out")
  34897. + N_("RPC: Timed out")
  34898. "\0"
  34899. #define RPC_VERSMISMATCH_IDX (RPC_TIMEDOUT_IDX \
  34900. + sizeof "RPC: Timed out")
  34901. - _("RPC: Incompatible versions of RPC")
  34902. + N_("RPC: Incompatible versions of RPC")
  34903. "\0"
  34904. #define RPC_AUTHERROR_IDX (RPC_VERSMISMATCH_IDX \
  34905. + sizeof "RPC: Incompatible versions of RPC")
  34906. - _("RPC: Authentication error")
  34907. + N_("RPC: Authentication error")
  34908. "\0"
  34909. #define RPC_PROGUNAVAIL_IDX (RPC_AUTHERROR_IDX \
  34910. + sizeof "RPC: Authentication error")
  34911. - _("RPC: Program unavailable")
  34912. + N_("RPC: Program unavailable")
  34913. "\0"
  34914. #define RPC_PROGVERSMISMATCH_IDX (RPC_PROGUNAVAIL_IDX \
  34915. + sizeof "RPC: Program unavailable")
  34916. - _("RPC: Program/version mismatch")
  34917. + N_("RPC: Program/version mismatch")
  34918. "\0"
  34919. #define RPC_PROCUNAVAIL_IDX (RPC_PROGVERSMISMATCH_IDX \
  34920. + sizeof "RPC: Program/version mismatch")
  34921. - _("RPC: Procedure unavailable")
  34922. + N_("RPC: Procedure unavailable")
  34923. "\0"
  34924. #define RPC_CANTDECODEARGS_IDX (RPC_PROCUNAVAIL_IDX \
  34925. + sizeof "RPC: Procedure unavailable")
  34926. - _("RPC: Server can't decode arguments")
  34927. + N_("RPC: Server can't decode arguments")
  34928. "\0"
  34929. #define RPC_SYSTEMERROR_IDX (RPC_CANTDECODEARGS_IDX \
  34930. + sizeof "RPC: Server can't decode arguments")
  34931. - _("RPC: Remote system error")
  34932. + N_("RPC: Remote system error")
  34933. "\0"
  34934. #define RPC_UNKNOWNHOST_IDX (RPC_SYSTEMERROR_IDX \
  34935. + sizeof "RPC: Remote system error")
  34936. - _("RPC: Unknown host")
  34937. + N_("RPC: Unknown host")
  34938. "\0"
  34939. #define RPC_UNKNOWNPROTO_IDX (RPC_UNKNOWNHOST_IDX \
  34940. + sizeof "RPC: Unknown host")
  34941. - _("RPC: Unknown protocol")
  34942. + N_("RPC: Unknown protocol")
  34943. "\0"
  34944. #define RPC_PMAPFAILURE_IDX (RPC_UNKNOWNPROTO_IDX \
  34945. + sizeof "RPC: Unknown protocol")
  34946. - _("RPC: Port mapper failure")
  34947. + N_("RPC: Port mapper failure")
  34948. "\0"
  34949. #define RPC_PROGNOTREGISTERED_IDX (RPC_PMAPFAILURE_IDX \
  34950. + sizeof "RPC: Port mapper failure")
  34951. - _("RPC: Program not registered")
  34952. + N_("RPC: Program not registered")
  34953. "\0"
  34954. #define RPC_FAILED_IDX (RPC_PROGNOTREGISTERED_IDX \
  34955. + sizeof "RPC: Program not registered")
  34956. - _("RPC: Failed (unspecified error)")
  34957. + N_("RPC: Failed (unspecified error)")
  34958. };
  34959. static const struct rpc_errtab rpc_errlist[] =
  34960. @@ -189,19 +180,14 @@
  34961. return (char*)_(rpc_errstr + rpc_errlist[i].message_off);
  34962. }
  34963. }
  34964. - return _("RPC: (unknown error code)");
  34965. + return N_("RPC: (unknown error code)");
  34966. }
  34967. libc_hidden_def(clnt_sperrno)
  34968. void
  34969. clnt_perrno (enum clnt_stat num)
  34970. {
  34971. -#ifdef USE_IN_LIBIO
  34972. - if (_IO_fwide (stderr, 0) > 0)
  34973. - (void) fwprintf (stderr, L"%s", clnt_sperrno (num));
  34974. - else
  34975. -#endif
  34976. - (void) fputs (clnt_sperrno (num), stderr);
  34977. + (void) fputs (clnt_sperrno (num), stderr);
  34978. }
  34979. /*
  34980. @@ -295,12 +281,7 @@
  34981. void
  34982. clnt_perror (CLIENT * rpch, const char *msg)
  34983. {
  34984. -#ifdef USE_IN_LIBIO
  34985. - if (_IO_fwide (stderr, 0) > 0)
  34986. - (void) fwprintf (stderr, L"%s", clnt_sperror (rpch, msg));
  34987. - else
  34988. -#endif
  34989. - (void) fputs (clnt_sperror (rpch, msg), stderr);
  34990. + (void) fputs (clnt_sperror (rpch, msg), stderr);
  34991. }
  34992. libc_hidden_def(clnt_perror)
  34993. @@ -352,12 +333,7 @@
  34994. void
  34995. clnt_pcreateerror (const char *msg)
  34996. {
  34997. -#ifdef USE_IN_LIBIO
  34998. - if (_IO_fwide (stderr, 0) > 0)
  34999. - (void) fwprintf (stderr, L"%s", clnt_spcreateerror (msg));
  35000. - else
  35001. -#endif
  35002. - (void) fputs (clnt_spcreateerror (msg), stderr);
  35003. + (void) fputs (clnt_spcreateerror (msg), stderr);
  35004. }
  35005. struct auth_errtab
  35006. @@ -369,34 +345,34 @@
  35007. static const char auth_errstr[] =
  35008. {
  35009. #define AUTH_OK_IDX 0
  35010. - _("Authentication OK")
  35011. + N_("Authentication OK")
  35012. "\0"
  35013. #define AUTH_BADCRED_IDX (AUTH_OK_IDX + sizeof "Authentication OK")
  35014. - _("Invalid client credential")
  35015. + N_("Invalid client credential")
  35016. "\0"
  35017. #define AUTH_REJECTEDCRED_IDX (AUTH_BADCRED_IDX \
  35018. + sizeof "Invalid client credential")
  35019. - _("Server rejected credential")
  35020. + N_("Server rejected credential")
  35021. "\0"
  35022. #define AUTH_BADVERF_IDX (AUTH_REJECTEDCRED_IDX \
  35023. + sizeof "Server rejected credential")
  35024. - _("Invalid client verifier")
  35025. + N_("Invalid client verifier")
  35026. "\0"
  35027. #define AUTH_REJECTEDVERF_IDX (AUTH_BADVERF_IDX \
  35028. + sizeof "Invalid client verifier")
  35029. - _("Server rejected verifier")
  35030. + N_("Server rejected verifier")
  35031. "\0"
  35032. #define AUTH_TOOWEAK_IDX (AUTH_REJECTEDVERF_IDX \
  35033. + sizeof "Server rejected verifier")
  35034. - _("Client credential too weak")
  35035. + N_("Client credential too weak")
  35036. "\0"
  35037. #define AUTH_INVALIDRESP_IDX (AUTH_TOOWEAK_IDX \
  35038. + sizeof "Client credential too weak")
  35039. - _("Invalid server verifier")
  35040. + N_("Invalid server verifier")
  35041. "\0"
  35042. #define AUTH_FAILED_IDX (AUTH_INVALIDRESP_IDX \
  35043. + sizeof "Invalid server verifier")
  35044. - _("Failed (unspecified error)")
  35045. + N_("Failed (unspecified error)")
  35046. };
  35047. static const struct auth_errtab auth_errlist[] =
  35048. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_raw.c uClibc/libc/inet/rpc/clnt_raw.c
  35049. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_raw.c 2012-05-15 09:20:09.000000000 +0200
  35050. +++ uClibc/libc/inet/rpc/clnt_raw.c 2014-02-03 12:32:56.000000000 +0100
  35051. @@ -42,7 +42,6 @@
  35052. * any interference from the kernel.
  35053. */
  35054. -#define __FORCE_GLIBC
  35055. #include <features.h>
  35056. #include "rpc_private.h"
  35057. #include <rpc/svc.h>
  35058. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_simple.c uClibc/libc/inet/rpc/clnt_simple.c
  35059. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_simple.c 2012-05-15 09:20:09.000000000 +0200
  35060. +++ uClibc/libc/inet/rpc/clnt_simple.c 2014-02-03 12:32:56.000000000 +0100
  35061. @@ -38,9 +38,6 @@
  35062. * Copyright (C) 1984, Sun Microsystems, Inc.
  35063. */
  35064. -#define __FORCE_GLIBC
  35065. -#include <features.h>
  35066. -
  35067. #include <alloca.h>
  35068. #include <errno.h>
  35069. #include <stdio.h>
  35070. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_tcp.c uClibc/libc/inet/rpc/clnt_tcp.c
  35071. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_tcp.c 2012-05-15 09:20:09.000000000 +0200
  35072. +++ uClibc/libc/inet/rpc/clnt_tcp.c 2014-02-03 12:32:56.000000000 +0100
  35073. @@ -50,22 +50,14 @@
  35074. * Now go hang yourself.
  35075. */
  35076. -#define __FORCE_GLIBC
  35077. -#include <features.h>
  35078. -
  35079. #include <netdb.h>
  35080. #include <errno.h>
  35081. #include <stdio.h>
  35082. #include <unistd.h>
  35083. -#include <rpc/rpc.h>
  35084. +#include "rpc_private.h"
  35085. #include <sys/poll.h>
  35086. #include <sys/socket.h>
  35087. #include <rpc/pmap_clnt.h>
  35088. -#ifdef USE_IN_LIBIO
  35089. -# include <wchar.h>
  35090. -#endif
  35091. -
  35092. -extern u_long _create_xid (void) attribute_hidden;
  35093. #define MCALL_MSG_SIZE 24
  35094. @@ -130,13 +122,7 @@
  35095. if (h == NULL || ct == NULL)
  35096. {
  35097. struct rpc_createerr *ce = &get_rpc_createerr ();
  35098. -#ifdef USE_IN_LIBIO
  35099. - if (_IO_fwide (stderr, 0) > 0)
  35100. - (void) fwprintf (stderr, L"%s",
  35101. - _("clnttcp_create: out of memory\n"));
  35102. - else
  35103. -#endif
  35104. - (void) fputs (_("clnttcp_create: out of memory\n"), stderr);
  35105. + (void) fputs (_("clnttcp_create: out of memory\n"), stderr);
  35106. ce->cf_stat = RPC_SYSTEMERROR;
  35107. ce->cf_error.re_errno = ENOMEM;
  35108. goto fooy;
  35109. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_udp.c uClibc/libc/inet/rpc/clnt_udp.c
  35110. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_udp.c 2012-05-15 09:20:09.000000000 +0200
  35111. +++ uClibc/libc/inet/rpc/clnt_udp.c 2014-02-03 12:32:56.000000000 +0100
  35112. @@ -37,12 +37,9 @@
  35113. * Copyright (C) 1984, Sun Microsystems, Inc.
  35114. */
  35115. -#define __FORCE_GLIBC
  35116. -#include <features.h>
  35117. -
  35118. #include <stdio.h>
  35119. #include <unistd.h>
  35120. -#include <rpc/rpc.h>
  35121. +#include "rpc_private.h"
  35122. #include <rpc/xdr.h>
  35123. #include <rpc/clnt.h>
  35124. #include <sys/poll.h>
  35125. @@ -52,20 +49,12 @@
  35126. #include <errno.h>
  35127. #include <rpc/pmap_clnt.h>
  35128. #include <net/if.h>
  35129. -#ifdef USE_IN_LIBIO
  35130. -# include <wchar.h>
  35131. -#endif
  35132. #ifdef IP_RECVERR
  35133. #include "errqueue.h"
  35134. #include <sys/uio.h>
  35135. #endif
  35136. -/* CMSG_NXTHDR is using it */
  35137. -
  35138. -
  35139. -extern u_long _create_xid (void) attribute_hidden;
  35140. -
  35141. /*
  35142. * UDP bases client side rpc operations
  35143. */
  35144. @@ -116,7 +105,7 @@
  35145. * NB: The rpch->cl_auth is initialized to null authentication.
  35146. * Caller may wish to set this something more useful.
  35147. *
  35148. - * wait is the amount of time used between retransmitting a call if
  35149. + * _wait is the amount of time used between retransmitting a call if
  35150. * no response has been heard; retransmission occurs until the actual
  35151. * rpc call times out.
  35152. *
  35153. @@ -125,7 +114,7 @@
  35154. */
  35155. CLIENT *
  35156. clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
  35157. - struct timeval wait, int *sockp, u_int sendsz,
  35158. + struct timeval _wait, int *sockp, u_int sendsz,
  35159. u_int recvsz)
  35160. {
  35161. CLIENT *cl;
  35162. @@ -139,13 +128,7 @@
  35163. if (cl == NULL || cu == NULL)
  35164. {
  35165. struct rpc_createerr *ce = &get_rpc_createerr ();
  35166. -#ifdef USE_IN_LIBIO
  35167. - if (_IO_fwide (stderr, 0) > 0)
  35168. - (void) fwprintf (stderr, L"%s",
  35169. - _("clntudp_create: out of memory\n"));
  35170. - else
  35171. -#endif
  35172. - (void) fputs (_("clntudp_create: out of memory\n"), stderr);
  35173. + (void) fputs (_("clntudp_create: out of memory\n"), stderr);
  35174. ce->cf_stat = RPC_SYSTEMERROR;
  35175. ce->cf_error.re_errno = ENOMEM;
  35176. goto fooy;
  35177. @@ -166,7 +149,7 @@
  35178. cl->cl_private = (caddr_t) cu;
  35179. cu->cu_raddr = *raddr;
  35180. cu->cu_rlen = sizeof (cu->cu_raddr);
  35181. - cu->cu_wait = wait;
  35182. + cu->cu_wait = _wait;
  35183. cu->cu_total.tv_sec = -1;
  35184. cu->cu_total.tv_usec = -1;
  35185. cu->cu_sendsz = sendsz;
  35186. @@ -224,10 +207,10 @@
  35187. libc_hidden_def(clntudp_bufcreate)
  35188. CLIENT *
  35189. -clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version, struct timeval wait, int *sockp)
  35190. +clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version, struct timeval _wait, int *sockp)
  35191. {
  35192. - return clntudp_bufcreate (raddr, program, version, wait, sockp,
  35193. + return clntudp_bufcreate (raddr, program, version, _wait, sockp,
  35194. UDPMSGSIZE, UDPMSGSIZE);
  35195. }
  35196. libc_hidden_def(clntudp_create)
  35197. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_unix.c uClibc/libc/inet/rpc/clnt_unix.c
  35198. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_unix.c 2012-05-15 09:20:09.000000000 +0200
  35199. +++ uClibc/libc/inet/rpc/clnt_unix.c 2014-02-03 12:32:56.000000000 +0100
  35200. @@ -46,24 +46,15 @@
  35201. * Now go hang yourself.
  35202. */
  35203. -#define __FORCE_GLIBC
  35204. -#include <features.h>
  35205. -
  35206. #include <netdb.h>
  35207. #include <errno.h>
  35208. #include <stdio.h>
  35209. #include <unistd.h>
  35210. -#include <rpc/rpc.h>
  35211. +#include "rpc_private.h"
  35212. #include <sys/uio.h>
  35213. #include <sys/poll.h>
  35214. #include <sys/socket.h>
  35215. #include <rpc/pmap_clnt.h>
  35216. -#ifdef USE_IN_LIBIO
  35217. -# include <wchar.h>
  35218. -#endif
  35219. -
  35220. -
  35221. -extern u_long _create_xid (void) attribute_hidden;
  35222. #define MCALL_MSG_SIZE 24
  35223. @@ -128,13 +119,7 @@
  35224. if (h == NULL || ct == NULL)
  35225. {
  35226. struct rpc_createerr *ce = &get_rpc_createerr ();
  35227. -#ifdef USE_IN_LIBIO
  35228. - if (_IO_fwide (stderr, 0) > 0)
  35229. - (void) fwprintf (stderr, L"%s",
  35230. - _("clntunix_create: out of memory\n"));
  35231. - else
  35232. -#endif
  35233. - (void) fputs (_("clntunix_create: out of memory\n"), stderr);
  35234. + (void) fputs (_("clntunix_create: out of memory\n"), stderr);
  35235. ce->cf_stat = RPC_SYSTEMERROR;
  35236. ce->cf_error.re_errno = ENOMEM;
  35237. goto fooy;
  35238. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/create_xid.c uClibc/libc/inet/rpc/create_xid.c
  35239. --- uClibc-0.9.33.2/libc/inet/rpc/create_xid.c 2012-05-15 09:20:09.000000000 +0200
  35240. +++ uClibc/libc/inet/rpc/create_xid.c 2014-02-03 12:32:56.000000000 +0100
  35241. @@ -13,17 +13,13 @@
  35242. Lesser General Public License for more details.
  35243. You should have received a copy of the GNU Lesser General Public
  35244. - License along with the GNU C Library; if not, write to the Free
  35245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  35246. - 02111-1307 USA. */
  35247. -
  35248. -#define __FORCE_GLIBC
  35249. -#include <features.h>
  35250. + License along with the GNU C Library; if not, see
  35251. + <http://www.gnu.org/licenses/>. */
  35252. #include <unistd.h>
  35253. #include <stdlib.h>
  35254. #include <sys/time.h>
  35255. -#include <rpc/rpc.h>
  35256. +#include "rpc_private.h"
  35257. /* The RPC code is not threadsafe, but new code should be threadsafe. */
  35258. @@ -34,7 +30,6 @@
  35259. static smallint is_initialized;
  35260. static struct drand48_data __rpc_lrand48_data;
  35261. -u_long _create_xid (void) attribute_hidden;
  35262. u_long _create_xid (void)
  35263. {
  35264. long res;
  35265. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/errqueue.h uClibc/libc/inet/rpc/errqueue.h
  35266. --- uClibc-0.9.33.2/libc/inet/rpc/errqueue.h 2012-05-15 09:20:09.000000000 +0200
  35267. +++ uClibc/libc/inet/rpc/errqueue.h 2014-02-03 12:32:56.000000000 +0100
  35268. @@ -12,9 +12,8 @@
  35269. Lesser General Public License for more details.
  35270. You should have received a copy of the GNU Lesser General Public
  35271. - License along with the GNU C Library; if not, write to the Free
  35272. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  35273. - 02111-1307 USA. */
  35274. + License along with the GNU C Library; if not, see
  35275. + <http://www.gnu.org/licenses/>. */
  35276. /* Linux version. */
  35277. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/get_myaddress.c uClibc/libc/inet/rpc/get_myaddress.c
  35278. --- uClibc-0.9.33.2/libc/inet/rpc/get_myaddress.c 2012-05-15 09:20:09.000000000 +0200
  35279. +++ uClibc/libc/inet/rpc/get_myaddress.c 2014-02-03 12:32:56.000000000 +0100
  35280. @@ -44,6 +44,7 @@
  35281. #include <sys/socket.h>
  35282. #include <stdio.h>
  35283. #include <unistd.h>
  35284. +#include <libintl.h>
  35285. #include <net/if.h>
  35286. #include <sys/ioctl.h>
  35287. /* Order of following two #includes reversed by roland@gnu */
  35288. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/getrpcent.c uClibc/libc/inet/rpc/getrpcent.c
  35289. --- uClibc-0.9.33.2/libc/inet/rpc/getrpcent.c 2012-05-15 09:20:09.000000000 +0200
  35290. +++ uClibc/libc/inet/rpc/getrpcent.c 2014-02-03 12:32:56.000000000 +0100
  35291. @@ -33,8 +33,6 @@
  35292. * Copyright (c) 1985 by Sun Microsystems, Inc.
  35293. */
  35294. -#define __FORCE_GLIBC
  35295. -#include <features.h>
  35296. #include <stdio.h>
  35297. #include <string.h>
  35298. #include <sys/types.h>
  35299. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/getrpcport.c uClibc/libc/inet/rpc/getrpcport.c
  35300. --- uClibc-0.9.33.2/libc/inet/rpc/getrpcport.c 2012-05-15 09:20:09.000000000 +0200
  35301. +++ uClibc/libc/inet/rpc/getrpcport.c 2014-02-03 12:32:56.000000000 +0100
  35302. @@ -35,9 +35,6 @@
  35303. * Copyright (c) 1985 by Sun Microsystems, Inc.
  35304. */
  35305. -#define __FORCE_GLIBC
  35306. -#include <features.h>
  35307. -
  35308. #include <alloca.h>
  35309. #include <errno.h>
  35310. #include <stdio.h>
  35311. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/Makefile.in uClibc/libc/inet/rpc/Makefile.in
  35312. --- uClibc-0.9.33.2/libc/inet/rpc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  35313. +++ uClibc/libc/inet/rpc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  35314. @@ -9,9 +9,8 @@
  35315. CFLAGS-rpc := -fno-strict-aliasing
  35316. -ifneq ($(UCLIBC_HAS_FULL_RPC),y)
  35317. # For now, only compile the stuff needed to do an NFS mount....
  35318. -CSRC:= authunix_prot.c auth_none.c auth_unix.c bindresvport.c \
  35319. +CSRC_NFS = authunix_prot.c auth_none.c auth_unix.c bindresvport.c \
  35320. clnt_perror.c clnt_simple.c clnt_tcp.c clnt_udp.c \
  35321. create_xid.c getrpcent.c \
  35322. pmap_clnt.c pm_getmaps.c pm_getport.c pmap_prot.c pmap_prot2.c \
  35323. @@ -19,27 +18,23 @@
  35324. rpc_prot.c rpc_thread.c rtime.c ruserpass.c sa_len.c \
  35325. svc.c svc_auth.c svc_authux.c \
  35326. xdr.c xdr_array.c xdr_mem.c xdr_rec.c xdr_reference.c
  35327. -endif
  35328. INET_RPC_DIR:=$(top_srcdir)libc/inet/rpc
  35329. INET_RPC_OUT:=$(top_builddir)libc/inet/rpc
  35330. -ifeq ($(UCLIBC_HAS_FULL_RPC),y)
  35331. -INET_RPC_SRC:=$(wildcard $(INET_RPC_DIR)/*.c)
  35332. -else
  35333. -INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC))
  35334. -endif
  35335. -# rpc_thread.oS is better, because the header adds unneeded references to __pthread_internal_tsd*
  35336. -INET_RPC_SRC:=$(filter-out $(INET_RPC_DIR)/rpc_thread.c,$(INET_RPC_SRC))
  35337. +CSRC_ALL = $(notdir $(wildcard $(INET_RPC_DIR)/*.c))
  35338. +CSRC-y := $(if $(UCLIBC_HAS_FULL_RPC),$(CSRC_ALL),$(CSRC_NFS))
  35339. +# rpc_thread.oS is better, because the header adds unneeded references
  35340. +# to __pthread_internal_tsd*
  35341. +CSRC-y := $(filter-out rpc_thread.c,$(CSRC-y))
  35342. -INET_RPC_OBJ:=$(patsubst $(INET_RPC_DIR)/%.c,$(INET_RPC_OUT)/%.o,$(INET_RPC_SRC))
  35343. -
  35344. -libc-static-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OUT)/rpc_thread.o
  35345. -libc-shared-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OUT)/rpc_thread.oS
  35346. +INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC-y))
  35347. +INET_RPC_OBJ:=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(CSRC-y))
  35348. +libc-static-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.o
  35349. +libc-shared-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.oS
  35350. libc-nomulti-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.o
  35351. -
  35352. -libc-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ)
  35353. +libc-$(UCLIBC_HAS_RPC) += $(INET_RPC_OBJ)
  35354. objclean-y+=CLEAN_libc/inet/rpc
  35355. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pmap_clnt.c uClibc/libc/inet/rpc/pmap_clnt.c
  35356. --- uClibc-0.9.33.2/libc/inet/rpc/pmap_clnt.c 2012-05-15 09:20:09.000000000 +0200
  35357. +++ uClibc/libc/inet/rpc/pmap_clnt.c 2014-02-03 12:32:56.000000000 +0100
  35358. @@ -34,9 +34,6 @@
  35359. * Client interface to pmap rpc service.
  35360. */
  35361. -#define __FORCE_GLIBC
  35362. -#include <features.h>
  35363. -
  35364. #include <stdio.h>
  35365. #include <unistd.h>
  35366. #include <net/if.h>
  35367. @@ -44,7 +41,7 @@
  35368. #include <sys/socket.h>
  35369. #include <netinet/in.h>
  35370. #include <arpa/inet.h>
  35371. -#include <rpc/rpc.h>
  35372. +#include "rpc_private.h"
  35373. #include <rpc/pmap_prot.h>
  35374. #include <rpc/pmap_clnt.h>
  35375. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pmap_rmt.c uClibc/libc/inet/rpc/pmap_rmt.c
  35376. --- uClibc-0.9.33.2/libc/inet/rpc/pmap_rmt.c 2012-05-15 09:20:09.000000000 +0200
  35377. +++ uClibc/libc/inet/rpc/pmap_rmt.c 2014-02-03 12:32:56.000000000 +0100
  35378. @@ -39,12 +39,9 @@
  35379. * Copyright (C) 1984, Sun Microsystems, Inc.
  35380. */
  35381. -#define __FORCE_GLIBC
  35382. -#include <features.h>
  35383. -
  35384. #include <unistd.h>
  35385. #include <string.h>
  35386. -#include <rpc/rpc.h>
  35387. +#include "rpc_private.h"
  35388. #include <rpc/pmap_prot.h>
  35389. #include <rpc/pmap_clnt.h>
  35390. #include <rpc/pmap_rmt.h>
  35391. @@ -52,17 +49,12 @@
  35392. #include <sys/socket.h>
  35393. #include <stdio.h>
  35394. #include <errno.h>
  35395. -#undef _POSIX_SOURCE /* Ultrix <sys/param.h> needs --roland@gnu */
  35396. #include <sys/param.h> /* Ultrix needs before net/if --roland@gnu */
  35397. #include <net/if.h>
  35398. #include <sys/ioctl.h>
  35399. #include <arpa/inet.h>
  35400. #define MAX_BROADCAST_SIZE 1400
  35401. -
  35402. -
  35403. -extern u_long _create_xid (void) attribute_hidden;
  35404. -
  35405. static const struct timeval timeout = {3, 0};
  35406. /*
  35407. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pm_getmaps.c uClibc/libc/inet/rpc/pm_getmaps.c
  35408. --- uClibc-0.9.33.2/libc/inet/rpc/pm_getmaps.c 2012-05-15 09:20:09.000000000 +0200
  35409. +++ uClibc/libc/inet/rpc/pm_getmaps.c 2014-02-03 12:32:56.000000000 +0100
  35410. @@ -39,7 +39,7 @@
  35411. * Copyright (C) 1984, Sun Microsystems, Inc.
  35412. */
  35413. -#include <rpc/rpc.h>
  35414. +#include "rpc_private.h"
  35415. #include <rpc/pmap_prot.h>
  35416. #include <rpc/pmap_clnt.h>
  35417. #include <netdb.h>
  35418. @@ -78,7 +78,7 @@
  35419. }
  35420. CLNT_DESTROY (client);
  35421. }
  35422. - /* (void)__close(_socket); CLNT_DESTROY already closed it */
  35423. + /* (void)close(_socket); CLNT_DESTROY already closed it */
  35424. address->sin_port = 0;
  35425. return head;
  35426. }
  35427. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pm_getport.c uClibc/libc/inet/rpc/pm_getport.c
  35428. --- uClibc-0.9.33.2/libc/inet/rpc/pm_getport.c 2012-05-15 09:20:09.000000000 +0200
  35429. +++ uClibc/libc/inet/rpc/pm_getport.c 2014-02-03 12:32:56.000000000 +0100
  35430. @@ -65,7 +65,19 @@
  35431. struct pmap parms;
  35432. address->sin_port = htons (PMAPPORT);
  35433. - client = clntudp_bufcreate (address, PMAPPROG,
  35434. + if (protocol == IPPROTO_TCP)
  35435. + {
  35436. + // glibc does this:
  35437. + ///* Don't need a reserved port to get ports from the portmapper. */
  35438. + //socket = __get_socket(address); // does socket(TCP),bind(),connect(address)
  35439. + //if (_socket != -1)
  35440. + // closeit = true;
  35441. + // do we need/want to do the same?
  35442. + client = clnttcp_create (address, PMAPPROG,
  35443. + PMAPVERS, &_socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
  35444. + }
  35445. + else
  35446. + client = clntudp_bufcreate (address, PMAPPROG,
  35447. PMAPVERS, timeout, &_socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
  35448. if (client != (CLIENT *) NULL)
  35449. {
  35450. @@ -87,7 +99,7 @@
  35451. }
  35452. CLNT_DESTROY (client);
  35453. }
  35454. - /* (void)__close(_socket); CLNT_DESTROY already closed it */
  35455. + /* (void)close(_socket); CLNT_DESTROY already closed it */
  35456. address->sin_port = 0;
  35457. return port;
  35458. }
  35459. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rcmd.c uClibc/libc/inet/rpc/rcmd.c
  35460. --- uClibc-0.9.33.2/libc/inet/rpc/rcmd.c 2012-05-15 09:20:09.000000000 +0200
  35461. +++ uClibc/libc/inet/rpc/rcmd.c 2014-02-03 12:32:56.000000000 +0100
  35462. @@ -76,7 +76,6 @@
  35463. #include <pwd.h>
  35464. #include <errno.h>
  35465. #include <stdio.h>
  35466. -#include <stdio_ext.h>
  35467. #include <ctype.h>
  35468. #include <string.h>
  35469. #include <libintl.h>
  35470. @@ -87,6 +86,11 @@
  35471. #include <sys/uio.h>
  35472. #include <bits/uClibc_alloc.h>
  35473. +/* sigsetmask and sigblock are not provided anymore, until this file is corrected,
  35474. + * include the sources */
  35475. +#include "../../signal/sigblock.c"
  35476. +#include "../../signal/sigsetmask.c"
  35477. +
  35478. /* some forward declarations */
  35479. static int __ivaliduser2(FILE *hostf, u_int32_t raddr,
  35480. @@ -146,7 +150,7 @@
  35481. pfd[1].events = POLLIN;
  35482. *ahost = hp->h_name;
  35483. - oldmask = sigblock(sigmask(SIGURG)); /* __sigblock */
  35484. + oldmask = sigblock(__sigmask(SIGURG)); /* sigblock */
  35485. for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
  35486. s = rresvport(&lport);
  35487. if (s < 0) {
  35488. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rexec.c uClibc/libc/inet/rpc/rexec.c
  35489. --- uClibc-0.9.33.2/libc/inet/rpc/rexec.c 2012-05-15 09:20:09.000000000 +0200
  35490. +++ uClibc/libc/inet/rpc/rexec.c 2014-02-03 12:32:56.000000000 +0100
  35491. @@ -27,8 +27,6 @@
  35492. * SUCH DAMAGE.
  35493. */
  35494. -#define __FORCE_GLIBC
  35495. -#include <features.h>
  35496. #include <sys/types.h>
  35497. #include <sys/socket.h>
  35498. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_cmsg.c uClibc/libc/inet/rpc/rpc_cmsg.c
  35499. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_cmsg.c 2012-05-15 09:20:09.000000000 +0200
  35500. +++ uClibc/libc/inet/rpc/rpc_cmsg.c 2014-02-03 12:32:56.000000000 +0100
  35501. @@ -38,9 +38,6 @@
  35502. *
  35503. */
  35504. -#define __FORCE_GLIBC
  35505. -#include <features.h>
  35506. -
  35507. #include <string.h>
  35508. #include <sys/param.h>
  35509. #include <rpc/rpc.h>
  35510. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_dtablesize.c uClibc/libc/inet/rpc/rpc_dtablesize.c
  35511. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_dtablesize.c 2012-05-15 09:20:09.000000000 +0200
  35512. +++ uClibc/libc/inet/rpc/rpc_dtablesize.c 2014-02-03 12:32:56.000000000 +0100
  35513. @@ -31,10 +31,6 @@
  35514. static char sccsid[] = "@(#)rpc_dtablesize.c 1.2 87/08/11 Copyr 1987 Sun Micro";
  35515. #endif
  35516. -#define __FORCE_GLIBC
  35517. -#define __USE_BSD
  35518. -#include <features.h>
  35519. -
  35520. #include <unistd.h>
  35521. #include <rpc/clnt.h>
  35522. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_private.h uClibc/libc/inet/rpc/rpc_private.h
  35523. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_private.h 2012-05-15 09:20:09.000000000 +0200
  35524. +++ uClibc/libc/inet/rpc/rpc_private.h 2014-02-03 12:32:56.000000000 +0100
  35525. @@ -1,5 +1,7 @@
  35526. -#ifndef _RPC_RPC_H
  35527. +#ifndef _RPC_PRIVATE_H
  35528. +#define _RPC_PRIVATE_H
  35529. #include <rpc/rpc.h>
  35530. +#include <libintl.h>
  35531. /* Now define the internal interfaces. */
  35532. extern u_long _create_xid (void) attribute_hidden;
  35533. @@ -12,14 +14,13 @@
  35534. */
  35535. #ifdef __UCLIBC_HAS_THREADS__
  35536. #include <pthread.h>
  35537. +#include <bits/libc-lock.h>
  35538. struct rpc_thread_variables {
  35539. fd_set svc_fdset_s; /* Global, rpc_common.c */
  35540. struct rpc_createerr rpc_createerr_s; /* Global, rpc_common.c */
  35541. struct pollfd *svc_pollfd_s; /* Global, rpc_common.c */
  35542. int svc_max_pollfd_s; /* Global, rpc_common.c */
  35543. - void *authnone_private_s; /* auth_none.c */
  35544. -
  35545. void *clnt_perr_buf_s; /* clnt_perr.c */
  35546. void *clntraw_private_s; /* clnt_raw.c */
  35547. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_prot.c uClibc/libc/inet/rpc/rpc_prot.c
  35548. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_prot.c 2012-05-15 09:20:09.000000000 +0200
  35549. +++ uClibc/libc/inet/rpc/rpc_prot.c 2014-02-03 12:32:56.000000000 +0100
  35550. @@ -44,9 +44,6 @@
  35551. * routines are also in this program.
  35552. */
  35553. -#define __FORCE_GLIBC
  35554. -#include <features.h>
  35555. -
  35556. #include <sys/param.h>
  35557. #include <rpc/rpc.h>
  35558. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_thread.c uClibc/libc/inet/rpc/rpc_thread.c
  35559. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_thread.c 2012-05-15 09:20:09.000000000 +0200
  35560. +++ uClibc/libc/inet/rpc/rpc_thread.c 2014-02-03 12:32:56.000000000 +0100
  35561. @@ -4,8 +4,6 @@
  35562. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  35563. */
  35564. -#define __FORCE_GLIBC
  35565. -#include <features.h>
  35566. #include <stdio.h>
  35567. #include <assert.h>
  35568. #include "rpc_private.h"
  35569. @@ -32,7 +30,6 @@
  35570. __rpc_thread_svc_cleanup ();
  35571. __rpc_thread_clnt_cleanup ();
  35572. /*__rpc_thread_key_cleanup (); */
  35573. - free (tvp->authnone_private_s);
  35574. free (tvp->clnt_perr_buf_s);
  35575. free (tvp->clntraw_private_s);
  35576. free (tvp->svcraw_private_s);
  35577. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rtime.c uClibc/libc/inet/rpc/rtime.c
  35578. --- uClibc-0.9.33.2/libc/inet/rpc/rtime.c 2012-05-15 09:20:09.000000000 +0200
  35579. +++ uClibc/libc/inet/rpc/rtime.c 2014-02-03 12:32:56.000000000 +0100
  35580. @@ -43,9 +43,6 @@
  35581. * what unix uses.
  35582. */
  35583. -#define __FORCE_GLIBC
  35584. -#include <features.h>
  35585. -
  35586. #include <stdio.h>
  35587. #include <unistd.h>
  35588. #include <rpc/rpc.h>
  35589. @@ -150,4 +147,3 @@
  35590. timep->tv_usec = 0;
  35591. return 0;
  35592. }
  35593. -libc_hidden_def (rtime)
  35594. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/ruserpass.c uClibc/libc/inet/rpc/ruserpass.c
  35595. --- uClibc-0.9.33.2/libc/inet/rpc/ruserpass.c 2012-05-15 09:20:09.000000000 +0200
  35596. +++ uClibc/libc/inet/rpc/ruserpass.c 2014-02-03 12:32:56.000000000 +0100
  35597. @@ -27,8 +27,6 @@
  35598. * SUCH DAMAGE.
  35599. */
  35600. -#define __FORCE_GLIBC
  35601. -#include <features.h>
  35602. #include <sys/types.h>
  35603. #include <sys/stat.h>
  35604. @@ -37,13 +35,14 @@
  35605. #include <errno.h>
  35606. #include <netdb.h>
  35607. #include <stdio.h>
  35608. -#include <stdio_ext.h>
  35609. +#ifdef __UCLIBC_HAS_THREADS__
  35610. +# include <stdio_ext.h>
  35611. +#endif
  35612. #include <stdlib.h>
  35613. #include <string.h>
  35614. #include <unistd.h>
  35615. +#include <libintl.h>
  35616. -
  35617. -#define _(X) (X)
  35618. /* #include "ftp_var.h" */
  35619. static int token (void);
  35620. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/sa_len.c uClibc/libc/inet/rpc/sa_len.c
  35621. --- uClibc-0.9.33.2/libc/inet/rpc/sa_len.c 2012-05-15 09:20:09.000000000 +0200
  35622. +++ uClibc/libc/inet/rpc/sa_len.c 2014-02-03 12:32:56.000000000 +0100
  35623. @@ -12,17 +12,14 @@
  35624. Lesser General Public License for more details.
  35625. You should have received a copy of the GNU Lesser General Public
  35626. - License along with the GNU C Library; if not, write to the Free
  35627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  35628. - 02111-1307 USA. */
  35629. + License along with the GNU C Library; if not, see
  35630. + <http://www.gnu.org/licenses/>. */
  35631. -#define __FORCE_GLIBC
  35632. -#include <features.h>
  35633. #include <sys/socket.h>
  35634. #include <netinet/in.h>
  35635. -#include <netipx/ipx.h>
  35636. #include <sys/un.h>
  35637. #if 0
  35638. +#include <netipx/ipx.h>
  35639. #include <netash/ash.h>
  35640. #include <netatalk/at.h>
  35641. #include <netax25/ax25.h>
  35642. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_auth.c uClibc/libc/inet/rpc/svc_auth.c
  35643. --- uClibc-0.9.33.2/libc/inet/rpc/svc_auth.c 2012-05-15 09:20:09.000000000 +0200
  35644. +++ uClibc/libc/inet/rpc/svc_auth.c 2014-02-03 12:32:56.000000000 +0100
  35645. @@ -58,9 +58,9 @@
  35646. static enum auth_stat _svcauth_null (struct svc_req *, struct rpc_msg *);
  35647. /* no authentication */
  35648. -extern enum auth_stat _svcauth_unix (struct svc_req *, struct rpc_msg *);
  35649. +extern enum auth_stat _svcauth_unix (struct svc_req *, struct rpc_msg *) attribute_hidden;
  35650. /* unix style (uid, gids) */
  35651. -extern enum auth_stat _svcauth_short (struct svc_req *, struct rpc_msg *);
  35652. +extern enum auth_stat _svcauth_short (struct svc_req *, struct rpc_msg *) attribute_hidden;
  35653. /* short hand unix style */
  35654. #ifdef CONFIG_AUTH_DES
  35655. extern enum auth_stat _svcauth_des (struct svc_req *, struct rpc_msg *);
  35656. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_authux.c uClibc/libc/inet/rpc/svc_authux.c
  35657. --- uClibc-0.9.33.2/libc/inet/rpc/svc_authux.c 2012-05-15 09:20:09.000000000 +0200
  35658. +++ uClibc/libc/inet/rpc/svc_authux.c 2014-02-03 12:32:56.000000000 +0100
  35659. @@ -38,9 +38,6 @@
  35660. * Copyright (C) 1984, Sun Microsystems, Inc.
  35661. */
  35662. -#define __FORCE_GLIBC
  35663. -#include <features.h>
  35664. -
  35665. #include <stdio.h>
  35666. #include <string.h>
  35667. #include <rpc/rpc.h>
  35668. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc.c uClibc/libc/inet/rpc/svc.c
  35669. --- uClibc-0.9.33.2/libc/inet/rpc/svc.c 2012-05-15 09:20:09.000000000 +0200
  35670. +++ uClibc/libc/inet/rpc/svc.c 2014-02-03 12:32:56.000000000 +0100
  35671. @@ -36,9 +36,6 @@
  35672. * Copyright (C) 1984, Sun Microsystems, Inc.
  35673. */
  35674. -#define __FORCE_GLIBC
  35675. -#include <features.h>
  35676. -
  35677. #include <errno.h>
  35678. #include <unistd.h>
  35679. #include <string.h>
  35680. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_raw.c uClibc/libc/inet/rpc/svc_raw.c
  35681. --- uClibc-0.9.33.2/libc/inet/rpc/svc_raw.c 2012-05-15 09:20:09.000000000 +0200
  35682. +++ uClibc/libc/inet/rpc/svc_raw.c 2014-02-03 12:32:56.000000000 +0100
  35683. @@ -40,8 +40,6 @@
  35684. * Copyright (C) 1984, Sun Microsystems, Inc.
  35685. */
  35686. -#define __FORCE_GLIBC
  35687. -#include <features.h>
  35688. #include "rpc_private.h"
  35689. #include <rpc/svc.h>
  35690. @@ -69,7 +67,7 @@
  35691. static bool_t svcraw_freeargs (SVCXPRT *, xdrproc_t, caddr_t);
  35692. static void svcraw_destroy (SVCXPRT *);
  35693. -static struct xp_ops server_ops =
  35694. +static const struct xp_ops server_ops =
  35695. {
  35696. svcraw_recv,
  35697. svcraw_stat,
  35698. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_run.c uClibc/libc/inet/rpc/svc_run.c
  35699. --- uClibc-0.9.33.2/libc/inet/rpc/svc_run.c 2012-05-15 09:20:09.000000000 +0200
  35700. +++ uClibc/libc/inet/rpc/svc_run.c 2014-02-03 12:32:56.000000000 +0100
  35701. @@ -31,13 +31,10 @@
  35702. * Wait for input, call server program.
  35703. */
  35704. -#define __FORCE_GLIBC
  35705. -#include <features.h>
  35706. -
  35707. #include <errno.h>
  35708. #include <unistd.h>
  35709. #include <sys/poll.h>
  35710. -#include <rpc/rpc.h>
  35711. +#include "rpc_private.h"
  35712. /* used by svc_[max_]pollfd */
  35713. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_simple.c uClibc/libc/inet/rpc/svc_simple.c
  35714. --- uClibc-0.9.33.2/libc/inet/rpc/svc_simple.c 2012-05-15 09:20:09.000000000 +0200
  35715. +++ uClibc/libc/inet/rpc/svc_simple.c 2014-02-03 12:32:56.000000000 +0100
  35716. @@ -38,9 +38,6 @@
  35717. * Copyright (C) 1984, Sun Microsystems, Inc.
  35718. */
  35719. -#define __FORCE_GLIBC
  35720. -#include <features.h>
  35721. -
  35722. #include <stdio.h>
  35723. #include <string.h>
  35724. #include <unistd.h>
  35725. @@ -49,13 +46,6 @@
  35726. #include <sys/socket.h>
  35727. #include <netdb.h>
  35728. -#ifdef USE_IN_LIBIO
  35729. -# include <wchar.h>
  35730. -# include <libio/iolibio.h>
  35731. -# define fputs(s, f) _IO_fputs (s, f)
  35732. -#endif
  35733. -
  35734. -
  35735. struct proglst_
  35736. {
  35737. char *(*p_progname) (char *);
  35738. @@ -127,12 +117,7 @@
  35739. return 0;
  35740. err_out:
  35741. -#ifdef USE_IN_LIBIO
  35742. - if (_IO_fwide (stderr, 0) > 0)
  35743. - (void) __fwprintf (stderr, L"%s", buf);
  35744. - else
  35745. -#endif
  35746. - (void) fputs (buf, stderr);
  35747. + (void) fputs (buf, stderr);
  35748. free (buf);
  35749. return -1;
  35750. }
  35751. @@ -186,12 +171,7 @@
  35752. return;
  35753. }
  35754. (void) asprintf (&buf, _("never registered prog %d\n"), prog);
  35755. -#ifdef USE_IN_LIBIO
  35756. - if (_IO_fwide (stderr, 0) > 0)
  35757. - __fwprintf (stderr, L"%s", buf);
  35758. - else
  35759. -#endif
  35760. - fputs (buf, stderr);
  35761. + fputs (buf, stderr);
  35762. free (buf);
  35763. exit (1);
  35764. }
  35765. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_tcp.c uClibc/libc/inet/rpc/svc_tcp.c
  35766. --- uClibc-0.9.33.2/libc/inet/rpc/svc_tcp.c 2012-05-15 09:20:09.000000000 +0200
  35767. +++ uClibc/libc/inet/rpc/svc_tcp.c 2014-02-03 12:32:56.000000000 +0100
  35768. @@ -41,25 +41,15 @@
  35769. * and a record/tcp stream.
  35770. */
  35771. -#define __FORCE_GLIBC
  35772. -#include <features.h>
  35773. -
  35774. #include <stdio.h>
  35775. #include <unistd.h>
  35776. #include <string.h>
  35777. -#include <rpc/rpc.h>
  35778. +#include "rpc_private.h"
  35779. #include <sys/socket.h>
  35780. #include <sys/poll.h>
  35781. #include <errno.h>
  35782. #include <stdlib.h>
  35783. -#ifdef USE_IN_LIBIO
  35784. -# include <wchar.h>
  35785. -# include <libio/iolibio.h>
  35786. -# define fputs(s, f) _IO_fputs (s, f)
  35787. -#endif
  35788. -
  35789. -
  35790. /*
  35791. * Ops vector for TCP/IP based rpc service handle
  35792. */
  35793. @@ -180,12 +170,7 @@
  35794. xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
  35795. if (r == NULL || xprt == NULL)
  35796. {
  35797. -#ifdef USE_IN_LIBIO
  35798. - if (_IO_fwide (stderr, 0) > 0)
  35799. - (void) __fwprintf (stderr, L"%s", _("svctcp_create: out of memory\n"));
  35800. - else
  35801. -#endif
  35802. - (void) fputs (_("svctcp_create: out of memory\n"), stderr);
  35803. + (void) fputs (_("svctcp_create: out of memory\n"), stderr);
  35804. mem_free (r, sizeof (*r));
  35805. mem_free (xprt, sizeof (SVCXPRT));
  35806. return NULL;
  35807. @@ -225,13 +210,7 @@
  35808. cd = (struct tcp_conn *) mem_alloc (sizeof (struct tcp_conn));
  35809. if (xprt == (SVCXPRT *) NULL || cd == NULL)
  35810. {
  35811. -#ifdef USE_IN_LIBIO
  35812. - if (_IO_fwide (stderr, 0) > 0)
  35813. - (void) __fwprintf (stderr, L"%s",
  35814. - _("svc_tcp: makefd_xprt: out of memory\n"));
  35815. - else
  35816. -#endif
  35817. - (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
  35818. + (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
  35819. mem_free (xprt, sizeof (SVCXPRT));
  35820. mem_free (cd, sizeof (struct tcp_conn));
  35821. return NULL;
  35822. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_udp.c uClibc/libc/inet/rpc/svc_udp.c
  35823. --- uClibc-0.9.33.2/libc/inet/rpc/svc_udp.c 2012-05-15 09:20:09.000000000 +0200
  35824. +++ uClibc/libc/inet/rpc/svc_udp.c 2014-02-03 12:32:56.000000000 +0100
  35825. @@ -39,13 +39,10 @@
  35826. * Copyright (C) 1984, Sun Microsystems, Inc.
  35827. */
  35828. -#define __FORCE_GLIBC
  35829. -#include <features.h>
  35830. -
  35831. #include <stdio.h>
  35832. #include <unistd.h>
  35833. #include <string.h>
  35834. -#include <rpc/rpc.h>
  35835. +#include "rpc_private.h"
  35836. #include <sys/socket.h>
  35837. #include <errno.h>
  35838. @@ -53,13 +50,6 @@
  35839. #include <sys/uio.h>
  35840. #endif
  35841. -#ifdef USE_IN_LIBIO
  35842. -# include <wchar.h>
  35843. -# include <libio/iolibio.h>
  35844. -# define fputs(s, f) _IO_fputs (s, f)
  35845. -#endif
  35846. -
  35847. -
  35848. #define rpc_buffer(xprt) ((xprt)->xp_p1)
  35849. #ifndef MAX
  35850. #define MAX(a, b) ((a > b) ? a : b)
  35851. @@ -151,12 +141,7 @@
  35852. buf = mem_alloc (((MAX (sendsz, recvsz) + 3) / 4) * 4);
  35853. if (xprt == NULL || su == NULL || buf == NULL)
  35854. {
  35855. -#ifdef USE_IN_LIBIO
  35856. - if (_IO_fwide (stderr, 0) > 0)
  35857. - (void) fwprintf (stderr, L"%s", _("svcudp_create: out of memory\n"));
  35858. - else
  35859. -#endif
  35860. - (void) fputs (_("svcudp_create: out of memory\n"), stderr);
  35861. + (void) fputs (_("svcudp_create: out of memory\n"), stderr);
  35862. mem_free (xprt, sizeof (SVCXPRT));
  35863. mem_free (su, sizeof (*su));
  35864. mem_free (buf, ((MAX (sendsz, recvsz) + 3) / 4) * 4);
  35865. @@ -177,13 +162,7 @@
  35866. + sizeof(struct cmsghdr) + sizeof (struct in_pktinfo))
  35867. > sizeof (xprt->xp_pad))
  35868. {
  35869. -# ifdef USE_IN_LIBIO
  35870. - if (_IO_fwide (stderr, 0) > 0)
  35871. - (void) fwprintf (stderr, L"%s",
  35872. - _("svcudp_create: xp_pad is too small for IP_PKTINFO\n"));
  35873. - else
  35874. -# endif
  35875. - (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
  35876. + (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
  35877. stderr);
  35878. return NULL;
  35879. }
  35880. @@ -378,16 +357,8 @@
  35881. #define SPARSENESS 4 /* 75% sparse */
  35882. -#ifdef USE_IN_LIBIO
  35883. -# define CACHE_PERROR(msg) \
  35884. - if (_IO_fwide (stderr, 0) > 0) \
  35885. - (void) __fwprintf(stderr, L"%s\n", msg); \
  35886. - else \
  35887. - (void) fprintf(stderr, "%s\n", msg)
  35888. -#else
  35889. -# define CACHE_PERROR(msg) \
  35890. +#define CACHE_PERROR(msg) \
  35891. (void) fprintf(stderr,"%s\n", msg)
  35892. -#endif
  35893. #define ALLOC(type, size) \
  35894. (type *) mem_alloc((unsigned) (sizeof(type) * (size)))
  35895. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_unix.c uClibc/libc/inet/rpc/svc_unix.c
  35896. --- uClibc-0.9.33.2/libc/inet/rpc/svc_unix.c 2012-05-15 09:20:09.000000000 +0200
  35897. +++ uClibc/libc/inet/rpc/svc_unix.c 2014-02-03 12:32:56.000000000 +0100
  35898. @@ -37,13 +37,10 @@
  35899. * and a record/unix stream.
  35900. */
  35901. -#define __FORCE_GLIBC
  35902. -#include <features.h>
  35903. -
  35904. #include <stdio.h>
  35905. #include <unistd.h>
  35906. #include <string.h>
  35907. -#include <rpc/rpc.h>
  35908. +#include "rpc_private.h"
  35909. #include <rpc/svc.h>
  35910. #include <sys/socket.h>
  35911. #include <sys/uio.h>
  35912. @@ -51,11 +48,6 @@
  35913. #include <errno.h>
  35914. #include <stdlib.h>
  35915. -#ifdef USE_IN_LIBIO
  35916. -# include <wchar.h>
  35917. -#endif
  35918. -
  35919. -
  35920. /*
  35921. * Ops vector for AF_UNIX based rpc service handle
  35922. */
  35923. @@ -176,12 +168,7 @@
  35924. xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
  35925. if (r == NULL || xprt == NULL)
  35926. {
  35927. -#ifdef USE_IN_LIBIO
  35928. - if (_IO_fwide (stderr, 0) > 0)
  35929. - __fwprintf (stderr, L"%s", _("svcunix_create: out of memory\n"));
  35930. - else
  35931. -#endif
  35932. - fputs (_("svcunix_create: out of memory\n"), stderr);
  35933. + fputs (_("svcunix_create: out of memory\n"), stderr);
  35934. mem_free (r, sizeof (*r));
  35935. mem_free (xprt, sizeof (SVCXPRT));
  35936. return NULL;
  35937. @@ -221,13 +208,7 @@
  35938. cd = (struct unix_conn *) mem_alloc (sizeof (struct unix_conn));
  35939. if (xprt == (SVCXPRT *) NULL || cd == (struct unix_conn *) NULL)
  35940. {
  35941. -#ifdef USE_IN_LIBIO
  35942. - if (_IO_fwide (stderr, 0) > 0)
  35943. - (void) __fwprintf (stderr, L"%s",
  35944. - _("svc_unix: makefd_xprt: out of memory\n"));
  35945. - else
  35946. -#endif
  35947. - (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
  35948. + (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
  35949. mem_free (xprt, sizeof (SVCXPRT));
  35950. mem_free (cd, sizeof (struct unix_conn));
  35951. return NULL;
  35952. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_array.c uClibc/libc/inet/rpc/xdr_array.c
  35953. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_array.c 2012-05-15 09:20:09.000000000 +0200
  35954. +++ uClibc/libc/inet/rpc/xdr_array.c 2014-02-03 12:32:56.000000000 +0100
  35955. @@ -40,23 +40,15 @@
  35956. * arrays. See xdr.h for more info on the interface to xdr.
  35957. */
  35958. -#define __FORCE_GLIBC
  35959. -#include <features.h>
  35960. -
  35961. #include <stdio.h>
  35962. #include <string.h>
  35963. #include <rpc/types.h>
  35964. #include <rpc/xdr.h>
  35965. #include <limits.h>
  35966. -
  35967. -#ifdef USE_IN_LIBIO
  35968. -# include <wchar.h>
  35969. -#endif
  35970. -
  35971. +#include <libintl.h>
  35972. #define LASTUNSIGNED ((u_int)0-1)
  35973. -
  35974. /*
  35975. * XDR an array of arbitrary elements
  35976. * *addrp is a pointer to the array, *sizep is the number of elements.
  35977. @@ -102,13 +94,7 @@
  35978. *addrp = target = mem_alloc (nodesize);
  35979. if (target == NULL)
  35980. {
  35981. -#ifdef USE_IN_LIBIO
  35982. - if (_IO_fwide (stderr, 0) > 0)
  35983. - (void) fwprintf (stderr, L"%s",
  35984. - _("xdr_array: out of memory\n"));
  35985. - else
  35986. -#endif
  35987. - (void) fputs (_("xdr_array: out of memory\n"), stderr);
  35988. + (void) fputs (_("xdr_array: out of memory\n"), stderr);
  35989. return FALSE;
  35990. }
  35991. memset (target, 0, nodesize);
  35992. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr.c uClibc/libc/inet/rpc/xdr.c
  35993. --- uClibc-0.9.33.2/libc/inet/rpc/xdr.c 2012-05-15 09:20:09.000000000 +0200
  35994. +++ uClibc/libc/inet/rpc/xdr.c 2014-02-03 12:32:56.000000000 +0100
  35995. @@ -41,21 +41,14 @@
  35996. * xdr.
  35997. */
  35998. -#define __FORCE_GLIBC
  35999. -#include <features.h>
  36000. -
  36001. #include <stdio.h>
  36002. #include <limits.h>
  36003. #include <string.h>
  36004. +#include <libintl.h>
  36005. #include <rpc/types.h>
  36006. #include <rpc/xdr.h>
  36007. -#ifdef USE_IN_LIBIO
  36008. -# include <wchar.h>
  36009. -#endif
  36010. -
  36011. -
  36012. /*
  36013. * constants specific to the xdr "protocol"
  36014. */
  36015. @@ -564,12 +557,7 @@
  36016. }
  36017. if (sp == NULL)
  36018. {
  36019. -#ifdef USE_IN_LIBIO
  36020. - if (_IO_fwide (stderr, 0) > 0)
  36021. - (void) fwprintf (stderr, L"%s", _("xdr_bytes: out of memory\n"));
  36022. - else
  36023. -#endif
  36024. - (void) fputs (_("xdr_bytes: out of memory\n"), stderr);
  36025. + (void) fputs (_("xdr_bytes: out of memory\n"), stderr);
  36026. return FALSE;
  36027. }
  36028. /* fall into ... */
  36029. @@ -706,13 +694,7 @@
  36030. *cpp = sp = (char *) mem_alloc (nodesize);
  36031. if (sp == NULL)
  36032. {
  36033. -#ifdef USE_IN_LIBIO
  36034. - if (_IO_fwide (stderr, 0) > 0)
  36035. - (void) fwprintf (stderr, L"%s",
  36036. - _("xdr_string: out of memory\n"));
  36037. - else
  36038. -#endif
  36039. - (void) fputs (_("xdr_string: out of memory\n"), stderr);
  36040. + (void) fputs (_("xdr_string: out of memory\n"), stderr);
  36041. return FALSE;
  36042. }
  36043. sp[size] = 0;
  36044. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_float.c uClibc/libc/inet/rpc/xdr_float.c
  36045. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_float.c 2012-05-15 09:20:09.000000000 +0200
  36046. +++ uClibc/libc/inet/rpc/xdr_float.c 2014-02-03 12:32:56.000000000 +0100
  36047. @@ -41,9 +41,6 @@
  36048. * xdr.
  36049. */
  36050. -#define __FORCE_GLIBC
  36051. -#include <features.h>
  36052. -
  36053. #include <stdio.h>
  36054. #include <endian.h>
  36055. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_intXX_t.c uClibc/libc/inet/rpc/xdr_intXX_t.c
  36056. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_intXX_t.c 2012-05-15 09:20:09.000000000 +0200
  36057. +++ uClibc/libc/inet/rpc/xdr_intXX_t.c 2014-02-03 12:32:56.000000000 +0100
  36058. @@ -13,9 +13,8 @@
  36059. Lesser General Public License for more details.
  36060. You should have received a copy of the GNU Lesser General Public
  36061. - License along with the GNU C Library; if not, write to the Free
  36062. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  36063. - 02111-1307 USA. */
  36064. + License along with the GNU C Library; if not, see
  36065. + <http://www.gnu.org/licenses/>. */
  36066. #include <rpc/types.h>
  36067. #include <rpc/xdr.h>
  36068. @@ -47,6 +46,7 @@
  36069. return FALSE;
  36070. }
  36071. }
  36072. +strong_alias_untyped(xdr_int64_t,xdr_quad_t)
  36073. /* XDR 64bit unsigned integers */
  36074. bool_t
  36075. @@ -75,6 +75,7 @@
  36076. return FALSE;
  36077. }
  36078. }
  36079. +strong_alias_untyped(xdr_uint64_t,xdr_u_quad_t)
  36080. /* XDR 32bit integers */
  36081. bool_t
  36082. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_mem.c uClibc/libc/inet/rpc/xdr_mem.c
  36083. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_mem.c 2012-05-15 09:20:09.000000000 +0200
  36084. +++ uClibc/libc/inet/rpc/xdr_mem.c 2014-02-03 12:32:56.000000000 +0100
  36085. @@ -77,9 +77,7 @@
  36086. xdrmem_create (XDR *xdrs, const caddr_t addr, u_int size, enum xdr_op op)
  36087. {
  36088. xdrs->x_op = op;
  36089. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  36090. - is not `const'. */
  36091. - xdrs->x_ops = (struct xdr_ops *) &xdrmem_ops;
  36092. + xdrs->x_ops = &xdrmem_ops;
  36093. xdrs->x_private = xdrs->x_base = addr;
  36094. xdrs->x_handy = size;
  36095. }
  36096. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_rec.c uClibc/libc/inet/rpc/xdr_rec.c
  36097. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_rec.c 2012-05-15 09:20:09.000000000 +0200
  36098. +++ uClibc/libc/inet/rpc/xdr_rec.c 2014-02-03 12:32:56.000000000 +0100
  36099. @@ -44,21 +44,10 @@
  36100. * The other 31 bits encode the byte length of the fragment.
  36101. */
  36102. -#define __FORCE_GLIBC
  36103. -#include <features.h>
  36104. -
  36105. -
  36106. #include <stdio.h>
  36107. #include <string.h>
  36108. #include <unistd.h>
  36109. -#include <rpc/rpc.h>
  36110. -
  36111. -#ifdef USE_IN_LIBIO
  36112. -# include <wchar.h>
  36113. -# include <libio/iolibio.h>
  36114. -# define fputs(s, f) _IO_fputs (s, f)
  36115. -#endif
  36116. -
  36117. +#include "rpc_private.h"
  36118. static bool_t xdrrec_getbytes (XDR *, caddr_t, u_int);
  36119. static bool_t xdrrec_putbytes (XDR *, const char *, u_int);
  36120. @@ -165,12 +154,7 @@
  36121. if (rstrm == NULL || buf == NULL)
  36122. {
  36123. -#ifdef USE_IN_LIBIO
  36124. - if (_IO_fwide (stderr, 0) > 0)
  36125. - (void) fwprintf (stderr, L"%s", _("xdrrec_create: out of memory\n"));
  36126. - else
  36127. -#endif
  36128. - (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
  36129. + (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
  36130. mem_free (rstrm, sizeof (RECSTREAM));
  36131. mem_free (buf, sendsize + recvsize + BYTES_PER_XDR_UNIT);
  36132. /*
  36133. @@ -193,9 +177,7 @@
  36134. /*
  36135. * now the rest ...
  36136. */
  36137. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  36138. - is not `const'. */
  36139. - xdrs->x_ops = (struct xdr_ops *) &xdrrec_ops;
  36140. + xdrs->x_ops = &xdrrec_ops;
  36141. xdrs->x_private = (caddr_t) rstrm;
  36142. rstrm->tcp_handle = tcp_handle;
  36143. rstrm->readit = readit;
  36144. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_reference.c uClibc/libc/inet/rpc/xdr_reference.c
  36145. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_reference.c 2012-05-15 09:20:09.000000000 +0200
  36146. +++ uClibc/libc/inet/rpc/xdr_reference.c 2014-02-03 12:32:56.000000000 +0100
  36147. @@ -40,20 +40,11 @@
  36148. * "pointers". See xdr.h for more info on the interface to xdr.
  36149. */
  36150. -#define __FORCE_GLIBC
  36151. -#include <features.h>
  36152. -
  36153. #include <stdio.h>
  36154. #include <string.h>
  36155. #include <rpc/types.h>
  36156. #include <rpc/xdr.h>
  36157. -
  36158. -#ifdef USE_IN_LIBIO
  36159. -# include <wchar.h>
  36160. -# include <libio/iolibio.h>
  36161. -# define fputs(s, f) _IO_fputs (s, f)
  36162. -#endif
  36163. -
  36164. +#include <libintl.h>
  36165. #define LASTUNSIGNED ((u_int)0-1)
  36166. @@ -82,13 +73,7 @@
  36167. *pp = loc = (caddr_t) mem_alloc (size);
  36168. if (loc == NULL)
  36169. {
  36170. -#ifdef USE_IN_LIBIO
  36171. - if (_IO_fwide (stderr, 0) > 0)
  36172. - (void) fwprintf (stderr, L"%s",
  36173. - _("xdr_reference: out of memory\n"));
  36174. - else
  36175. -#endif
  36176. - (void) fputs (_("xdr_reference: out of memory\n"), stderr);
  36177. + (void) fputs (_("xdr_reference: out of memory\n"), stderr);
  36178. return FALSE;
  36179. }
  36180. memset (loc, 0, (int) size);
  36181. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_stdio.c uClibc/libc/inet/rpc/xdr_stdio.c
  36182. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_stdio.c 2012-05-15 09:20:09.000000000 +0200
  36183. +++ uClibc/libc/inet/rpc/xdr_stdio.c 2014-02-03 12:32:56.000000000 +0100
  36184. @@ -41,15 +41,6 @@
  36185. #include <stdio.h>
  36186. #include <rpc/xdr.h>
  36187. -#ifdef USE_IN_LIBIO
  36188. -# include <libio/iolibio.h>
  36189. -# define fflush(s) _IO_fflush (s)
  36190. -# define fread(p, m, n, s) _IO_fread (p, m, n, s)
  36191. -# define ftell(s) _IO_ftell (s)
  36192. -# define fwrite(p, m, n, s) _IO_fwrite (p, m, n, s)
  36193. -#endif
  36194. -
  36195. -
  36196. static bool_t xdrstdio_getlong (XDR *, long *);
  36197. static bool_t xdrstdio_putlong (XDR *, const long *);
  36198. static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int);
  36199. @@ -87,9 +78,7 @@
  36200. xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op)
  36201. {
  36202. xdrs->x_op = op;
  36203. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  36204. - is not `const'. */
  36205. - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops;
  36206. + xdrs->x_ops = &xdrstdio_ops;
  36207. xdrs->x_private = (caddr_t) file;
  36208. xdrs->x_handy = 0;
  36209. xdrs->x_base = 0;
  36210. diff -Nur uClibc-0.9.33.2/libc/inet/socketcalls.c uClibc/libc/inet/socketcalls.c
  36211. --- uClibc-0.9.33.2/libc/inet/socketcalls.c 2012-05-15 09:20:09.000000000 +0200
  36212. +++ uClibc/libc/inet/socketcalls.c 2014-02-03 12:32:56.000000000 +0100
  36213. @@ -4,15 +4,12 @@
  36214. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  36215. */
  36216. -#define __FORCE_GLIBC
  36217. -#include <features.h>
  36218. -#include <errno.h>
  36219. -#include <syscall.h>
  36220. +#include <stddef.h>
  36221. +#include <sys/syscall.h>
  36222. #include <sys/socket.h>
  36223. +#include <cancel.h>
  36224. #ifdef __NR_socketcall
  36225. -extern int __socketcall(int call, unsigned long *args) attribute_hidden;
  36226. -
  36227. /* Various socketcall numbers */
  36228. #define SYS_SOCKET 1
  36229. #define SYS_BIND 2
  36230. @@ -34,53 +31,24 @@
  36231. #define SYS_ACCEPT4 18
  36232. #endif
  36233. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36234. -#include <sysdep-cancel.h>
  36235. -#include <pthreadP.h>
  36236. -#else
  36237. -#define SINGLE_THREAD_P 1
  36238. -#endif
  36239. -
  36240. #ifdef L_accept
  36241. -extern __typeof(accept) __libc_accept;
  36242. -#ifdef __NR_accept
  36243. -#define __NR___sys_accept __NR_accept
  36244. -static
  36245. -_syscall3(int, __sys_accept, int, call, struct sockaddr *, addr, socklen_t *,addrlen)
  36246. -int __libc_accept(int s, struct sockaddr *addr, socklen_t * addrlen)
  36247. -{
  36248. - if (SINGLE_THREAD_P)
  36249. - return __sys_accept(s, addr, addrlen);
  36250. -
  36251. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36252. - int oldtype = LIBC_CANCEL_ASYNC ();
  36253. - int result = __sys_accept(s, addr, addrlen);
  36254. - LIBC_CANCEL_RESET (oldtype);
  36255. - return result;
  36256. -#endif
  36257. -}
  36258. -#elif defined(__NR_socketcall)
  36259. -int __libc_accept(int s, struct sockaddr *addr, socklen_t * addrlen)
  36260. +static int __NC(accept)(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
  36261. {
  36262. +# ifdef __NR_accept
  36263. + return INLINE_SYSCALL(accept, 3, sockfd, addr, addrlen);
  36264. +# else
  36265. unsigned long args[3];
  36266. - args[0] = s;
  36267. + args[0] = sockfd;
  36268. args[1] = (unsigned long) addr;
  36269. args[2] = (unsigned long) addrlen;
  36270. - if (SINGLE_THREAD_P)
  36271. - return __socketcall(SYS_ACCEPT, args);
  36272. -
  36273. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36274. - int oldtype = LIBC_CANCEL_ASYNC ();
  36275. - int result = __socketcall(SYS_ACCEPT, args);
  36276. - LIBC_CANCEL_RESET (oldtype);
  36277. - return result;
  36278. -#endif
  36279. + return __socketcall(SYS_ACCEPT, args);
  36280. +# endif
  36281. }
  36282. -#endif
  36283. -weak_alias(__libc_accept,accept)
  36284. -libc_hidden_weak(accept)
  36285. +CANCELLABLE_SYSCALL(int, accept, (int sockfd, struct sockaddr *addr, socklen_t *addrlen),
  36286. + (sockfd, addr, addrlen))
  36287. +lt_libc_hidden(accept)
  36288. #endif
  36289. #ifdef L_accept4
  36290. @@ -124,104 +92,81 @@
  36291. #endif
  36292. #ifdef L_bind
  36293. -#ifdef __NR_bind
  36294. -_syscall3(int, bind, int, sockfd, const struct sockaddr *, myaddr, socklen_t, addrlen)
  36295. -#elif defined(__NR_socketcall)
  36296. int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)
  36297. {
  36298. +# ifdef __NR_bind
  36299. + return INLINE_SYSCALL(bind, 3, sockfd, myaddr, addrlen);
  36300. +# else
  36301. unsigned long args[3];
  36302. args[0] = sockfd;
  36303. args[1] = (unsigned long) myaddr;
  36304. args[2] = addrlen;
  36305. return __socketcall(SYS_BIND, args);
  36306. +# endif
  36307. }
  36308. -#endif
  36309. libc_hidden_def(bind)
  36310. #endif
  36311. #ifdef L_connect
  36312. -extern __typeof(connect) __libc_connect;
  36313. -#ifdef __NR_connect
  36314. -#define __NR___sys_connect __NR_connect
  36315. -static
  36316. -_syscall3(int, __sys_connect, int, sockfd, const struct sockaddr *, saddr, socklen_t, addrlen)
  36317. -int __libc_connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  36318. -{
  36319. - if (SINGLE_THREAD_P)
  36320. - return __sys_connect(sockfd, saddr, addrlen);
  36321. -
  36322. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36323. - int oldtype = LIBC_CANCEL_ASYNC ();
  36324. - int result = __sys_connect(sockfd, saddr, addrlen);
  36325. - LIBC_CANCEL_RESET (oldtype);
  36326. - return result;
  36327. -#endif
  36328. -}
  36329. -#elif defined(__NR_socketcall)
  36330. -int __libc_connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  36331. +static int __NC(connect)(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  36332. {
  36333. +# ifdef __NR_connect
  36334. + return INLINE_SYSCALL(connect, 3, sockfd, saddr, addrlen);
  36335. +# else
  36336. unsigned long args[3];
  36337. args[0] = sockfd;
  36338. args[1] = (unsigned long) saddr;
  36339. args[2] = addrlen;
  36340. -
  36341. - if (SINGLE_THREAD_P)
  36342. - return __socketcall(SYS_CONNECT, args);
  36343. -
  36344. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36345. - int oldtype = LIBC_CANCEL_ASYNC ();
  36346. - int result = __socketcall(SYS_CONNECT, args);
  36347. - LIBC_CANCEL_RESET (oldtype);
  36348. - return result;
  36349. -#endif
  36350. + return __socketcall(SYS_CONNECT, args);
  36351. +# endif
  36352. }
  36353. -#endif
  36354. -weak_alias(__libc_connect,connect)
  36355. -libc_hidden_weak(connect)
  36356. +CANCELLABLE_SYSCALL(int, connect, (int sockfd, const struct sockaddr *saddr, socklen_t addrlen),
  36357. + (sockfd, saddr, addrlen))
  36358. +lt_libc_hidden(connect)
  36359. #endif
  36360. #ifdef L_getpeername
  36361. -#ifdef __NR_getpeername
  36362. -_syscall3(int, getpeername, int, sockfd, struct sockaddr *, addr, socklen_t *,paddrlen)
  36363. -#elif defined(__NR_socketcall)
  36364. -int getpeername(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
  36365. +int getpeername(int sockfd, struct sockaddr *addr, socklen_t *paddrlen)
  36366. {
  36367. +# ifdef __NR_getpeername
  36368. + return INLINE_SYSCALL(getpeername, 3, sockfd, addr, paddrlen);
  36369. +# else
  36370. unsigned long args[3];
  36371. args[0] = sockfd;
  36372. args[1] = (unsigned long) addr;
  36373. args[2] = (unsigned long) paddrlen;
  36374. return __socketcall(SYS_GETPEERNAME, args);
  36375. +# endif
  36376. }
  36377. #endif
  36378. -#endif
  36379. #ifdef L_getsockname
  36380. -#ifdef __NR_getsockname
  36381. -_syscall3(int, getsockname, int, sockfd, struct sockaddr *, addr, socklen_t *,paddrlen)
  36382. -#elif defined(__NR_socketcall)
  36383. int getsockname(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
  36384. {
  36385. +# ifdef __NR_getsockname
  36386. + return INLINE_SYSCALL(getsockname, 3, sockfd, addr, paddrlen);
  36387. +# else
  36388. unsigned long args[3];
  36389. args[0] = sockfd;
  36390. args[1] = (unsigned long) addr;
  36391. args[2] = (unsigned long) paddrlen;
  36392. return __socketcall(SYS_GETSOCKNAME, args);
  36393. +# endif
  36394. }
  36395. -#endif
  36396. libc_hidden_def(getsockname)
  36397. #endif
  36398. #ifdef L_getsockopt
  36399. -#ifdef __NR_getsockopt
  36400. -_syscall5(int, getsockopt, int, fd, int, level, int, optname, __ptr_t, optval, socklen_t *, optlen)
  36401. -#elif defined(__NR_socketcall)
  36402. -int getsockopt(int fd, int level, int optname, __ptr_t optval,
  36403. - socklen_t * optlen)
  36404. +int getsockopt(int fd, int level, int optname, void *optval,
  36405. + socklen_t *optlen)
  36406. {
  36407. +# ifdef __NR_getsockopt
  36408. + return INLINE_SYSCALL(getsockopt, 5, fd, level, optname, optval, optlen);
  36409. +# else
  36410. unsigned long args[5];
  36411. args[0] = fd;
  36412. @@ -230,101 +175,56 @@
  36413. args[3] = (unsigned long) optval;
  36414. args[4] = (unsigned long) optlen;
  36415. return (__socketcall(SYS_GETSOCKOPT, args));
  36416. +# endif
  36417. }
  36418. #endif
  36419. -#endif
  36420. #ifdef L_listen
  36421. -#ifdef __NR_listen
  36422. -_syscall2(int, listen, int, sockfd, int, backlog)
  36423. -#elif defined(__NR_socketcall)
  36424. int listen(int sockfd, int backlog)
  36425. {
  36426. +# ifdef __NR_listen
  36427. + return INLINE_SYSCALL(listen, 2, sockfd, backlog);
  36428. +# else
  36429. unsigned long args[2];
  36430. args[0] = sockfd;
  36431. args[1] = backlog;
  36432. return __socketcall(SYS_LISTEN, args);
  36433. +# endif
  36434. }
  36435. -#endif
  36436. libc_hidden_def(listen)
  36437. #endif
  36438. #ifdef L_recv
  36439. -extern __typeof(recv) __libc_recv;
  36440. -#ifdef __NR_recv
  36441. -#define __NR___sys_recv __NR_recv
  36442. -static
  36443. -_syscall4(ssize_t, __sys_recv, int, sockfd, __ptr_t, buffer, size_t, len,
  36444. - int, flags)
  36445. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  36446. -{
  36447. - if (SINGLE_THREAD_P)
  36448. - return __sys_recv(sockfd, buffer, len, flags);
  36449. -
  36450. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36451. - int oldtype = LIBC_CANCEL_ASYNC ();
  36452. - int result = __sys_recv(sockfd, buffer, len, flags);
  36453. - LIBC_CANCEL_RESET (oldtype);
  36454. - return result;
  36455. -#endif
  36456. -}
  36457. -#elif defined(__NR_socketcall)
  36458. -/* recv, recvfrom added by bir7@leland.stanford.edu */
  36459. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  36460. +static ssize_t __NC(recv)(int sockfd, void *buffer, size_t len, int flags)
  36461. {
  36462. +# ifdef __NR_recv
  36463. + return (ssize_t)INLINE_SYSCALL(recv, 4, sockfd, buffer, len, flags);
  36464. +# elif defined __NR_recvfrom && defined _syscall6
  36465. + return __NC(recvfrom)(sockfd, buffer, len, flags, NULL, NULL);
  36466. +# else
  36467. unsigned long args[4];
  36468. args[0] = sockfd;
  36469. args[1] = (unsigned long) buffer;
  36470. args[2] = len;
  36471. args[3] = flags;
  36472. -
  36473. - if (SINGLE_THREAD_P)
  36474. - return (__socketcall(SYS_RECV, args));
  36475. -
  36476. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36477. - int oldtype = LIBC_CANCEL_ASYNC ();
  36478. - int result = __socketcall(SYS_RECV, args);
  36479. - LIBC_CANCEL_RESET (oldtype);
  36480. - return result;
  36481. -#endif
  36482. -}
  36483. -#elif defined(__NR_recvfrom)
  36484. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  36485. -{
  36486. - return (recvfrom(sockfd, buffer, len, flags, NULL, NULL));
  36487. + return (ssize_t)__socketcall(SYS_RECV, args);
  36488. +# endif
  36489. }
  36490. -#endif
  36491. -weak_alias(__libc_recv,recv)
  36492. -libc_hidden_weak(recv)
  36493. +CANCELLABLE_SYSCALL(ssize_t, recv, (int sockfd, void *buffer, size_t len, int flags),
  36494. + (sockfd, buffer, len, flags))
  36495. +lt_libc_hidden(recv)
  36496. #endif
  36497. #ifdef L_recvfrom
  36498. -extern __typeof(recvfrom) __libc_recvfrom;
  36499. -#ifdef __NR_recvfrom
  36500. -#define __NR___sys_recvfrom __NR_recvfrom
  36501. -static
  36502. -_syscall6(ssize_t, __sys_recvfrom, int, sockfd, __ptr_t, buffer, size_t, len,
  36503. - int, flags, struct sockaddr *, to, socklen_t *, tolen)
  36504. -ssize_t __libc_recvfrom(int sockfd, __ptr_t buffer, size_t len, int flags,
  36505. - struct sockaddr *to, socklen_t * tolen)
  36506. -{
  36507. - if (SINGLE_THREAD_P)
  36508. - return __sys_recvfrom(sockfd, buffer, len, flags, to, tolen);
  36509. -
  36510. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36511. - int oldtype = LIBC_CANCEL_ASYNC ();
  36512. - int result = __sys_recvfrom(sockfd, buffer, len, flags, to, tolen);
  36513. - LIBC_CANCEL_RESET (oldtype);
  36514. - return result;
  36515. -#endif
  36516. -}
  36517. -#elif defined(__NR_socketcall)
  36518. -/* recv, recvfrom added by bir7@leland.stanford.edu */
  36519. -ssize_t __libc_recvfrom(int sockfd, __ptr_t buffer, size_t len, int flags,
  36520. - struct sockaddr *to, socklen_t * tolen)
  36521. +ssize_t __NC(recvfrom)(int sockfd, void *buffer, size_t len, int flags,
  36522. + struct sockaddr *to, socklen_t *tolen)
  36523. {
  36524. +# if defined __NR_recvfrom && defined _syscall6
  36525. + return (ssize_t)INLINE_SYSCALL(recvfrom, 6, sockfd, buffer, len,
  36526. + flags, to, tolen);
  36527. +# else
  36528. unsigned long args[6];
  36529. args[0] = sockfd;
  36530. @@ -333,180 +233,82 @@
  36531. args[3] = flags;
  36532. args[4] = (unsigned long) to;
  36533. args[5] = (unsigned long) tolen;
  36534. -
  36535. - if (SINGLE_THREAD_P)
  36536. - return (__socketcall(SYS_RECVFROM, args));
  36537. -
  36538. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36539. - int oldtype = LIBC_CANCEL_ASYNC ();
  36540. - int result = __socketcall(SYS_RECVFROM, args);
  36541. - LIBC_CANCEL_RESET (oldtype);
  36542. - return result;
  36543. -#endif
  36544. + return (ssize_t)__socketcall(SYS_RECVFROM, args);
  36545. +# endif
  36546. }
  36547. -#endif
  36548. -weak_alias(__libc_recvfrom,recvfrom)
  36549. -libc_hidden_weak(recvfrom)
  36550. +CANCELLABLE_SYSCALL(ssize_t, recvfrom, (int sockfd, void *buffer, size_t len,
  36551. + int flags, struct sockaddr *to, socklen_t *tolen),
  36552. + (sockfd, buffer, len, flags, to, tolen))
  36553. +lt_libc_hidden(recvfrom)
  36554. #endif
  36555. #ifdef L_recvmsg
  36556. -extern __typeof(recvmsg) __libc_recvmsg;
  36557. -#ifdef __NR_recvmsg
  36558. -#define __NR___sys_recvmsg __NR_recvmsg
  36559. -static
  36560. -_syscall3(ssize_t, __sys_recvmsg, int, sockfd, struct msghdr *, msg, int, flags)
  36561. -ssize_t __libc_recvmsg(int sockfd, struct msghdr *msg, int flags)
  36562. -{
  36563. - if (SINGLE_THREAD_P)
  36564. - return __sys_recvmsg(sockfd, msg, flags);
  36565. -
  36566. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36567. - int oldtype = LIBC_CANCEL_ASYNC ();
  36568. - int result = __sys_recvmsg(sockfd, msg, flags);
  36569. - LIBC_CANCEL_RESET (oldtype);
  36570. - return result;
  36571. -#endif
  36572. -}
  36573. -#elif defined(__NR_socketcall)
  36574. -ssize_t __libc_recvmsg(int sockfd, struct msghdr *msg, int flags)
  36575. +static ssize_t __NC(recvmsg)(int sockfd, struct msghdr *msg, int flags)
  36576. {
  36577. +# ifdef __NR_recvmsg
  36578. + return (ssize_t)INLINE_SYSCALL(recvmsg, 3, sockfd, msg, flags);
  36579. +# else
  36580. unsigned long args[3];
  36581. args[0] = sockfd;
  36582. args[1] = (unsigned long) msg;
  36583. args[2] = flags;
  36584. -
  36585. - if (SINGLE_THREAD_P)
  36586. - return (__socketcall(SYS_RECVMSG, args));
  36587. -
  36588. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36589. - int oldtype = LIBC_CANCEL_ASYNC ();
  36590. - int result = __socketcall(SYS_RECVMSG, args);
  36591. - LIBC_CANCEL_RESET (oldtype);
  36592. - return result;
  36593. -#endif
  36594. + return (ssize_t)__socketcall(SYS_RECVMSG, args);
  36595. +# endif
  36596. }
  36597. -#endif
  36598. -weak_alias(__libc_recvmsg,recvmsg)
  36599. -libc_hidden_weak(recvmsg)
  36600. +CANCELLABLE_SYSCALL(ssize_t, recvmsg, (int sockfd, struct msghdr *msg, int flags),
  36601. + (sockfd, msg, flags))
  36602. +lt_libc_hidden(recvmsg)
  36603. #endif
  36604. #ifdef L_send
  36605. -extern __typeof(send) __libc_send;
  36606. -#ifdef __NR_send
  36607. -#define __NR___sys_send __NR_send
  36608. -static
  36609. -_syscall4(ssize_t, __sys_send, int, sockfd, const void *, buffer, size_t, len, int, flags)
  36610. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  36611. -{
  36612. - if (SINGLE_THREAD_P)
  36613. - return __sys_send(sockfd, buffer, len, flags);
  36614. -
  36615. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36616. - int oldtype = LIBC_CANCEL_ASYNC ();
  36617. - int result = __sys_send(sockfd, buffer, len, flags);
  36618. - LIBC_CANCEL_RESET (oldtype);
  36619. - return result;
  36620. -#endif
  36621. -}
  36622. -#elif defined(__NR_socketcall)
  36623. -/* send, sendto added by bir7@leland.stanford.edu */
  36624. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  36625. +static ssize_t __NC(send)(int sockfd, const void *buffer, size_t len, int flags)
  36626. {
  36627. +# ifdef __NR_send
  36628. + return (ssize_t)INLINE_SYSCALL(send, 4, sockfd, buffer, len, flags);
  36629. +# elif defined __NR_sendto && defined _syscall6
  36630. + return __NC(sendto)(sockfd, buffer, len, flags, NULL, 0);
  36631. +# else
  36632. unsigned long args[4];
  36633. args[0] = sockfd;
  36634. args[1] = (unsigned long) buffer;
  36635. args[2] = len;
  36636. args[3] = flags;
  36637. -
  36638. - if (SINGLE_THREAD_P)
  36639. - return (__socketcall(SYS_SEND, args));
  36640. -
  36641. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36642. - int oldtype = LIBC_CANCEL_ASYNC ();
  36643. - int result = __socketcall(SYS_SEND, args);
  36644. - LIBC_CANCEL_RESET (oldtype);
  36645. - return result;
  36646. -#endif
  36647. -}
  36648. -
  36649. -#elif defined(__NR_sendto)
  36650. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  36651. -{
  36652. - return (sendto(sockfd, buffer, len, flags, NULL, 0));
  36653. + return (ssize_t)__socketcall(SYS_SEND, args);
  36654. +# endif
  36655. }
  36656. -#endif
  36657. -weak_alias(__libc_send,send)
  36658. -libc_hidden_weak(send)
  36659. +CANCELLABLE_SYSCALL(ssize_t, send, (int sockfd, const void *buffer, size_t len, int flags),
  36660. + (sockfd, buffer, len, flags))
  36661. +lt_libc_hidden(send)
  36662. #endif
  36663. #ifdef L_sendmsg
  36664. -extern __typeof(sendmsg) __libc_sendmsg;
  36665. -#ifdef __NR_sendmsg
  36666. -#define __NR___sys_sendmsg __NR_sendmsg
  36667. -static
  36668. -_syscall3(ssize_t, __sys_sendmsg, int, sockfd, const struct msghdr *, msg, int, flags)
  36669. -ssize_t __libc_sendmsg(int sockfd, const struct msghdr *msg, int flags)
  36670. -{
  36671. - if (SINGLE_THREAD_P)
  36672. - return __sys_sendmsg(sockfd, msg, flags);
  36673. -
  36674. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36675. - int oldtype = LIBC_CANCEL_ASYNC ();
  36676. - int result = __sys_sendmsg(sockfd, msg, flags);
  36677. - LIBC_CANCEL_RESET (oldtype);
  36678. - return result;
  36679. -#endif
  36680. -}
  36681. -#elif defined(__NR_socketcall)
  36682. -ssize_t __libc_sendmsg(int sockfd, const struct msghdr *msg, int flags)
  36683. +static ssize_t __NC(sendmsg)(int sockfd, const struct msghdr *msg, int flags)
  36684. {
  36685. +# ifdef __NR_sendmsg
  36686. + return (ssize_t)INLINE_SYSCALL(sendmsg, 3, sockfd, msg, flags);
  36687. +# else
  36688. unsigned long args[3];
  36689. args[0] = sockfd;
  36690. args[1] = (unsigned long) msg;
  36691. args[2] = flags;
  36692. -
  36693. - if (SINGLE_THREAD_P)
  36694. - return (__socketcall(SYS_SENDMSG, args));
  36695. -
  36696. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36697. - int oldtype = LIBC_CANCEL_ASYNC ();
  36698. - int result = __socketcall(SYS_SENDMSG, args);
  36699. - LIBC_CANCEL_RESET (oldtype);
  36700. - return result;
  36701. -#endif
  36702. + return (ssize_t)__socketcall(SYS_SENDMSG, args);
  36703. +# endif
  36704. }
  36705. -#endif
  36706. -weak_alias(__libc_sendmsg,sendmsg)
  36707. -libc_hidden_weak(sendmsg)
  36708. +CANCELLABLE_SYSCALL(ssize_t, sendmsg, (int sockfd, const struct msghdr *msg, int flags),
  36709. + (sockfd, msg, flags))
  36710. +lt_libc_hidden(sendmsg)
  36711. #endif
  36712. #ifdef L_sendto
  36713. -extern __typeof(sendto) __libc_sendto;
  36714. -#ifdef __NR_sendto
  36715. -#define __NR___sys_sendto __NR_sendto
  36716. -static
  36717. -_syscall6(ssize_t, __sys_sendto, int, sockfd, const void *, buffer,
  36718. - size_t, len, int, flags, const struct sockaddr *, to, socklen_t, tolen)
  36719. -ssize_t __libc_sendto(int sockfd, const void *buffer, size_t len, int flags,const struct sockaddr *to, socklen_t tolen)
  36720. -{
  36721. - if (SINGLE_THREAD_P)
  36722. - return __sys_sendto(sockfd, buffer, len, flags, to, tolen);
  36723. -
  36724. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36725. - int oldtype = LIBC_CANCEL_ASYNC ();
  36726. - int result = __sys_sendto(sockfd, buffer, len, flags, to, tolen);
  36727. - LIBC_CANCEL_RESET (oldtype);
  36728. - return result;
  36729. -#endif
  36730. -}
  36731. -#elif defined(__NR_socketcall)
  36732. -/* send, sendto added by bir7@leland.stanford.edu */
  36733. -ssize_t __libc_sendto(int sockfd, const void *buffer, size_t len, int flags,
  36734. - const struct sockaddr *to, socklen_t tolen)
  36735. +ssize_t __NC(sendto)(int sockfd, const void *buffer, size_t len, int flags,
  36736. + const struct sockaddr *to, socklen_t tolen)
  36737. {
  36738. +# if defined __NR_sendto && defined _syscall6
  36739. + return (ssize_t)INLINE_SYSCALL(sendto, 6, sockfd, buffer, len, flags, to, tolen);
  36740. +# else
  36741. unsigned long args[6];
  36742. args[0] = sockfd;
  36743. @@ -515,30 +317,21 @@
  36744. args[3] = flags;
  36745. args[4] = (unsigned long) to;
  36746. args[5] = tolen;
  36747. -
  36748. - if (SINGLE_THREAD_P)
  36749. - return (__socketcall(SYS_SENDTO, args));
  36750. -
  36751. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36752. - int oldtype = LIBC_CANCEL_ASYNC ();
  36753. - int result = __socketcall(SYS_SENDTO, args);
  36754. - LIBC_CANCEL_RESET (oldtype);
  36755. - return result;
  36756. -#endif
  36757. + return (ssize_t)__socketcall(SYS_SENDTO, args);
  36758. +# endif
  36759. }
  36760. -#endif
  36761. -weak_alias(__libc_sendto,sendto)
  36762. -libc_hidden_weak(sendto)
  36763. +CANCELLABLE_SYSCALL(ssize_t, sendto, (int sockfd, const void *buffer, size_t len,
  36764. + int flags, const struct sockaddr *to, socklen_t tolen),
  36765. + (sockfd, buffer, len, flags, to, tolen))
  36766. +lt_libc_hidden(sendto)
  36767. #endif
  36768. #ifdef L_setsockopt
  36769. -#ifdef __NR_setsockopt
  36770. -_syscall5(int, setsockopt, int, fd, int, level, int, optname, const void *, optval, socklen_t, optlen)
  36771. -#elif defined(__NR_socketcall)
  36772. -/* [sg]etsockoptions by bir7@leland.stanford.edu */
  36773. -int setsockopt(int fd, int level, int optname, const void *optval,
  36774. - socklen_t optlen)
  36775. +int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)
  36776. {
  36777. +# ifdef __NR_setsockopt
  36778. + return INLINE_SYSCALL(setsockopt, 5, fd, level, optname, optval, optlen);
  36779. +# else
  36780. unsigned long args[5];
  36781. args[0] = fd;
  36782. @@ -546,51 +339,50 @@
  36783. args[2] = optname;
  36784. args[3] = (unsigned long) optval;
  36785. args[4] = optlen;
  36786. - return (__socketcall(SYS_SETSOCKOPT, args));
  36787. + return __socketcall(SYS_SETSOCKOPT, args);
  36788. +# endif
  36789. }
  36790. -#endif
  36791. libc_hidden_def(setsockopt)
  36792. #endif
  36793. #ifdef L_shutdown
  36794. -#ifdef __NR_shutdown
  36795. -_syscall2(int, shutdown, int, sockfd, int, how)
  36796. -#elif defined(__NR_socketcall)
  36797. -/* shutdown by bir7@leland.stanford.edu */
  36798. int shutdown(int sockfd, int how)
  36799. {
  36800. +# ifdef __NR_shutdown
  36801. + return INLINE_SYSCALL(shutdown, 2, sockfd, how);
  36802. +# else
  36803. unsigned long args[2];
  36804. args[0] = sockfd;
  36805. args[1] = how;
  36806. - return (__socketcall(SYS_SHUTDOWN, args));
  36807. + return __socketcall(SYS_SHUTDOWN, args);
  36808. +# endif
  36809. }
  36810. #endif
  36811. -#endif
  36812. #ifdef L_socket
  36813. -#ifdef __NR_socket
  36814. -_syscall3(int, socket, int, family, int, type, int, protocol)
  36815. -#elif defined(__NR_socketcall)
  36816. int socket(int family, int type, int protocol)
  36817. {
  36818. +# ifdef __NR_socket
  36819. + return INLINE_SYSCALL(socket, 3, family, type, protocol);
  36820. +# else
  36821. unsigned long args[3];
  36822. args[0] = family;
  36823. args[1] = type;
  36824. args[2] = (unsigned long) protocol;
  36825. return __socketcall(SYS_SOCKET, args);
  36826. +# endif
  36827. }
  36828. -#endif
  36829. libc_hidden_def(socket)
  36830. #endif
  36831. #ifdef L_socketpair
  36832. -#ifdef __NR_socketpair
  36833. -_syscall4(int, socketpair, int, family, int, type, int, protocol, int *, sockvec)
  36834. -#elif defined(__NR_socketcall)
  36835. int socketpair(int family, int type, int protocol, int sockvec[2])
  36836. {
  36837. +# ifdef __NR_socketpair
  36838. + return INLINE_SYSCALL(socketpair, 4, family, type, protocol, sockvec);
  36839. +# else
  36840. unsigned long args[4];
  36841. args[0] = family;
  36842. @@ -598,7 +390,6 @@
  36843. args[2] = protocol;
  36844. args[3] = (unsigned long) sockvec;
  36845. return __socketcall(SYS_SOCKETPAIR, args);
  36846. +# endif
  36847. }
  36848. #endif
  36849. -#endif
  36850. -
  36851. diff -Nur uClibc-0.9.33.2/libc/misc/assert/__assert.c uClibc/libc/misc/assert/__assert.c
  36852. --- uClibc-0.9.33.2/libc/misc/assert/__assert.c 2012-05-15 09:20:09.000000000 +0200
  36853. +++ uClibc/libc/misc/assert/__assert.c 2014-02-03 12:32:56.000000000 +0100
  36854. @@ -13,8 +13,8 @@
  36855. * Library General Public License for more details.
  36856. *
  36857. * You should have received a copy of the GNU Library General Public
  36858. - * License along with this library; if not, write to the Free
  36859. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  36860. + * License along with this library; if not, see
  36861. + * <http://www.gnu.org/licenses/>.
  36862. */
  36863. /* Oct 28, 2002
  36864. diff -Nur uClibc-0.9.33.2/libc/misc/assert/Makefile.in uClibc/libc/misc/assert/Makefile.in
  36865. --- uClibc-0.9.33.2/libc/misc/assert/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36866. +++ uClibc/libc/misc/assert/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36867. @@ -7,13 +7,13 @@
  36868. subdirs += libc/misc/assert
  36869. -CSRC := __assert.c
  36870. +CSRC-y := __assert.c
  36871. MISC_ASSERT_DIR := $(top_srcdir)libc/misc/assert
  36872. MISC_ASSERT_OUT := $(top_builddir)libc/misc/assert
  36873. -MISC_ASSERT_SRC := $(MISC_ASSERT_DIR)/__assert.c
  36874. -MISC_ASSERT_OBJ := $(MISC_ASSERT_OUT)/__assert.o
  36875. +MISC_ASSERT_SRC := $(patsubst %.c,$(MISC_ASSERT_DIR)/%.c,$(CSRC-y))
  36876. +MISC_ASSERT_OBJ := $(patsubst %.c,$(MISC_ASSERT_OUT)/%.o,$(CSRC-y))
  36877. libc-y += $(MISC_ASSERT_OBJ)
  36878. diff -Nur uClibc-0.9.33.2/libc/misc/ctype/ctype.c uClibc/libc/misc/ctype/ctype.c
  36879. --- uClibc-0.9.33.2/libc/misc/ctype/ctype.c 2012-05-15 09:20:09.000000000 +0200
  36880. +++ uClibc/libc/misc/ctype/ctype.c 2014-02-03 12:32:56.000000000 +0100
  36881. @@ -11,8 +11,8 @@
  36882. * Library General Public License for more details.
  36883. *
  36884. * You should have received a copy of the GNU Library General Public
  36885. - * License along with this library; if not, write to the Free
  36886. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  36887. + * License along with this library; if not, see
  36888. + * <http://www.gnu.org/licenses/>.
  36889. */
  36890. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  36891. @@ -36,10 +36,6 @@
  36892. #include <assert.h>
  36893. #include <locale.h>
  36894. -#ifdef __UCLIBC_HAS_XLOCALE__
  36895. -# include <xlocale.h>
  36896. -#endif
  36897. -
  36898. /**********************************************************************/
  36899. #ifdef __UCLIBC_HAS_CTYPE_TABLES__
  36900. diff -Nur uClibc-0.9.33.2/libc/misc/ctype/Makefile.in uClibc/libc/misc/ctype/Makefile.in
  36901. --- uClibc-0.9.33.2/libc/misc/ctype/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36902. +++ uClibc/libc/misc/ctype/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36903. @@ -8,31 +8,25 @@
  36904. subdirs += libc/misc/ctype
  36905. # multi source ctype.c
  36906. -COM_SRC := \
  36907. +COM_SRC-y := \
  36908. isalnum.c isalpha.c iscntrl.c isdigit.c \
  36909. isgraph.c islower.c isprint.c ispunct.c isspace.c \
  36910. isupper.c isxdigit.c tolower.c toupper.c \
  36911. isblank.c
  36912. -ifeq ($(UCLIBC_SUSV4_LEGACY),y)
  36913. -COM_SRC += isascii.c toascii.c
  36914. -endif
  36915. -CSRC := $(COM_SRC)
  36916. +COM_SRC-$(UCLIBC_SUSV4_LEGACY) += isascii.c toascii.c
  36917. +CSRC-y := $(COM_SRC-y)
  36918. -ifeq ($(UCLIBC_HAS_CTYPE_TABLES),y)
  36919. -CSRC += __C_ctype_b.c __C_ctype_tolower.c __C_ctype_toupper.c \
  36920. +CSRC-$(UCLIBC_HAS_CTYPE_TABLES) += \
  36921. + __C_ctype_b.c __C_ctype_tolower.c __C_ctype_toupper.c \
  36922. __ctype_b_loc.c __ctype_tolower_loc.c __ctype_toupper_loc.c \
  36923. __ctype_assert.c isctype.c
  36924. -endif
  36925. -
  36926. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  36927. -CSRC += $(patsubst %.c,%_l.c,$(COM_SRC))
  36928. -endif
  36929. +CSRC-$(UCLIBC_HAS_XLOCALE) += $(patsubst %.c,%_l.c,$(COM_SRC-y))
  36930. MISC_CTYPE_DIR := $(top_srcdir)libc/misc/ctype
  36931. MISC_CTYPE_OUT := $(top_builddir)libc/misc/ctype
  36932. -MISC_CTYPE_SRC := $(patsubst %.c,$(MISC_CTYPE_DIR)/%.c,$(CSRC))
  36933. -MISC_CTYPE_OBJ := $(patsubst %.c,$(MISC_CTYPE_OUT)/%.o,$(CSRC))
  36934. +MISC_CTYPE_SRC := $(patsubst %.c,$(MISC_CTYPE_DIR)/%.c,$(CSRC-y))
  36935. +MISC_CTYPE_OBJ := $(patsubst %.c,$(MISC_CTYPE_OUT)/%.o,$(CSRC-y))
  36936. libc-y += $(MISC_CTYPE_OBJ)
  36937. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/alphasort64.c uClibc/libc/misc/dirent/alphasort64.c
  36938. --- uClibc-0.9.33.2/libc/misc/dirent/alphasort64.c 2012-05-15 09:20:09.000000000 +0200
  36939. +++ uClibc/libc/misc/dirent/alphasort64.c 2014-02-03 12:32:56.000000000 +0100
  36940. @@ -5,12 +5,14 @@
  36941. */
  36942. #include <_lfs_64.h>
  36943. -
  36944. #include <dirent.h>
  36945. -#include <string.h>
  36946. -#include "dirstream.h"
  36947. +
  36948. +#if __WORDSIZE != 64
  36949. +# include <string.h>
  36950. +# include "dirstream.h"
  36951. int alphasort64(const struct dirent64 **a, const struct dirent64 **b)
  36952. {
  36953. - return strcmp((*a)->d_name, (*b)->d_name);
  36954. + return strcoll((*a)->d_name, (*b)->d_name);
  36955. }
  36956. +#endif
  36957. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/alphasort.c uClibc/libc/misc/dirent/alphasort.c
  36958. --- uClibc-0.9.33.2/libc/misc/dirent/alphasort.c 2012-05-15 09:20:09.000000000 +0200
  36959. +++ uClibc/libc/misc/dirent/alphasort.c 2014-02-03 12:32:56.000000000 +0100
  36960. @@ -10,6 +10,8 @@
  36961. int alphasort(const struct dirent **a, const struct dirent **b)
  36962. {
  36963. - return strcmp((*a)->d_name, (*b)->d_name);
  36964. + return strcoll((*a)->d_name, (*b)->d_name);
  36965. }
  36966. -
  36967. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36968. +strong_alias_untyped(alphasort,alphasort64)
  36969. +#endif
  36970. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/dirstream.h uClibc/libc/misc/dirent/dirstream.h
  36971. --- uClibc-0.9.33.2/libc/misc/dirent/dirstream.h 2012-05-15 09:20:09.000000000 +0200
  36972. +++ uClibc/libc/misc/dirent/dirstream.h 2014-02-03 12:32:56.000000000 +0100
  36973. @@ -13,8 +13,7 @@
  36974. You should have received a copy of the GNU Library General Public
  36975. License along with the GNU C Library; see the file COPYING.LIB. If
  36976. -not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
  36977. -Cambridge, MA 02139, USA. */
  36978. +not, see <http://www.gnu.org/licenses/>. */
  36979. /*
  36980. * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
  36981. @@ -29,18 +28,6 @@
  36982. #include <bits/uClibc_mutex.h>
  36983. -/* For now, syscall readdir () only supports one entry at a time. It
  36984. - * will be changed in the future.
  36985. -#define NUMENT 3
  36986. -*/
  36987. -#ifndef NUMENT
  36988. -#define NUMENT 1
  36989. -#endif
  36990. -
  36991. -#define SINGLE_READDIR 11
  36992. -#define MULTI_READDIR 12
  36993. -#define NEW_READDIR 13
  36994. -
  36995. /* Directory stream type. */
  36996. struct __dirstream {
  36997. /* file descriptor */
  36998. @@ -65,10 +52,4 @@
  36999. __UCLIBC_MUTEX(dd_lock);
  37000. }; /* stream data from opendir() */
  37001. -
  37002. -extern ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
  37003. -#ifdef __UCLIBC_HAS_LFS__
  37004. -extern ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
  37005. -#endif
  37006. -
  37007. #endif /* dirent.h */
  37008. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/Makefile.in uClibc/libc/misc/dirent/Makefile.in
  37009. --- uClibc-0.9.33.2/libc/misc/dirent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37010. +++ uClibc/libc/misc/dirent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37011. @@ -7,18 +7,18 @@
  37012. subdirs += libc/misc/dirent
  37013. -CSRC := alphasort.c closedir.c dirfd.c opendir.c readdir.c rewinddir.c \
  37014. - scandir.c seekdir.c telldir.c readdir_r.c versionsort.c
  37015. -
  37016. -ifeq ($(UCLIBC_HAS_LFS),y)
  37017. -CSRC += readdir64.c alphasort64.c scandir64.c readdir64_r.c versionsort64.c
  37018. -endif
  37019. +CSRC := alphasort.c readdir.c scandir.c versionsort.c
  37020. +CSRC_R := readdir_r.c
  37021. +CSRC-y := closedir.c dirfd.c opendir.c rewinddir.c seekdir.c telldir.c $(CSRC) \
  37022. + $(CSRC_R)
  37023. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %.c,%64.c,$(CSRC))
  37024. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %_r.c,%64_r.c,$(CSRC_R))
  37025. MISC_DIRENT_DIR := $(top_srcdir)libc/misc/dirent
  37026. MISC_DIRENT_OUT := $(top_builddir)libc/misc/dirent
  37027. -MISC_DIRENT_SRC := $(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC))
  37028. -MISC_DIRENT_OBJ := $(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC))
  37029. +MISC_DIRENT_SRC := $(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC-y))
  37030. +MISC_DIRENT_OBJ := $(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC-y))
  37031. libc-y += $(MISC_DIRENT_OBJ)
  37032. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir64.c uClibc/libc/misc/dirent/readdir64.c
  37033. --- uClibc-0.9.33.2/libc/misc/dirent/readdir64.c 2012-05-15 09:20:09.000000000 +0200
  37034. +++ uClibc/libc/misc/dirent/readdir64.c 2014-02-03 12:32:56.000000000 +0100
  37035. @@ -5,52 +5,12 @@
  37036. */
  37037. #include <_lfs_64.h>
  37038. -
  37039. -#include <errno.h>
  37040. -#include <stdlib.h>
  37041. -#include <string.h>
  37042. -#include <unistd.h>
  37043. #include <dirent.h>
  37044. -#include "dirstream.h"
  37045. -
  37046. -struct dirent64 *readdir64(DIR * dir)
  37047. -{
  37048. - ssize_t bytes;
  37049. - struct dirent64 *de;
  37050. -
  37051. - if (!dir) {
  37052. - __set_errno(EBADF);
  37053. - return NULL;
  37054. - }
  37055. -
  37056. - __UCLIBC_MUTEX_LOCK(dir->dd_lock);
  37057. -
  37058. - do {
  37059. - if (dir->dd_size <= dir->dd_nextloc) {
  37060. - /* read dir->dd_max bytes of directory entries. */
  37061. - bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37062. - if (bytes <= 0) {
  37063. - de = NULL;
  37064. - goto all_done;
  37065. - }
  37066. - dir->dd_size = bytes;
  37067. - dir->dd_nextloc = 0;
  37068. - }
  37069. -
  37070. - de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37071. -
  37072. - /* Am I right? H.J. */
  37073. - dir->dd_nextloc += de->d_reclen;
  37074. -
  37075. - /* We have to save the next offset here. */
  37076. - dir->dd_nextoff = de->d_off;
  37077. -
  37078. - /* Skip deleted files. */
  37079. - } while (de->d_ino == 0);
  37080. -all_done:
  37081. - __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  37082. +#if __WORDSIZE != 64
  37083. +# define __READDIR readdir64
  37084. +# define __DIRENT_TYPE struct dirent64
  37085. +# define __GETDENTS __getdents64
  37086. - return de;
  37087. -}
  37088. -libc_hidden_def(readdir64)
  37089. +# include "readdir.c"
  37090. +#endif
  37091. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir64_r.c uClibc/libc/misc/dirent/readdir64_r.c
  37092. --- uClibc-0.9.33.2/libc/misc/dirent/readdir64_r.c 2012-05-15 09:20:09.000000000 +0200
  37093. +++ uClibc/libc/misc/dirent/readdir64_r.c 2014-02-03 12:32:56.000000000 +0100
  37094. @@ -5,62 +5,12 @@
  37095. */
  37096. #include <_lfs_64.h>
  37097. -
  37098. -#include <errno.h>
  37099. -#include <stdlib.h>
  37100. -#include <string.h>
  37101. -#include <unistd.h>
  37102. #include <dirent.h>
  37103. -#include "dirstream.h"
  37104. -
  37105. -
  37106. -int readdir64_r(DIR *dir, struct dirent64 *entry, struct dirent64 **result)
  37107. -{
  37108. - int ret;
  37109. - ssize_t bytes;
  37110. - struct dirent64 *de;
  37111. -
  37112. - if (!dir) {
  37113. - __set_errno(EBADF);
  37114. - return(EBADF);
  37115. - }
  37116. - de = NULL;
  37117. -
  37118. - __UCLIBC_MUTEX_LOCK(dir->dd_lock);
  37119. -
  37120. - do {
  37121. - if (dir->dd_size <= dir->dd_nextloc) {
  37122. - /* read dir->dd_max bytes of directory entries. */
  37123. - bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37124. - if (bytes <= 0) {
  37125. - *result = NULL;
  37126. - ret = (bytes==0)? 0 : errno;
  37127. - goto all_done;
  37128. - }
  37129. - dir->dd_size = bytes;
  37130. - dir->dd_nextloc = 0;
  37131. - }
  37132. -
  37133. - de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37134. -
  37135. - /* Am I right? H.J. */
  37136. - dir->dd_nextloc += de->d_reclen;
  37137. -
  37138. - /* We have to save the next offset here. */
  37139. - dir->dd_nextoff = de->d_off;
  37140. - /* Skip deleted files. */
  37141. - } while (de->d_ino == 0);
  37142. -
  37143. - if (de == NULL) {
  37144. - *result = NULL;
  37145. - } else {
  37146. - *result = memcpy (entry, de, de->d_reclen);
  37147. - }
  37148. - ret = 0;
  37149. -all_done:
  37150. +#if __WORDSIZE != 64
  37151. +# define __READDIR_R readdir64_r
  37152. +# define __DIRENT_TYPE struct dirent64
  37153. +# define __GETDENTS __getdents64
  37154. - __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  37155. - return((de != NULL)? 0 : ret);
  37156. -}
  37157. -libc_hidden_def(readdir64_r)
  37158. +# include "readdir_r.c"
  37159. +#endif
  37160. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir.c uClibc/libc/misc/dirent/readdir.c
  37161. --- uClibc-0.9.33.2/libc/misc/dirent/readdir.c 2012-05-15 09:20:09.000000000 +0200
  37162. +++ uClibc/libc/misc/dirent/readdir.c 2014-02-03 12:32:56.000000000 +0100
  37163. @@ -4,20 +4,22 @@
  37164. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37165. */
  37166. -#include <features.h>
  37167. -
  37168. -#include <errno.h>
  37169. -#include <stdlib.h>
  37170. -#include <string.h>
  37171. -#include <unistd.h>
  37172. #include <dirent.h>
  37173. +#include <errno.h>
  37174. +#define __need_NULL
  37175. +#include <stddef.h>
  37176. #include "dirstream.h"
  37177. +#ifndef __READDIR
  37178. +# define __READDIR readdir
  37179. +# define __DIRENT_TYPE struct dirent
  37180. +# define __GETDENTS __getdents
  37181. +#endif
  37182. -struct dirent *readdir(DIR * dir)
  37183. +__DIRENT_TYPE *__READDIR(DIR * dir)
  37184. {
  37185. ssize_t bytes;
  37186. - struct dirent *de;
  37187. + __DIRENT_TYPE *de;
  37188. if (!dir) {
  37189. __set_errno(EBADF);
  37190. @@ -29,7 +31,7 @@
  37191. do {
  37192. if (dir->dd_size <= dir->dd_nextloc) {
  37193. /* read dir->dd_max bytes of directory entries. */
  37194. - bytes = __getdents(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37195. + bytes = __GETDENTS(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37196. if (bytes <= 0) {
  37197. de = NULL;
  37198. goto all_done;
  37199. @@ -38,7 +40,7 @@
  37200. dir->dd_nextloc = 0;
  37201. }
  37202. - de = (struct dirent *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37203. + de = (__DIRENT_TYPE *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37204. /* Am I right? H.J. */
  37205. dir->dd_nextloc += de->d_reclen;
  37206. @@ -53,4 +55,8 @@
  37207. __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  37208. return de;
  37209. }
  37210. -libc_hidden_def(readdir)
  37211. +libc_hidden_def(__READDIR)
  37212. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  37213. +strong_alias_untyped(readdir,readdir64)
  37214. +libc_hidden_def(readdir64)
  37215. +#endif
  37216. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir_r.c uClibc/libc/misc/dirent/readdir_r.c
  37217. --- uClibc-0.9.33.2/libc/misc/dirent/readdir_r.c 2012-05-15 09:20:09.000000000 +0200
  37218. +++ uClibc/libc/misc/dirent/readdir_r.c 2014-02-03 12:32:56.000000000 +0100
  37219. @@ -4,19 +4,24 @@
  37220. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37221. */
  37222. +#include <dirent.h>
  37223. #include <errno.h>
  37224. -#include <stdlib.h>
  37225. #include <string.h>
  37226. -#include <unistd.h>
  37227. -#include <dirent.h>
  37228. +#define __need_NULL
  37229. +#include <stddef.h>
  37230. #include "dirstream.h"
  37231. +#ifndef __READDIR_R
  37232. +# define __READDIR_R readdir_r
  37233. +# define __DIRENT_TYPE struct dirent
  37234. +# define __GETDENTS __getdents
  37235. +#endif
  37236. -int readdir_r(DIR *dir, struct dirent *entry, struct dirent **result)
  37237. +int __READDIR_R(DIR *dir, __DIRENT_TYPE *entry, __DIRENT_TYPE **result)
  37238. {
  37239. int ret;
  37240. ssize_t bytes;
  37241. - struct dirent *de;
  37242. + __DIRENT_TYPE *de;
  37243. if (!dir) {
  37244. __set_errno(EBADF);
  37245. @@ -29,7 +34,7 @@
  37246. do {
  37247. if (dir->dd_size <= dir->dd_nextloc) {
  37248. /* read dir->dd_max bytes of directory entries. */
  37249. - bytes = __getdents(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37250. + bytes = __GETDENTS(dir->dd_fd, dir->dd_buf, dir->dd_max);
  37251. if (bytes <= 0) {
  37252. *result = NULL;
  37253. ret = (bytes==0)? 0 : errno;
  37254. @@ -39,7 +44,7 @@
  37255. dir->dd_nextloc = 0;
  37256. }
  37257. - de = (struct dirent *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37258. + de = (__DIRENT_TYPE *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  37259. /* Am I right? H.J. */
  37260. dir->dd_nextloc += de->d_reclen;
  37261. @@ -61,4 +66,8 @@
  37262. __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  37263. return((de != NULL)? 0 : ret);
  37264. }
  37265. -libc_hidden_def(readdir_r)
  37266. +libc_hidden_def(__READDIR_R)
  37267. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  37268. +strong_alias_untyped(readdir_r,readdir64_r)
  37269. +libc_hidden_def(readdir64_r)
  37270. +#endif
  37271. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/scandir64.c uClibc/libc/misc/dirent/scandir64.c
  37272. --- uClibc-0.9.33.2/libc/misc/dirent/scandir64.c 2012-05-15 09:20:09.000000000 +0200
  37273. +++ uClibc/libc/misc/dirent/scandir64.c 2014-02-03 12:32:56.000000000 +0100
  37274. @@ -1,111 +1,16 @@
  37275. -/* Copyright (C) 1992-1998, 2000 Free Software Foundation, Inc.
  37276. - This file is part of the GNU C Library.
  37277. -
  37278. - The GNU C Library is free software; you can redistribute it and/or
  37279. - modify it under the terms of the GNU Lesser General Public
  37280. - License as published by the Free Software Foundation; either
  37281. - version 2.1 of the License, or (at your option) any later version.
  37282. -
  37283. - The GNU C Library is distributed in the hope that it will be useful,
  37284. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  37285. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  37286. - Lesser General Public License for more details.
  37287. -
  37288. - You should have received a copy of the GNU Lesser General Public
  37289. - License along with the GNU C Library; if not, write to the Free
  37290. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37291. - 02111-1307 USA.
  37292. - */
  37293. -
  37294. -/* Modified for uClibc by Erik Andersen
  37295. - */
  37296. +/*
  37297. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  37298. + *
  37299. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37300. + */
  37301. #include <_lfs_64.h>
  37302. -
  37303. #include <dirent.h>
  37304. -#include <stdio.h>
  37305. -#include <string.h>
  37306. -#include <stdlib.h>
  37307. -#include <errno.h>
  37308. -#include <sys/types.h>
  37309. -#include "dirstream.h"
  37310. -
  37311. -int scandir64(const char *dir, struct dirent64 ***namelist,
  37312. - int (*selector) (const struct dirent64 *),
  37313. - int (*compar) (const struct dirent64 **, const struct dirent64 **))
  37314. -{
  37315. - DIR *dp = opendir (dir);
  37316. - struct dirent64 *current;
  37317. - struct dirent64 **names = NULL;
  37318. - size_t names_size = 0, pos;
  37319. - int save;
  37320. -
  37321. - if (dp == NULL)
  37322. - return -1;
  37323. -
  37324. - save = errno;
  37325. - __set_errno (0);
  37326. -
  37327. - pos = 0;
  37328. - while ((current = readdir64 (dp)) != NULL) {
  37329. - int use_it = selector == NULL;
  37330. -
  37331. - if (! use_it)
  37332. - {
  37333. - use_it = (*selector) (current);
  37334. - /* The selector function might have changed errno.
  37335. - * It was zero before and it need to be again to make
  37336. - * the latter tests work. */
  37337. - if (! use_it)
  37338. - __set_errno (0);
  37339. - }
  37340. - if (use_it)
  37341. - {
  37342. - struct dirent64 *vnew;
  37343. - size_t dsize;
  37344. -
  37345. - /* Ignore errors from selector or readdir64 */
  37346. - __set_errno (0);
  37347. -
  37348. - if (unlikely(pos == names_size))
  37349. - {
  37350. - struct dirent64 **new;
  37351. - if (names_size == 0)
  37352. - names_size = 10;
  37353. - else
  37354. - names_size *= 2;
  37355. - new = (struct dirent64 **) realloc (names,
  37356. - names_size * sizeof (struct dirent64 *));
  37357. - if (new == NULL)
  37358. - break;
  37359. - names = new;
  37360. - }
  37361. -
  37362. - dsize = &current->d_name[_D_ALLOC_NAMLEN(current)] - (char*)current;
  37363. - vnew = (struct dirent64 *) malloc (dsize);
  37364. - if (vnew == NULL)
  37365. - break;
  37366. -
  37367. - names[pos++] = (struct dirent64 *) memcpy (vnew, current, dsize);
  37368. - }
  37369. - }
  37370. - if (unlikely(errno != 0))
  37371. - {
  37372. - save = errno;
  37373. - closedir (dp);
  37374. - while (pos > 0)
  37375. - free (names[--pos]);
  37376. - free (names);
  37377. - __set_errno (save);
  37378. - return -1;
  37379. - }
  37380. - closedir (dp);
  37381. - __set_errno (save);
  37382. +#if __WORDSIZE != 64
  37383. +# define __SCANDIR scandir64
  37384. +# define __DIRENT_TYPE struct dirent64
  37385. +# define __READDIR readdir64
  37386. - /* Sort the list if we have a comparison function to sort with. */
  37387. - if (compar != NULL)
  37388. - qsort (names, pos, sizeof (struct dirent64 *), (comparison_fn_t) compar);
  37389. - *namelist = names;
  37390. - return pos;
  37391. -}
  37392. +# include "scandir.c"
  37393. +#endif
  37394. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/scandir.c uClibc/libc/misc/dirent/scandir.c
  37395. --- uClibc-0.9.33.2/libc/misc/dirent/scandir.c 2012-05-15 09:20:09.000000000 +0200
  37396. +++ uClibc/libc/misc/dirent/scandir.c 2014-02-03 12:32:56.000000000 +0100
  37397. @@ -1,24 +1,29 @@
  37398. +/* vi: set sw=4 ts=4: */
  37399. /*
  37400. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  37401. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  37402. *
  37403. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37404. */
  37405. #include <dirent.h>
  37406. -#include <stdio.h>
  37407. #include <string.h>
  37408. #include <stdlib.h>
  37409. #include <errno.h>
  37410. -#include <sys/types.h>
  37411. #include "dirstream.h"
  37412. -int scandir(const char *dir, struct dirent ***namelist,
  37413. - int (*selector) (const struct dirent *),
  37414. - int (*compar) (const struct dirent **, const struct dirent **))
  37415. +#ifndef __SCANDIR
  37416. +# define __SCANDIR scandir
  37417. +# define __DIRENT_TYPE struct dirent
  37418. +# define __READDIR readdir
  37419. +#endif
  37420. +
  37421. +int __SCANDIR(const char *dir, __DIRENT_TYPE ***namelist,
  37422. + int (*selector) (const __DIRENT_TYPE *),
  37423. + int (*compar) (const __DIRENT_TYPE **, const __DIRENT_TYPE **))
  37424. {
  37425. DIR *dp = opendir (dir);
  37426. - struct dirent *current;
  37427. - struct dirent **names = NULL;
  37428. + __DIRENT_TYPE *current;
  37429. + __DIRENT_TYPE **names = NULL;
  37430. size_t names_size = 0, pos;
  37431. int save;
  37432. @@ -29,7 +34,7 @@
  37433. __set_errno (0);
  37434. pos = 0;
  37435. - while ((current = readdir (dp)) != NULL) {
  37436. + while ((current = __READDIR (dp)) != NULL) {
  37437. int use_it = selector == NULL;
  37438. if (! use_it)
  37439. @@ -43,7 +48,7 @@
  37440. }
  37441. if (use_it)
  37442. {
  37443. - struct dirent *vnew;
  37444. + __DIRENT_TYPE *vnew;
  37445. size_t dsize;
  37446. /* Ignore errors from selector or readdir */
  37447. @@ -51,24 +56,24 @@
  37448. if (unlikely(pos == names_size))
  37449. {
  37450. - struct dirent **new;
  37451. + __DIRENT_TYPE **new;
  37452. if (names_size == 0)
  37453. names_size = 10;
  37454. else
  37455. names_size *= 2;
  37456. - new = (struct dirent **) realloc (names,
  37457. - names_size * sizeof (struct dirent *));
  37458. + new = (__DIRENT_TYPE **) realloc (names,
  37459. + names_size * sizeof (__DIRENT_TYPE *));
  37460. if (new == NULL)
  37461. break;
  37462. names = new;
  37463. }
  37464. dsize = &current->d_name[_D_ALLOC_NAMLEN(current)] - (char*)current;
  37465. - vnew = (struct dirent *) malloc (dsize);
  37466. + vnew = (__DIRENT_TYPE *) malloc (dsize);
  37467. if (vnew == NULL)
  37468. break;
  37469. - names[pos++] = (struct dirent *) memcpy (vnew, current, dsize);
  37470. + names[pos++] = (__DIRENT_TYPE *) memcpy (vnew, current, dsize);
  37471. }
  37472. }
  37473. @@ -88,7 +93,10 @@
  37474. /* Sort the list if we have a comparison function to sort with. */
  37475. if (compar != NULL)
  37476. - qsort (names, pos, sizeof (struct dirent *), (comparison_fn_t) compar);
  37477. + qsort (names, pos, sizeof (__DIRENT_TYPE *), (comparison_fn_t) compar);
  37478. *namelist = names;
  37479. return pos;
  37480. }
  37481. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  37482. +strong_alias_untyped(scandir,scandir64)
  37483. +#endif
  37484. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/versionsort64.c uClibc/libc/misc/dirent/versionsort64.c
  37485. --- uClibc-0.9.33.2/libc/misc/dirent/versionsort64.c 2012-05-15 09:20:09.000000000 +0200
  37486. +++ uClibc/libc/misc/dirent/versionsort64.c 2014-02-03 12:32:56.000000000 +0100
  37487. @@ -5,12 +5,14 @@
  37488. */
  37489. #include <_lfs_64.h>
  37490. -
  37491. #include <dirent.h>
  37492. -#include <string.h>
  37493. -#include "dirstream.h"
  37494. +
  37495. +#if __WORDSIZE != 64
  37496. +# include <string.h>
  37497. +# include "dirstream.h"
  37498. int versionsort64(const struct dirent64 **a, const struct dirent64 **b)
  37499. {
  37500. return strverscmp((*a)->d_name, (*b)->d_name);
  37501. }
  37502. +#endif
  37503. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/versionsort.c uClibc/libc/misc/dirent/versionsort.c
  37504. --- uClibc-0.9.33.2/libc/misc/dirent/versionsort.c 2012-05-15 09:20:09.000000000 +0200
  37505. +++ uClibc/libc/misc/dirent/versionsort.c 2014-02-03 12:32:56.000000000 +0100
  37506. @@ -12,3 +12,6 @@
  37507. {
  37508. return strverscmp((*a)->d_name, (*b)->d_name);
  37509. }
  37510. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  37511. +strong_alias_untyped(versionsort,versionsort64)
  37512. +#endif
  37513. diff -Nur uClibc-0.9.33.2/libc/misc/elf/dl-iterate-phdr.c uClibc/libc/misc/elf/dl-iterate-phdr.c
  37514. --- uClibc-0.9.33.2/libc/misc/elf/dl-iterate-phdr.c 2012-05-15 09:20:09.000000000 +0200
  37515. +++ uClibc/libc/misc/elf/dl-iterate-phdr.c 2014-02-03 12:32:56.000000000 +0100
  37516. @@ -18,10 +18,7 @@
  37517. /* we want this in libc but nowhere else */
  37518. #ifdef __USE_GNU
  37519. -extern __typeof(dl_iterate_phdr) __dl_iterate_phdr;
  37520. -
  37521. -hidden_proto(__dl_iterate_phdr)
  37522. -int
  37523. +static int
  37524. __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data)
  37525. {
  37526. int ret = 0;
  37527. @@ -41,7 +38,6 @@
  37528. #endif
  37529. return ret;
  37530. }
  37531. -hidden_def (__dl_iterate_phdr)
  37532. # ifdef SHARED
  37533. diff -Nur uClibc-0.9.33.2/libc/misc/elf/dl-support.c uClibc/libc/misc/elf/dl-support.c
  37534. --- uClibc-0.9.33.2/libc/misc/elf/dl-support.c 2012-05-15 09:20:09.000000000 +0200
  37535. +++ uClibc/libc/misc/elf/dl-support.c 2014-02-03 12:32:56.000000000 +0100
  37536. @@ -19,6 +19,7 @@
  37537. #include <ldsodefs.h>
  37538. #include <string.h>
  37539. #endif
  37540. +#include <bits/uClibc_page.h>
  37541. #if defined(USE_TLS) && USE_TLS
  37542. @@ -28,6 +29,7 @@
  37543. ElfW(Phdr) *_dl_phdr;
  37544. size_t _dl_phnum;
  37545. +size_t _dl_pagesize;
  37546. void internal_function _dl_aux_init (ElfW(auxv_t) *av);
  37547. void internal_function _dl_aux_init (ElfW(auxv_t) *av)
  37548. @@ -37,6 +39,9 @@
  37549. /* Get the number of program headers from the aux vect */
  37550. _dl_phnum = (size_t) av[AT_PHNUM].a_un.a_val;
  37551. +
  37552. + /* Get the pagesize from the aux vect */
  37553. + _dl_pagesize = (av[AT_PAGESZ].a_un.a_val) ? (size_t) av[AT_PAGESZ].a_un.a_val : PAGE_SIZE;
  37554. }
  37555. #if defined(USE_TLS) && USE_TLS
  37556. diff -Nur uClibc-0.9.33.2/libc/misc/error/err.c uClibc/libc/misc/error/err.c
  37557. --- uClibc-0.9.33.2/libc/misc/error/err.c 2012-05-15 09:20:09.000000000 +0200
  37558. +++ uClibc/libc/misc/error/err.c 2014-02-03 12:32:56.000000000 +0100
  37559. @@ -11,9 +11,6 @@
  37560. #include <stdarg.h>
  37561. #include <errno.h>
  37562. #include <err.h>
  37563. -#ifdef __UCLIBC_HAS_THREADS__
  37564. -#include <pthread.h>
  37565. -#endif
  37566. #ifdef __UCLIBC_MJN3_ONLY__
  37567. #warning REMINDER: Deal with wide oriented stderr case.
  37568. @@ -50,68 +47,68 @@
  37569. __STDIO_AUTO_THREADUNLOCK(stderr);
  37570. }
  37571. -void vwarn(const char *format, va_list args)
  37572. +static void __vwarn(const char *format, va_list args)
  37573. {
  37574. vwarn_work(format, args, 1);
  37575. }
  37576. -libc_hidden_def(vwarn)
  37577. +strong_alias(__vwarn,vwarn)
  37578. void warn(const char *format, ...)
  37579. {
  37580. va_list args;
  37581. va_start(args, format);
  37582. - vwarn(format, args);
  37583. + __vwarn(format, args);
  37584. va_end(args);
  37585. }
  37586. -void vwarnx(const char *format, va_list args)
  37587. +static void __vwarnx(const char *format, va_list args)
  37588. {
  37589. vwarn_work(format, args, 0);
  37590. }
  37591. -libc_hidden_def(vwarnx)
  37592. +strong_alias(__vwarnx,vwarnx)
  37593. void warnx(const char *format, ...)
  37594. {
  37595. va_list args;
  37596. va_start(args, format);
  37597. - vwarnx(format, args);
  37598. + __vwarnx(format, args);
  37599. va_end(args);
  37600. }
  37601. -void verr(int status, const char *format, va_list args)
  37602. +static void attribute_noreturn __verr(int status, const char *format, va_list args)
  37603. {
  37604. - vwarn(format, args);
  37605. + __vwarn(format, args);
  37606. exit(status);
  37607. }
  37608. -libc_hidden_def(verr)
  37609. +strong_alias(__verr,verr)
  37610. -void attribute_noreturn err(int status, const char *format, ...)
  37611. +void err(int status, const char *format, ...)
  37612. {
  37613. va_list args;
  37614. va_start(args, format);
  37615. - verr(status, format, args);
  37616. + __verr(status, format, args);
  37617. /* This should get optimized away. We'll leave it now for safety. */
  37618. /* The loop is added only to keep gcc happy. */
  37619. while(1)
  37620. va_end(args);
  37621. }
  37622. -void verrx(int status, const char *format, va_list args)
  37623. +static void attribute_noreturn __verrx(int status, const char *format, va_list args)
  37624. {
  37625. - vwarnx(format, args);
  37626. + __vwarnx(format, args);
  37627. exit(status);
  37628. }
  37629. -libc_hidden_def(verrx)
  37630. +strong_alias(__verrx,verrx)
  37631. -void attribute_noreturn errx(int status, const char *format, ...)
  37632. +void errx(int status, const char *format, ...)
  37633. {
  37634. va_list args;
  37635. va_start(args, format);
  37636. - verrx(status, format, args);
  37637. + __verrx(status, format, args);
  37638. /* This should get optimized away. We'll leave it now for safety. */
  37639. /* The loop is added only to keep gcc happy. */
  37640. while(1)
  37641. diff -Nur uClibc-0.9.33.2/libc/misc/error/error.c uClibc/libc/misc/error/error.c
  37642. --- uClibc-0.9.33.2/libc/misc/error/error.c 2012-05-15 09:20:09.000000000 +0200
  37643. +++ uClibc/libc/misc/error/error.c 2014-02-03 12:32:56.000000000 +0100
  37644. @@ -13,9 +13,8 @@
  37645. Lesser General Public License for more details.
  37646. You should have received a copy of the GNU Lesser General Public
  37647. - License along with the GNU C Library; if not, write to the Free
  37648. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37649. - 02111-1307 USA. */
  37650. + License along with the GNU C Library; if not, see
  37651. + <http://www.gnu.org/licenses/>. */
  37652. /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
  37653. /* Adjusted slightly by Erik Andersen <andersen@uclibc.org> */
  37654. @@ -37,8 +36,7 @@
  37655. function without parameters instead. */
  37656. void (*error_print_progname) (void) = NULL;
  37657. -extern __typeof(error) __error attribute_hidden;
  37658. -void __error (int status, int errnum, const char *message, ...)
  37659. +void error (int status, int errnum, const char *message, ...)
  37660. {
  37661. va_list args;
  37662. @@ -60,11 +58,9 @@
  37663. if (status)
  37664. exit (status);
  37665. }
  37666. -weak_alias(__error,error)
  37667. -extern __typeof(error_at_line) __error_at_line attribute_hidden;
  37668. -void __error_at_line (int status, int errnum, const char *file_name,
  37669. - unsigned int line_number, const char *message, ...)
  37670. +void error_at_line (int status, int errnum, const char *file_name,
  37671. + unsigned int line_number, const char *message, ...)
  37672. {
  37673. va_list args;
  37674. @@ -103,4 +99,3 @@
  37675. if (status)
  37676. exit (status);
  37677. }
  37678. -weak_alias(__error_at_line,error_at_line)
  37679. diff -Nur uClibc-0.9.33.2/libc/misc/error/Makefile.in uClibc/libc/misc/error/Makefile.in
  37680. --- uClibc-0.9.33.2/libc/misc/error/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37681. +++ uClibc/libc/misc/error/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37682. @@ -7,19 +7,15 @@
  37683. subdirs += libc/misc/error
  37684. -CSRC :=
  37685. -ifeq ($(UCLIBC_HAS_BSD_ERR),y)
  37686. -CSRC += err.c
  37687. -endif
  37688. -ifeq ($(UCLIBC_HAS_GNU_ERROR),y)
  37689. -CSRC += error.c
  37690. -endif
  37691. +CSRC-y :=
  37692. +CSRC-$(UCLIBC_HAS_BSD_ERR) += err.c
  37693. +CSRC-$(UCLIBC_HAS_GNU_ERROR) += error.c
  37694. MISC_ERROR_DIR := $(top_srcdir)libc/misc/error
  37695. MISC_ERROR_OUT := $(top_builddir)libc/misc/error
  37696. -MISC_ERROR_SRC := $(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC))
  37697. -MISC_ERROR_OBJ := $(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC))
  37698. +MISC_ERROR_SRC := $(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC-y))
  37699. +MISC_ERROR_OBJ := $(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC-y))
  37700. libc-y += $(MISC_ERROR_OBJ)
  37701. diff -Nur uClibc-0.9.33.2/libc/misc/file/isfdtype.c uClibc/libc/misc/file/isfdtype.c
  37702. --- uClibc-0.9.33.2/libc/misc/file/isfdtype.c 1970-01-01 01:00:00.000000000 +0100
  37703. +++ uClibc/libc/misc/file/isfdtype.c 2014-02-03 12:32:56.000000000 +0100
  37704. @@ -0,0 +1,40 @@
  37705. +/* Determine whether descriptor has given property.
  37706. + Copyright (C) 1996-2013 Free Software Foundation, Inc.
  37707. + This file is part of the GNU C Library.
  37708. +
  37709. + The GNU C Library is free software; you can redistribute it and/or
  37710. + modify it under the terms of the GNU Lesser General Public
  37711. + License as published by the Free Software Foundation; either
  37712. + version 2.1 of the License, or (at your option) any later version.
  37713. +
  37714. + The GNU C Library is distributed in the hope that it will be useful,
  37715. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  37716. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  37717. + Lesser General Public License for more details.
  37718. +
  37719. + You should have received a copy of the GNU Lesser General Public
  37720. + License along with the GNU C Library; if not, see
  37721. + <http://www.gnu.org/licenses/>. */
  37722. +
  37723. +#include <errno.h>
  37724. +#include <sys/stat.h>
  37725. +#include <sys/socket.h>
  37726. +#include <sys/types.h>
  37727. +#ifdef __UCLIBC_HAS_LFS__
  37728. +# include <_lfs_64.h>
  37729. +#else
  37730. +# define stat64 stat
  37731. +# define fstat64 fstat
  37732. +#endif
  37733. +
  37734. +int
  37735. +isfdtype (int fildes, int fdtype)
  37736. +{
  37737. + struct stat64 st;
  37738. + int save_error = errno;
  37739. + int result = fstat64 (fildes, &st);
  37740. + __set_errno (save_error);
  37741. + if (result)
  37742. + return result;
  37743. + return (st.st_mode & S_IFMT) == (mode_t) fdtype;
  37744. +}
  37745. diff -Nur uClibc-0.9.33.2/libc/misc/file/lockf64.c uClibc/libc/misc/file/lockf64.c
  37746. --- uClibc-0.9.33.2/libc/misc/file/lockf64.c 2012-05-15 09:20:09.000000000 +0200
  37747. +++ uClibc/libc/misc/file/lockf64.c 2014-02-03 12:32:56.000000000 +0100
  37748. @@ -13,8 +13,7 @@
  37749. You should have received a copy of the GNU Library General Public
  37750. License along with the GNU C Library; see the file COPYING.LIB. If not,
  37751. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  37752. - Boston, MA 02111-1307, USA. */
  37753. + see <http://www.gnu.org/licenses/>. */
  37754. #include <_lfs_64.h>
  37755. @@ -90,4 +89,3 @@
  37756. return fcntl(fd, cmd, &fl);
  37757. }
  37758. -libc_hidden_def(lockf64)
  37759. diff -Nur uClibc-0.9.33.2/libc/misc/file/lockf.c uClibc/libc/misc/file/lockf.c
  37760. --- uClibc-0.9.33.2/libc/misc/file/lockf.c 2012-05-15 09:20:09.000000000 +0200
  37761. +++ uClibc/libc/misc/file/lockf.c 2014-02-03 12:32:56.000000000 +0100
  37762. @@ -13,19 +13,15 @@
  37763. You should have received a copy of the GNU Library General Public
  37764. License along with the GNU C Library; see the file COPYING.LIB. If not,
  37765. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  37766. - Boston, MA 02111-1307, USA. */
  37767. + see <http://www.gnu.org/licenses/>. */
  37768. #include <features.h>
  37769. -
  37770. #include <sys/types.h>
  37771. -#include <unistd.h>
  37772. #include <fcntl.h>
  37773. +#include <unistd.h>
  37774. #include <errno.h>
  37775. #include <string.h>
  37776. -
  37777. -
  37778. /* lockf is a simplified interface to fcntl's locking facilities. */
  37779. int lockf (int fd, int cmd, off_t len)
  37780. diff -Nur uClibc-0.9.33.2/libc/misc/file/Makefile.in uClibc/libc/misc/file/Makefile.in
  37781. --- uClibc-0.9.33.2/libc/misc/file/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37782. +++ uClibc/libc/misc/file/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37783. @@ -10,12 +10,12 @@
  37784. MISC_FILE_DIR := $(top_srcdir)libc/misc/file
  37785. MISC_FILE_OUT := $(top_builddir)libc/misc/file
  37786. -MISC_FILE_SRC := $(wildcard $(MISC_FILE_DIR)/*.c)
  37787. -ifneq ($(UCLIBC_HAS_LFS),y)
  37788. -MISC_FILE_SRC := $(filter-out $(MISC_FILE_DIR)/lockf64.c,$(MISC_FILE_SRC))
  37789. -endif
  37790. -MISC_FILE_OBJ := $(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(MISC_FILE_SRC))
  37791. +CSRC-y := $(wildcard $(MISC_FILE_DIR)/*.c)
  37792. +CSRC_LFS := $(wildcard $(MISC_FILE_DIR)/*64.c)
  37793. +CSRC-y := $(filter-out $(CSRC_LFS),$(CSRC-y))
  37794. +CSRC-$(UCLIBC_HAS_LFS) += $(CSRC_LFS)
  37795. +MISC_FILE_OBJ := $(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(CSRC-y))
  37796. libc-y += $(MISC_FILE_OBJ)
  37797. libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_FILE_OUT)/lockf64.o
  37798. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch.c uClibc/libc/misc/fnmatch/fnmatch.c
  37799. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch.c 2012-05-15 09:20:09.000000000 +0200
  37800. +++ uClibc/libc/misc/fnmatch/fnmatch.c 2014-02-03 12:32:56.000000000 +0100
  37801. @@ -13,9 +13,8 @@
  37802. Lesser General Public License for more details.
  37803. You should have received a copy of the GNU Lesser General Public
  37804. - License along with the GNU C Library; if not, write to the Free
  37805. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37806. - 02111-1307 USA. */
  37807. + License along with the GNU C Library; if not, see
  37808. + <http://www.gnu.org/licenses/>. */
  37809. #ifdef HAVE_CONFIG_H
  37810. # include <config.h>
  37811. @@ -54,10 +53,6 @@
  37812. # include <stdlib.h>
  37813. #endif
  37814. -#ifdef __UCLIBC__
  37815. -# define __memset memset
  37816. -#endif
  37817. -
  37818. /* For platform which support the ISO C amendement 1 functionality we
  37819. support user defined character classes. */
  37820. #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
  37821. @@ -347,7 +342,7 @@
  37822. wchar_t *wstring = NULL;
  37823. /* Convert the strings into wide characters. */
  37824. - __memset (&ps, '\0', sizeof (ps));
  37825. + memset (&ps, '\0', sizeof (ps));
  37826. p = pattern;
  37827. #ifdef _LIBC
  37828. n = strnlen (pattern, 1024);
  37829. @@ -364,7 +359,7 @@
  37830. already done? */
  37831. return -1;
  37832. if (p)
  37833. - __memset (&ps, '\0', sizeof (ps));
  37834. + memset (&ps, '\0', sizeof (ps));
  37835. }
  37836. if (__builtin_expect (p != NULL, 0))
  37837. {
  37838. @@ -396,7 +391,7 @@
  37839. already done? */
  37840. return -1;
  37841. if (p)
  37842. - __memset (&ps, '\0', sizeof (ps));
  37843. + memset (&ps, '\0', sizeof (ps));
  37844. }
  37845. if (__builtin_expect (p != NULL, 0))
  37846. {
  37847. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_loop.c uClibc/libc/misc/fnmatch/fnmatch_loop.c
  37848. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_loop.c 2012-05-15 09:20:09.000000000 +0200
  37849. +++ uClibc/libc/misc/fnmatch/fnmatch_loop.c 2014-02-03 12:32:56.000000000 +0100
  37850. @@ -13,9 +13,8 @@
  37851. Lesser General Public License for more details.
  37852. You should have received a copy of the GNU Lesser General Public
  37853. - License along with the GNU C Library; if not, write to the Free
  37854. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37855. - 02111-1307 USA. */
  37856. + License along with the GNU C Library; if not, see
  37857. + <http://www.gnu.org/licenses/>. */
  37858. /* Match STRING against the filename pattern PATTERN, returning zero if
  37859. it matches, nonzero if not. */
  37860. @@ -508,7 +507,7 @@
  37861. if (symb_table[2 * elem] == hash
  37862. && (c1
  37863. == extra[symb_table[2 * elem + 1]])
  37864. - && __memcmp (str,
  37865. + && memcmp (str,
  37866. &extra[symb_table[2 * elem
  37867. + 1]
  37868. + 1], c1) == 0)
  37869. @@ -729,7 +728,7 @@
  37870. if (symb_table[2 * elem] == hash
  37871. && (c1
  37872. == extra[symb_table[2 * elem + 1]])
  37873. - && __memcmp (str,
  37874. + && memcmp (str,
  37875. &extra[symb_table[2 * elem + 1]
  37876. + 1], c1) == 0)
  37877. {
  37878. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_old.c uClibc/libc/misc/fnmatch/fnmatch_old.c
  37879. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_old.c 2012-05-15 09:20:09.000000000 +0200
  37880. +++ uClibc/libc/misc/fnmatch/fnmatch_old.c 2014-02-03 12:32:56.000000000 +0100
  37881. @@ -12,8 +12,7 @@
  37882. You should have received a copy of the GNU Library General Public
  37883. License along with this library; see the file COPYING.LIB. If
  37884. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  37885. -Cambridge, MA 02139, USA. */
  37886. +not, see <http://www.gnu.org/licenses/>. */
  37887. #ifdef HAVE_CONFIG_H
  37888. # include <config.h>
  37889. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/Makefile.in uClibc/libc/misc/fnmatch/Makefile.in
  37890. --- uClibc-0.9.33.2/libc/misc/fnmatch/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37891. +++ uClibc/libc/misc/fnmatch/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37892. @@ -7,17 +7,13 @@
  37893. subdirs += libc/misc/fnmatch
  37894. -ifeq ($(UCLIBC_HAS_FNMATCH_OLD),y)
  37895. -CSRC := fnmatch_old.c
  37896. -else
  37897. -CSRC := fnmatch.c
  37898. -endif
  37899. +CSRC-y := $(if $(UCLIBC_HAS_FNMATCH_OLD),fnmatch_old.c,fnmatch.c)
  37900. MISC_FNMATCH_DIR := $(top_srcdir)libc/misc/fnmatch
  37901. MISC_FNMATCH_OUT := $(top_builddir)libc/misc/fnmatch
  37902. -MISC_FNMATCH_SRC := $(patsubst %.c,$(MISC_FNMATCH_DIR)/%.c,$(CSRC))
  37903. -MISC_FNMATCH_OBJ := $(patsubst %.c,$(MISC_FNMATCH_OUT)/%.o,$(CSRC))
  37904. +MISC_FNMATCH_SRC := $(patsubst %.c,$(MISC_FNMATCH_DIR)/%.c,$(CSRC-y))
  37905. +MISC_FNMATCH_OBJ := $(patsubst %.c,$(MISC_FNMATCH_OUT)/%.o,$(CSRC-y))
  37906. libc-$(UCLIBC_HAS_FNMATCH) += $(MISC_FNMATCH_OBJ)
  37907. diff -Nur uClibc-0.9.33.2/libc/misc/fts/fts.c uClibc/libc/misc/fts/fts.c
  37908. --- uClibc-0.9.33.2/libc/misc/fts/fts.c 2012-05-15 09:20:09.000000000 +0200
  37909. +++ uClibc/libc/misc/fts/fts.c 2014-02-15 14:18:15.000000000 +0100
  37910. @@ -38,6 +38,7 @@
  37911. #include <unistd.h>
  37912. #ifdef __UCLIBC_HAS_LFS__
  37913. +/* this is wrong, either you include this header as first, or not at all */
  37914. # include <_lfs_64.h>
  37915. #else
  37916. # define stat64 stat
  37917. @@ -576,7 +577,7 @@
  37918. FTSENT *cur, *tail;
  37919. DIR *dirp;
  37920. void *oldaddr;
  37921. - int cderrno, descend, len, level, nlinks, saved_errno,
  37922. + int /*cderrno,*/ descend, len, level, nlinks, saved_errno,
  37923. nostat, doadjust;
  37924. size_t maxlen;
  37925. char *cp;
  37926. @@ -641,14 +642,14 @@
  37927. * needed sorted entries or stat information, they had better be
  37928. * checking FTS_NS on the returned nodes.
  37929. */
  37930. - cderrno = 0;
  37931. + /* cderrno = 0; */
  37932. if (nlinks || type == BREAD) {
  37933. if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) {
  37934. if (nlinks && type == BREAD)
  37935. cur->fts_errno = errno;
  37936. cur->fts_flags |= FTS_DONTCHDIR;
  37937. descend = 0;
  37938. - cderrno = errno;
  37939. + /* cderrno = errno; */
  37940. (void)closedir(dirp);
  37941. dirp = NULL;
  37942. } else
  37943. diff -Nur uClibc-0.9.33.2/libc/misc/fts/Makefile.in uClibc/libc/misc/fts/Makefile.in
  37944. --- uClibc-0.9.33.2/libc/misc/fts/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37945. +++ uClibc/libc/misc/fts/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37946. @@ -7,13 +7,13 @@
  37947. #
  37948. subdirs += libc/misc/fts
  37949. -CSRC := fts.c
  37950. +CSRC-y := fts.c
  37951. MISC_FTS_DIR := $(top_srcdir)libc/misc/fts
  37952. MISC_FTS_OUT := $(top_builddir)libc/misc/fts
  37953. -MISC_FTS_SRC := $(patsubst %.c,$(MISC_FTS_DIR)/%.c,$(CSRC))
  37954. -MISC_FTS_OBJ := $(patsubst %.c,$(MISC_FTS_OUT)/%.o,$(CSRC))
  37955. +MISC_FTS_SRC := $(patsubst %.c,$(MISC_FTS_DIR)/%.c,$(CSRC-y))
  37956. +MISC_FTS_OBJ := $(patsubst %.c,$(MISC_FTS_OUT)/%.o,$(CSRC-y))
  37957. libc-$(UCLIBC_HAS_FTS) += $(MISC_FTS_OBJ)
  37958. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/ftw64.c uClibc/libc/misc/ftw/ftw64.c
  37959. --- uClibc-0.9.33.2/libc/misc/ftw/ftw64.c 2012-05-15 09:20:09.000000000 +0200
  37960. +++ uClibc/libc/misc/ftw/ftw64.c 2014-02-03 12:32:56.000000000 +0100
  37961. @@ -14,9 +14,8 @@
  37962. Lesser General Public License for more details.
  37963. You should have received a copy of the GNU Lesser General Public
  37964. - License along with the GNU C Library; if not, write to the Free
  37965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37966. - 02111-1307 USA. */
  37967. + License along with the GNU C Library; if not, see
  37968. + <http://www.gnu.org/licenses/>. */
  37969. #define FTW_NAME ftw64
  37970. #define NFTW_NAME nftw64
  37971. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/ftw.c uClibc/libc/misc/ftw/ftw.c
  37972. --- uClibc-0.9.33.2/libc/misc/ftw/ftw.c 2012-05-15 09:20:09.000000000 +0200
  37973. +++ uClibc/libc/misc/ftw/ftw.c 2014-02-03 12:32:56.000000000 +0100
  37974. @@ -14,15 +14,16 @@
  37975. Lesser General Public License for more details.
  37976. You should have received a copy of the GNU Lesser General Public
  37977. - License along with the GNU C Library; if not, write to the Free
  37978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37979. - 02111-1307 USA. */
  37980. + License along with the GNU C Library; if not, see
  37981. + <http://www.gnu.org/licenses/>. */
  37982. #ifdef HAVE_CONFIG_H
  37983. # include <config.h>
  37984. #endif
  37985. #include <features.h>
  37986. +/* need errno.h before undefining _LIBC */
  37987. +#include <errno.h>
  37988. #ifdef __UCLIBC__
  37989. #undef _LIBC
  37990. #define HAVE_DIRENT_H 1
  37991. @@ -32,6 +33,7 @@
  37992. #endif
  37993. #if __GNUC__
  37994. +# undef alloca
  37995. # define alloca __builtin_alloca
  37996. #else
  37997. # if HAVE_ALLOCA_H
  37998. @@ -67,7 +69,6 @@
  37999. # endif
  38000. #endif
  38001. -#include <errno.h>
  38002. #include <ftw.h>
  38003. #include <limits.h>
  38004. #include <search.h>
  38005. @@ -77,11 +78,7 @@
  38006. #if HAVE_SYS_PARAM_H || defined _LIBC
  38007. # include <sys/param.h>
  38008. #endif
  38009. -#ifdef _LIBC
  38010. -# include <include/sys/stat.h>
  38011. -#else
  38012. -# include <sys/stat.h>
  38013. -#endif
  38014. +#include <sys/stat.h>
  38015. #if !defined _LIBC && !HAVE_DECL_STPCPY && !defined stpcpy
  38016. char *stpcpy ();
  38017. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/Makefile.in uClibc/libc/misc/ftw/Makefile.in
  38018. --- uClibc-0.9.33.2/libc/misc/ftw/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38019. +++ uClibc/libc/misc/ftw/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38020. @@ -7,16 +7,14 @@
  38021. subdirs += libc/misc/ftw
  38022. -CSRC := ftw.c
  38023. -ifeq ($(UCLIBC_HAS_LFS),y)
  38024. -CSRC += ftw64.c
  38025. -endif
  38026. +CSRC-y := ftw.c
  38027. +CSRC-$(UCLIBC_HAS_LFS) += ftw64.c
  38028. MISC_FTW_DIR := $(top_srcdir)libc/misc/ftw
  38029. MISC_FTW_OUT := $(top_builddir)libc/misc/ftw
  38030. -MISC_FTW_SRC := $(patsubst %.c,$(MISC_FTW_DIR)/%.c,$(CSRC))
  38031. -MISC_FTW_OBJ := $(patsubst %.c,$(MISC_FTW_OUT)/%.o,$(CSRC))
  38032. +MISC_FTW_SRC := $(patsubst %.c,$(MISC_FTW_DIR)/%.c,$(CSRC-y))
  38033. +MISC_FTW_OBJ := $(patsubst %.c,$(MISC_FTW_OUT)/%.o,$(CSRC-y))
  38034. libc-$(findstring y,$(UCLIBC_HAS_FTW)$(UCLIBC_HAS_NFTW)) += $(MISC_FTW_OBJ)
  38035. diff -Nur uClibc-0.9.33.2/libc/misc/glob/glob.c uClibc/libc/misc/glob/glob.c
  38036. --- uClibc-0.9.33.2/libc/misc/glob/glob.c 2012-05-15 09:20:09.000000000 +0200
  38037. +++ uClibc/libc/misc/glob/glob.c 2014-02-03 12:32:56.000000000 +0100
  38038. @@ -12,9 +12,8 @@
  38039. Lesser General Public License for more details.
  38040. You should have received a copy of the GNU Lesser General Public
  38041. - License along with the GNU C Library; if not, write to the Free
  38042. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38043. - 02111-1307 USA. */
  38044. + License along with the GNU C Library; if not, see
  38045. + <http://www.gnu.org/licenses/>. */
  38046. #undef ENABLE_GLOB_BRACE_EXPANSION
  38047. #undef ENABLE_GLOB_TILDE_EXPANSION
  38048. diff -Nur uClibc-0.9.33.2/libc/misc/glob/Makefile.in uClibc/libc/misc/glob/Makefile.in
  38049. --- uClibc-0.9.33.2/libc/misc/glob/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38050. +++ uClibc/libc/misc/glob/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38051. @@ -7,23 +7,15 @@
  38052. subdirs += libc/misc/glob
  38053. -ifeq ($(UCLIBC_HAS_GNU_GLOB),y)
  38054. -CSRC := glob.c
  38055. -ifeq ($(UCLIBC_HAS_LFS),y)
  38056. -CSRC += glob64.c
  38057. -endif
  38058. -else
  38059. -CSRC := glob-susv3.c
  38060. -ifeq ($(UCLIBC_HAS_LFS),y)
  38061. -CSRC += glob64-susv3.c
  38062. -endif
  38063. -endif
  38064. +VARIANT := $(if $(UCLIBC_HAS_GNU_GLOB),,-susv3)
  38065. +CSRC-y := glob$(VARIANT).c
  38066. +CSRC-$(UCLIBC_HAS_LFS) += glob64$(VARIANT).c
  38067. MISC_GLOB_DIR := $(top_srcdir)libc/misc/glob
  38068. MISC_GLOB_OUT := $(top_builddir)libc/misc/glob
  38069. -MISC_GLOB_SRC := $(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC))
  38070. -MISC_GLOB_OBJ := $(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC))
  38071. +MISC_GLOB_SRC := $(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC-y))
  38072. +MISC_GLOB_OBJ := $(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC-y))
  38073. libc-$(UCLIBC_HAS_GLOB) += $(MISC_GLOB_OBJ)
  38074. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/Makefile.in uClibc/libc/misc/gnu/Makefile.in
  38075. --- uClibc-0.9.33.2/libc/misc/gnu/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38076. +++ uClibc/libc/misc/gnu/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38077. @@ -7,13 +7,14 @@
  38078. subdirs += libc/misc/gnu
  38079. -CSRC := obstack.c
  38080. +CSRC-y :=
  38081. +CSRC-$(UCLIBC_HAS_OBSTACK) := obstack.c obprintf.c
  38082. MISC_GNU_DIR := $(top_srcdir)libc/misc/gnu
  38083. MISC_GNU_OUT := $(top_builddir)libc/misc/gnu
  38084. -MISC_GNU_SRC := $(MISC_GNU_DIR)/obstack.c
  38085. -MISC_GNU_OBJ := $(MISC_GNU_OUT)/obstack.o
  38086. +MISC_GNU_SRC := $(patsubst %.c,$(MISC_GNU_DIR)/%.c,$(CSRC-y))
  38087. +MISC_GNU_OBJ := $(patsubst %.c,$(MISC_GNU_OUT)/%.o,$(CSRC-y))
  38088. libc-y += $(MISC_GNU_OBJ)
  38089. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/obprintf.c uClibc/libc/misc/gnu/obprintf.c
  38090. --- uClibc-0.9.33.2/libc/misc/gnu/obprintf.c 1970-01-01 01:00:00.000000000 +0100
  38091. +++ uClibc/libc/misc/gnu/obprintf.c 2014-02-03 12:32:56.000000000 +0100
  38092. @@ -0,0 +1,29 @@
  38093. +/* Copyright (C) 2013 Gentoo Foundation
  38094. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  38095. + */
  38096. +
  38097. +#include <stdio.h>
  38098. +#include <stdarg.h>
  38099. +#include <obstack.h>
  38100. +
  38101. +int
  38102. +obstack_vprintf (struct obstack *obstack, const char *format, va_list args)
  38103. +{
  38104. + int n;
  38105. + char *s;
  38106. + n = vasprintf(&s, format, args);
  38107. + obstack_grow(obstack, s, n);
  38108. + return n;
  38109. +}
  38110. +libc_hidden_def(obstack_vprintf)
  38111. +
  38112. +int
  38113. +obstack_printf (struct obstack *obstack, const char *format, ...)
  38114. +{
  38115. + int n;
  38116. + va_list ap;
  38117. + va_start (ap, format);
  38118. + n = obstack_vprintf (obstack, format, ap);
  38119. + va_end (ap);
  38120. + return n;
  38121. +}
  38122. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/obstack.c uClibc/libc/misc/gnu/obstack.c
  38123. --- uClibc-0.9.33.2/libc/misc/gnu/obstack.c 2012-05-15 09:20:09.000000000 +0200
  38124. +++ uClibc/libc/misc/gnu/obstack.c 2014-02-03 12:32:56.000000000 +0100
  38125. @@ -14,9 +14,8 @@
  38126. Lesser General Public License for more details.
  38127. You should have received a copy of the GNU Lesser General Public
  38128. - License along with the GNU C Library; if not, write to the Free
  38129. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  38130. - Boston, MA 02110-1301, USA. */
  38131. + License along with the GNU C Library; if not, see
  38132. + <http://www.gnu.org/licenses/>. */
  38133. #ifdef HAVE_CONFIG_H
  38134. @@ -30,11 +29,6 @@
  38135. #else
  38136. # define HAVE_INTTYPES_H 1
  38137. # define HAVE_STDINT_H 1
  38138. -# define SHLIB_COMPAT(x,y,z) 0
  38139. -# undef libc_hidden_def
  38140. -# define libc_hidden_def(x)
  38141. -# undef strong_alias
  38142. -# define strong_alias(x,y)
  38143. #endif
  38144. #else
  38145. # include "obstack.h"
  38146. @@ -112,19 +106,19 @@
  38147. `print_and_abort'. */
  38148. static void print_and_abort (void);
  38149. static void (*__obstack_alloc_failed_handler) (void) = print_and_abort;
  38150. -weak_alias(__obstack_alloc_failed_handler,obstack_alloc_failed_handler)
  38151. +strong_alias(__obstack_alloc_failed_handler,obstack_alloc_failed_handler)
  38152. /* Exit value used when `print_and_abort' is used. */
  38153. # include <stdlib.h>
  38154. # ifdef _LIBC
  38155. static int __obstack_exit_failure = EXIT_FAILURE;
  38156. -weak_alias(__obstack_exit_failure,obstack_exit_failure)
  38157. +strong_alias(__obstack_exit_failure,obstack_exit_failure)
  38158. # else
  38159. # include "exitfail.h"
  38160. # define __obstack_exit_failure exit_failure
  38161. # endif
  38162. -# ifdef _LIBC
  38163. +# if 0
  38164. # if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
  38165. /* A looong time ago (before 1994, anyway; we're not sure) this global variable
  38166. was used by non-GNU-C macros to avoid multiple evaluation. The GNU C
  38167. @@ -328,9 +322,7 @@
  38168. /* The new chunk certainly contains no empty object yet. */
  38169. h->maybe_empty_object = 0;
  38170. }
  38171. -# ifdef _LIBC
  38172. -libc_hidden_def (_obstack_newchunk)
  38173. -# endif
  38174. +libc_hidden_def(_obstack_newchunk)
  38175. /* Return nonzero if object OBJ has been allocated from obstack H.
  38176. This is here for debugging.
  38177. @@ -393,7 +385,7 @@
  38178. abort ();
  38179. }
  38180. -# ifdef _LIBC
  38181. +# if 0
  38182. /* Older versions of libc used a function _obstack_free intended to be
  38183. called by non-GCC compilers. */
  38184. strong_alias (obstack_free, _obstack_free)
  38185. @@ -418,9 +410,6 @@
  38186. # else
  38187. # include "gettext.h"
  38188. # endif
  38189. -/* NLS: Disable gettext in obstack for now: */
  38190. -# undef _
  38191. -# define _(Str) (Str)
  38192. # ifndef _
  38193. # define _(msgid) gettext (msgid)
  38194. # endif
  38195. diff -Nur uClibc-0.9.33.2/libc/misc/internals/errno.c uClibc/libc/misc/internals/errno.c
  38196. --- uClibc-0.9.33.2/libc/misc/internals/errno.c 2012-05-15 09:20:09.000000000 +0200
  38197. +++ uClibc/libc/misc/internals/errno.c 2014-02-03 12:32:56.000000000 +0100
  38198. @@ -1,21 +1,14 @@
  38199. #include <features.h>
  38200. +#include <errno.h>
  38201. +#undef errno
  38202. #ifdef __UCLIBC_HAS_TLS__
  38203. __thread int errno;
  38204. -__thread int h_errno;
  38205. -
  38206. extern __thread int __libc_errno __attribute__ ((alias ("errno"))) attribute_hidden;
  38207. -extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno"))) attribute_hidden;
  38208. -#define h_errno __libc_h_errno
  38209. -
  38210. #else
  38211. -#include "internal_errno.h"
  38212. +extern int errno;
  38213. int errno = 0;
  38214. -int h_errno = 0;
  38215. -#ifdef __UCLIBC_HAS_THREADS__
  38216. -libc_hidden_def(errno)
  38217. -weak_alias(errno, _errno)
  38218. -libc_hidden_def(h_errno)
  38219. -weak_alias(h_errno, _h_errno)
  38220. -#endif
  38221. +# ifdef __UCLIBC_HAS_THREADS__
  38222. +strong_alias(errno,_errno)
  38223. +# endif
  38224. #endif
  38225. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__errno_location.c uClibc/libc/misc/internals/__errno_location.c
  38226. --- uClibc-0.9.33.2/libc/misc/internals/__errno_location.c 2012-05-15 09:20:09.000000000 +0200
  38227. +++ uClibc/libc/misc/internals/__errno_location.c 2014-02-03 12:32:56.000000000 +0100
  38228. @@ -4,17 +4,16 @@
  38229. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  38230. */
  38231. -#include "internal_errno.h"
  38232. +#include <features.h>
  38233. +#include <errno.h>
  38234. -/* psm: moved to bits/errno.h: */
  38235. -int *
  38236. -#ifndef __UCLIBC_HAS_THREADS__
  38237. -weak_const_function
  38238. +#ifndef __UCLIBC_HAS_TLS__
  38239. +# undef errno
  38240. +extern int errno;
  38241. #endif
  38242. -__errno_location (void)
  38243. +
  38244. +int *__errno_location(void)
  38245. {
  38246. return &errno;
  38247. }
  38248. -#ifdef IS_IN_libc /* not really need, only to keep in sync w/ libc_hidden_proto */
  38249. libc_hidden_weak(__errno_location)
  38250. -#endif
  38251. diff -Nur uClibc-0.9.33.2/libc/misc/internals/h_errno.c uClibc/libc/misc/internals/h_errno.c
  38252. --- uClibc-0.9.33.2/libc/misc/internals/h_errno.c 1970-01-01 01:00:00.000000000 +0100
  38253. +++ uClibc/libc/misc/internals/h_errno.c 2014-02-03 12:32:56.000000000 +0100
  38254. @@ -0,0 +1,14 @@
  38255. +#include <features.h>
  38256. +#include <netdb.h>
  38257. +#undef h_errno
  38258. +
  38259. +#ifdef __UCLIBC_HAS_TLS__
  38260. +__thread int h_errno;
  38261. +extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno"))) attribute_hidden;
  38262. +#else
  38263. +extern int h_errno;
  38264. +int h_errno = 0;
  38265. +# ifdef __UCLIBC_HAS_THREADS__
  38266. +strong_alias(h_errno,_h_errno)
  38267. +# endif
  38268. +#endif
  38269. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__h_errno_location.c uClibc/libc/misc/internals/__h_errno_location.c
  38270. --- uClibc-0.9.33.2/libc/misc/internals/__h_errno_location.c 2012-05-15 09:20:09.000000000 +0200
  38271. +++ uClibc/libc/misc/internals/__h_errno_location.c 2014-02-03 12:32:56.000000000 +0100
  38272. @@ -4,9 +4,15 @@
  38273. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  38274. */
  38275. -#include "internal_errno.h"
  38276. +#include <features.h>
  38277. +#include <netdb.h>
  38278. -int * weak_const_function __h_errno_location (void)
  38279. +#ifndef __UCLIBC_HAS_TLS__
  38280. +# undef h_errno
  38281. +extern int h_errno;
  38282. +#endif
  38283. +
  38284. +int *__h_errno_location(void)
  38285. {
  38286. return &h_errno;
  38287. }
  38288. diff -Nur uClibc-0.9.33.2/libc/misc/internals/internal_errno.h uClibc/libc/misc/internals/internal_errno.h
  38289. --- uClibc-0.9.33.2/libc/misc/internals/internal_errno.h 2012-05-15 09:20:09.000000000 +0200
  38290. +++ uClibc/libc/misc/internals/internal_errno.h 1970-01-01 01:00:00.000000000 +0100
  38291. @@ -1,21 +0,0 @@
  38292. -/*
  38293. - *
  38294. - */
  38295. -
  38296. -#include <features.h>
  38297. -#include <errno.h>
  38298. -#include <netdb.h>
  38299. -
  38300. -#ifndef __UCLIBC_HAS_TLS__
  38301. -
  38302. -#undef errno
  38303. -#undef h_errno
  38304. -
  38305. -extern int h_errno;
  38306. -extern int errno;
  38307. -
  38308. -#ifdef __UCLIBC_HAS_THREADS__
  38309. -libc_hidden_proto(h_errno)
  38310. -libc_hidden_proto(errno)
  38311. -#endif
  38312. -#endif
  38313. diff -Nur uClibc-0.9.33.2/libc/misc/internals/Makefile.in uClibc/libc/misc/internals/Makefile.in
  38314. --- uClibc-0.9.33.2/libc/misc/internals/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38315. +++ uClibc/libc/misc/internals/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38316. @@ -7,14 +7,14 @@
  38317. subdirs += libc/misc/internals
  38318. -CSRC := tempname.c errno.c __errno_location.c __h_errno_location.c \
  38319. +CSRC-y := tempname.c errno.c h_errno.c __errno_location.c __h_errno_location.c \
  38320. parse_config.c
  38321. MISC_INTERNALS_DIR := $(top_srcdir)libc/misc/internals
  38322. MISC_INTERNALS_OUT := $(top_builddir)libc/misc/internals
  38323. -MISC_INTERNALS_SRC := $(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC))
  38324. -MISC_INTERNALS_OBJ := $(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC))
  38325. +MISC_INTERNALS_SRC := $(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC-y))
  38326. +MISC_INTERNALS_OBJ := $(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC-y))
  38327. CFLAGS-__uClibc_main.c := $(SSP_DISABLE_FLAGS)
  38328. diff -Nur uClibc-0.9.33.2/libc/misc/internals/parse_config.c uClibc/libc/misc/internals/parse_config.c
  38329. --- uClibc-0.9.33.2/libc/misc/internals/parse_config.c 2012-05-15 09:20:09.000000000 +0200
  38330. +++ uClibc/libc/misc/internals/parse_config.c 2014-02-03 12:32:56.000000000 +0100
  38331. @@ -129,7 +129,7 @@
  38332. return parser;
  38333. }
  38334. -parser_t attribute_hidden * FAST_FUNC config_open(const char *filename)
  38335. +parser_t * FAST_FUNC config_open(const char *filename)
  38336. {
  38337. return config_open2(filename, fopen_or_warn_stdin);
  38338. }
  38339. @@ -142,7 +142,7 @@
  38340. }
  38341. #endif
  38342. -void attribute_hidden FAST_FUNC config_close(parser_t *parser)
  38343. +void FAST_FUNC config_close(parser_t *parser)
  38344. {
  38345. if (parser) {
  38346. fclose(parser->fp);
  38347. @@ -176,7 +176,7 @@
  38348. (but more than 0) are found. Empty lines are always skipped (not warned about).
  38349. */
  38350. #undef config_read
  38351. -int attribute_hidden FAST_FUNC config_read(parser_t *parser, char ***tokens,
  38352. +int FAST_FUNC config_read(parser_t *parser, char ***tokens,
  38353. unsigned flags, const char *delims)
  38354. {
  38355. char *line;
  38356. diff -Nur uClibc-0.9.33.2/libc/misc/internals/tempname.c uClibc/libc/misc/internals/tempname.c
  38357. --- uClibc-0.9.33.2/libc/misc/internals/tempname.c 2012-05-15 09:20:09.000000000 +0200
  38358. +++ uClibc/libc/misc/internals/tempname.c 2014-02-03 12:32:56.000000000 +0100
  38359. @@ -13,8 +13,7 @@
  38360. You should have received a copy of the GNU Library General Public
  38361. License along with the GNU C Library; see the file COPYING.LIB. If not,
  38362. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  38363. - Boston, MA 02111-1307, USA. */
  38364. + see <http://www.gnu.org/licenses/>. */
  38365. /* March 11, 2002 Manuel Novoa III
  38366. *
  38367. @@ -58,7 +57,7 @@
  38368. for use with mk[s]temp. Will fail (-1) if DIR is non-null and
  38369. doesn't exist, none of the searched dirs exists, or there's not
  38370. enough space in TMPL. */
  38371. -int attribute_hidden ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
  38372. +int ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
  38373. const char *pfx /*, int try_tmpdir*/)
  38374. {
  38375. /*const char *d; */
  38376. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__uClibc_main.c uClibc/libc/misc/internals/__uClibc_main.c
  38377. --- uClibc-0.9.33.2/libc/misc/internals/__uClibc_main.c 2012-05-15 09:20:09.000000000 +0200
  38378. +++ uClibc/libc/misc/internals/__uClibc_main.c 2014-02-03 12:32:56.000000000 +0100
  38379. @@ -15,9 +15,6 @@
  38380. */
  38381. #include <features.h>
  38382. -#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  38383. -#define _ERRNO_H
  38384. -#endif
  38385. #include <unistd.h>
  38386. #include <stdlib.h>
  38387. #include <string.h>
  38388. @@ -25,20 +22,23 @@
  38389. #include <link.h>
  38390. #include <bits/uClibc_page.h>
  38391. #include <paths.h>
  38392. -#include <unistd.h>
  38393. -#include <asm/errno.h>
  38394. +#include <errno.h>
  38395. +#include <netdb.h>
  38396. +#include <stdio.h>
  38397. +#ifndef __ARCH_HAS_NO_LDSO__
  38398. #include <fcntl.h>
  38399. -#include <sys/stat.h>
  38400. -#include <sys/sysmacros.h>
  38401. +#endif
  38402. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  38403. -#include <errno.h>
  38404. #include <pthread-functions.h>
  38405. #include <not-cancel.h>
  38406. #include <atomic.h>
  38407. #endif
  38408. #ifdef __UCLIBC_HAS_THREADS__
  38409. #include <pthread.h>
  38410. -#endif
  38411. +#endif
  38412. +#ifdef __UCLIBC_HAS_LOCALE__
  38413. +#include <locale.h>
  38414. +#endif
  38415. #ifndef SHARED
  38416. void *__libc_stack_end = NULL;
  38417. @@ -116,12 +116,6 @@
  38418. /*
  38419. * Prototypes.
  38420. */
  38421. -extern int *weak_const_function __errno_location(void);
  38422. -extern int *weak_const_function __h_errno_location(void);
  38423. -extern void weak_function _stdio_init(void) attribute_hidden;
  38424. -#ifdef __UCLIBC_HAS_LOCALE__
  38425. -extern void weak_function _locale_init(void) attribute_hidden;
  38426. -#endif
  38427. #ifdef __UCLIBC_HAS_THREADS__
  38428. #if !defined (__UCLIBC_HAS_THREADS_NATIVE__) || defined (SHARED)
  38429. extern void weak_function __pthread_initialize_minimal(void);
  38430. @@ -146,18 +140,24 @@
  38431. # endif
  38432. #endif
  38433. -#if defined (__LDSO_STANDALONE_SUPPORT__) && defined (SHARED) && defined __sh__
  38434. -extern unsigned long _dl_skip_args;
  38435. +#ifdef SHARED
  38436. +extern int _dl_secure;
  38437. #endif
  38438. +extern size_t _dl_pagesize;
  38439. -attribute_hidden const char *__uclibc_progname = "";
  38440. -#ifdef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  38441. -const char *program_invocation_short_name = "";
  38442. -const char *program_invocation_name = "";
  38443. -#endif
  38444. -#ifdef __UCLIBC_HAS___PROGNAME__
  38445. -weak_alias (program_invocation_short_name, __progname)
  38446. -weak_alias (program_invocation_name, __progname_full)
  38447. +const char *__uclibc_progname = "";
  38448. +#if !defined __UCLIBC_HAS___PROGNAME__ && defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  38449. +# define __progname program_invocation_short_name
  38450. +# define __progname_full program_invocation_name
  38451. +#endif
  38452. +#if defined __UCLIBC_HAS___PROGNAME__ || (defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__)
  38453. +const char *__progname = "";
  38454. +/* psm: why have a visible __progname_full? */
  38455. +const char *__progname_full = "";
  38456. +# if defined __UCLIBC_HAS___PROGNAME__ && defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  38457. +weak_alias (__progname, program_invocation_short_name)
  38458. +weak_alias (__progname_full, program_invocation_name)
  38459. +# endif
  38460. #endif
  38461. /*
  38462. @@ -167,7 +167,6 @@
  38463. char **__environ = 0;
  38464. weak_alias(__environ, environ)
  38465. -/* TODO: don't export __pagesize; we cant now because libpthread uses it */
  38466. size_t __pagesize = 0;
  38467. #ifndef O_NOFOLLOW
  38468. @@ -192,6 +191,7 @@
  38469. }
  38470. }
  38471. +#ifndef SHARED
  38472. static int __check_suid(void)
  38473. {
  38474. uid_t uid, euid;
  38475. @@ -208,6 +208,7 @@
  38476. return 0; /* we are not suid */
  38477. }
  38478. #endif
  38479. +#endif
  38480. /* __uClibc_init completely initialize uClibc so it is ready to use.
  38481. *
  38482. @@ -222,8 +223,7 @@
  38483. * __uClibc_main.
  38484. */
  38485. -extern void __uClibc_init(void);
  38486. -libc_hidden_proto(__uClibc_init)
  38487. +extern void __uClibc_init(void) attribute_hidden;
  38488. void __uClibc_init(void)
  38489. {
  38490. /* Don't recurse */
  38491. @@ -276,7 +276,6 @@
  38492. _stdio_init();
  38493. }
  38494. -libc_hidden_def(__uClibc_init)
  38495. #ifdef __UCLIBC_CTOR_DTOR__
  38496. void attribute_hidden (*__app_fini)(void) = NULL;
  38497. @@ -284,8 +283,7 @@
  38498. void attribute_hidden (*__rtld_fini)(void) = NULL;
  38499. -extern void __uClibc_fini(void);
  38500. -libc_hidden_proto(__uClibc_fini)
  38501. +extern void __uClibc_fini(void) attribute_hidden;
  38502. void __uClibc_fini(void)
  38503. {
  38504. #ifdef __UCLIBC_CTOR_DTOR__
  38505. @@ -304,7 +302,6 @@
  38506. if (__rtld_fini != NULL)
  38507. (__rtld_fini)();
  38508. }
  38509. -libc_hidden_def(__uClibc_fini)
  38510. #ifndef SHARED
  38511. extern void __nptl_deallocate_tsd (void) __attribute ((weak));
  38512. @@ -323,7 +320,7 @@
  38513. char **argv, void (*app_init)(void), void (*app_fini)(void),
  38514. void (*rtld_fini)(void), void *stack_end attribute_unused)
  38515. {
  38516. -#ifndef __ARCH_HAS_NO_LDSO__
  38517. +#if !defined __ARCH_HAS_NO_LDSO__ && !defined SHARED
  38518. unsigned long *aux_dat;
  38519. ElfW(auxv_t) auxvt[AT_EGID + 1];
  38520. #endif
  38521. @@ -339,18 +336,6 @@
  38522. __rtld_fini = rtld_fini;
  38523. -#if defined __LDSO_STANDALONE_SUPPORT__ && defined SHARED && defined __sh__
  38524. - /*
  38525. - * Skip ld.so and its arguments
  38526. - * Other archs except for SH do this in _dl_start before passing
  38527. - * control to the application.
  38528. - * FIXME: align SH _dl_start to other archs and remove this from here,
  38529. - * so that we can keep the visibility hidden.
  38530. - */
  38531. - argc -= _dl_skip_args;
  38532. - argv += _dl_skip_args;
  38533. -#endif
  38534. -
  38535. /* The environment begins right after argv. */
  38536. __environ = &argv[argc + 1];
  38537. @@ -361,7 +346,7 @@
  38538. __environ = &argv[argc];
  38539. }
  38540. -#ifndef __ARCH_HAS_NO_LDSO__
  38541. +#if !defined __ARCH_HAS_NO_LDSO__ && !defined SHARED
  38542. /* Pull stuff from the ELF header when possible */
  38543. memset(auxvt, 0x00, sizeof(auxvt));
  38544. aux_dat = (unsigned long*)__environ;
  38545. @@ -376,13 +361,11 @@
  38546. }
  38547. aux_dat += 2;
  38548. }
  38549. -#ifndef SHARED
  38550. /* Get the program headers (_dl_phdr) from the aux vector
  38551. It will be used into __libc_setup_tls. */
  38552. _dl_aux_init (auxvt);
  38553. #endif
  38554. -#endif
  38555. /* We need to initialize uClibc. If we are dynamically linked this
  38556. * may have already been completed by the shared lib loader. We call
  38557. @@ -390,15 +373,20 @@
  38558. __uClibc_init();
  38559. #ifndef __ARCH_HAS_NO_LDSO__
  38560. - /* Make certain getpagesize() gives the correct answer */
  38561. - __pagesize = (auxvt[AT_PAGESZ].a_un.a_val)? auxvt[AT_PAGESZ].a_un.a_val : PAGE_SIZE;
  38562. + /* Make certain getpagesize() gives the correct answer.
  38563. + * _dl_pagesize is defined into ld.so if SHARED or into libc.a otherwise. */
  38564. + __pagesize = _dl_pagesize;
  38565. +#ifndef SHARED
  38566. /* Prevent starting SUID binaries where the stdin. stdout, and
  38567. * stderr file descriptors are not already opened. */
  38568. if ((auxvt[AT_UID].a_un.a_val == (size_t)-1 && __check_suid()) ||
  38569. (auxvt[AT_UID].a_un.a_val != (size_t)-1 &&
  38570. (auxvt[AT_UID].a_un.a_val != auxvt[AT_EUID].a_un.a_val ||
  38571. auxvt[AT_GID].a_un.a_val != auxvt[AT_EGID].a_un.a_val)))
  38572. +#else
  38573. + if (_dl_secure)
  38574. +#endif
  38575. {
  38576. __check_one_fd (STDIN_FILENO, O_RDONLY | O_NOFOLLOW);
  38577. __check_one_fd (STDOUT_FILENO, O_RDWR | O_NOFOLLOW);
  38578. @@ -407,14 +395,14 @@
  38579. #endif
  38580. __uclibc_progname = *argv;
  38581. -#ifdef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  38582. +#if defined __UCLIBC_HAS___PROGNAME__ || (defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__)
  38583. if (*argv != NULL) {
  38584. - program_invocation_name = *argv;
  38585. - program_invocation_short_name = strrchr(*argv, '/');
  38586. - if (program_invocation_short_name != NULL)
  38587. - ++program_invocation_short_name;
  38588. + __progname_full = *argv;
  38589. + __progname = strrchr(*argv, '/');
  38590. + if (__progname != NULL)
  38591. + ++__progname;
  38592. else
  38593. - program_invocation_short_name = program_invocation_name;
  38594. + __progname = *argv;
  38595. }
  38596. #endif
  38597. diff -Nur uClibc-0.9.33.2/libc/misc/locale/locale.c uClibc/libc/misc/locale/locale.c
  38598. --- uClibc-0.9.33.2/libc/misc/locale/locale.c 2012-05-15 09:20:09.000000000 +0200
  38599. +++ uClibc/libc/misc/locale/locale.c 2014-02-03 12:32:56.000000000 +0100
  38600. @@ -11,8 +11,8 @@
  38601. * Library General Public License for more details.
  38602. *
  38603. * You should have received a copy of the GNU Library General Public
  38604. - * License along with this library; if not, write to the Free
  38605. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  38606. + * License along with this library; if not, see
  38607. + * <http://www.gnu.org/licenses/>.
  38608. */
  38609. /* Nov. 1, 2002
  38610. @@ -85,19 +85,17 @@
  38611. #endif
  38612. #endif
  38613. -/* Need to include this before locale.h and xlocale.h! */
  38614. +/* Need to include this before locale.h! */
  38615. #include <bits/uClibc_locale.h>
  38616. #undef CODESET_LIST
  38617. #define CODESET_LIST (__locale_mmap->codeset_list)
  38618. #ifdef __UCLIBC_HAS_XLOCALE__
  38619. -#include <xlocale.h>
  38620. #include <locale.h>
  38621. #else /* __UCLIBC_HAS_XLOCALE__ */
  38622. /* We need this internally... */
  38623. #define __UCLIBC_HAS_XLOCALE__ 1
  38624. -#include <xlocale.h>
  38625. #include <locale.h>
  38626. #undef __UCLIBC_HAS_XLOCALE__
  38627. #endif /* __UCLIBC_HAS_XLOCALE__ */
  38628. @@ -908,7 +906,6 @@
  38629. _locale_set_l((unsigned char*) C_LOCALE_SELECTOR, base);
  38630. }
  38631. -void _locale_init(void) attribute_hidden;
  38632. void _locale_init(void)
  38633. {
  38634. /* TODO: mmap the locale file */
  38635. @@ -1396,6 +1393,7 @@
  38636. {
  38637. return __curlocale_var; /* This is overriden by the thread version. */
  38638. }
  38639. +libc_hidden_weak(__curlocale)
  38640. __locale_t weak_function __curlocale_set(__locale_t newloc)
  38641. {
  38642. @@ -1404,6 +1402,7 @@
  38643. __curlocale_var = newloc;
  38644. return oldloc;
  38645. }
  38646. +libc_hidden_weak(__curlocale_set)
  38647. #endif
  38648. diff -Nur uClibc-0.9.33.2/libc/misc/locale/Makefile.in uClibc/libc/misc/locale/Makefile.in
  38649. --- uClibc-0.9.33.2/libc/misc/locale/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38650. +++ uClibc/libc/misc/locale/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38651. @@ -8,19 +8,16 @@
  38652. subdirs += libc/misc/locale
  38653. # multi source locale.c
  38654. -CSRC := setlocale.c localeconv.c _locale_init.c nl_langinfo.c
  38655. -ifeq ($(UCLIBC_HAS_LOCALE),y)
  38656. -CSRC += newlocale.c __locale_mbrtowc_l.c
  38657. -endif
  38658. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  38659. -CSRC += nl_langinfo_l.c duplocale.c freelocale.c uselocale.c __curlocale.c
  38660. -endif
  38661. +CSRC-y := setlocale.c localeconv.c _locale_init.c nl_langinfo.c
  38662. +CSRC-$(UCLIBC_HAS_LOCALE) += newlocale.c __locale_mbrtowc_l.c
  38663. +CSRC-$(UCLIBC_HAS_XLOCALE) += nl_langinfo_l.c duplocale.c freelocale.c \
  38664. + uselocale.c __curlocale.c
  38665. MISC_LOCALE_DIR := $(top_srcdir)libc/misc/locale
  38666. MISC_LOCALE_OUT := $(top_builddir)libc/misc/locale
  38667. -MISC_LOCALE_SRC := $(patsubst %.c,$(MISC_LOCALE_DIR)/%.c,$(CSRC))
  38668. -MISC_LOCALE_OBJ := $(patsubst %.c,$(MISC_LOCALE_OUT)/%.o,$(CSRC))
  38669. +MISC_LOCALE_SRC := $(patsubst %.c,$(MISC_LOCALE_DIR)/%.c,$(CSRC-y))
  38670. +MISC_LOCALE_OBJ := $(patsubst %.c,$(MISC_LOCALE_OUT)/%.o,$(CSRC-y))
  38671. libc-y += $(MISC_LOCALE_OBJ)
  38672. diff -Nur uClibc-0.9.33.2/libc/misc/mntent/Makefile.in uClibc/libc/misc/mntent/Makefile.in
  38673. --- uClibc-0.9.33.2/libc/misc/mntent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38674. +++ uClibc/libc/misc/mntent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38675. @@ -7,13 +7,13 @@
  38676. subdirs += libc/misc/mntent
  38677. -CSRC := mntent.c
  38678. +CSRC-y := mntent.c
  38679. MISC_MNTENT_DIR := $(top_srcdir)libc/misc/mntent
  38680. MISC_MNTENT_OUT := $(top_builddir)libc/misc/mntent
  38681. -MISC_MNTENT_SRC := $(MISC_MNTENT_DIR)/mntent.c
  38682. -MISC_MNTENT_OBJ := $(MISC_MNTENT_OUT)/mntent.o
  38683. +MISC_MNTENT_SRC := $(patsubst %.c,$(MISC_MNTENT_DIR)/%.c,$(CSRC-y))
  38684. +MISC_MNTENT_OBJ := $(patsubst %.c,$(MISC_MNTENT_OUT)/%.o,$(CSRC-y))
  38685. libc-y += $(MISC_MNTENT_OBJ)
  38686. diff -Nur uClibc-0.9.33.2/libc/misc/pthread/tsd.c uClibc/libc/misc/pthread/tsd.c
  38687. --- uClibc-0.9.33.2/libc/misc/pthread/tsd.c 2012-05-15 09:20:09.000000000 +0200
  38688. +++ uClibc/libc/misc/pthread/tsd.c 2014-02-03 12:32:56.000000000 +0100
  38689. @@ -1,5 +1,5 @@
  38690. /* libpthread sets _dl_error_catch_tsd to point to this function.
  38691. - We define it here instead of in libpthread so t here instead of in libpthread so that it doesn't
  38692. + We define it here instead of in libpthread so that it doesn't
  38693. need to have a TLS segment of its own just for this one pointer. */
  38694. void **__libc_dl_error_tsd(void) __attribute__ ((const));
  38695. diff -Nur uClibc-0.9.33.2/libc/misc/regex/Makefile.in uClibc/libc/misc/regex/Makefile.in
  38696. --- uClibc-0.9.33.2/libc/misc/regex/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38697. +++ uClibc/libc/misc/regex/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38698. @@ -7,17 +7,14 @@
  38699. subdirs += libc/misc/regex
  38700. -ifeq ($(UCLIBC_HAS_REGEX_OLD),y)
  38701. -CSRC := regex_old.c
  38702. -else
  38703. -CSRC := regex.c
  38704. -endif
  38705. +VARIANT := $(if $(UCLIBC_HAS_REGEX_OLD),_old)
  38706. +CSRC-y := regex$(VARIANT).c
  38707. MISC_REGEX_DIR := $(top_srcdir)libc/misc/regex
  38708. MISC_REGEX_OUT := $(top_builddir)libc/misc/regex
  38709. -MISC_REGEX_SRC := $(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC))
  38710. -MISC_REGEX_OBJ := $(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC))
  38711. +MISC_REGEX_SRC := $(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC-y))
  38712. +MISC_REGEX_OBJ := $(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC-y))
  38713. libc-$(UCLIBC_HAS_REGEX) += $(MISC_REGEX_OBJ)
  38714. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regcomp.c uClibc/libc/misc/regex/regcomp.c
  38715. --- uClibc-0.9.33.2/libc/misc/regex/regcomp.c 2012-05-15 09:20:09.000000000 +0200
  38716. +++ uClibc/libc/misc/regex/regcomp.c 2014-02-03 12:32:56.000000000 +0100
  38717. @@ -14,9 +14,8 @@
  38718. Lesser General Public License for more details.
  38719. You should have received a copy of the GNU Lesser General Public
  38720. - License along with the GNU C Library; if not, write to the Free
  38721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38722. - 02111-1307 USA. */
  38723. + License along with the GNU C Library; if not, see
  38724. + <http://www.gnu.org/licenses/>. */
  38725. static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
  38726. size_t length, reg_syntax_t syntax);
  38727. @@ -91,7 +90,7 @@
  38728. re_charset_t *mbcset,
  38729. int *equiv_class_alloc,
  38730. const unsigned char *name);
  38731. -static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
  38732. +static reg_errcode_t build_charclass (__RE_TRANSLATE_TYPE trans,
  38733. bitset_t sbcset,
  38734. re_charset_t *mbcset,
  38735. int *char_class_alloc,
  38736. @@ -100,13 +99,13 @@
  38737. #else /* not RE_ENABLE_I18N */
  38738. static reg_errcode_t build_equiv_class (bitset_t sbcset,
  38739. const unsigned char *name);
  38740. -static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
  38741. +static reg_errcode_t build_charclass (__RE_TRANSLATE_TYPE trans,
  38742. bitset_t sbcset,
  38743. const unsigned char *class_name,
  38744. reg_syntax_t syntax);
  38745. #endif /* not RE_ENABLE_I18N */
  38746. static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
  38747. - RE_TRANSLATE_TYPE trans,
  38748. + __RE_TRANSLATE_TYPE trans,
  38749. const unsigned char *class_name,
  38750. const unsigned char *extra,
  38751. int non_match, reg_errcode_t *err);
  38752. @@ -3414,11 +3413,11 @@
  38753. static reg_errcode_t
  38754. #ifdef RE_ENABLE_I18N
  38755. -build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38756. +build_charclass (__RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38757. re_charset_t *mbcset, int *char_class_alloc,
  38758. const unsigned char *class_name, reg_syntax_t syntax)
  38759. #else
  38760. -build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38761. +build_charclass (__RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38762. const unsigned char *class_name, reg_syntax_t syntax)
  38763. #endif
  38764. {
  38765. @@ -3496,7 +3495,7 @@
  38766. }
  38767. static bin_tree_t *
  38768. -build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
  38769. +build_charclass_op (re_dfa_t *dfa, __RE_TRANSLATE_TYPE trans,
  38770. const unsigned char *class_name,
  38771. const unsigned char *extra, int non_match,
  38772. reg_errcode_t *err)
  38773. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex.c uClibc/libc/misc/regex/regex.c
  38774. --- uClibc-0.9.33.2/libc/misc/regex/regex.c 2012-05-15 09:20:09.000000000 +0200
  38775. +++ uClibc/libc/misc/regex/regex.c 2014-02-03 12:32:56.000000000 +0100
  38776. @@ -14,9 +14,8 @@
  38777. Lesser General Public License for more details.
  38778. You should have received a copy of the GNU Lesser General Public
  38779. - License along with the GNU C Library; if not, write to the Free
  38780. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38781. - 02111-1307 USA. */
  38782. + License along with the GNU C Library; if not, see
  38783. + <http://www.gnu.org/licenses/>. */
  38784. #include <features.h>
  38785. @@ -30,7 +29,12 @@
  38786. # include <stdlib.h>
  38787. # ifdef __UCLIBC_HAS_WCHAR__
  38788. # define RE_ENABLE_I18N
  38789. +# define HAVE_WCHAR_H 1
  38790. +# define HAVE_WCRTOMB 1
  38791. +# define HAVE_MBRTOWC 1
  38792. +# define HAVE_WCSCOLL 1
  38793. # include <wchar.h>
  38794. +# define HAVE_WCTYPE_H 1
  38795. # include <wctype.h>
  38796. # define __iswctype iswctype
  38797. # define __wcrtomb wcrtomb
  38798. @@ -38,6 +42,9 @@
  38799. # define __wctype wctype
  38800. # endif
  38801. # include <ctype.h>
  38802. +# ifdef __UCLIBC_HAS_LOCALE__
  38803. +# define HAVE_LOCALE_H 1
  38804. +# endif
  38805. #endif
  38806. /* Make sure noone compiles this code with a C++ compiler. */
  38807. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regexec.c uClibc/libc/misc/regex/regexec.c
  38808. --- uClibc-0.9.33.2/libc/misc/regex/regexec.c 2012-05-15 09:20:09.000000000 +0200
  38809. +++ uClibc/libc/misc/regex/regexec.c 2014-02-03 12:32:56.000000000 +0100
  38810. @@ -14,9 +14,8 @@
  38811. Lesser General Public License for more details.
  38812. You should have received a copy of the GNU Lesser General Public
  38813. - License along with the GNU C Library; if not, write to the Free
  38814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38815. - 02111-1307 USA. */
  38816. + License along with the GNU C Library; if not, see
  38817. + <http://www.gnu.org/licenses/>. */
  38818. static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
  38819. int n) internal_function;
  38820. @@ -564,7 +563,7 @@
  38821. re_match_context_t mctx;
  38822. char *fastmap = (preg->fastmap != NULL && preg->fastmap_accurate
  38823. && range && !preg->can_be_null) ? preg->fastmap : NULL;
  38824. - RE_TRANSLATE_TYPE t = preg->translate;
  38825. + __RE_TRANSLATE_TYPE t = preg->translate;
  38826. memset (&mctx, '\0', sizeof (re_match_context_t));
  38827. mctx.dfa = dfa;
  38828. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_internal.c uClibc/libc/misc/regex/regex_internal.c
  38829. --- uClibc-0.9.33.2/libc/misc/regex/regex_internal.c 2012-05-15 09:20:09.000000000 +0200
  38830. +++ uClibc/libc/misc/regex/regex_internal.c 2014-02-03 12:32:56.000000000 +0100
  38831. @@ -14,13 +14,12 @@
  38832. Lesser General Public License for more details.
  38833. You should have received a copy of the GNU Lesser General Public
  38834. - License along with the GNU C Library; if not, write to the Free
  38835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38836. - 02111-1307 USA. */
  38837. + License along with the GNU C Library; if not, see
  38838. + <http://www.gnu.org/licenses/>. */
  38839. static void re_string_construct_common (const char *str, int len,
  38840. re_string_t *pstr,
  38841. - RE_TRANSLATE_TYPE trans, int icase,
  38842. + __RE_TRANSLATE_TYPE trans, int icase,
  38843. const re_dfa_t *dfa) internal_function;
  38844. static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
  38845. const re_node_set *nodes,
  38846. @@ -38,7 +37,7 @@
  38847. static reg_errcode_t
  38848. internal_function
  38849. re_string_allocate (re_string_t *pstr, const char *str, int len, int init_len,
  38850. - RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38851. + __RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38852. {
  38853. reg_errcode_t ret;
  38854. int init_buf_len;
  38855. @@ -66,7 +65,7 @@
  38856. static reg_errcode_t
  38857. internal_function
  38858. re_string_construct (re_string_t *pstr, const char *str, int len,
  38859. - RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38860. + __RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38861. {
  38862. reg_errcode_t ret;
  38863. memset (pstr, '\0', sizeof (re_string_t));
  38864. @@ -162,7 +161,7 @@
  38865. static void
  38866. internal_function
  38867. re_string_construct_common (const char *str, int len, re_string_t *pstr,
  38868. - RE_TRANSLATE_TYPE trans, int icase,
  38869. + __RE_TRANSLATE_TYPE trans, int icase,
  38870. const re_dfa_t *dfa)
  38871. {
  38872. pstr->raw_mbs = (const unsigned char *) str;
  38873. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_internal.h uClibc/libc/misc/regex/regex_internal.h
  38874. --- uClibc-0.9.33.2/libc/misc/regex/regex_internal.h 2012-05-15 09:20:09.000000000 +0200
  38875. +++ uClibc/libc/misc/regex/regex_internal.h 2014-02-03 12:32:56.000000000 +0100
  38876. @@ -14,16 +14,14 @@
  38877. Lesser General Public License for more details.
  38878. You should have received a copy of the GNU Lesser General Public
  38879. - License along with the GNU C Library; if not, write to the Free
  38880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38881. - 02111-1307 USA. */
  38882. + License along with the GNU C Library; if not, see
  38883. + <http://www.gnu.org/licenses/>. */
  38884. #ifndef _REGEX_INTERNAL_H
  38885. #define _REGEX_INTERNAL_H 1
  38886. #include <assert.h>
  38887. #include <ctype.h>
  38888. -#include <stdio.h>
  38889. #include <stdlib.h>
  38890. #include <string.h>
  38891. @@ -315,7 +313,7 @@
  38892. the beginning of the input string. */
  38893. unsigned int tip_context;
  38894. /* The translation passed as a part of an argument of re_compile_pattern. */
  38895. - RE_TRANSLATE_TYPE trans;
  38896. + __RE_TRANSLATE_TYPE trans;
  38897. /* Copy of re_dfa_t's word_char. */
  38898. re_const_bitset_ptr_t word_char;
  38899. /* 1 if REG_ICASE. */
  38900. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_old.c uClibc/libc/misc/regex/regex_old.c
  38901. --- uClibc-0.9.33.2/libc/misc/regex/regex_old.c 2012-05-15 09:20:09.000000000 +0200
  38902. +++ uClibc/libc/misc/regex/regex_old.c 2014-02-03 12:32:56.000000000 +0100
  38903. @@ -16,25 +16,25 @@
  38904. Lesser General Public License for more details.
  38905. You should have received a copy of the GNU Lesser General Public
  38906. - License along with the GNU C Library; if not, write to the Free
  38907. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38908. - 02111-1307 USA. */
  38909. + License along with the GNU C Library; if not, see
  38910. + <http://www.gnu.org/licenses/>. */
  38911. /* To exclude some unwanted junk.... */
  38912. #undef emacs
  38913. #include <features.h>
  38914. /* unistd.h must be included with _LIBC defined: we need smallint */
  38915. #include <unistd.h>
  38916. +#include <stdio.h>
  38917. #ifdef __UCLIBC__
  38918. # undef _LIBC
  38919. # define _REGEX_RE_COMP
  38920. # define STDC_HEADERS
  38921. -# define RE_TRANSLATE_TYPE char *
  38922. +# define __RE_TRANSLATE_TYPE char *
  38923. +# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
  38924. #endif
  38925. #include <stdlib.h>
  38926. #include <stdint.h>
  38927. #include <string.h>
  38928. -#include <stdio.h>
  38929. /* AIX requires this to be the first thing in the file. */
  38930. #if defined _AIX && !defined REGEX_MALLOC
  38931. @@ -64,10 +64,9 @@
  38932. # include <wctype.h>
  38933. # endif
  38934. -# if defined _LIBC || defined __UCLIBC__
  38935. +# ifdef _LIBC
  38936. /* We have to keep the namespace clean. */
  38937. -# ifndef __UCLIBC__
  38938. # define btowc __btowc
  38939. /* We are also using some library internals. */
  38940. @@ -76,7 +75,6 @@
  38941. # include <langinfo.h>
  38942. # include <locale/coll-lookup.h>
  38943. # endif
  38944. -# endif
  38945. /* This is for other GNU distributions with internationalized messages. */
  38946. # if defined HAVE_LIBINTL_H || defined _LIBC
  38947. @@ -177,6 +175,7 @@
  38948. /* Get the interface, including the syntax bits. */
  38949. # include <regex.h>
  38950. +# define translate __REPB_PREFIX(translate)
  38951. /* isalpha etc. are used for the character classes. */
  38952. # include <ctype.h>
  38953. @@ -1896,7 +1895,7 @@
  38954. static reg_errcode_t wcs_compile_range (CHAR_T range_start,
  38955. const CHAR_T **p_ptr,
  38956. const CHAR_T *pend,
  38957. - char *translate,
  38958. + __RE_TRANSLATE_TYPE translate,
  38959. reg_syntax_t syntax,
  38960. UCHAR_T *b,
  38961. CHAR_T *char_set);
  38962. @@ -1905,7 +1904,7 @@
  38963. static reg_errcode_t byte_compile_range (unsigned int range_start,
  38964. const char **p_ptr,
  38965. const char *pend,
  38966. - char *translate,
  38967. + __RE_TRANSLATE_TYPE translate,
  38968. reg_syntax_t syntax,
  38969. unsigned char *b);
  38970. # endif /* WCHAR */
  38971. @@ -2338,7 +2337,7 @@
  38972. #endif /* WCHAR */
  38973. /* How to translate the characters in the pattern. */
  38974. - RE_TRANSLATE_TYPE translate = bufp->translate;
  38975. + __RE_TRANSLATE_TYPE translate = bufp->translate;
  38976. /* Address of the count-byte of the most recently inserted `exactn'
  38977. command. This makes it possible to tell if a new exact-match
  38978. @@ -4402,7 +4401,7 @@
  38979. wcs_compile_range (
  38980. CHAR_T range_start_char,
  38981. const CHAR_T **p_ptr, const CHAR_T *pend,
  38982. - RE_TRANSLATE_TYPE translate,
  38983. + __RE_TRANSLATE_TYPE translate,
  38984. reg_syntax_t syntax,
  38985. CHAR_T *b, CHAR_T *char_set)
  38986. {
  38987. @@ -4488,7 +4487,7 @@
  38988. byte_compile_range (
  38989. unsigned int range_start_char,
  38990. const char **p_ptr, const char *pend,
  38991. - RE_TRANSLATE_TYPE translate,
  38992. + __RE_TRANSLATE_TYPE translate,
  38993. reg_syntax_t syntax,
  38994. unsigned char *b)
  38995. {
  38996. @@ -5060,7 +5059,7 @@
  38997. {
  38998. int val;
  38999. register char *fastmap = bufp->fastmap;
  39000. - register RE_TRANSLATE_TYPE translate = bufp->translate;
  39001. + register __RE_TRANSLATE_TYPE translate = bufp->translate;
  39002. int total_size = size1 + size2;
  39003. int endpos = startpos + range;
  39004. #ifdef WCHAR
  39005. @@ -5477,7 +5476,7 @@
  39006. UCHAR_T *end,
  39007. PREFIX(register_info_type) *reg_info);
  39008. static int PREFIX(bcmp_translate) (const CHAR_T *s1, const CHAR_T *s2,
  39009. - int len, char *translate);
  39010. + int len, __RE_TRANSLATE_TYPE translate);
  39011. #else /* not INSIDE_RECURSION */
  39012. /* re_match_2 matches the compiled pattern in BUFP against the
  39013. @@ -5637,7 +5636,7 @@
  39014. UCHAR_T *just_past_start_mem = 0;
  39015. /* We use this to map every character in the string. */
  39016. - RE_TRANSLATE_TYPE translate = bufp->translate;
  39017. + __RE_TRANSLATE_TYPE translate = bufp->translate;
  39018. /* Failure point stack. Each place that can handle a failure further
  39019. down the line pushes a failure point on this stack. It consists of
  39020. @@ -7212,6 +7211,10 @@
  39021. POP_FAILURE_POINT (sdummy, pdummy,
  39022. dummy_low_reg, dummy_high_reg,
  39023. reg_dummy, reg_dummy, reg_info_dummy);
  39024. +
  39025. + /* Silence 'set but not used' warnings. */
  39026. + (void) pdummy;
  39027. + (void) sdummy;
  39028. }
  39029. /* Note fall through. */
  39030. @@ -7802,7 +7805,7 @@
  39031. PREFIX(bcmp_translate) (
  39032. const CHAR_T *s1, const CHAR_T *s2,
  39033. register int len,
  39034. - RE_TRANSLATE_TYPE translate)
  39035. + __RE_TRANSLATE_TYPE translate)
  39036. {
  39037. register const UCHAR_T *p1 = (const UCHAR_T *) s1;
  39038. register const UCHAR_T *p2 = (const UCHAR_T *) s2;
  39039. @@ -8002,8 +8005,8 @@
  39040. unsigned i;
  39041. preg->translate
  39042. - = (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE
  39043. - * sizeof (*(RE_TRANSLATE_TYPE)0));
  39044. + = (__RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE
  39045. + * sizeof (*(__RE_TRANSLATE_TYPE)0));
  39046. if (preg->translate == NULL)
  39047. return (int) REG_ESPACE;
  39048. diff -Nur uClibc-0.9.33.2/libc/misc/search/hsearch.c uClibc/libc/misc/search/hsearch.c
  39049. --- uClibc-0.9.33.2/libc/misc/search/hsearch.c 2012-05-15 09:20:09.000000000 +0200
  39050. +++ uClibc/libc/misc/search/hsearch.c 2014-02-03 12:32:56.000000000 +0100
  39051. @@ -13,9 +13,8 @@
  39052. Lesser General Public License for more details.
  39053. You should have received a copy of the GNU Lesser General Public
  39054. - License along with the GNU C Library; if not, write to the Free
  39055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39056. - 02111-1307 USA. */
  39057. + License along with the GNU C Library; if not, see
  39058. + <http://www.gnu.org/licenses/>. */
  39059. #include <search.h>
  39060. diff -Nur uClibc-0.9.33.2/libc/misc/search/_hsearch_r.c uClibc/libc/misc/search/_hsearch_r.c
  39061. --- uClibc-0.9.33.2/libc/misc/search/_hsearch_r.c 2012-05-15 09:20:09.000000000 +0200
  39062. +++ uClibc/libc/misc/search/_hsearch_r.c 2014-02-03 12:32:56.000000000 +0100
  39063. @@ -13,12 +13,11 @@
  39064. Lesser General Public License for more details.
  39065. You should have received a copy of the GNU Lesser General Public
  39066. - License along with the GNU C Library; if not, write to the Free
  39067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39068. - 02111-1307 USA. */
  39069. + License along with the GNU C Library; if not, see
  39070. + <http://www.gnu.org/licenses/>. */
  39071. #include <errno.h>
  39072. -#include <malloc.h>
  39073. +#include <stdlib.h>
  39074. #include <string.h>
  39075. #include <search.h>
  39076. diff -Nur uClibc-0.9.33.2/libc/misc/search/insremque.c uClibc/libc/misc/search/insremque.c
  39077. --- uClibc-0.9.33.2/libc/misc/search/insremque.c 2012-05-15 09:20:09.000000000 +0200
  39078. +++ uClibc/libc/misc/search/insremque.c 2014-02-03 12:32:56.000000000 +0100
  39079. @@ -13,8 +13,7 @@
  39080. You should have received a copy of the GNU Library General Public
  39081. License along with the GNU C Library; see the file COPYING.LIB. If not,
  39082. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  39083. - Boston, MA 02111-1307, USA. */
  39084. + see <http://www.gnu.org/licenses/>. */
  39085. #include <features.h>
  39086. #include <stddef.h>
  39087. @@ -27,12 +26,20 @@
  39088. void
  39089. insque (void *elem, void *prev)
  39090. {
  39091. - struct qelem *next = ((struct qelem *) prev)->q_forw;
  39092. - ((struct qelem *) prev)->q_forw = (struct qelem *) elem;
  39093. - if (next != NULL)
  39094. - next->q_back = (struct qelem *) elem;
  39095. - ((struct qelem *) elem)->q_forw = next;
  39096. - ((struct qelem *) elem)->q_back = (struct qelem *) prev;
  39097. + if (prev == NULL)
  39098. + {
  39099. + ((struct qelem *) elem)->q_forw = NULL;
  39100. + ((struct qelem *) elem)->q_back = NULL;
  39101. + }
  39102. + else
  39103. + {
  39104. + struct qelem *next = ((struct qelem *) prev)->q_forw;
  39105. + ((struct qelem *) prev)->q_forw = (struct qelem *) elem;
  39106. + if (next != NULL)
  39107. + next->q_back = (struct qelem *) elem;
  39108. + ((struct qelem *) elem)->q_forw = next;
  39109. + ((struct qelem *) elem)->q_back = (struct qelem *) prev;
  39110. + }
  39111. }
  39112. #endif
  39113. diff -Nur uClibc-0.9.33.2/libc/misc/search/Makefile.in uClibc/libc/misc/search/Makefile.in
  39114. --- uClibc-0.9.33.2/libc/misc/search/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39115. +++ uClibc/libc/misc/search/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39116. @@ -7,25 +7,25 @@
  39117. subdirs += libc/misc/search
  39118. -CSRC := hsearch.c
  39119. +CSRC-y := hsearch.c
  39120. # multi source _tsearch.c
  39121. -CSRC += tsearch.c tfind.c tdelete.c twalk.c tdestroy.c
  39122. +CSRC-y += tsearch.c tfind.c tdelete.c twalk.c tdestroy.c
  39123. # multi source _lsearch.c
  39124. -CSRC += lfind.c lsearch.c
  39125. +CSRC-y += lfind.c lsearch.c
  39126. # multi source insremque.c
  39127. -CSRC += insque.c remque.c
  39128. +CSRC-y += insque.c remque.c
  39129. # multi source _hsearch_r.c
  39130. -CSRC += hcreate_r.c hdestroy_r.c hsearch_r.c
  39131. +CSRC-y += hcreate_r.c hdestroy_r.c hsearch_r.c
  39132. MISC_SEARCH_DIR := $(top_srcdir)libc/misc/search
  39133. MISC_SEARCH_OUT := $(top_builddir)libc/misc/search
  39134. -MISC_SEARCH_SRC := $(patsubst %.c,$(MISC_SEARCH_DIR)/%.c,$(CSRC))
  39135. -MISC_SEARCH_OBJ := $(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC))
  39136. +MISC_SEARCH_SRC := $(patsubst %.c,$(MISC_SEARCH_DIR)/%.c,$(CSRC-y))
  39137. +MISC_SEARCH_OBJ := $(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC-y))
  39138. libc-y += $(MISC_SEARCH_OBJ)
  39139. diff -Nur uClibc-0.9.33.2/libc/misc/search/_tsearch.c uClibc/libc/misc/search/_tsearch.c
  39140. --- uClibc-0.9.33.2/libc/misc/search/_tsearch.c 2012-05-15 09:20:09.000000000 +0200
  39141. +++ uClibc/libc/misc/search/_tsearch.c 2014-02-03 12:32:56.000000000 +0100
  39142. @@ -13,8 +13,7 @@
  39143. You should have received a copy of the GNU Library General Public
  39144. License along with the GNU C Library; see the file COPYING.LIB. If
  39145. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  39146. -Cambridge, MA 02139, USA. */
  39147. +not, see <http://www.gnu.org/licenses/>. */
  39148. /*
  39149. * Tree search generalized from Knuth (6.2.2) Algorithm T just like
  39150. @@ -50,7 +49,7 @@
  39151. int (*compar)(); ordering function
  39152. */
  39153. -void *tsearch(__const void *key, void **vrootp, __compar_fn_t compar)
  39154. +void *tsearch(const void *key, void **vrootp, __compar_fn_t compar)
  39155. {
  39156. register node *q;
  39157. register node **rootp = (node **) vrootp;
  39158. @@ -80,7 +79,7 @@
  39159. #endif
  39160. #ifdef L_tfind
  39161. -void *tfind(__const void *key, void * __const *vrootp, __compar_fn_t compar)
  39162. +void *tfind(const void *key, void * const *vrootp, __compar_fn_t compar)
  39163. {
  39164. register node **rootp = (node **) vrootp;
  39165. @@ -107,7 +106,7 @@
  39166. register node **rootp; address of the root of tree
  39167. int (*compar)(); comparison function
  39168. */
  39169. -void *tdelete(__const void *key, void ** vrootp, __compar_fn_t compar)
  39170. +void *tdelete(const void *key, void ** vrootp, __compar_fn_t compar)
  39171. {
  39172. node *p;
  39173. register node *q;
  39174. @@ -157,7 +156,7 @@
  39175. register void (*action)(); Function to be called at each node
  39176. register int level;
  39177. */
  39178. -static void trecurse(__const void *vroot, __action_fn_t action, int level)
  39179. +static void trecurse(const void *vroot, __action_fn_t action, int level)
  39180. {
  39181. register node *root = (node *) vroot;
  39182. @@ -180,9 +179,9 @@
  39183. void (*action)(); Function to be called at each node
  39184. PTR
  39185. */
  39186. -void twalk(__const void *vroot, __action_fn_t action)
  39187. +void twalk(const void *vroot, __action_fn_t action)
  39188. {
  39189. - register __const node *root = (node *) vroot;
  39190. + register const node *root = (node *) vroot;
  39191. if (root != (node *)0 && action != (__action_fn_t) 0)
  39192. trecurse(root, action, 0);
  39193. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatfs64.c uClibc/libc/misc/statfs/fstatfs64.c
  39194. --- uClibc-0.9.33.2/libc/misc/statfs/fstatfs64.c 2012-05-15 09:20:09.000000000 +0200
  39195. +++ uClibc/libc/misc/statfs/fstatfs64.c 2014-02-03 12:32:56.000000000 +0100
  39196. @@ -13,9 +13,8 @@
  39197. Lesser General Public License for more details.
  39198. You should have received a copy of the GNU Lesser General Public
  39199. - License along with the GNU C Library; if not, write to the Free
  39200. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39201. - 02111-1307 USA. */
  39202. + License along with the GNU C Library; if not, see
  39203. + <http://www.gnu.org/licenses/>. */
  39204. #include <_lfs_64.h>
  39205. @@ -23,8 +22,10 @@
  39206. #include <string.h>
  39207. #include <sys/statfs.h>
  39208. #include <sys/statvfs.h>
  39209. +#include <sys/syscall.h>
  39210. #include <stddef.h>
  39211. +#if defined __NR_fstatfs
  39212. extern __typeof(fstatfs) __libc_fstatfs;
  39213. /* Return information about the filesystem on which FD resides. */
  39214. @@ -43,9 +44,24 @@
  39215. buf->f_files = buf32.f_files;
  39216. buf->f_ffree = buf32.f_ffree;
  39217. buf->f_fsid = buf32.f_fsid;
  39218. +# ifdef _STATFS_F_FRSIZE
  39219. + buf->f_frsize = buf32.f_frsize;
  39220. +# endif
  39221. buf->f_namelen = buf32.f_namelen;
  39222. memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
  39223. return 0;
  39224. }
  39225. +#else
  39226. +/*
  39227. + * Use the fstatfs64 system call if fstatfs is not defined
  39228. + * This is for backwards compatibility and it should be
  39229. + * made default in the future
  39230. + */
  39231. +int fstatfs64(int fd, struct statfs64 *buf)
  39232. +{
  39233. + /* Signature has 2 arguments but syscalls wants 3 */
  39234. + return INLINE_SYSCALL(fstatfs64, 3, fd, sizeof(*buf), buf);
  39235. +}
  39236. +#endif
  39237. libc_hidden_def(fstatfs64)
  39238. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatvfs64.c uClibc/libc/misc/statfs/fstatvfs64.c
  39239. --- uClibc-0.9.33.2/libc/misc/statfs/fstatvfs64.c 2012-05-15 09:20:09.000000000 +0200
  39240. +++ uClibc/libc/misc/statfs/fstatvfs64.c 2014-02-03 12:32:56.000000000 +0100
  39241. @@ -13,9 +13,8 @@
  39242. Lesser General Public License for more details.
  39243. You should have received a copy of the GNU Lesser General Public
  39244. - License along with the GNU C Library; if not, write to the Free
  39245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39246. - 02111-1307 USA. */
  39247. + License along with the GNU C Library; if not, see
  39248. + <http://www.gnu.org/licenses/>. */
  39249. #include <_lfs_64.h>
  39250. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatvfs.c uClibc/libc/misc/statfs/fstatvfs.c
  39251. --- uClibc-0.9.33.2/libc/misc/statfs/fstatvfs.c 2012-05-15 09:20:09.000000000 +0200
  39252. +++ uClibc/libc/misc/statfs/fstatvfs.c 2014-02-03 12:32:56.000000000 +0100
  39253. @@ -13,9 +13,8 @@
  39254. Lesser General Public License for more details.
  39255. You should have received a copy of the GNU Lesser General Public
  39256. - License along with the GNU C Library; if not, write to the Free
  39257. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39258. - 02111-1307 USA. */
  39259. + License along with the GNU C Library; if not, see
  39260. + <http://www.gnu.org/licenses/>. */
  39261. #include <features.h>
  39262. #include <errno.h>
  39263. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/internal_statvfs.c uClibc/libc/misc/statfs/internal_statvfs.c
  39264. --- uClibc-0.9.33.2/libc/misc/statfs/internal_statvfs.c 2012-05-15 09:20:09.000000000 +0200
  39265. +++ uClibc/libc/misc/statfs/internal_statvfs.c 2014-02-03 12:32:56.000000000 +0100
  39266. @@ -13,14 +13,20 @@
  39267. Lesser General Public License for more details.
  39268. You should have received a copy of the GNU Lesser General Public
  39269. - License along with the GNU C Library; if not, write to the Free
  39270. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39271. - 02111-1307 USA. */
  39272. + License along with the GNU C Library; if not, see
  39273. + <http://www.gnu.org/licenses/>. */
  39274. +
  39275. +/* The kernel hints us if the f_flags is valid */
  39276. +#define ST_VALID 0x0020
  39277. /* Now fill in the fields we have information for. */
  39278. buf->f_bsize = fsbuf.f_bsize;
  39279. - /* Linux does not support f_frsize, so set it to the full block size. */
  39280. +#ifdef _STATFS_F_FRSIZE
  39281. + buf->f_frsize = fsbuf.f_frsize;
  39282. +#else
  39283. + /* No support for f_frsize so set it to the full block size. */
  39284. buf->f_frsize = fsbuf.f_bsize;
  39285. +#endif
  39286. buf->f_blocks = fsbuf.f_blocks;
  39287. buf->f_bfree = fsbuf.f_bfree;
  39288. buf->f_bavail = fsbuf.f_bavail;
  39289. @@ -28,7 +34,7 @@
  39290. buf->f_ffree = fsbuf.f_ffree;
  39291. if (sizeof (buf->f_fsid) == sizeof (fsbuf.f_fsid))
  39292. buf->f_fsid = (fsbuf.f_fsid.__val[0]
  39293. - | ((unsigned long int) fsbuf.f_fsid.__val[1]
  39294. + | ((unsigned long long int) fsbuf.f_fsid.__val[1]
  39295. << (8 * (sizeof (buf->f_fsid)
  39296. - sizeof (fsbuf.f_fsid.__val[0])))));
  39297. else
  39298. @@ -39,10 +45,7 @@
  39299. buf->__f_unused = 0;
  39300. #endif
  39301. buf->f_namemax = fsbuf.f_namelen;
  39302. - memset (buf->__f_spare, '\0', 6 * sizeof (int));
  39303. -
  39304. - /* What remains to do is to fill the fields f_favail and f_flag. */
  39305. -
  39306. + memset (buf->__f_spare, '\0', sizeof(buf->__f_spare));
  39307. /* XXX I have no idea how to compute f_favail. Any idea??? */
  39308. buf->f_favail = buf->f_ffree;
  39309. @@ -51,61 +54,63 @@
  39310. file. The way we can test for matching filesystem is using the
  39311. device number. */
  39312. buf->f_flag = 0;
  39313. - if (STAT (&st) >= 0)
  39314. - {
  39315. - int save_errno = errno;
  39316. - struct mntent mntbuf;
  39317. - FILE *mtab;
  39318. -
  39319. - mtab = setmntent ("/proc/mounts", "r");
  39320. - if (mtab == NULL)
  39321. - mtab = setmntent (_PATH_MOUNTED, "r");
  39322. -
  39323. - if (mtab != NULL)
  39324. - {
  39325. - char tmpbuf[1024];
  39326. -
  39327. - while (getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
  39328. - {
  39329. - struct stat fsst;
  39330. -
  39331. - /* Find out about the device the current entry is for. */
  39332. - if (stat (mntbuf.mnt_dir, &fsst) >= 0
  39333. - && st.st_dev == fsst.st_dev)
  39334. - {
  39335. - /* Bingo, we found the entry for the device FD is on.
  39336. - Now interpret the option string. */
  39337. - char *cp = mntbuf.mnt_opts;
  39338. - char *opt;
  39339. -
  39340. - while ((opt = strsep (&cp, ",")) != NULL)
  39341. - if (strcmp (opt, "ro") == 0)
  39342. - buf->f_flag |= ST_RDONLY;
  39343. - else if (strcmp (opt, "nosuid") == 0)
  39344. - buf->f_flag |= ST_NOSUID;
  39345. + if (STAT (&st) >= 0
  39346. +#ifdef _STATFS_F_FLAGS
  39347. + && (fsbuf.f_flags & ST_VALID) == 0
  39348. +#endif
  39349. + ) {
  39350. + int save_errno = errno;
  39351. + struct mntent mntbuf;
  39352. + FILE *mtab;
  39353. +
  39354. + mtab = setmntent ("/proc/mounts", "r");
  39355. + if (mtab == NULL)
  39356. + mtab = setmntent (_PATH_MOUNTED, "r");
  39357. + if (mtab != NULL) {
  39358. + char tmpbuf[1024];
  39359. +
  39360. + while (getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf))) {
  39361. + struct stat fsst;
  39362. +
  39363. + /* Find out about the device the current entry is for. */
  39364. + if (stat (mntbuf.mnt_dir, &fsst) >= 0
  39365. + && st.st_dev == fsst.st_dev) {
  39366. + /* Bingo, we found the entry for the device FD is on.
  39367. + Now interpret the option string. */
  39368. + char *cp = mntbuf.mnt_opts;
  39369. + char *opt;
  39370. +
  39371. + while ((opt = strsep (&cp, ",")) != NULL)
  39372. + if (strcmp (opt, "ro") == 0)
  39373. + buf->f_flag |= ST_RDONLY;
  39374. + else if (strcmp (opt, "nosuid") == 0)
  39375. + buf->f_flag |= ST_NOSUID;
  39376. #ifdef __USE_GNU
  39377. - else if (strcmp (opt, "noexec") == 0)
  39378. - buf->f_flag |= ST_NOEXEC;
  39379. - else if (strcmp (opt, "nodev") == 0)
  39380. - buf->f_flag |= ST_NODEV;
  39381. - else if (strcmp (opt, "sync") == 0)
  39382. - buf->f_flag |= ST_SYNCHRONOUS;
  39383. - else if (strcmp (opt, "mand") == 0)
  39384. - buf->f_flag |= ST_MANDLOCK;
  39385. - else if (strcmp (opt, "noatime") == 0)
  39386. - buf->f_flag |= ST_NOATIME;
  39387. - else if (strcmp (opt, "nodiratime") == 0)
  39388. - buf->f_flag |= ST_NODIRATIME;
  39389. + else if (strcmp (opt, "noexec") == 0)
  39390. + buf->f_flag |= ST_NOEXEC;
  39391. + else if (strcmp (opt, "nodev") == 0)
  39392. + buf->f_flag |= ST_NODEV;
  39393. + else if (strcmp (opt, "sync") == 0)
  39394. + buf->f_flag |= ST_SYNCHRONOUS;
  39395. + else if (strcmp (opt, "mand") == 0)
  39396. + buf->f_flag |= ST_MANDLOCK;
  39397. + else if (strcmp (opt, "noatime") == 0)
  39398. + buf->f_flag |= ST_NOATIME;
  39399. + else if (strcmp (opt, "nodiratime") == 0)
  39400. + buf->f_flag |= ST_NODIRATIME;
  39401. + else if (strcmp (opt, "relatime") == 0)
  39402. + buf->f_flag |= ST_RELATIME;
  39403. #endif
  39404. -
  39405. - /* We can stop looking for more entries. */
  39406. - break;
  39407. + /* We can stop looking for more entries. */
  39408. + break;
  39409. + }
  39410. }
  39411. - }
  39412. -
  39413. - /* Close the file. */
  39414. - endmntent (mtab);
  39415. - }
  39416. -
  39417. - __set_errno (save_errno);
  39418. - }
  39419. + /* Close the file. */
  39420. + endmntent (mtab);
  39421. + }
  39422. + __set_errno (save_errno);
  39423. + }
  39424. +#ifdef _STATFS_F_FLAGS
  39425. + else
  39426. + buf->f_flag = fsbuf.f_flags ^ ST_VALID;
  39427. +#endif
  39428. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/Makefile.in uClibc/libc/misc/statfs/Makefile.in
  39429. --- uClibc-0.9.33.2/libc/misc/statfs/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39430. +++ uClibc/libc/misc/statfs/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39431. @@ -7,19 +7,16 @@
  39432. subdirs += libc/misc/statfs
  39433. -CSRC := statvfs.c fstatvfs.c
  39434. -ifeq ($(UCLIBC_HAS_LFS),y)
  39435. -ifeq ($(UCLIBC_LINUX_SPECIFIC),y)
  39436. -CSRC += fstatfs64.c statfs64.c
  39437. -endif
  39438. -CSRC += statvfs64.c fstatvfs64.c
  39439. -endif
  39440. +CSRC-y := statvfs.c fstatvfs.c
  39441. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %.c,%64.c,$(CSRC-y))
  39442. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_LFS)$(UCLIBC_LINUX_SPECIFIC)),y) += \
  39443. + fstatfs64.c statfs64.c
  39444. MISC_STATFS_DIR := $(top_srcdir)libc/misc/statfs
  39445. MISC_STATFS_OUT := $(top_builddir)libc/misc/statfs
  39446. -MISC_STATFS_SRC := $(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC))
  39447. -MISC_STATFS_OBJ := $(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC))
  39448. +MISC_STATFS_SRC := $(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC-y))
  39449. +MISC_STATFS_OBJ := $(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC-y))
  39450. libc-y += $(MISC_STATFS_OBJ)
  39451. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statfs64.c uClibc/libc/misc/statfs/statfs64.c
  39452. --- uClibc-0.9.33.2/libc/misc/statfs/statfs64.c 2012-05-15 09:20:09.000000000 +0200
  39453. +++ uClibc/libc/misc/statfs/statfs64.c 2014-02-03 12:32:56.000000000 +0100
  39454. @@ -13,18 +13,19 @@
  39455. Lesser General Public License for more details.
  39456. You should have received a copy of the GNU Lesser General Public
  39457. - License along with the GNU C Library; if not, write to the Free
  39458. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39459. - 02111-1307 USA. */
  39460. + License along with the GNU C Library; if not, see
  39461. + <http://www.gnu.org/licenses/>. */
  39462. #include <_lfs_64.h>
  39463. #include <string.h>
  39464. #include <stddef.h>
  39465. #include <sys/statfs.h>
  39466. +#include <sys/syscall.h>
  39467. extern __typeof(statfs) __libc_statfs;
  39468. +#if defined __NR_statfs
  39469. /* Return information about the filesystem on which FILE resides. */
  39470. int statfs64 (const char *file, struct statfs64 *buf)
  39471. {
  39472. @@ -42,8 +43,21 @@
  39473. buf->f_ffree = buf32.f_ffree;
  39474. buf->f_fsid = buf32.f_fsid;
  39475. buf->f_namelen = buf32.f_namelen;
  39476. +#ifdef _STATFS_F_FRSIZE
  39477. + buf->f_frsize = buf32.f_frsize;
  39478. +#endif
  39479. +#ifdef _STATFS_F_FLAGS
  39480. + buf->f_flags = buf32.f_flags;
  39481. +#endif
  39482. memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
  39483. return 0;
  39484. }
  39485. +#else
  39486. +int statfs64 (const char *file, struct statfs64 *buf)
  39487. +{
  39488. + return INLINE_SYSCALL(statfs64, 3, file, sizeof(*buf), buf);
  39489. +}
  39490. +#endif
  39491. +
  39492. libc_hidden_def(statfs64)
  39493. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statvfs64.c uClibc/libc/misc/statfs/statvfs64.c
  39494. --- uClibc-0.9.33.2/libc/misc/statfs/statvfs64.c 2012-05-15 09:20:09.000000000 +0200
  39495. +++ uClibc/libc/misc/statfs/statvfs64.c 2014-02-03 12:32:56.000000000 +0100
  39496. @@ -13,9 +13,8 @@
  39497. Lesser General Public License for more details.
  39498. You should have received a copy of the GNU Lesser General Public
  39499. - License along with the GNU C Library; if not, write to the Free
  39500. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39501. - 02111-1307 USA. */
  39502. + License along with the GNU C Library; if not, see
  39503. + <http://www.gnu.org/licenses/>. */
  39504. #include <_lfs_64.h>
  39505. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statvfs.c uClibc/libc/misc/statfs/statvfs.c
  39506. --- uClibc-0.9.33.2/libc/misc/statfs/statvfs.c 2012-05-15 09:20:09.000000000 +0200
  39507. +++ uClibc/libc/misc/statfs/statvfs.c 2014-02-03 12:32:56.000000000 +0100
  39508. @@ -13,9 +13,8 @@
  39509. Lesser General Public License for more details.
  39510. You should have received a copy of the GNU Lesser General Public
  39511. - License along with the GNU C Library; if not, write to the Free
  39512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39513. - 02111-1307 USA. */
  39514. + License along with the GNU C Library; if not, see
  39515. + <http://www.gnu.org/licenses/>. */
  39516. #include <features.h>
  39517. #include <errno.h>
  39518. diff -Nur uClibc-0.9.33.2/libc/misc/syslog/Makefile.in uClibc/libc/misc/syslog/Makefile.in
  39519. --- uClibc-0.9.33.2/libc/misc/syslog/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39520. +++ uClibc/libc/misc/syslog/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39521. @@ -7,13 +7,13 @@
  39522. subdirs += libc/misc/syslog
  39523. -CSRC := syslog.c
  39524. +CSRC-y := syslog.c
  39525. MISC_SYSLOG_DIR := $(top_srcdir)libc/misc/syslog
  39526. MISC_SYSLOG_OUT := $(top_builddir)libc/misc/syslog
  39527. -MISC_SYSLOG_SRC := $(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC))
  39528. -MISC_SYSLOG_OBJ := $(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC))
  39529. +MISC_SYSLOG_SRC := $(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC-y))
  39530. +MISC_SYSLOG_OBJ := $(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC-y))
  39531. ifeq ($(UCLIBC_HAS_SYSLOG),y)
  39532. libc-y += $(MISC_SYSLOG_OBJ)
  39533. diff -Nur uClibc-0.9.33.2/libc/misc/syslog/syslog.c uClibc/libc/misc/syslog/syslog.c
  39534. --- uClibc-0.9.33.2/libc/misc/syslog/syslog.c 2012-05-15 09:20:09.000000000 +0200
  39535. +++ uClibc/libc/misc/syslog/syslog.c 2014-02-03 12:32:56.000000000 +0100
  39536. @@ -58,8 +58,6 @@
  39537. * - Major code cleanup.
  39538. */
  39539. -#define __FORCE_GLIBC
  39540. -#include <features.h>
  39541. #include <sys/types.h>
  39542. #include <sys/socket.h>
  39543. #include <sys/file.h>
  39544. @@ -177,14 +175,17 @@
  39545. openlog_intern(ident, logstat, logfac);
  39546. __UCLIBC_MUTEX_UNLOCK(mylock);
  39547. }
  39548. -libc_hidden_def(openlog)
  39549. /*
  39550. * syslog, vsyslog --
  39551. * print message on log file; output is intended for syslogd(8).
  39552. */
  39553. +static
  39554. +#ifndef __USE_BSD
  39555. +__always_inline
  39556. +#endif
  39557. void
  39558. -vsyslog(int pri, const char *fmt, va_list ap)
  39559. +__vsyslog(int pri, const char *fmt, va_list ap)
  39560. {
  39561. register char *p;
  39562. char *last_chr, *head_end, *end, *stdp;
  39563. @@ -303,7 +304,9 @@
  39564. getout:
  39565. __UCLIBC_MUTEX_UNLOCK(mylock);
  39566. }
  39567. -libc_hidden_def(vsyslog)
  39568. +#ifdef __USE_BSD
  39569. +strong_alias(__vsyslog,vsyslog)
  39570. +#endif
  39571. void
  39572. syslog(int pri, const char *fmt, ...)
  39573. @@ -311,7 +314,7 @@
  39574. va_list ap;
  39575. va_start(ap, fmt);
  39576. - vsyslog(pri, fmt, ap);
  39577. + __vsyslog(pri, fmt, ap);
  39578. va_end(ap);
  39579. }
  39580. libc_hidden_def(syslog)
  39581. @@ -326,7 +329,6 @@
  39582. closelog_intern(0); /* 0: reset LogXXX globals to default */
  39583. __UCLIBC_MUTEX_UNLOCK(mylock);
  39584. }
  39585. -libc_hidden_def(closelog)
  39586. /* setlogmask -- set the log mask level */
  39587. int setlogmask(int pmask)
  39588. @@ -335,9 +337,9 @@
  39589. omask = LogMask;
  39590. if (pmask != 0) {
  39591. - __UCLIBC_MUTEX_LOCK(mylock);
  39592. +/* __UCLIBC_MUTEX_LOCK(mylock);*/
  39593. LogMask = pmask;
  39594. - __UCLIBC_MUTEX_UNLOCK(mylock);
  39595. +/* __UCLIBC_MUTEX_UNLOCK(mylock);*/
  39596. }
  39597. return omask;
  39598. }
  39599. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/ftok.c uClibc/libc/misc/sysvipc/ftok.c
  39600. --- uClibc-0.9.33.2/libc/misc/sysvipc/ftok.c 2012-05-15 09:20:09.000000000 +0200
  39601. +++ uClibc/libc/misc/sysvipc/ftok.c 2014-02-03 12:32:56.000000000 +0100
  39602. @@ -14,8 +14,7 @@
  39603. You should have received a copy of the GNU Library General Public
  39604. License along with the GNU C Library; see the file COPYING.LIB. If not,
  39605. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  39606. - Boston, MA 02111-1307, USA. */
  39607. + see <http://www.gnu.org/licenses/>. */
  39608. #include <sys/ipc.h>
  39609. #include <sys/stat.h>
  39610. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/ipc.h uClibc/libc/misc/sysvipc/ipc.h
  39611. --- uClibc-0.9.33.2/libc/misc/sysvipc/ipc.h 2012-05-15 09:20:09.000000000 +0200
  39612. +++ uClibc/libc/misc/sysvipc/ipc.h 2014-02-03 12:32:56.000000000 +0100
  39613. @@ -3,10 +3,14 @@
  39614. #include <syscall.h>
  39615. #include <bits/wordsize.h>
  39616. -#if __WORDSIZE == 32 || defined __alpha__ || defined __mips__
  39617. -# define __IPC_64 0x100
  39618. +#ifndef __ARCH_HAS_DEPRECATED_SYSCALLS__
  39619. +# define __IPC_64 0x0
  39620. #else
  39621. -# define __IPC_64 0x0
  39622. +# if __WORDSIZE == 32 || defined __alpha__ || defined __mips__
  39623. +# define __IPC_64 0x100
  39624. +# else
  39625. +# define __IPC_64 0x0
  39626. +# endif
  39627. #endif
  39628. #ifdef __NR_ipc
  39629. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/Makefile.in uClibc/libc/misc/sysvipc/Makefile.in
  39630. --- uClibc-0.9.33.2/libc/misc/sysvipc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39631. +++ uClibc/libc/misc/sysvipc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39632. @@ -7,22 +7,22 @@
  39633. subdirs += libc/misc/sysvipc
  39634. -CSRC := ftok.c __syscall_ipc.c
  39635. +CSRC-y := ftok.c __syscall_ipc.c
  39636. # multi source sem.c
  39637. -CSRC += semget.c semctl.c semop.c semtimedop.c
  39638. +CSRC-y += semget.c semctl.c semop.c semtimedop.c
  39639. # multi source shm.c
  39640. -CSRC += shmat.c shmctl.c shmdt.c shmget.c
  39641. +CSRC-y += shmat.c shmctl.c shmdt.c shmget.c
  39642. # multi source msgq.c
  39643. -CSRC += msgctl.c msgget.c msgrcv.c msgsnd.c
  39644. +CSRC-y += msgctl.c msgget.c msgrcv.c msgsnd.c
  39645. MISC_SYSVIPC_DIR := $(top_srcdir)libc/misc/sysvipc
  39646. MISC_SYSVIPC_OUT := $(top_builddir)libc/misc/sysvipc
  39647. -MISC_SYSVIPC_SRC := $(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(CSRC))
  39648. -MISC_SYSVIPC_OBJ := $(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC))
  39649. +MISC_SYSVIPC_SRC := $(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(CSRC-y))
  39650. +MISC_SYSVIPC_OBJ := $(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC-y))
  39651. libc-y += $(MISC_SYSVIPC_OBJ)
  39652. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/sem.c uClibc/libc/misc/sysvipc/sem.c
  39653. --- uClibc-0.9.33.2/libc/misc/sysvipc/sem.c 2012-05-15 09:20:09.000000000 +0200
  39654. +++ uClibc/libc/misc/sysvipc/sem.c 2014-02-03 12:32:56.000000000 +0100
  39655. @@ -14,8 +14,7 @@
  39656. You should have received a copy of the GNU Library General Public
  39657. License along with the GNU C Library; see the file COPYING.LIB. If not,
  39658. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  39659. - Boston, MA 02111-1307, USA. */
  39660. + see <http://www.gnu.org/licenses/>. */
  39661. #include <errno.h>
  39662. #include <sys/sem.h>
  39663. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/shm.c uClibc/libc/misc/sysvipc/shm.c
  39664. --- uClibc-0.9.33.2/libc/misc/sysvipc/shm.c 2012-05-15 09:20:09.000000000 +0200
  39665. +++ uClibc/libc/misc/sysvipc/shm.c 2014-02-03 12:32:56.000000000 +0100
  39666. @@ -14,8 +14,7 @@
  39667. You should have received a copy of the GNU Library General Public
  39668. License along with the GNU C Library; see the file COPYING.LIB. If not,
  39669. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  39670. - Boston, MA 02111-1307, USA. */
  39671. + see <http://www.gnu.org/licenses/>. */
  39672. /* SHMLBA uses it on most of the archs (not mips) */
  39673. #define __getpagesize getpagesize
  39674. @@ -54,13 +53,13 @@
  39675. #ifdef L_shmctl
  39676. /* Provide operations to control over shared memory segments. */
  39677. #ifdef __NR_shmctl
  39678. -#define __NR___libc_shmctl __NR_shmctl
  39679. -static __inline__ _syscall3(int, __libc_shmctl, int, shmid, int, cmd, struct shmid_ds *, buf)
  39680. +#define __NR___syscall_shmctl __NR_shmctl
  39681. +static __always_inline _syscall3(int, __syscall_shmctl, int, shmid, int, cmd, struct shmid_ds *, buf)
  39682. #endif
  39683. int shmctl(int shmid, int cmd, struct shmid_ds *buf)
  39684. {
  39685. #ifdef __NR_shmctl
  39686. - return __libc_shmctl(shmid, cmd | __IPC_64, buf);
  39687. + return __syscall_shmctl(shmid, cmd | __IPC_64, buf);
  39688. #else
  39689. return __syscall_ipc(IPCOP_shmctl, shmid, cmd | __IPC_64, 0, buf, 0);
  39690. #endif
  39691. diff -Nur uClibc-0.9.33.2/libc/misc/time/ftime.c uClibc/libc/misc/time/ftime.c
  39692. --- uClibc-0.9.33.2/libc/misc/time/ftime.c 2012-05-15 09:20:09.000000000 +0200
  39693. +++ uClibc/libc/misc/time/ftime.c 2014-02-03 12:32:56.000000000 +0100
  39694. @@ -12,9 +12,8 @@
  39695. Lesser General Public License for more details.
  39696. You should have received a copy of the GNU Lesser General Public
  39697. - License along with the GNU C Library; if not, write to the Free
  39698. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39699. - 02111-1307 USA. */
  39700. + License along with the GNU C Library; if not, see
  39701. + <http://www.gnu.org/licenses/>. */
  39702. #include <sys/timeb.h>
  39703. #include <sys/time.h>
  39704. diff -Nur uClibc-0.9.33.2/libc/misc/time/Makefile.in uClibc/libc/misc/time/Makefile.in
  39705. --- uClibc-0.9.33.2/libc/misc/time/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39706. +++ uClibc/libc/misc/time/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39707. @@ -7,33 +7,24 @@
  39708. subdirs += libc/misc/time
  39709. -CSRC := adjtime.c
  39710. -ifeq ($(UCLIBC_SUSV3_LEGACY),y)
  39711. -CSRC += ftime.c
  39712. -endif
  39713. +CSRC-y := adjtime.c
  39714. +CSRC-$(UCLIBC_SUSV3_LEGACY) += ftime.c
  39715. # multi source time.c
  39716. -CSRC += asctime.c asctime_r.c clock.c ctime.c ctime_r.c gmtime.c gmtime_r.c \
  39717. +CSRC-y += asctime.c asctime_r.c clock.c ctime.c ctime_r.c gmtime.c gmtime_r.c \
  39718. localtime.c localtime_r.c mktime.c strftime.c strptime.c tzset.c \
  39719. _time_t2tm.c __time_tm.c _time_mktime.c dysize.c timegm.c \
  39720. _time_mktime_tzi.c _time_localtime_tzi.c
  39721. -ifeq ($(UCLIBC_HAS_FLOATS),y)
  39722. -CSRC += difftime.c
  39723. -endif
  39724. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  39725. -CSRC += strftime_l.c strptime_l.c
  39726. -endif
  39727. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  39728. -CSRC += wcsftime.c
  39729. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  39730. -CSRC += wcsftime_l.c
  39731. -endif
  39732. -endif
  39733. +CSRC-$(UCLIBC_HAS_FLOATS) += difftime.c
  39734. +CSRC-$(UCLIBC_HAS_XLOCALE) += strftime_l.c strptime_l.c
  39735. +CSRC-$(UCLIBC_HAS_WCHAR) += wcsftime.c
  39736. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_WCHAR)$(UCLIBC_HAS_XLOCALE)),y) += \
  39737. + wcsftime_l.c
  39738. MISC_TIME_DIR := $(top_srcdir)libc/misc/time
  39739. MISC_TIME_OUT := $(top_builddir)libc/misc/time
  39740. -MISC_TIME_SRC := $(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC))
  39741. -MISC_TIME_OBJ := $(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC))
  39742. +MISC_TIME_SRC := $(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC-y))
  39743. +MISC_TIME_OBJ := $(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC-y))
  39744. libc-y += $(MISC_TIME_OBJ)
  39745. diff -Nur uClibc-0.9.33.2/libc/misc/time/time.c uClibc/libc/misc/time/time.c
  39746. --- uClibc-0.9.33.2/libc/misc/time/time.c 2012-05-15 09:20:09.000000000 +0200
  39747. +++ uClibc/libc/misc/time/time.c 2014-02-03 12:32:56.000000000 +0100
  39748. @@ -149,10 +149,6 @@
  39749. #ifdef __UCLIBC_HAS_WCHAR__
  39750. #include <wchar.h>
  39751. #endif
  39752. -#ifdef __UCLIBC_HAS_XLOCALE__
  39753. -#include <xlocale.h>
  39754. -#endif
  39755. -
  39756. #ifndef __isleap
  39757. #define __isleap(y) ( !((y) % 4) && ( ((y) % 100) || !((y) % 400) ) )
  39758. @@ -212,7 +208,7 @@
  39759. char tzname[TZNAME_MAX+1];
  39760. } rule_struct;
  39761. -__UCLIBC_MUTEX_EXTERN(_time_tzlock);
  39762. +__UCLIBC_MUTEX_EXTERN(_time_tzlock) attribute_hidden;
  39763. extern rule_struct _time_tzinfo[2] attribute_hidden;
  39764. @@ -605,11 +601,11 @@
  39765. } ll_tzname_item_t;
  39766. /* Structures form a list "UTC" -> "???" -> "tzname1" -> "tzname2"... */
  39767. -struct {
  39768. +static struct {
  39769. struct ll_tzname_item *next;
  39770. char tzname[4];
  39771. } ll_tzname_UNKNOWN = { NULL, "???" };
  39772. -const struct {
  39773. +static const struct {
  39774. struct ll_tzname_item *next;
  39775. char tzname[4];
  39776. } ll_tzname_UTC = { (void*)&ll_tzname_UNKNOWN, "UTC" };
  39777. @@ -671,7 +667,7 @@
  39778. isleap = __isleap(i);
  39779. --i;
  39780. day0 = (1
  39781. - + i /* Normal years increment 1 wday. */
  39782. + + i /* Normal years increment 1 wday. */
  39783. + (i/4)
  39784. - (i/100)
  39785. + (i/400) ) % 7;
  39786. @@ -684,20 +680,22 @@
  39787. }
  39788. } else if (r->rule_type == 'M') {
  39789. /* Find 0-based day number for 1st of the month. */
  39790. - day = 31*r->month - day_cor[r->month -1];
  39791. + day = 31 * r->month - day_cor[r->month - 1];
  39792. if (isleap && (day >= 59)) {
  39793. ++day;
  39794. }
  39795. - monlen = 31 + day_cor[r->month -1] - day_cor[r->month];
  39796. + monlen = 31 + day_cor[r->month - 1] - day_cor[r->month];
  39797. if (isleap && (r->month == 2)) {
  39798. ++monlen;
  39799. }
  39800. - /* Wweekday (0 is Sunday) of 1st of the month
  39801. + /* Weekday (0 is Sunday) of 1st of the month
  39802. * is (day0 + day) % 7. */
  39803. - if ((mday = r->day - ((day0 + day) % 7)) >= 0) {
  39804. - mday -= 7; /* Back up into prev month since r->week>0. */
  39805. + mday = r->day - ((day0 + day) % 7);
  39806. + if (mday >= 0) {
  39807. + mday -= 7; /* Back up into prev month since r->week > 0. */
  39808. }
  39809. - if ((mday += 7 * r->week) >= monlen) {
  39810. + mday += 7 * r->week;
  39811. + if (mday >= monlen) {
  39812. mday -= 7;
  39813. }
  39814. /* So, 0-based day number is... */
  39815. @@ -2100,7 +2098,8 @@
  39816. daylight = !!_time_tzinfo[1].tzname[0];
  39817. timezone = _time_tzinfo[0].gmt_offset;
  39818. -#if defined(__UCLIBC_HAS_TZ_FILE__) || defined(__UCLIBC_HAS_TZ_CACHING__)
  39819. +#if (defined(__UCLIBC_HAS_TZ_FILE__) && !defined(__UCLIBC_HAS_TZ_FILE_READ_MANY__)) || \
  39820. + defined(__UCLIBC_HAS_TZ_CACHING__)
  39821. FAST_DONE:
  39822. #endif
  39823. __UCLIBC_MUTEX_UNLOCK(_time_tzlock);
  39824. diff -Nur uClibc-0.9.33.2/libc/misc/ttyent/getttyent.c uClibc/libc/misc/ttyent/getttyent.c
  39825. --- uClibc-0.9.33.2/libc/misc/ttyent/getttyent.c 2012-05-15 09:20:09.000000000 +0200
  39826. +++ uClibc/libc/misc/ttyent/getttyent.c 2014-02-03 12:32:56.000000000 +0100
  39827. @@ -30,12 +30,11 @@
  39828. #include <features.h>
  39829. #include <ttyent.h>
  39830. #include <stdio.h>
  39831. -#include <stdio_ext.h>
  39832. #include <ctype.h>
  39833. #include <string.h>
  39834. #include <stdlib.h>
  39835. #ifdef __UCLIBC_HAS_THREADS__
  39836. -# include <pthread.h>
  39837. +# include <stdio_ext.h>
  39838. #endif
  39839. static char zapchar;
  39840. diff -Nur uClibc-0.9.33.2/libc/misc/ttyent/Makefile.in uClibc/libc/misc/ttyent/Makefile.in
  39841. --- uClibc-0.9.33.2/libc/misc/ttyent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39842. +++ uClibc/libc/misc/ttyent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39843. @@ -7,13 +7,13 @@
  39844. subdirs += libc/misc/ttyent
  39845. -CSRC := getttyent.c
  39846. +CSRC-y := getttyent.c
  39847. MISC_TTYENT_DIR := $(top_srcdir)libc/misc/ttyent
  39848. MISC_TTYENT_OUT := $(top_builddir)libc/misc/ttyent
  39849. -MISC_TTYENT_SRC := $(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC))
  39850. -MISC_TTYENT_OBJ := $(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC))
  39851. +MISC_TTYENT_SRC := $(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC-y))
  39852. +MISC_TTYENT_OBJ := $(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC-y))
  39853. libc-y += $(MISC_TTYENT_OBJ)
  39854. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/Makefile.in uClibc/libc/misc/utmp/Makefile.in
  39855. --- uClibc-0.9.33.2/libc/misc/utmp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39856. +++ uClibc/libc/misc/utmp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39857. @@ -7,17 +7,14 @@
  39858. subdirs += libc/misc/utmp
  39859. -CSRC := utent.c wtent.c
  39860. -
  39861. -ifeq ($(UCLIBC_HAS_UTMPX),y)
  39862. -CSRC += utxent.c
  39863. -endif
  39864. +CSRC-y := utent.c wtent.c
  39865. +CSRC-$(UCLIBC_HAS_UTMPX) += utxent.c
  39866. MISC_UTMP_DIR := $(top_srcdir)libc/misc/utmp
  39867. MISC_UTMP_OUT := $(top_builddir)libc/misc/utmp
  39868. -MISC_UTMP_SRC := $(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC))
  39869. -MISC_UTMP_OBJ := $(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC))
  39870. +MISC_UTMP_SRC := $(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC-y))
  39871. +MISC_UTMP_OBJ := $(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC-y))
  39872. libc-y += $(MISC_UTMP_OBJ)
  39873. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/utent.c uClibc/libc/misc/utmp/utent.c
  39874. --- uClibc-0.9.33.2/libc/misc/utmp/utent.c 2012-05-15 09:20:09.000000000 +0200
  39875. +++ uClibc/libc/misc/utmp/utent.c 2014-02-03 12:32:56.000000000 +0100
  39876. @@ -19,32 +19,22 @@
  39877. #include <errno.h>
  39878. #include <string.h>
  39879. #include <utmp.h>
  39880. +#ifdef __UCLIBC_HAS_UTMPX__
  39881. +# include <utmpx.h>
  39882. +#endif
  39883. #include <not-cancel.h>
  39884. #include <bits/uClibc_mutex.h>
  39885. __UCLIBC_MUTEX_STATIC(utmplock, PTHREAD_MUTEX_INITIALIZER);
  39886. -
  39887. -/* Do not create extra unlocked functions if no locking is needed */
  39888. -#if defined __UCLIBC_HAS_THREADS__
  39889. -# define static_if_threaded static
  39890. -#else
  39891. -# define static_if_threaded /* nothing */
  39892. -# define __setutent setutent
  39893. -# define __getutent getutent
  39894. -# define __getutid getutid
  39895. -#endif
  39896. -
  39897. -
  39898. /* Some global crap */
  39899. static int static_fd = -1;
  39900. static struct utmp static_utmp;
  39901. static const char default_file_name[] = _PATH_UTMP;
  39902. static const char *static_ut_name = default_file_name;
  39903. -
  39904. /* This function must be called with the LOCK held */
  39905. -static_if_threaded void __setutent(void)
  39906. +static void __setutent_unlocked(void)
  39907. {
  39908. if (static_fd < 0) {
  39909. static_fd = open_not_cancel_2(static_ut_name, O_RDWR | O_CLOEXEC);
  39910. @@ -63,17 +53,24 @@
  39911. lseek(static_fd, 0, SEEK_SET);
  39912. }
  39913. #if defined __UCLIBC_HAS_THREADS__
  39914. -void setutent(void)
  39915. +static void __setutent(void)
  39916. {
  39917. __UCLIBC_MUTEX_LOCK(utmplock);
  39918. - __setutent();
  39919. + __setutent_unlocked();
  39920. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39921. }
  39922. +#else
  39923. +static void __setutent(void);
  39924. +strong_alias(__setutent_unlocked,__setutent)
  39925. +#endif
  39926. +strong_alias(__setutent,setutent)
  39927. +
  39928. +#ifdef __UCLIBC_HAS_UTMPX__
  39929. +strong_alias(__setutent,setutxent)
  39930. #endif
  39931. -libc_hidden_def(setutent)
  39932. /* This function must be called with the LOCK held */
  39933. -static_if_threaded struct utmp *__getutent(void)
  39934. +static struct utmp *__getutent_unlocked(void)
  39935. {
  39936. if (static_fd < 0) {
  39937. __setutent();
  39938. @@ -89,19 +86,29 @@
  39939. return NULL;
  39940. }
  39941. #if defined __UCLIBC_HAS_THREADS__
  39942. -struct utmp *getutent(void)
  39943. +static struct utmp *__getutent(void)
  39944. {
  39945. struct utmp *ret;
  39946. __UCLIBC_MUTEX_LOCK(utmplock);
  39947. - ret = __getutent();
  39948. + ret = __getutent_unlocked();
  39949. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39950. return ret;
  39951. }
  39952. +#else
  39953. +static struct utmp *__getutent(void);
  39954. +strong_alias(__getutent_unlocked,__getutent)
  39955. +#endif
  39956. +strong_alias(__getutent,getutent)
  39957. +
  39958. +#ifdef __UCLIBC_HAS_UTMPX__
  39959. +struct utmpx *getutxent(void)
  39960. +{
  39961. + return (struct utmpx *) __getutent ();
  39962. +}
  39963. #endif
  39964. -libc_hidden_def(getutent)
  39965. -void endutent(void)
  39966. +static void __endutent(void)
  39967. {
  39968. __UCLIBC_MUTEX_LOCK(utmplock);
  39969. if (static_fd >= 0)
  39970. @@ -109,10 +116,14 @@
  39971. static_fd = -1;
  39972. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39973. }
  39974. -libc_hidden_def(endutent)
  39975. +strong_alias(__endutent,endutent)
  39976. +
  39977. +#ifdef __UCLIBC_HAS_UTMPX__
  39978. +strong_alias(__endutent,endutxent)
  39979. +#endif
  39980. /* This function must be called with the LOCK held */
  39981. -static_if_threaded struct utmp *__getutid(const struct utmp *utmp_entry)
  39982. +static struct utmp *__getutid_unlocked(const struct utmp *utmp_entry)
  39983. {
  39984. struct utmp *lutmp;
  39985. unsigned type;
  39986. @@ -122,7 +133,7 @@
  39987. type = utmp_entry->ut_type - 1;
  39988. type /= 4;
  39989. - while ((lutmp = __getutent()) != NULL) {
  39990. + while ((lutmp = __getutent_unlocked()) != NULL) {
  39991. if (type == 0 && lutmp->ut_type == utmp_entry->ut_type) {
  39992. /* one of RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME */
  39993. return lutmp;
  39994. @@ -136,24 +147,34 @@
  39995. return NULL;
  39996. }
  39997. #if defined __UCLIBC_HAS_THREADS__
  39998. -struct utmp *getutid(const struct utmp *utmp_entry)
  39999. +static struct utmp *__getutid(const struct utmp *utmp_entry)
  40000. {
  40001. struct utmp *ret;
  40002. __UCLIBC_MUTEX_LOCK(utmplock);
  40003. - ret = __getutid(utmp_entry);
  40004. + ret = __getutid_unlocked(utmp_entry);
  40005. __UCLIBC_MUTEX_UNLOCK(utmplock);
  40006. return ret;
  40007. }
  40008. +#else
  40009. +static struct utmp *__getutid(const struct utmp *utmp_entry);
  40010. +strong_alias(__getutid_unlocked,__getutid)
  40011. +#endif
  40012. +strong_alias(__getutid,getutid)
  40013. +
  40014. +#ifdef __UCLIBC_HAS_UTMPX__
  40015. +struct utmpx *getutxid(const struct utmpx *utmp_entry)
  40016. +{
  40017. + return (struct utmpx *) __getutid ((const struct utmp *) utmp_entry);
  40018. +}
  40019. #endif
  40020. -libc_hidden_def(getutid)
  40021. -struct utmp *getutline(const struct utmp *utmp_entry)
  40022. +static struct utmp *__getutline(const struct utmp *utmp_entry)
  40023. {
  40024. struct utmp *lutmp;
  40025. __UCLIBC_MUTEX_LOCK(utmplock);
  40026. - while ((lutmp = __getutent()) != NULL) {
  40027. + while ((lutmp = __getutent_unlocked()) != NULL) {
  40028. if (lutmp->ut_type == USER_PROCESS || lutmp->ut_type == LOGIN_PROCESS) {
  40029. if (strncmp(lutmp->ut_line, utmp_entry->ut_line, sizeof(lutmp->ut_line)) == 0) {
  40030. break;
  40031. @@ -163,16 +184,23 @@
  40032. __UCLIBC_MUTEX_UNLOCK(utmplock);
  40033. return lutmp;
  40034. }
  40035. -libc_hidden_def(getutline)
  40036. +strong_alias(__getutline,getutline)
  40037. +
  40038. +#ifdef __UCLIBC_HAS_UTMPX__
  40039. +struct utmpx *getutxline(const struct utmpx *utmp_entry)
  40040. +{
  40041. + return (struct utmpx *) __getutline ((const struct utmp *) utmp_entry);
  40042. +}
  40043. +#endif
  40044. -struct utmp *pututline(const struct utmp *utmp_entry)
  40045. +static struct utmp *__pututline(const struct utmp *utmp_entry)
  40046. {
  40047. __UCLIBC_MUTEX_LOCK(utmplock);
  40048. /* Ignore the return value. That way, if they've already positioned
  40049. the file pointer where they want it, everything will work out. */
  40050. lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR);
  40051. - if (__getutid(utmp_entry) != NULL)
  40052. + if (__getutid_unlocked(utmp_entry) != NULL)
  40053. lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR);
  40054. else
  40055. lseek(static_fd, (off_t) 0, SEEK_END);
  40056. @@ -182,9 +210,16 @@
  40057. __UCLIBC_MUTEX_UNLOCK(utmplock);
  40058. return (struct utmp *)utmp_entry;
  40059. }
  40060. -libc_hidden_def(pututline)
  40061. +strong_alias(__pututline,pututline)
  40062. +
  40063. +#ifdef __UCLIBC_HAS_UTMPX__
  40064. +struct utmpx *pututxline (const struct utmpx *utmp_entry)
  40065. +{
  40066. + return (struct utmpx *) __pututline ((const struct utmp *) utmp_entry);
  40067. +}
  40068. +#endif
  40069. -int utmpname(const char *new_ut_name)
  40070. +static int __utmpname(const char *new_ut_name)
  40071. {
  40072. __UCLIBC_MUTEX_LOCK(utmplock);
  40073. if (new_ut_name != NULL) {
  40074. @@ -205,4 +240,8 @@
  40075. __UCLIBC_MUTEX_UNLOCK(utmplock);
  40076. return 0; /* or maybe return -(static_ut_name != new_ut_name)? */
  40077. }
  40078. -libc_hidden_def(utmpname)
  40079. +strong_alias(__utmpname,utmpname)
  40080. +
  40081. +#ifdef __UCLIBC_HAS_UTMPX__
  40082. +strong_alias(__utmpname,utmpxname)
  40083. +#endif
  40084. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/utxent.c uClibc/libc/misc/utmp/utxent.c
  40085. --- uClibc-0.9.33.2/libc/misc/utmp/utxent.c 2012-05-15 09:20:09.000000000 +0200
  40086. +++ uClibc/libc/misc/utmp/utxent.c 2014-02-03 12:32:56.000000000 +0100
  40087. @@ -13,6 +13,7 @@
  40088. #include <utmpx.h>
  40089. #include <utmp.h>
  40090. +#if 0 /* moved to utent.c */
  40091. void setutxent(void)
  40092. {
  40093. setutent ();
  40094. @@ -48,10 +49,12 @@
  40095. return utmpname (new_ut_name);
  40096. }
  40097. +/* moved to wtent.c */
  40098. void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
  40099. {
  40100. updwtmp (wtmpx_file, (const struct utmp *) utmpx);
  40101. }
  40102. +#endif
  40103. /* Copy the information in UTMPX to UTMP. */
  40104. void getutmp (const struct utmpx *utmpx, struct utmp *utmp)
  40105. @@ -104,4 +107,3 @@
  40106. utmpx->ut_time = utmp->ut_time;
  40107. #endif
  40108. }
  40109. -
  40110. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/wtent.c uClibc/libc/misc/utmp/wtent.c
  40111. --- uClibc-0.9.33.2/libc/misc/utmp/wtent.c 2012-05-15 09:20:09.000000000 +0200
  40112. +++ uClibc/libc/misc/utmp/wtent.c 2014-02-03 12:32:56.000000000 +0100
  40113. @@ -11,6 +11,9 @@
  40114. #include <time.h>
  40115. #include <unistd.h>
  40116. #include <utmp.h>
  40117. +#ifdef __UCLIBC_HAS_UTMPX__
  40118. +# include <utmpx.h>
  40119. +#endif
  40120. #include <fcntl.h>
  40121. #include <sys/file.h>
  40122. #include <not-cancel.h>
  40123. @@ -33,11 +36,11 @@
  40124. }
  40125. #endif
  40126. -void updwtmp(const char *wtmp_file, const struct utmp *lutmp)
  40127. +static void __updwtmp(const char *wtmp_file, const struct utmp *lutmp)
  40128. {
  40129. int fd;
  40130. - fd = open_not_cancel(wtmp_file, O_APPEND | O_WRONLY, 0);
  40131. + fd = open_not_cancel_2(wtmp_file, O_APPEND | O_WRONLY);
  40132. if (fd >= 0) {
  40133. if (lockf(fd, F_LOCK, 0) == 0) {
  40134. write_not_cancel(fd, lutmp, sizeof(struct utmp));
  40135. @@ -46,4 +49,11 @@
  40136. }
  40137. }
  40138. }
  40139. -libc_hidden_def(updwtmp)
  40140. +strong_alias(__updwtmp,updwtmp)
  40141. +
  40142. +#ifdef __UCLIBC_HAS_UTMPX__
  40143. +void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
  40144. +{
  40145. + __updwtmp (wtmpx_file, (const struct utmp *) utmpx);
  40146. +}
  40147. +#endif
  40148. diff -Nur uClibc-0.9.33.2/libc/misc/wchar/Makefile.in uClibc/libc/misc/wchar/Makefile.in
  40149. --- uClibc-0.9.33.2/libc/misc/wchar/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40150. +++ uClibc/libc/misc/wchar/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40151. @@ -19,19 +19,17 @@
  40152. subdirs += libc/misc/wchar
  40153. # multi source wchar.c
  40154. -CSRC := btowc.c wctob.c mbsinit.c mbrlen.c mbrtowc.c wcrtomb.c mbsrtowcs.c \
  40155. +CSRC-y := btowc.c wctob.c mbsinit.c mbrlen.c mbrtowc.c wcrtomb.c mbsrtowcs.c \
  40156. wcsrtombs.c _wchar_utf8sntowcs.c _wchar_wcsntoutf8s.c \
  40157. mbsnrtowcs.c wcsnrtombs.c wcwidth.c wcswidth.c
  40158. -ifeq ($(UCLIBC_HAS_LOCALE),y)
  40159. -CSRC += iconv.c
  40160. -endif
  40161. +CSRC-$(UCLIBC_HAS_LOCALE) += iconv.c
  40162. MISC_WCHAR_DIR := $(top_srcdir)libc/misc/wchar
  40163. MISC_WCHAR_OUT := $(top_builddir)libc/misc/wchar
  40164. -MISC_WCHAR_SRC := $(patsubst %.c,$(MISC_WCHAR_DIR)/%.c,$(CSRC))
  40165. -MISC_WCHAR_OBJ := $(patsubst %.c,$(MISC_WCHAR_OUT)/%.o,$(CSRC))
  40166. +MISC_WCHAR_SRC := $(patsubst %.c,$(MISC_WCHAR_DIR)/%.c,$(CSRC-y))
  40167. +MISC_WCHAR_OBJ := $(patsubst %.c,$(MISC_WCHAR_OUT)/%.o,$(CSRC-y))
  40168. libc-$(UCLIBC_HAS_WCHAR) += $(MISC_WCHAR_OBJ)
  40169. diff -Nur uClibc-0.9.33.2/libc/misc/wchar/wchar.c uClibc/libc/misc/wchar/wchar.c
  40170. --- uClibc-0.9.33.2/libc/misc/wchar/wchar.c 2012-05-15 09:20:09.000000000 +0200
  40171. +++ uClibc/libc/misc/wchar/wchar.c 2014-02-03 12:32:56.000000000 +0100
  40172. @@ -12,8 +12,8 @@
  40173. * Library General Public License for more details.
  40174. *
  40175. * You should have received a copy of the GNU Library General Public
  40176. - * License along with this library; if not, write to the Free
  40177. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  40178. + * License along with this library; if not, see
  40179. + * <http://www.gnu.org/licenses/>.
  40180. */
  40181. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  40182. @@ -1196,6 +1196,9 @@
  40183. #endif
  40184. #if defined L_iconv || defined L_iconv_main
  40185. +# ifdef L_iconv_main
  40186. +static
  40187. +# endif
  40188. const unsigned char __iconv_codesets[] =
  40189. "\x0a\xe0""WCHAR_T\x00" /* superset of UCS-4 but platform-endian */
  40190. #if __BYTE_ORDER == __BIG_ENDIAN
  40191. diff -Nur uClibc-0.9.33.2/libc/misc/wctype/Makefile.in uClibc/libc/misc/wctype/Makefile.in
  40192. --- uClibc-0.9.33.2/libc/misc/wctype/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40193. +++ uClibc/libc/misc/wctype/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40194. @@ -14,19 +14,15 @@
  40195. iswxdigit.c iswblank.c wctrans.c towctrans.c \
  40196. wctype.c iswctype.c towlower.c towupper.c
  40197. -CSRC :=
  40198. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  40199. -CSRC += $(COM_SRC)
  40200. -endif
  40201. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  40202. -CSRC += $(patsubst %.c,%_l.c,$(COM_SRC))
  40203. -endif
  40204. +CSRC-y :=
  40205. +CSRC-$(UCLIBC_HAS_WCHAR) += $(COM_SRC)
  40206. +CSRC-$(UCLIBC_HAS_XLOCALE) += $(patsubst %.c,%_l.c,$(COM_SRC))
  40207. MISC_WCTYPE_DIR := $(top_srcdir)libc/misc/wctype
  40208. MISC_WCTYPE_OUT := $(top_builddir)libc/misc/wctype
  40209. -MISC_WCTYPE_SRC := $(patsubst %.c,$(MISC_WCTYPE_DIR)/%.c,$(CSRC))
  40210. -MISC_WCTYPE_OBJ := $(patsubst %.c,$(MISC_WCTYPE_OUT)/%.o,$(CSRC))
  40211. +MISC_WCTYPE_SRC := $(patsubst %.c,$(MISC_WCTYPE_DIR)/%.c,$(CSRC-y))
  40212. +MISC_WCTYPE_OBJ := $(patsubst %.c,$(MISC_WCTYPE_OUT)/%.o,$(CSRC-y))
  40213. libc-y += $(MISC_WCTYPE_OBJ)
  40214. diff -Nur uClibc-0.9.33.2/libc/misc/wctype/_wctype.c uClibc/libc/misc/wctype/_wctype.c
  40215. --- uClibc-0.9.33.2/libc/misc/wctype/_wctype.c 2012-05-15 09:20:09.000000000 +0200
  40216. +++ uClibc/libc/misc/wctype/_wctype.c 2014-02-03 12:32:56.000000000 +0100
  40217. @@ -11,8 +11,8 @@
  40218. * Library General Public License for more details.
  40219. *
  40220. * You should have received a copy of the GNU Library General Public
  40221. - * License along with this library; if not, write to the Free
  40222. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  40223. + * License along with this library; if not, see
  40224. + * <http://www.gnu.org/licenses/>.
  40225. */
  40226. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  40227. @@ -41,10 +41,6 @@
  40228. # error xlocale functionality is not supported in stub locale mode.
  40229. #endif
  40230. -#ifdef __UCLIBC_HAS_XLOCALE__
  40231. -# include <xlocale.h>
  40232. -#endif
  40233. -
  40234. /* We know wide char support is enabled. We wouldn't be here otherwise. */
  40235. /* Define this if you want to unify the towupper and towlower code in the
  40236. diff -Nur uClibc-0.9.33.2/libc/misc/wordexp/Makefile.in uClibc/libc/misc/wordexp/Makefile.in
  40237. --- uClibc-0.9.33.2/libc/misc/wordexp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40238. +++ uClibc/libc/misc/wordexp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40239. @@ -7,13 +7,13 @@
  40240. subdirs += libc/misc/wordexp
  40241. -CSRC := wordexp.c
  40242. +CSRC-y := wordexp.c
  40243. MISC_WORDEXP_DIR := $(top_srcdir)libc/misc/wordexp
  40244. MISC_WORDEXP_OUT := $(top_builddir)libc/misc/wordexp
  40245. -MISC_WORDEXP_SRC := $(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC))
  40246. -MISC_WORDEXP_OBJ := $(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC))
  40247. +MISC_WORDEXP_SRC := $(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC-y))
  40248. +MISC_WORDEXP_OBJ := $(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC-y))
  40249. libc-$(UCLIBC_HAS_WORDEXP) += $(MISC_WORDEXP_OBJ)
  40250. diff -Nur uClibc-0.9.33.2/libc/misc/wordexp/wordexp.c uClibc/libc/misc/wordexp/wordexp.c
  40251. --- uClibc-0.9.33.2/libc/misc/wordexp/wordexp.c 2012-05-15 09:20:09.000000000 +0200
  40252. +++ uClibc/libc/misc/wordexp/wordexp.c 2014-02-03 12:32:56.000000000 +0100
  40253. @@ -16,11 +16,11 @@
  40254. You should have received a copy of the GNU Library General Public
  40255. License along with the GNU C Library; see the file COPYING.LIB. If not,
  40256. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  40257. - Boston, MA 02111-1307, USA. */
  40258. + see <http://www.gnu.org/licenses/>. */
  40259. #include <features.h>
  40260. #include <bits/kernel-features.h>
  40261. +#include <ctype.h>
  40262. #include <sys/types.h>
  40263. #include <sys/wait.h>
  40264. #include <fcntl.h>
  40265. @@ -36,6 +36,10 @@
  40266. #include <glob.h>
  40267. #include <wordexp.h>
  40268. +#ifndef __ARCH_USE_MMU__
  40269. +# define fork vfork
  40270. +#endif
  40271. +
  40272. #define __WORDEXP_FULL
  40273. /*
  40274. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/lckpwdf.c uClibc/libc/pwd_grp/lckpwdf.c
  40275. --- uClibc-0.9.33.2/libc/pwd_grp/lckpwdf.c 2012-05-15 09:20:09.000000000 +0200
  40276. +++ uClibc/libc/pwd_grp/lckpwdf.c 2014-02-03 12:32:56.000000000 +0100
  40277. @@ -15,9 +15,8 @@
  40278. Lesser General Public License for more details.
  40279. You should have received a copy of the GNU Lesser General Public
  40280. - License along with the GNU C Library; if not, write to the Free
  40281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40282. - 02111-1307 USA. */
  40283. + License along with the GNU C Library; if not, see
  40284. + <http://www.gnu.org/licenses/>. */
  40285. #include <features.h>
  40286. #include <fcntl.h>
  40287. @@ -51,6 +50,7 @@
  40288. struct sigaction new_act; /* New signal action. */
  40289. struct flock fl; /* Information struct for locking. */
  40290. int result;
  40291. + int rv = -1;
  40292. if (lock_fd != -1)
  40293. /* Still locked by own process. */
  40294. @@ -111,11 +111,13 @@
  40295. if (result < 0) {
  40296. close(lock_fd);
  40297. lock_fd = -1;
  40298. + goto DONE;
  40299. }
  40300. + rv = 0;
  40301. DONE:
  40302. __UCLIBC_MUTEX_UNLOCK(mylock);
  40303. - return 0; /* TODO: return result? */
  40304. + return rv;
  40305. }
  40306. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/Makefile.in uClibc/libc/pwd_grp/Makefile.in
  40307. --- uClibc-0.9.33.2/libc/pwd_grp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40308. +++ uClibc/libc/pwd_grp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40309. @@ -10,20 +10,17 @@
  40310. PWDGRP_DIR := $(top_srcdir)libc/pwd_grp
  40311. PWDGRP_OUT := $(top_builddir)libc/pwd_grp
  40312. -CSRC := $(notdir $(wildcard $(PWDGRP_DIR)/*.c))
  40313. -CSRC := $(filter-out pwd_grp.c pwd_grp_internal.c,$(CSRC))
  40314. -
  40315. -ifneq ($(UCLIBC_HAS_SHADOW),y)
  40316. -SHADOW_CSRC := \
  40317. - fgetspent_r.c fgetspent.c getspent_r.c getspent.c \
  40318. +CSRC-y := $(notdir $(wildcard $(PWDGRP_DIR)/*.c))
  40319. +CSRC- := pwd_grp.c pwd_grp_internal.c # multi-source and helper
  40320. +CSRC-$(UCLIBC_HAS_SHADOW) += fgetspent_r.c fgetspent.c getspent_r.c getspent.c \
  40321. getspnam_r.c getspnam.c lckpwdf.c putspent.c \
  40322. sgetspent_r.c sgetspent.c __parsespent.c
  40323. # getspuid_r.c getspuid.c
  40324. -CSRC := $(filter-out $(SHADOW_CSRC),$(CSRC))
  40325. -endif
  40326. -PWDGRP_SRC := $(patsubst %.c,$(PWDGRP_DIR)/%.c,$(CSRC))
  40327. -PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC))
  40328. +CSRC-y := $(filter-out $(CSRC-),$(CSRC-y))
  40329. +
  40330. +PWDGRP_SRC := $(patsubst %.c,$(PWDGRP_DIR)/%.c,$(CSRC-y))
  40331. +PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC-y))
  40332. libc-y += $(PWDGRP_OBJ)
  40333. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/pwd_grp.c uClibc/libc/pwd_grp/pwd_grp.c
  40334. --- uClibc-0.9.33.2/libc/pwd_grp/pwd_grp.c 2012-05-15 09:20:09.000000000 +0200
  40335. +++ uClibc/libc/pwd_grp/pwd_grp.c 2014-02-03 12:32:56.000000000 +0100
  40336. @@ -354,6 +354,7 @@
  40337. getpwnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
  40338. return result;
  40339. }
  40340. +libc_hidden_def(getpwnam)
  40341. #endif
  40342. /**********************************************************************/
  40343. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/pwd_grp_internal.c uClibc/libc/pwd_grp/pwd_grp_internal.c
  40344. --- uClibc-0.9.33.2/libc/pwd_grp/pwd_grp_internal.c 2012-05-15 09:20:09.000000000 +0200
  40345. +++ uClibc/libc/pwd_grp/pwd_grp_internal.c 2014-02-03 12:32:56.000000000 +0100
  40346. @@ -34,9 +34,6 @@
  40347. #ifdef __UCLIBC_HAS_SHADOW__
  40348. #include <shadow.h>
  40349. #endif
  40350. -#ifdef __UCLIBC_HAS_THREADS__
  40351. -#include <pthread.h>
  40352. -#endif
  40353. /**********************************************************************/
  40354. /* Sizes for statically allocated buffers. */
  40355. diff -Nur uClibc-0.9.33.2/libc/signal/allocrtsig.c uClibc/libc/signal/allocrtsig.c
  40356. --- uClibc-0.9.33.2/libc/signal/allocrtsig.c 2012-05-15 09:20:09.000000000 +0200
  40357. +++ uClibc/libc/signal/allocrtsig.c 2014-02-03 12:32:56.000000000 +0100
  40358. @@ -14,13 +14,11 @@
  40359. Lesser General Public License for more details.
  40360. You should have received a copy of the GNU Lesser General Public
  40361. - License along with the GNU C Library; if not, write to the Free
  40362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40363. - 02111-1307 USA. */
  40364. + License along with the GNU C Library; if not, see
  40365. + <http://www.gnu.org/licenses/>. */
  40366. #include <features.h>
  40367. #include <signal.h>
  40368. -#include <sys/types.h>
  40369. #include <sys/syscall.h>
  40370. /* Only enable rt signals when it is supported at compile time */
  40371. @@ -34,6 +32,13 @@
  40372. #else
  40373. # ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40374. static int current_rtmin = __SIGRTMIN + 2;
  40375. +# elif defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  40376. +/* psm: might be good for LT old as well, do not want to break it for now */
  40377. +/* Sanity check */
  40378. +# if !defined __SIGRTMIN || (__SIGRTMAX - __SIGRTMIN) < 3
  40379. +# error "This must not happen"
  40380. +# endif
  40381. +static int current_rtmin = __SIGRTMIN + 3;
  40382. # else
  40383. static int current_rtmin = __SIGRTMIN;
  40384. # endif
  40385. @@ -52,6 +57,7 @@
  40386. return current_rtmax;
  40387. }
  40388. +#if 0
  40389. /* Allocate real-time signal with highest/lowest available
  40390. priority. Please note that we don't use a lock since we assume
  40391. this function to be called at program start. */
  40392. @@ -64,3 +70,4 @@
  40393. return high ? current_rtmin++ : current_rtmax--;
  40394. }
  40395. +#endif
  40396. diff -Nur uClibc-0.9.33.2/libc/signal/killpg.c uClibc/libc/signal/killpg.c
  40397. --- uClibc-0.9.33.2/libc/signal/killpg.c 2012-05-15 09:20:09.000000000 +0200
  40398. +++ uClibc/libc/signal/killpg.c 2014-02-03 12:32:56.000000000 +0100
  40399. @@ -12,14 +12,12 @@
  40400. Lesser General Public License for more details.
  40401. You should have received a copy of the GNU Lesser General Public
  40402. - License along with the GNU C Library; if not, write to the Free
  40403. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40404. - 02111-1307 USA. */
  40405. + License along with the GNU C Library; if not, see
  40406. + <http://www.gnu.org/licenses/>. */
  40407. #include <errno.h>
  40408. #include <signal.h>
  40409. -
  40410. /* Send SIG to all processes in process group PGRP.
  40411. If PGRP is zero, send SIG to all processes in
  40412. the current process's process group. */
  40413. diff -Nur uClibc-0.9.33.2/libc/signal/Makefile.in uClibc/libc/signal/Makefile.in
  40414. --- uClibc-0.9.33.2/libc/signal/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40415. +++ uClibc/libc/signal/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40416. @@ -8,20 +8,18 @@
  40417. subdirs += libc/signal
  40418. CSRC-y := allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \
  40419. - sigblock.c sigdelset.c sigempty.c sigfillset.c siggetmask.c \
  40420. + sigdelset.c sigempty.c sigfillset.c \
  40421. sigisempty.c sigismem.c sigjmp.c signal.c \
  40422. - sigorset.c sigsetmask.c sigsetops.c sigwait.c
  40423. + sigorset.c sigsetops.c sigwait.c
  40424. CSRC-$(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL) += \
  40425. sighold.c sigignore.c sigrelse.c sigset.c
  40426. CSRC-$(UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL) += sysv_signal.c
  40427. CSRC-$(UCLIBC_SUSV4_LEGACY) += sigintr.c sigpause.c
  40428. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  40429. -CSRC-y:=$(filter-out raise.c,$(CSRC-y))
  40430. -endif
  40431. +CSRC-$(UCLIBC_HAS_THREADS_NATIVE):=$(filter-out raise.c,$(CSRC-y))
  40432. -ifneq ($(strip $(ARCH_OBJS)),)
  40433. -CSRC-y := $(filter-out $(notdir $(ARCH_OBJS:.o=.c)),$(CSRC-y))
  40434. +ifneq ($(strip $(ARCH_OBJS-y)),)
  40435. +CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)),$(CSRC-y))
  40436. endif
  40437. ifneq ($(UCLIBC_HAS_BACKTRACE),)
  40438. diff -Nur uClibc-0.9.33.2/libc/signal/raise.c uClibc/libc/signal/raise.c
  40439. --- uClibc-0.9.33.2/libc/signal/raise.c 2012-05-15 09:20:09.000000000 +0200
  40440. +++ uClibc/libc/signal/raise.c 2014-02-03 12:32:56.000000000 +0100
  40441. @@ -3,9 +3,7 @@
  40442. */
  40443. #include <unistd.h>
  40444. -#include <string.h>
  40445. #include <signal.h>
  40446. -#include <sys/types.h>
  40447. int raise(int signo)
  40448. {
  40449. diff -Nur uClibc-0.9.33.2/libc/signal/sigaction.c uClibc/libc/signal/sigaction.c
  40450. --- uClibc-0.9.33.2/libc/signal/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  40451. +++ uClibc/libc/signal/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  40452. @@ -12,23 +12,12 @@
  40453. Lesser General Public License for more details.
  40454. You should have received a copy of the GNU Lesser General Public
  40455. - License along with the GNU C Library; if not, write to the Free
  40456. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40457. - 02111-1307 USA. */
  40458. + License along with the GNU C Library; if not, see
  40459. + <http://www.gnu.org/licenses/>. */
  40460. -#include <features.h>
  40461. -#include <errno.h>
  40462. #include <signal.h>
  40463. -#include <string.h>
  40464. #include <sys/syscall.h>
  40465. -#include <bits/kernel_sigaction.h>
  40466. -
  40467. -#ifndef LIBC_SIGACTION
  40468. -extern __typeof(sigaction) __libc_sigaction;
  40469. -#endif
  40470. -
  40471. -
  40472. #if defined __NR_rt_sigaction
  40473. /* If ACT is not NULL, change the action for SIG to *ACT.
  40474. @@ -47,6 +36,9 @@
  40475. }
  40476. #else
  40477. +# define __need_NULL
  40478. +# include <stddef.h>
  40479. +# include <bits/kernel_sigaction.h>
  40480. /* If ACT is not NULL, change the action for SIG to *ACT.
  40481. If OACT is not NULL, put the old action for SIG in *OACT. */
  40482. diff -Nur uClibc-0.9.33.2/libc/signal/sigaddset.c uClibc/libc/signal/sigaddset.c
  40483. --- uClibc-0.9.33.2/libc/signal/sigaddset.c 2012-05-15 09:20:09.000000000 +0200
  40484. +++ uClibc/libc/signal/sigaddset.c 2014-02-03 12:32:56.000000000 +0100
  40485. @@ -12,11 +12,13 @@
  40486. Lesser General Public License for more details.
  40487. You should have received a copy of the GNU Lesser General Public
  40488. - License along with the GNU C Library; if not, write to the Free
  40489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40490. - 02111-1307 USA. */
  40491. + License along with the GNU C Library; if not, see
  40492. + <http://www.gnu.org/licenses/>. */
  40493. -#include "sigsetops.h"
  40494. +#define __need_NULL
  40495. +#include <stddef.h>
  40496. +#include <signal.h>
  40497. +#include <errno.h>
  40498. /* Add SIGNO to SET. */
  40499. int
  40500. diff -Nur uClibc-0.9.33.2/libc/signal/sigandset.c uClibc/libc/signal/sigandset.c
  40501. --- uClibc-0.9.33.2/libc/signal/sigandset.c 2012-05-15 09:20:09.000000000 +0200
  40502. +++ uClibc/libc/signal/sigandset.c 2014-02-03 12:32:56.000000000 +0100
  40503. @@ -12,9 +12,8 @@
  40504. Lesser General Public License for more details.
  40505. You should have received a copy of the GNU Lesser General Public
  40506. - License along with the GNU C Library; if not, write to the Free
  40507. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40508. - 02111-1307 USA. */
  40509. + License along with the GNU C Library; if not, see
  40510. + <http://www.gnu.org/licenses/>. */
  40511. #include <errno.h>
  40512. #include <signal.h>
  40513. diff -Nur uClibc-0.9.33.2/libc/signal/sigblock.c uClibc/libc/signal/sigblock.c
  40514. --- uClibc-0.9.33.2/libc/signal/sigblock.c 2012-05-15 09:20:09.000000000 +0200
  40515. +++ uClibc/libc/signal/sigblock.c 2014-02-03 12:32:56.000000000 +0100
  40516. @@ -12,18 +12,16 @@
  40517. Lesser General Public License for more details.
  40518. You should have received a copy of the GNU Lesser General Public
  40519. - License along with the GNU C Library; if not, write to the Free
  40520. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40521. - 02111-1307 USA. */
  40522. + License along with the GNU C Library; if not, see
  40523. + <http://www.gnu.org/licenses/>. */
  40524. -#define __UCLIBC_HIDE_DEPRECATED__
  40525. -#include <errno.h>
  40526. +/*#define __UCLIBC_HIDE_DEPRECATED__*/
  40527. #include <signal.h>
  40528. #include "sigset-cvt-mask.h"
  40529. /* Block signals in MASK, returning the old mask. */
  40530. -int sigblock (int mask)
  40531. +static int sigblock (int mask)
  40532. {
  40533. sigset_t set, oset;
  40534. @@ -31,4 +29,3 @@
  40535. sigprocmask (SIG_BLOCK, &set, &oset); /* can't fail */
  40536. return sigset_get_old_mask (&oset);
  40537. }
  40538. -libc_hidden_def(sigblock)
  40539. diff -Nur uClibc-0.9.33.2/libc/signal/sigdelset.c uClibc/libc/signal/sigdelset.c
  40540. --- uClibc-0.9.33.2/libc/signal/sigdelset.c 2012-05-15 09:20:09.000000000 +0200
  40541. +++ uClibc/libc/signal/sigdelset.c 2014-02-03 12:32:56.000000000 +0100
  40542. @@ -12,11 +12,13 @@
  40543. Lesser General Public License for more details.
  40544. You should have received a copy of the GNU Lesser General Public
  40545. - License along with the GNU C Library; if not, write to the Free
  40546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40547. - 02111-1307 USA. */
  40548. + License along with the GNU C Library; if not, see
  40549. + <http://www.gnu.org/licenses/>. */
  40550. -#include "sigsetops.h"
  40551. +#define __need_NULL
  40552. +#include <stddef.h>
  40553. +#include <signal.h>
  40554. +#include <errno.h>
  40555. /* Add SIGNO to SET. */
  40556. int sigdelset (sigset_t *set, int signo)
  40557. diff -Nur uClibc-0.9.33.2/libc/signal/sigempty.c uClibc/libc/signal/sigempty.c
  40558. --- uClibc-0.9.33.2/libc/signal/sigempty.c 2012-05-15 09:20:09.000000000 +0200
  40559. +++ uClibc/libc/signal/sigempty.c 2014-02-03 12:32:56.000000000 +0100
  40560. @@ -12,14 +12,15 @@
  40561. Lesser General Public License for more details.
  40562. You should have received a copy of the GNU Lesser General Public
  40563. - License along with the GNU C Library; if not, write to the Free
  40564. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40565. - 02111-1307 USA. */
  40566. + License along with the GNU C Library; if not, see
  40567. + <http://www.gnu.org/licenses/>. */
  40568. -#include <errno.h>
  40569. #include <signal.h>
  40570. -#include <string.h>
  40571. -
  40572. +#if 0
  40573. +#define __need_NULL
  40574. +#include <stddef.h>
  40575. +#include <errno.h>
  40576. +#endif
  40577. /* Clear all signals from SET. */
  40578. int sigemptyset (sigset_t *set)
  40579. @@ -36,4 +37,3 @@
  40580. return 0;
  40581. }
  40582. -libc_hidden_def(sigemptyset)
  40583. diff -Nur uClibc-0.9.33.2/libc/signal/sigfillset.c uClibc/libc/signal/sigfillset.c
  40584. --- uClibc-0.9.33.2/libc/signal/sigfillset.c 2012-05-15 09:20:09.000000000 +0200
  40585. +++ uClibc/libc/signal/sigfillset.c 2014-02-03 12:32:56.000000000 +0100
  40586. @@ -12,17 +12,18 @@
  40587. Lesser General Public License for more details.
  40588. You should have received a copy of the GNU Lesser General Public
  40589. - License along with the GNU C Library; if not, write to the Free
  40590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40591. - 02111-1307 USA. */
  40592. + License along with the GNU C Library; if not, see
  40593. + <http://www.gnu.org/licenses/>. */
  40594. -#include <errno.h>
  40595. #include <signal.h>
  40596. -#include <string.h>
  40597. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40598. # include <pthreadP.h> /* SIGCANCEL */
  40599. #endif
  40600. -
  40601. +#if 0
  40602. +#define __need_NULL
  40603. +#include <stddef.h>
  40604. +#include <errno.h>
  40605. +#endif
  40606. /* Set all signals in SET. */
  40607. int
  40608. @@ -49,4 +50,3 @@
  40609. return 0;
  40610. }
  40611. -libc_hidden_def(sigfillset)
  40612. diff -Nur uClibc-0.9.33.2/libc/signal/siggetmask.c uClibc/libc/signal/siggetmask.c
  40613. --- uClibc-0.9.33.2/libc/signal/siggetmask.c 2012-05-15 09:20:09.000000000 +0200
  40614. +++ uClibc/libc/signal/siggetmask.c 2014-02-03 12:32:56.000000000 +0100
  40615. @@ -13,14 +13,12 @@
  40616. Lesser General Public License for more details.
  40617. You should have received a copy of the GNU Lesser General Public
  40618. - License along with the GNU C Library; if not, write to the Free
  40619. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40620. - 02111-1307 USA. */
  40621. + License along with the GNU C Library; if not, see
  40622. + <http://www.gnu.org/licenses/>. */
  40623. #define __UCLIBC_HIDE_DEPRECATED__
  40624. #include <signal.h>
  40625. -
  40626. int
  40627. siggetmask (void)
  40628. {
  40629. diff -Nur uClibc-0.9.33.2/libc/signal/sighold.c uClibc/libc/signal/sighold.c
  40630. --- uClibc-0.9.33.2/libc/signal/sighold.c 2012-05-15 09:20:09.000000000 +0200
  40631. +++ uClibc/libc/signal/sighold.c 2014-02-03 12:32:56.000000000 +0100
  40632. @@ -14,15 +14,13 @@
  40633. Lesser General Public License for more details.
  40634. You should have received a copy of the GNU Lesser General Public
  40635. - License along with the GNU C Library; if not, write to the Free
  40636. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40637. - 02111-1307 USA. */
  40638. + License along with the GNU C Library; if not, see
  40639. + <http://www.gnu.org/licenses/>. */
  40640. #define __need_NULL
  40641. #include <stddef.h>
  40642. #include <signal.h>
  40643. -
  40644. int sighold (int sig)
  40645. {
  40646. sigset_t set;
  40647. diff -Nur uClibc-0.9.33.2/libc/signal/sigignore.c uClibc/libc/signal/sigignore.c
  40648. --- uClibc-0.9.33.2/libc/signal/sigignore.c 2012-05-15 09:20:09.000000000 +0200
  40649. +++ uClibc/libc/signal/sigignore.c 2014-02-03 12:32:56.000000000 +0100
  40650. @@ -14,16 +14,13 @@
  40651. Lesser General Public License for more details.
  40652. You should have received a copy of the GNU Lesser General Public
  40653. - License along with the GNU C Library; if not, write to the Free
  40654. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40655. - 02111-1307 USA. */
  40656. + License along with the GNU C Library; if not, see
  40657. + <http://www.gnu.org/licenses/>. */
  40658. -#include <errno.h>
  40659. #define __need_NULL
  40660. #include <stddef.h>
  40661. #include <signal.h>
  40662. -#include <string.h> /* For the real memset prototype. */
  40663. -
  40664. +#include <string.h>
  40665. int sigignore (int sig)
  40666. {
  40667. diff -Nur uClibc-0.9.33.2/libc/signal/sigintr.c uClibc/libc/signal/sigintr.c
  40668. --- uClibc-0.9.33.2/libc/signal/sigintr.c 2012-05-15 09:20:09.000000000 +0200
  40669. +++ uClibc/libc/signal/sigintr.c 2014-02-03 12:32:56.000000000 +0100
  40670. @@ -12,20 +12,19 @@
  40671. Lesser General Public License for more details.
  40672. You should have received a copy of the GNU Lesser General Public
  40673. - License along with the GNU C Library; if not, write to the Free
  40674. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40675. - 02111-1307 USA. */
  40676. + License along with the GNU C Library; if not, see
  40677. + <http://www.gnu.org/licenses/>. */
  40678. -#include <stddef.h>
  40679. #include <signal.h>
  40680. -#include <errno.h>
  40681. -
  40682. /* If INTERRUPT is nonzero, make signal SIG interrupt system calls
  40683. (causing them to fail with EINTR); if INTERRUPT is zero, make system
  40684. calls be restarted after signal SIG. */
  40685. #ifdef SA_RESTART
  40686. -extern sigset_t _sigintr attribute_hidden; /* Defined in signal.c. */
  40687. +# define __need_NULL
  40688. +# include <stddef.h>
  40689. +#else
  40690. +# include <errno.h>
  40691. #endif
  40692. int siginterrupt (int sig, int interrupt)
  40693. diff -Nur uClibc-0.9.33.2/libc/signal/sigisempty.c uClibc/libc/signal/sigisempty.c
  40694. --- uClibc-0.9.33.2/libc/signal/sigisempty.c 2012-05-15 09:20:09.000000000 +0200
  40695. +++ uClibc/libc/signal/sigisempty.c 2014-02-03 12:32:56.000000000 +0100
  40696. @@ -12,9 +12,8 @@
  40697. Lesser General Public License for more details.
  40698. You should have received a copy of the GNU Lesser General Public
  40699. - License along with the GNU C Library; if not, write to the Free
  40700. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40701. - 02111-1307 USA. */
  40702. + License along with the GNU C Library; if not, see
  40703. + <http://www.gnu.org/licenses/>. */
  40704. #include <errno.h>
  40705. #include <signal.h>
  40706. diff -Nur uClibc-0.9.33.2/libc/signal/sigismem.c uClibc/libc/signal/sigismem.c
  40707. --- uClibc-0.9.33.2/libc/signal/sigismem.c 2012-05-15 09:20:09.000000000 +0200
  40708. +++ uClibc/libc/signal/sigismem.c 2014-02-03 12:32:56.000000000 +0100
  40709. @@ -12,11 +12,13 @@
  40710. Lesser General Public License for more details.
  40711. You should have received a copy of the GNU Lesser General Public
  40712. - License along with the GNU C Library; if not, write to the Free
  40713. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40714. - 02111-1307 USA. */
  40715. + License along with the GNU C Library; if not, see
  40716. + <http://www.gnu.org/licenses/>. */
  40717. -#include "sigsetops.h"
  40718. +#define __need_NULL
  40719. +#include <stddef.h>
  40720. +#include <signal.h>
  40721. +#include <errno.h>
  40722. /* Return 1 if SIGNO is in SET, 0 if not. */
  40723. int sigismember (const sigset_t *set, int signo)
  40724. diff -Nur uClibc-0.9.33.2/libc/signal/sigjmp.c uClibc/libc/signal/sigjmp.c
  40725. --- uClibc-0.9.33.2/libc/signal/sigjmp.c 2012-05-15 09:20:09.000000000 +0200
  40726. +++ uClibc/libc/signal/sigjmp.c 2014-02-03 12:32:56.000000000 +0100
  40727. @@ -12,21 +12,18 @@
  40728. Lesser General Public License for more details.
  40729. You should have received a copy of the GNU Lesser General Public
  40730. - License along with the GNU C Library; if not, write to the Free
  40731. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40732. - 02111-1307 USA. */
  40733. + License along with the GNU C Library; if not, see
  40734. + <http://www.gnu.org/licenses/>. */
  40735. +#define __need_NULL
  40736. #include <stddef.h>
  40737. #include <setjmp.h>
  40738. #include <signal.h>
  40739. -#include <libc-internal.h>
  40740. -
  40741. /* This function is called by the `sigsetjmp' macro
  40742. before doing a `__setjmp' on ENV[0].__jmpbuf.
  40743. Always return zero. */
  40744. -int __sigjmp_save (sigjmp_buf env, int savemask) attribute_hidden;
  40745. int __sigjmp_save (sigjmp_buf env, int savemask)
  40746. {
  40747. env[0].__mask_was_saved = (savemask &&
  40748. diff -Nur uClibc-0.9.33.2/libc/signal/signal.c uClibc/libc/signal/signal.c
  40749. --- uClibc-0.9.33.2/libc/signal/signal.c 2012-05-15 09:20:09.000000000 +0200
  40750. +++ uClibc/libc/signal/signal.c 2014-02-03 12:32:56.000000000 +0100
  40751. @@ -14,15 +14,14 @@
  40752. Lesser General Public License for more details.
  40753. You should have received a copy of the GNU Lesser General Public
  40754. - License along with the GNU C Library; if not, write to the Free
  40755. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40756. - 02111-1307 USA. */
  40757. + License along with the GNU C Library; if not, see
  40758. + <http://www.gnu.org/licenses/>. */
  40759. #include <errno.h>
  40760. #include <signal.h>
  40761. #include <string.h> /* For the real memset prototype. */
  40762. -sigset_t _sigintr attribute_hidden; /* Set by siginterrupt. */
  40763. +sigset_t _sigintr; /* Set by siginterrupt. */
  40764. /* Set the handler for the signal SIG to HANDLER,
  40765. returning the old handler, or SIG_ERR on error. */
  40766. diff -Nur uClibc-0.9.33.2/libc/signal/sigorset.c uClibc/libc/signal/sigorset.c
  40767. --- uClibc-0.9.33.2/libc/signal/sigorset.c 2012-05-15 09:20:09.000000000 +0200
  40768. +++ uClibc/libc/signal/sigorset.c 2014-02-03 12:32:56.000000000 +0100
  40769. @@ -12,9 +12,8 @@
  40770. Lesser General Public License for more details.
  40771. You should have received a copy of the GNU Lesser General Public
  40772. - License along with the GNU C Library; if not, write to the Free
  40773. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40774. - 02111-1307 USA. */
  40775. + License along with the GNU C Library; if not, see
  40776. + <http://www.gnu.org/licenses/>. */
  40777. #include <errno.h>
  40778. #include <signal.h>
  40779. diff -Nur uClibc-0.9.33.2/libc/signal/sigpause.c uClibc/libc/signal/sigpause.c
  40780. --- uClibc-0.9.33.2/libc/signal/sigpause.c 2012-05-15 09:20:09.000000000 +0200
  40781. +++ uClibc/libc/signal/sigpause.c 2014-02-03 12:32:56.000000000 +0100
  40782. @@ -13,25 +13,19 @@
  40783. Lesser General Public License for more details.
  40784. You should have received a copy of the GNU Lesser General Public
  40785. - License along with the GNU C Library; if not, write to the Free
  40786. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40787. - 02111-1307 USA. */
  40788. -
  40789. -#define __UCLIBC_HIDE_DEPRECATED__
  40790. -/* psm: need the BSD version of sigpause here */
  40791. -#include <errno.h>
  40792. -#define __FAVOR_BSD
  40793. + License along with the GNU C Library; if not, see
  40794. + <http://www.gnu.org/licenses/>. */
  40795. +
  40796. #include <signal.h>
  40797. -#include <stddef.h> /* For NULL. */
  40798. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40799. -#include <sysdep-cancel.h>
  40800. -#endif
  40801. +#define __need_NULL
  40802. +#include <stddef.h>
  40803. +#include <cancel.h>
  40804. #include "sigset-cvt-mask.h"
  40805. /* Set the mask of blocked signals to MASK,
  40806. wait for a signal to arrive, and then restore the mask. */
  40807. -int __sigpause (int sig_or_mask, int is_sig)
  40808. +static int __sigpause (int sig_or_mask, int is_sig)
  40809. {
  40810. sigset_t set;
  40811. @@ -49,29 +43,21 @@
  40812. /* Note the sigpause() is a cancellation point. But since we call
  40813. sigsuspend() which itself is a cancellation point we do not have
  40814. to do anything here. */
  40815. - return sigsuspend (&set);
  40816. + /* uClibc note: not true on uClibc, we call the non-cancellable version */
  40817. + return __NC(sigsuspend)(&set);
  40818. }
  40819. -libc_hidden_def(__sigpause)
  40820. -#undef sigpause
  40821. +int __bsd_sigpause(int mask);
  40822. +int __bsd_sigpause(int mask)
  40823. +{
  40824. + return __sigpause(mask, 0);
  40825. +}
  40826. /* We have to provide a default version of this function since the
  40827. standards demand it. The version which is a bit more reasonable is
  40828. the BSD version. So make this the default. */
  40829. -int sigpause (int mask)
  40830. +static int __NC(sigpause)(int sig)
  40831. {
  40832. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40833. - if (SINGLE_THREAD_P)
  40834. - return __sigpause (mask, 0);
  40835. -
  40836. - int oldtype = LIBC_CANCEL_ASYNC ();
  40837. -
  40838. - int result = __sigpause (mask, 0);
  40839. -
  40840. - LIBC_CANCEL_RESET (oldtype);
  40841. -
  40842. - return result;
  40843. -#else
  40844. - return __sigpause (mask, 0);
  40845. -#endif
  40846. + return __sigpause(sig, 1);
  40847. }
  40848. +CANCELLABLE_SYSCALL(int, sigpause, (int sig), (sig))
  40849. diff -Nur uClibc-0.9.33.2/libc/signal/sigrelse.c uClibc/libc/signal/sigrelse.c
  40850. --- uClibc-0.9.33.2/libc/signal/sigrelse.c 2012-05-15 09:20:09.000000000 +0200
  40851. +++ uClibc/libc/signal/sigrelse.c 2014-02-03 12:32:56.000000000 +0100
  40852. @@ -14,15 +14,13 @@
  40853. Lesser General Public License for more details.
  40854. You should have received a copy of the GNU Lesser General Public
  40855. - License along with the GNU C Library; if not, write to the Free
  40856. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40857. - 02111-1307 USA. */
  40858. + License along with the GNU C Library; if not, see
  40859. + <http://www.gnu.org/licenses/>. */
  40860. #define __need_NULL
  40861. #include <stddef.h>
  40862. #include <signal.h>
  40863. -
  40864. int sigrelse (int sig)
  40865. {
  40866. sigset_t set;
  40867. diff -Nur uClibc-0.9.33.2/libc/signal/sigset.c uClibc/libc/signal/sigset.c
  40868. --- uClibc-0.9.33.2/libc/signal/sigset.c 2012-05-15 09:20:09.000000000 +0200
  40869. +++ uClibc/libc/signal/sigset.c 2014-02-03 12:32:56.000000000 +0100
  40870. @@ -12,16 +12,14 @@
  40871. Lesser General Public License for more details.
  40872. You should have received a copy of the GNU Lesser General Public
  40873. - License along with the GNU C Library; if not, write to the Free
  40874. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40875. - 02111-1307 USA. */
  40876. + License along with the GNU C Library; if not, see
  40877. + <http://www.gnu.org/licenses/>. */
  40878. #include <errno.h>
  40879. #define __need_NULL
  40880. #include <stddef.h>
  40881. #include <signal.h>
  40882. -#include <string.h> /* For the real memset prototype. */
  40883. -
  40884. +#include <string.h>
  40885. /* Set the disposition for SIG. */
  40886. __sighandler_t sigset (int sig, __sighandler_t disp)
  40887. diff -Nur uClibc-0.9.33.2/libc/signal/sigset-cvt-mask.h uClibc/libc/signal/sigset-cvt-mask.h
  40888. --- uClibc-0.9.33.2/libc/signal/sigset-cvt-mask.h 2012-05-15 09:20:09.000000000 +0200
  40889. +++ uClibc/libc/signal/sigset-cvt-mask.h 2014-02-03 12:32:56.000000000 +0100
  40890. @@ -15,9 +15,11 @@
  40891. Lesser General Public License for more details.
  40892. You should have received a copy of the GNU Lesser General Public
  40893. - License along with the GNU C Library; if not, write to the Free
  40894. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40895. - 02111-1307 USA. */
  40896. + License along with the GNU C Library; if not, see
  40897. + <http://www.gnu.org/licenses/>. */
  40898. +
  40899. +#ifndef _SIGSET_CVT_MASK_H
  40900. +#define _SIGSET_CVT_MASK_H
  40901. #include <string.h>
  40902. @@ -36,3 +38,5 @@
  40903. {
  40904. return (unsigned int) set->__val[0];
  40905. }
  40906. +
  40907. +#endif
  40908. diff -Nur uClibc-0.9.33.2/libc/signal/sigsetmask.c uClibc/libc/signal/sigsetmask.c
  40909. --- uClibc-0.9.33.2/libc/signal/sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  40910. +++ uClibc/libc/signal/sigsetmask.c 2014-02-03 12:32:56.000000000 +0100
  40911. @@ -12,18 +12,16 @@
  40912. Lesser General Public License for more details.
  40913. You should have received a copy of the GNU Lesser General Public
  40914. - License along with the GNU C Library; if not, write to the Free
  40915. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40916. - 02111-1307 USA. */
  40917. + License along with the GNU C Library; if not, see
  40918. + <http://www.gnu.org/licenses/>. */
  40919. -#define __UCLIBC_HIDE_DEPRECATED__
  40920. -#include <errno.h>
  40921. +/*#define __UCLIBC_HIDE_DEPRECATED__*/
  40922. #include <signal.h>
  40923. #include "sigset-cvt-mask.h"
  40924. /* Set the mask of blocked signals to MASK, returning the old mask. */
  40925. -int
  40926. +static int
  40927. sigsetmask (int mask)
  40928. {
  40929. sigset_t set, oset;
  40930. @@ -32,4 +30,3 @@
  40931. sigprocmask (SIG_SETMASK, &set, &oset); /* can't fail */
  40932. return sigset_get_old_mask (&oset);
  40933. }
  40934. -libc_hidden_def(sigsetmask)
  40935. diff -Nur uClibc-0.9.33.2/libc/signal/sigsetops.h uClibc/libc/signal/sigsetops.h
  40936. --- uClibc-0.9.33.2/libc/signal/sigsetops.h 2012-05-15 09:20:09.000000000 +0200
  40937. +++ uClibc/libc/signal/sigsetops.h 1970-01-01 01:00:00.000000000 +0100
  40938. @@ -1,33 +0,0 @@
  40939. -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
  40940. - This file is part of the GNU C Library.
  40941. -
  40942. - The GNU C Library is free software; you can redistribute it and/or
  40943. - modify it under the terms of the GNU Lesser General Public
  40944. - License as published by the Free Software Foundation; either
  40945. - version 2.1 of the License, or (at your option) any later version.
  40946. -
  40947. - The GNU C Library is distributed in the hope that it will be useful,
  40948. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  40949. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  40950. - Lesser General Public License for more details.
  40951. -
  40952. - You should have received a copy of the GNU Lesser General Public
  40953. - License along with the GNU C Library; if not, write to the Free
  40954. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40955. - 02111-1307 USA. */
  40956. -
  40957. -/* Definitions relevant to functions that operate on `sigset_t's. */
  40958. -
  40959. -#include <errno.h>
  40960. -#include <signal.h>
  40961. -#include <string.h>
  40962. -
  40963. -#define BITS (_NSIG - 1)
  40964. -#define ELT(signo) (((signo) - 1) / BITS)
  40965. -#define MASK(signo) (1 << (((signo) - 1) % BITS))
  40966. -
  40967. -#undef sigemptyset
  40968. -#undef sigfillset
  40969. -#undef sigaddset
  40970. -#undef sigdelset
  40971. -#undef sigismember
  40972. diff -Nur uClibc-0.9.33.2/libc/signal/sigwait.c uClibc/libc/signal/sigwait.c
  40973. --- uClibc-0.9.33.2/libc/signal/sigwait.c 2012-05-15 09:20:09.000000000 +0200
  40974. +++ uClibc/libc/signal/sigwait.c 2014-02-03 12:32:56.000000000 +0100
  40975. @@ -15,96 +15,42 @@
  40976. * Lesser General Public License for more details.
  40977. *
  40978. * You should have received a copy of the GNU Lesser General Public
  40979. - * License along with the GNU C Library; if not, write to the Free
  40980. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40981. - * 02111-1307 USA. */
  40982. -
  40983. -#include <errno.h>
  40984. + * License along with the GNU C Library; see the file COPYING.LIB. If
  40985. + * not, see <http://www.gnu.org/licenses/>.
  40986. + */
  40987. +
  40988. +#define __need_NULL
  40989. +#include <stddef.h>
  40990. +#include <sys/syscall.h>
  40991. #include <signal.h>
  40992. -#include <string.h>
  40993. -#include <unistd.h>
  40994. +#include <cancel.h>
  40995. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40996. -# include <sysdep-cancel.h>
  40997. +#if defined __NR_rt_sigtimedwait && defined __UCLIBC_HAS_REALTIME__
  40998. -# ifdef __NR_rt_sigtimedwait
  40999. +#include <string.h>
  41000. /* Return any pending signal or wait for one for the given time. */
  41001. -static int do_sigwait(const sigset_t *set, int *sig)
  41002. +static int __NC(sigwait)(const sigset_t *set, int *sig)
  41003. {
  41004. int ret;
  41005. -# ifdef SIGCANCEL
  41006. - sigset_t tmpset;
  41007. - if (set != NULL
  41008. - && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  41009. -# ifdef SIGSETXID
  41010. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  41011. -# endif
  41012. - ))
  41013. - {
  41014. - /* Create a temporary mask without the bit for SIGCANCEL set. */
  41015. - // We are not copying more than we have to.
  41016. - memcpy(&tmpset, set, _NSIG / 8);
  41017. - __sigdelset(&tmpset, SIGCANCEL);
  41018. -# ifdef SIGSETXID
  41019. - __sigdelset(&tmpset, SIGSETXID);
  41020. -# endif
  41021. - set = &tmpset;
  41022. - }
  41023. -# endif
  41024. -
  41025. - /* XXX The size argument hopefully will have to be changed to the
  41026. - real size of the user-level sigset_t. */
  41027. - INTERNAL_SYSCALL_DECL(err);
  41028. do
  41029. - ret = INTERNAL_SYSCALL (rt_sigtimedwait, err, 4, set, NULL,
  41030. - NULL, _NSIG / 8);
  41031. - while (INTERNAL_SYSCALL_ERROR_P (ret, err)
  41032. - && INTERNAL_SYSCALL_ERRNO (ret, err) == EINTR);
  41033. - if (! INTERNAL_SYSCALL_ERROR_P (ret, err))
  41034. - {
  41035. + /* we might as well use sigtimedwait and do not care about cancellation */
  41036. + ret = __NC(sigtimedwait)(set, NULL, NULL);
  41037. + while (ret == -1 && errno == EINTR);
  41038. + if (ret != -1) {
  41039. *sig = ret;
  41040. ret = 0;
  41041. - }
  41042. -else
  41043. - ret = INTERNAL_SYSCALL_ERRNO (ret, err);
  41044. + } else
  41045. + ret = errno;
  41046. return ret;
  41047. }
  41048. -int sigwait (const sigset_t *set, int *sig)
  41049. -{
  41050. - if(SINGLE_THREAD_P)
  41051. - return do_sigwait(set, sig);
  41052. -
  41053. - int oldtype = LIBC_CANCEL_ASYNC();
  41054. -
  41055. - int result = do_sigwait(set, sig);
  41056. +#else /* __NR_rt_sigtimedwait */
  41057. - LIBC_CANCEL_RESET(oldtype);
  41058. -
  41059. - return result;
  41060. -}
  41061. -# else /* __NR_rt_sigtimedwait */
  41062. -# error We must have rt_sigtimedwait defined!!!
  41063. -# endif
  41064. -#else /* __UCLIBC_HAS_THREADS_NATIVE__ */
  41065. -
  41066. -# if defined __UCLIBC_HAS_REALTIME__
  41067. -
  41068. -int sigwait (const sigset_t *set, int *sig)
  41069. -{
  41070. - int ret = 1;
  41071. - if ((ret = sigwaitinfo(set, NULL)) != -1) {
  41072. - *sig = ret;
  41073. - return 0;
  41074. - }
  41075. - return 1;
  41076. -}
  41077. -
  41078. -# else /* __UCLIBC_HAS_REALTIME__ */
  41079. /* variant without REALTIME extensions */
  41080. +#include <unistd.h> /* smallint */
  41081. static smallint was_sig; /* obviously not thread-safe */
  41082. @@ -113,7 +59,7 @@
  41083. was_sig = sig;
  41084. }
  41085. -int sigwait (const sigset_t *set, int *sig)
  41086. +static int __NC(sigwait)(const sigset_t *set, int *sig)
  41087. {
  41088. sigset_t tmp_mask;
  41089. struct sigaction saved[NSIG];
  41090. @@ -147,7 +93,7 @@
  41091. }
  41092. /* Now we can wait for signals. */
  41093. - sigsuspend (&tmp_mask);
  41094. + __NC(sigsuspend)(&tmp_mask);
  41095. restore_handler:
  41096. save_errno = errno;
  41097. @@ -163,5 +109,6 @@
  41098. *sig = was_sig;
  41099. return was_sig == -1 ? -1 : 0;
  41100. }
  41101. -# endif /* __UCLIBC_HAS_REALTIME__ */
  41102. -#endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  41103. +#endif /* __NR_rt_sigtimedwait */
  41104. +
  41105. +CANCELLABLE_SYSCALL(int, sigwait, (const sigset_t *set, int *sig), (set, sig))
  41106. diff -Nur uClibc-0.9.33.2/libc/signal/sysv_signal.c uClibc/libc/signal/sysv_signal.c
  41107. --- uClibc-0.9.33.2/libc/signal/sysv_signal.c 2012-05-15 09:20:09.000000000 +0200
  41108. +++ uClibc/libc/signal/sysv_signal.c 2014-02-03 12:32:56.000000000 +0100
  41109. @@ -12,14 +12,11 @@
  41110. Lesser General Public License for more details.
  41111. You should have received a copy of the GNU Lesser General Public
  41112. - License along with the GNU C Library; if not, write to the Free
  41113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41114. - 02111-1307 USA. */
  41115. + License along with the GNU C Library; if not, see
  41116. + <http://www.gnu.org/licenses/>. */
  41117. #include <errno.h>
  41118. #include <signal.h>
  41119. -#include <string.h> /* For the real memset prototype. */
  41120. -
  41121. /* Tolerate non-threads versions of Posix */
  41122. #ifndef SA_ONESHOT
  41123. diff -Nur uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.c uClibc/libc/stdio/_fpmaxtostr.c
  41124. --- uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.c 2012-05-15 09:20:09.000000000 +0200
  41125. +++ uClibc/libc/stdio/_fpmaxtostr.c 2014-02-03 12:32:56.000000000 +0100
  41126. @@ -1,6 +1,7 @@
  41127. -/* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
  41128. +/*
  41129. + * Copyright (C) 2000,2001,2003,2004 Manuel Novoa III <mjn3@codepoet.org>
  41130. *
  41131. - * GNU Library General Public License (LGPL) version 2 or later.
  41132. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  41133. *
  41134. * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  41135. */
  41136. @@ -9,15 +10,9 @@
  41137. #include <printf.h>
  41138. #include <float.h>
  41139. #include <locale.h>
  41140. -#include <bits/uClibc_fpmax.h>
  41141. +#include "_fpmaxtostr.h"
  41142. -
  41143. -typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  41144. - intptr_t buf);
  41145. -
  41146. -
  41147. -/* Copyright (C) 2000, 2001, 2003 Manuel Novoa III
  41148. - *
  41149. +/*
  41150. * Function:
  41151. *
  41152. * ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41153. @@ -40,7 +35,6 @@
  41154. * It should also be fairly portable, as no assumptions are made about the
  41155. * bit-layout of doubles. Of course, that does make it less efficient than
  41156. * it could be.
  41157. - *
  41158. */
  41159. /*****************************************************************************/
  41160. @@ -67,9 +61,6 @@
  41161. #define NUM_HEX_DIGITS ((FPMAX_MANT_DIG + 3)/ 4)
  41162. -/* WARNING: Adjust _fp_out_wide() below if this changes! */
  41163. -/* With 32 bit ints, we can get 9 decimal digits per block. */
  41164. -#define DIGITS_PER_BLOCK 9
  41165. #define HEX_DIGITS_PER_BLOCK 8
  41166. /* Maximum number of subcases to output double is...
  41167. @@ -87,15 +78,9 @@
  41168. /*****************************************************************************/
  41169. -#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  41170. #define NUM_HEX_DIGIT_BLOCKS \
  41171. ((NUM_HEX_DIGITS+HEX_DIGITS_PER_BLOCK-1)/HEX_DIGITS_PER_BLOCK)
  41172. -/* WARNING: Adjust _fp_out_wide() below if this changes! */
  41173. -
  41174. -/* extra space for '-', '.', 'e+###', and nul */
  41175. -#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  41176. -
  41177. /*****************************************************************************/
  41178. static const char fmt[] = "inf\0INF\0nan\0NAN\0.\0,";
  41179. @@ -200,8 +185,6 @@
  41180. #define FPO_STR_PREC 'p'
  41181. ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41182. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  41183. -ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41184. __fp_outfunc_t fp_outfunc)
  41185. {
  41186. #ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
  41187. @@ -219,8 +202,8 @@
  41188. #ifdef __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__
  41189. int num_groups = 0;
  41190. int initial_group; /* This does not need to be initialized. */
  41191. - int tslen; /* This does not need to be initialized. */
  41192. - int nblk2; /* This does not need to be initialized. */
  41193. + int tslen; /* This does not need to be initialized. */
  41194. + int nblk2; /* This does not need to be initialized. */
  41195. const char *ts; /* This does not need to be initialized. */
  41196. #endif /* __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__ */
  41197. int round, o_exp;
  41198. diff -Nur uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.h uClibc/libc/stdio/_fpmaxtostr.h
  41199. --- uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.h 1970-01-01 01:00:00.000000000 +0100
  41200. +++ uClibc/libc/stdio/_fpmaxtostr.h 2014-02-03 12:32:56.000000000 +0100
  41201. @@ -0,0 +1,49 @@
  41202. +/* vi: set sw=4 ts=4: */
  41203. +/*
  41204. + * Copyright (C) 2000,2001,2003,2004 Manuel Novoa III <mjn3@codepoet.org>
  41205. + *
  41206. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  41207. + *
  41208. + * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  41209. + */
  41210. +
  41211. +#ifndef _FPMAXTOSTR_H
  41212. +#define _FPMAXTOSTR_H 1
  41213. +
  41214. +#include <features.h>
  41215. +#ifdef __UCLIBC_HAS_FLOATS__
  41216. +
  41217. +#define __need_size_t
  41218. +#include <stddef.h>
  41219. +#include <stdint.h>
  41220. +#include <stdio.h>
  41221. +#include <printf.h>
  41222. +#include <sys/types.h>
  41223. +#include <float.h>
  41224. +#include <bits/uClibc_fpmax.h>
  41225. +
  41226. +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */
  41227. +/* With 32 bit ints, we can get 9 decimal digits per block. */
  41228. +#define DIGITS_PER_BLOCK 9
  41229. +
  41230. +#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  41231. +
  41232. +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */
  41233. +/* extra space for '-', '.', 'e+###', and nul */
  41234. +#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  41235. +
  41236. +/* psm: why do these internals differ? */
  41237. +#ifdef __USE_OLD_VFPRINTF__
  41238. +typedef void (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, intptr_t buf);
  41239. +
  41240. +extern size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41241. + __fp_outfunc_t fp_outfunc) attribute_hidden;
  41242. +#else
  41243. +typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, intptr_t buf);
  41244. +
  41245. +extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41246. + __fp_outfunc_t fp_outfunc) attribute_hidden;
  41247. +#endif
  41248. +
  41249. +#endif /* __UCLIBC_HAS_FLOATS__ */
  41250. +#endif /* _FPMAXTOSTR_H */
  41251. diff -Nur uClibc-0.9.33.2/libc/stdio/fputc.c uClibc/libc/stdio/fputc.c
  41252. --- uClibc-0.9.33.2/libc/stdio/fputc.c 2012-05-15 09:20:09.000000000 +0200
  41253. +++ uClibc/libc/stdio/fputc.c 2014-02-03 12:32:56.000000000 +0100
  41254. @@ -72,16 +72,13 @@
  41255. libc_hidden_def(__fputc_unlocked)
  41256. strong_alias(__fputc_unlocked,fputc_unlocked)
  41257. -libc_hidden_def(fputc_unlocked)
  41258. strong_alias(__fputc_unlocked,putc_unlocked)
  41259. -libc_hidden_def(putc_unlocked)
  41260. #ifndef __UCLIBC_HAS_THREADS__
  41261. strong_alias(__fputc_unlocked,fputc)
  41262. libc_hidden_def(fputc)
  41263. strong_alias(__fputc_unlocked,putc)
  41264. -libc_hidden_def(putc)
  41265. #endif
  41266. #elif defined __UCLIBC_HAS_THREADS__
  41267. @@ -101,6 +98,5 @@
  41268. libc_hidden_def(fputc)
  41269. strong_alias(fputc,putc)
  41270. -libc_hidden_def(putc)
  41271. #endif
  41272. diff -Nur uClibc-0.9.33.2/libc/stdio/fputwc.c uClibc/libc/stdio/fputwc.c
  41273. --- uClibc-0.9.33.2/libc/stdio/fputwc.c 2012-05-15 09:20:09.000000000 +0200
  41274. +++ uClibc/libc/stdio/fputwc.c 2014-02-03 12:32:56.000000000 +0100
  41275. @@ -19,6 +19,7 @@
  41276. strong_alias(fputwc_unlocked,putwc_unlocked)
  41277. #ifndef __UCLIBC_HAS_THREADS__
  41278. strong_alias(fputwc_unlocked,fputwc)
  41279. +libc_hidden_def(fputwc)
  41280. strong_alias(fputwc_unlocked,putwc)
  41281. #endif
  41282. @@ -37,6 +38,7 @@
  41283. return retval;
  41284. }
  41285. +libc_hidden_def(fputwc)
  41286. strong_alias(fputwc,putwc)
  41287. diff -Nur uClibc-0.9.33.2/libc/stdio/fseeko.c uClibc/libc/stdio/fseeko.c
  41288. --- uClibc-0.9.33.2/libc/stdio/fseeko.c 2012-05-15 09:20:09.000000000 +0200
  41289. +++ uClibc/libc/stdio/fseeko.c 2014-02-03 12:32:56.000000000 +0100
  41290. @@ -77,5 +77,5 @@
  41291. libc_hidden_def(fseeko64)
  41292. #else
  41293. libc_hidden_def(fseek)
  41294. -strong_alias(fseek,fseeko)
  41295. +strong_alias_untyped(fseek,fseeko)
  41296. #endif
  41297. diff -Nur uClibc-0.9.33.2/libc/stdio/ftello.c uClibc/libc/stdio/ftello.c
  41298. --- uClibc-0.9.33.2/libc/stdio/ftello.c 2012-05-15 09:20:09.000000000 +0200
  41299. +++ uClibc/libc/stdio/ftello.c 2014-02-03 12:32:56.000000000 +0100
  41300. @@ -53,5 +53,5 @@
  41301. libc_hidden_def(ftello64)
  41302. #else
  41303. libc_hidden_def(ftell)
  41304. -strong_alias(ftell,ftello)
  41305. +strong_alias_untyped(ftell,ftello)
  41306. #endif
  41307. diff -Nur uClibc-0.9.33.2/libc/stdio/_load_inttype.c uClibc/libc/stdio/_load_inttype.c
  41308. --- uClibc-0.9.33.2/libc/stdio/_load_inttype.c 2012-05-15 09:20:09.000000000 +0200
  41309. +++ uClibc/libc/stdio/_load_inttype.c 2014-02-03 12:32:56.000000000 +0100
  41310. @@ -8,7 +8,6 @@
  41311. #include "_stdio.h"
  41312. #include <printf.h>
  41313. -uintmax_t _load_inttype(int desttype, register const void *src, int uflag) attribute_hidden;
  41314. uintmax_t _load_inttype(int desttype, register const void *src, int uflag)
  41315. {
  41316. if (uflag >= 0) { /* unsigned */
  41317. diff -Nur uClibc-0.9.33.2/libc/stdio/Makefile.in uClibc/libc/stdio/Makefile.in
  41318. --- uClibc-0.9.33.2/libc/stdio/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  41319. +++ uClibc/libc/stdio/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  41320. @@ -11,7 +11,7 @@
  41321. subdirs += libc/stdio
  41322. # SUSv3 functions
  41323. -CSRC := \
  41324. +CSRC-y := \
  41325. fclose.c fcloseall.c fdopen.c fgetpos.c fopen.c freopen.c \
  41326. fseeko.c fsetpos.c ftello.c getdelim.c getline.c gets.c getw.c \
  41327. perror.c puts.c putw.c remove.c rewind.c setbuf.c setbuffer.c \
  41328. @@ -19,92 +19,80 @@
  41329. printf.c vprintf.c vsprintf.c fprintf.c snprintf.c dprintf.c \
  41330. asprintf.c sprintf.c vasprintf.c vdprintf.c vsnprintf.c \
  41331. tmpfile.c popen.c ctermid.c
  41332. +CSRC-$(UCLIBC_HAS_LFS) += fgetpos64.c fopen64.c freopen64.c \
  41333. + fseeko64.c fsetpos64.c ftello64.c
  41334. +CSRC-$(UCLIBC_SUSV4_LEGACY) += tmpnam.c tmpnam_r.c tempnam.c
  41335. -ifeq ($(UCLIBC_HAS_LFS),y)
  41336. -CSRC += fgetpos64.c fopen64.c freopen64.c fseeko64.c fsetpos64.c ftello64.c
  41337. -endif
  41338. -ifeq ($(UCLIBC_SUSV4_LEGACY),y)
  41339. -CSRC += tmpnam.c tmpnam_r.c tempnam.c
  41340. -endif
  41341. -
  41342. -# getc -> alias for fgetc
  41343. -# putc -> alias for fputc
  41344. -# rename is a syscall
  41345. -
  41346. -# Implementation support functions
  41347. -CSRC += \
  41348. +# internal support functions
  41349. +CSRC-y += \
  41350. _READ.c _WRITE.c _adjust_pos.c _fopen.c _fwrite.c \
  41351. _rfill.c _stdio.c _trans2r.c _trans2w.c _wcommit.c \
  41352. _cs_funcs.c _load_inttype.c _store_inttype.c _uintmaxtostr.c
  41353. -ifeq ($(UCLIBC_HAS_FLOATS),y)
  41354. -CSRC += _fpmaxtostr.c
  41355. -endif
  41356. +CSRC-$(UCLIBC_HAS_FLOATS) += _fpmaxtostr.c
  41357. # stdio_ext.h functions
  41358. -CSRC += \
  41359. +CSRC-y += \
  41360. __fbufsize.c __flbf.c __fpending.c __fpurge.c __freadable.c \
  41361. __freading.c __fsetlocking.c __fwritable.c __fwriting.c _flushlbf.c
  41362. # Other glibc extensions
  41363. -ifeq ($(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS),y)
  41364. -CSRC += fopencookie.c fmemopen.c open_memstream.c
  41365. -endif
  41366. +CSRC-$(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS) += fopencookie.c fmemopen.c \
  41367. + open_memstream.c
  41368. # pthread functions
  41369. -CSRC += flockfile.c ftrylockfile.c funlockfile.c
  41370. +CSRC-y += flockfile.c ftrylockfile.c funlockfile.c
  41371. # Functions with unlocked versions
  41372. -CUSRC := \
  41373. +CUSRC-y := \
  41374. clearerr.c feof.c ferror.c fflush.c fgetc.c fgets.c fileno.c \
  41375. fputc.c fputs.c fread.c fwrite.c getchar.c putchar.c
  41376. # getc_unlocked -> alias for fgetc_unlocked
  41377. # putc_unlocked -> alias for fputc_unlocked
  41378. # vfprintf and support functions
  41379. -ifneq ($(USE_OLD_VFPRINTF),y)
  41380. +ifeq ($(USE_OLD_VFPRINTF),y)
  41381. +VF_CSRC := old_vfprintf.c
  41382. +else
  41383. +# multi source _vfprintf.c
  41384. VF_CSRC := \
  41385. vfprintf.c \
  41386. _vfprintf_internal.c \
  41387. _ppfs_init.c _ppfs_prepargs.c _ppfs_setargs.c _ppfs_parsespec.c \
  41388. register_printf_function.c parse_printf_format.c
  41389. -CSRC += $(VF_CSRC)
  41390. -else
  41391. -CSRC += old_vfprintf.c
  41392. endif
  41393. +CSRC-y += $(VF_CSRC)
  41394. # vfscanf and support functions plus other *scanf funcs
  41395. -CSRC += \
  41396. +CSRC-y += \
  41397. vfscanf.c __scan_cookie.c __psfs_parse_spec.c __psfs_do_numeric.c \
  41398. scanf.c sscanf.c fscanf.c vscanf.c vsscanf.c
  41399. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  41400. -CSRC += _wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.c \
  41401. +CSRC-$(UCLIBC_HAS_WCHAR) += \
  41402. + _wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.c \
  41403. fwide.c ungetwc.c
  41404. -CUSRC += fgetwc.c getwchar.c fgetws.c fputwc.c putwchar.c fputws.c
  41405. +CUSRC-$(UCLIBC_HAS_WCHAR) += \
  41406. + fgetwc.c getwchar.c fgetws.c fputwc.c putwchar.c fputws.c
  41407. # getwc (fgetwc alias) getwc_unlocked (fgetwc_unlocked alias)
  41408. # putwc (fputwc alias) putwc_unlocked (fputwc_unlocked alias)
  41409. -CSRC += vfwprintf.c _vfwprintf_internal.c
  41410. -CSRC += wscanf.c swscanf.c fwscanf.c vwscanf.c vswscanf.c vfwscanf.c
  41411. -endif
  41412. -
  41413. -CUSRC_UNLOCKED := $(patsubst %.c,%_unlocked.c,$(CUSRC))
  41414. +CSRC-$(UCLIBC_HAS_WCHAR) += vfwprintf.c _vfwprintf_internal.c \
  41415. + wscanf.c swscanf.c fwscanf.c vwscanf.c vswscanf.c vfwscanf.c
  41416. -CSRC += $(CUSRC) $(CUSRC_UNLOCKED)
  41417. +CUSRC_UNLOCKED := $(patsubst %.c,%_unlocked.c,$(CUSRC-y))
  41418. +CSRC-y += $(CUSRC-y) $(CUSRC_UNLOCKED)
  41419. STDIO_DIR := $(top_srcdir)libc/stdio
  41420. STDIO_OUT := $(top_builddir)libc/stdio
  41421. -STDIO_SRC := $(patsubst %.c,$(STDIO_DIR)/%.c,$(CSRC))
  41422. -STDIO_OBJ := $(patsubst %.c,$(STDIO_OUT)/%.o,$(CSRC))
  41423. +STDIO_SRC := $(patsubst %.c,$(STDIO_DIR)/%.c,$(CSRC-y))
  41424. +STDIO_OBJ := $(patsubst %.c,$(STDIO_OUT)/%.o,$(CSRC-y))
  41425. libc-y += $(STDIO_OBJ)
  41426. ifneq ($(USE_OLD_VFPRINTF),y)
  41427. libc-nomulti-y += $(patsubst %.c,$(STDIO_OUT)/%.o,$(VF_CSRC))
  41428. endif
  41429. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  41430. -libc-nomulti-y += $(STDIO_OUT)/vfwprintf.o $(STDIO_OUT)/vfwscanf.o
  41431. -endif
  41432. +libc-nomulti-$(UCLIBC_HAS_WCHAR) += $(STDIO_OUT)/vfwprintf.o \
  41433. + $(STDIO_OUT)/vfwscanf.o
  41434. objclean-y += CLEAN_libc/stdio
  41435. diff -Nur uClibc-0.9.33.2/libc/stdio/old_vfprintf.c uClibc/libc/stdio/old_vfprintf.c
  41436. --- uClibc-0.9.33.2/libc/stdio/old_vfprintf.c 2012-05-15 09:20:09.000000000 +0200
  41437. +++ uClibc/libc/stdio/old_vfprintf.c 2014-02-03 12:32:56.000000000 +0100
  41438. @@ -127,9 +127,7 @@
  41439. /**************************************************************************/
  41440. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  41441. #include "_stdio.h"
  41442. -/* #include <stdio.h> */
  41443. #include <stdarg.h>
  41444. #include <limits.h>
  41445. #include <stdint.h>
  41446. @@ -137,14 +135,9 @@
  41447. #include <errno.h>
  41448. #include <ctype.h>
  41449. #include <bits/uClibc_uintmaxtostr.h>
  41450. -#include <printf.h>
  41451. -#ifdef __UCLIBC_HAS_THREADS__
  41452. -#include <pthread.h>
  41453. -#endif /* __UCLIBC_HAS_THREADS__ */
  41454. +#include "_fpmaxtostr.h"
  41455. -
  41456. -/* #undef __UCLIBC_HAS_FLOATS__ */
  41457. /* #undef WANT_FLOAT_ERROR */
  41458. /* #define WANT_FLOAT_ERROR 1 */
  41459. @@ -208,14 +201,6 @@
  41460. #endif /* __STDIO_BUFFERS */
  41461. #ifdef __UCLIBC_HAS_FLOATS__
  41462. -#include <float.h>
  41463. -#include <bits/uClibc_fpmax.h>
  41464. -
  41465. -typedef void (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  41466. - intptr_t buf);
  41467. -
  41468. -extern size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41469. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  41470. static void _charpad(FILE * __restrict stream, int padchar, size_t numpad)
  41471. {
  41472. @@ -259,9 +244,6 @@
  41473. /**********************************************************************/
  41474. -extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  41475. -extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
  41476. -
  41477. /*
  41478. * In order to ease translation to what arginfo and _print_info._flags expect,
  41479. * we map: 0:int 1:char 2:longlong 4:long 8:short
  41480. diff -Nur uClibc-0.9.33.2/libc/stdio/open_memstream.c uClibc/libc/stdio/open_memstream.c
  41481. --- uClibc-0.9.33.2/libc/stdio/open_memstream.c 2012-05-15 09:20:09.000000000 +0200
  41482. +++ uClibc/libc/stdio/open_memstream.c 2014-02-03 12:32:56.000000000 +0100
  41483. @@ -128,7 +128,7 @@
  41484. * (ie replace the FILE buffer with the cookie buffer and update FILE bufstart,
  41485. * etc. whenever we seek). */
  41486. -FILE *open_memstream(char **__restrict bufloc, size_t *__restrict sizeloc)
  41487. +FILE *open_memstream(char **bufloc, size_t *sizeloc)
  41488. {
  41489. register __oms_cookie *cookie;
  41490. register FILE *fp;
  41491. diff -Nur uClibc-0.9.33.2/libc/stdio/popen.c uClibc/libc/stdio/popen.c
  41492. --- uClibc-0.9.33.2/libc/stdio/popen.c 2012-05-15 09:20:09.000000000 +0200
  41493. +++ uClibc/libc/stdio/popen.c 2014-02-03 12:32:56.000000000 +0100
  41494. @@ -26,15 +26,6 @@
  41495. #warning "hmm... susv3 says Pipe streams are byte-oriented."
  41496. #endif /* __UCLIBC_MJN3_ONLY__ */
  41497. -
  41498. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  41499. -#include <sys/syscall.h>
  41500. -#if ! defined __NR_vfork
  41501. -# define vfork fork
  41502. -# define VFORK_LOCK ((void) 0)
  41503. -# define VFORK_UNLOCK ((void) 0)
  41504. -#endif
  41505. -
  41506. #ifndef VFORK_LOCK
  41507. __UCLIBC_MUTEX_STATIC(mylock, PTHREAD_MUTEX_INITIALIZER);
  41508. # define VFORK_LOCK __UCLIBC_MUTEX_LOCK(mylock)
  41509. @@ -138,7 +129,7 @@
  41510. int pclose(FILE *stream)
  41511. {
  41512. struct popen_list_item *p;
  41513. - int stat;
  41514. + int status;
  41515. pid_t pid;
  41516. /* First, find the list entry corresponding to stream and remove it
  41517. @@ -173,8 +164,8 @@
  41518. /* SUSv3 specificly requires that pclose not return before the child
  41519. * terminates, in order to disallow pclose from returning on EINTR. */
  41520. do {
  41521. - if (waitpid(pid, &stat, 0) >= 0) {
  41522. - return stat;
  41523. + if (waitpid(pid, &status, 0) >= 0) {
  41524. + return status;
  41525. }
  41526. if (errno != EINTR) {
  41527. break;
  41528. diff -Nur uClibc-0.9.33.2/libc/stdio/putwchar.c uClibc/libc/stdio/putwchar.c
  41529. --- uClibc-0.9.33.2/libc/stdio/putwchar.c 2012-05-15 09:20:09.000000000 +0200
  41530. +++ uClibc/libc/stdio/putwchar.c 2014-02-03 12:32:56.000000000 +0100
  41531. @@ -9,7 +9,6 @@
  41532. #ifdef __DO_UNLOCKED
  41533. -
  41534. wint_t putwchar_unlocked(wchar_t wc)
  41535. {
  41536. return fputwc_unlocked(wc, stdout);
  41537. @@ -21,11 +20,9 @@
  41538. #elif defined __UCLIBC_HAS_THREADS__
  41539. -/* psm: should this be fputwc? */
  41540. -
  41541. wint_t putwchar(wchar_t wc)
  41542. {
  41543. - return fputc(wc, stdout);
  41544. + return fputwc(wc, stdout);
  41545. }
  41546. #endif
  41547. diff -Nur uClibc-0.9.33.2/libc/stdio/_scanf.c uClibc/libc/stdio/_scanf.c
  41548. --- uClibc-0.9.33.2/libc/stdio/_scanf.c 2012-05-15 09:20:09.000000000 +0200
  41549. +++ uClibc/libc/stdio/_scanf.c 2014-02-03 12:32:56.000000000 +0100
  41550. @@ -11,8 +11,8 @@
  41551. * Library General Public License for more details.
  41552. *
  41553. * You should have received a copy of the GNU Library General Public
  41554. - * License along with this library; if not, write to the Free
  41555. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  41556. + * License along with this library; if not, see
  41557. + * <http://www.gnu.org/licenses/>.
  41558. */
  41559. /* Aug 1, 2003
  41560. @@ -43,7 +43,6 @@
  41561. * standards and from an official C standard defect report.
  41562. */
  41563. -#define _ISOC99_SOURCE /* for LLONG_MAX primarily... */
  41564. #include <features.h>
  41565. #include "_stdio.h"
  41566. #include <stdlib.h>
  41567. @@ -77,14 +76,6 @@
  41568. #include <bits/uClibc_fpmax.h>
  41569. #endif /* __UCLIBC_HAS_FLOATS__ */
  41570. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  41571. -#ifdef L_vfscanf
  41572. -/* only emit this once */
  41573. -#warning Forcing undef of __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ until implemented!
  41574. -#endif
  41575. -#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  41576. -#endif
  41577. -
  41578. #undef __STDIO_HAS_VSSCANF
  41579. #if defined(__STDIO_BUFFERS) || !defined(__UCLIBC_HAS_WCHAR__) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41580. #define __STDIO_HAS_VSSCANF 1
  41581. @@ -99,8 +90,6 @@
  41582. #endif
  41583. -extern void _store_inttype(void *dest, int desttype, uintmax_t val);
  41584. -
  41585. #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
  41586. extern unsigned long long
  41587. @@ -209,7 +198,7 @@
  41588. #ifdef __STDIO_BUFFERS
  41589. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  41590. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  41591. {
  41592. FILE f;
  41593. @@ -253,7 +242,7 @@
  41594. #elif !defined(__UCLIBC_HAS_WCHAR__)
  41595. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  41596. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  41597. {
  41598. __FILE_vsscanf f;
  41599. @@ -292,7 +281,7 @@
  41600. #elif defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41601. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  41602. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  41603. {
  41604. FILE *f;
  41605. int rv = EOF;
  41606. @@ -388,9 +377,9 @@
  41607. FILE f;
  41608. f.__bufstart =
  41609. - f.__bufpos = (char *) str;
  41610. + f.__bufpos = (unsigned char *) str;
  41611. f.__bufread =
  41612. - f.__bufend = (char *)(str + wcslen(str));
  41613. + f.__bufend = (unsigned char *)(str + wcslen(str));
  41614. __STDIO_STREAM_DISABLE_GETC(&f);
  41615. __STDIO_STREAM_DISABLE_PUTC(&f);
  41616. @@ -433,18 +422,19 @@
  41617. /* float layout 0123456789012345678901 repeat n for "l[" */
  41618. -#define SPEC_CHARS "npxXoudifFeEgGaACSncs["
  41619. -/* npxXoudif eEgG CS cs[ */
  41620. +#define SPEC_CHARS "npxXoudifFeEgGaACSnmcs["
  41621. +/* npxXoudif eEgG CS cs[ */
  41622. +/* NOTE: the 'm' flag must come before any convs that support it */
  41623. -/* NOTE: Ordering is important! In particular, CONV_LEFTBRACKET
  41624. - * must immediately precede CONV_c. */
  41625. +/* NOTE: Ordering is important! The CONV_{C,S,LEFTBRACKET} must map
  41626. + simply to their lowercase equivalents. */
  41627. enum {
  41628. CONV_n = 0,
  41629. CONV_p,
  41630. CONV_x, CONV_X, CONV_o, CONV_u, CONV_d, CONV_i,
  41631. CONV_f, CONV_F, CONV_e, CONV_E, CONV_g, CONV_G, CONV_a, CONV_A,
  41632. - CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_c, CONV_s, CONV_leftbracket,
  41633. + CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_m, CONV_c, CONV_s, CONV_leftbracket,
  41634. CONV_percent, CONV_whitespace /* not in SPEC_* and no flags */
  41635. };
  41636. @@ -474,7 +464,7 @@
  41637. FLAG_SURPRESS = 0x10, /* MUST BE 1ST!! See DO_FLAGS. */
  41638. FLAG_THOUSANDS = 0x20,
  41639. FLAG_I18N = 0x40, /* only works for d, i, u */
  41640. - FLAG_MALLOC = 0x80, /* only works for s, S, and [ (and l[)*/
  41641. + FLAG_MALLOC = 0x80, /* only works for c, s, S, and [ (and l[)*/
  41642. };
  41643. @@ -491,7 +481,7 @@
  41644. /* fFeEgGaA */ (0x0c|FLAG_SURPRESS|FLAG_THOUSANDS|FLAG_I18N), \
  41645. /* C */ ( 0|FLAG_SURPRESS), \
  41646. /* S and l[ */ ( 0|FLAG_SURPRESS|FLAG_MALLOC), \
  41647. - /* c */ (0x04|FLAG_SURPRESS), \
  41648. + /* c */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
  41649. /* s and [ */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
  41650. }
  41651. @@ -904,17 +894,17 @@
  41652. if (*psfs->fmt == *p) {
  41653. int p_m_spec_chars = p - spec_chars;
  41654. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  41655. -#error implement gnu a flag
  41656. - if ((*p == 'a')
  41657. - && ((psfs->fmt[1] == '[') || ((psfs->fmt[1]|0x20) == 's'))
  41658. - ) { /* Assumes ascii for 's' and 'S' test. */
  41659. - psfs->flags |= FLAG_MALLOC;
  41660. + if (*p == 'm' &&
  41661. + (psfs->fmt[1] == '[' || psfs->fmt[1] == 'c' ||
  41662. + /* Assumes ascii for 's' and 'S' test. */
  41663. + (psfs->fmt[1] | 0x20) == 's'))
  41664. + {
  41665. + if (psfs->store)
  41666. + psfs->flags |= FLAG_MALLOC;
  41667. ++psfs->fmt;
  41668. ++p;
  41669. - continue; /* The related conversions follow 'a'. */
  41670. + continue; /* The related conversions follow 'm'. */
  41671. }
  41672. -#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
  41673. for (p = spec_ranges; p_m_spec_chars > *p ; ++p) {}
  41674. if (((psfs->dataargtype >> 8) | psfs->flags)
  41675. @@ -928,7 +918,7 @@
  41676. psfs->dataargtype = PA_FLAG_LONG;
  41677. } else if ((p_m_spec_chars >= CONV_c)
  41678. && (psfs->dataargtype & PA_FLAG_LONG)) {
  41679. - p_m_spec_chars -= 3; /* lc -> C, ls -> S, l[ -> ?? */
  41680. + p_m_spec_chars -= CONV_c - CONV_C; /* lc -> C, ls -> S, l[ -> ?? */
  41681. }
  41682. psfs->conv_num = p_m_spec_chars;
  41683. @@ -1265,12 +1255,6 @@
  41684. while (*wf && __isascii(*wf) && (b < buf + sizeof(buf) - 1)) {
  41685. *b++ = *wf++;
  41686. }
  41687. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  41688. -#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.
  41689. - if ((*b == 'a') && ((*wf == '[') || ((*wf|0x20) == 's'))) {
  41690. - goto DONE; /* Spec was excessively long. */
  41691. - }
  41692. -#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
  41693. *b = 0;
  41694. if (b == buf) { /* Bad conversion specifier! */
  41695. goto DONE;
  41696. @@ -1390,13 +1374,36 @@
  41697. }
  41698. if (psfs.conv_num == CONV_s) {
  41699. + /* We might have to handle the allocation ourselves */
  41700. + int len;
  41701. + /* With 'm', we actually got a pointer to a pointer */
  41702. + unsigned char **ptr = (void *)b;
  41703. +
  41704. + i = 0;
  41705. + if (psfs.flags & FLAG_MALLOC) {
  41706. + len = 0;
  41707. + b = NULL;
  41708. + } else
  41709. + len = -1;
  41710. +
  41711. /* Yes, believe it or not, a %s conversion can store nuls. */
  41712. while ((__scan_getc(&sc) >= 0) && !isspace(sc.cc)) {
  41713. zero_conversions = 0;
  41714. - *b = sc.cc;
  41715. - b += psfs.store;
  41716. + if (i == len) {
  41717. + /* Pick a size that won't trigger a lot of
  41718. + * mallocs early on ... */
  41719. + len += 256;
  41720. + b = realloc(b, len + 1);
  41721. + }
  41722. + b[i] = sc.cc;
  41723. + i += psfs.store;
  41724. fail = 0;
  41725. }
  41726. +
  41727. + if (psfs.flags & FLAG_MALLOC)
  41728. + *ptr = b;
  41729. + /* The code below takes care of terminating NUL */
  41730. + b += i;
  41731. } else {
  41732. #ifdef __UCLIBC_HAS_WCHAR__
  41733. assert((psfs.conv_num == CONV_LEFTBRACKET) || \
  41734. diff -Nur uClibc-0.9.33.2/libc/stdio/_stdio.c uClibc/libc/stdio/_stdio.c
  41735. --- uClibc-0.9.33.2/libc/stdio/_stdio.c 2012-05-15 09:20:09.000000000 +0200
  41736. +++ uClibc/libc/stdio/_stdio.c 2014-02-03 12:32:56.000000000 +0100
  41737. @@ -7,7 +7,6 @@
  41738. #include "_stdio.h"
  41739. -
  41740. /* This is pretty much straight from uClibc, but with one important
  41741. * difference.
  41742. *
  41743. @@ -185,7 +184,7 @@
  41744. /**********************************************************************/
  41745. /* We assume here that we are the only remaining thread. */
  41746. -void attribute_hidden _stdio_term(void)
  41747. +void _stdio_term(void)
  41748. {
  41749. #if defined(__STDIO_BUFFERS) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41750. register FILE *ptr;
  41751. @@ -252,7 +251,7 @@
  41752. }
  41753. #if defined __STDIO_BUFFERS || !defined __UCLIBC__
  41754. -void attribute_hidden _stdio_init(void)
  41755. +void _stdio_init(void)
  41756. {
  41757. #ifdef __STDIO_BUFFERS
  41758. int old_errno = errno;
  41759. @@ -277,10 +276,6 @@
  41760. #error Assumption violated about __MASK_READING and __FLAG_UNGOT
  41761. #endif
  41762. -#ifdef __UCLIBC_HAS_THREADS__
  41763. -#include <pthread.h>
  41764. -#endif
  41765. -
  41766. #ifndef NDEBUG
  41767. void attribute_hidden _stdio_validate_FILE(const FILE *stream)
  41768. diff -Nur uClibc-0.9.33.2/libc/stdio/_stdio.h uClibc/libc/stdio/_stdio.h
  41769. --- uClibc-0.9.33.2/libc/stdio/_stdio.h 2012-05-15 09:20:09.000000000 +0200
  41770. +++ uClibc/libc/stdio/_stdio.h 2014-02-03 12:32:56.000000000 +0100
  41771. @@ -39,6 +39,9 @@
  41772. #ifdef __UCLIBC_HAS_THREADS__
  41773. +extern void __stdio_init_mutex(__UCLIBC_MUTEX_TYPE *m) attribute_hidden;
  41774. +
  41775. +extern volatile int _stdio_openlist_use_count attribute_hidden; /* _stdio_openlist_del_lock */
  41776. #define __STDIO_OPENLIST_INC_USE \
  41777. do { \
  41778. __STDIO_THREADLOCK_OPENLIST_DEL; \
  41779. @@ -51,6 +54,7 @@
  41780. #define __STDIO_OPENLIST_DEC_USE \
  41781. _stdio_openlist_dec_use()
  41782. +extern int _stdio_openlist_del_count attribute_hidden; /* _stdio_openlist_del_lock */
  41783. #define __STDIO_OPENLIST_INC_DEL_CNT \
  41784. do { \
  41785. __STDIO_THREADLOCK_OPENLIST_DEL; \
  41786. @@ -308,6 +312,9 @@
  41787. extern int __stdio_trans2r_o(FILE *__restrict stream, int oflag) attribute_hidden;
  41788. extern int __stdio_trans2w_o(FILE *__restrict stream, int oflag) attribute_hidden;
  41789. +extern uintmax_t _load_inttype(int desttype, register const void *src, int uflag) attribute_hidden;
  41790. +extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  41791. +
  41792. /**********************************************************************/
  41793. #ifdef __STDIO_BUFFERS
  41794. diff -Nur uClibc-0.9.33.2/libc/stdio/_store_inttype.c uClibc/libc/stdio/_store_inttype.c
  41795. --- uClibc-0.9.33.2/libc/stdio/_store_inttype.c 2012-05-15 09:20:09.000000000 +0200
  41796. +++ uClibc/libc/stdio/_store_inttype.c 2014-02-03 12:32:56.000000000 +0100
  41797. @@ -28,7 +28,6 @@
  41798. /* We assume int may be short or long, but short and long are different. */
  41799. -void _store_inttype(register void *dest, int desttype, uintmax_t val) attribute_hidden;
  41800. void _store_inttype(register void *dest, int desttype, uintmax_t val)
  41801. {
  41802. if (desttype == __PA_FLAG_CHAR) { /* assume char not int */
  41803. diff -Nur uClibc-0.9.33.2/libc/stdio/tempnam.c uClibc/libc/stdio/tempnam.c
  41804. --- uClibc-0.9.33.2/libc/stdio/tempnam.c 2012-05-15 09:20:09.000000000 +0200
  41805. +++ uClibc/libc/stdio/tempnam.c 2014-02-03 12:32:56.000000000 +0100
  41806. @@ -13,8 +13,7 @@
  41807. You should have received a copy of the GNU Library General Public
  41808. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41809. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41810. - Boston, MA 02111-1307, USA. */
  41811. + see <http://www.gnu.org/licenses/>. */
  41812. #include <stdio.h>
  41813. #include <string.h>
  41814. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpfile.c uClibc/libc/stdio/tmpfile.c
  41815. --- uClibc-0.9.33.2/libc/stdio/tmpfile.c 2012-05-15 09:20:09.000000000 +0200
  41816. +++ uClibc/libc/stdio/tmpfile.c 2014-02-03 12:32:56.000000000 +0100
  41817. @@ -13,8 +13,7 @@
  41818. You should have received a copy of the GNU Library General Public
  41819. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41820. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41821. - Boston, MA 02111-1307, USA. */
  41822. + see <http://www.gnu.org/licenses/>. */
  41823. #include <features.h>
  41824. #include <stdio.h>
  41825. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpnam.c uClibc/libc/stdio/tmpnam.c
  41826. --- uClibc-0.9.33.2/libc/stdio/tmpnam.c 2012-05-15 09:20:09.000000000 +0200
  41827. +++ uClibc/libc/stdio/tmpnam.c 2014-02-03 12:32:56.000000000 +0100
  41828. @@ -12,9 +12,8 @@
  41829. Lesser General Public License for more details.
  41830. You should have received a copy of the GNU Lesser General Public
  41831. - License along with the GNU C Library; if not, write to the Free
  41832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41833. - 02111-1307 USA. */
  41834. + License along with the GNU C Library; if not, see
  41835. + <http://www.gnu.org/licenses/>. */
  41836. #include <stdio.h>
  41837. #include <string.h>
  41838. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpnam_r.c uClibc/libc/stdio/tmpnam_r.c
  41839. --- uClibc-0.9.33.2/libc/stdio/tmpnam_r.c 2012-05-15 09:20:09.000000000 +0200
  41840. +++ uClibc/libc/stdio/tmpnam_r.c 2014-02-03 12:32:56.000000000 +0100
  41841. @@ -13,8 +13,7 @@
  41842. You should have received a copy of the GNU Library General Public
  41843. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41844. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41845. - Boston, MA 02111-1307, USA. */
  41846. + see <http://www.gnu.org/licenses/>. */
  41847. #include <stdio.h>
  41848. #include "../misc/internals/tempname.h"
  41849. diff -Nur uClibc-0.9.33.2/libc/stdio/_uintmaxtostr.c uClibc/libc/stdio/_uintmaxtostr.c
  41850. --- uClibc-0.9.33.2/libc/stdio/_uintmaxtostr.c 2012-05-15 09:20:09.000000000 +0200
  41851. +++ uClibc/libc/stdio/_uintmaxtostr.c 2014-02-03 12:32:56.000000000 +0100
  41852. @@ -5,7 +5,6 @@
  41853. * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  41854. */
  41855. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  41856. #include "_stdio.h"
  41857. #include <limits.h>
  41858. #include <locale.h>
  41859. diff -Nur uClibc-0.9.33.2/libc/stdio/_vfprintf.c uClibc/libc/stdio/_vfprintf.c
  41860. --- uClibc-0.9.33.2/libc/stdio/_vfprintf.c 2012-05-15 09:20:09.000000000 +0200
  41861. +++ uClibc/libc/stdio/_vfprintf.c 2014-02-03 12:32:56.000000000 +0100
  41862. @@ -12,8 +12,8 @@
  41863. * Library General Public License for more details.
  41864. *
  41865. * You should have received a copy of the GNU Library General Public
  41866. - * License along with this library; if not, write to the Free
  41867. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  41868. + * License along with this library; if not, see
  41869. + * <http://www.gnu.org/licenses/>.
  41870. */
  41871. /* This code needs a lot of clean up. Some of that is on hold until uClibc
  41872. @@ -88,7 +88,6 @@
  41873. * treats this as an error.
  41874. */
  41875. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  41876. #include <features.h>
  41877. #include "_stdio.h"
  41878. #include <stdlib.h>
  41879. @@ -101,7 +100,6 @@
  41880. #include <stdint.h>
  41881. #include <errno.h>
  41882. #include <locale.h>
  41883. -#include <printf.h>
  41884. #ifdef __UCLIBC_HAS_THREADS__
  41885. # include <stdio_ext.h>
  41886. @@ -126,30 +124,16 @@
  41887. /**********************************************************************/
  41888. /* These provide some control over printf's feature set */
  41889. -/* This is undefined below depeding on uClibc's configuration. */
  41890. -#define __STDIO_PRINTF_FLOAT 1
  41891. +/* Now controlled by uClibc_config.h. */
  41892. +/* #define __UCLIBC_HAS_FLOATS__ 1 */
  41893. -/* Now controlled by uClibc_stdio.h. */
  41894. +/* Now controlled by uClibc_config.h. */
  41895. /* #define __UCLIBC_HAS_PRINTF_M_SPEC__ */
  41896. /**********************************************************************/
  41897. -#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_FLOATS__)
  41898. -# undef __STDIO_PRINTF_FLOAT
  41899. -#endif
  41900. -
  41901. -#ifdef __BCC__
  41902. -# undef __STDIO_PRINTF_FLOAT
  41903. -#endif
  41904. -
  41905. -#ifdef __STDIO_PRINTF_FLOAT
  41906. -# include <float.h>
  41907. -# include <bits/uClibc_fpmax.h>
  41908. -#else
  41909. -# undef L__fpmaxtostr
  41910. -#endif
  41911. -
  41912. +#include "_fpmaxtostr.h"
  41913. #undef __STDIO_HAS_VSNPRINTF
  41914. #if defined(__STDIO_BUFFERS) || defined(__USE_OLD_VFPRINTF__) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41915. @@ -158,7 +142,7 @@
  41916. /**********************************************************************/
  41917. -/* Now controlled by uClibc_stdio.h. */
  41918. +/* Now controlled by uClibc_config.h. */
  41919. /* #define __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */
  41920. #ifdef __UCLIBC_MJN3_ONLY__
  41921. @@ -361,7 +345,7 @@
  41922. # ifdef ULLONG_MAX
  41923. unsigned long long ull;
  41924. # endif
  41925. -# ifdef __STDIO_PRINTF_FLOAT
  41926. +# ifdef __UCLIBC_HAS_FLOATS__
  41927. double d;
  41928. long double ld;
  41929. # endif
  41930. @@ -398,22 +382,11 @@
  41931. /* TODO: fix printf to return 0 and set errno if format error. Standard says
  41932. only returns -1 if sets error indicator for the stream. */
  41933. -#ifdef __STDIO_PRINTF_FLOAT
  41934. -typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  41935. - intptr_t buf);
  41936. -
  41937. -extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41938. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  41939. -#endif
  41940. -
  41941. extern int _ppfs_init(ppfs_t *ppfs, const char *fmt0) attribute_hidden; /* validates */
  41942. extern void _ppfs_prepargs(ppfs_t *ppfs, va_list arg) attribute_hidden; /* sets posargptrs */
  41943. extern void _ppfs_setargs(ppfs_t *ppfs) attribute_hidden; /* sets argptrs for current spec */
  41944. extern int _ppfs_parsespec(ppfs_t *ppfs) attribute_hidden; /* parses specifier */
  41945. -extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  41946. -extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
  41947. -
  41948. /**********************************************************************/
  41949. #ifdef L_parse_printf_format
  41950. @@ -564,7 +537,7 @@
  41951. ppfs->fmtpos = fmt0; /* rewind */
  41952. }
  41953. -#ifdef NL_MAX_ARG
  41954. +#ifdef NL_ARGMAX
  41955. /* If we have positional args, make sure we know all the types. */
  41956. {
  41957. register int *p = ppfs->argtype;
  41958. @@ -576,7 +549,7 @@
  41959. ++p;
  41960. }
  41961. }
  41962. -#endif /* NL_MAX_ARG */
  41963. +#endif /* NL_ARGMAX */
  41964. return 0;
  41965. }
  41966. @@ -653,7 +626,7 @@
  41967. /* we're assuming wchar_t is at least an int */
  41968. GET_VA_ARG(p,wc,wchar_t,ppfs->arg);
  41969. break;
  41970. -#ifdef __STDIO_PRINTF_FLOAT
  41971. +#ifdef __UCLIBC_HAS_FLOATS__
  41972. /* PA_FLOAT */
  41973. case PA_DOUBLE:
  41974. GET_VA_ARG(p,d,double,ppfs->arg);
  41975. @@ -661,12 +634,12 @@
  41976. case (PA_DOUBLE|PA_FLAG_LONG_DOUBLE):
  41977. GET_VA_ARG(p,ld,long double,ppfs->arg);
  41978. break;
  41979. -#else /* __STDIO_PRINTF_FLOAT */
  41980. +#else /* __UCLIBC_HAS_FLOATS__ */
  41981. case PA_DOUBLE:
  41982. case (PA_DOUBLE|PA_FLAG_LONG_DOUBLE):
  41983. assert(0);
  41984. continue;
  41985. -#endif /* __STDIO_PRINTF_FLOAT */
  41986. +#endif /* __UCLIBC_HAS_FLOATS__ */
  41987. default:
  41988. /* TODO -- really need to ensure this can't happen */
  41989. assert(ppfs->argtype[i-1] & PA_FLAG_PTR);
  41990. @@ -743,7 +716,7 @@
  41991. PA_INT|PA_FLAG_LONG,
  41992. PA_INT|PA_FLAG_LONG_LONG,
  41993. PA_WCHAR,
  41994. -#ifdef __STDIO_PRINTF_FLOAT
  41995. +#ifdef __UCLIBC_HAS_FLOATS__
  41996. /* PA_FLOAT, */
  41997. PA_DOUBLE,
  41998. PA_DOUBLE|PA_FLAG_LONG_DOUBLE,
  41999. @@ -766,7 +739,7 @@
  42000. PROMOTED_SIZE_OF(long), /* TODO -- is this correct? (above too) */
  42001. #endif
  42002. PROMOTED_SIZE_OF(wchar_t),
  42003. -#ifdef __STDIO_PRINTF_FLOAT
  42004. +#ifdef __UCLIBC_HAS_FLOATS__
  42005. /* PROMOTED_SIZE_OF(float), */
  42006. PROMOTED_SIZE_OF(double),
  42007. PROMOTED_SIZE_OF(long double),
  42008. @@ -1199,7 +1172,7 @@
  42009. #define _outnstr(stream, string, len) ((len > 0) ? __stdio_fwrite((const unsigned char *)(string), len, stream) : 0)
  42010. #define FP_OUT _fp_out_narrow
  42011. -#ifdef __STDIO_PRINTF_FLOAT
  42012. +#ifdef __UCLIBC_HAS_FLOATS__
  42013. static size_t _fp_out_narrow(FILE *fp, intptr_t type, intptr_t len, intptr_t buf)
  42014. {
  42015. @@ -1219,7 +1192,7 @@
  42016. return r + OUTNSTR(fp, (const char *) buf, len);
  42017. }
  42018. -#endif /* __STDIO_PRINTF_FLOAT */
  42019. +#endif /* __UCLIBC_HAS_FLOATS__ */
  42020. #else /* L__vfprintf_internal */
  42021. @@ -1229,7 +1202,7 @@
  42022. #define STRLEN wcslen
  42023. #define _PPFS_init _ppwfs_init
  42024. /* Pulls in fseek: */
  42025. -#define OUTPUT(F,S) fputws(S,F)
  42026. +#define OUTPUT(F,S) fputws_unlocked(S,F)
  42027. /* TODO: #define OUTPUT(F,S) _wstdio_fwrite((S),wcslen(S),(F)) */
  42028. #define _outnwcs(stream, wstring, len) _wstdio_fwrite((const wchar_t *)(wstring), len, stream)
  42029. #define FP_OUT _fp_out_wide
  42030. @@ -1261,16 +1234,7 @@
  42031. return wclen - todo;
  42032. }
  42033. -#ifdef __STDIO_PRINTF_FLOAT
  42034. -
  42035. -#ifdef __UCLIBC_MJN3_ONLY__
  42036. -#warning TODO: Move defines from _fpmaxtostr. Put them in a common header.
  42037. -#endif
  42038. -
  42039. -/* The following defines are from _fpmaxtostr.*/
  42040. -#define DIGITS_PER_BLOCK 9
  42041. -#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  42042. -#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  42043. +#ifdef __UCLIBC_HAS_FLOATS__
  42044. static size_t _fp_out_wide(FILE *fp, intptr_t type, intptr_t len, intptr_t buf)
  42045. {
  42046. @@ -1318,7 +1282,7 @@
  42047. return r;
  42048. }
  42049. -#endif /* __STDIO_PRINTF_FLOAT */
  42050. +#endif /* __UCLIBC_HAS_FLOATS__ */
  42051. static int _ppwfs_init(register ppfs_t *ppfs, const wchar_t *fmt0)
  42052. {
  42053. @@ -1608,7 +1572,7 @@
  42054. }
  42055. numfill = ((numfill > SLEN) ? numfill - SLEN : 0);
  42056. } else if (ppfs->conv_num <= CONV_A) { /* floating point */
  42057. -#ifdef __STDIO_PRINTF_FLOAT
  42058. +#ifdef __UCLIBC_HAS_FLOATS__
  42059. ssize_t nf;
  42060. nf = _fpmaxtostr(stream,
  42061. (__fpmax_t)
  42062. @@ -1622,7 +1586,7 @@
  42063. *count += nf;
  42064. return 0;
  42065. -#else /* __STDIO_PRINTF_FLOAT */
  42066. +#else /* __UCLIBC_HAS_FLOATS__ */
  42067. return -1; /* TODO -- try to continue? */
  42068. #endif
  42069. } else if (ppfs->conv_num <= CONV_S) { /* wide char or string */
  42070. diff -Nur uClibc-0.9.33.2/libc/stdlib/a64l.c uClibc/libc/stdlib/a64l.c
  42071. --- uClibc-0.9.33.2/libc/stdlib/a64l.c 2012-05-15 09:20:09.000000000 +0200
  42072. +++ uClibc/libc/stdlib/a64l.c 2014-02-03 12:32:56.000000000 +0100
  42073. @@ -13,9 +13,8 @@
  42074. Lesser General Public License for more details.
  42075. You should have received a copy of the GNU Lesser General Public
  42076. - License along with the GNU C Library; if not, write to the Free
  42077. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42078. - 02111-1307 USA. */
  42079. + License along with the GNU C Library; if not, see
  42080. + <http://www.gnu.org/licenses/>. */
  42081. #include <stdlib.h>
  42082. diff -Nur uClibc-0.9.33.2/libc/stdlib/abort.c uClibc/libc/stdlib/abort.c
  42083. --- uClibc-0.9.33.2/libc/stdlib/abort.c 2012-05-15 09:20:09.000000000 +0200
  42084. +++ uClibc/libc/stdlib/abort.c 2014-02-03 12:32:56.000000000 +0100
  42085. @@ -13,8 +13,7 @@
  42086. You should have received a copy of the GNU Library General Public
  42087. License along with the GNU C Library; see the file COPYING.LIB. If
  42088. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  42089. -Cambridge, MA 02139, USA. */
  42090. +not, see <http://www.gnu.org/licenses/>. */
  42091. /* Hacked up for uClibc by Erik Andersen */
  42092. @@ -47,9 +46,6 @@
  42093. # warning "no abort instruction defined for your arch"
  42094. #endif
  42095. -#ifdef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
  42096. -extern void weak_function _stdio_term(void) attribute_hidden;
  42097. -#endif
  42098. static smallint been_there_done_that = 0;
  42099. /* Be prepared in case multiple threads try to abort() */
  42100. diff -Nur uClibc-0.9.33.2/libc/stdlib/arc4random.c uClibc/libc/stdlib/arc4random.c
  42101. --- uClibc-0.9.33.2/libc/stdlib/arc4random.c 2012-05-15 09:20:09.000000000 +0200
  42102. +++ uClibc/libc/stdlib/arc4random.c 2014-02-03 12:32:56.000000000 +0100
  42103. @@ -1,24 +1,29 @@
  42104. -/* $$$: arc4random.c 2005/02/08 robert */
  42105. -/* $NetBSD: arc4random.c,v 1.5.2.1 2004/03/26 22:52:50 jmc Exp $ */
  42106. -/* $OpenBSD: arc4random.c,v 1.6 2001/06/05 05:05:38 pvalchev Exp $ */
  42107. -
  42108. /*
  42109. - * Arc4 random number generator for OpenBSD.
  42110. - * Copyright 1996 David Mazieres <dm@lcs.mit.edu>.
  42111. + * Copyright (c) 1996, David Mazieres <dm@uun.org>
  42112. *
  42113. - * Modification and redistribution in source and binary forms is
  42114. - * permitted provided that due credit is given to the author and the
  42115. - * OpenBSD project by leaving this copyright notice intact.
  42116. + * Permission to use, copy, modify, and distribute this software for any
  42117. + * purpose with or without fee is hereby granted, provided that the above
  42118. + * copyright notice and this permission notice appear in all copies.
  42119. + *
  42120. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  42121. + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  42122. + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  42123. + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  42124. + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  42125. + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  42126. + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  42127. */
  42128. /*
  42129. + * Arc4 random number generator for OpenBSD.
  42130. + *
  42131. * This code is derived from section 17.1 of Applied Cryptography,
  42132. * second edition, which describes a stream cipher allegedly
  42133. * compatible with RSA Labs "RC4" cipher (the actual description of
  42134. * which is a trade secret). The same algorithm is used as a stream
  42135. * cipher called "arcfour" in Tatu Ylonen's ssh package.
  42136. *
  42137. - * Here the stream cipher has been modified always to include the time
  42138. + * Here the stream cipher has been modified always to include entropy
  42139. * when initializing the state. That makes it impossible to
  42140. * regenerate the same random sequence twice, so this can't be used
  42141. * for encryption, but will generate good random numbers.
  42142. @@ -26,32 +31,26 @@
  42143. * RC4 is a registered trademark of RSA Laboratories.
  42144. */
  42145. +/* $OpenBSD: arc4random.c,v 1.16 2007/02/12 19:58:47 otto Exp $ */
  42146. +
  42147. #include <features.h>
  42148. +
  42149. #include <fcntl.h>
  42150. #include <stdlib.h>
  42151. #include <unistd.h>
  42152. #include <sys/types.h>
  42153. -#include <sys/param.h>
  42154. #include <sys/time.h>
  42155. -#ifdef __ARC4RANDOM_USE_ERANDOM__
  42156. -#include <sys/sysctl.h>
  42157. -#endif
  42158. -
  42159. struct arc4_stream {
  42160. - uint8_t i;
  42161. - uint8_t j;
  42162. - uint8_t s[256];
  42163. + u_int8_t i;
  42164. + u_int8_t j;
  42165. + u_int8_t s[256];
  42166. };
  42167. -static int rs_initialized;
  42168. +static smallint rs_initialized;
  42169. static struct arc4_stream rs;
  42170. -
  42171. -static __inline__ void arc4_init(struct arc4_stream *);
  42172. -static __inline__ void arc4_addrandom(struct arc4_stream *, u_char *, int);
  42173. -static void arc4_stir(struct arc4_stream *);
  42174. -static __inline__ uint8_t arc4_getbyte(struct arc4_stream *);
  42175. -static __inline__ uint32_t arc4_getword(struct arc4_stream *);
  42176. +static pid_t arc4_stir_pid;
  42177. +static int arc4_count;
  42178. static __inline__ void
  42179. arc4_init(struct arc4_stream *as)
  42180. @@ -64,11 +63,25 @@
  42181. as->j = 0;
  42182. }
  42183. +static __inline__ u_int8_t
  42184. +arc4_getbyte(struct arc4_stream *as)
  42185. +{
  42186. + u_int8_t si, sj;
  42187. +
  42188. + as->i = (as->i + 1);
  42189. + si = as->s[as->i];
  42190. + as->j = (as->j + si);
  42191. + sj = as->s[as->j];
  42192. + as->s[as->i] = sj;
  42193. + as->s[as->j] = si;
  42194. + return (as->s[(si + sj) & 0xff]);
  42195. +}
  42196. +
  42197. static __inline__ void
  42198. arc4_addrandom(struct arc4_stream *as, u_char *dat, int datlen)
  42199. {
  42200. int n;
  42201. - uint8_t si;
  42202. + u_int8_t si;
  42203. as->i--;
  42204. for (n = 0; n < 256; n++) {
  42205. @@ -84,71 +97,88 @@
  42206. static void
  42207. arc4_stir(struct arc4_stream *as)
  42208. {
  42209. - int fd;
  42210. - struct {
  42211. - struct timeval tv;
  42212. - uint rnd[(128 - sizeof(struct timeval)) / sizeof(uint)];
  42213. - } rdat;
  42214. int n;
  42215. + u_char rnd[128];
  42216. + struct timeval tv;
  42217. +
  42218. +#ifndef __ARC4RANDOM_USES_NODEV__
  42219. + int fd;
  42220. - gettimeofday(&rdat.tv, NULL);
  42221. fd = open("/dev/urandom", O_RDONLY);
  42222. if (fd != -1) {
  42223. - read(fd, rdat.rnd, sizeof(rdat.rnd));
  42224. + read(fd, rnd, sizeof(rnd));
  42225. close(fd);
  42226. }
  42227. -#ifdef __ARC4RANDOM_USE_ERANDOM__
  42228. + /* Did the pseudo-random device fail? Use gettimeofday(). */
  42229. + else
  42230. +#endif
  42231. + if (gettimeofday(&tv, NULL) != (-1)) {
  42232. +
  42233. + /* Initialize the first element so it's hopefully not '0',
  42234. + * to help out the next loop. Tossing in some prime numbers
  42235. + * probably can't hurt. */
  42236. + rnd[0] = (tv.tv_sec % 10000) * 3 + tv.tv_usec * 7 + \
  42237. + (getpid() % 1000) * 13;
  42238. +
  42239. + for (n = 1; n < 127 ; n++) {
  42240. +
  42241. + /* Take advantage of the stack space. Only initialize
  42242. + * elements equal to '0'. This will make the rnd[]
  42243. + * array much less vulnerable to timing attacks. Here
  42244. + * we'll stir getpid() into the value of the previous
  42245. + * element. Approximately 1 in 128 elements will still
  42246. + * become '0'. */
  42247. +
  42248. + if (rnd[n] == 0) {
  42249. + rnd[n] = ((rnd[n - 1] + n) ^ \
  42250. + ((getpid() % 1000) * 17));
  42251. + }
  42252. + }
  42253. + }
  42254. else {
  42255. - int mib[3];
  42256. - uint i;
  42257. - size_t len;
  42258. -
  42259. - /* Device could not be opened, we might be chrooted, take
  42260. - * randomness from sysctl. */
  42261. -
  42262. - mib[0] = CTL_KERN;
  42263. - mib[1] = KERN_RANDOM;
  42264. - mib[2] = RANDOM_ERANDOM;
  42265. -
  42266. - for (i = 0; i < sizeof(rdat.rnd) / sizeof(uint); i++) {
  42267. - len = sizeof(uint);
  42268. - if (sysctl(mib, 3, &rdat.rnd[i], &len, NULL, 0) == -1)
  42269. - break;
  42270. + /* gettimeofday() failed? Do the same thing as above, but only
  42271. + * with getpid(). */
  42272. +
  42273. + rnd[0] = (getpid() % 1000) * 19;
  42274. + for (n = 1; n < 127 ; n++) {
  42275. + if (rnd[n] == 0) {
  42276. + rnd[n] = ((rnd[n - 1] + n) ^ \
  42277. + ((getpid() % 1000) * 23));
  42278. + }
  42279. }
  42280. }
  42281. -#endif
  42282. - arc4_addrandom(as, (void *) &rdat, sizeof(rdat));
  42283. + arc4_stir_pid = getpid();
  42284. + arc4_addrandom(as, rnd, sizeof(rnd));
  42285. /*
  42286. - * Throw away the first N words of output, as suggested in the
  42287. - * paper "Weaknesses in the Key Scheduling Algorithm of RC4"
  42288. - * by Fluher, Mantin, and Shamir.
  42289. + * Discard early keystream, as per recommendations in:
  42290. * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps
  42291. - * N = 256 in our case.
  42292. */
  42293. - for (n = 0; n < 256 * 4; n++)
  42294. - arc4_getbyte(as);
  42295. + for (n = 0; n < 256; n++)
  42296. + (void)arc4_getbyte(as);
  42297. + arc4_count = 1600000;
  42298. }
  42299. -static __inline__ uint8_t
  42300. -arc4_getbyte(struct arc4_stream *as)
  42301. +#if 0
  42302. +static void __arc4random_stir(void);
  42303. +/*
  42304. + * __arc4_getbyte() is a libc private function intended for use
  42305. + * with malloc.
  42306. + */
  42307. +u_int8_t
  42308. +__arc4_getbyte(void)
  42309. {
  42310. - uint8_t si, sj;
  42311. -
  42312. - as->i = (as->i + 1);
  42313. - si = as->s[as->i];
  42314. - as->j = (as->j + si);
  42315. - sj = as->s[as->j];
  42316. - as->s[as->i] = sj;
  42317. - as->s[as->j] = si;
  42318. - return (as->s[(si + sj) & 0xff]);
  42319. + if (--arc4_count == 0 || !rs_initialized)
  42320. + __arc4random_stir();
  42321. + return arc4_getbyte(&rs);
  42322. }
  42323. +#endif
  42324. -static __inline__ uint32_t
  42325. +static __inline__ u_int32_t
  42326. arc4_getword(struct arc4_stream *as)
  42327. {
  42328. - uint32_t val;
  42329. + u_int32_t val;
  42330. val = arc4_getbyte(as) << 24;
  42331. val |= arc4_getbyte(as) << 16;
  42332. val |= arc4_getbyte(as) << 8;
  42333. @@ -175,23 +205,11 @@
  42334. arc4_addrandom(&rs, dat, datlen);
  42335. }
  42336. -uint32_t
  42337. +u_int32_t
  42338. arc4random(void)
  42339. {
  42340. - if (!rs_initialized)
  42341. + arc4_count -= 4;
  42342. + if (arc4_count <= 0 || !rs_initialized || arc4_stir_pid != getpid())
  42343. __arc4random_stir();
  42344. return arc4_getword(&rs);
  42345. }
  42346. -
  42347. -#if 0
  42348. -/*-------- Test code --------*/
  42349. -#include <stdlib.h>
  42350. -#include <stdio.h>
  42351. -
  42352. -int main(void) {
  42353. - int random_number;
  42354. - random_number = arc4random() % 65536;
  42355. - printf("%d\n", random_number);
  42356. - return 0;
  42357. -}
  42358. -#endif
  42359. diff -Nur uClibc-0.9.33.2/libc/stdlib/_atexit.c uClibc/libc/stdlib/_atexit.c
  42360. --- uClibc-0.9.33.2/libc/stdlib/_atexit.c 2012-05-15 09:20:09.000000000 +0200
  42361. +++ uClibc/libc/stdlib/_atexit.c 2014-02-03 12:32:56.000000000 +0100
  42362. @@ -40,11 +40,12 @@
  42363. #include <features.h>
  42364. #include <unistd.h>
  42365. #include <stdlib.h>
  42366. +#include <stdio.h>
  42367. #include <errno.h>
  42368. #include <atomic.h>
  42369. #include <bits/uClibc_mutex.h>
  42370. -__UCLIBC_MUTEX_EXTERN(__atexit_lock);
  42371. +__UCLIBC_MUTEX_EXTERN(__atexit_lock) attribute_hidden;
  42372. @@ -240,6 +241,16 @@
  42373. __UCLIBC_MUTEX_LOCK(__atexit_lock);
  42374. + /*
  42375. + * Reuse free slots at the end of the list.
  42376. + * This avoids eating memory when dlopen and dlclose modules multiple times.
  42377. + */
  42378. + while (__exit_count > 0) {
  42379. + if (__exit_function_table[__exit_count-1].type == ef_free) {
  42380. + --__exit_count;
  42381. + } else break;
  42382. + }
  42383. +
  42384. #ifdef __UCLIBC_DYNAMIC_ATEXIT__
  42385. /* If we are out of function table slots, make some more */
  42386. if (__exit_slots < __exit_count+1) {
  42387. @@ -318,8 +329,7 @@
  42388. attribute_hidden void (*__exit_cleanup)(int) = 0;
  42389. __UCLIBC_MUTEX_INIT(__atexit_lock, PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP);
  42390. -extern void __uClibc_fini(void);
  42391. -libc_hidden_proto(__uClibc_fini)
  42392. +extern void __uClibc_fini(void) attribute_hidden;
  42393. /*
  42394. * Normal program termination
  42395. diff -Nur uClibc-0.9.33.2/libc/stdlib/bsd_getpt.c uClibc/libc/stdlib/bsd_getpt.c
  42396. --- uClibc-0.9.33.2/libc/stdlib/bsd_getpt.c 2012-05-15 09:20:09.000000000 +0200
  42397. +++ uClibc/libc/stdlib/bsd_getpt.c 2014-02-03 12:32:56.000000000 +0100
  42398. @@ -13,9 +13,8 @@
  42399. Lesser General Public License for more details.
  42400. You should have received a copy of the GNU Lesser General Public
  42401. - License along with the GNU C Library; if not, write to the Free
  42402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42403. - 02111-1307 USA. */
  42404. + License along with the GNU C Library; if not, see
  42405. + <http://www.gnu.org/licenses/>. */
  42406. #include <errno.h>
  42407. #include <fcntl.h>
  42408. @@ -40,7 +39,7 @@
  42409. const char __libc_ptyname2[] attribute_hidden = PTYNAME2;
  42410. /* Open a master pseudo terminal and return its file descriptor. */
  42411. -int
  42412. +static __inline__ int
  42413. __getpt (void)
  42414. {
  42415. char buf[sizeof (_PATH_PTY) + 2];
  42416. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48.c uClibc/libc/stdlib/drand48.c
  42417. --- uClibc-0.9.33.2/libc/stdlib/drand48.c 2012-05-15 09:20:09.000000000 +0200
  42418. +++ uClibc/libc/stdlib/drand48.c 2014-02-03 12:32:56.000000000 +0100
  42419. @@ -13,9 +13,8 @@
  42420. Lesser General Public License for more details.
  42421. You should have received a copy of the GNU Lesser General Public
  42422. - License along with the GNU C Library; if not, write to the Free
  42423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42424. - 02111-1307 USA. */
  42425. + License along with the GNU C Library; if not, see
  42426. + <http://www.gnu.org/licenses/>. */
  42427. #include <stdlib.h>
  42428. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48-iter.c uClibc/libc/stdlib/drand48-iter.c
  42429. --- uClibc-0.9.33.2/libc/stdlib/drand48-iter.c 2012-05-15 09:20:09.000000000 +0200
  42430. +++ uClibc/libc/stdlib/drand48-iter.c 2014-02-03 12:32:56.000000000 +0100
  42431. @@ -13,9 +13,8 @@
  42432. Lesser General Public License for more details.
  42433. You should have received a copy of the GNU Lesser General Public
  42434. - License along with the GNU C Library; if not, write to the Free
  42435. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42436. - 02111-1307 USA. */
  42437. + License along with the GNU C Library; if not, see
  42438. + <http://www.gnu.org/licenses/>. */
  42439. #include <errno.h>
  42440. #include <stdlib.h>
  42441. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48_r.c uClibc/libc/stdlib/drand48_r.c
  42442. --- uClibc-0.9.33.2/libc/stdlib/drand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42443. +++ uClibc/libc/stdlib/drand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42444. @@ -13,9 +13,8 @@
  42445. Lesser General Public License for more details.
  42446. You should have received a copy of the GNU Lesser General Public
  42447. - License along with the GNU C Library; if not, write to the Free
  42448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42449. - 02111-1307 USA. */
  42450. + License along with the GNU C Library; if not, see
  42451. + <http://www.gnu.org/licenses/>. */
  42452. #include <errno.h>
  42453. #include <math.h>
  42454. diff -Nur uClibc-0.9.33.2/libc/stdlib/erand48.c uClibc/libc/stdlib/erand48.c
  42455. --- uClibc-0.9.33.2/libc/stdlib/erand48.c 2012-05-15 09:20:09.000000000 +0200
  42456. +++ uClibc/libc/stdlib/erand48.c 2014-02-03 12:32:56.000000000 +0100
  42457. @@ -13,9 +13,8 @@
  42458. Lesser General Public License for more details.
  42459. You should have received a copy of the GNU Lesser General Public
  42460. - License along with the GNU C Library; if not, write to the Free
  42461. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42462. - 02111-1307 USA. */
  42463. + License along with the GNU C Library; if not, see
  42464. + <http://www.gnu.org/licenses/>. */
  42465. #include <stdlib.h>
  42466. diff -Nur uClibc-0.9.33.2/libc/stdlib/erand48_r.c uClibc/libc/stdlib/erand48_r.c
  42467. --- uClibc-0.9.33.2/libc/stdlib/erand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42468. +++ uClibc/libc/stdlib/erand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42469. @@ -13,9 +13,8 @@
  42470. Lesser General Public License for more details.
  42471. You should have received a copy of the GNU Lesser General Public
  42472. - License along with the GNU C Library; if not, write to the Free
  42473. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42474. - 02111-1307 USA. */
  42475. + License along with the GNU C Library; if not, see
  42476. + <http://www.gnu.org/licenses/>. */
  42477. #include <ieee754.h>
  42478. #include <stdlib.h>
  42479. diff -Nur uClibc-0.9.33.2/libc/stdlib/getpt.c uClibc/libc/stdlib/getpt.c
  42480. --- uClibc-0.9.33.2/libc/stdlib/getpt.c 2012-05-15 09:20:09.000000000 +0200
  42481. +++ uClibc/libc/stdlib/getpt.c 2014-02-03 12:32:56.000000000 +0100
  42482. @@ -13,9 +13,8 @@
  42483. Lesser General Public License for more details.
  42484. You should have received a copy of the GNU Lesser General Public
  42485. - License along with the GNU C Library; if not, write to the Free
  42486. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42487. - 02111-1307 USA. */
  42488. + License along with the GNU C Library; if not, see
  42489. + <http://www.gnu.org/licenses/>. */
  42490. #include <errno.h>
  42491. #include <fcntl.h>
  42492. @@ -43,12 +42,12 @@
  42493. #if !defined __UNIX98PTY_ONLY__ && defined __UCLIBC_HAS_GETPT__
  42494. /* Prototype for function that opens BSD-style master pseudo-terminals. */
  42495. -extern int __bsd_getpt (void) attribute_hidden;
  42496. +static __inline__ int __bsd_getpt (void);
  42497. #endif
  42498. /* Open a master pseudo terminal and return its file descriptor. */
  42499. -int
  42500. -posix_openpt (int flags)
  42501. +static int
  42502. +__posix_openpt (int flags)
  42503. {
  42504. #define have_no_dev_ptmx (1<<0)
  42505. #define devpts_mounted (1<<1)
  42506. @@ -112,14 +111,14 @@
  42507. #endif
  42508. return -1;
  42509. }
  42510. -libc_hidden_def(posix_openpt)
  42511. +strong_alias(__posix_openpt,posix_openpt)
  42512. #undef have_no_dev_ptmx
  42513. #undef devpts_mounted
  42514. #if defined __USE_GNU && defined __UCLIBC_HAS_GETPT__
  42515. int getpt (void)
  42516. {
  42517. - return posix_openpt(O_RDWR);
  42518. + return __posix_openpt(O_RDWR);
  42519. }
  42520. #if !defined __UNIX98PTY_ONLY__ && defined __UCLIBC_HAS_GETPT__
  42521. diff -Nur uClibc-0.9.33.2/libc/stdlib/grantpt.c uClibc/libc/stdlib/grantpt.c
  42522. --- uClibc-0.9.33.2/libc/stdlib/grantpt.c 2012-05-15 09:20:09.000000000 +0200
  42523. +++ uClibc/libc/stdlib/grantpt.c 2014-02-03 12:32:56.000000000 +0100
  42524. @@ -13,8 +13,7 @@
  42525. You should have received a copy of the GNU Library General Public
  42526. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42527. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42528. - Boston, MA 02111-1307, USA. */
  42529. + see <http://www.gnu.org/licenses/>. */
  42530. #include <limits.h>
  42531. #include <stdlib.h>
  42532. @@ -33,25 +32,18 @@
  42533. /* Prototype for function that changes ownership and access permission
  42534. for slave pseudo terminals that do not live on a `devpts'
  42535. filesystem. */
  42536. -int __unix_grantpt (int fd);
  42537. +static int __unix_grantpt (int fd);
  42538. /* Prototype for private function that gets the name of the slave
  42539. pseudo terminal in a safe way. */
  42540. static int pts_name (int fd, char **pts, size_t buf_len);
  42541. extern __typeof(statfs) __libc_statfs;
  42542. -#endif
  42543. /* Change the ownership and access permission of the slave pseudo
  42544. terminal associated with the master pseudo terminal specified
  42545. by FD. */
  42546. -int
  42547. -#if !defined __ASSUME_DEVPTS__
  42548. -grantpt (int fd)
  42549. -#else
  42550. -grantpt (attribute_unused int fd)
  42551. -#endif
  42552. +int grantpt (int fd)
  42553. {
  42554. -#if !defined __ASSUME_DEVPTS__
  42555. struct statfs fsbuf;
  42556. char _buf[PATH_MAX];
  42557. char *buf = _buf;
  42558. @@ -65,12 +57,19 @@
  42559. /* If the slave pseudo terminal lives on a `devpts' filesystem, the
  42560. ownership and access permission are already set. */
  42561. if (fsbuf.f_type != DEVPTS_SUPER_MAGIC && fsbuf.f_type != DEVFS_SUPER_MAGIC)
  42562. - return __unix_grantpt (fd);
  42563. -#endif
  42564. + return __unix_grantpt (fd);
  42565. +
  42566. return 0;
  42567. }
  42568. -#if !defined __ASSUME_DEVPTS__
  42569. # define grantpt __unix_grantpt
  42570. # include "unix_grantpt.c"
  42571. +
  42572. +#else
  42573. +
  42574. +int grantpt (attribute_unused int fd)
  42575. +{
  42576. + return 0;
  42577. +}
  42578. +
  42579. #endif
  42580. diff -Nur uClibc-0.9.33.2/libc/stdlib/jrand48.c uClibc/libc/stdlib/jrand48.c
  42581. --- uClibc-0.9.33.2/libc/stdlib/jrand48.c 2012-05-15 09:20:09.000000000 +0200
  42582. +++ uClibc/libc/stdlib/jrand48.c 2014-02-03 12:32:56.000000000 +0100
  42583. @@ -13,9 +13,8 @@
  42584. Lesser General Public License for more details.
  42585. You should have received a copy of the GNU Lesser General Public
  42586. - License along with the GNU C Library; if not, write to the Free
  42587. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42588. - 02111-1307 USA. */
  42589. + License along with the GNU C Library; if not, see
  42590. + <http://www.gnu.org/licenses/>. */
  42591. #include <stdlib.h>
  42592. diff -Nur uClibc-0.9.33.2/libc/stdlib/jrand48_r.c uClibc/libc/stdlib/jrand48_r.c
  42593. --- uClibc-0.9.33.2/libc/stdlib/jrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42594. +++ uClibc/libc/stdlib/jrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42595. @@ -13,9 +13,8 @@
  42596. Lesser General Public License for more details.
  42597. You should have received a copy of the GNU Lesser General Public
  42598. - License along with the GNU C Library; if not, write to the Free
  42599. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42600. - 02111-1307 USA. */
  42601. + License along with the GNU C Library; if not, see
  42602. + <http://www.gnu.org/licenses/>. */
  42603. #include <stdlib.h>
  42604. diff -Nur uClibc-0.9.33.2/libc/stdlib/l64a.c uClibc/libc/stdlib/l64a.c
  42605. --- uClibc-0.9.33.2/libc/stdlib/l64a.c 2012-05-15 09:20:09.000000000 +0200
  42606. +++ uClibc/libc/stdlib/l64a.c 2014-02-03 12:32:56.000000000 +0100
  42607. @@ -13,9 +13,8 @@
  42608. Lesser General Public License for more details.
  42609. You should have received a copy of the GNU Lesser General Public
  42610. - License along with the GNU C Library; if not, write to the Free
  42611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42612. - 02111-1307 USA. */
  42613. + License along with the GNU C Library; if not, see
  42614. + <http://www.gnu.org/licenses/>. */
  42615. #include <stdlib.h>
  42616. diff -Nur uClibc-0.9.33.2/libc/stdlib/lcong48.c uClibc/libc/stdlib/lcong48.c
  42617. --- uClibc-0.9.33.2/libc/stdlib/lcong48.c 1970-01-01 01:00:00.000000000 +0100
  42618. +++ uClibc/libc/stdlib/lcong48.c 2014-02-03 12:32:56.000000000 +0100
  42619. @@ -0,0 +1,29 @@
  42620. +/* vi: set sw=4 ts=4: */
  42621. +/* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */
  42622. +
  42623. +#include <features.h>
  42624. +
  42625. +#if defined __USE_SVID || defined __USE_XOPEN
  42626. +#include <stdint.h>
  42627. +#include <stdlib.h>
  42628. +#include <string.h>
  42629. +
  42630. +static int __lcong48_r (unsigned short int param[7], struct drand48_data *buffer)
  42631. +{
  42632. + /* Store the given values. */
  42633. + memcpy (buffer->__x, &param[0], sizeof (buffer->__x));
  42634. + buffer->__a = ((uint64_t) param[5] << 32 | (uint32_t) param[4] << 16 | param[3]);
  42635. + buffer->__c = param[6];
  42636. + buffer->__init = 1;
  42637. +
  42638. + return 0;
  42639. +}
  42640. +# ifdef __USE_MISC
  42641. +strong_alias(__lcong48_r,lcong48_r)
  42642. +# endif
  42643. +
  42644. +void lcong48 (unsigned short int param[7])
  42645. +{
  42646. + (void) __lcong48_r (param, &__libc_drand48_data);
  42647. +}
  42648. +#endif
  42649. diff -Nur uClibc-0.9.33.2/libc/stdlib/ldiv.c uClibc/libc/stdlib/ldiv.c
  42650. --- uClibc-0.9.33.2/libc/stdlib/ldiv.c 2012-05-15 09:20:09.000000000 +0200
  42651. +++ uClibc/libc/stdlib/ldiv.c 2014-02-03 12:32:56.000000000 +0100
  42652. @@ -13,9 +13,8 @@
  42653. Lesser General Public License for more details.
  42654. You should have received a copy of the GNU Lesser General Public
  42655. - License along with the GNU C Library; if not, write to the Free
  42656. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42657. - 02111-1307 USA. */
  42658. + License along with the GNU C Library; if not, see
  42659. + <http://www.gnu.org/licenses/>. */
  42660. #include <features.h>
  42661. #include <stdlib.h>
  42662. diff -Nur uClibc-0.9.33.2/libc/stdlib/lldiv.c uClibc/libc/stdlib/lldiv.c
  42663. --- uClibc-0.9.33.2/libc/stdlib/lldiv.c 2012-05-15 09:20:09.000000000 +0200
  42664. +++ uClibc/libc/stdlib/lldiv.c 2014-02-03 12:32:56.000000000 +0100
  42665. @@ -13,9 +13,8 @@
  42666. Lesser General Public License for more details.
  42667. You should have received a copy of the GNU Lesser General Public
  42668. - License along with the GNU C Library; if not, write to the Free
  42669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42670. - 02111-1307 USA. */
  42671. + License along with the GNU C Library; if not, see
  42672. + <http://www.gnu.org/licenses/>. */
  42673. #include <features.h>
  42674. #include <stdlib.h>
  42675. diff -Nur uClibc-0.9.33.2/libc/stdlib/lrand48.c uClibc/libc/stdlib/lrand48.c
  42676. --- uClibc-0.9.33.2/libc/stdlib/lrand48.c 2012-05-15 09:20:09.000000000 +0200
  42677. +++ uClibc/libc/stdlib/lrand48.c 2014-02-03 12:32:56.000000000 +0100
  42678. @@ -13,9 +13,8 @@
  42679. Lesser General Public License for more details.
  42680. You should have received a copy of the GNU Lesser General Public
  42681. - License along with the GNU C Library; if not, write to the Free
  42682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42683. - 02111-1307 USA. */
  42684. + License along with the GNU C Library; if not, see
  42685. + <http://www.gnu.org/licenses/>. */
  42686. #include <stdlib.h>
  42687. diff -Nur uClibc-0.9.33.2/libc/stdlib/lrand48_r.c uClibc/libc/stdlib/lrand48_r.c
  42688. --- uClibc-0.9.33.2/libc/stdlib/lrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42689. +++ uClibc/libc/stdlib/lrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42690. @@ -13,9 +13,8 @@
  42691. Lesser General Public License for more details.
  42692. You should have received a copy of the GNU Lesser General Public
  42693. - License along with the GNU C Library; if not, write to the Free
  42694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42695. - 02111-1307 USA. */
  42696. + License along with the GNU C Library; if not, see
  42697. + <http://www.gnu.org/licenses/>. */
  42698. #include <stdlib.h>
  42699. diff -Nur uClibc-0.9.33.2/libc/stdlib/Makefile.in uClibc/libc/stdlib/Makefile.in
  42700. --- uClibc-0.9.33.2/libc/stdlib/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  42701. +++ uClibc/libc/stdlib/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  42702. @@ -12,16 +12,17 @@
  42703. include $(top_srcdir)libc/stdlib/malloc-standard/Makefile.in
  42704. CSRC-y := \
  42705. - abort.c getenv.c mkdtemp.c realpath.c canonicalize.c mkstemp.c \
  42706. + abort.c getenv.c mkdtemp.c realpath.c canonicalize.c mkstemp.c mkostemp.c \
  42707. rand.c random.c random_r.c setenv.c div.c ldiv.c lldiv.c \
  42708. getpt.c drand48-iter.c jrand48.c \
  42709. - jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
  42710. + jrand48_r.c lcong48.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
  42711. nrand48_r.c rand_r.c srand48.c srand48_r.c seed48.c seed48_r.c \
  42712. - valloc.c a64l.c l64a.c __uc_malloc.c
  42713. + a64l.c l64a.c __uc_malloc.c
  42714. +CSRC-$(UCLIBC_SUSV2_LEGACY) += valloc.c
  42715. CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_memalign.c
  42716. CSRC-$(UCLIBC_HAS_PTY) += grantpt.c unlockpt.c ptsname.c
  42717. CSRC-$(UCLIBC_HAS_ARC4RANDOM) += arc4random.c
  42718. -CSRC-$(UCLIBC_HAS_LFS) += mkstemp64.c
  42719. +CSRC-$(UCLIBC_HAS_LFS) += mkstemp64.c mkostemp64.c
  42720. CSRC-$(UCLIBC_HAS_FLOATS) += drand48.c drand48_r.c erand48.c erand48_r.c
  42721. CSRC-$(if $(findstring yy,$(UCLIBC_HAS_FLOATS)$(UCLIBC_SUSV3_LEGACY)),y) += \
  42722. gcvt.c
  42723. @@ -33,7 +34,7 @@
  42724. # multi source stdlib.c
  42725. CSRC-y += abs.c labs.c atoi.c atol.c strtol.c strtoul.c _stdlib_strto_l.c \
  42726. - qsort.c qsort_r.c bsearch.c \
  42727. + qsort.c qsort_r.c bsearch.c rpmatch.c \
  42728. llabs.c atoll.c strtoll.c strtoull.c _stdlib_strto_ll.c
  42729. # (aliases) strtoq.o strtouq.o
  42730. CSRC-$(UCLIBC_HAS_FLOATS) += atof.c
  42731. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/calloc.c uClibc/libc/stdlib/malloc/calloc.c
  42732. --- uClibc-0.9.33.2/libc/stdlib/malloc/calloc.c 2012-05-15 09:20:09.000000000 +0200
  42733. +++ uClibc/libc/stdlib/malloc/calloc.c 2014-02-03 12:32:56.000000000 +0100
  42734. @@ -14,8 +14,8 @@
  42735. * for more details.
  42736. *
  42737. * You should have received a copy of the GNU Library General Public License
  42738. - * along with this program; if not, write to the Free Software Foundation,
  42739. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  42740. + * along with this program; see the file COPYING.LIB. If not, see
  42741. + * <http://www.gnu.org/licenses/>.
  42742. */
  42743. #include <stdlib.h>
  42744. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/free.c uClibc/libc/stdlib/malloc/free.c
  42745. --- uClibc-0.9.33.2/libc/stdlib/malloc/free.c 2012-05-15 09:20:09.000000000 +0200
  42746. +++ uClibc/libc/stdlib/malloc/free.c 2014-02-03 12:32:56.000000000 +0100
  42747. @@ -28,7 +28,7 @@
  42748. static void
  42749. __free_to_heap (void *mem, struct heap_free_area **heap
  42750. #ifdef HEAP_USE_LOCKING
  42751. - , malloc_mutex_t *heap_lock
  42752. + , __UCLIBC_MUTEX_TYPE *heap_lock
  42753. #endif
  42754. )
  42755. {
  42756. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/heap.h uClibc/libc/stdlib/malloc/heap.h
  42757. --- uClibc-0.9.33.2/libc/stdlib/malloc/heap.h 2012-05-15 09:20:09.000000000 +0200
  42758. +++ uClibc/libc/stdlib/malloc/heap.h 2014-02-03 12:32:56.000000000 +0100
  42759. @@ -13,18 +13,13 @@
  42760. #include <features.h>
  42761. -
  42762. -/* On multi-threaded systems, the heap includes a lock. */
  42763. +#include <bits/uClibc_mutex.h>
  42764. #ifdef __UCLIBC_HAS_THREADS__
  42765. -# include <bits/uClibc_mutex.h>
  42766. # define HEAP_USE_LOCKING
  42767. -# define __heap_lock(heap_lock) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(*(heap_lock))
  42768. -# define __heap_unlock(heap_lock) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(*(heap_lock))
  42769. -#else
  42770. -# define __heap_lock(heap_lock)
  42771. -# define __heap_unlock(heap_lock)
  42772. #endif
  42773. +#define __heap_lock(heap_lock) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(*(heap_lock))
  42774. +#define __heap_unlock(heap_lock) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(*(heap_lock))
  42775. /* The heap allocates in multiples of, and aligned to, HEAP_GRANULARITY.
  42776. HEAP_GRANULARITY must be a power of 2. Malloc depends on this being the
  42777. @@ -35,11 +30,9 @@
  42778. -/* The HEAP_INIT macro can be used as a static initializer for a heap
  42779. - variable. The HEAP_INIT_WITH_FA variant is used to initialize a heap
  42780. +/* The HEAP_INIT_WITH_FA variant is used to initialize a heap
  42781. with an initial static free-area; its argument FA should be declared
  42782. using HEAP_DECLARE_STATIC_FREE_AREA. */
  42783. -# define HEAP_INIT 0
  42784. # define HEAP_INIT_WITH_FA(fa) &fa._fa
  42785. /* A free-list area `header'. These are actually stored at the _ends_ of
  42786. @@ -92,34 +85,21 @@
  42787. #define HEAP_MIN_FREE_AREA_SIZE \
  42788. HEAP_ADJUST_SIZE (sizeof (struct heap_free_area) + 32)
  42789. -
  42790. -/* branch-prediction macros; they may already be defined by libc. */
  42791. -#ifndef likely
  42792. -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
  42793. -#define likely(cond) __builtin_expect(!!(int)(cond), 1)
  42794. -#define unlikely(cond) __builtin_expect((int)(cond), 0)
  42795. -#else
  42796. -#define likely(cond) (cond)
  42797. -#define unlikely(cond) (cond)
  42798. -#endif
  42799. -#endif /* !likely */
  42800. -
  42801. -
  42802. /* Define HEAP_DEBUGGING to cause the heap routines to emit debugging info
  42803. to stderr when the variable __heap_debug is set to true. */
  42804. #ifdef HEAP_DEBUGGING
  42805. -extern int __heap_debug;
  42806. +extern int __heap_debug attribute_hidden;
  42807. #define HEAP_DEBUG(heap, str) (__heap_debug ? __heap_dump (heap, str) : 0)
  42808. #else
  42809. #define HEAP_DEBUG(heap, str) (void)0
  42810. #endif
  42811. /* Output a text representation of HEAP to stderr, labelling it with STR. */
  42812. -extern void __heap_dump (struct heap_free_area *heap, const char *str);
  42813. +extern void __heap_dump (struct heap_free_area *heap, const char *str) attribute_hidden;
  42814. /* Do some consistency checks on HEAP. If they fail, output an error
  42815. message to stderr, and exit. STR is printed with the failure message. */
  42816. -extern void __heap_check (struct heap_free_area *heap, const char *str);
  42817. +extern void __heap_check (struct heap_free_area *heap, const char *str) attribute_hidden;
  42818. /* Delete the free-area FA from HEAP. */
  42819. @@ -216,16 +196,16 @@
  42820. /* Allocate and return a block at least *SIZE bytes long from HEAP.
  42821. *SIZE is adjusted to reflect the actual amount allocated (which may be
  42822. greater than requested). */
  42823. -extern void *__heap_alloc (struct heap_free_area **heap, size_t *size);
  42824. +extern void *__heap_alloc (struct heap_free_area **heap, size_t *size) attribute_hidden;
  42825. /* Allocate SIZE bytes at address MEM in HEAP. Return the actual size
  42826. allocated, or 0 if we failed. */
  42827. -extern size_t __heap_alloc_at (struct heap_free_area **heap, void *mem, size_t size);
  42828. +extern size_t __heap_alloc_at (struct heap_free_area **heap, void *mem, size_t size) attribute_hidden;
  42829. /* Return the memory area MEM of size SIZE to HEAP.
  42830. Returns the heap free area into which the memory was placed. */
  42831. extern struct heap_free_area *__heap_free (struct heap_free_area **heap,
  42832. - void *mem, size_t size);
  42833. + void *mem, size_t size) attribute_hidden;
  42834. /* Return true if HEAP contains absolutely no memory. */
  42835. #define __heap_is_empty(heap) (! (heap))
  42836. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/Makefile.in uClibc/libc/stdlib/malloc/Makefile.in
  42837. --- uClibc-0.9.33.2/libc/stdlib/malloc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  42838. +++ uClibc/libc/stdlib/malloc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  42839. @@ -9,12 +9,12 @@
  42840. subdirs += libc/stdlib/malloc
  42841. -CSRC := malloc.c calloc.c free.c realloc.c memalign.c \
  42842. +CSRC-y := malloc.c calloc.c free.c realloc.c memalign.c \
  42843. heap_alloc.c heap_alloc_at.c heap_free.c
  42844. # Turn on malloc debugging if requested
  42845. +CSRC-$(UCLIBC_MALLOC_DEBUGGING) += malloc_debug.c heap_debug.c
  42846. ifeq ($(UCLIBC_MALLOC_DEBUGGING),y)
  42847. -CSRC += malloc_debug.c heap_debug.c
  42848. CFLAGS += -DMALLOC_DEBUGGING -DHEAP_DEBUGGING
  42849. ifeq ($(UCLIBC_UCLINUX_BROKEN_MUNMAP),y)
  42850. CFLAGS += -DMALLOC_MMB_DEBUGGING
  42851. @@ -24,8 +24,8 @@
  42852. STDLIB_MALLOC_DIR := $(top_srcdir)libc/stdlib/malloc
  42853. STDLIB_MALLOC_OUT := $(top_builddir)libc/stdlib/malloc
  42854. -STDLIB_MALLOC_SRC := $(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC))
  42855. -STDLIB_MALLOC_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC))
  42856. +STDLIB_MALLOC_SRC := $(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC-y))
  42857. +STDLIB_MALLOC_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC-y))
  42858. libc-$(MALLOC) += $(STDLIB_MALLOC_OBJ)
  42859. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/malloc.c uClibc/libc/stdlib/malloc/malloc.c
  42860. --- uClibc-0.9.33.2/libc/stdlib/malloc/malloc.c 2012-05-15 09:20:09.000000000 +0200
  42861. +++ uClibc/libc/stdlib/malloc/malloc.c 2014-02-03 12:32:56.000000000 +0100
  42862. @@ -26,12 +26,12 @@
  42863. HEAP_DECLARE_STATIC_FREE_AREA (initial_fa, 256);
  42864. struct heap_free_area *__malloc_heap = HEAP_INIT_WITH_FA (initial_fa);
  42865. #ifdef HEAP_USE_LOCKING
  42866. -malloc_mutex_t __malloc_heap_lock = PTHREAD_MUTEX_INITIALIZER;
  42867. +__UCLIBC_MUTEX_INIT(__malloc_heap_lock,PTHREAD_MUTEX_INITIALIZER);
  42868. #endif
  42869. #if defined(MALLOC_USE_LOCKING) && defined(MALLOC_USE_SBRK)
  42870. /* A lock protecting our use of sbrk. */
  42871. -malloc_mutex_t __malloc_sbrk_lock;
  42872. +__UCLIBC_MUTEX(__malloc_sbrk_lock);
  42873. #endif /* MALLOC_USE_LOCKING && MALLOC_USE_SBRK */
  42874. @@ -46,7 +46,7 @@
  42875. HEAP_DECLARE_STATIC_FREE_AREA (initial_mmb_fa, 48); /* enough for 3 mmbs */
  42876. struct heap_free_area *__malloc_mmb_heap = HEAP_INIT_WITH_FA (initial_mmb_fa);
  42877. #ifdef HEAP_USE_LOCKING
  42878. -malloc_mutex_t __malloc_mmb_heap_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
  42879. +__UCLIBC_MUTEX_INIT(__malloc_mmb_heap_lock,PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP);
  42880. #endif
  42881. #endif /* __UCLIBC_UCLINUX_BROKEN_MUNMAP__ */
  42882. @@ -59,7 +59,7 @@
  42883. static void *
  42884. __malloc_from_heap (size_t size, struct heap_free_area **heap
  42885. #ifdef HEAP_USE_LOCKING
  42886. - , malloc_mutex_t *heap_lock
  42887. + , __UCLIBC_MUTEX_TYPE *heap_lock
  42888. #endif
  42889. )
  42890. {
  42891. @@ -124,7 +124,7 @@
  42892. MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
  42893. #else
  42894. block = mmap ((void *)0, block_size, PROT_READ | PROT_WRITE,
  42895. - MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE, 0, 0);
  42896. + MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZED, 0, 0);
  42897. #endif
  42898. #endif /* MALLOC_USE_SBRK */
  42899. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/malloc.h uClibc/libc/stdlib/malloc/malloc.h
  42900. --- uClibc-0.9.33.2/libc/stdlib/malloc/malloc.h 2012-05-15 09:20:09.000000000 +0200
  42901. +++ uClibc/libc/stdlib/malloc/malloc.h 2014-02-03 12:32:56.000000000 +0100
  42902. @@ -20,8 +20,7 @@
  42903. (__alignof__ (double) > sizeof (size_t) ? __alignof__ (double) : sizeof (size_t))
  42904. /* The system pagesize... */
  42905. -extern size_t __pagesize;
  42906. -#define MALLOC_PAGE_SIZE __pagesize
  42907. +#define MALLOC_PAGE_SIZE sysconf(_SC_PAGESIZE)
  42908. /* The minimum size of block we request from the the system to extend the
  42909. heap for small allocations (we may request a bigger block if necessary to
  42910. @@ -128,69 +127,46 @@
  42911. /* Return the size of a malloc allocation, given the user address. */
  42912. #define MALLOC_SIZE(addr) (*(size_t *)MALLOC_BASE(addr))
  42913. +#include <bits/uClibc_mutex.h>
  42914. -/* Locking for multithreaded apps. */
  42915. #ifdef __UCLIBC_HAS_THREADS__
  42916. -
  42917. -# include <bits/uClibc_mutex.h>
  42918. -
  42919. # define MALLOC_USE_LOCKING
  42920. +#endif
  42921. -typedef __UCLIBC_MUTEX_TYPE malloc_mutex_t;
  42922. -# define MALLOC_MUTEX_INIT __UCLIBC_MUTEX_INITIALIZER
  42923. -
  42924. -# ifdef MALLOC_USE_SBRK
  42925. +#ifdef MALLOC_USE_SBRK
  42926. /* This lock is used to serialize uses of the `sbrk' function (in both
  42927. malloc and free, sbrk may be used several times in succession, and
  42928. things will break if these multiple calls are interleaved with another
  42929. thread's use of sbrk!). */
  42930. -extern malloc_mutex_t __malloc_sbrk_lock;
  42931. +__UCLIBC_MUTEX_EXTERN(__malloc_sbrk_lock) attribute_hidden;
  42932. # define __malloc_lock_sbrk() __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE (__malloc_sbrk_lock)
  42933. # define __malloc_unlock_sbrk() __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE (__malloc_sbrk_lock)
  42934. -# endif /* MALLOC_USE_SBRK */
  42935. -
  42936. -#else /* !__UCLIBC_HAS_THREADS__ */
  42937. -
  42938. -/* Without threads, mutex operations are a nop. */
  42939. +#else
  42940. # define __malloc_lock_sbrk() (void)0
  42941. # define __malloc_unlock_sbrk() (void)0
  42942. -
  42943. -#endif /* __UCLIBC_HAS_THREADS__ */
  42944. -
  42945. -
  42946. -/* branch-prediction macros; they may already be defined by libc. */
  42947. -#ifndef likely
  42948. -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
  42949. -#define likely(cond) __builtin_expect(!!(int)(cond), 1)
  42950. -#define unlikely(cond) __builtin_expect((int)(cond), 0)
  42951. -#else
  42952. -#define likely(cond) (cond)
  42953. -#define unlikely(cond) (cond)
  42954. -#endif
  42955. -#endif /* !likely */
  42956. -
  42957. +#endif /* MALLOC_USE_SBRK */
  42958. /* Define MALLOC_DEBUGGING to cause malloc to emit debugging info to stderr
  42959. when the variable __malloc_debug is set to true. */
  42960. #ifdef MALLOC_DEBUGGING
  42961. -extern void __malloc_debug_init (void);
  42962. +extern void __malloc_debug_init (void) attribute_hidden;
  42963. /* The number of spaces in a malloc debug indent level. */
  42964. #define MALLOC_DEBUG_INDENT_SIZE 3
  42965. -extern int __malloc_debug, __malloc_check;
  42966. +extern int __malloc_debug attribute_hidden, __malloc_check attribute_hidden;
  42967. # define MALLOC_DEBUG(indent, fmt, args...) \
  42968. (__malloc_debug ? __malloc_debug_printf (indent, fmt , ##args) : 0)
  42969. # define MALLOC_DEBUG_INDENT(indent) \
  42970. (__malloc_debug ? __malloc_debug_indent (indent) : 0)
  42971. -extern int __malloc_debug_cur_indent;
  42972. +extern int __malloc_debug_cur_indent attribute_hidden;
  42973. /* Print FMT and args indented at the current debug print level, followed
  42974. by a newline, and change the level by INDENT. */
  42975. -extern void __malloc_debug_printf (int indent, const char *fmt, ...);
  42976. +extern void __malloc_debug_printf (int indent, const char *fmt, ...) attribute_hidden;
  42977. /* Change the current debug print level by INDENT, and return the value. */
  42978. #define __malloc_debug_indent(indent) (__malloc_debug_cur_indent += indent)
  42979. @@ -220,10 +196,18 @@
  42980. /* The malloc heap. */
  42981. -extern struct heap_free_area *__malloc_heap;
  42982. +extern struct heap_free_area *__malloc_heap attribute_hidden;
  42983. #ifdef __UCLIBC_HAS_THREADS__
  42984. -extern malloc_mutex_t __malloc_heap_lock;
  42985. -#ifdef __UCLIBC_UCLINUX_BROKEN_MUNMAP__
  42986. -extern malloc_mutex_t __malloc_mmb_heap_lock;
  42987. -#endif
  42988. +__UCLIBC_MUTEX_EXTERN(__malloc_heap_lock)
  42989. +# ifndef __LINUXTHREADS_OLD__
  42990. + attribute_hidden
  42991. +# endif
  42992. + ;
  42993. +# ifdef __UCLIBC_UCLINUX_BROKEN_MUNMAP__
  42994. +__UCLIBC_MUTEX_EXTERN(__malloc_mmb_heap_lock)
  42995. +# ifndef __LINUXTHREADS_OLD__
  42996. + attribute_hidden
  42997. +# endif
  42998. + ;
  42999. +# endif
  43000. #endif
  43001. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/memalign.c uClibc/libc/stdlib/malloc/memalign.c
  43002. --- uClibc-0.9.33.2/libc/stdlib/malloc/memalign.c 2012-05-15 09:20:09.000000000 +0200
  43003. +++ uClibc/libc/stdlib/malloc/memalign.c 2014-02-03 12:32:56.000000000 +0100
  43004. @@ -14,7 +14,6 @@
  43005. #include <stdlib.h>
  43006. #include <unistd.h>
  43007. #include <sys/mman.h>
  43008. -#include <sys/param.h> /* MAX */
  43009. #include "malloc.h"
  43010. #include "heap.h"
  43011. @@ -30,6 +29,8 @@
  43012. */
  43013. void *memalign (size_t alignment, size_t size);
  43014. +/* XXX shadow outer malloc.h */
  43015. +libc_hidden_proto(memalign)
  43016. void *
  43017. memalign (size_t alignment, size_t size)
  43018. {
  43019. @@ -92,3 +93,4 @@
  43020. return MALLOC_SETUP (base, end_addr - (unsigned long)base);
  43021. }
  43022. +libc_hidden_def(memalign)
  43023. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-simple/alloc.c uClibc/libc/stdlib/malloc-simple/alloc.c
  43024. --- uClibc-0.9.33.2/libc/stdlib/malloc-simple/alloc.c 2012-05-15 09:20:09.000000000 +0200
  43025. +++ uClibc/libc/stdlib/malloc-simple/alloc.c 2014-02-03 12:32:56.000000000 +0100
  43026. @@ -17,6 +17,7 @@
  43027. #include <sys/mman.h>
  43028. #include <malloc.h>
  43029. +extern int weak_function __libc_free_aligned(void *ptr) attribute_hidden;
  43030. #ifdef L_malloc
  43031. void *malloc(size_t size)
  43032. @@ -36,7 +37,7 @@
  43033. #ifdef __ARCH_USE_MMU__
  43034. # define MMAP_FLAGS MAP_PRIVATE | MAP_ANONYMOUS
  43035. #else
  43036. -# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE
  43037. +# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZED
  43038. #endif
  43039. result = mmap((void *) 0, size + sizeof(size_t), PROT_READ | PROT_WRITE,
  43040. @@ -63,7 +64,7 @@
  43041. result = malloc(size);
  43042. #ifndef __ARCH_USE_MMU__
  43043. - /* mmap'd with MAP_UNINITIALIZE, we have to blank memory ourselves */
  43044. + /* mmap'd with MAP_UNINITIALIZED, we have to blank memory ourselves */
  43045. if (result != NULL) {
  43046. memset(result, 0, size);
  43047. }
  43048. @@ -95,7 +96,6 @@
  43049. #endif
  43050. #ifdef L_free
  43051. -extern int weak_function __libc_free_aligned(void *ptr);
  43052. void free(void *ptr)
  43053. {
  43054. if (unlikely(ptr == NULL))
  43055. @@ -123,7 +123,7 @@
  43056. __ptr_t aligned; /* The address that memaligned returned. */
  43057. __ptr_t exact; /* The address that malloc returned. */
  43058. };
  43059. -struct alignlist *_aligned_blocks;
  43060. +static struct alignlist *_aligned_blocks;
  43061. /* Return memory to the heap. */
  43062. int __libc_free_aligned(void *ptr)
  43063. @@ -182,4 +182,5 @@
  43064. return result;
  43065. }
  43066. +libc_hidden_def(memalign)
  43067. #endif
  43068. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-simple/Makefile.in uClibc/libc/stdlib/malloc-simple/Makefile.in
  43069. --- uClibc-0.9.33.2/libc/stdlib/malloc-simple/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  43070. +++ uClibc/libc/stdlib/malloc-simple/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  43071. @@ -10,11 +10,13 @@
  43072. STDLIB_MALLOC_SIMPLE_DIR := $(top_srcdir)libc/stdlib/malloc-simple
  43073. STDLIB_MALLOC_SIMPLE_OUT := $(top_builddir)libc/stdlib/malloc-simple
  43074. -CSRC := $(notdir $(wildcard $(STDLIB_MALLOC_SIMPLE_DIR)/*.c))
  43075. -CSRC := $(filter-out alloc.c,$(CSRC))
  43076. +CSRC-y := $(notdir $(wildcard $(STDLIB_MALLOC_SIMPLE_DIR)/*.c))
  43077. +# multi source alloc.c
  43078. +CSRC- := alloc.c
  43079. +CSRC-y := $(filter-out $(CSRC-),$(CSRC-y))
  43080. -STDLIB_MALLOC_SIMPLE_SRC := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_DIR)/%.c,$(CSRC))
  43081. -STDLIB_MALLOC_SIMPLE_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(CSRC))
  43082. +STDLIB_MALLOC_SIMPLE_SRC := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_DIR)/%.c,$(CSRC-y))
  43083. +STDLIB_MALLOC_SIMPLE_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(CSRC-y))
  43084. libc-$(MALLOC_SIMPLE) += $(STDLIB_MALLOC_SIMPLE_OBJ)
  43085. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/Makefile.in uClibc/libc/stdlib/malloc-standard/Makefile.in
  43086. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  43087. +++ uClibc/libc/stdlib/malloc-standard/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  43088. @@ -7,15 +7,13 @@
  43089. subdirs += libc/stdlib/malloc-standard
  43090. -# calloc.c can be found at uClibc/libc/stdlib/calloc.c
  43091. -# valloc.c can be found at uClibc/libc/stdlib/valloc.c
  43092. -CSRC := malloc.c calloc.c realloc.c free.c memalign.c mallopt.c mallinfo.c
  43093. -
  43094. STDLIB_MALLOC_STANDARD_DIR := $(top_srcdir)libc/stdlib/malloc-standard
  43095. STDLIB_MALLOC_STANDARD_OUT := $(top_builddir)libc/stdlib/malloc-standard
  43096. -STDLIB_MALLOC_STANDARD_SRC := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(CSRC))
  43097. -STDLIB_MALLOC_STANDARD_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC))
  43098. +CSRC-y := $(notdir $(wildcard $(STDLIB_MALLOC_STANDARD_DIR)/*.c))
  43099. +
  43100. +STDLIB_MALLOC_STANDARD_SRC := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(CSRC-y))
  43101. +STDLIB_MALLOC_STANDARD_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC-y))
  43102. libc-$(MALLOC_STANDARD) += $(STDLIB_MALLOC_STANDARD_OBJ)
  43103. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/mallinfo.c uClibc/libc/stdlib/malloc-standard/mallinfo.c
  43104. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/mallinfo.c 2012-05-15 09:20:09.000000000 +0200
  43105. +++ uClibc/libc/stdlib/malloc-standard/mallinfo.c 2014-02-03 12:32:56.000000000 +0100
  43106. @@ -15,6 +15,7 @@
  43107. */
  43108. #include "malloc.h"
  43109. +#include <stdio.h> /* fprintf */
  43110. /* ------------------------------ mallinfo ------------------------------ */
  43111. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/malloc.h uClibc/libc/stdlib/malloc-standard/malloc.h
  43112. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/malloc.h 2012-05-15 09:20:09.000000000 +0200
  43113. +++ uClibc/libc/stdlib/malloc-standard/malloc.h 2014-02-03 12:32:56.000000000 +0100
  43114. @@ -26,7 +26,11 @@
  43115. -__UCLIBC_MUTEX_EXTERN(__malloc_lock);
  43116. +__UCLIBC_MUTEX_EXTERN(__malloc_lock)
  43117. +#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  43118. + attribute_hidden
  43119. +#endif
  43120. + ;
  43121. #define __MALLOC_LOCK __UCLIBC_MUTEX_LOCK(__malloc_lock)
  43122. #define __MALLOC_UNLOCK __UCLIBC_MUTEX_UNLOCK(__malloc_lock)
  43123. @@ -349,13 +353,13 @@
  43124. #endif
  43125. #ifdef __ARCH_USE_MMU__
  43126. -# define _MAP_UNINITIALIZE 0
  43127. +# define _MAP_UNINITIALIZED 0
  43128. #else
  43129. -# define _MAP_UNINITIALIZE MAP_UNINITIALIZE
  43130. +# define _MAP_UNINITIALIZED MAP_UNINITIALIZED
  43131. #endif
  43132. #define MMAP(addr, size, prot) \
  43133. - (mmap((addr), (size), (prot), MAP_PRIVATE|MAP_ANONYMOUS|_MAP_UNINITIALIZE, 0, 0))
  43134. + (mmap((addr), (size), (prot), MAP_PRIVATE|MAP_ANONYMOUS|_MAP_UNINITIALIZED, 0, 0))
  43135. /* ----------------------- Chunk representations ----------------------- */
  43136. @@ -910,7 +914,7 @@
  43137. malloc relies on the property that malloc_state is initialized to
  43138. all zeroes (as is true of C statics).
  43139. */
  43140. -extern struct malloc_state __malloc_state; /* never directly referenced */
  43141. +extern struct malloc_state __malloc_state attribute_hidden; /* never directly referenced */
  43142. /*
  43143. All uses of av_ are via get_malloc_state().
  43144. @@ -947,12 +951,12 @@
  43145. #define check_malloced_chunk(P,N) __do_check_malloced_chunk(P,N)
  43146. #define check_malloc_state() __do_check_malloc_state()
  43147. -extern void __do_check_chunk(mchunkptr p);
  43148. -extern void __do_check_free_chunk(mchunkptr p);
  43149. -extern void __do_check_inuse_chunk(mchunkptr p);
  43150. -extern void __do_check_remalloced_chunk(mchunkptr p, size_t s);
  43151. -extern void __do_check_malloced_chunk(mchunkptr p, size_t s);
  43152. -extern void __do_check_malloc_state(void);
  43153. +extern void __do_check_chunk(mchunkptr p) attribute_hidden;
  43154. +extern void __do_check_free_chunk(mchunkptr p) attribute_hidden;
  43155. +extern void __do_check_inuse_chunk(mchunkptr p) attribute_hidden;
  43156. +extern void __do_check_remalloced_chunk(mchunkptr p, size_t s) attribute_hidden;
  43157. +extern void __do_check_malloced_chunk(mchunkptr p, size_t s) attribute_hidden;
  43158. +extern void __do_check_malloc_state(void) attribute_hidden;
  43159. #include <assert.h>
  43160. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/memalign.c uClibc/libc/stdlib/malloc-standard/memalign.c
  43161. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/memalign.c 2012-05-15 09:20:09.000000000 +0200
  43162. +++ uClibc/libc/stdlib/malloc-standard/memalign.c 2014-02-03 12:32:56.000000000 +0100
  43163. @@ -127,4 +127,4 @@
  43164. __MALLOC_UNLOCK;
  43165. return retval;
  43166. }
  43167. -
  43168. +libc_hidden_def(memalign)
  43169. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkdtemp.c uClibc/libc/stdlib/mkdtemp.c
  43170. --- uClibc-0.9.33.2/libc/stdlib/mkdtemp.c 2012-05-15 09:20:09.000000000 +0200
  43171. +++ uClibc/libc/stdlib/mkdtemp.c 2014-02-03 12:32:56.000000000 +0100
  43172. @@ -14,8 +14,7 @@
  43173. You should have received a copy of the GNU Library General Public
  43174. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43175. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43176. - Boston, MA 02111-1307, USA. */
  43177. + see <http://www.gnu.org/licenses/>. */
  43178. #include <stdio.h>
  43179. #include <stdlib.h>
  43180. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkostemp64.c uClibc/libc/stdlib/mkostemp64.c
  43181. --- uClibc-0.9.33.2/libc/stdlib/mkostemp64.c 1970-01-01 01:00:00.000000000 +0100
  43182. +++ uClibc/libc/stdlib/mkostemp64.c 2014-02-03 12:32:56.000000000 +0100
  43183. @@ -0,0 +1,31 @@
  43184. +/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
  43185. + This file is part of the GNU C Library.
  43186. +
  43187. + The GNU C Library is free software; you can redistribute it and/or
  43188. + modify it under the terms of the GNU Lesser General Public
  43189. + License as published by the Free Software Foundation; either
  43190. + version 2.1 of the License, or (at your option) any later version.
  43191. +
  43192. + The GNU C Library is distributed in the hope that it will be useful,
  43193. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  43194. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  43195. + Lesser General Public License for more details.
  43196. +
  43197. + You should have received a copy of the GNU Lesser General Public
  43198. + License along with the GNU C Library; if not, see
  43199. + <http://www.gnu.org/licenses/>. */
  43200. +
  43201. +#include <fcntl.h>
  43202. +#include <stdio.h>
  43203. +#include <stdlib.h>
  43204. +#include "../misc/internals/tempname.h"
  43205. +
  43206. +/* Generate a unique temporary file name from TEMPLATE.
  43207. + The last six characters of TEMPLATE must be "XXXXXX";
  43208. + they are replaced with a string that makes the filename unique.
  43209. + Then open the file and return a fd. */
  43210. +int
  43211. +mkostemp64 (char *template, int flags)
  43212. +{
  43213. + return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE);
  43214. +}
  43215. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkostemp.c uClibc/libc/stdlib/mkostemp.c
  43216. --- uClibc-0.9.33.2/libc/stdlib/mkostemp.c 1970-01-01 01:00:00.000000000 +0100
  43217. +++ uClibc/libc/stdlib/mkostemp.c 2014-02-03 12:32:56.000000000 +0100
  43218. @@ -0,0 +1,30 @@
  43219. +/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
  43220. + This file is part of the GNU C Library.
  43221. +
  43222. + The GNU C Library is free software; you can redistribute it and/or
  43223. + modify it under the terms of the GNU Lesser General Public
  43224. + License as published by the Free Software Foundation; either
  43225. + version 2.1 of the License, or (at your option) any later version.
  43226. +
  43227. + The GNU C Library is distributed in the hope that it will be useful,
  43228. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  43229. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  43230. + Lesser General Public License for more details.
  43231. +
  43232. + You should have received a copy of the GNU Lesser General Public
  43233. + License along with the GNU C Library; if not, see
  43234. + <http://www.gnu.org/licenses/>. */
  43235. +
  43236. +#include <stdio.h>
  43237. +#include <stdlib.h>
  43238. +#include "../misc/internals/tempname.h"
  43239. +
  43240. +/* Generate a unique temporary file name from TEMPLATE.
  43241. + The last six characters of TEMPLATE must be "XXXXXX";
  43242. + they are replaced with a string that makes the filename unique.
  43243. + Then open the file and return a fd. */
  43244. +int
  43245. +mkostemp (char *template, int flags)
  43246. +{
  43247. + return __gen_tempname (template, __GT_FILE, flags);
  43248. +}
  43249. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkstemp64.c uClibc/libc/stdlib/mkstemp64.c
  43250. --- uClibc-0.9.33.2/libc/stdlib/mkstemp64.c 2012-05-15 09:20:09.000000000 +0200
  43251. +++ uClibc/libc/stdlib/mkstemp64.c 2014-02-03 12:32:56.000000000 +0100
  43252. @@ -13,8 +13,7 @@
  43253. You should have received a copy of the GNU Library General Public
  43254. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43255. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43256. - Boston, MA 02111-1307, USA. */
  43257. + see <http://www.gnu.org/licenses/>. */
  43258. #include <stdio.h>
  43259. #include <stdlib.h>
  43260. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkstemp.c uClibc/libc/stdlib/mkstemp.c
  43261. --- uClibc-0.9.33.2/libc/stdlib/mkstemp.c 2012-05-15 09:20:09.000000000 +0200
  43262. +++ uClibc/libc/stdlib/mkstemp.c 2014-02-03 12:32:56.000000000 +0100
  43263. @@ -13,8 +13,7 @@
  43264. You should have received a copy of the GNU Library General Public
  43265. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43266. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43267. - Boston, MA 02111-1307, USA. */
  43268. + see <http://www.gnu.org/licenses/>. */
  43269. #include <stdio.h>
  43270. #include <stdlib.h>
  43271. diff -Nur uClibc-0.9.33.2/libc/stdlib/mktemp.c uClibc/libc/stdlib/mktemp.c
  43272. --- uClibc-0.9.33.2/libc/stdlib/mktemp.c 2012-05-15 09:20:09.000000000 +0200
  43273. +++ uClibc/libc/stdlib/mktemp.c 2014-02-03 12:32:56.000000000 +0100
  43274. @@ -13,8 +13,7 @@
  43275. You should have received a copy of the GNU Library General Public
  43276. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43277. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43278. - Boston, MA 02111-1307, USA. */
  43279. + see <http://www.gnu.org/licenses/>. */
  43280. #include <stdio.h>
  43281. #include <stdlib.h>
  43282. diff -Nur uClibc-0.9.33.2/libc/stdlib/mrand48.c uClibc/libc/stdlib/mrand48.c
  43283. --- uClibc-0.9.33.2/libc/stdlib/mrand48.c 2012-05-15 09:20:09.000000000 +0200
  43284. +++ uClibc/libc/stdlib/mrand48.c 2014-02-03 12:32:56.000000000 +0100
  43285. @@ -13,9 +13,8 @@
  43286. Lesser General Public License for more details.
  43287. You should have received a copy of the GNU Lesser General Public
  43288. - License along with the GNU C Library; if not, write to the Free
  43289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43290. - 02111-1307 USA. */
  43291. + License along with the GNU C Library; if not, see
  43292. + <http://www.gnu.org/licenses/>. */
  43293. #include <stdlib.h>
  43294. diff -Nur uClibc-0.9.33.2/libc/stdlib/mrand48_r.c uClibc/libc/stdlib/mrand48_r.c
  43295. --- uClibc-0.9.33.2/libc/stdlib/mrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  43296. +++ uClibc/libc/stdlib/mrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  43297. @@ -13,9 +13,8 @@
  43298. Lesser General Public License for more details.
  43299. You should have received a copy of the GNU Lesser General Public
  43300. - License along with the GNU C Library; if not, write to the Free
  43301. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43302. - 02111-1307 USA. */
  43303. + License along with the GNU C Library; if not, see
  43304. + <http://www.gnu.org/licenses/>. */
  43305. #include <stdlib.h>
  43306. diff -Nur uClibc-0.9.33.2/libc/stdlib/nrand48.c uClibc/libc/stdlib/nrand48.c
  43307. --- uClibc-0.9.33.2/libc/stdlib/nrand48.c 2012-05-15 09:20:09.000000000 +0200
  43308. +++ uClibc/libc/stdlib/nrand48.c 2014-02-03 12:32:56.000000000 +0100
  43309. @@ -13,9 +13,8 @@
  43310. Lesser General Public License for more details.
  43311. You should have received a copy of the GNU Lesser General Public
  43312. - License along with the GNU C Library; if not, write to the Free
  43313. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43314. - 02111-1307 USA. */
  43315. + License along with the GNU C Library; if not, see
  43316. + <http://www.gnu.org/licenses/>. */
  43317. #include <stdlib.h>
  43318. diff -Nur uClibc-0.9.33.2/libc/stdlib/nrand48_r.c uClibc/libc/stdlib/nrand48_r.c
  43319. --- uClibc-0.9.33.2/libc/stdlib/nrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  43320. +++ uClibc/libc/stdlib/nrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  43321. @@ -13,9 +13,8 @@
  43322. Lesser General Public License for more details.
  43323. You should have received a copy of the GNU Lesser General Public
  43324. - License along with the GNU C Library; if not, write to the Free
  43325. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43326. - 02111-1307 USA. */
  43327. + License along with the GNU C Library; if not, see
  43328. + <http://www.gnu.org/licenses/>. */
  43329. #include <stdlib.h>
  43330. diff -Nur uClibc-0.9.33.2/libc/stdlib/posix_memalign.c uClibc/libc/stdlib/posix_memalign.c
  43331. --- uClibc-0.9.33.2/libc/stdlib/posix_memalign.c 2012-05-15 09:20:09.000000000 +0200
  43332. +++ uClibc/libc/stdlib/posix_memalign.c 2014-02-03 12:32:56.000000000 +0100
  43333. @@ -15,9 +15,8 @@
  43334. * for more details.
  43335. *
  43336. * You should have received a copy of the GNU Library General Public License
  43337. - * along with this program; if not, write to the Free Software Foundation,
  43338. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  43339. - *
  43340. + * along with this program; see the file COPYING.LIB. If not, see
  43341. + * <http://www.gnu.org/licenses/>.
  43342. */
  43343. #include <stdlib.h>
  43344. diff -Nur uClibc-0.9.33.2/libc/stdlib/ptsname.c uClibc/libc/stdlib/ptsname.c
  43345. --- uClibc-0.9.33.2/libc/stdlib/ptsname.c 2012-05-15 09:20:09.000000000 +0200
  43346. +++ uClibc/libc/stdlib/ptsname.c 2014-02-03 12:32:56.000000000 +0100
  43347. @@ -13,9 +13,8 @@
  43348. Lesser General Public License for more details.
  43349. You should have received a copy of the GNU Lesser General Public
  43350. - License along with the GNU C Library; if not, write to the Free
  43351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43352. - 02111-1307 USA. */
  43353. + License along with the GNU C Library; if not, see
  43354. + <http://www.gnu.org/licenses/>. */
  43355. #include <stdio.h>
  43356. #include <errno.h>
  43357. diff -Nur uClibc-0.9.33.2/libc/stdlib/pty-private.h uClibc/libc/stdlib/pty-private.h
  43358. --- uClibc-0.9.33.2/libc/stdlib/pty-private.h 2012-05-15 09:20:09.000000000 +0200
  43359. +++ uClibc/libc/stdlib/pty-private.h 2014-02-03 12:32:56.000000000 +0100
  43360. @@ -15,8 +15,7 @@
  43361. You should have received a copy of the GNU Library General Public
  43362. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43363. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43364. - Boston, MA 02111-1307, USA. */
  43365. + see <http://www.gnu.org/licenses/>. */
  43366. #ifndef _PTY_PRIVATE_H
  43367. #define _PTY_PRIVATE_H 1
  43368. diff -Nur uClibc-0.9.33.2/libc/stdlib/rand_r.c uClibc/libc/stdlib/rand_r.c
  43369. --- uClibc-0.9.33.2/libc/stdlib/rand_r.c 2012-05-15 09:20:09.000000000 +0200
  43370. +++ uClibc/libc/stdlib/rand_r.c 2014-02-03 12:32:56.000000000 +0100
  43371. @@ -14,9 +14,8 @@
  43372. Lesser General Public License for more details.
  43373. You should have received a copy of the GNU Lesser General Public
  43374. - License along with the GNU C Library; if not, write to the Free
  43375. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43376. - 02111-1307 USA. */
  43377. + License along with the GNU C Library; if not, see
  43378. + <http://www.gnu.org/licenses/>. */
  43379. #include <stdlib.h>
  43380. diff -Nur uClibc-0.9.33.2/libc/stdlib/rpmatch.c uClibc/libc/stdlib/rpmatch.c
  43381. --- uClibc-0.9.33.2/libc/stdlib/rpmatch.c 1970-01-01 01:00:00.000000000 +0100
  43382. +++ uClibc/libc/stdlib/rpmatch.c 2014-02-03 12:32:56.000000000 +0100
  43383. @@ -0,0 +1,7 @@
  43384. +/* Copyright (C) 2012 Bernhard Reutner-Fischer <uclibc@uclibc.org>
  43385. + *
  43386. + * Licensed under the LGPL v2.1+, see the file COPYING.LIB in this tarball.
  43387. + */
  43388. +
  43389. +#define L_rpmatch
  43390. +#include "stdlib.c"
  43391. diff -Nur uClibc-0.9.33.2/libc/stdlib/seed48.c uClibc/libc/stdlib/seed48.c
  43392. --- uClibc-0.9.33.2/libc/stdlib/seed48.c 2012-05-15 09:20:09.000000000 +0200
  43393. +++ uClibc/libc/stdlib/seed48.c 2014-02-03 12:32:56.000000000 +0100
  43394. @@ -13,9 +13,8 @@
  43395. Lesser General Public License for more details.
  43396. You should have received a copy of the GNU Lesser General Public
  43397. - License along with the GNU C Library; if not, write to the Free
  43398. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43399. - 02111-1307 USA. */
  43400. + License along with the GNU C Library; if not, see
  43401. + <http://www.gnu.org/licenses/>. */
  43402. #include <stdlib.h>
  43403. diff -Nur uClibc-0.9.33.2/libc/stdlib/seed48_r.c uClibc/libc/stdlib/seed48_r.c
  43404. --- uClibc-0.9.33.2/libc/stdlib/seed48_r.c 2012-05-15 09:20:09.000000000 +0200
  43405. +++ uClibc/libc/stdlib/seed48_r.c 2014-02-03 12:32:56.000000000 +0100
  43406. @@ -13,9 +13,8 @@
  43407. Lesser General Public License for more details.
  43408. You should have received a copy of the GNU Lesser General Public
  43409. - License along with the GNU C Library; if not, write to the Free
  43410. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43411. - 02111-1307 USA. */
  43412. + License along with the GNU C Library; if not, see
  43413. + <http://www.gnu.org/licenses/>. */
  43414. #include <stdlib.h>
  43415. #include <string.h>
  43416. diff -Nur uClibc-0.9.33.2/libc/stdlib/setenv.c uClibc/libc/stdlib/setenv.c
  43417. --- uClibc-0.9.33.2/libc/stdlib/setenv.c 2012-05-15 09:20:09.000000000 +0200
  43418. +++ uClibc/libc/stdlib/setenv.c 2014-02-03 12:32:56.000000000 +0100
  43419. @@ -12,9 +12,8 @@
  43420. Lesser General Public License for more details.
  43421. You should have received a copy of the GNU Lesser General Public
  43422. - License along with the GNU C Library; if not, write to the Free
  43423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43424. - 02111-1307 USA.
  43425. + License along with the GNU C Library; see the file COPYING.LIB. If
  43426. + not, see <http://www.gnu.org/licenses/>.
  43427. modified for uClibc by Erik Andersen <andersen@codepoet.org>
  43428. */
  43429. diff -Nur uClibc-0.9.33.2/libc/stdlib/srand48.c uClibc/libc/stdlib/srand48.c
  43430. --- uClibc-0.9.33.2/libc/stdlib/srand48.c 2012-05-15 09:20:09.000000000 +0200
  43431. +++ uClibc/libc/stdlib/srand48.c 2014-02-03 12:32:56.000000000 +0100
  43432. @@ -13,9 +13,8 @@
  43433. Lesser General Public License for more details.
  43434. You should have received a copy of the GNU Lesser General Public
  43435. - License along with the GNU C Library; if not, write to the Free
  43436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43437. - 02111-1307 USA. */
  43438. + License along with the GNU C Library; if not, see
  43439. + <http://www.gnu.org/licenses/>. */
  43440. #include <stdlib.h>
  43441. diff -Nur uClibc-0.9.33.2/libc/stdlib/srand48_r.c uClibc/libc/stdlib/srand48_r.c
  43442. --- uClibc-0.9.33.2/libc/stdlib/srand48_r.c 2012-05-15 09:20:09.000000000 +0200
  43443. +++ uClibc/libc/stdlib/srand48_r.c 2014-02-03 12:32:56.000000000 +0100
  43444. @@ -13,9 +13,8 @@
  43445. Lesser General Public License for more details.
  43446. You should have received a copy of the GNU Lesser General Public
  43447. - License along with the GNU C Library; if not, write to the Free
  43448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43449. - 02111-1307 USA. */
  43450. + License along with the GNU C Library; if not, see
  43451. + <http://www.gnu.org/licenses/>. */
  43452. #include <stdlib.h>
  43453. #include <limits.h>
  43454. diff -Nur uClibc-0.9.33.2/libc/stdlib/stdlib.c uClibc/libc/stdlib/stdlib.c
  43455. --- uClibc-0.9.33.2/libc/stdlib/stdlib.c 2012-05-15 09:20:09.000000000 +0200
  43456. +++ uClibc/libc/stdlib/stdlib.c 2014-02-03 12:32:56.000000000 +0100
  43457. @@ -12,8 +12,8 @@
  43458. * Library General Public License for more details.
  43459. *
  43460. * You should have received a copy of the GNU Library General Public
  43461. - * License along with this library; if not, write to the Free
  43462. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  43463. + * License along with this library; if not, see
  43464. + * <http://www.gnu.org/licenses/>.
  43465. */
  43466. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  43467. @@ -32,58 +32,8 @@
  43468. * Add wscto{inttype} functions.
  43469. */
  43470. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  43471. #include <limits.h>
  43472. #include <stdint.h>
  43473. -/* Work around gcc's refusal to create aliases.
  43474. - * TODO: Add in a define to disable the aliases? */
  43475. -
  43476. -#if UINT_MAX == ULONG_MAX
  43477. -#ifdef L_labs
  43478. -#define abs __ignore_abs
  43479. -#endif
  43480. -#ifdef L_atol
  43481. -#define atoi __ignore_atoi
  43482. -#endif
  43483. -#endif
  43484. -#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43485. -#ifdef L_labs
  43486. -#define llabs __ignore_llabs
  43487. -#endif
  43488. -#ifdef L_atol
  43489. -#define atoll __ignore_atoll
  43490. -#endif
  43491. -#ifdef L_strtol
  43492. -#define strtoll __ignore_strtoll
  43493. -#endif
  43494. -#ifdef L_strtoul
  43495. -#define strtoull __ignore_strtoull
  43496. -#endif
  43497. -#ifdef L_wcstol
  43498. -#define wcstoll __ignore_wcstoll
  43499. -#endif
  43500. -#ifdef L_wcstoul
  43501. -#define wcstoull __ignore_wcstoull
  43502. -#endif
  43503. -#ifdef L_strtol_l
  43504. -#define strtoll_l __ignore_strtoll_l
  43505. -#endif
  43506. -#ifdef L_strtoul_l
  43507. -#define strtoull_l __ignore_strtoull_l
  43508. -#endif
  43509. -#ifdef L_wcstol_l
  43510. -#define wcstoll_l __ignore_wcstoll_l
  43511. -#endif
  43512. -#ifdef L_wcstoul_l
  43513. -#define wcstoull_l __ignore_wcstoull_l
  43514. -#endif
  43515. -#endif
  43516. -#if defined(ULLONG_MAX) && (ULLONG_MAX == UINTMAX_MAX)
  43517. -#if defined L_labs || defined L_llabs
  43518. -#define imaxabs __ignore_imaxabs
  43519. -#endif
  43520. -#endif
  43521. -
  43522. #include <stdint.h>
  43523. #include <inttypes.h>
  43524. #include <ctype.h>
  43525. @@ -100,10 +50,6 @@
  43526. #include <wctype.h>
  43527. #include <bits/uClibc_uwchar.h>
  43528. -#ifdef __UCLIBC_HAS_XLOCALE__
  43529. -#include <xlocale.h>
  43530. -#endif /* __UCLIBC_HAS_XLOCALE__ */
  43531. -
  43532. /* TODO: clean up the following... */
  43533. #if WCHAR_MAX > 0xffffUL
  43534. @@ -226,21 +172,15 @@
  43535. }
  43536. #if UINT_MAX == ULONG_MAX
  43537. -#undef abs
  43538. -extern __typeof(labs) abs;
  43539. -strong_alias(labs,abs)
  43540. +strong_alias_untyped(labs,abs)
  43541. #endif
  43542. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43543. -#undef llabs
  43544. -extern __typeof(labs) llabs;
  43545. -strong_alias(labs,llabs)
  43546. +strong_alias_untyped(labs,llabs)
  43547. #endif
  43548. #if ULONG_MAX == UINTMAX_MAX
  43549. -#undef imaxabs
  43550. -extern __typeof(labs) imaxabs;
  43551. -strong_alias(labs,imaxabs)
  43552. +strong_alias_untyped(labs,imaxabs)
  43553. #endif
  43554. #endif
  43555. @@ -255,9 +195,7 @@
  43556. }
  43557. #if (ULLONG_MAX == UINTMAX_MAX)
  43558. -#undef imaxabs
  43559. -extern __typeof(llabs) imaxabs;
  43560. -strong_alias(llabs,imaxabs)
  43561. +strong_alias_untyped(llabs,imaxabs)
  43562. #endif
  43563. #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
  43564. @@ -288,18 +226,12 @@
  43565. }
  43566. #if UINT_MAX == ULONG_MAX
  43567. -#undef atoi
  43568. -extern __typeof(atol) atoi;
  43569. -/* the one in stdlib.h is not enough due to prototype mismatch */
  43570. -libc_hidden_proto(atoi)
  43571. -strong_alias(atol,atoi)
  43572. +strong_alias_untyped(atol,atoi)
  43573. libc_hidden_def(atoi)
  43574. #endif
  43575. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43576. -#undef atoll
  43577. -extern __typeof(atol) atoll;
  43578. -strong_alias(atol,atoll)
  43579. +strong_alias_untyped(atol,atoll)
  43580. #endif
  43581. #endif
  43582. @@ -318,9 +250,16 @@
  43583. #endif
  43584. /**********************************************************************/
  43585. +#ifdef L_rpmatch
  43586. +int rpmatch (const char *__response)
  43587. +{
  43588. + return (__response[0] == 'y' || __response[0] == 'Y') ? 1 :
  43589. + (__response[0] == 'n' || __response[0] == 'N') ? 0 : -1;
  43590. +}
  43591. +#endif
  43592. +/**********************************************************************/
  43593. #if defined(L_strtol) || defined(L_strtol_l)
  43594. -libc_hidden_proto(__XL_NPP(strtol))
  43595. long __XL_NPP(strtol)(const char * __restrict str, char ** __restrict endptr,
  43596. int base __LOCALE_PARAM)
  43597. {
  43598. @@ -333,17 +272,7 @@
  43599. #endif
  43600. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43601. -#ifdef L_strtol_l
  43602. -#undef strtoll_l
  43603. -#else
  43604. -#undef strtoll
  43605. -#endif
  43606. -extern __typeof(__XL_NPP(strtol)) __XL_NPP(strtoll);
  43607. -/* the one in stdlib.h is not enough due to prototype mismatch */
  43608. -#ifdef L_strtol
  43609. -libc_hidden_proto(__XL_NPP(strtoll))
  43610. -#endif
  43611. -strong_alias(__XL_NPP(strtol),__XL_NPP(strtoll))
  43612. +strong_alias_untyped(__XL_NPP(strtol),__XL_NPP(strtoll))
  43613. #ifdef L_strtol
  43614. libc_hidden_def(__XL_NPP(strtoll))
  43615. strong_alias(strtol,strtoq)
  43616. @@ -389,13 +318,7 @@
  43617. #endif
  43618. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43619. -#ifdef L_strtoul_l
  43620. -#undef strtoull_l
  43621. -#else
  43622. -#undef strtoull
  43623. -#endif
  43624. -extern __typeof(__XL_NPP(strtoul)) __XL_NPP(strtoull);
  43625. -strong_alias(__XL_NPP(strtoul),__XL_NPP(strtoull))
  43626. +strong_alias_untyped(__XL_NPP(strtoul),__XL_NPP(strtoull))
  43627. #if !defined(L_strtoul_l)
  43628. strong_alias(strtoul,strtouq)
  43629. #endif
  43630. @@ -744,16 +667,7 @@
  43631. #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
  43632. #endif
  43633. -/**********************************************************************/
  43634. -/* Made _Exit() an alias for _exit(), as per C99. */
  43635. -/* #ifdef L__Exit */
  43636. -/* void _Exit(int status) */
  43637. -/* { */
  43638. -/* _exit(status); */
  43639. -/* } */
  43640. -/* #endif */
  43641. -/**********************************************************************/
  43642. #ifdef L_bsearch
  43643. void *bsearch(const void *key, const void *base, size_t /* nmemb */ high,
  43644. @@ -1067,13 +981,7 @@
  43645. #endif
  43646. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43647. -#ifdef L_wcstol_l
  43648. -#undef wcstoll_l
  43649. -#else
  43650. -#undef wcstoll
  43651. -#endif
  43652. -extern __typeof(__XL_NPP(wcstol)) __XL_NPP(wcstoll);
  43653. -strong_alias(__XL_NPP(wcstol),__XL_NPP(wcstoll))
  43654. +strong_alias_untyped(__XL_NPP(wcstol),__XL_NPP(wcstoll))
  43655. #endif
  43656. #endif
  43657. @@ -1114,13 +1022,7 @@
  43658. #endif
  43659. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  43660. -#ifdef L_wcstoul_l
  43661. -#undef wcstoull_l
  43662. -#else
  43663. -#undef wcstoull
  43664. -#endif
  43665. -extern __typeof(__XL_NPP(wcstoul)) __XL_NPP(wcstoull);
  43666. -strong_alias(__XL_NPP(wcstoul),__XL_NPP(wcstoull))
  43667. +strong_alias_untyped(__XL_NPP(wcstoul),__XL_NPP(wcstoull))
  43668. #endif
  43669. #endif
  43670. diff -Nur uClibc-0.9.33.2/libc/stdlib/_strtod.c uClibc/libc/stdlib/_strtod.c
  43671. --- uClibc-0.9.33.2/libc/stdlib/_strtod.c 2012-05-15 09:20:09.000000000 +0200
  43672. +++ uClibc/libc/stdlib/_strtod.c 2014-02-03 12:32:56.000000000 +0100
  43673. @@ -95,7 +95,6 @@
  43674. /**********************************************************************/
  43675. -#define _ISOC99_SOURCE 1
  43676. #include <stdlib.h>
  43677. #include <string.h>
  43678. #include <ctype.h>
  43679. @@ -112,10 +111,6 @@
  43680. # include <bits/uClibc_uwchar.h>
  43681. #endif
  43682. -#ifdef __UCLIBC_HAS_XLOCALE__
  43683. -# include <xlocale.h>
  43684. -#endif
  43685. -
  43686. /* Handle _STRTOD_HEXADECIMAL_FLOATS via uClibc config now. */
  43687. #undef _STRTOD_HEXADECIMAL_FLOATS
  43688. #ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
  43689. @@ -509,7 +504,6 @@
  43690. #endif
  43691. -libc_hidden_proto(__XL_NPP(strtof))
  43692. float __XL_NPP(strtof)(const Wchar *str, Wchar **endptr __LOCALE_PARAM )
  43693. {
  43694. #if FPMAX_TYPE == 1
  43695. @@ -526,7 +520,6 @@
  43696. return y;
  43697. #endif
  43698. }
  43699. -libc_hidden_def(__XL_NPP(strtof))
  43700. #endif
  43701. #endif
  43702. diff -Nur uClibc-0.9.33.2/libc/stdlib/system.c uClibc/libc/stdlib/system.c
  43703. --- uClibc-0.9.33.2/libc/stdlib/system.c 2012-05-15 09:20:09.000000000 +0200
  43704. +++ uClibc/libc/stdlib/system.c 2014-02-03 12:32:56.000000000 +0100
  43705. @@ -24,11 +24,6 @@
  43706. * need to figure out why still
  43707. */
  43708. #if !defined __UCLIBC_HAS_THREADS_NATIVE__ || defined __sparc__
  43709. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  43710. -#include <sys/syscall.h>
  43711. -#ifndef __NR_vfork
  43712. -# define vfork fork
  43713. -#endif
  43714. int __libc_system(const char *command)
  43715. {
  43716. @@ -66,7 +61,7 @@
  43717. __printf("Waiting for child %d\n", pid);
  43718. #endif
  43719. - if (wait4(pid, &wait_val, 0, 0) == -1)
  43720. + if (__wait4_nocancel(pid, &wait_val, 0, 0) == -1)
  43721. wait_val = -1;
  43722. out:
  43723. diff -Nur uClibc-0.9.33.2/libc/stdlib/__uc_malloc.c uClibc/libc/stdlib/__uc_malloc.c
  43724. --- uClibc-0.9.33.2/libc/stdlib/__uc_malloc.c 2012-05-15 09:20:09.000000000 +0200
  43725. +++ uClibc/libc/stdlib/__uc_malloc.c 2014-02-03 12:32:56.000000000 +0100
  43726. @@ -13,8 +13,7 @@
  43727. You should have received a copy of the GNU Library General Public
  43728. License along with this library; see the file COPYING.LIB. If
  43729. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  43730. -Cambridge, MA 02139, USA.
  43731. +not, see <http://www.gnu.org/licenses/>.
  43732. */
  43733. diff -Nur uClibc-0.9.33.2/libc/stdlib/unix_grantpt.c uClibc/libc/stdlib/unix_grantpt.c
  43734. --- uClibc-0.9.33.2/libc/stdlib/unix_grantpt.c 2012-05-15 09:20:09.000000000 +0200
  43735. +++ uClibc/libc/stdlib/unix_grantpt.c 2014-02-03 12:32:56.000000000 +0100
  43736. @@ -14,8 +14,7 @@
  43737. You should have received a copy of the GNU Library General Public
  43738. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43739. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43740. - Boston, MA 02111-1307, USA. */
  43741. + see <http://www.gnu.org/licenses/>. */
  43742. #include <assert.h>
  43743. #include <errno.h>
  43744. @@ -31,12 +30,6 @@
  43745. #include "pty-private.h"
  43746. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  43747. -#include <sys/syscall.h>
  43748. -#if ! defined __NR_vfork
  43749. -#define vfork fork
  43750. -#endif
  43751. -
  43752. /* Return the result of ptsname_r in the buffer pointed to by PTS,
  43753. which should be of length BUF_LEN. If it is too long to fit in
  43754. this buffer, a sufficiently long buffer is allocated using malloc,
  43755. diff -Nur uClibc-0.9.33.2/libc/stdlib/unlockpt.c uClibc/libc/stdlib/unlockpt.c
  43756. --- uClibc-0.9.33.2/libc/stdlib/unlockpt.c 2012-05-15 09:20:09.000000000 +0200
  43757. +++ uClibc/libc/stdlib/unlockpt.c 2014-02-03 12:32:56.000000000 +0100
  43758. @@ -14,8 +14,7 @@
  43759. You should have received a copy of the GNU Library General Public
  43760. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43761. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43762. - Boston, MA 02111-1307, USA. */
  43763. + see <http://www.gnu.org/licenses/>. */
  43764. #include <errno.h>
  43765. #include <stdlib.h>
  43766. diff -Nur uClibc-0.9.33.2/libc/stdlib/valloc.c uClibc/libc/stdlib/valloc.c
  43767. --- uClibc-0.9.33.2/libc/stdlib/valloc.c 2012-05-15 09:20:09.000000000 +0200
  43768. +++ uClibc/libc/stdlib/valloc.c 2014-02-03 12:32:56.000000000 +0100
  43769. @@ -14,8 +14,7 @@
  43770. You should have received a copy of the GNU Library General Public
  43771. License along with this library; see the file COPYING.LIB. If
  43772. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  43773. -Cambridge, MA 02139, USA.
  43774. +not, see <http://www.gnu.org/licenses/>.
  43775. The author may be reached (Email) at the address mike@@ai.mit.edu,
  43776. or (US mail) as Mike Haertel c/o Free Software Foundation. */
  43777. diff -Nur uClibc-0.9.33.2/libc/string/arc/Makefile uClibc/libc/string/arc/Makefile
  43778. --- uClibc-0.9.33.2/libc/string/arc/Makefile 1970-01-01 01:00:00.000000000 +0100
  43779. +++ uClibc/libc/string/arc/Makefile 2014-02-03 12:32:56.000000000 +0100
  43780. @@ -0,0 +1,13 @@
  43781. +# Makefile for uClibc
  43782. +#
  43783. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  43784. +#
  43785. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43786. +#
  43787. +
  43788. +top_srcdir:=../../../
  43789. +top_builddir:=../../../
  43790. +all: objs
  43791. +include $(top_builddir)Rules.mak
  43792. +include ../Makefile.in
  43793. +include $(top_srcdir)Makerules
  43794. diff -Nur uClibc-0.9.33.2/libc/string/arc/memcmp.S uClibc/libc/string/arc/memcmp.S
  43795. --- uClibc-0.9.33.2/libc/string/arc/memcmp.S 1970-01-01 01:00:00.000000000 +0100
  43796. +++ uClibc/libc/string/arc/memcmp.S 2014-02-03 12:32:56.000000000 +0100
  43797. @@ -0,0 +1,128 @@
  43798. +/*
  43799. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43800. + * Copyright (C) 2007 ARC International (UK) LTD
  43801. + *
  43802. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43803. + */
  43804. +
  43805. +#include <sysdep.h>
  43806. +#include <features.h>
  43807. +
  43808. +#ifdef __LITTLE_ENDIAN__
  43809. +#define WORD2 r2
  43810. +#define SHIFT r3
  43811. +#else /* BIG ENDIAN */
  43812. +#define WORD2 r3
  43813. +#define SHIFT r2
  43814. +#endif
  43815. +
  43816. +ENTRY(memcmp)
  43817. + or r12,r0,r1
  43818. + asl_s r12,r12,30
  43819. + sub r3,r2,1
  43820. + brls r2,r12,.Lbytewise
  43821. + ld r4,[r0,0]
  43822. + ld r5,[r1,0]
  43823. + lsr.f lp_count,r3,3
  43824. + lpne .Loop_end
  43825. + ld_s WORD2,[r0,4]
  43826. + ld_s r12,[r1,4]
  43827. + brne r4,r5,.Leven
  43828. + ld.a r4,[r0,8]
  43829. + ld.a r5,[r1,8]
  43830. + brne WORD2,r12,.Lodd
  43831. +.Loop_end:
  43832. + asl_s SHIFT,SHIFT,3
  43833. + bhs_s .Last_cmp
  43834. + brne r4,r5,.Leven
  43835. + ld r4,[r0,4]
  43836. + ld r5,[r1,4]
  43837. +#ifdef __LITTLE_ENDIAN__
  43838. + nop_s
  43839. + ; one more load latency cycle
  43840. +.Last_cmp:
  43841. + xor r0,r4,r5
  43842. + bset r0,r0,SHIFT
  43843. + sub_s r1,r0,1
  43844. + bic_s r1,r1,r0
  43845. + norm r1,r1
  43846. + b.d .Leven_cmp
  43847. + and r1,r1,24
  43848. +.Leven:
  43849. + xor r0,r4,r5
  43850. + sub_s r1,r0,1
  43851. + bic_s r1,r1,r0
  43852. + norm r1,r1
  43853. + ; slow track insn
  43854. + and r1,r1,24
  43855. +.Leven_cmp:
  43856. + asl r2,r4,r1
  43857. + asl r12,r5,r1
  43858. + lsr_s r2,r2,1
  43859. + lsr_s r12,r12,1
  43860. + j_s.d [blink]
  43861. + sub r0,r2,r12
  43862. + .balign 4
  43863. +.Lodd:
  43864. + xor r0,WORD2,r12
  43865. + sub_s r1,r0,1
  43866. + bic_s r1,r1,r0
  43867. + norm r1,r1
  43868. + ; slow track insn
  43869. + and r1,r1,24
  43870. + asl_s r2,r2,r1
  43871. + asl_s r12,r12,r1
  43872. + lsr_s r2,r2,1
  43873. + lsr_s r12,r12,1
  43874. + j_s.d [blink]
  43875. + sub r0,r2,r12
  43876. +#else /* BIG ENDIAN */
  43877. +.Last_cmp:
  43878. + neg_s SHIFT,SHIFT
  43879. + lsr r4,r4,SHIFT
  43880. + lsr r5,r5,SHIFT
  43881. + ; slow track insn
  43882. +.Leven:
  43883. + sub.f r0,r4,r5
  43884. + mov.ne r0,1
  43885. + j_s.d [blink]
  43886. + bset.cs r0,r0,31
  43887. +.Lodd:
  43888. + cmp_s WORD2,r12
  43889. + mov_s r0,1
  43890. + j_s.d [blink]
  43891. + bset.cs r0,r0,31
  43892. +#endif /* ENDIAN */
  43893. + .balign 4
  43894. +.Lbytewise:
  43895. + breq r2,0,.Lnil
  43896. + ldb r4,[r0,0]
  43897. + ldb r5,[r1,0]
  43898. + lsr.f lp_count,r3
  43899. + lpne .Lbyte_end
  43900. + ldb_s r3,[r0,1]
  43901. + ldb r12,[r1,1]
  43902. + brne r4,r5,.Lbyte_even
  43903. + ldb.a r4,[r0,2]
  43904. + ldb.a r5,[r1,2]
  43905. + brne r3,r12,.Lbyte_odd
  43906. +.Lbyte_end:
  43907. + bcc .Lbyte_even
  43908. + brne r4,r5,.Lbyte_even
  43909. + ldb_s r3,[r0,1]
  43910. + ldb_s r12,[r1,1]
  43911. +.Lbyte_odd:
  43912. + j_s.d [blink]
  43913. + sub r0,r3,r12
  43914. +.Lbyte_even:
  43915. + j_s.d [blink]
  43916. + sub r0,r4,r5
  43917. +.Lnil:
  43918. + j_s.d [blink]
  43919. + mov r0,0
  43920. +END(memcmp)
  43921. +libc_hidden_def(memcmp)
  43922. +
  43923. +#ifdef __UCLIBC_SUSV3_LEGACY__
  43924. +strong_alias(memcmp,bcmp)
  43925. +#endif
  43926. diff -Nur uClibc-0.9.33.2/libc/string/arc/memcpy.S uClibc/libc/string/arc/memcpy.S
  43927. --- uClibc-0.9.33.2/libc/string/arc/memcpy.S 1970-01-01 01:00:00.000000000 +0100
  43928. +++ uClibc/libc/string/arc/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  43929. @@ -0,0 +1,71 @@
  43930. +/*
  43931. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43932. + * Copyright (C) 2007 ARC International (UK) LTD
  43933. + *
  43934. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43935. + */
  43936. +
  43937. +#include <sysdep.h>
  43938. +
  43939. +/* This memcpy implementation does not support objects of 1GB or larger -
  43940. + the check for alignment does not work then. */
  43941. +/* We assume that most sources and destinations are aligned, and
  43942. + that also lengths are mostly a multiple of four, although to a lesser
  43943. + extent. */
  43944. +ENTRY(memcpy)
  43945. + or r3,r0,r1
  43946. + asl_s r3,r3,30
  43947. + mov_s r5,r0
  43948. + brls.d r2,r3,.Lcopy_bytewise
  43949. + sub.f r3,r2,1
  43950. + ld_s r12,[r1,0]
  43951. + asr.f lp_count,r3,3
  43952. + bbit0.d r3,2,.Lnox4
  43953. + bmsk_s r2,r2,1
  43954. + st.ab r12,[r5,4]
  43955. + ld.a r12,[r1,4]
  43956. +.Lnox4:
  43957. + lppnz .Lendloop
  43958. + ld_s r3,[r1,4]
  43959. + st.ab r12,[r5,4]
  43960. + ld.a r12,[r1,8]
  43961. + st.ab r3,[r5,4]
  43962. +.Lendloop:
  43963. + breq r2,0,.Last_store
  43964. + ld r3,[r5,0]
  43965. +#ifdef __LITTLE_ENDIAN__
  43966. + add3 r2,-1,r2
  43967. + ; uses long immediate
  43968. + xor_s r12,r12,r3
  43969. + bmsk r12,r12,r2
  43970. + xor_s r12,r12,r3
  43971. +#else /* BIG ENDIAN */
  43972. + sub3 r2,31,r2
  43973. + ; uses long immediate
  43974. + xor_s r3,r3,r12
  43975. + bmsk r3,r3,r2
  43976. + xor_s r12,r12,r3
  43977. +#endif /* ENDIAN */
  43978. +.Last_store:
  43979. + j_s.d [blink]
  43980. + st r12,[r5,0]
  43981. +
  43982. + .balign 4
  43983. +.Lcopy_bytewise:
  43984. + jcs [blink]
  43985. + ldb_s r12,[r1,0]
  43986. + lsr.f lp_count,r3
  43987. + bhs_s .Lnox1
  43988. + stb.ab r12,[r5,1]
  43989. + ldb.a r12,[r1,1]
  43990. +.Lnox1:
  43991. + lppnz .Lendbloop
  43992. + ldb_s r3,[r1,1]
  43993. + stb.ab r12,[r5,1]
  43994. + ldb.a r12,[r1,2]
  43995. + stb.ab r3,[r5,1]
  43996. +.Lendbloop:
  43997. + j_s.d [blink]
  43998. + stb r12,[r5,0]
  43999. +END(memcpy)
  44000. +libc_hidden_def(memcpy)
  44001. diff -Nur uClibc-0.9.33.2/libc/string/arc/memset.S uClibc/libc/string/arc/memset.S
  44002. --- uClibc-0.9.33.2/libc/string/arc/memset.S 1970-01-01 01:00:00.000000000 +0100
  44003. +++ uClibc/libc/string/arc/memset.S 2014-02-03 12:32:56.000000000 +0100
  44004. @@ -0,0 +1,51 @@
  44005. +/*
  44006. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  44007. + * Copyright (C) 2007 ARC International (UK) LTD
  44008. + *
  44009. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44010. + */
  44011. +
  44012. +#include <sysdep.h>
  44013. +
  44014. +#define SMALL 7 /* Must be at least 6 to deal with alignment/loop issues. */
  44015. +
  44016. +ENTRY(memset)
  44017. +
  44018. + mov_s r4,r0
  44019. + or r12,r0,r2
  44020. + bmsk.f r12,r12,1
  44021. + extb_s r1,r1
  44022. + asl r3,r1,8
  44023. + beq.d .Laligned
  44024. + or_s r1,r1,r3
  44025. + brls r2,SMALL,.Ltiny
  44026. + add r3,r2,r0
  44027. + stb r1,[r3,-1]
  44028. + bclr_s r3,r3,0
  44029. + stw r1,[r3,-2]
  44030. + bmsk.f r12,r0,1
  44031. + add_s r2,r2,r12
  44032. + sub.ne r2,r2,4
  44033. + stb.ab r1,[r4,1]
  44034. + and r4,r4,-2
  44035. + stw.ab r1,[r4,2]
  44036. + and r4,r4,-4
  44037. +.Laligned: ; This code address should be aligned for speed.
  44038. + asl r3,r1,16
  44039. + lsr.f lp_count,r2,2
  44040. + or_s r1,r1,r3
  44041. + lpne .Loop_end
  44042. + st.ab r1,[r4,4]
  44043. +.Loop_end:
  44044. + j_s [blink]
  44045. +
  44046. +
  44047. + .balign 4
  44048. +.Ltiny:
  44049. + mov.f lp_count,r2
  44050. + lpne .Ltiny_end
  44051. + stb.ab r1,[r4,1]
  44052. +.Ltiny_end:
  44053. + j_s [blink]
  44054. +END(memset)
  44055. +libc_hidden_def(memset)
  44056. diff -Nur uClibc-0.9.33.2/libc/string/arc/strchr.S uClibc/libc/string/arc/strchr.S
  44057. --- uClibc-0.9.33.2/libc/string/arc/strchr.S 1970-01-01 01:00:00.000000000 +0100
  44058. +++ uClibc/libc/string/arc/strchr.S 2014-02-03 12:32:56.000000000 +0100
  44059. @@ -0,0 +1,138 @@
  44060. +/*
  44061. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  44062. + * Copyright (C) 2007 ARC International (UK) LTD
  44063. + *
  44064. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44065. + */
  44066. +
  44067. +#include <sysdep.h>
  44068. +#include <features.h>
  44069. +
  44070. +/* ARC700 has a relatively long pipeline and branch prediction, so we want
  44071. + to avoid branches that are hard to predict. On the other hand, the
  44072. + presence of the norm instruction makes it easier to operate on whole
  44073. + words branch-free. */
  44074. +
  44075. +ENTRY(strchr)
  44076. + extb_s r1,r1
  44077. + asl r5,r1,8
  44078. + bmsk r2,r0,1
  44079. + or r5,r5,r1
  44080. + mov_s r3,0x01010101
  44081. + breq.d r2,r0,.Laligned
  44082. + asl r4,r5,16
  44083. + sub_s r0,r0,r2
  44084. + asl r7,r2,3
  44085. + ld_s r2,[r0]
  44086. +#ifdef __LITTLE_ENDIAN__
  44087. + asl r7,r3,r7
  44088. +#else
  44089. + lsr r7,r3,r7
  44090. +#endif
  44091. + or r5,r5,r4
  44092. + ror r4,r3
  44093. + sub r12,r2,r7
  44094. + bic_s r12,r12,r2
  44095. + and r12,r12,r4
  44096. + brne.d r12,0,.Lfound0_ua
  44097. + xor r6,r2,r5
  44098. + ld.a r2,[r0,4]
  44099. + sub r12,r6,r7
  44100. + bic r12,r12,r6
  44101. +#ifdef __LITTLE_ENDIAN__
  44102. + and r7,r12,r4
  44103. + breq r7,0,.Loop ; For speed, we want this branch to be unaligned.
  44104. + b .Lfound_char ; Likewise this one.
  44105. +#else
  44106. + and r12,r12,r4
  44107. + breq r12,0,.Loop ; For speed, we want this branch to be unaligned.
  44108. + lsr_s r12,r12,7
  44109. + bic r2,r7,r6
  44110. + b.d .Lfound_char_b
  44111. + and_s r2,r2,r12
  44112. +#endif
  44113. +; /* We require this code address to be unaligned for speed... */
  44114. +.Laligned:
  44115. + ld_s r2,[r0]
  44116. + or r5,r5,r4
  44117. + ror r4,r3
  44118. +; /* ... so that this code address is aligned, for itself and ... */
  44119. +.Loop:
  44120. + sub r12,r2,r3
  44121. + bic_s r12,r12,r2
  44122. + and r12,r12,r4
  44123. + brne.d r12,0,.Lfound0
  44124. + xor r6,r2,r5
  44125. + ld.a r2,[r0,4]
  44126. + sub r12,r6,r3
  44127. + bic r12,r12,r6
  44128. + and r7,r12,r4
  44129. + breq r7,0,.Loop /* ... so that this branch is unaligned. */
  44130. + ; Found searched-for character. r0 has already advanced to next word.
  44131. +#ifdef __LITTLE_ENDIAN__
  44132. +/* We only need the information about the first matching byte
  44133. + (i.e. the least significant matching byte) to be exact,
  44134. + hence there is no problem with carry effects. */
  44135. +.Lfound_char:
  44136. + sub r3,r7,1
  44137. + bic r3,r3,r7
  44138. + norm r2,r3
  44139. + sub_s r0,r0,1
  44140. + asr_s r2,r2,3
  44141. + j.d [blink]
  44142. + sub_s r0,r0,r2
  44143. +
  44144. + .balign 4
  44145. +.Lfound0_ua:
  44146. + mov r3,r7
  44147. +.Lfound0:
  44148. + sub r3,r6,r3
  44149. + bic r3,r3,r6
  44150. + and r2,r3,r4
  44151. + or_s r12,r12,r2
  44152. + sub_s r3,r12,1
  44153. + bic_s r3,r3,r12
  44154. + norm r3,r3
  44155. + add_s r0,r0,3
  44156. + asr_s r12,r3,3
  44157. + asl.f 0,r2,r3
  44158. + sub_s r0,r0,r12
  44159. + j_s.d [blink]
  44160. + mov.pl r0,0
  44161. +#else /* BIG ENDIAN */
  44162. +.Lfound_char:
  44163. + lsr r7,r7,7
  44164. +
  44165. + bic r2,r7,r6
  44166. +.Lfound_char_b:
  44167. + norm r2,r2
  44168. + sub_s r0,r0,4
  44169. + asr_s r2,r2,3
  44170. + j.d [blink]
  44171. + add_s r0,r0,r2
  44172. +
  44173. +.Lfound0_ua:
  44174. + mov_s r3,r7
  44175. +.Lfound0:
  44176. + asl_s r2,r2,7
  44177. + or r7,r6,r4
  44178. + bic_s r12,r12,r2
  44179. + sub r2,r7,r3
  44180. + or r2,r2,r6
  44181. + bic r12,r2,r12
  44182. + bic.f r3,r4,r12
  44183. + norm r3,r3
  44184. +
  44185. + add.pl r3,r3,1
  44186. + asr_s r12,r3,3
  44187. + asl.f 0,r2,r3
  44188. + add_s r0,r0,r12
  44189. + j_s.d [blink]
  44190. + mov.mi r0,0
  44191. +#endif /* ENDIAN */
  44192. +END(strchr)
  44193. +libc_hidden_def(strchr)
  44194. +
  44195. +#ifdef __UCLIBC_SUSV3_LEGACY__
  44196. +strong_alias(strchr,index)
  44197. +#endif
  44198. diff -Nur uClibc-0.9.33.2/libc/string/arc/strcmp.S uClibc/libc/string/arc/strcmp.S
  44199. --- uClibc-0.9.33.2/libc/string/arc/strcmp.S 1970-01-01 01:00:00.000000000 +0100
  44200. +++ uClibc/libc/string/arc/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  44201. @@ -0,0 +1,102 @@
  44202. +/*
  44203. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  44204. + * Copyright (C) 2007 ARC International (UK) LTD
  44205. + *
  44206. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44207. + */
  44208. +
  44209. +#include <features.h>
  44210. +#include <sysdep.h>
  44211. +
  44212. +/* This is optimized primarily for the ARC700.
  44213. + It would be possible to speed up the loops by one cycle / word
  44214. + respective one cycle / byte by forcing double source 1 alignment, unrolling
  44215. + by a factor of two, and speculatively loading the second word / byte of
  44216. + source 1; however, that would increase the overhead for loop setup / finish,
  44217. + and strcmp might often terminate early. */
  44218. +
  44219. +ENTRY(strcmp)
  44220. + or r2,r0,r1
  44221. + bmsk_s r2,r2,1
  44222. + brne r2,0,.Lcharloop
  44223. + mov_s r12,0x01010101
  44224. + ror r5,r12
  44225. +.Lwordloop:
  44226. + ld.ab r2,[r0,4]
  44227. + ld.ab r3,[r1,4]
  44228. + nop_s
  44229. + sub r4,r2,r12
  44230. + bic r4,r4,r2
  44231. + and r4,r4,r5
  44232. + brne r4,0,.Lfound0
  44233. + breq r2,r3,.Lwordloop
  44234. +#ifdef __LITTLE_ENDIAN__
  44235. + xor r0,r2,r3 ; mask for difference
  44236. + sub_s r1,r0,1
  44237. + bic_s r0,r0,r1 ; mask for least significant difference bit
  44238. + sub r1,r5,r0
  44239. + xor r0,r5,r1 ; mask for least significant difference byte
  44240. + and_s r2,r2,r0
  44241. + and_s r3,r3,r0
  44242. +#endif /* LITTLE ENDIAN */
  44243. + cmp_s r2,r3
  44244. + mov_s r0,1
  44245. + j_s.d [blink]
  44246. + bset.lo r0,r0,31
  44247. +
  44248. + .balign 4
  44249. +#ifdef __LITTLE_ENDIAN__
  44250. +.Lfound0:
  44251. + xor r0,r2,r3 ; mask for difference
  44252. + or r0,r0,r4 ; or in zero indicator
  44253. + sub_s r1,r0,1
  44254. + bic_s r0,r0,r1 ; mask for least significant difference bit
  44255. + sub r1,r5,r0
  44256. + xor r0,r5,r1 ; mask for least significant difference byte
  44257. + and_s r2,r2,r0
  44258. + and_s r3,r3,r0
  44259. + sub.f r0,r2,r3
  44260. + mov.hi r0,1
  44261. + j_s.d [blink]
  44262. + bset.lo r0,r0,31
  44263. +#else /* BIG ENDIAN */
  44264. + /* The zero-detection above can mis-detect 0x01 bytes as zeroes
  44265. + because of carry-propagateion from a lower significant zero byte.
  44266. + We can compensate for this by checking that bit0 is zero.
  44267. + This compensation is not necessary in the step where we
  44268. + get a low estimate for r2, because in any affected bytes
  44269. + we already have 0x00 or 0x01, which will remain unchanged
  44270. + when bit 7 is cleared. */
  44271. + .balign 4
  44272. +.Lfound0:
  44273. + lsr r0,r4,8
  44274. + lsr_s r1,r2
  44275. + bic_s r2,r2,r0 ; get low estimate for r2 and get ...
  44276. + bic_s r0,r0,r1 ; <this is the adjusted mask for zeros>
  44277. + or_s r3,r3,r0 ; ... high estimate r3 so that r2 > r3 will ...
  44278. + cmp_s r3,r2 ; ... be independent of trailing garbage
  44279. + or_s r2,r2,r0 ; likewise for r3 > r2
  44280. + bic_s r3,r3,r0
  44281. + rlc r0,0 ; r0 := r2 > r3 ? 1 : 0
  44282. + cmp_s r2,r3
  44283. + j_s.d [blink]
  44284. + bset.lo r0,r0,31
  44285. +#endif /* ENDIAN */
  44286. +
  44287. + .balign 4
  44288. +.Lcharloop:
  44289. + ldb.ab r2,[r0,1]
  44290. + ldb.ab r3,[r1,1]
  44291. + nop_s
  44292. + breq r2,0,.Lcmpend
  44293. + breq r2,r3,.Lcharloop
  44294. +.Lcmpend:
  44295. + j_s.d [blink]
  44296. + sub r0,r2,r3
  44297. +END(strcmp)
  44298. +libc_hidden_def(strcmp)
  44299. +
  44300. +#ifndef __UCLIBC_HAS_LOCALE__
  44301. +strong_alias(strcmp,strcoll)
  44302. +libc_hidden_def(strcoll)
  44303. +#endif
  44304. diff -Nur uClibc-0.9.33.2/libc/string/arc/strcpy.S uClibc/libc/string/arc/strcpy.S
  44305. --- uClibc-0.9.33.2/libc/string/arc/strcpy.S 1970-01-01 01:00:00.000000000 +0100
  44306. +++ uClibc/libc/string/arc/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  44307. @@ -0,0 +1,71 @@
  44308. +/*
  44309. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  44310. + * Copyright (C) 2007 ARC International (UK) LTD
  44311. + *
  44312. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44313. + */
  44314. +
  44315. +
  44316. +#include <sysdep.h>
  44317. +
  44318. +/* If dst and src are 4 byte aligned, copy 8 bytes at a time.
  44319. + If the src is 4, but not 8 byte aligned, we first read 4 bytes to get
  44320. + it 8 byte aligned. Thus, we can do a little read-ahead, without
  44321. + dereferencing a cache line that we should not touch.
  44322. + Note that short and long instructions have been scheduled to avoid
  44323. + branch stalls.
  44324. + The beq_s to r3z could be made unaligned & long to avoid a stall
  44325. + there, but the it is not likely to be taken often, and it
  44326. + would also be likey to cost an unaligned mispredict at the next call. */
  44327. +
  44328. +ENTRY(strcpy)
  44329. + or r2,r0,r1
  44330. + bmsk_s r2,r2,1
  44331. + brne.d r2,0,charloop
  44332. + mov_s r10,r0
  44333. + ld_s r3,[r1,0]
  44334. + mov r8,0x01010101
  44335. + bbit0.d r1,2,loop_start
  44336. + ror r12,r8
  44337. + sub r2,r3,r8
  44338. + bic_s r2,r2,r3
  44339. + tst_s r2,r12
  44340. + bne r3z
  44341. + mov_s r4,r3
  44342. + .balign 4
  44343. +loop:
  44344. + ld.a r3,[r1,4]
  44345. + st.ab r4,[r10,4]
  44346. +loop_start:
  44347. + ld.a r4,[r1,4]
  44348. + sub r2,r3,r8
  44349. + bic_s r2,r2,r3
  44350. + tst_s r2,r12
  44351. + bne_s r3z
  44352. + st.ab r3,[r10,4]
  44353. + sub r2,r4,r8
  44354. + bic r2,r2,r4
  44355. + tst r2,r12
  44356. + beq loop
  44357. + mov_s r3,r4
  44358. +#ifdef __LITTLE_ENDIAN__
  44359. +r3z: bmsk.f r1,r3,7
  44360. + lsr_s r3,r3,8
  44361. +#else
  44362. +r3z: lsr.f r1,r3,24
  44363. + asl_s r3,r3,8
  44364. +#endif
  44365. + bne.d r3z
  44366. + stb.ab r1,[r10,1]
  44367. + j_s [blink]
  44368. +
  44369. + .balign 4
  44370. +charloop:
  44371. + ldb.ab r3,[r1,1]
  44372. +
  44373. +
  44374. + brne.d r3,0,charloop
  44375. + stb.ab r3,[r10,1]
  44376. + j [blink]
  44377. +END(strcpy)
  44378. +libc_hidden_def(strcpy)
  44379. diff -Nur uClibc-0.9.33.2/libc/string/arc/strlen.S uClibc/libc/string/arc/strlen.S
  44380. --- uClibc-0.9.33.2/libc/string/arc/strlen.S 1970-01-01 01:00:00.000000000 +0100
  44381. +++ uClibc/libc/string/arc/strlen.S 2014-02-03 12:32:56.000000000 +0100
  44382. @@ -0,0 +1,84 @@
  44383. +/*
  44384. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  44385. + * Copyright (C) 2007 ARC International (UK) LTD
  44386. + *
  44387. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44388. + */
  44389. +
  44390. +
  44391. +#include <sysdep.h>
  44392. +
  44393. +ENTRY(strlen)
  44394. + or r3,r0,7
  44395. + ld r2,[r3,-7]
  44396. + ld.a r6,[r3,-3]
  44397. + mov r4,0x01010101
  44398. + ; uses long immediate
  44399. +#ifdef __LITTLE_ENDIAN__
  44400. + asl_s r1,r0,3
  44401. + btst_s r0,2
  44402. + asl r7,r4,r1
  44403. + ror r5,r4
  44404. + sub r1,r2,r7
  44405. + bic_s r1,r1,r2
  44406. + mov.eq r7,r4
  44407. + sub r12,r6,r7
  44408. + bic r12,r12,r6
  44409. + or.eq r12,r12,r1
  44410. + and r12,r12,r5
  44411. + brne r12,0,.Learly_end
  44412. +#else /* BIG ENDIAN */
  44413. + ror r5,r4
  44414. + btst_s r0,2
  44415. + mov_s r1,31
  44416. + sub3 r7,r1,r0
  44417. + sub r1,r2,r4
  44418. + bic_s r1,r1,r2
  44419. + bmsk r1,r1,r7
  44420. + sub r12,r6,r4
  44421. + bic r12,r12,r6
  44422. + bmsk.ne r12,r12,r7
  44423. + or.eq r12,r12,r1
  44424. + and r12,r12,r5
  44425. + brne r12,0,.Learly_end
  44426. +#endif /* ENDIAN */
  44427. +
  44428. +.Loop:
  44429. + ld_s r2,[r3,4]
  44430. + ld.a r6,[r3,8]
  44431. + ; stall for load result
  44432. + sub r1,r2,r4
  44433. + bic_s r1,r1,r2
  44434. + sub r12,r6,r4
  44435. + bic r12,r12,r6
  44436. + or r12,r12,r1
  44437. + and r12,r12,r5
  44438. + breq r12,0,.Loop
  44439. +.Lend:
  44440. + and.f r1,r1,r5
  44441. + sub.ne r3,r3,4
  44442. + mov.eq r1,r12
  44443. +#ifdef __LITTLE_ENDIAN__
  44444. + sub_s r2,r1,1
  44445. + bic_s r2,r2,r1
  44446. + norm r1,r2
  44447. + sub_s r0,r0,3
  44448. + lsr_s r1,r1,3
  44449. + sub r0,r3,r0
  44450. + j_s.d [blink]
  44451. + sub r0,r0,r1
  44452. +#else /* BIG ENDIAN */
  44453. + lsr_s r1,r1,7
  44454. + mov.eq r2,r6
  44455. + bic_s r1,r1,r2
  44456. + norm r1,r1
  44457. + sub r0,r3,r0
  44458. + lsr_s r1,r1,3
  44459. + j_s.d [blink]
  44460. + add r0,r0,r1
  44461. +#endif /* ENDIAN */
  44462. +.Learly_end:
  44463. + b.d .Lend
  44464. + sub_s.ne r1,r1,r1
  44465. +END(strlen)
  44466. +libc_hidden_def(strlen)
  44467. diff -Nur uClibc-0.9.33.2/libc/string/arm/memset.S uClibc/libc/string/arm/memset.S
  44468. --- uClibc-0.9.33.2/libc/string/arm/memset.S 2012-05-15 09:20:09.000000000 +0200
  44469. +++ uClibc/libc/string/arm/memset.S 2014-02-03 12:32:56.000000000 +0100
  44470. @@ -13,9 +13,8 @@
  44471. Lesser General Public License for more details.
  44472. You should have received a copy of the GNU Lesser General Public
  44473. - License along with the GNU C Library; if not, write to the Free
  44474. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44475. - 02111-1307 USA. */
  44476. + License along with the GNU C Library; if not, see
  44477. + <http://www.gnu.org/licenses/>. */
  44478. #include <features.h>
  44479. #include <sys/syscall.h>
  44480. diff -Nur uClibc-0.9.33.2/libc/string/arm/strlen.S uClibc/libc/string/arm/strlen.S
  44481. --- uClibc-0.9.33.2/libc/string/arm/strlen.S 2012-05-15 09:20:09.000000000 +0200
  44482. +++ uClibc/libc/string/arm/strlen.S 2014-02-03 12:32:56.000000000 +0100
  44483. @@ -13,9 +13,8 @@
  44484. Lesser General Public License for more details.
  44485. You should have received a copy of the GNU Lesser General Public
  44486. - License along with the GNU C Library; if not, write to the Free
  44487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44488. - 02111-1307 USA. */
  44489. + License along with the GNU C Library; if not, see
  44490. + <http://www.gnu.org/licenses/>. */
  44491. #include <features.h>
  44492. #include <endian.h>
  44493. diff -Nur uClibc-0.9.33.2/libc/string/avr32/Makefile uClibc/libc/string/avr32/Makefile
  44494. --- uClibc-0.9.33.2/libc/string/avr32/Makefile 2012-05-15 09:20:09.000000000 +0200
  44495. +++ uClibc/libc/string/avr32/Makefile 2014-02-03 12:32:56.000000000 +0100
  44496. @@ -13,8 +13,7 @@
  44497. # details.
  44498. #
  44499. # You should have received a copy of the GNU Library General Public License
  44500. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  44501. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  44502. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  44503. top_srcdir := ../../../
  44504. top_builddir := ../../../
  44505. diff -Nur uClibc-0.9.33.2/libc/string/basename.c uClibc/libc/string/basename.c
  44506. --- uClibc-0.9.33.2/libc/string/basename.c 2012-05-15 09:20:09.000000000 +0200
  44507. +++ uClibc/libc/string/basename.c 2014-02-03 12:32:56.000000000 +0100
  44508. @@ -5,7 +5,7 @@
  44509. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44510. */
  44511. -#include "_string.h"
  44512. +#include <string.h>
  44513. #ifdef __USE_GNU
  44514. @@ -24,5 +24,4 @@
  44515. return (char *) p;
  44516. }
  44517. -libc_hidden_def(basename)
  44518. #endif
  44519. diff -Nur uClibc-0.9.33.2/libc/string/bcopy.c uClibc/libc/string/bcopy.c
  44520. --- uClibc-0.9.33.2/libc/string/bcopy.c 2012-05-15 09:20:09.000000000 +0200
  44521. +++ uClibc/libc/string/bcopy.c 2014-02-03 12:32:56.000000000 +0100
  44522. @@ -5,11 +5,9 @@
  44523. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44524. */
  44525. -#include "_string.h"
  44526. +#include <string.h>
  44527. #ifdef __UCLIBC_SUSV3_LEGACY__
  44528. -
  44529. -
  44530. void bcopy(const void *s2, void *s1, size_t n)
  44531. {
  44532. #if 1
  44533. diff -Nur uClibc-0.9.33.2/libc/string/bzero.c uClibc/libc/string/bzero.c
  44534. --- uClibc-0.9.33.2/libc/string/bzero.c 2012-05-15 09:20:09.000000000 +0200
  44535. +++ uClibc/libc/string/bzero.c 2014-02-03 12:32:56.000000000 +0100
  44536. @@ -5,7 +5,7 @@
  44537. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44538. */
  44539. -#include "_string.h"
  44540. +#include <string.h>
  44541. #ifdef __UCLIBC_SUSV3_LEGACY__
  44542. void bzero(void *s, size_t n)
  44543. diff -Nur uClibc-0.9.33.2/libc/string/_collate.c uClibc/libc/string/_collate.c
  44544. --- uClibc-0.9.33.2/libc/string/_collate.c 2012-05-15 09:20:09.000000000 +0200
  44545. +++ uClibc/libc/string/_collate.c 2014-02-03 12:32:56.000000000 +0100
  44546. @@ -159,7 +159,7 @@
  44547. #define N (1)
  44548. #else /* WANT_WIDE */
  44549. wchar_t WC;
  44550. - size_t n0, nx;
  44551. + size_t n0, nx = 0;
  44552. #define N n0
  44553. #endif /* WANT_WIDE */
  44554. diff -Nur uClibc-0.9.33.2/libc/string/cris/memcopy.h uClibc/libc/string/cris/memcopy.h
  44555. --- uClibc-0.9.33.2/libc/string/cris/memcopy.h 2012-05-15 09:20:09.000000000 +0200
  44556. +++ uClibc/libc/string/cris/memcopy.h 2014-02-03 12:32:56.000000000 +0100
  44557. @@ -16,8 +16,7 @@
  44558. You should have received a copy of the GNU Library General Public
  44559. License along with the GNU C Library; see the file COPYING.LIB. If not,
  44560. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  44561. - Boston, MA 02111-1307, USA. */
  44562. + see <http://www.gnu.org/licenses/>. */
  44563. #include "../generic/memcopy.h"
  44564. diff -Nur uClibc-0.9.33.2/libc/string/cris/memmove.c uClibc/libc/string/cris/memmove.c
  44565. --- uClibc-0.9.33.2/libc/string/cris/memmove.c 2012-05-15 09:20:09.000000000 +0200
  44566. +++ uClibc/libc/string/cris/memmove.c 2014-02-03 12:32:56.000000000 +0100
  44567. @@ -18,9 +18,8 @@
  44568. Lesser General Public License for more details.
  44569. You should have received a copy of the GNU Lesser General Public
  44570. - License along with the GNU C Library; if not, write to the Free
  44571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44572. - 02111-1307 USA. */
  44573. + License along with the GNU C Library; if not, see
  44574. + <http://www.gnu.org/licenses/>. */
  44575. #include <string.h>
  44576. diff -Nur uClibc-0.9.33.2/libc/string/dirname.c uClibc/libc/string/dirname.c
  44577. --- uClibc-0.9.33.2/libc/string/dirname.c 2012-05-15 09:20:09.000000000 +0200
  44578. +++ uClibc/libc/string/dirname.c 2014-02-03 12:32:56.000000000 +0100
  44579. @@ -5,7 +5,8 @@
  44580. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44581. */
  44582. -#include "_string.h"
  44583. +#define __need_NULL
  44584. +#include <stddef.h>
  44585. #include <libgen.h>
  44586. char *dirname(char *path)
  44587. diff -Nur uClibc-0.9.33.2/libc/string/ffsll.c uClibc/libc/string/ffsll.c
  44588. --- uClibc-0.9.33.2/libc/string/ffsll.c 2012-05-15 09:20:09.000000000 +0200
  44589. +++ uClibc/libc/string/ffsll.c 2014-02-03 12:32:56.000000000 +0100
  44590. @@ -13,9 +13,8 @@
  44591. Lesser General Public License for more details.
  44592. You should have received a copy of the GNU Lesser General Public
  44593. - License along with the GNU C Library; if not, write to the Free
  44594. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44595. - 02111-1307 USA. */
  44596. + License along with the GNU C Library; if not, see
  44597. + <http://www.gnu.org/licenses/>. */
  44598. #include <limits.h>
  44599. #include <string.h>
  44600. diff -Nur uClibc-0.9.33.2/libc/string/frv/memcpy.S uClibc/libc/string/frv/memcpy.S
  44601. --- uClibc-0.9.33.2/libc/string/frv/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  44602. +++ uClibc/libc/string/frv/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  44603. @@ -14,8 +14,8 @@
  44604. * Library General Public License for more details.
  44605. *
  44606. * You should have received a copy of the GNU Library General Public
  44607. - * License along with this library; if not, write to the Free
  44608. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  44609. + * License along with this library; if not, see
  44610. + * <http://www.gnu.org/licenses/>.
  44611. */
  44612. #include <features.h>
  44613. diff -Nur uClibc-0.9.33.2/libc/string/frv/memset.S uClibc/libc/string/frv/memset.S
  44614. --- uClibc-0.9.33.2/libc/string/frv/memset.S 2012-05-15 09:20:09.000000000 +0200
  44615. +++ uClibc/libc/string/frv/memset.S 2014-02-03 12:32:56.000000000 +0100
  44616. @@ -14,8 +14,8 @@
  44617. * Library General Public License for more details.
  44618. *
  44619. * You should have received a copy of the GNU Library General Public
  44620. - * License along with this library; if not, write to the Free
  44621. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  44622. + * License along with this library; if not, see
  44623. + * <http://www.gnu.org/licenses/>.
  44624. */
  44625. #include <features.h>
  44626. diff -Nur uClibc-0.9.33.2/libc/string/generic/memchr.c uClibc/libc/string/generic/memchr.c
  44627. --- uClibc-0.9.33.2/libc/string/generic/memchr.c 2012-05-15 09:20:09.000000000 +0200
  44628. +++ uClibc/libc/string/generic/memchr.c 2014-02-03 12:32:56.000000000 +0100
  44629. @@ -17,9 +17,8 @@
  44630. Lesser General Public License for more details.
  44631. You should have received a copy of the GNU Lesser General Public
  44632. - License along with the GNU C Library; if not, write to the Free
  44633. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44634. - 02111-1307 USA. */
  44635. + License along with the GNU C Library; if not, see
  44636. + <http://www.gnu.org/licenses/>. */
  44637. #include <string.h>
  44638. #include <stdlib.h>
  44639. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcmp.c uClibc/libc/string/generic/memcmp.c
  44640. --- uClibc-0.9.33.2/libc/string/generic/memcmp.c 2012-05-15 09:20:09.000000000 +0200
  44641. +++ uClibc/libc/string/generic/memcmp.c 2014-02-03 12:32:56.000000000 +0100
  44642. @@ -14,9 +14,8 @@
  44643. Lesser General Public License for more details.
  44644. You should have received a copy of the GNU Lesser General Public
  44645. - License along with the GNU C Library; if not, write to the Free
  44646. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44647. - 02111-1307 USA. */
  44648. + License along with the GNU C Library; if not, see
  44649. + <http://www.gnu.org/licenses/>. */
  44650. #include <string.h>
  44651. #include "memcopy.h"
  44652. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcopy.h uClibc/libc/string/generic/memcopy.h
  44653. --- uClibc-0.9.33.2/libc/string/generic/memcopy.h 2012-05-15 09:20:09.000000000 +0200
  44654. +++ uClibc/libc/string/generic/memcopy.h 2014-02-03 12:32:56.000000000 +0100
  44655. @@ -14,9 +14,8 @@
  44656. Lesser General Public License for more details.
  44657. You should have received a copy of the GNU Lesser General Public
  44658. - License along with the GNU C Library; if not, write to the Free
  44659. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44660. - 02111-1307 USA. */
  44661. + License along with the GNU C Library; if not, see
  44662. + <http://www.gnu.org/licenses/>. */
  44663. /* The strategy of the memory functions is:
  44664. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcpy.c uClibc/libc/string/generic/memcpy.c
  44665. --- uClibc-0.9.33.2/libc/string/generic/memcpy.c 2012-05-15 09:20:09.000000000 +0200
  44666. +++ uClibc/libc/string/generic/memcpy.c 2014-02-03 12:32:56.000000000 +0100
  44667. @@ -15,9 +15,8 @@
  44668. Lesser General Public License for more details.
  44669. You should have received a copy of the GNU Lesser General Public
  44670. - License along with the GNU C Library; if not, write to the Free
  44671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44672. - 02111-1307 USA. */
  44673. + License along with the GNU C Library; if not, see
  44674. + <http://www.gnu.org/licenses/>. */
  44675. #include <string.h>
  44676. #include "memcopy.h"
  44677. diff -Nur uClibc-0.9.33.2/libc/string/generic/memmem.c uClibc/libc/string/generic/memmem.c
  44678. --- uClibc-0.9.33.2/libc/string/generic/memmem.c 2012-05-15 09:20:09.000000000 +0200
  44679. +++ uClibc/libc/string/generic/memmem.c 2014-02-03 12:32:56.000000000 +0100
  44680. @@ -12,9 +12,8 @@
  44681. Lesser General Public License for more details.
  44682. You should have received a copy of the GNU Lesser General Public
  44683. - License along with the GNU C Library; if not, write to the Free
  44684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44685. - 02111-1307 USA. */
  44686. + License along with the GNU C Library; if not, see
  44687. + <http://www.gnu.org/licenses/>. */
  44688. #include <string.h>
  44689. #include <stddef.h>
  44690. diff -Nur uClibc-0.9.33.2/libc/string/generic/memmove.c uClibc/libc/string/generic/memmove.c
  44691. --- uClibc-0.9.33.2/libc/string/generic/memmove.c 2012-05-15 09:20:09.000000000 +0200
  44692. +++ uClibc/libc/string/generic/memmove.c 2014-02-03 12:32:56.000000000 +0100
  44693. @@ -15,9 +15,8 @@
  44694. Lesser General Public License for more details.
  44695. You should have received a copy of the GNU Lesser General Public
  44696. - License along with the GNU C Library; if not, write to the Free
  44697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44698. - 02111-1307 USA. */
  44699. + License along with the GNU C Library; if not, see
  44700. + <http://www.gnu.org/licenses/>. */
  44701. #include <string.h>
  44702. diff -Nur uClibc-0.9.33.2/libc/string/generic/memrchr.c uClibc/libc/string/generic/memrchr.c
  44703. --- uClibc-0.9.33.2/libc/string/generic/memrchr.c 2012-05-15 09:20:09.000000000 +0200
  44704. +++ uClibc/libc/string/generic/memrchr.c 2014-02-03 12:32:56.000000000 +0100
  44705. @@ -18,9 +18,8 @@
  44706. Lesser General Public License for more details.
  44707. You should have received a copy of the GNU Lesser General Public
  44708. - License along with the GNU C Library; if not, write to the Free
  44709. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44710. - 02111-1307 USA. */
  44711. + License along with the GNU C Library; if not, see
  44712. + <http://www.gnu.org/licenses/>. */
  44713. #include <string.h>
  44714. #include <stdlib.h>
  44715. diff -Nur uClibc-0.9.33.2/libc/string/generic/memset.c uClibc/libc/string/generic/memset.c
  44716. --- uClibc-0.9.33.2/libc/string/generic/memset.c 2012-05-15 09:20:09.000000000 +0200
  44717. +++ uClibc/libc/string/generic/memset.c 2014-02-03 12:32:56.000000000 +0100
  44718. @@ -12,9 +12,8 @@
  44719. Lesser General Public License for more details.
  44720. You should have received a copy of the GNU Lesser General Public
  44721. - License along with the GNU C Library; if not, write to the Free
  44722. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44723. - 02111-1307 USA. */
  44724. + License along with the GNU C Library; if not, see
  44725. + <http://www.gnu.org/licenses/>. */
  44726. #include <string.h>
  44727. #include "memcopy.h"
  44728. diff -Nur uClibc-0.9.33.2/libc/string/generic/pagecopy.h uClibc/libc/string/generic/pagecopy.h
  44729. --- uClibc-0.9.33.2/libc/string/generic/pagecopy.h 2012-05-15 09:20:09.000000000 +0200
  44730. +++ uClibc/libc/string/generic/pagecopy.h 2014-02-03 12:32:56.000000000 +0100
  44731. @@ -13,9 +13,8 @@
  44732. Lesser General Public License for more details.
  44733. You should have received a copy of the GNU Lesser General Public
  44734. - License along with the GNU C Library; if not, write to the Free
  44735. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44736. - 02111-1307 USA. */
  44737. + License along with the GNU C Library; if not, see
  44738. + <http://www.gnu.org/licenses/>. */
  44739. /* This file defines the macro:
  44740. diff -Nur uClibc-0.9.33.2/libc/string/generic/rawmemchr.c uClibc/libc/string/generic/rawmemchr.c
  44741. --- uClibc-0.9.33.2/libc/string/generic/rawmemchr.c 2012-05-15 09:20:09.000000000 +0200
  44742. +++ uClibc/libc/string/generic/rawmemchr.c 2014-02-03 12:32:56.000000000 +0100
  44743. @@ -17,9 +17,8 @@
  44744. Lesser General Public License for more details.
  44745. You should have received a copy of the GNU Lesser General Public
  44746. - License along with the GNU C Library; if not, write to the Free
  44747. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44748. - 02111-1307 USA. */
  44749. + License along with the GNU C Library; if not, see
  44750. + <http://www.gnu.org/licenses/>. */
  44751. #include <string.h>
  44752. #include <stdlib.h>
  44753. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcat.c uClibc/libc/string/generic/strcat.c
  44754. --- uClibc-0.9.33.2/libc/string/generic/strcat.c 2012-05-15 09:20:09.000000000 +0200
  44755. +++ uClibc/libc/string/generic/strcat.c 2014-02-03 12:32:56.000000000 +0100
  44756. @@ -12,9 +12,8 @@
  44757. Lesser General Public License for more details.
  44758. You should have received a copy of the GNU Lesser General Public
  44759. - License along with the GNU C Library; if not, write to the Free
  44760. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44761. - 02111-1307 USA. */
  44762. + License along with the GNU C Library; if not, see
  44763. + <http://www.gnu.org/licenses/>. */
  44764. #include <string.h>
  44765. #include "memcopy.h"
  44766. diff -Nur uClibc-0.9.33.2/libc/string/generic/strchr.c uClibc/libc/string/generic/strchr.c
  44767. --- uClibc-0.9.33.2/libc/string/generic/strchr.c 2012-05-15 09:20:09.000000000 +0200
  44768. +++ uClibc/libc/string/generic/strchr.c 2014-02-03 12:32:56.000000000 +0100
  44769. @@ -17,9 +17,8 @@
  44770. Lesser General Public License for more details.
  44771. You should have received a copy of the GNU Lesser General Public
  44772. - License along with the GNU C Library; if not, write to the Free
  44773. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44774. - 02111-1307 USA. */
  44775. + License along with the GNU C Library; if not, see
  44776. + <http://www.gnu.org/licenses/>. */
  44777. #include <string.h>
  44778. #include <stdlib.h>
  44779. diff -Nur uClibc-0.9.33.2/libc/string/generic/strchrnul.c uClibc/libc/string/generic/strchrnul.c
  44780. --- uClibc-0.9.33.2/libc/string/generic/strchrnul.c 2012-05-15 09:20:09.000000000 +0200
  44781. +++ uClibc/libc/string/generic/strchrnul.c 2014-02-03 12:32:56.000000000 +0100
  44782. @@ -17,9 +17,8 @@
  44783. Lesser General Public License for more details.
  44784. You should have received a copy of the GNU Lesser General Public
  44785. - License along with the GNU C Library; if not, write to the Free
  44786. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44787. - 02111-1307 USA. */
  44788. + License along with the GNU C Library; if not, see
  44789. + <http://www.gnu.org/licenses/>. */
  44790. #include <string.h>
  44791. #include <stdlib.h>
  44792. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcmp.c uClibc/libc/string/generic/strcmp.c
  44793. --- uClibc-0.9.33.2/libc/string/generic/strcmp.c 2012-05-15 09:20:09.000000000 +0200
  44794. +++ uClibc/libc/string/generic/strcmp.c 2014-02-03 12:32:56.000000000 +0100
  44795. @@ -12,9 +12,8 @@
  44796. Lesser General Public License for more details.
  44797. You should have received a copy of the GNU Lesser General Public
  44798. - License along with the GNU C Library; if not, write to the Free
  44799. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44800. - 02111-1307 USA. */
  44801. + License along with the GNU C Library; if not, see
  44802. + <http://www.gnu.org/licenses/>. */
  44803. #include <string.h>
  44804. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcpy.c uClibc/libc/string/generic/strcpy.c
  44805. --- uClibc-0.9.33.2/libc/string/generic/strcpy.c 2012-05-15 09:20:09.000000000 +0200
  44806. +++ uClibc/libc/string/generic/strcpy.c 2014-02-03 12:32:56.000000000 +0100
  44807. @@ -12,9 +12,8 @@
  44808. Lesser General Public License for more details.
  44809. You should have received a copy of the GNU Lesser General Public
  44810. - License along with the GNU C Library; if not, write to the Free
  44811. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44812. - 02111-1307 USA. */
  44813. + License along with the GNU C Library; if not, see
  44814. + <http://www.gnu.org/licenses/>. */
  44815. #include <string.h>
  44816. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcspn.c uClibc/libc/string/generic/strcspn.c
  44817. --- uClibc-0.9.33.2/libc/string/generic/strcspn.c 2012-05-15 09:20:09.000000000 +0200
  44818. +++ uClibc/libc/string/generic/strcspn.c 2014-02-03 12:32:56.000000000 +0100
  44819. @@ -12,9 +12,8 @@
  44820. Lesser General Public License for more details.
  44821. You should have received a copy of the GNU Lesser General Public
  44822. - License along with the GNU C Library; if not, write to the Free
  44823. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44824. - 02111-1307 USA. */
  44825. + License along with the GNU C Library; if not, see
  44826. + <http://www.gnu.org/licenses/>. */
  44827. #include <string.h>
  44828. diff -Nur uClibc-0.9.33.2/libc/string/generic/strlen.c uClibc/libc/string/generic/strlen.c
  44829. --- uClibc-0.9.33.2/libc/string/generic/strlen.c 2012-05-15 09:20:09.000000000 +0200
  44830. +++ uClibc/libc/string/generic/strlen.c 2014-02-03 12:32:56.000000000 +0100
  44831. @@ -15,9 +15,8 @@
  44832. Lesser General Public License for more details.
  44833. You should have received a copy of the GNU Lesser General Public
  44834. - License along with the GNU C Library; if not, write to the Free
  44835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44836. - 02111-1307 USA. */
  44837. + License along with the GNU C Library; if not, see
  44838. + <http://www.gnu.org/licenses/>. */
  44839. #include <string.h>
  44840. #include <stdlib.h>
  44841. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncat.c uClibc/libc/string/generic/strncat.c
  44842. --- uClibc-0.9.33.2/libc/string/generic/strncat.c 2012-05-15 09:20:09.000000000 +0200
  44843. +++ uClibc/libc/string/generic/strncat.c 2014-02-03 12:32:56.000000000 +0100
  44844. @@ -12,9 +12,8 @@
  44845. Lesser General Public License for more details.
  44846. You should have received a copy of the GNU Lesser General Public
  44847. - License along with the GNU C Library; if not, write to the Free
  44848. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44849. - 02111-1307 USA. */
  44850. + License along with the GNU C Library; if not, see
  44851. + <http://www.gnu.org/licenses/>. */
  44852. #include <string.h>
  44853. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncmp.c uClibc/libc/string/generic/strncmp.c
  44854. --- uClibc-0.9.33.2/libc/string/generic/strncmp.c 2012-05-15 09:20:09.000000000 +0200
  44855. +++ uClibc/libc/string/generic/strncmp.c 2014-02-03 12:32:56.000000000 +0100
  44856. @@ -12,9 +12,8 @@
  44857. Lesser General Public License for more details.
  44858. You should have received a copy of the GNU Lesser General Public
  44859. - License along with the GNU C Library; if not, write to the Free
  44860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44861. - 02111-1307 USA. */
  44862. + License along with the GNU C Library; if not, see
  44863. + <http://www.gnu.org/licenses/>. */
  44864. #include <string.h>
  44865. #include "memcopy.h"
  44866. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncpy.c uClibc/libc/string/generic/strncpy.c
  44867. --- uClibc-0.9.33.2/libc/string/generic/strncpy.c 2012-05-15 09:20:09.000000000 +0200
  44868. +++ uClibc/libc/string/generic/strncpy.c 2014-02-03 12:32:56.000000000 +0100
  44869. @@ -12,9 +12,8 @@
  44870. Lesser General Public License for more details.
  44871. You should have received a copy of the GNU Lesser General Public
  44872. - License along with the GNU C Library; if not, write to the Free
  44873. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44874. - 02111-1307 USA. */
  44875. + License along with the GNU C Library; if not, see
  44876. + <http://www.gnu.org/licenses/>. */
  44877. #include <string.h>
  44878. #include "memcopy.h"
  44879. diff -Nur uClibc-0.9.33.2/libc/string/generic/strnlen.c uClibc/libc/string/generic/strnlen.c
  44880. --- uClibc-0.9.33.2/libc/string/generic/strnlen.c 2012-05-15 09:20:09.000000000 +0200
  44881. +++ uClibc/libc/string/generic/strnlen.c 2014-02-03 12:32:56.000000000 +0100
  44882. @@ -17,9 +17,8 @@
  44883. Lesser General Public License for more details.
  44884. You should have received a copy of the GNU Lesser General Public
  44885. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  44886. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  44887. - Boston, MA 02111-1307, USA. */
  44888. + License along with the GNU C Library; see the file COPYING.LIB. If
  44889. + not, see <http://www.gnu.org/licenses/>. */
  44890. #include <string.h>
  44891. #include <stdlib.h>
  44892. diff -Nur uClibc-0.9.33.2/libc/string/generic/strrchr.c uClibc/libc/string/generic/strrchr.c
  44893. --- uClibc-0.9.33.2/libc/string/generic/strrchr.c 2012-05-15 09:20:09.000000000 +0200
  44894. +++ uClibc/libc/string/generic/strrchr.c 2014-02-03 12:32:56.000000000 +0100
  44895. @@ -12,9 +12,8 @@
  44896. Lesser General Public License for more details.
  44897. You should have received a copy of the GNU Lesser General Public
  44898. - License along with the GNU C Library; if not, write to the Free
  44899. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44900. - 02111-1307 USA. */
  44901. + License along with the GNU C Library; if not, see
  44902. + <http://www.gnu.org/licenses/>. */
  44903. #include <string.h>
  44904. diff -Nur uClibc-0.9.33.2/libc/string/generic/strsep.c uClibc/libc/string/generic/strsep.c
  44905. --- uClibc-0.9.33.2/libc/string/generic/strsep.c 2012-05-15 09:20:09.000000000 +0200
  44906. +++ uClibc/libc/string/generic/strsep.c 2014-02-03 12:32:56.000000000 +0100
  44907. @@ -12,9 +12,8 @@
  44908. Lesser General Public License for more details.
  44909. You should have received a copy of the GNU Lesser General Public
  44910. - License along with the GNU C Library; if not, write to the Free
  44911. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44912. - 02111-1307 USA. */
  44913. + License along with the GNU C Library; if not, see
  44914. + <http://www.gnu.org/licenses/>. */
  44915. #include <string.h>
  44916. diff -Nur uClibc-0.9.33.2/libc/string/generic/strspn.c uClibc/libc/string/generic/strspn.c
  44917. --- uClibc-0.9.33.2/libc/string/generic/strspn.c 2012-05-15 09:20:09.000000000 +0200
  44918. +++ uClibc/libc/string/generic/strspn.c 2014-02-03 12:32:56.000000000 +0100
  44919. @@ -12,9 +12,8 @@
  44920. Lesser General Public License for more details.
  44921. You should have received a copy of the GNU Lesser General Public
  44922. - License along with the GNU C Library; if not, write to the Free
  44923. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44924. - 02111-1307 USA. */
  44925. + License along with the GNU C Library; if not, see
  44926. + <http://www.gnu.org/licenses/>. */
  44927. #include <string.h>
  44928. diff -Nur uClibc-0.9.33.2/libc/string/generic/strstr.c uClibc/libc/string/generic/strstr.c
  44929. --- uClibc-0.9.33.2/libc/string/generic/strstr.c 2012-05-15 09:20:09.000000000 +0200
  44930. +++ uClibc/libc/string/generic/strstr.c 2014-02-03 12:32:56.000000000 +0100
  44931. @@ -13,9 +13,8 @@
  44932. Lesser General Public License for more details.
  44933. You should have received a copy of the GNU Lesser General Public
  44934. - License along with the GNU C Library; if not, write to the Free
  44935. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44936. - 02111-1307 USA. */
  44937. + License along with the GNU C Library; if not, see
  44938. + <http://www.gnu.org/licenses/>. */
  44939. /*
  44940. * My personal strstr() implementation that beats most other algorithms.
  44941. diff -Nur uClibc-0.9.33.2/libc/string/generic/strtok_r.c uClibc/libc/string/generic/strtok_r.c
  44942. --- uClibc-0.9.33.2/libc/string/generic/strtok_r.c 2012-05-15 09:20:09.000000000 +0200
  44943. +++ uClibc/libc/string/generic/strtok_r.c 2014-02-03 12:32:56.000000000 +0100
  44944. @@ -13,9 +13,8 @@
  44945. Lesser General Public License for more details.
  44946. You should have received a copy of the GNU Lesser General Public
  44947. - License along with the GNU C Library; if not, write to the Free
  44948. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44949. - 02111-1307 USA. */
  44950. + License along with the GNU C Library; if not, see
  44951. + <http://www.gnu.org/licenses/>. */
  44952. #include <string.h>
  44953. diff -Nur uClibc-0.9.33.2/libc/string/__glibc_strerror_r.c uClibc/libc/string/__glibc_strerror_r.c
  44954. --- uClibc-0.9.33.2/libc/string/__glibc_strerror_r.c 2012-05-15 09:20:09.000000000 +0200
  44955. +++ uClibc/libc/string/__glibc_strerror_r.c 2014-02-03 12:32:56.000000000 +0100
  44956. @@ -5,9 +5,13 @@
  44957. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44958. */
  44959. +/* get rid of REDIRECT */
  44960. +#define strerror_r __hide_strerror_r
  44961. +
  44962. #include <features.h>
  44963. #include <string.h>
  44964. +#undef strerror_r
  44965. char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)
  44966. {
  44967. @@ -16,3 +20,6 @@
  44968. return strerrbuf;
  44969. }
  44970. libc_hidden_def(__glibc_strerror_r)
  44971. +#if !defined __USE_XOPEN2K || defined __USE_GNU
  44972. +strong_alias(__glibc_strerror_r,strerror_r)
  44973. +#endif
  44974. diff -Nur uClibc-0.9.33.2/libc/string/ia64/bcopy.S uClibc/libc/string/ia64/bcopy.S
  44975. --- uClibc-0.9.33.2/libc/string/ia64/bcopy.S 2012-05-15 09:20:09.000000000 +0200
  44976. +++ uClibc/libc/string/ia64/bcopy.S 2014-02-03 12:32:56.000000000 +0100
  44977. @@ -1,4 +1,4 @@
  44978. -#include "sysdep.h"
  44979. +#include <sysdep.h>
  44980. #ifdef __UCLIBC_SUSV3_LEGACY__
  44981. diff -Nur uClibc-0.9.33.2/libc/string/ia64/bzero.S uClibc/libc/string/ia64/bzero.S
  44982. --- uClibc-0.9.33.2/libc/string/ia64/bzero.S 2012-05-15 09:20:09.000000000 +0200
  44983. +++ uClibc/libc/string/ia64/bzero.S 2014-02-03 12:32:56.000000000 +0100
  44984. @@ -15,9 +15,8 @@
  44985. Lesser General Public License for more details.
  44986. You should have received a copy of the GNU Lesser General Public
  44987. - License along with the GNU C Library; if not, write to the Free
  44988. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44989. - 02111-1307 USA. */
  44990. + License along with the GNU C Library; if not, see
  44991. + <http://www.gnu.org/licenses/>. */
  44992. /* Return: dest
  44993. @@ -32,7 +31,7 @@
  44994. Since a stf.spill f0 can store 16B in one go, we use this instruction
  44995. to get peak speed. */
  44996. -#include "sysdep.h"
  44997. +#include <sysdep.h>
  44998. #ifdef __UCLIBC_SUSV3_LEGACY__
  44999. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memccpy.S uClibc/libc/string/ia64/memccpy.S
  45000. --- uClibc-0.9.33.2/libc/string/ia64/memccpy.S 2012-05-15 09:20:09.000000000 +0200
  45001. +++ uClibc/libc/string/ia64/memccpy.S 2014-02-03 12:32:56.000000000 +0100
  45002. @@ -14,9 +14,8 @@
  45003. Lesser General Public License for more details.
  45004. You should have received a copy of the GNU Lesser General Public
  45005. - License along with the GNU C Library; if not, write to the Free
  45006. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45007. - 02111-1307 USA. */
  45008. + License along with the GNU C Library; if not, see
  45009. + <http://www.gnu.org/licenses/>. */
  45010. /* Return: a pointer to the next byte after char in dest or NULL
  45011. @@ -31,7 +30,7 @@
  45012. This implementation assumes that it is safe to do read ahead
  45013. in the src block, without getting beyond its limit. */
  45014. -#include "sysdep.h"
  45015. +#include <sysdep.h>
  45016. #undef ret
  45017. #define OP_T_THRES 16
  45018. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memchr.S uClibc/libc/string/ia64/memchr.S
  45019. --- uClibc-0.9.33.2/libc/string/ia64/memchr.S 2012-05-15 09:20:09.000000000 +0200
  45020. +++ uClibc/libc/string/ia64/memchr.S 2014-02-03 12:32:56.000000000 +0100
  45021. @@ -14,9 +14,8 @@
  45022. Lesser General Public License for more details.
  45023. You should have received a copy of the GNU Lesser General Public
  45024. - License along with the GNU C Library; if not, write to the Free
  45025. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45026. - 02111-1307 USA. */
  45027. + License along with the GNU C Library; if not, see
  45028. + <http://www.gnu.org/licenses/>. */
  45029. /* Return: the address of the first occurence of chr in str or NULL
  45030. @@ -40,7 +39,7 @@
  45031. All the loops in this function could have had the internal branch removed
  45032. if br.ctop and br.cloop could be predicated :-(. */
  45033. -#include "sysdep.h"
  45034. +#include <sysdep.h>
  45035. #undef ret
  45036. #define saved_pr r15
  45037. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memcmp.S uClibc/libc/string/ia64/memcmp.S
  45038. --- uClibc-0.9.33.2/libc/string/ia64/memcmp.S 2012-05-15 09:20:09.000000000 +0200
  45039. +++ uClibc/libc/string/ia64/memcmp.S 2014-02-03 12:32:56.000000000 +0100
  45040. @@ -14,9 +14,8 @@
  45041. Lesser General Public License for more details.
  45042. You should have received a copy of the GNU Lesser General Public
  45043. - License along with the GNU C Library; if not, write to the Free
  45044. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45045. - 02111-1307 USA. */
  45046. + License along with the GNU C Library; if not, see
  45047. + <http://www.gnu.org/licenses/>. */
  45048. /* Return: the result of the comparison
  45049. @@ -33,7 +32,7 @@
  45050. and all the mux1 instructions should be replaced by plain mov's. */
  45051. -#include "sysdep.h"
  45052. +#include <sysdep.h>
  45053. #undef ret
  45054. #define OP_T_THRES 16
  45055. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memcpy.S uClibc/libc/string/ia64/memcpy.S
  45056. --- uClibc-0.9.33.2/libc/string/ia64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  45057. +++ uClibc/libc/string/ia64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  45058. @@ -15,9 +15,8 @@
  45059. Lesser General Public License for more details.
  45060. You should have received a copy of the GNU Lesser General Public
  45061. - License along with the GNU C Library; if not, write to the Free
  45062. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45063. - 02111-1307 USA. */
  45064. + License along with the GNU C Library; if not, see
  45065. + <http://www.gnu.org/licenses/>. */
  45066. /* Return: dest
  45067. @@ -37,7 +36,7 @@
  45068. #define USE_LFETCH
  45069. #define USE_FLP
  45070. -#include "sysdep.h"
  45071. +#include <sysdep.h>
  45072. #undef ret
  45073. #define LFETCH_DIST 500
  45074. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memmove.S uClibc/libc/string/ia64/memmove.S
  45075. --- uClibc-0.9.33.2/libc/string/ia64/memmove.S 2012-05-15 09:20:09.000000000 +0200
  45076. +++ uClibc/libc/string/ia64/memmove.S 2014-02-03 12:32:56.000000000 +0100
  45077. @@ -14,9 +14,8 @@
  45078. Lesser General Public License for more details.
  45079. You should have received a copy of the GNU Lesser General Public
  45080. - License along with the GNU C Library; if not, write to the Free
  45081. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45082. - 02111-1307 USA. */
  45083. + License along with the GNU C Library; if not, see
  45084. + <http://www.gnu.org/licenses/>. */
  45085. /* Return: dest
  45086. @@ -33,7 +32,7 @@
  45087. sh1 must be computed using an extra instruction: sub sh1 = 64, sh1
  45088. or the UM.be bit should be cleared at the beginning and set at the end. */
  45089. -#include "sysdep.h"
  45090. +#include <sysdep.h>
  45091. #undef ret
  45092. #define OP_T_THRES 16
  45093. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memset.S uClibc/libc/string/ia64/memset.S
  45094. --- uClibc-0.9.33.2/libc/string/ia64/memset.S 2012-05-15 09:20:09.000000000 +0200
  45095. +++ uClibc/libc/string/ia64/memset.S 2014-02-03 12:32:56.000000000 +0100
  45096. @@ -15,9 +15,8 @@
  45097. Lesser General Public License for more details.
  45098. You should have received a copy of the GNU Lesser General Public
  45099. - License along with the GNU C Library; if not, write to the Free
  45100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45101. - 02111-1307 USA. */
  45102. + License along with the GNU C Library; if not, see
  45103. + <http://www.gnu.org/licenses/>. */
  45104. /* Return: dest
  45105. @@ -33,7 +32,7 @@
  45106. Since a stf.spill f0 can store 16B in one go, we use this instruction
  45107. to get peak speed when value = 0. */
  45108. -#include "sysdep.h"
  45109. +#include <sysdep.h>
  45110. #undef ret
  45111. #define dest in0
  45112. diff -Nur uClibc-0.9.33.2/libc/string/ia64/softpipe.h uClibc/libc/string/ia64/softpipe.h
  45113. --- uClibc-0.9.33.2/libc/string/ia64/softpipe.h 2012-05-15 09:20:09.000000000 +0200
  45114. +++ uClibc/libc/string/ia64/softpipe.h 2014-02-03 12:32:56.000000000 +0100
  45115. @@ -12,9 +12,8 @@
  45116. Lesser General Public License for more details.
  45117. You should have received a copy of the GNU Lesser General Public
  45118. - License along with the GNU C Library; if not, write to the Free
  45119. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45120. - 02111-1307 USA. */
  45121. + License along with the GNU C Library; if not, see
  45122. + <http://www.gnu.org/licenses/>. */
  45123. /* The latency of a memory load assumed by the assembly implementation
  45124. of the mem and str functions. Since we don't have any clue about
  45125. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strchr.S uClibc/libc/string/ia64/strchr.S
  45126. --- uClibc-0.9.33.2/libc/string/ia64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  45127. +++ uClibc/libc/string/ia64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  45128. @@ -14,9 +14,8 @@
  45129. Lesser General Public License for more details.
  45130. You should have received a copy of the GNU Lesser General Public
  45131. - License along with the GNU C Library; if not, write to the Free
  45132. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45133. - 02111-1307 USA. */
  45134. + License along with the GNU C Library; if not, see
  45135. + <http://www.gnu.org/licenses/>. */
  45136. /* Return: the address of the first occurence of chr in str or NULL
  45137. @@ -30,7 +29,7 @@
  45138. This implementation assumes little endian mode. For big endian mode,
  45139. the instruction czx1.r should be replaced by czx1.l. */
  45140. -#include "sysdep.h"
  45141. +#include <sysdep.h>
  45142. #undef ret
  45143. #define saved_lc r18
  45144. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strcmp.S uClibc/libc/string/ia64/strcmp.S
  45145. --- uClibc-0.9.33.2/libc/string/ia64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  45146. +++ uClibc/libc/string/ia64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  45147. @@ -14,9 +14,8 @@
  45148. Lesser General Public License for more details.
  45149. You should have received a copy of the GNU Lesser General Public
  45150. - License along with the GNU C Library; if not, write to the Free
  45151. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45152. - 02111-1307 USA. */
  45153. + License along with the GNU C Library; if not, see
  45154. + <http://www.gnu.org/licenses/>. */
  45155. /* Return: the result of the comparison
  45156. @@ -27,7 +26,7 @@
  45157. Unlike memcmp(), this function is optimized for mismatches within the
  45158. first few characters. */
  45159. -#include "sysdep.h"
  45160. +#include <sysdep.h>
  45161. #undef ret
  45162. #define s1 in0
  45163. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strcpy.S uClibc/libc/string/ia64/strcpy.S
  45164. --- uClibc-0.9.33.2/libc/string/ia64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  45165. +++ uClibc/libc/string/ia64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  45166. @@ -14,9 +14,8 @@
  45167. Lesser General Public License for more details.
  45168. You should have received a copy of the GNU Lesser General Public
  45169. - License along with the GNU C Library; if not, write to the Free
  45170. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45171. - 02111-1307 USA. */
  45172. + License along with the GNU C Library; if not, see
  45173. + <http://www.gnu.org/licenses/>. */
  45174. /* Return: dest
  45175. @@ -31,7 +30,7 @@
  45176. shr.u tmp = r[0], sh2 // tmp = w1 >> sh2
  45177. */
  45178. -#include "sysdep.h"
  45179. +#include <sysdep.h>
  45180. #undef ret
  45181. #define saved_lc r15
  45182. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strlen.S uClibc/libc/string/ia64/strlen.S
  45183. --- uClibc-0.9.33.2/libc/string/ia64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  45184. +++ uClibc/libc/string/ia64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  45185. @@ -14,9 +14,8 @@
  45186. Lesser General Public License for more details.
  45187. You should have received a copy of the GNU Lesser General Public
  45188. - License along with the GNU C Library; if not, write to the Free
  45189. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45190. - 02111-1307 USA. */
  45191. + License along with the GNU C Library; if not, see
  45192. + <http://www.gnu.org/licenses/>. */
  45193. /* Return: the length of the input string
  45194. @@ -33,7 +32,7 @@
  45195. This implementation assumes little endian mode. For big endian mode,
  45196. the instruction czx1.r should be replaced by czx1.l. */
  45197. -#include "sysdep.h"
  45198. +#include <sysdep.h>
  45199. #undef ret
  45200. #define saved_lc r18
  45201. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strncmp.S uClibc/libc/string/ia64/strncmp.S
  45202. --- uClibc-0.9.33.2/libc/string/ia64/strncmp.S 2012-05-15 09:20:09.000000000 +0200
  45203. +++ uClibc/libc/string/ia64/strncmp.S 2014-02-03 12:32:56.000000000 +0100
  45204. @@ -14,9 +14,8 @@
  45205. Lesser General Public License for more details.
  45206. You should have received a copy of the GNU Lesser General Public
  45207. - License along with the GNU C Library; if not, write to the Free
  45208. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45209. - 02111-1307 USA. */
  45210. + License along with the GNU C Library; if not, see
  45211. + <http://www.gnu.org/licenses/>. */
  45212. /* Return: the result of the comparison
  45213. @@ -28,7 +27,7 @@
  45214. Unlike memcmp(), this function is optimized for mismatches within the
  45215. first few characters. */
  45216. -#include "sysdep.h"
  45217. +#include <sysdep.h>
  45218. #undef ret
  45219. #define s1 in0
  45220. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strncpy.S uClibc/libc/string/ia64/strncpy.S
  45221. --- uClibc-0.9.33.2/libc/string/ia64/strncpy.S 2012-05-15 09:20:09.000000000 +0200
  45222. +++ uClibc/libc/string/ia64/strncpy.S 2014-02-03 12:32:56.000000000 +0100
  45223. @@ -15,9 +15,8 @@
  45224. Lesser General Public License for more details.
  45225. You should have received a copy of the GNU Lesser General Public
  45226. - License along with the GNU C Library; if not, write to the Free
  45227. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45228. - 02111-1307 USA. */
  45229. + License along with the GNU C Library; if not, see
  45230. + <http://www.gnu.org/licenses/>. */
  45231. /* Return: dest
  45232. @@ -29,7 +28,7 @@
  45233. In this form, it assumes little endian mode.
  45234. */
  45235. -#include "sysdep.h"
  45236. +#include <sysdep.h>
  45237. #undef ret
  45238. #define saved_lc r15
  45239. diff -Nur uClibc-0.9.33.2/libc/string/ia64/sysdep.h uClibc/libc/string/ia64/sysdep.h
  45240. --- uClibc-0.9.33.2/libc/string/ia64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  45241. +++ uClibc/libc/string/ia64/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  45242. @@ -1,168 +0,0 @@
  45243. -/* Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
  45244. - This file is part of the GNU C Library.
  45245. - Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
  45246. - Based on code originally written by David Mosberger-Tang
  45247. -
  45248. - The GNU C Library is free software; you can redistribute it and/or
  45249. - modify it under the terms of the GNU Lesser General Public
  45250. - License as published by the Free Software Foundation; either
  45251. - version 2.1 of the License, or (at your option) any later version.
  45252. -
  45253. - The GNU C Library is distributed in the hope that it will be useful,
  45254. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  45255. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  45256. - Lesser General Public License for more details.
  45257. -
  45258. - You should have received a copy of the GNU Lesser General Public
  45259. - License along with the GNU C Library; if not, write to the Free
  45260. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  45261. - 02111-1307 USA. */
  45262. -
  45263. -#ifndef _LINUX_IA64_SYSDEP_H
  45264. -#define _LINUX_IA64_SYSDEP_H 1
  45265. -
  45266. -#include <features.h>
  45267. -#include <asm/unistd.h>
  45268. -
  45269. -#ifdef __ASSEMBLER__
  45270. -
  45271. -/* Macros to help writing .prologue directives in assembly code. */
  45272. -#define ASM_UNW_PRLG_RP 0x8
  45273. -#define ASM_UNW_PRLG_PFS 0x4
  45274. -#define ASM_UNW_PRLG_PSP 0x2
  45275. -#define ASM_UNW_PRLG_PR 0x1
  45276. -#define ASM_UNW_PRLG_GRSAVE(ninputs) (32+(ninputs))
  45277. -
  45278. -#ifdef __STDC__
  45279. -#define C_LABEL(name) name :
  45280. -#else
  45281. -#define C_LABEL(name) name/**/:
  45282. -#endif
  45283. -
  45284. -#define CALL_MCOUNT
  45285. -
  45286. -#define ENTRY(name) \
  45287. - .text; \
  45288. - .align 32; \
  45289. - .proc C_SYMBOL_NAME(name); \
  45290. - .global C_SYMBOL_NAME(name); \
  45291. - C_LABEL(name) \
  45292. - CALL_MCOUNT
  45293. -
  45294. -#define LEAF(name) \
  45295. - .text; \
  45296. - .align 32; \
  45297. - .proc C_SYMBOL_NAME(name); \
  45298. - .global name; \
  45299. - C_LABEL(name)
  45300. -
  45301. -/* Mark the end of function SYM. */
  45302. -#undef END
  45303. -#define END(sym) .endp C_SYMBOL_NAME(sym)
  45304. -
  45305. -/* For Linux we can use the system call table in the header file
  45306. - /usr/include/asm/unistd.h
  45307. - of the kernel. But these symbols do not follow the SYS_* syntax
  45308. - so we have to redefine the `SYS_ify' macro here. */
  45309. -#undef SYS_ify
  45310. -#ifdef __STDC__
  45311. -# define SYS_ify(syscall_name) __NR_##syscall_name
  45312. -#else
  45313. -# define SYS_ify(syscall_name) __NR_/**/syscall_name
  45314. -#endif
  45315. -
  45316. -/* Linux uses a negative return value to indicate syscall errors, unlike
  45317. - most Unices, which use the condition codes' carry flag.
  45318. -
  45319. - Since version 2.1 the return value of a system call might be negative
  45320. - even if the call succeeded. E.g., the `lseek' system call might return
  45321. - a large offset. Therefore we must not anymore test for < 0, but test
  45322. - for a real error by making sure the value in %d0 is a real error
  45323. - number. Linus said he will make sure the no syscall returns a value
  45324. - in -1 .. -4095 as a valid result so we can savely test with -4095. */
  45325. -
  45326. -/* We don't want the label for the error handler to be visible in the symbol
  45327. - table when we define it here. */
  45328. -#define SYSCALL_ERROR_LABEL __syscall_error
  45329. -
  45330. -#undef PSEUDO
  45331. -#define PSEUDO(name, syscall_name, args) \
  45332. - ENTRY(name) \
  45333. - DO_CALL (SYS_ify(syscall_name)); \
  45334. - cmp.eq p6,p0=-1,r10; \
  45335. -(p6) br.cond.spnt.few __syscall_error;
  45336. -
  45337. -#define DO_CALL_VIA_BREAK(num) \
  45338. - mov r15=num; \
  45339. - break __BREAK_SYSCALL
  45340. -
  45341. -#ifdef IA64_USE_NEW_STUB
  45342. -# ifdef SHARED
  45343. -# define DO_CALL(num) \
  45344. - .prologue; \
  45345. - adds r2 = SYSINFO_OFFSET, r13;; \
  45346. - ld8 r2 = [r2]; \
  45347. - .save ar.pfs, r11; \
  45348. - mov r11 = ar.pfs;; \
  45349. - .body; \
  45350. - mov r15 = num; \
  45351. - mov b7 = r2; \
  45352. - br.call.sptk.many b6 = b7;; \
  45353. - .restore sp; \
  45354. - mov ar.pfs = r11; \
  45355. - .prologue; \
  45356. - .body
  45357. -# else /* !SHARED */
  45358. -# define DO_CALL(num) \
  45359. - .prologue; \
  45360. - mov r15 = num; \
  45361. - movl r2 = _dl_sysinfo;; \
  45362. - ld8 r2 = [r2]; \
  45363. - .save ar.pfs, r11; \
  45364. - mov r11 = ar.pfs;; \
  45365. - .body; \
  45366. - mov b7 = r2; \
  45367. - br.call.sptk.many b6 = b7;; \
  45368. - .restore sp; \
  45369. - mov ar.pfs = r11; \
  45370. - .prologue; \
  45371. - .body
  45372. -# endif
  45373. -#else
  45374. -# define DO_CALL(num) DO_CALL_VIA_BREAK(num)
  45375. -#endif
  45376. -
  45377. -#undef PSEUDO_END
  45378. -#define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
  45379. -
  45380. -#undef PSEUDO_NOERRNO
  45381. -#define PSEUDO_NOERRNO(name, syscall_name, args) \
  45382. - ENTRY(name) \
  45383. - DO_CALL (SYS_ify(syscall_name));
  45384. -
  45385. -#undef PSEUDO_END_NOERRNO
  45386. -#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
  45387. -
  45388. -#undef PSEUDO_ERRVAL
  45389. -#define PSEUDO_ERRVAL(name, syscall_name, args) \
  45390. - ENTRY(name) \
  45391. - DO_CALL (SYS_ify(syscall_name)); \
  45392. - cmp.eq p6,p0=-1,r10; \
  45393. -(p6) mov r10=r8;
  45394. -
  45395. -
  45396. -#undef PSEUDO_END_ERRVAL
  45397. -#define PSEUDO_END_ERRVAL(name) .endp C_SYMBOL_NAME(name);
  45398. -
  45399. -#undef END
  45400. -#define END(name) \
  45401. - .size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
  45402. - .endp C_SYMBOL_NAME(name)
  45403. -
  45404. -#define ret br.ret.sptk.few b0
  45405. -#define ret_NOERRNO ret
  45406. -#define ret_ERRVAL ret
  45407. -
  45408. -#endif /* not __ASSEMBLER__ */
  45409. -
  45410. -#endif /* linux/ia64/sysdep.h */
  45411. diff -Nur uClibc-0.9.33.2/libc/string/memmove.c uClibc/libc/string/memmove.c
  45412. --- uClibc-0.9.33.2/libc/string/memmove.c 2012-05-15 09:20:09.000000000 +0200
  45413. +++ uClibc/libc/string/memmove.c 2014-02-03 12:32:56.000000000 +0100
  45414. @@ -34,5 +34,5 @@
  45415. }
  45416. #ifndef WANT_WIDE
  45417. -libc_hidden_def(Wmemmove)
  45418. +libc_hidden_def(memmove)
  45419. #endif
  45420. diff -Nur uClibc-0.9.33.2/libc/string/metag/Makefile uClibc/libc/string/metag/Makefile
  45421. --- uClibc-0.9.33.2/libc/string/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  45422. +++ uClibc/libc/string/metag/Makefile 2014-02-03 12:32:56.000000000 +0100
  45423. @@ -0,0 +1,13 @@
  45424. +# Makefile for uClibc
  45425. +#
  45426. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  45427. +#
  45428. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45429. +#
  45430. +
  45431. +top_srcdir:=../../../
  45432. +top_builddir:=../../../
  45433. +all: objs
  45434. +include $(top_builddir)Rules.mak
  45435. +include ../Makefile.in
  45436. +include $(top_srcdir)Makerules
  45437. diff -Nur uClibc-0.9.33.2/libc/string/metag/memchr.S uClibc/libc/string/metag/memchr.S
  45438. --- uClibc-0.9.33.2/libc/string/metag/memchr.S 1970-01-01 01:00:00.000000000 +0100
  45439. +++ uClibc/libc/string/metag/memchr.S 2014-02-03 12:32:56.000000000 +0100
  45440. @@ -0,0 +1,156 @@
  45441. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45442. +!
  45443. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45444. +
  45445. + .text
  45446. + .global _memchr
  45447. + .type _memchr,function
  45448. +! D0Ar6 src
  45449. +! D0Ar2 c
  45450. +! D1Ar3 n
  45451. +_memchr:
  45452. + CMP D1Ar3, #0
  45453. + BEQ $Lexit_fail
  45454. + !! convert c to unsigned char
  45455. + AND D0Ar2,D0Ar2,#0xff
  45456. + MOV D0Ar6, D1Ar1
  45457. + MOV D1Ar5, D0Ar6
  45458. + !! test alignment
  45459. + AND D1Ar5, D1Ar5, #7
  45460. + CMP D1Ar5, #0
  45461. + BNZ $Lunaligned_loop
  45462. + !! length must be greater than or equal to 8 for aligned loop
  45463. + CMP D1Ar3, #8
  45464. + BGE $Laligned_setup
  45465. +$Lunaligned_loop:
  45466. + !! get 1 char from s
  45467. + GETB D0Re0, [D0Ar6++]
  45468. + !! increase alignment counter
  45469. + ADD D1Ar5, D1Ar5, #1
  45470. + !! decrement n
  45471. + SUB D1Ar3, D1Ar3, #1
  45472. + !! exit if we have a match
  45473. + CMP D0Re0, D0Ar2
  45474. + BZ $Lexit_success1
  45475. + !! exit if we have hit the end of the string
  45476. + CMP D1Ar3, #0
  45477. + BZ $Lexit_fail
  45478. + !! fall through if the buffer is aligned now
  45479. + CMP D1Ar5, #8
  45480. + BNE $Lunaligned_loop
  45481. + !! fall through if there is more than 8 bytes left
  45482. + CMP D1Ar3, #8
  45483. + BLT $Lunaligned_loop
  45484. +$Laligned_setup:
  45485. + !! fill the c into 4 bytes
  45486. + MOV D0Ar4, D0Ar2
  45487. + LSL D0Ar4, D0Ar4, #8
  45488. + ADD D0Ar4, D0Ar4, D0Ar2
  45489. + LSL D0Ar4, D0Ar4, #8
  45490. + ADD D0Ar4, D0Ar4, D0Ar2
  45491. + LSL D0Ar4, D0Ar4, #8
  45492. + ADD D0Ar4, D0Ar4, D0Ar2
  45493. + !! divide n by 8
  45494. + MOV D1Ar5, D1Ar3
  45495. + LSR D1Ar5, D1Ar5, #3
  45496. +$Laligned_loop:
  45497. + !! get 8 chars from s
  45498. + GETL D0Re0, D1Re0, [D0Ar6++]
  45499. + !! decrement loop counter
  45500. + SUB D1Ar5, D1Ar5, #1
  45501. + !! test first 4 chars
  45502. + XOR D0Re0, D0Re0, D0Ar4
  45503. + !! test second 4 chars
  45504. + MOV D0Ar2, D1Re0
  45505. + XOR D1Re0, D0Ar2, D0Ar4
  45506. + !! check for matches in the first 4 chars
  45507. + MOV D0Ar2, D0Re0
  45508. + ADDT D0Re0, D0Re0, #HI(0xfefefeff)
  45509. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  45510. + XOR D0Ar2, D0Ar2, #-1
  45511. + AND D0Re0, D0Re0, D0Ar2
  45512. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  45513. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  45514. + CMP D0Re0, #0
  45515. + BNZ $Lmatch_word1
  45516. + !! check for matches in the second 4 chars
  45517. + MOV D1Ar1, D1Re0
  45518. + ADDT D1Re0, D1Re0, #HI(0xfefefeff)
  45519. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  45520. + XOR D1Ar1, D1Ar1, #-1
  45521. + AND D1Re0, D1Re0, D1Ar1
  45522. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  45523. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  45524. + CMP D1Re0, #0
  45525. + BNZ $Lmatch_word2
  45526. + !! check if we have reached the end of the buffer
  45527. + CMP D1Ar5, #0
  45528. + BNE $Laligned_loop
  45529. + !! exit if there are no chars left to check
  45530. + AND D1Ar3, D1Ar3, #7
  45531. + CMP D1Ar3, #0
  45532. + BZ $Lexit_fail
  45533. + !! recover c
  45534. + AND D0Ar2, D0Ar4, #0xff
  45535. +$Lbyte_loop:
  45536. + !! get 1 char from s
  45537. + GETB D0Re0, [D0Ar6++]
  45538. + !! decrement n
  45539. + SUB D1Ar3, D1Ar3, #1
  45540. + !! exit if we have a match
  45541. + CMP D0Re0, D0Ar2
  45542. + BZ $Lexit_success1
  45543. + !! fall through if we have run out of chars
  45544. + CMP D1Ar3, #0
  45545. + BNE $Lbyte_loop
  45546. +
  45547. +$Lexit_fail:
  45548. + MOV D0Re0, #0
  45549. + B $Lend
  45550. +
  45551. +$Lmatch_word1:
  45552. + !! move the match word into D1Re0
  45553. + MOV D1Re0, D0Re0
  45554. + !! roll back the buffer pointer by 4 chars
  45555. + SUB D0Ar6, D0Ar6, #4
  45556. +$Lmatch_word2:
  45557. + !! roll back the buffer pointer by 4 chars
  45558. + SUB D0Ar6, D0Ar6, #4
  45559. + !! exit if lowest byte is 0
  45560. + MOV D1Ar1, D1Re0
  45561. + AND D1Ar1, D1Ar1, #0xff
  45562. + CMP D1Ar1, #0
  45563. + BNE $Lexit_success2
  45564. + !! advance buffer pointer to the next char
  45565. + ADD D0Ar6, D0Ar6, #1
  45566. + !! shift in the next lowest byte
  45567. + LSR D1Re0, D1Re0, #8
  45568. + !! exit if lowest byte is 0
  45569. + MOV D1Ar1, D1Re0
  45570. + AND D1Ar1, D1Ar1, #0xff
  45571. + CMP D1Ar1, #0
  45572. + BNE $Lexit_success2
  45573. + !! advance buffer pointer to the next char
  45574. + ADD D0Ar6, D0Ar6, #1
  45575. + !! shift in the next lowest byte
  45576. + LSR D1Re0, D1Re0, #8
  45577. + !! exit if lowest byte is 0
  45578. + MOV D1Ar1, D1Re0
  45579. + AND D1Ar1, D1Ar1, #0xff
  45580. + CMP D1Ar1, #0
  45581. + BNE $Lexit_success2
  45582. + !! the match must be in the last byte, exit
  45583. + ADD D0Ar6, D0Ar6, #1
  45584. + B $Lexit_success2
  45585. +
  45586. +$Lexit_success1:
  45587. + SUB D0Ar6, D0Ar6, #1
  45588. +$Lexit_success2:
  45589. + !! return the buffer pointer
  45590. + MOV D0Re0, D0Ar6
  45591. +$Lend:
  45592. + MOV PC, D1RtP
  45593. +
  45594. + .size _memchr,.-_memchr
  45595. +
  45596. +libc_hidden_def(memchr)
  45597. diff -Nur uClibc-0.9.33.2/libc/string/metag/memcpy.S uClibc/libc/string/metag/memcpy.S
  45598. --- uClibc-0.9.33.2/libc/string/metag/memcpy.S 1970-01-01 01:00:00.000000000 +0100
  45599. +++ uClibc/libc/string/metag/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  45600. @@ -0,0 +1,189 @@
  45601. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45602. +
  45603. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45604. +
  45605. + .text
  45606. + .global _memcpy
  45607. + .type _memcpy,function
  45608. +! D1Ar1 dst
  45609. +! D0Ar2 src
  45610. +! D1Ar3 cnt
  45611. +! D0Re0 dst
  45612. +_memcpy:
  45613. + CMP D1Ar3, #16
  45614. + MOV A1.2, D0Ar2 ! source pointer
  45615. + MOV A0.2, D1Ar1 ! destination pointer
  45616. + MOV A0.3, D1Ar1 ! for return value
  45617. +! If there are less than 16 bytes to copy use the byte copy loop
  45618. + BGE $Llong_copy
  45619. +
  45620. +$Lbyte_copy:
  45621. +! Simply copy a byte at a time
  45622. + SUBS TXRPT, D1Ar3, #1
  45623. + BLT $Lend
  45624. +$Lloop_byte:
  45625. + GETB D1Re0, [A1.2++]
  45626. + SETB [A0.2++], D1Re0
  45627. + BR $Lloop_byte
  45628. +
  45629. +$Lend:
  45630. +! Finally set return value and return
  45631. + MOV D0Re0, A0.3
  45632. + MOV PC, D1RtP
  45633. +
  45634. +$Llong_copy:
  45635. + ANDS D1Ar5, D1Ar1, #7 ! test destination alignment
  45636. + BZ $Laligned_dst
  45637. +
  45638. +! The destination address is not 8 byte aligned. We will copy bytes from
  45639. +! the source to the destination until the remaining data has an 8 byte
  45640. +! destination address alignment (i.e we should never copy more than 7
  45641. +! bytes here).
  45642. +$Lalign_dst:
  45643. + GETB D0Re0, [A1.2++]
  45644. + ADD D1Ar5, D1Ar5, #1 ! dest is aligned when D1Ar5 reaches #8
  45645. + SUB D1Ar3, D1Ar3, #1 ! decrement count of remaining bytes
  45646. + SETB [A0.2++], D0Re0
  45647. + CMP D1Ar5, #8
  45648. + BNE $Lalign_dst
  45649. +
  45650. +! We have at least (16 - 7) = 9 bytes to copy - calculate the number of 8 byte
  45651. +! blocks, then jump to the unaligned copy loop or fall through to the aligned
  45652. +! copy loop as appropriate.
  45653. +$Laligned_dst:
  45654. + MOV D0Ar4, A1.2
  45655. + LSR D1Ar5, D1Ar3, #3 ! D1Ar5 = number of 8 byte blocks
  45656. + ANDS D0Ar4, D0Ar4, #7 ! test source alignment
  45657. + BNZ $Lunaligned_copy ! if unaligned, use unaligned copy loop
  45658. +
  45659. +! Both source and destination are 8 byte aligned - the easy case.
  45660. +$Laligned_copy:
  45661. + LSRS D1Ar5, D1Ar3, #5 ! D1Ar5 = number of 32 byte blocks
  45662. + BZ $Lbyte_copy
  45663. + SUB TXRPT, D1Ar5, #1
  45664. +
  45665. +$Laligned_32:
  45666. + GETL D0Re0, D1Re0, [A1.2++]
  45667. + GETL D0Ar6, D1Ar5, [A1.2++]
  45668. + SETL [A0.2++], D0Re0, D1Re0
  45669. + SETL [A0.2++], D0Ar6, D1Ar5
  45670. + GETL D0Re0, D1Re0, [A1.2++]
  45671. + GETL D0Ar6, D1Ar5, [A1.2++]
  45672. + SETL [A0.2++], D0Re0, D1Re0
  45673. + SETL [A0.2++], D0Ar6, D1Ar5
  45674. + BR $Laligned_32
  45675. +
  45676. +! If there are any remaining bytes use the byte copy loop, otherwise we are done
  45677. + ANDS D1Ar3, D1Ar3, #0x1f
  45678. + BNZ $Lbyte_copy
  45679. + B $Lend
  45680. +
  45681. +! The destination is 8 byte aligned but the source is not, and there are 8
  45682. +! or more bytes to be copied.
  45683. +$Lunaligned_copy:
  45684. +! Adjust the source pointer (A1.2) to the 8 byte boundary before its
  45685. +! current value
  45686. + MOV D0Ar4, A1.2
  45687. + MOV D0Ar6, A1.2
  45688. + ANDMB D0Ar4, D0Ar4, #0xfff8
  45689. + MOV A1.2, D0Ar4
  45690. +! Save the number of bytes of mis-alignment in D0Ar4 for use later
  45691. + SUBS D0Ar6, D0Ar6, D0Ar4
  45692. + MOV D0Ar4, D0Ar6
  45693. +! if there is no mis-alignment after all, use the aligned copy loop
  45694. + BZ $Laligned_copy
  45695. +
  45696. +! prefetch 8 bytes
  45697. + GETL D0Re0, D1Re0, [A1.2]
  45698. +
  45699. + SUB TXRPT, D1Ar5, #1
  45700. +
  45701. +! There are 3 mis-alignment cases to be considered. Less than 4 bytes, exactly
  45702. +! 4 bytes, and more than 4 bytes.
  45703. + CMP D0Ar6, #4
  45704. + BLT $Lunaligned_1_2_3 ! use 1-3 byte mis-alignment loop
  45705. + BZ $Lunaligned_4 ! use 4 byte mis-alignment loop
  45706. +
  45707. +! The mis-alignment is more than 4 bytes
  45708. +$Lunaligned_5_6_7:
  45709. + SUB D0Ar6, D0Ar6, #4
  45710. +! Calculate the bit offsets required for the shift operations necesssary
  45711. +! to align the data.
  45712. +! D0Ar6 = bit offset, D1Ar5 = (32 - bit offset)
  45713. + MULW D0Ar6, D0Ar6, #8
  45714. + MOV D1Ar5, #32
  45715. + SUB D1Ar5, D1Ar5, D0Ar6
  45716. +! Move data 4 bytes before we enter the main loop
  45717. + MOV D0Re0, D1Re0
  45718. +
  45719. +$Lloop_5_6_7:
  45720. + GETL D0Ar2, D1Ar1, [++A1.2]
  45721. +! form 64-bit data in D0Re0, D1Re0
  45722. + LSR D0Re0, D0Re0, D0Ar6
  45723. + MOV D1Re0, D0Ar2
  45724. + LSL D1Re0, D1Re0, D1Ar5
  45725. + ADD D0Re0, D0Re0, D1Re0
  45726. +
  45727. + LSR D0Ar2, D0Ar2, D0Ar6
  45728. + LSL D1Re0, D1Ar1, D1Ar5
  45729. + ADD D1Re0, D1Re0, D0Ar2
  45730. +
  45731. + SETL [A0.2++], D0Re0, D1Re0
  45732. + MOV D0Re0, D1Ar1
  45733. + BR $Lloop_5_6_7
  45734. +
  45735. + B $Lunaligned_end
  45736. +
  45737. +$Lunaligned_1_2_3:
  45738. +! Calculate the bit offsets required for the shift operations necesssary
  45739. +! to align the data.
  45740. +! D0Ar6 = bit offset, D1Ar5 = (32 - bit offset)
  45741. + MULW D0Ar6, D0Ar6, #8
  45742. + MOV D1Ar5, #32
  45743. + SUB D1Ar5, D1Ar5, D0Ar6
  45744. +
  45745. +$Lloop_1_2_3:
  45746. +! form 64-bit data in D0Re0,D1Re0
  45747. + LSR D0Re0, D0Re0, D0Ar6
  45748. + LSL D1Ar1, D1Re0, D1Ar5
  45749. + ADD D0Re0, D0Re0, D1Ar1
  45750. + MOV D0Ar2, D1Re0
  45751. + LSR D0FrT, D0Ar2, D0Ar6
  45752. + GETL D0Ar2, D1Ar1, [++A1.2]
  45753. +
  45754. + MOV D1Re0, D0Ar2
  45755. + LSL D1Re0, D1Re0, D1Ar5
  45756. + ADD D1Re0, D1Re0, D0FrT
  45757. +
  45758. + SETL [A0.2++], D0Re0, D1Re0
  45759. + MOV D0Re0, D0Ar2
  45760. + MOV D1Re0, D1Ar1
  45761. + BR $Lloop_1_2_3
  45762. +
  45763. + B $Lunaligned_end
  45764. +
  45765. +! The 4 byte mis-alignment case - this does not require any shifting, just a
  45766. +! shuffling of registers.
  45767. +$Lunaligned_4:
  45768. + MOV D0Re0, D1Re0
  45769. +$Lloop_4:
  45770. + GETL D0Ar2, D1Ar1, [++A1.2]
  45771. + MOV D1Re0, D0Ar2
  45772. + SETL [A0.2++], D0Re0, D1Re0
  45773. + MOV D0Re0, D1Ar1
  45774. + BR $Lloop_4
  45775. +
  45776. +$Lunaligned_end:
  45777. +! If there are no remaining bytes to copy, we are done.
  45778. + ANDS D1Ar3, D1Ar3, #7
  45779. + BZ $Lend
  45780. +! Re-adjust the source pointer (A1.2) back to the actual (unaligned) byte
  45781. +! address of the remaining bytes, and fall through to the byte copy loop.
  45782. + MOV D0Ar6, A1.2
  45783. + ADD D1Ar5, D0Ar4, D0Ar6
  45784. + MOV A1.2, D1Ar5
  45785. + B $Lbyte_copy
  45786. +
  45787. + .size _memcpy,.-_memcpy
  45788. +
  45789. +libc_hidden_def(memcpy)
  45790. diff -Nur uClibc-0.9.33.2/libc/string/metag/memmove.S uClibc/libc/string/metag/memmove.S
  45791. --- uClibc-0.9.33.2/libc/string/metag/memmove.S 1970-01-01 01:00:00.000000000 +0100
  45792. +++ uClibc/libc/string/metag/memmove.S 2014-02-03 12:32:56.000000000 +0100
  45793. @@ -0,0 +1,350 @@
  45794. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45795. +
  45796. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45797. +
  45798. +
  45799. + .text
  45800. + .global _memmove
  45801. + .type _memmove,function
  45802. +! D1Ar1 dst
  45803. +! D0Ar2 src
  45804. +! D1Ar3 cnt
  45805. +! D0Re0 dst
  45806. +_memmove:
  45807. + CMP D1Ar3, #0
  45808. + MOV D0Re0, D1Ar1
  45809. + BZ $LEND2
  45810. + MSETL [A0StP], D0.5, D0.6, D0.7
  45811. + MOV D1Ar5, D0Ar2
  45812. + CMP D1Ar1, D1Ar5
  45813. + BLT $Lforwards_copy
  45814. + SUB D0Ar4, D1Ar1, D1Ar3
  45815. + ADD D0Ar4, D0Ar4, #1
  45816. + CMP D0Ar2, D0Ar4
  45817. + BLT $Lforwards_copy
  45818. + ! should copy backwards
  45819. + MOV D1Re0, D0Ar2
  45820. + ! adjust pointer to the end of mem
  45821. + ADD D0Ar2, D1Re0, D1Ar3
  45822. + ADD D1Ar1, D1Ar1, D1Ar3
  45823. +
  45824. + MOV A1.2, D0Ar2
  45825. + MOV A0.2, D1Ar1
  45826. + CMP D1Ar3, #8
  45827. + BLT $Lbbyte_loop
  45828. +
  45829. + MOV D0Ar4, D0Ar2
  45830. + MOV D1Ar5, D1Ar1
  45831. +
  45832. + ! test 8 byte alignment
  45833. + ANDS D1Ar5, D1Ar5, #7
  45834. + BNE $Lbdest_unaligned
  45835. +
  45836. + ANDS D0Ar4, D0Ar4, #7
  45837. + BNE $Lbsrc_unaligned
  45838. +
  45839. + LSR D1Ar5, D1Ar3, #3
  45840. +
  45841. +$Lbaligned_loop:
  45842. + GETL D0Re0, D1Re0, [--A1.2]
  45843. + SETL [--A0.2], D0Re0, D1Re0
  45844. + SUBS D1Ar5, D1Ar5, #1
  45845. + BNE $Lbaligned_loop
  45846. +
  45847. + ANDS D1Ar3, D1Ar3, #7
  45848. + BZ $Lbbyte_loop_exit
  45849. +$Lbbyte_loop:
  45850. + GETB D1Re0, [--A1.2]
  45851. + SETB [--A0.2], D1Re0
  45852. + SUBS D1Ar3, D1Ar3, #1
  45853. + BNE $Lbbyte_loop
  45854. +$Lbbyte_loop_exit:
  45855. + MOV D0Re0, A0.2
  45856. +$LEND:
  45857. + SUB A0.2, A0StP, #24
  45858. + MGETL D0.5, D0.6, D0.7, [A0.2]
  45859. + SUB A0StP, A0StP, #24
  45860. +$LEND2:
  45861. + MOV PC, D1RtP
  45862. +
  45863. +$Lbdest_unaligned:
  45864. + GETB D0Re0, [--A1.2]
  45865. + SETB [--A0.2], D0Re0
  45866. + SUBS D1Ar5, D1Ar5, #1
  45867. + SUB D1Ar3, D1Ar3, #1
  45868. + BNE $Lbdest_unaligned
  45869. + CMP D1Ar3, #8
  45870. + BLT $Lbbyte_loop
  45871. +$Lbsrc_unaligned:
  45872. + LSR D1Ar5, D1Ar3, #3
  45873. + ! adjust A1.2
  45874. + MOV D0Ar4, A1.2
  45875. + ! save original address
  45876. + MOV D0Ar6, A1.2
  45877. +
  45878. + ADD D0Ar4, D0Ar4, #7
  45879. + ANDMB D0Ar4, D0Ar4, #0xfff8
  45880. + ! new address is the 8-byte aligned one above the original
  45881. + MOV A1.2, D0Ar4
  45882. +
  45883. + ! A0.2 dst 64-bit is aligned
  45884. + ! measure the gap size
  45885. + SUB D0Ar6, D0Ar4, D0Ar6
  45886. + MOVS D0Ar4, D0Ar6
  45887. + ! keep this information for the later adjustment
  45888. + ! both aligned
  45889. + BZ $Lbaligned_loop
  45890. +
  45891. + ! prefetch
  45892. + GETL D0Re0, D1Re0, [--A1.2]
  45893. +
  45894. + CMP D0Ar6, #4
  45895. + BLT $Lbunaligned_1_2_3
  45896. + ! 32-bit aligned
  45897. + BZ $Lbaligned_4
  45898. +
  45899. + SUB D0Ar6, D0Ar6, #4
  45900. + ! D1.6 stores the gap size in bits
  45901. + MULW D1.6, D0Ar6, #8
  45902. + MOV D0.6, #32
  45903. + ! D0.6 stores the complement of the gap size
  45904. + SUB D0.6, D0.6, D1.6
  45905. +
  45906. +$Lbunaligned_5_6_7:
  45907. + GETL D0.7, D1.7, [--A1.2]
  45908. + ! form 64-bit data in D0Re0, D1Re0
  45909. + MOV D1Re0, D0Re0
  45910. + ! D1Re0 << gap-size
  45911. + LSL D1Re0, D1Re0, D1.6
  45912. + MOV D0Re0, D1.7
  45913. + ! D0Re0 >> complement
  45914. + LSR D0Re0, D0Re0, D0.6
  45915. + MOV D1.5, D0Re0
  45916. + ! combine the both
  45917. + ADD D1Re0, D1Re0, D1.5
  45918. +
  45919. + MOV D1.5, D1.7
  45920. + LSL D1.5, D1.5, D1.6
  45921. + MOV D0Re0, D0.7
  45922. + LSR D0Re0, D0Re0, D0.6
  45923. + MOV D0.5, D1.5
  45924. + ADD D0Re0, D0Re0, D0.5
  45925. +
  45926. + SETL [--A0.2], D0Re0, D1Re0
  45927. + MOV D0Re0, D0.7
  45928. + MOV D1Re0, D1.7
  45929. + SUBS D1Ar5, D1Ar5, #1
  45930. + BNE $Lbunaligned_5_6_7
  45931. +
  45932. + ANDS D1Ar3, D1Ar3, #7
  45933. + BZ $Lbbyte_loop_exit
  45934. + ! Adjust A1.2
  45935. + ! A1.2 <- A1.2 +8 - gapsize
  45936. + ADD A1.2, A1.2, #8
  45937. + SUB A1.2, A1.2, D0Ar4
  45938. + B $Lbbyte_loop
  45939. +
  45940. +$Lbunaligned_1_2_3:
  45941. + MULW D1.6, D0Ar6, #8
  45942. + MOV D0.6, #32
  45943. + SUB D0.6, D0.6, D1.6
  45944. +
  45945. +$Lbunaligned_1_2_3_loop:
  45946. + GETL D0.7, D1.7, [--A1.2]
  45947. + ! form 64-bit data in D0Re0, D1Re0
  45948. + LSL D1Re0, D1Re0, D1.6
  45949. + ! save D0Re0 for later use
  45950. + MOV D0.5, D0Re0
  45951. + LSR D0Re0, D0Re0, D0.6
  45952. + MOV D1.5, D0Re0
  45953. + ADD D1Re0, D1Re0, D1.5
  45954. +
  45955. + ! orignal data in D0Re0
  45956. + MOV D1.5, D0.5
  45957. + LSL D1.5, D1.5, D1.6
  45958. + MOV D0Re0, D1.7
  45959. + LSR D0Re0, D0Re0, D0.6
  45960. + MOV D0.5, D1.5
  45961. + ADD D0Re0, D0Re0, D0.5
  45962. +
  45963. + SETL [--A0.2], D0Re0, D1Re0
  45964. + MOV D0Re0, D0.7
  45965. + MOV D1Re0, D1.7
  45966. + SUBS D1Ar5, D1Ar5, #1
  45967. + BNE $Lbunaligned_1_2_3_loop
  45968. +
  45969. + ANDS D1Ar3, D1Ar3, #7
  45970. + BZ $Lbbyte_loop_exit
  45971. + ! Adjust A1.2
  45972. + ADD A1.2, A1.2, #8
  45973. + SUB A1.2, A1.2, D0Ar4
  45974. + B $Lbbyte_loop
  45975. +
  45976. +$Lbaligned_4:
  45977. + GETL D0.7, D1.7, [--A1.2]
  45978. + MOV D1Re0, D0Re0
  45979. + MOV D0Re0, D1.7
  45980. + SETL [--A0.2], D0Re0, D1Re0
  45981. + MOV D0Re0, D0.7
  45982. + MOV D1Re0, D1.7
  45983. + SUBS D1Ar5, D1Ar5, #1
  45984. + BNE $Lbaligned_4
  45985. + ANDS D1Ar3, D1Ar3, #7
  45986. + BZ $Lbbyte_loop_exit
  45987. + ! Adjust A1.2
  45988. + ADD A1.2, A1.2, #8
  45989. + SUB A1.2, A1.2, D0Ar4
  45990. + B $Lbbyte_loop
  45991. +
  45992. +$Lforwards_copy:
  45993. + MOV A1.2, D0Ar2
  45994. + MOV A0.2, D1Ar1
  45995. + CMP D1Ar3, #8
  45996. + BLT $Lfbyte_loop
  45997. +
  45998. + MOV D0Ar4, D0Ar2
  45999. + MOV D1Ar5, D1Ar1
  46000. +
  46001. + ANDS D1Ar5, D1Ar5, #7
  46002. + BNE $Lfdest_unaligned
  46003. +
  46004. + ANDS D0Ar4, D0Ar4, #7
  46005. + BNE $Lfsrc_unaligned
  46006. +
  46007. + LSR D1Ar5, D1Ar3, #3
  46008. +
  46009. +$Lfaligned_loop:
  46010. + GETL D0Re0, D1Re0, [A1.2++]
  46011. + SUBS D1Ar5, D1Ar5, #1
  46012. + SETL [A0.2++], D0Re0, D1Re0
  46013. + BNE $Lfaligned_loop
  46014. +
  46015. + ANDS D1Ar3, D1Ar3, #7
  46016. + BZ $Lfbyte_loop_exit
  46017. +$Lfbyte_loop:
  46018. + GETB D1Re0, [A1.2++]
  46019. + SETB [A0.2++], D1Re0
  46020. + SUBS D1Ar3, D1Ar3, #1
  46021. + BNE $Lfbyte_loop
  46022. +$Lfbyte_loop_exit:
  46023. + MOV D0Re0, D1Ar1
  46024. + B $LEND
  46025. +
  46026. +$Lfdest_unaligned:
  46027. + GETB D0Re0, [A1.2++]
  46028. + ADD D1Ar5, D1Ar5, #1
  46029. + SUB D1Ar3, D1Ar3, #1
  46030. + SETB [A0.2++], D0Re0
  46031. + CMP D1Ar5, #8
  46032. + BNE $Lfdest_unaligned
  46033. + CMP D1Ar3, #8
  46034. + BLT $Lfbyte_loop
  46035. +$Lfsrc_unaligned:
  46036. + ! adjust A1.2
  46037. + LSR D1Ar5, D1Ar3, #3
  46038. +
  46039. + MOV D0Ar4, A1.2
  46040. + MOV D0Ar6, A1.2
  46041. + ANDMB D0Ar4, D0Ar4, #0xfff8
  46042. + MOV A1.2, D0Ar4
  46043. +
  46044. + ! A0.2 dst 64-bit is aligned
  46045. + SUB D0Ar6, D0Ar6, D0Ar4
  46046. + ! keep the information for the later adjustment
  46047. + MOVS D0Ar4, D0Ar6
  46048. +
  46049. + ! both aligned
  46050. + BZ $Lfaligned_loop
  46051. +
  46052. + ! prefetch
  46053. + GETL D0Re0, D1Re0, [A1.2]
  46054. +
  46055. + CMP D0Ar6, #4
  46056. + BLT $Lfunaligned_1_2_3
  46057. + BZ $Lfaligned_4
  46058. +
  46059. + SUB D0Ar6, D0Ar6, #4
  46060. + MULW D0.6, D0Ar6, #8
  46061. + MOV D1.6, #32
  46062. + SUB D1.6, D1.6, D0.6
  46063. +
  46064. +$Lfunaligned_5_6_7:
  46065. + GETL D0.7, D1.7, [++A1.2]
  46066. + ! form 64-bit data in D0Re0, D1Re0
  46067. + MOV D0Re0, D1Re0
  46068. + LSR D0Re0, D0Re0, D0.6
  46069. + MOV D1Re0, D0.7
  46070. + LSL D1Re0, D1Re0, D1.6
  46071. + MOV D0.5, D1Re0
  46072. + ADD D0Re0, D0Re0, D0.5
  46073. +
  46074. + MOV D0.5, D0.7
  46075. + LSR D0.5, D0.5, D0.6
  46076. + MOV D1Re0, D1.7
  46077. + LSL D1Re0, D1Re0, D1.6
  46078. + MOV D1.5, D0.5
  46079. + ADD D1Re0, D1Re0, D1.5
  46080. +
  46081. + SETL [A0.2++], D0Re0, D1Re0
  46082. + MOV D0Re0, D0.7
  46083. + MOV D1Re0, D1.7
  46084. + SUBS D1Ar5, D1Ar5, #1
  46085. + BNE $Lfunaligned_5_6_7
  46086. +
  46087. + ANDS D1Ar3, D1Ar3, #7
  46088. + BZ $Lfbyte_loop_exit
  46089. + ! Adjust A1.2
  46090. + ADD A1.2, A1.2, D0Ar4
  46091. + B $Lfbyte_loop
  46092. +
  46093. +$Lfunaligned_1_2_3:
  46094. + MULW D0.6, D0Ar6, #8
  46095. + MOV D1.6, #32
  46096. + SUB D1.6, D1.6, D0.6
  46097. +
  46098. +$Lfunaligned_1_2_3_loop:
  46099. + GETL D0.7, D1.7, [++A1.2]
  46100. + ! form 64-bit data in D0Re0, D1Re0
  46101. + LSR D0Re0, D0Re0, D0.6
  46102. + MOV D1.5, D1Re0
  46103. + LSL D1Re0, D1Re0, D1.6
  46104. + MOV D0.5, D1Re0
  46105. + ADD D0Re0, D0Re0, D0.5
  46106. +
  46107. + MOV D0.5, D1.5
  46108. + LSR D0.5, D0.5, D0.6
  46109. + MOV D1Re0, D0.7
  46110. + LSL D1Re0, D1Re0, D1.6
  46111. + MOV D1.5, D0.5
  46112. + ADD D1Re0, D1Re0, D1.5
  46113. +
  46114. + SETL [A0.2++], D0Re0, D1Re0
  46115. + MOV D0Re0, D0.7
  46116. + MOV D1Re0, D1.7
  46117. + SUBS D1Ar5, D1Ar5, #1
  46118. + BNE $Lfunaligned_1_2_3_loop
  46119. +
  46120. + ANDS D1Ar3, D1Ar3, #7
  46121. + BZ $Lfbyte_loop_exit
  46122. + ! Adjust A1.2
  46123. + ADD A1.2, A1.2, D0Ar4
  46124. + B $Lfbyte_loop
  46125. +
  46126. +$Lfaligned_4:
  46127. + GETL D0.7, D1.7, [++A1.2]
  46128. + MOV D0Re0, D1Re0
  46129. + MOV D1Re0, D0.7
  46130. + SETL [A0.2++], D0Re0, D1Re0
  46131. + MOV D0Re0, D0.7
  46132. + MOV D1Re0, D1.7
  46133. + SUBS D1Ar5, D1Ar5, #1
  46134. + BNE $Lfaligned_4
  46135. + ANDS D1Ar3, D1Ar3, #7
  46136. + BZ $Lfbyte_loop_exit
  46137. + ! Adjust A1.2
  46138. + ADD A1.2, A1.2, D0Ar4
  46139. + B $Lfbyte_loop
  46140. +
  46141. + .size _memmove,.-_memmove
  46142. +
  46143. +libc_hidden_def(memmove)
  46144. diff -Nur uClibc-0.9.33.2/libc/string/metag/memset.S uClibc/libc/string/metag/memset.S
  46145. --- uClibc-0.9.33.2/libc/string/metag/memset.S 1970-01-01 01:00:00.000000000 +0100
  46146. +++ uClibc/libc/string/metag/memset.S 2014-02-03 12:32:56.000000000 +0100
  46147. @@ -0,0 +1,90 @@
  46148. +! Copyright (C) 2013 Imagination Technologies Ltd.
  46149. +
  46150. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  46151. +
  46152. +
  46153. + .text
  46154. + .global _memset
  46155. + .type _memset,function
  46156. +! D1Ar1 dst
  46157. +! D0Ar2 c
  46158. +! D1Ar3 cnt
  46159. +! D0Re0 dst
  46160. +_memset:
  46161. + AND D0Ar2,D0Ar2,#0xFF ! Ensure a byte input value
  46162. + MULW D0Ar2,D0Ar2,#0x0101 ! Duplicate byte value into 0-15
  46163. + ANDS D0Ar4,D1Ar1,#7 ! Extract bottom LSBs of dst
  46164. + LSL D0Re0,D0Ar2,#16 ! Duplicate byte value into 16-31
  46165. + ADD A0.2,D0Ar2,D0Re0 ! Duplicate byte value into 4 (A0.2)
  46166. + MOV D0Re0,D1Ar1 ! Return dst
  46167. + BZ $LLongStub ! if start address is aligned
  46168. + ! start address is not aligned on an 8 byte boundary, so we
  46169. + ! need the number of bytes up to the next 8 byte address
  46170. + ! boundary, or the length of the string if less than 8, in D1Ar5
  46171. + MOV D0Ar2,#8 ! Need 8 - N in D1Ar5 ...
  46172. + SUB D1Ar5,D0Ar2,D0Ar4 ! ... subtract N
  46173. + CMP D1Ar3,D1Ar5
  46174. + MOVMI D1Ar5,D1Ar3
  46175. + B $LByteStub ! dst is mis-aligned, do $LByteStub
  46176. +
  46177. +!
  46178. +! Preamble to LongLoop which generates 4*8 bytes per interation (5 cycles)
  46179. +!
  46180. +$LLongStub:
  46181. + LSRS D0Ar2,D1Ar3,#5
  46182. + AND D1Ar3,D1Ar3,#0x1F
  46183. + MOV A1.2,A0.2
  46184. + BEQ $LLongishStub
  46185. + SUB TXRPT,D0Ar2,#1
  46186. + CMP D1Ar3,#0
  46187. +$LLongLoop:
  46188. + SETL [D1Ar1++],A0.2,A1.2
  46189. + SETL [D1Ar1++],A0.2,A1.2
  46190. + SETL [D1Ar1++],A0.2,A1.2
  46191. + SETL [D1Ar1++],A0.2,A1.2
  46192. + BR $LLongLoop
  46193. + BZ $Lexit
  46194. +!
  46195. +! Preamble to LongishLoop which generates 1*8 bytes per interation (2 cycles)
  46196. +!
  46197. +$LLongishStub:
  46198. + LSRS D0Ar2,D1Ar3,#3
  46199. + AND D1Ar3,D1Ar3,#0x7
  46200. + MOV D1Ar5,D1Ar3
  46201. + BEQ $LByteStub
  46202. + SUB TXRPT,D0Ar2,#1
  46203. + CMP D1Ar3,#0
  46204. +$LLongishLoop:
  46205. + SETL [D1Ar1++],A0.2,A1.2
  46206. + BR $LLongishLoop
  46207. + BZ $Lexit
  46208. +!
  46209. +! This does a byte structured burst of up to 7 bytes
  46210. +!
  46211. +! D1Ar1 should point to the location required
  46212. +! D1Ar3 should be the remaining total byte count
  46213. +! D1Ar5 should be burst size (<= D1Ar3)
  46214. +!
  46215. +$LByteStub:
  46216. + SUBS D1Ar3,D1Ar3,D1Ar5 ! Reduce count
  46217. + ADD D1Ar1,D1Ar1,D1Ar5 ! Advance pointer to end of area
  46218. + MULW D1Ar5,D1Ar5,#4 ! Scale to (1*4), (2*4), (3*4)
  46219. + SUB D1Ar5,D1Ar5,#(8*4) ! Rebase to -(7*4), -(6*4), -(5*4), ...
  46220. + MOV A1.2,D1Ar5
  46221. + SUB PC,CPC1,A1.2 ! Jump into table below
  46222. + SETB [D1Ar1+#(-7)],A0.2
  46223. + SETB [D1Ar1+#(-6)],A0.2
  46224. + SETB [D1Ar1+#(-5)],A0.2
  46225. + SETB [D1Ar1+#(-4)],A0.2
  46226. + SETB [D1Ar1+#(-3)],A0.2
  46227. + SETB [D1Ar1+#(-2)],A0.2
  46228. + SETB [D1Ar1+#(-1)],A0.2
  46229. +!
  46230. +! Return if all data has been output, otherwise do $LLongStub
  46231. +!
  46232. + BNZ $LLongStub
  46233. +$Lexit:
  46234. + MOV PC,D1RtP
  46235. + .size _memset,.-_memset
  46236. +
  46237. +libc_hidden_def(memset)
  46238. diff -Nur uClibc-0.9.33.2/libc/string/metag/strchr.S uClibc/libc/string/metag/strchr.S
  46239. --- uClibc-0.9.33.2/libc/string/metag/strchr.S 1970-01-01 01:00:00.000000000 +0100
  46240. +++ uClibc/libc/string/metag/strchr.S 2014-02-03 12:32:56.000000000 +0100
  46241. @@ -0,0 +1,167 @@
  46242. +! Copyright (C) 2013 Imagination Technologies Ltd.
  46243. +
  46244. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  46245. +
  46246. +
  46247. +#include <features.h>
  46248. +
  46249. + .text
  46250. + .global _strchr
  46251. + .type _strchr, function
  46252. +! D1Ar1 src
  46253. +! D0Ar2 c
  46254. +_strchr:
  46255. + AND D0Ar2,D0Ar2,#0xff ! Drop all but 8 bits of c
  46256. + MOV D1Ar5, D1Ar1 ! Copy src to D1Ar5
  46257. + AND D1Ar5, D1Ar5, #7 ! Check 64 bit alignment
  46258. + CMP D1Ar5, #0
  46259. + BZ $Laligned64bit ! Jump to 64 bit aligned strchr
  46260. +$Lalign64bit:
  46261. + GETB D0Re0, [D1Ar1++] ! Get the next character
  46262. + ADD D1Ar5, D1Ar5, #1 ! Increment alignment counter
  46263. + CMP D0Re0, D0Ar2 ! Is the char c
  46264. + BZ $Lcharatprevious ! If so exit returning position
  46265. + CMP D0Re0, #0 ! End of string?
  46266. + BZ $Lnotfound ! If so exit
  46267. + CMP D1Ar5, #8 ! Are we aligned 64bit yet?
  46268. + BNZ $Lalign64bit ! If not keep aligning
  46269. +$Laligned64bit: ! src is 64bit aligned
  46270. + MOV D0Ar4, D0Ar2 ! put c into D0Ar4
  46271. + LSL D0Ar4, D0Ar4, #8 ! Shift it up
  46272. + ADD D0Ar4, D0Ar4, D0Ar2 ! another c
  46273. + LSL D0Ar4, D0Ar4, #8 ! shift
  46274. + ADD D0Ar4, D0Ar4, D0Ar2 ! another c
  46275. + LSL D0Ar4, D0Ar4, #8 ! shift
  46276. + ADD D0Ar4, D0Ar4, D0Ar2 ! 4 copies of c
  46277. +$Lcheck8bytes:
  46278. + GETL D0Re0, D1Re0, [D1Ar1++] ! grab 16 bytes
  46279. + MOV A0.3, D0Re0 ! save for later use
  46280. + ! first word
  46281. + ! check for \0
  46282. + MOV D0Ar2, D0Re0 ! D0Ar2 is a scratch now
  46283. + ADDT D0Re0, D0Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  46284. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  46285. + XOR D0Ar2, D0Ar2, #-1
  46286. + AND D0Re0, D0Re0, D0Ar2
  46287. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  46288. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  46289. + CMP D0Re0, #0
  46290. + BNZ $Lnullinword1 ! found \0 (or c if c==\0)
  46291. +
  46292. + ! Check for c
  46293. + MOV D0Re0, A0.3 ! restore the first word
  46294. + XOR D0Re0, D0Re0, D0Ar4
  46295. + MOV D0Ar2, D0Re0 ! DO 4 1-byte compares
  46296. + ADDT D0Re0, D0Re0, #HI(0xfefefeff)
  46297. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  46298. + XOR D0Ar2, D0Ar2, #-1
  46299. + AND D0Re0, D0Re0, D0Ar2
  46300. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  46301. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  46302. + CMP D0Re0, #0
  46303. + BNZ $Lcharinword1 ! found c
  46304. +
  46305. + ! second word
  46306. + ! check for \0
  46307. + MOV A0.3, D1Re0 ! save for later use
  46308. + MOV D1Ar3, D1Re0
  46309. + ADDT D1Re0, D1Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  46310. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  46311. + XOR D1Ar3, D1Ar3, #-1
  46312. + AND D1Re0, D1Re0, D1Ar3
  46313. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  46314. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  46315. + CMP D1Re0, #0
  46316. + BNZ $Lnullinword2 ! Found \0 (or c if c==\0)
  46317. +
  46318. + MOV D0.4, A0.3 ! restore the second word
  46319. + XOR D1Re0, D0.4, D0Ar4 ! test c
  46320. +
  46321. + MOV D1Ar3, D1Re0
  46322. + ADDT D1Re0, D1Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  46323. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  46324. + XOR D1Ar3, D1Ar3, #-1
  46325. + AND D1Re0, D1Re0, D1Ar3
  46326. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  46327. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  46328. + CMP D1Re0, #0
  46329. + BNZ $Lcharinword2 ! found c
  46330. +
  46331. + B $Lcheck8bytes ! Keep checking
  46332. +
  46333. +$Lnullinword1: ! found \0 somewhere, check for c too
  46334. + SUB D1Ar1, D1Ar1, #4
  46335. +$Lnullinword2:
  46336. + SUB D1Ar1, D1Ar1, #4
  46337. + AND D0Ar2, D0Ar4, #0xff ! restore c
  46338. + MOV D0Re0, A0.3 ! restore the word
  46339. + MOV D0.4, D0Re0 ! for shifting later
  46340. + AND D0Re0, D0Re0, #0xff ! take first byte of word
  46341. + CMP D0Re0, D0Ar2
  46342. + BZ $Lcharatcurrent ! found c
  46343. + CMP D0Re0, #0!
  46344. + BZ $Lnotfound ! found \0
  46345. +
  46346. + ADD D1Ar1, D1Ar1, #1
  46347. + LSR D0.4, D0.4, #8
  46348. + MOV D0Re0, D0.4
  46349. + AND D0Re0, D0Re0, #0xff ! take second byte of word
  46350. + CMP D0Re0, D0Ar2
  46351. + BZ $Lcharatcurrent ! found c
  46352. + CMP D0Re0, #0
  46353. + BZ $Lnotfound ! found \0
  46354. +
  46355. + ADD D1Ar1, D1Ar1, #1
  46356. + LSR D0.4, D0.4, #8
  46357. + MOV D0Re0, D0.4
  46358. + AND D0Re0, D0Re0, #0xff ! take third byte of word
  46359. + CMP D0Re0, D0Ar2
  46360. + BZ $Lcharatcurrent ! found c
  46361. + CMP D0Re0, #0
  46362. + BZ $Lnotfound ! found \0
  46363. +
  46364. + ADD D1Ar1, D1Ar1, #1 ! move to 4th byte
  46365. + CMP D0Ar2, #0 ! If c was \0
  46366. + BZ $Lcharatcurrent ! c has been found!
  46367. +
  46368. +$Lnotfound:
  46369. + MOV D0Re0, #0 ! End of string c not found
  46370. + B $Lend
  46371. +
  46372. +$Lcharinword1: ! found c in first word
  46373. + MOV D1Re0, D0Re0
  46374. + SUB D1Ar1, D1Ar1, #4
  46375. +$Lcharinword2: ! found c in second word
  46376. + SUB D1Ar1, D1Ar1, #4
  46377. +
  46378. + AND D0Re0, D1Re0, #0xff ! First byte
  46379. + CMP D0Re0, #0 ! Test c (zero indicates c due
  46380. + ! to the 4 1-byte compare code)
  46381. + BNE $Lcharatcurrent
  46382. + ADD D1Ar1, D1Ar1, #1
  46383. +
  46384. + LSR D1Re0, D1Re0, #8
  46385. + AND D0Re0, D1Re0, #0xff ! Second byte
  46386. + CMP D0Re0, #0 ! Test c (indicated by zero)
  46387. + BNE $Lcharatcurrent
  46388. + ADD D1Ar1, D1Ar1, #1
  46389. +
  46390. + LSR D1Re0, D1Re0, #8
  46391. + AND D0Re0, D1Re0, #0xff ! Third byte
  46392. + CMP D0Re0, #0 ! Test c (indicated by zero)
  46393. + BNE $Lcharatcurrent
  46394. + ADD D1Ar1, D1Ar1, #1 ! Must be the fourth byte
  46395. + B $Lcharatcurrent
  46396. +
  46397. +$Lcharatprevious:
  46398. + SUB D1Ar1, D1Ar1, #1 ! Fix-up pointer
  46399. +$Lcharatcurrent:
  46400. + MOV D0Re0, D1Ar1 ! Return the string pointer
  46401. +$Lend:
  46402. + MOV PC, D1RtP
  46403. + .size _strchr,.-_strchr
  46404. +
  46405. +libc_hidden_def(strchr)
  46406. +#ifdef __UCLIBC_SUSV3_LEGACY__
  46407. +strong_alias(strchr,index)
  46408. +#endif
  46409. diff -Nur uClibc-0.9.33.2/libc/string/metag/strcmp.S uClibc/libc/string/metag/strcmp.S
  46410. --- uClibc-0.9.33.2/libc/string/metag/strcmp.S 1970-01-01 01:00:00.000000000 +0100
  46411. +++ uClibc/libc/string/metag/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  46412. @@ -0,0 +1,65 @@
  46413. +! Copyright (C) 2013 Imagination Technologies Ltd.
  46414. +
  46415. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  46416. +
  46417. +
  46418. +#include <features.h>
  46419. +
  46420. + .text
  46421. + .global _strcmp
  46422. + .type _strcmp,function
  46423. +!D1Ar1 s1
  46424. +!D0Ar2 s2
  46425. +_strcmp:
  46426. + TST D1Ar1,#3
  46427. + TSTZ D0Ar2,#3
  46428. + MOVT D1Re0,#0x0101
  46429. + ADD D1Re0,D1Re0,#0x0101
  46430. + BNZ $Lstrcmp_slow
  46431. + GETD D1Ar3,[D1Ar1+#4++] ! Load 32-bits from s1
  46432. + GETD D1Ar5,[D0Ar2+#4++] ! Load 32-bits from s2
  46433. + LSL D0FrT,D1Re0,#7 ! D0FrT = 0x80808080
  46434. +$Lstrcmp4_loop:
  46435. + SUB D0Re0,D1Ar3,D1Re0 ! D1Re0 = 0x01010101
  46436. + MOV D0Ar6,D1Ar3
  46437. + SUBS D0Ar4,D1Ar3,D1Ar5 ! Calculate difference
  46438. + XOR D0Ar6,D0Ar6,#-1
  46439. + GETD D1Ar3,[D1Ar1+#4++] ! Load 32-bits from s1
  46440. + AND D0Re0,D0Re0,D0Ar6
  46441. + ANDSZ D0Ar6,D0Re0,D0FrT ! D0FrT = 0x80808080
  46442. + GETD D1Ar5,[D0Ar2+#4++] ! Load 32-bits from s2
  46443. + BZ $Lstrcmp4_loop
  46444. + AND D0Ar6, D0Re0, D0FrT ! D0FrT = 0x80808080
  46445. +!
  46446. +! Either they are different or they both contain a NULL + junk
  46447. +!
  46448. +$Lstrcmp4_end:
  46449. + LSLS D0Re0,D0Ar4,#24 ! Was Byte[0] the same?
  46450. + LSLSZ D0Ar2,D0Ar6,#24 ! Yes: AND they where not zero?
  46451. + LSLSZ D0Re0,D0Ar4,#16 ! Yes: Was Byte[1] the same?
  46452. + LSLSZ D0Ar2,D0Ar6,#16 ! Yes: AND they where not zero?
  46453. + LSLSZ D0Re0,D0Ar4,#8 ! Tes: Was Byte[2] the same?
  46454. + LSLSZ D0Ar2,D0Ar6,#8 ! Yes: AND they where not zero?
  46455. + MOVZ D0Re0,D0Ar4 ! Yes: Must by Byte[3] thats the result
  46456. + ASR D0Re0,D0Re0,#24 ! Sign extend result to integer
  46457. + MOV PC,D1RtP
  46458. +!
  46459. +! Misaligned case, byte at a time
  46460. +!
  46461. +$Lstrcmp_slow:
  46462. + GETB D1Ar3,[D1Ar1++] ! Load char from s1
  46463. + GETB D1Ar5,[D0Ar2++] ! Load char from s2
  46464. + CMP D1Ar3,#1 ! Null -> C and NZ, rest -> NC (\1->Z)
  46465. + CMPNC D1Ar3,D1Ar5 ! NOT Null: Same -> Z, else -> NZ
  46466. + BZ $Lstrcmp_slow ! NOT Null and Same: Loop
  46467. + SUB D0Re0,D1Ar3,D1Ar5 ! Generate result
  46468. + MOV PC,D1RtP
  46469. +
  46470. + .size _strcmp,.-_strcmp
  46471. +
  46472. +
  46473. +libc_hidden_def(strcmp)
  46474. +#ifndef __UCLIBC_HAS_LOCALE__
  46475. +strong_alias(strcmp,strcoll)
  46476. +libc_hidden_def(strcoll)
  46477. +#endif
  46478. diff -Nur uClibc-0.9.33.2/libc/string/metag/strcpy.S uClibc/libc/string/metag/strcpy.S
  46479. --- uClibc-0.9.33.2/libc/string/metag/strcpy.S 1970-01-01 01:00:00.000000000 +0100
  46480. +++ uClibc/libc/string/metag/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  46481. @@ -0,0 +1,94 @@
  46482. +! Copyright (C) 2013 Imagination Technologies Ltd.
  46483. +
  46484. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  46485. +
  46486. +
  46487. + .text
  46488. + .global _strcpy
  46489. + .type _strcpy,function
  46490. +! D1Ar1 dst
  46491. +! D0Ar2 src
  46492. +
  46493. +_strcpy:
  46494. + MOV A1.2, D1Ar1
  46495. +
  46496. + ! test 4 byte alignment of src
  46497. + ANDS D0Ar4, D0Ar2, #3
  46498. + BNZ $Lbyteloop
  46499. +
  46500. + ! test 4 byte alignment of dest
  46501. + ANDS D1Ar5, D1Ar1, #3
  46502. + BNZ $Lbyteloop
  46503. +
  46504. + ! load mask values for aligned loops
  46505. + MOVT D1Ar3, #HI(0xfefefeff)
  46506. + ADD D1Ar3, D1Ar3, #LO(0xfefefeff)
  46507. + MOVT D0FrT, #HI(0x80808080)
  46508. + ADD D0FrT, D0FrT, #LO(0x80808080)
  46509. +
  46510. + ! test 8 byte alignment of src
  46511. + ANDS D0Ar4, D0Ar2, #7
  46512. + BNZ $Lwordloop
  46513. +
  46514. + ! test 8 byte alignment of dest
  46515. + ANDS D1Ar5, D1Ar1, #7
  46516. + BNZ $Lwordloop
  46517. +
  46518. +$L8byteloop:
  46519. + GETL D1Ar5, D0Ar6, [D0Ar2++]
  46520. + MOV D1Re0, D1Ar5
  46521. + MOV D0Re0, D1Ar5
  46522. + ADD D1Re0, D1Re0, D1Ar3
  46523. + XOR D0Re0, D0Re0, #-1
  46524. + AND D1Re0, D1Re0, D0Re0
  46525. + ANDS D1Re0, D1Re0, D0FrT
  46526. + BNZ $Lnullfound ! NULL in first word
  46527. +
  46528. + MOV D1Re0, D0Ar6
  46529. + MOV D0Re0, D0Ar6
  46530. + ADD D1Re0, D1Re0, D1Ar3
  46531. + XOR D0Re0, D0Re0, #-1
  46532. + AND D1Re0, D1Re0, D0Re0
  46533. + ANDS D1Re0, D1Re0, D0FrT
  46534. + BNZ $Lnullfound2 ! NULL in the second word
  46535. +
  46536. + SETL [A1.2++], D1Ar5, D0Ar6
  46537. + B $L8byteloop
  46538. +
  46539. +$Lwordloop:
  46540. + GETD D0Ar6, [D0Ar2++]
  46541. + MOV D1Re0, D0Ar6
  46542. + MOV D0Re0, D0Ar6
  46543. + ADD D1Re0, D1Re0, D1Ar3
  46544. + XOR D0Re0, D0Re0, #-1
  46545. + AND D1Re0, D1Re0, D0Re0
  46546. + ANDS D1Re0, D1Re0, D0FrT
  46547. + MOV D1Ar5, D0Ar6
  46548. + BNZ $Lnullfound
  46549. + SETD [A1.2++], D0Ar6
  46550. + B $Lwordloop
  46551. +
  46552. +$Lnullfound2:
  46553. + SETD [A1.2++], D1Ar5
  46554. + MOV D1Ar5, D0Ar6
  46555. +
  46556. +$Lnullfound:
  46557. + SETB [A1.2++], D1Ar5
  46558. + ANDS D0Ar6, D1Ar5, #0xff
  46559. + LSR D1Ar5, D1Ar5, #8
  46560. + BNZ $Lnullfound
  46561. + B $Lend
  46562. +
  46563. +$Lbyteloop:
  46564. + GETB D0Ar6, [D0Ar2++]
  46565. + SETB [A1.2++], D0Ar6
  46566. + CMP D0Ar6, #0
  46567. + BNZ $Lbyteloop
  46568. +
  46569. +$Lend:
  46570. + MOV D0Re0, D1Ar1
  46571. + MOV PC, D1RtP
  46572. +
  46573. + .size _strcpy,.-_strcpy
  46574. +
  46575. +libc_hidden_def(strcpy)
  46576. diff -Nur uClibc-0.9.33.2/libc/string/microblaze/memcpy.S uClibc/libc/string/microblaze/memcpy.S
  46577. --- uClibc-0.9.33.2/libc/string/microblaze/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46578. +++ uClibc/libc/string/microblaze/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46579. @@ -34,6 +34,14 @@
  46580. .type memcpy, @function
  46581. .ent memcpy
  46582. +#ifdef __MICROBLAZEEL__
  46583. +# define BSLLI bsrli
  46584. +# define BSRLI bslli
  46585. +#else
  46586. +# define BSLLI bslli
  46587. +# define BSRLI bsrli
  46588. +#endif
  46589. +
  46590. memcpy:
  46591. fast_memcpy_ascending:
  46592. /* move d to return register as value of function */
  46593. @@ -85,48 +93,48 @@
  46594. beqi r9, a_block_u2 /* t1 was 2 => 2 byte offset */
  46595. a_block_u3:
  46596. - bslli r11, r11, 24 /* h = h << 24 */
  46597. + BSLLI r11, r11, 24 /* h = h << 24 */
  46598. a_bu3_loop:
  46599. lwi r12, r8, 4 /* v = *(as + 4) */
  46600. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46601. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46602. or r9, r11, r9 /* t1 = h | t1 */
  46603. swi r9, r5, 0 /* *(d + 0) = t1 */
  46604. - bslli r11, r12, 24 /* h = v << 24 */
  46605. + BSLLI r11, r12, 24 /* h = v << 24 */
  46606. lwi r12, r8, 8 /* v = *(as + 8) */
  46607. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46608. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46609. or r9, r11, r9 /* t1 = h | t1 */
  46610. swi r9, r5, 4 /* *(d + 4) = t1 */
  46611. - bslli r11, r12, 24 /* h = v << 24 */
  46612. + BSLLI r11, r12, 24 /* h = v << 24 */
  46613. lwi r12, r8, 12 /* v = *(as + 12) */
  46614. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46615. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46616. or r9, r11, r9 /* t1 = h | t1 */
  46617. swi r9, r5, 8 /* *(d + 8) = t1 */
  46618. - bslli r11, r12, 24 /* h = v << 24 */
  46619. + BSLLI r11, r12, 24 /* h = v << 24 */
  46620. lwi r12, r8, 16 /* v = *(as + 16) */
  46621. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46622. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46623. or r9, r11, r9 /* t1 = h | t1 */
  46624. swi r9, r5, 12 /* *(d + 12) = t1 */
  46625. - bslli r11, r12, 24 /* h = v << 24 */
  46626. + BSLLI r11, r12, 24 /* h = v << 24 */
  46627. lwi r12, r8, 20 /* v = *(as + 20) */
  46628. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46629. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46630. or r9, r11, r9 /* t1 = h | t1 */
  46631. swi r9, r5, 16 /* *(d + 16) = t1 */
  46632. - bslli r11, r12, 24 /* h = v << 24 */
  46633. + BSLLI r11, r12, 24 /* h = v << 24 */
  46634. lwi r12, r8, 24 /* v = *(as + 24) */
  46635. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46636. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46637. or r9, r11, r9 /* t1 = h | t1 */
  46638. swi r9, r5, 20 /* *(d + 20) = t1 */
  46639. - bslli r11, r12, 24 /* h = v << 24 */
  46640. + BSLLI r11, r12, 24 /* h = v << 24 */
  46641. lwi r12, r8, 28 /* v = *(as + 28) */
  46642. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46643. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46644. or r9, r11, r9 /* t1 = h | t1 */
  46645. swi r9, r5, 24 /* *(d + 24) = t1 */
  46646. - bslli r11, r12, 24 /* h = v << 24 */
  46647. + BSLLI r11, r12, 24 /* h = v << 24 */
  46648. lwi r12, r8, 32 /* v = *(as + 32) */
  46649. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46650. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46651. or r9, r11, r9 /* t1 = h | t1 */
  46652. swi r9, r5, 28 /* *(d + 28) = t1 */
  46653. - bslli r11, r12, 24 /* h = v << 24 */
  46654. + BSLLI r11, r12, 24 /* h = v << 24 */
  46655. addi r8, r8, 32 /* as = as + 32 */
  46656. addi r4, r4, -32 /* n = n - 32 */
  46657. bneid r4, a_bu3_loop /* while (n) loop */
  46658. @@ -134,48 +142,48 @@
  46659. bri a_block_done
  46660. a_block_u1:
  46661. - bslli r11, r11, 8 /* h = h << 8 */
  46662. + BSLLI r11, r11, 8 /* h = h << 8 */
  46663. a_bu1_loop:
  46664. lwi r12, r8, 4 /* v = *(as + 4) */
  46665. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46666. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46667. or r9, r11, r9 /* t1 = h | t1 */
  46668. swi r9, r5, 0 /* *(d + 0) = t1 */
  46669. - bslli r11, r12, 8 /* h = v << 8 */
  46670. + BSLLI r11, r12, 8 /* h = v << 8 */
  46671. lwi r12, r8, 8 /* v = *(as + 8) */
  46672. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46673. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46674. or r9, r11, r9 /* t1 = h | t1 */
  46675. swi r9, r5, 4 /* *(d + 4) = t1 */
  46676. - bslli r11, r12, 8 /* h = v << 8 */
  46677. + BSLLI r11, r12, 8 /* h = v << 8 */
  46678. lwi r12, r8, 12 /* v = *(as + 12) */
  46679. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46680. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46681. or r9, r11, r9 /* t1 = h | t1 */
  46682. swi r9, r5, 8 /* *(d + 8) = t1 */
  46683. - bslli r11, r12, 8 /* h = v << 8 */
  46684. + BSLLI r11, r12, 8 /* h = v << 8 */
  46685. lwi r12, r8, 16 /* v = *(as + 16) */
  46686. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46687. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46688. or r9, r11, r9 /* t1 = h | t1 */
  46689. swi r9, r5, 12 /* *(d + 12) = t1 */
  46690. - bslli r11, r12, 8 /* h = v << 8 */
  46691. + BSLLI r11, r12, 8 /* h = v << 8 */
  46692. lwi r12, r8, 20 /* v = *(as + 20) */
  46693. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46694. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46695. or r9, r11, r9 /* t1 = h | t1 */
  46696. swi r9, r5, 16 /* *(d + 16) = t1 */
  46697. - bslli r11, r12, 8 /* h = v << 8 */
  46698. + BSLLI r11, r12, 8 /* h = v << 8 */
  46699. lwi r12, r8, 24 /* v = *(as + 24) */
  46700. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46701. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46702. or r9, r11, r9 /* t1 = h | t1 */
  46703. swi r9, r5, 20 /* *(d + 20) = t1 */
  46704. - bslli r11, r12, 8 /* h = v << 8 */
  46705. + BSLLI r11, r12, 8 /* h = v << 8 */
  46706. lwi r12, r8, 28 /* v = *(as + 28) */
  46707. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46708. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46709. or r9, r11, r9 /* t1 = h | t1 */
  46710. swi r9, r5, 24 /* *(d + 24) = t1 */
  46711. - bslli r11, r12, 8 /* h = v << 8 */
  46712. + BSLLI r11, r12, 8 /* h = v << 8 */
  46713. lwi r12, r8, 32 /* v = *(as + 32) */
  46714. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46715. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46716. or r9, r11, r9 /* t1 = h | t1 */
  46717. swi r9, r5, 28 /* *(d + 28) = t1 */
  46718. - bslli r11, r12, 8 /* h = v << 8 */
  46719. + BSLLI r11, r12, 8 /* h = v << 8 */
  46720. addi r8, r8, 32 /* as = as + 32 */
  46721. addi r4, r4, -32 /* n = n - 32 */
  46722. bneid r4, a_bu1_loop /* while (n) loop */
  46723. @@ -183,48 +191,48 @@
  46724. bri a_block_done
  46725. a_block_u2:
  46726. - bslli r11, r11, 16 /* h = h << 16 */
  46727. + BSLLI r11, r11, 16 /* h = h << 16 */
  46728. a_bu2_loop:
  46729. lwi r12, r8, 4 /* v = *(as + 4) */
  46730. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46731. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46732. or r9, r11, r9 /* t1 = h | t1 */
  46733. swi r9, r5, 0 /* *(d + 0) = t1 */
  46734. - bslli r11, r12, 16 /* h = v << 16 */
  46735. + BSLLI r11, r12, 16 /* h = v << 16 */
  46736. lwi r12, r8, 8 /* v = *(as + 8) */
  46737. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46738. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46739. or r9, r11, r9 /* t1 = h | t1 */
  46740. swi r9, r5, 4 /* *(d + 4) = t1 */
  46741. - bslli r11, r12, 16 /* h = v << 16 */
  46742. + BSLLI r11, r12, 16 /* h = v << 16 */
  46743. lwi r12, r8, 12 /* v = *(as + 12) */
  46744. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46745. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46746. or r9, r11, r9 /* t1 = h | t1 */
  46747. swi r9, r5, 8 /* *(d + 8) = t1 */
  46748. - bslli r11, r12, 16 /* h = v << 16 */
  46749. + BSLLI r11, r12, 16 /* h = v << 16 */
  46750. lwi r12, r8, 16 /* v = *(as + 16) */
  46751. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46752. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46753. or r9, r11, r9 /* t1 = h | t1 */
  46754. swi r9, r5, 12 /* *(d + 12) = t1 */
  46755. - bslli r11, r12, 16 /* h = v << 16 */
  46756. + BSLLI r11, r12, 16 /* h = v << 16 */
  46757. lwi r12, r8, 20 /* v = *(as + 20) */
  46758. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46759. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46760. or r9, r11, r9 /* t1 = h | t1 */
  46761. swi r9, r5, 16 /* *(d + 16) = t1 */
  46762. - bslli r11, r12, 16 /* h = v << 16 */
  46763. + BSLLI r11, r12, 16 /* h = v << 16 */
  46764. lwi r12, r8, 24 /* v = *(as + 24) */
  46765. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46766. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46767. or r9, r11, r9 /* t1 = h | t1 */
  46768. swi r9, r5, 20 /* *(d + 20) = t1 */
  46769. - bslli r11, r12, 16 /* h = v << 16 */
  46770. + BSLLI r11, r12, 16 /* h = v << 16 */
  46771. lwi r12, r8, 28 /* v = *(as + 28) */
  46772. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46773. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46774. or r9, r11, r9 /* t1 = h | t1 */
  46775. swi r9, r5, 24 /* *(d + 24) = t1 */
  46776. - bslli r11, r12, 16 /* h = v << 16 */
  46777. + BSLLI r11, r12, 16 /* h = v << 16 */
  46778. lwi r12, r8, 32 /* v = *(as + 32) */
  46779. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46780. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46781. or r9, r11, r9 /* t1 = h | t1 */
  46782. swi r9, r5, 28 /* *(d + 28) = t1 */
  46783. - bslli r11, r12, 16 /* h = v << 16 */
  46784. + BSLLI r11, r12, 16 /* h = v << 16 */
  46785. addi r8, r8, 32 /* as = as + 32 */
  46786. addi r4, r4, -32 /* n = n - 32 */
  46787. bneid r4, a_bu2_loop /* while (n) loop */
  46788. @@ -263,13 +271,13 @@
  46789. beqi r9, a_word_u2 /* t1 was 2 => 2 byte offset */
  46790. a_word_u3:
  46791. - bslli r11, r11, 24 /* h = h << 24 */
  46792. + BSLLI r11, r11, 24 /* h = h << 24 */
  46793. a_wu3_loop:
  46794. lw r12, r8, r10 /* v = *(as + offset) */
  46795. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46796. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46797. or r9, r11, r9 /* t1 = h | t1 */
  46798. sw r9, r5, r10 /* *(d + offset) = t1 */
  46799. - bslli r11, r12, 24 /* h = v << 24 */
  46800. + BSLLI r11, r12, 24 /* h = v << 24 */
  46801. addi r4, r4,-4 /* n = n - 4 */
  46802. bneid r4, a_wu3_loop /* while (n) loop */
  46803. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46804. @@ -277,13 +285,13 @@
  46805. bri a_word_done
  46806. a_word_u1:
  46807. - bslli r11, r11, 8 /* h = h << 8 */
  46808. + BSLLI r11, r11, 8 /* h = h << 8 */
  46809. a_wu1_loop:
  46810. lw r12, r8, r10 /* v = *(as + offset) */
  46811. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46812. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46813. or r9, r11, r9 /* t1 = h | t1 */
  46814. sw r9, r5, r10 /* *(d + offset) = t1 */
  46815. - bslli r11, r12, 8 /* h = v << 8 */
  46816. + BSLLI r11, r12, 8 /* h = v << 8 */
  46817. addi r4, r4,-4 /* n = n - 4 */
  46818. bneid r4, a_wu1_loop /* while (n) loop */
  46819. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46820. @@ -291,13 +299,13 @@
  46821. bri a_word_done
  46822. a_word_u2:
  46823. - bslli r11, r11, 16 /* h = h << 16 */
  46824. + BSLLI r11, r11, 16 /* h = h << 16 */
  46825. a_wu2_loop:
  46826. lw r12, r8, r10 /* v = *(as + offset) */
  46827. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46828. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46829. or r9, r11, r9 /* t1 = h | t1 */
  46830. sw r9, r5, r10 /* *(d + offset) = t1 */
  46831. - bslli r11, r12, 16 /* h = v << 16 */
  46832. + BSLLI r11, r12, 16 /* h = v << 16 */
  46833. addi r4, r4,-4 /* n = n - 4 */
  46834. bneid r4, a_wu2_loop /* while (n) loop */
  46835. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46836. diff -Nur uClibc-0.9.33.2/libc/string/microblaze/memmove.S uClibc/libc/string/microblaze/memmove.S
  46837. --- uClibc-0.9.33.2/libc/string/microblaze/memmove.S 2012-05-15 09:20:09.000000000 +0200
  46838. +++ uClibc/libc/string/microblaze/memmove.S 2014-02-03 12:32:56.000000000 +0100
  46839. @@ -33,6 +33,14 @@
  46840. .type memmove, @function
  46841. .ent memmove
  46842. +#ifdef __MICROBLAZEEL__
  46843. +# define BSLLI bsrli
  46844. +# define BSRLI bslli
  46845. +#else
  46846. +# define BSLLI bslli
  46847. +# define BSRLI bsrli
  46848. +#endif
  46849. +
  46850. memmove:
  46851. cmpu r4, r5, r6 /* n = s - d */
  46852. bgei r4, HIDDEN_JUMPTARGET(memcpy)
  46853. @@ -112,150 +120,150 @@
  46854. beqi r9,d_block_u2 /* t1 was 2 => 2 byte offset */
  46855. d_block_u3:
  46856. - bsrli r11, r11, 8 /* h = h >> 8 */
  46857. + BSRLI r11, r11, 8 /* h = h >> 8 */
  46858. d_bu3_loop:
  46859. addi r8, r8, -32 /* as = as - 32 */
  46860. addi r5, r5, -32 /* d = d - 32 */
  46861. lwi r12, r8, 28 /* v = *(as + 28) */
  46862. - bslli r9, r12, 24 /* t1 = v << 24 */
  46863. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46864. or r9, r11, r9 /* t1 = h | t1 */
  46865. swi r9, r5, 28 /* *(d + 28) = t1 */
  46866. - bsrli r11, r12, 8 /* h = v >> 8 */
  46867. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46868. lwi r12, r8, 24 /* v = *(as + 24) */
  46869. - bslli r9, r12, 24 /* t1 = v << 24 */
  46870. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46871. or r9, r11, r9 /* t1 = h | t1 */
  46872. swi r9, r5, 24 /* *(d + 24) = t1 */
  46873. - bsrli r11, r12, 8 /* h = v >> 8 */
  46874. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46875. lwi r12, r8, 20 /* v = *(as + 20) */
  46876. - bslli r9, r12, 24 /* t1 = v << 24 */
  46877. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46878. or r9, r11, r9 /* t1 = h | t1 */
  46879. swi r9, r5, 20 /* *(d + 20) = t1 */
  46880. - bsrli r11, r12, 8 /* h = v >> 8 */
  46881. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46882. lwi r12, r8, 16 /* v = *(as + 16) */
  46883. - bslli r9, r12, 24 /* t1 = v << 24 */
  46884. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46885. or r9, r11, r9 /* t1 = h | t1 */
  46886. swi r9, r5, 16 /* *(d + 16) = t1 */
  46887. - bsrli r11, r12, 8 /* h = v >> 8 */
  46888. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46889. lwi r12, r8, 12 /* v = *(as + 12) */
  46890. - bslli r9, r12, 24 /* t1 = v << 24 */
  46891. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46892. or r9, r11, r9 /* t1 = h | t1 */
  46893. swi r9, r5, 12 /* *(d + 112) = t1 */
  46894. - bsrli r11, r12, 8 /* h = v >> 8 */
  46895. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46896. lwi r12, r8, 8 /* v = *(as + 8) */
  46897. - bslli r9, r12, 24 /* t1 = v << 24 */
  46898. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46899. or r9, r11, r9 /* t1 = h | t1 */
  46900. swi r9, r5, 8 /* *(d + 8) = t1 */
  46901. - bsrli r11, r12, 8 /* h = v >> 8 */
  46902. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46903. lwi r12, r8, 4 /* v = *(as + 4) */
  46904. - bslli r9, r12, 24 /* t1 = v << 24 */
  46905. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46906. or r9, r11, r9 /* t1 = h | t1 */
  46907. swi r9, r5, 4 /* *(d + 4) = t1 */
  46908. - bsrli r11, r12, 8 /* h = v >> 8 */
  46909. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46910. lwi r12, r8, 0 /* v = *(as + 0) */
  46911. - bslli r9, r12, 24 /* t1 = v << 24 */
  46912. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46913. or r9, r11, r9 /* t1 = h | t1 */
  46914. swi r9, r5, 0 /* *(d + 0) = t1 */
  46915. addi r4, r4, -32 /* n = n - 32 */
  46916. bneid r4, d_bu3_loop /* while (n) loop */
  46917. - bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46918. + BSRLI r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46919. bri d_block_done
  46920. d_block_u1:
  46921. - bsrli r11, r11, 24 /* h = h >> 24 */
  46922. + BSRLI r11, r11, 24 /* h = h >> 24 */
  46923. d_bu1_loop:
  46924. addi r8, r8, -32 /* as = as - 32 */
  46925. addi r5, r5, -32 /* d = d - 32 */
  46926. lwi r12, r8, 28 /* v = *(as + 28) */
  46927. - bslli r9, r12, 8 /* t1 = v << 8 */
  46928. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46929. or r9, r11, r9 /* t1 = h | t1 */
  46930. swi r9, r5, 28 /* *(d + 28) = t1 */
  46931. - bsrli r11, r12, 24 /* h = v >> 24 */
  46932. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46933. lwi r12, r8, 24 /* v = *(as + 24) */
  46934. - bslli r9, r12, 8 /* t1 = v << 8 */
  46935. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46936. or r9, r11, r9 /* t1 = h | t1 */
  46937. swi r9, r5, 24 /* *(d + 24) = t1 */
  46938. - bsrli r11, r12, 24 /* h = v >> 24 */
  46939. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46940. lwi r12, r8, 20 /* v = *(as + 20) */
  46941. - bslli r9, r12, 8 /* t1 = v << 8 */
  46942. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46943. or r9, r11, r9 /* t1 = h | t1 */
  46944. swi r9, r5, 20 /* *(d + 20) = t1 */
  46945. - bsrli r11, r12, 24 /* h = v >> 24 */
  46946. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46947. lwi r12, r8, 16 /* v = *(as + 16) */
  46948. - bslli r9, r12, 8 /* t1 = v << 8 */
  46949. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46950. or r9, r11, r9 /* t1 = h | t1 */
  46951. swi r9, r5, 16 /* *(d + 16) = t1 */
  46952. - bsrli r11, r12, 24 /* h = v >> 24 */
  46953. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46954. lwi r12, r8, 12 /* v = *(as + 12) */
  46955. - bslli r9, r12, 8 /* t1 = v << 8 */
  46956. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46957. or r9, r11, r9 /* t1 = h | t1 */
  46958. swi r9, r5, 12 /* *(d + 112) = t1 */
  46959. - bsrli r11, r12, 24 /* h = v >> 24 */
  46960. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46961. lwi r12, r8, 8 /* v = *(as + 8) */
  46962. - bslli r9, r12, 8 /* t1 = v << 8 */
  46963. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46964. or r9, r11, r9 /* t1 = h | t1 */
  46965. swi r9, r5, 8 /* *(d + 8) = t1 */
  46966. - bsrli r11, r12, 24 /* h = v >> 24 */
  46967. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46968. lwi r12, r8, 4 /* v = *(as + 4) */
  46969. - bslli r9, r12, 8 /* t1 = v << 8 */
  46970. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46971. or r9, r11, r9 /* t1 = h | t1 */
  46972. swi r9, r5, 4 /* *(d + 4) = t1 */
  46973. - bsrli r11, r12, 24 /* h = v >> 24 */
  46974. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46975. lwi r12, r8, 0 /* v = *(as + 0) */
  46976. - bslli r9, r12, 8 /* t1 = v << 8 */
  46977. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46978. or r9, r11, r9 /* t1 = h | t1 */
  46979. swi r9, r5, 0 /* *(d + 0) = t1 */
  46980. addi r4, r4, -32 /* n = n - 32 */
  46981. bneid r4, d_bu1_loop /* while (n) loop */
  46982. - bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46983. + BSRLI r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46984. bri d_block_done
  46985. d_block_u2:
  46986. - bsrli r11, r11, 16 /* h = h >> 16 */
  46987. + BSRLI r11, r11, 16 /* h = h >> 16 */
  46988. d_bu2_loop:
  46989. addi r8, r8, -32 /* as = as - 32 */
  46990. addi r5, r5, -32 /* d = d - 32 */
  46991. lwi r12, r8, 28 /* v = *(as + 28) */
  46992. - bslli r9, r12, 16 /* t1 = v << 16 */
  46993. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46994. or r9, r11, r9 /* t1 = h | t1 */
  46995. swi r9, r5, 28 /* *(d + 28) = t1 */
  46996. - bsrli r11, r12, 16 /* h = v >> 16 */
  46997. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46998. lwi r12, r8, 24 /* v = *(as + 24) */
  46999. - bslli r9, r12, 16 /* t1 = v << 16 */
  47000. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47001. or r9, r11, r9 /* t1 = h | t1 */
  47002. swi r9, r5, 24 /* *(d + 24) = t1 */
  47003. - bsrli r11, r12, 16 /* h = v >> 16 */
  47004. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47005. lwi r12, r8, 20 /* v = *(as + 20) */
  47006. - bslli r9, r12, 16 /* t1 = v << 16 */
  47007. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47008. or r9, r11, r9 /* t1 = h | t1 */
  47009. swi r9, r5, 20 /* *(d + 20) = t1 */
  47010. - bsrli r11, r12, 16 /* h = v >> 16 */
  47011. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47012. lwi r12, r8, 16 /* v = *(as + 16) */
  47013. - bslli r9, r12, 16 /* t1 = v << 16 */
  47014. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47015. or r9, r11, r9 /* t1 = h | t1 */
  47016. swi r9, r5, 16 /* *(d + 16) = t1 */
  47017. - bsrli r11, r12, 16 /* h = v >> 16 */
  47018. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47019. lwi r12, r8, 12 /* v = *(as + 12) */
  47020. - bslli r9, r12, 16 /* t1 = v << 16 */
  47021. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47022. or r9, r11, r9 /* t1 = h | t1 */
  47023. swi r9, r5, 12 /* *(d + 112) = t1 */
  47024. - bsrli r11, r12, 16 /* h = v >> 16 */
  47025. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47026. lwi r12, r8, 8 /* v = *(as + 8) */
  47027. - bslli r9, r12, 16 /* t1 = v << 16 */
  47028. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47029. or r9, r11, r9 /* t1 = h | t1 */
  47030. swi r9, r5, 8 /* *(d + 8) = t1 */
  47031. - bsrli r11, r12, 16 /* h = v >> 16 */
  47032. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47033. lwi r12, r8, 4 /* v = *(as + 4) */
  47034. - bslli r9, r12, 16 /* t1 = v << 16 */
  47035. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47036. or r9, r11, r9 /* t1 = h | t1 */
  47037. swi r9, r5, 4 /* *(d + 4) = t1 */
  47038. - bsrli r11, r12, 16 /* h = v >> 16 */
  47039. + BSRLI r11, r12, 16 /* h = v >> 16 */
  47040. lwi r12, r8, 0 /* v = *(as + 0) */
  47041. - bslli r9, r12, 16 /* t1 = v << 16 */
  47042. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47043. or r9, r11, r9 /* t1 = h | t1 */
  47044. swi r9, r5, 0 /* *(d + 0) = t1 */
  47045. addi r4, r4, -32 /* n = n - 32 */
  47046. bneid r4, d_bu2_loop /* while (n) loop */
  47047. - bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  47048. + BSRLI r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  47049. d_block_done:
  47050. addi r4, r0, 4 /* n = 4 */
  47051. @@ -290,41 +298,41 @@
  47052. beqi r9,d_word_u2 /* t1 was 2 => 2 byte offset */
  47053. d_word_u3:
  47054. - bsrli r11, r11, 8 /* h = h >> 8 */
  47055. + BSRLI r11, r11, 8 /* h = h >> 8 */
  47056. d_wu3_loop:
  47057. addi r4, r4,-4 /* n = n - 4 */
  47058. lw r12, r8, r4 /* v = *(as + n) */
  47059. - bslli r9, r12, 24 /* t1 = v << 24 */
  47060. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  47061. or r9, r11, r9 /* t1 = h | t1 */
  47062. sw r9, r5, r4 /* *(d + n) = t1 */
  47063. bneid r4, d_wu3_loop /* while (n) loop */
  47064. - bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  47065. + BSRLI r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  47066. bri d_word_done
  47067. d_word_u1:
  47068. - bsrli r11, r11, 24 /* h = h >> 24 */
  47069. + BSRLI r11, r11, 24 /* h = h >> 24 */
  47070. d_wu1_loop:
  47071. addi r4, r4,-4 /* n = n - 4 */
  47072. lw r12, r8, r4 /* v = *(as + n) */
  47073. - bslli r9, r12, 8 /* t1 = v << 8 */
  47074. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  47075. or r9, r11, r9 /* t1 = h | t1 */
  47076. sw r9, r5, r4 /* *(d + n) = t1 */
  47077. bneid r4, d_wu1_loop /* while (n) loop */
  47078. - bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  47079. + BSRLI r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  47080. bri d_word_done
  47081. d_word_u2:
  47082. - bsrli r11, r11, 16 /* h = h >> 16 */
  47083. + BSRLI r11, r11, 16 /* h = h >> 16 */
  47084. d_wu2_loop:
  47085. addi r4, r4,-4 /* n = n - 4 */
  47086. lw r12, r8, r4 /* v = *(as + n) */
  47087. - bslli r9, r12, 16 /* t1 = v << 16 */
  47088. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  47089. or r9, r11, r9 /* t1 = h | t1 */
  47090. sw r9, r5, r4 /* *(d + n) = t1 */
  47091. bneid r4, d_wu2_loop /* while (n) loop */
  47092. - bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  47093. + BSRLI r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  47094. d_word_done:
  47095. diff -Nur uClibc-0.9.33.2/libc/string/mips/memcpy.S uClibc/libc/string/mips/memcpy.S
  47096. --- uClibc-0.9.33.2/libc/string/mips/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47097. +++ uClibc/libc/string/mips/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47098. @@ -13,14 +13,12 @@
  47099. Lesser General Public License for more details.
  47100. You should have received a copy of the GNU Lesser General Public
  47101. - License along with the GNU C Library; if not, write to the Free
  47102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47103. - 02111-1307 USA. */
  47104. + License along with the GNU C Library; if not, see
  47105. + <http://www.gnu.org/licenses/>. */
  47106. #include <features.h>
  47107. -/*#include <sysdep.h>*/
  47108. +#include <sysdep.h>
  47109. #include <endian.h>
  47110. -#include "sysdep.h"
  47111. /* void *memcpy(void *s1, const void *s2, size_t n); */
  47112. diff -Nur uClibc-0.9.33.2/libc/string/mips/memset.S uClibc/libc/string/mips/memset.S
  47113. --- uClibc-0.9.33.2/libc/string/mips/memset.S 2012-05-15 09:20:09.000000000 +0200
  47114. +++ uClibc/libc/string/mips/memset.S 2014-02-03 12:32:56.000000000 +0100
  47115. @@ -13,14 +13,12 @@
  47116. Lesser General Public License for more details.
  47117. You should have received a copy of the GNU Lesser General Public
  47118. - License along with the GNU C Library; if not, write to the Free
  47119. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47120. - 02111-1307 USA. */
  47121. + License along with the GNU C Library; if not, see
  47122. + <http://www.gnu.org/licenses/>. */
  47123. #include <features.h>
  47124. -/*#include <sysdep.h>*/
  47125. +#include <sysdep.h>
  47126. #include <endian.h>
  47127. -#include "sysdep.h"
  47128. /* void *memset(void *s, int c, size_t n). */
  47129. diff -Nur uClibc-0.9.33.2/libc/string/mips/sysdep.h uClibc/libc/string/mips/sysdep.h
  47130. --- uClibc-0.9.33.2/libc/string/mips/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  47131. +++ uClibc/libc/string/mips/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  47132. @@ -1,45 +0,0 @@
  47133. -/* Adapted from glibc's sysdeps/unix/mips/sysdep.h */
  47134. -
  47135. -/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
  47136. - Free Software Foundation, Inc.
  47137. - This file is part of the GNU C Library.
  47138. - Contributed by Brendan Kehoe (brendan@zen.org).
  47139. -
  47140. - The GNU C Library is free software; you can redistribute it and/or
  47141. - modify it under the terms of the GNU Lesser General Public
  47142. - License as published by the Free Software Foundation; either
  47143. - version 2.1 of the License, or (at your option) any later version.
  47144. -
  47145. - The GNU C Library is distributed in the hope that it will be useful,
  47146. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  47147. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47148. - Lesser General Public License for more details.
  47149. -
  47150. - You should have received a copy of the GNU Lesser General Public
  47151. - License along with the GNU C Library; if not, write to the Free
  47152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47153. - 02111-1307 USA. */
  47154. -
  47155. -#ifdef __ASSEMBLER__
  47156. -
  47157. -#include <sgidefs.h>
  47158. -#include <sys/regdef.h>
  47159. -
  47160. -#define ENTRY(name) \
  47161. - .globl name; \
  47162. - .align 2; \
  47163. - .ent name,0; \
  47164. - name/* use a comment rather than ## to workaround bug in gcc-3.4.x */:
  47165. -
  47166. -#undef END
  47167. -#define END(function) \
  47168. - .end function; \
  47169. - .size function,.-function
  47170. -
  47171. -#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
  47172. -# define L(label) $L ## label
  47173. -#else
  47174. -# define L(label) .L ## label
  47175. -#endif
  47176. -
  47177. -#endif
  47178. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memchr.S uClibc/libc/string/sparc/sparc32/memchr.S
  47179. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memchr.S 2012-05-15 09:20:09.000000000 +0200
  47180. +++ uClibc/libc/string/sparc/sparc32/memchr.S 2014-02-03 12:32:56.000000000 +0100
  47181. @@ -24,9 +24,8 @@
  47182. Lesser General Public License for more details.
  47183. You should have received a copy of the GNU Lesser General Public
  47184. - License along with the GNU C Library; if not, write to the Free
  47185. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47186. - 02111-1307 USA. */
  47187. + License along with the GNU C Library; if not, see
  47188. + <http://www.gnu.org/licenses/>. */
  47189. .text
  47190. .align 4
  47191. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memcpy.S uClibc/libc/string/sparc/sparc32/memcpy.S
  47192. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47193. +++ uClibc/libc/string/sparc/sparc32/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47194. @@ -17,9 +17,8 @@
  47195. Lesser General Public License for more details.
  47196. You should have received a copy of the GNU Lesser General Public
  47197. - License along with the GNU C Library; if not, write to the Free
  47198. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47199. - 02111-1307 USA. */
  47200. + License along with the GNU C Library; if not, see
  47201. + <http://www.gnu.org/licenses/>. */
  47202. #include <features.h>
  47203. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memset.S uClibc/libc/string/sparc/sparc32/memset.S
  47204. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memset.S 2012-05-15 09:20:09.000000000 +0200
  47205. +++ uClibc/libc/string/sparc/sparc32/memset.S 2014-02-03 12:32:56.000000000 +0100
  47206. @@ -16,9 +16,8 @@
  47207. Lesser General Public License for more details.
  47208. You should have received a copy of the GNU Lesser General Public
  47209. - License along with the GNU C Library; if not, write to the Free
  47210. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47211. - 02111-1307 USA. */
  47212. + License along with the GNU C Library; if not, see
  47213. + <http://www.gnu.org/licenses/>. */
  47214. #include <features.h>
  47215. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/stpcpy.S uClibc/libc/string/sparc/sparc32/stpcpy.S
  47216. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/stpcpy.S 2012-05-15 09:20:09.000000000 +0200
  47217. +++ uClibc/libc/string/sparc/sparc32/stpcpy.S 2014-02-03 12:32:56.000000000 +0100
  47218. @@ -15,9 +15,8 @@
  47219. Lesser General Public License for more details.
  47220. You should have received a copy of the GNU Lesser General Public
  47221. - License along with the GNU C Library; if not, write to the Free
  47222. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47223. - 02111-1307 USA. */
  47224. + License along with the GNU C Library; if not, see
  47225. + <http://www.gnu.org/licenses/>. */
  47226. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47227. to find out if any byte in xword could be zero. This is fast, but
  47228. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcat.S uClibc/libc/string/sparc/sparc32/strcat.S
  47229. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcat.S 2012-05-15 09:20:09.000000000 +0200
  47230. +++ uClibc/libc/string/sparc/sparc32/strcat.S 2014-02-03 12:32:56.000000000 +0100
  47231. @@ -15,9 +15,8 @@
  47232. Lesser General Public License for more details.
  47233. You should have received a copy of the GNU Lesser General Public
  47234. - License along with the GNU C Library; if not, write to the Free
  47235. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47236. - 02111-1307 USA. */
  47237. + License along with the GNU C Library; if not, see
  47238. + <http://www.gnu.org/licenses/>. */
  47239. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47240. to find out if any byte in xword could be zero. This is fast, but
  47241. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strchr.S uClibc/libc/string/sparc/sparc32/strchr.S
  47242. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strchr.S 2012-05-15 09:20:09.000000000 +0200
  47243. +++ uClibc/libc/string/sparc/sparc32/strchr.S 2014-02-03 12:32:56.000000000 +0100
  47244. @@ -16,9 +16,8 @@
  47245. Lesser General Public License for more details.
  47246. You should have received a copy of the GNU Lesser General Public
  47247. - License along with the GNU C Library; if not, write to the Free
  47248. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47249. - 02111-1307 USA. */
  47250. + License along with the GNU C Library; if not, see
  47251. + <http://www.gnu.org/licenses/>. */
  47252. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47253. to find out if any byte in xword could be zero. This is fast, but
  47254. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcmp.S uClibc/libc/string/sparc/sparc32/strcmp.S
  47255. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  47256. +++ uClibc/libc/string/sparc/sparc32/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  47257. @@ -15,9 +15,8 @@
  47258. Lesser General Public License for more details.
  47259. You should have received a copy of the GNU Lesser General Public
  47260. - License along with the GNU C Library; if not, write to the Free
  47261. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47262. - 02111-1307 USA. */
  47263. + License along with the GNU C Library; if not, see
  47264. + <http://www.gnu.org/licenses/>. */
  47265. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47266. to find out if any byte in xword could be zero. This is fast, but
  47267. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcpy.S uClibc/libc/string/sparc/sparc32/strcpy.S
  47268. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  47269. +++ uClibc/libc/string/sparc/sparc32/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  47270. @@ -15,9 +15,8 @@
  47271. Lesser General Public License for more details.
  47272. You should have received a copy of the GNU Lesser General Public
  47273. - License along with the GNU C Library; if not, write to the Free
  47274. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47275. - 02111-1307 USA. */
  47276. + License along with the GNU C Library; if not, see
  47277. + <http://www.gnu.org/licenses/>. */
  47278. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47279. to find out if any byte in xword could be zero. This is fast, but
  47280. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strlen.S uClibc/libc/string/sparc/sparc32/strlen.S
  47281. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strlen.S 2012-05-15 09:20:09.000000000 +0200
  47282. +++ uClibc/libc/string/sparc/sparc32/strlen.S 2014-02-03 12:32:56.000000000 +0100
  47283. @@ -15,9 +15,8 @@
  47284. Lesser General Public License for more details.
  47285. You should have received a copy of the GNU Lesser General Public
  47286. - License along with the GNU C Library; if not, write to the Free
  47287. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47288. - 02111-1307 USA. */
  47289. + License along with the GNU C Library; if not, see
  47290. + <http://www.gnu.org/licenses/>. */
  47291. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  47292. to find out if any byte in xword could be zero. This is fast, but
  47293. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memchr.S uClibc/libc/string/sparc/sparc64/memchr.S
  47294. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memchr.S 2012-05-15 09:20:09.000000000 +0200
  47295. +++ uClibc/libc/string/sparc/sparc64/memchr.S 2014-02-03 12:32:56.000000000 +0100
  47296. @@ -24,9 +24,8 @@
  47297. Lesser General Public License for more details.
  47298. You should have received a copy of the GNU Lesser General Public
  47299. - License along with the GNU C Library; if not, write to the Free
  47300. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47301. - 02111-1307 USA. */
  47302. + License along with the GNU C Library; if not, see
  47303. + <http://www.gnu.org/licenses/>. */
  47304. #include <asm/asi.h>
  47305. #ifndef XCC
  47306. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memcpy.S uClibc/libc/string/sparc/sparc64/memcpy.S
  47307. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47308. +++ uClibc/libc/string/sparc/sparc64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47309. @@ -16,9 +16,8 @@
  47310. Lesser General Public License for more details.
  47311. You should have received a copy of the GNU Lesser General Public
  47312. - License along with the GNU C Library; if not, write to the Free
  47313. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47314. - 02111-1307 USA. */
  47315. + License along with the GNU C Library; if not, see
  47316. + <http://www.gnu.org/licenses/>. */
  47317. #include <features.h>
  47318. #include <asm/asi.h>
  47319. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memset.S uClibc/libc/string/sparc/sparc64/memset.S
  47320. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memset.S 2012-05-15 09:20:09.000000000 +0200
  47321. +++ uClibc/libc/string/sparc/sparc64/memset.S 2014-02-03 12:32:56.000000000 +0100
  47322. @@ -16,9 +16,8 @@
  47323. Lesser General Public License for more details.
  47324. You should have received a copy of the GNU Lesser General Public
  47325. - License along with the GNU C Library; if not, write to the Free
  47326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47327. - 02111-1307 USA. */
  47328. + License along with the GNU C Library; if not, see
  47329. + <http://www.gnu.org/licenses/>. */
  47330. #include <features.h>
  47331. #include <asm/asi.h>
  47332. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/sparcv9b/memcpy.S uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S
  47333. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47334. +++ uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47335. @@ -15,9 +15,8 @@
  47336. Lesser General Public License for more details.
  47337. You should have received a copy of the GNU Lesser General Public
  47338. - License along with the GNU C Library; if not, write to the Free
  47339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47340. - 02111-1307 USA. */
  47341. + License along with the GNU C Library; if not, see
  47342. + <http://www.gnu.org/licenses/>. */
  47343. #include <features.h>
  47344. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/stpcpy.S uClibc/libc/string/sparc/sparc64/stpcpy.S
  47345. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/stpcpy.S 2012-05-15 09:20:09.000000000 +0200
  47346. +++ uClibc/libc/string/sparc/sparc64/stpcpy.S 2014-02-03 12:32:56.000000000 +0100
  47347. @@ -16,9 +16,8 @@
  47348. Lesser General Public License for more details.
  47349. You should have received a copy of the GNU Lesser General Public
  47350. - License along with the GNU C Library; if not, write to the Free
  47351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47352. - 02111-1307 USA. */
  47353. + License along with the GNU C Library; if not, see
  47354. + <http://www.gnu.org/licenses/>. */
  47355. #include <asm/asi.h>
  47356. #ifndef XCC
  47357. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcat.S uClibc/libc/string/sparc/sparc64/strcat.S
  47358. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcat.S 2012-05-15 09:20:09.000000000 +0200
  47359. +++ uClibc/libc/string/sparc/sparc64/strcat.S 2014-02-03 12:32:56.000000000 +0100
  47360. @@ -16,9 +16,8 @@
  47361. Lesser General Public License for more details.
  47362. You should have received a copy of the GNU Lesser General Public
  47363. - License along with the GNU C Library; if not, write to the Free
  47364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47365. - 02111-1307 USA. */
  47366. + License along with the GNU C Library; if not, see
  47367. + <http://www.gnu.org/licenses/>. */
  47368. #include <asm/asi.h>
  47369. #ifndef XCC
  47370. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strchr.S uClibc/libc/string/sparc/sparc64/strchr.S
  47371. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  47372. +++ uClibc/libc/string/sparc/sparc64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  47373. @@ -16,9 +16,8 @@
  47374. Lesser General Public License for more details.
  47375. You should have received a copy of the GNU Lesser General Public
  47376. - License along with the GNU C Library; if not, write to the Free
  47377. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47378. - 02111-1307 USA. */
  47379. + License along with the GNU C Library; if not, see
  47380. + <http://www.gnu.org/licenses/>. */
  47381. #include <features.h>
  47382. #include <asm/asi.h>
  47383. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcmp.S uClibc/libc/string/sparc/sparc64/strcmp.S
  47384. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  47385. +++ uClibc/libc/string/sparc/sparc64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  47386. @@ -16,9 +16,8 @@
  47387. Lesser General Public License for more details.
  47388. You should have received a copy of the GNU Lesser General Public
  47389. - License along with the GNU C Library; if not, write to the Free
  47390. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47391. - 02111-1307 USA. */
  47392. + License along with the GNU C Library; if not, see
  47393. + <http://www.gnu.org/licenses/>. */
  47394. #include <asm/asi.h>
  47395. #ifndef XCC
  47396. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcpy.S uClibc/libc/string/sparc/sparc64/strcpy.S
  47397. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  47398. +++ uClibc/libc/string/sparc/sparc64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  47399. @@ -16,9 +16,8 @@
  47400. Lesser General Public License for more details.
  47401. You should have received a copy of the GNU Lesser General Public
  47402. - License along with the GNU C Library; if not, write to the Free
  47403. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47404. - 02111-1307 USA. */
  47405. + License along with the GNU C Library; if not, see
  47406. + <http://www.gnu.org/licenses/>. */
  47407. #include <asm/asi.h>
  47408. #ifndef XCC
  47409. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strlen.S uClibc/libc/string/sparc/sparc64/strlen.S
  47410. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  47411. +++ uClibc/libc/string/sparc/sparc64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  47412. @@ -15,9 +15,8 @@
  47413. Lesser General Public License for more details.
  47414. You should have received a copy of the GNU Lesser General Public
  47415. - License along with the GNU C Library; if not, write to the Free
  47416. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47417. - 02111-1307 USA. */
  47418. + License along with the GNU C Library; if not, see
  47419. + <http://www.gnu.org/licenses/>. */
  47420. #include <asm/asi.h>
  47421. diff -Nur uClibc-0.9.33.2/libc/string/strchrnul.c uClibc/libc/string/strchrnul.c
  47422. --- uClibc-0.9.33.2/libc/string/strchrnul.c 2012-05-15 09:20:09.000000000 +0200
  47423. +++ uClibc/libc/string/strchrnul.c 2014-02-03 12:32:56.000000000 +0100
  47424. @@ -22,6 +22,6 @@
  47425. return (Wchar *) s;
  47426. }
  47427. # ifndef WANT_WIDE
  47428. -libc_hidden_def(Wstrchrnul)
  47429. +libc_hidden_def(strchrnul)
  47430. # endif
  47431. #endif
  47432. diff -Nur uClibc-0.9.33.2/libc/string/strverscmp.c uClibc/libc/string/strverscmp.c
  47433. --- uClibc-0.9.33.2/libc/string/strverscmp.c 2012-05-15 09:20:09.000000000 +0200
  47434. +++ uClibc/libc/string/strverscmp.c 2014-02-03 12:32:56.000000000 +0100
  47435. @@ -19,9 +19,8 @@
  47436. Lesser General Public License for more details.
  47437. You should have received a copy of the GNU Lesser General Public
  47438. - License along with the GNU C Library; if not, write to the Free
  47439. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47440. - 02111-1307 USA. */
  47441. + License along with the GNU C Library; if not, see
  47442. + <http://www.gnu.org/licenses/>. */
  47443. #include <string.h>
  47444. #include <ctype.h>
  47445. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/memcpy.S uClibc/libc/string/x86_64/memcpy.S
  47446. --- uClibc-0.9.33.2/libc/string/x86_64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47447. +++ uClibc/libc/string/x86_64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47448. @@ -14,9 +14,8 @@
  47449. Lesser General Public License for more details.
  47450. You should have received a copy of the GNU Lesser General Public
  47451. - License along with the GNU C Library; if not, write to the Free
  47452. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47453. - 02111-1307 USA. */
  47454. + License along with the GNU C Library; if not, see
  47455. + <http://www.gnu.org/licenses/>. */
  47456. #include "_glibc_inc.h"
  47457. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/memset.S uClibc/libc/string/x86_64/memset.S
  47458. --- uClibc-0.9.33.2/libc/string/x86_64/memset.S 2012-05-15 09:20:09.000000000 +0200
  47459. +++ uClibc/libc/string/x86_64/memset.S 2014-02-03 12:32:56.000000000 +0100
  47460. @@ -15,9 +15,8 @@
  47461. Lesser General Public License for more details.
  47462. You should have received a copy of the GNU Lesser General Public
  47463. - License along with the GNU C Library; if not, write to the Free
  47464. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47465. - 02111-1307 USA. */
  47466. + License along with the GNU C Library; if not, see
  47467. + <http://www.gnu.org/licenses/>. */
  47468. #include "_glibc_inc.h"
  47469. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcat.S uClibc/libc/string/x86_64/strcat.S
  47470. --- uClibc-0.9.33.2/libc/string/x86_64/strcat.S 2012-05-15 09:20:09.000000000 +0200
  47471. +++ uClibc/libc/string/x86_64/strcat.S 2014-02-03 12:32:56.000000000 +0100
  47472. @@ -15,9 +15,8 @@
  47473. Lesser General Public License for more details.
  47474. You should have received a copy of the GNU Lesser General Public
  47475. - License along with the GNU C Library; if not, write to the Free
  47476. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47477. - 02111-1307 USA. */
  47478. + License along with the GNU C Library; if not, see
  47479. + <http://www.gnu.org/licenses/>. */
  47480. #include "_glibc_inc.h"
  47481. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strchr.S uClibc/libc/string/x86_64/strchr.S
  47482. --- uClibc-0.9.33.2/libc/string/x86_64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  47483. +++ uClibc/libc/string/x86_64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  47484. @@ -14,9 +14,8 @@
  47485. Lesser General Public License for more details.
  47486. You should have received a copy of the GNU Lesser General Public
  47487. - License along with the GNU C Library; if not, write to the Free
  47488. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47489. - 02111-1307 USA. */
  47490. + License along with the GNU C Library; if not, see
  47491. + <http://www.gnu.org/licenses/>. */
  47492. #include "_glibc_inc.h"
  47493. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcmp.S uClibc/libc/string/x86_64/strcmp.S
  47494. --- uClibc-0.9.33.2/libc/string/x86_64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  47495. +++ uClibc/libc/string/x86_64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  47496. @@ -15,9 +15,8 @@
  47497. Lesser General Public License for more details.
  47498. You should have received a copy of the GNU Lesser General Public
  47499. - License along with the GNU C Library; if not, write to the Free
  47500. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47501. - 02111-1307 USA. */
  47502. + License along with the GNU C Library; if not, see
  47503. + <http://www.gnu.org/licenses/>. */
  47504. #include "_glibc_inc.h"
  47505. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcpy.S uClibc/libc/string/x86_64/strcpy.S
  47506. --- uClibc-0.9.33.2/libc/string/x86_64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  47507. +++ uClibc/libc/string/x86_64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  47508. @@ -14,9 +14,8 @@
  47509. Lesser General Public License for more details.
  47510. You should have received a copy of the GNU Lesser General Public
  47511. - License along with the GNU C Library; if not, write to the Free
  47512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47513. - 02111-1307 USA. */
  47514. + License along with the GNU C Library; if not, see
  47515. + <http://www.gnu.org/licenses/>. */
  47516. #include "_glibc_inc.h"
  47517. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcspn.S uClibc/libc/string/x86_64/strcspn.S
  47518. --- uClibc-0.9.33.2/libc/string/x86_64/strcspn.S 2012-05-15 09:20:09.000000000 +0200
  47519. +++ uClibc/libc/string/x86_64/strcspn.S 2014-02-03 12:32:56.000000000 +0100
  47520. @@ -19,9 +19,8 @@
  47521. Lesser General Public License for more details.
  47522. You should have received a copy of the GNU Lesser General Public
  47523. - License along with the GNU C Library; if not, write to the Free
  47524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47525. - 02111-1307 USA. */
  47526. + License along with the GNU C Library; if not, see
  47527. + <http://www.gnu.org/licenses/>. */
  47528. #include "_glibc_inc.h"
  47529. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strlen.S uClibc/libc/string/x86_64/strlen.S
  47530. --- uClibc-0.9.33.2/libc/string/x86_64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  47531. +++ uClibc/libc/string/x86_64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  47532. @@ -14,9 +14,8 @@
  47533. Lesser General Public License for more details.
  47534. You should have received a copy of the GNU Lesser General Public
  47535. - License along with the GNU C Library; if not, write to the Free
  47536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47537. - 02111-1307 USA. */
  47538. + License along with the GNU C Library; if not, see
  47539. + <http://www.gnu.org/licenses/>. */
  47540. #include "_glibc_inc.h"
  47541. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strspn.S uClibc/libc/string/x86_64/strspn.S
  47542. --- uClibc-0.9.33.2/libc/string/x86_64/strspn.S 2012-05-15 09:20:09.000000000 +0200
  47543. +++ uClibc/libc/string/x86_64/strspn.S 2014-02-03 12:32:56.000000000 +0100
  47544. @@ -19,9 +19,8 @@
  47545. Lesser General Public License for more details.
  47546. You should have received a copy of the GNU Lesser General Public
  47547. - License along with the GNU C Library; if not, write to the Free
  47548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47549. - 02111-1307 USA. */
  47550. + License along with the GNU C Library; if not, see
  47551. + <http://www.gnu.org/licenses/>. */
  47552. #include "_glibc_inc.h"
  47553. diff -Nur uClibc-0.9.33.2/libc/string/__xpg_basename.c uClibc/libc/string/__xpg_basename.c
  47554. --- uClibc-0.9.33.2/libc/string/__xpg_basename.c 2012-05-15 09:20:09.000000000 +0200
  47555. +++ uClibc/libc/string/__xpg_basename.c 2014-02-03 12:32:56.000000000 +0100
  47556. @@ -5,7 +5,6 @@
  47557. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  47558. */
  47559. -#include "_string.h"
  47560. #include <libgen.h>
  47561. char *__xpg_basename(register char *path)
  47562. @@ -34,3 +33,7 @@
  47563. return first;
  47564. }
  47565. +#ifndef __USE_GNU
  47566. +# undef basename
  47567. +weak_alias(__xpg_basename,basename)
  47568. +#endif
  47569. diff -Nur uClibc-0.9.33.2/libc/string/__xpg_strerror_r.c uClibc/libc/string/__xpg_strerror_r.c
  47570. --- uClibc-0.9.33.2/libc/string/__xpg_strerror_r.c 2012-05-15 09:20:09.000000000 +0200
  47571. +++ uClibc/libc/string/__xpg_strerror_r.c 2014-02-03 12:32:56.000000000 +0100
  47572. @@ -5,8 +5,8 @@
  47573. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  47574. */
  47575. -/* Make sure we get proper strerror_r() prototype */
  47576. -#define strerror_r _hidestrerror_r
  47577. +/* get rid of REDIRECT */
  47578. +#define strerror_r __hide_strerror_r
  47579. #include <features.h>
  47580. #include <errno.h>
  47581. @@ -15,7 +15,6 @@
  47582. #undef strerror_r
  47583. -
  47584. #ifdef __UCLIBC_HAS_ERRNO_MESSAGES__
  47585. extern const char _string_syserrmsgs[] attribute_hidden;
  47586. @@ -273,4 +272,6 @@
  47587. #endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
  47588. libc_hidden_def(__xpg_strerror_r)
  47589. -weak_alias(__xpg_strerror_r, strerror_r)
  47590. +#if defined __USE_XOPEN2K && !defined __USE_GNU
  47591. +strong_alias(__xpg_strerror_r,strerror_r)
  47592. +#endif
  47593. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/memcpy.S uClibc/libc/string/xtensa/memcpy.S
  47594. --- uClibc-0.9.33.2/libc/string/xtensa/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  47595. +++ uClibc/libc/string/xtensa/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  47596. @@ -13,11 +13,10 @@
  47597. Lesser General Public License for more details.
  47598. You should have received a copy of the GNU Lesser General Public
  47599. - License along with the GNU C Library; if not, write to the Free
  47600. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  47601. - Boston, MA 02110-1301, USA. */
  47602. + License along with the GNU C Library; if not, see
  47603. + <http://www.gnu.org/licenses/>. */
  47604. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47605. +#include <sysdep.h>
  47606. #include <bits/xtensa-config.h>
  47607. .macro src_b r, w0, w1
  47608. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/memset.S uClibc/libc/string/xtensa/memset.S
  47609. --- uClibc-0.9.33.2/libc/string/xtensa/memset.S 2012-05-15 09:20:09.000000000 +0200
  47610. +++ uClibc/libc/string/xtensa/memset.S 2014-02-03 12:32:56.000000000 +0100
  47611. @@ -13,11 +13,10 @@
  47612. Lesser General Public License for more details.
  47613. You should have received a copy of the GNU Lesser General Public
  47614. - License along with the GNU C Library; if not, write to the Free
  47615. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  47616. - Boston, MA 02110-1301, USA. */
  47617. + License along with the GNU C Library; if not, see
  47618. + <http://www.gnu.org/licenses/>. */
  47619. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47620. +#include <sysdep.h>
  47621. #include <bits/xtensa-config.h>
  47622. /* Do not use .literal_position in the ENTRY macro. */
  47623. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strcmp.S uClibc/libc/string/xtensa/strcmp.S
  47624. --- uClibc-0.9.33.2/libc/string/xtensa/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  47625. +++ uClibc/libc/string/xtensa/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  47626. @@ -13,11 +13,10 @@
  47627. Lesser General Public License for more details.
  47628. You should have received a copy of the GNU Lesser General Public
  47629. - License along with the GNU C Library; if not, write to the Free
  47630. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  47631. - Boston, MA 02110-1301, USA. */
  47632. + License along with the GNU C Library; if not, see
  47633. + <http://www.gnu.org/licenses/>. */
  47634. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47635. +#include <sysdep.h>
  47636. #include <bits/xtensa-config.h>
  47637. #include <features.h>
  47638. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strcpy.S uClibc/libc/string/xtensa/strcpy.S
  47639. --- uClibc-0.9.33.2/libc/string/xtensa/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  47640. +++ uClibc/libc/string/xtensa/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  47641. @@ -13,11 +13,10 @@
  47642. Lesser General Public License for more details.
  47643. You should have received a copy of the GNU Lesser General Public
  47644. - License along with the GNU C Library; if not, write to the Free
  47645. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  47646. - Boston, MA 02110-1301, USA. */
  47647. + License along with the GNU C Library; if not, see
  47648. + <http://www.gnu.org/licenses/>. */
  47649. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47650. +#include <sysdep.h>
  47651. #include <bits/xtensa-config.h>
  47652. #ifdef __XTENSA_EB__
  47653. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strlen.S uClibc/libc/string/xtensa/strlen.S
  47654. --- uClibc-0.9.33.2/libc/string/xtensa/strlen.S 2012-05-15 09:20:09.000000000 +0200
  47655. +++ uClibc/libc/string/xtensa/strlen.S 2014-02-03 12:32:56.000000000 +0100
  47656. @@ -13,11 +13,10 @@
  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., 51 Franklin Street - Fifth Floor,
  47661. - Boston, MA 02110-1301, USA. */
  47662. + License along with the GNU C Library; if not, see
  47663. + <http://www.gnu.org/licenses/>. */
  47664. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47665. +#include <sysdep.h>
  47666. #include <bits/xtensa-config.h>
  47667. #ifdef __XTENSA_EB__
  47668. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strncpy.S uClibc/libc/string/xtensa/strncpy.S
  47669. --- uClibc-0.9.33.2/libc/string/xtensa/strncpy.S 2012-05-15 09:20:09.000000000 +0200
  47670. +++ uClibc/libc/string/xtensa/strncpy.S 2014-02-03 12:32:56.000000000 +0100
  47671. @@ -13,11 +13,10 @@
  47672. Lesser General Public License for more details.
  47673. You should have received a copy of the GNU Lesser General Public
  47674. - License along with the GNU C Library; if not, write to the Free
  47675. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  47676. - Boston, MA 02110-1301, USA. */
  47677. + License along with the GNU C Library; if not, see
  47678. + <http://www.gnu.org/licenses/>. */
  47679. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  47680. +#include <sysdep.h>
  47681. #include <bits/xtensa-config.h>
  47682. #ifdef __XTENSA_EB__
  47683. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/atomic.h uClibc/libc/sysdeps/linux/alpha/bits/atomic.h
  47684. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  47685. +++ uClibc/libc/sysdeps/linux/alpha/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  47686. @@ -12,9 +12,8 @@
  47687. Lesser General Public License for more details.
  47688. You should have received a copy of the GNU Lesser General Public
  47689. - License along with the GNU C Library; if not, write to the Free
  47690. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47691. - 02111-1307 USA. */
  47692. + License along with the GNU C Library; if not, see
  47693. + <http://www.gnu.org/licenses/>. */
  47694. #include <stdint.h>
  47695. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/dirent.h uClibc/libc/sysdeps/linux/alpha/bits/dirent.h
  47696. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  47697. +++ uClibc/libc/sysdeps/linux/alpha/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  47698. @@ -12,9 +12,8 @@
  47699. Lesser General Public License for more details.
  47700. You should have received a copy of the GNU Lesser General Public
  47701. - License along with the GNU C Library; if not, write to the Free
  47702. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47703. - 02111-1307 USA. */
  47704. + License along with the GNU C Library; if not, see
  47705. + <http://www.gnu.org/licenses/>. */
  47706. #ifndef _BITS_DIRENT_H
  47707. #define _BITS_DIRENT_H 1
  47708. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/eventfd.h uClibc/libc/sysdeps/linux/alpha/bits/eventfd.h
  47709. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  47710. +++ uClibc/libc/sysdeps/linux/alpha/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  47711. @@ -0,0 +1,31 @@
  47712. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  47713. + This file is part of the GNU C Library.
  47714. +
  47715. + The GNU C Library is free software; you can redistribute it and/or
  47716. + modify it under the terms of the GNU Lesser General Public
  47717. + License as published by the Free Software Foundation; either
  47718. + version 2.1 of the License, or (at your option) any later version.
  47719. +
  47720. + The GNU C Library is distributed in the hope that it will be useful,
  47721. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  47722. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47723. + Lesser General Public License for more details.
  47724. +
  47725. + You should have received a copy of the GNU Lesser General Public
  47726. + License along with the GNU C Library; if not, see
  47727. + <http://www.gnu.org/licenses/>. */
  47728. +
  47729. +#ifndef _SYS_EVENTFD_H
  47730. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  47731. +#endif
  47732. +
  47733. +/* Flags for eventfd. */
  47734. +enum
  47735. + {
  47736. + EFD_SEMAPHORE = 000000001,
  47737. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  47738. + EFD_CLOEXEC = 010000000,
  47739. +#define EFD_CLOEXEC EFD_CLOEXEC
  47740. + EFD_NONBLOCK = 000000004
  47741. +#define EFD_NONBLOCK EFD_NONBLOCK
  47742. + };
  47743. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fcntl.h uClibc/libc/sysdeps/linux/alpha/bits/fcntl.h
  47744. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  47745. +++ uClibc/libc/sysdeps/linux/alpha/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  47746. @@ -13,9 +13,8 @@
  47747. Lesser General Public License for more details.
  47748. You should have received a copy of the GNU Lesser General Public
  47749. - License along with the GNU C Library; if not, write to the Free
  47750. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47751. - 02111-1307 USA. */
  47752. + License along with the GNU C Library; if not, see
  47753. + <http://www.gnu.org/licenses/>. */
  47754. #ifndef _FCNTL_H
  47755. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  47756. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fenv.h uClibc/libc/sysdeps/linux/alpha/bits/fenv.h
  47757. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  47758. +++ uClibc/libc/sysdeps/linux/alpha/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  47759. @@ -12,9 +12,8 @@
  47760. Lesser General Public License for more details.
  47761. You should have received a copy of the GNU Lesser General Public
  47762. - License along with the GNU C Library; if not, write to the Free
  47763. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47764. - 02111-1307 USA. */
  47765. + License along with the GNU C Library; if not, see
  47766. + <http://www.gnu.org/licenses/>. */
  47767. #ifndef _FENV_H
  47768. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  47769. @@ -107,15 +106,15 @@
  47770. /* If the default argument is used we use this value. Note that due to
  47771. architecture-specified page mappings, no user-space pointer will ever
  47772. have its two high bits set. Co-opt one. */
  47773. -#define FE_DFL_ENV ((__const fenv_t *) 0x8800000000000000UL)
  47774. +#define FE_DFL_ENV ((const fenv_t *) 0x8800000000000000UL)
  47775. #ifdef __USE_GNU
  47776. /* Floating-point environment where none of the exceptions are masked. */
  47777. -# define FE_NOMASK_ENV ((__const fenv_t *) 0x880000000000003eUL)
  47778. +# define FE_NOMASK_ENV ((const fenv_t *) 0x880000000000003eUL)
  47779. /* Floating-point environment with (processor-dependent) non-IEEE floating
  47780. point. In this case, mapping denormals to zero. */
  47781. -# define FE_NONIEEE_ENV ((__const fenv_t *) 0x8800000000003000UL)
  47782. +# define FE_NONIEEE_ENV ((const fenv_t *) 0x8800000000003000UL)
  47783. #endif
  47784. /* The system calls to talk to the kernel's FP code. */
  47785. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ioctls.h uClibc/libc/sysdeps/linux/alpha/bits/ioctls.h
  47786. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  47787. +++ uClibc/libc/sysdeps/linux/alpha/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  47788. @@ -12,9 +12,8 @@
  47789. Lesser General Public License for more details.
  47790. You should have received a copy of the GNU Lesser General Public
  47791. - License along with the GNU C Library; if not, write to the Free
  47792. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47793. - 02111-1307 USA. */
  47794. + License along with the GNU C Library; if not, see
  47795. + <http://www.gnu.org/licenses/>. */
  47796. #ifndef _SYS_IOCTL_H
  47797. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  47798. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ipc.h uClibc/libc/sysdeps/linux/alpha/bits/ipc.h
  47799. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  47800. +++ uClibc/libc/sysdeps/linux/alpha/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  47801. @@ -12,9 +12,8 @@
  47802. Lesser General Public License for more details.
  47803. You should have received a copy of the GNU Lesser General Public
  47804. - License along with the GNU C Library; if not, write to the Free
  47805. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47806. - 02111-1307 USA. */
  47807. + License along with the GNU C Library; if not, see
  47808. + <http://www.gnu.org/licenses/>. */
  47809. #ifndef _SYS_IPC_H
  47810. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  47811. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h uClibc/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h
  47812. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  47813. +++ uClibc/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  47814. @@ -9,12 +9,4 @@
  47815. unsigned int sa_flags;
  47816. };
  47817. -/* In uclibc, userspace struct sigaction is identical to
  47818. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  47819. - * See sigaction.h
  47820. - */
  47821. -
  47822. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  47823. - struct sigaction *, size_t) attribute_hidden;
  47824. -
  47825. #endif
  47826. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_types.h uClibc/libc/sysdeps/linux/alpha/bits/kernel_types.h
  47827. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  47828. +++ uClibc/libc/sysdeps/linux/alpha/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  47829. @@ -33,6 +33,8 @@
  47830. typedef __kernel_uid_t __kernel_uid32_t;
  47831. typedef __kernel_gid_t __kernel_gid32_t;
  47832. typedef __kernel_dev_t __kernel_old_dev_t;
  47833. +typedef long __kernel_long_t;
  47834. +typedef unsigned long __kernel_ulong_t;
  47835. typedef struct {
  47836. int val[2];
  47837. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/local_lim.h uClibc/libc/sysdeps/linux/alpha/bits/local_lim.h
  47838. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  47839. +++ uClibc/libc/sysdeps/linux/alpha/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  47840. @@ -0,0 +1,91 @@
  47841. +/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
  47842. + Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
  47843. + This file is part of the GNU C Library.
  47844. +
  47845. + The GNU C Library is free software; you can redistribute it and/or
  47846. + modify it under the terms of the GNU Library General Public License as
  47847. + published by the Free Software Foundation; either version 2 of the
  47848. + License, or (at your option) any later version.
  47849. +
  47850. + The GNU C Library is distributed in the hope that it will be useful,
  47851. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  47852. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47853. + Library General Public License for more details.
  47854. +
  47855. + You should have received a copy of the GNU Library General Public
  47856. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  47857. + see <http://www.gnu.org/licenses/>. */
  47858. +
  47859. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  47860. + and defines LINK_MAX although filesystems have different maxima. A
  47861. + similar thing is true for OPEN_MAX: the limit can be changed at
  47862. + runtime and therefore the macro must not be defined. Remove this
  47863. + after including the header if necessary. */
  47864. +#ifndef NR_OPEN
  47865. +# define __undef_NR_OPEN
  47866. +#endif
  47867. +#ifndef LINK_MAX
  47868. +# define __undef_LINK_MAX
  47869. +#endif
  47870. +#ifndef OPEN_MAX
  47871. +# define __undef_OPEN_MAX
  47872. +#endif
  47873. +
  47874. +/* The kernel sources contain a file with all the needed information. */
  47875. +#include <linux/limits.h>
  47876. +
  47877. +/* Have to remove NR_OPEN? */
  47878. +#ifdef __undef_NR_OPEN
  47879. +# undef NR_OPEN
  47880. +# undef __undef_NR_OPEN
  47881. +#endif
  47882. +/* Have to remove LINK_MAX? */
  47883. +#ifdef __undef_LINK_MAX
  47884. +# undef LINK_MAX
  47885. +# undef __undef_LINK_MAX
  47886. +#endif
  47887. +/* Have to remove OPEN_MAX? */
  47888. +#ifdef __undef_OPEN_MAX
  47889. +# undef OPEN_MAX
  47890. +# undef __undef_OPEN_MAX
  47891. +#endif
  47892. +
  47893. +/* The number of data keys per process. */
  47894. +#define _POSIX_THREAD_KEYS_MAX 128
  47895. +/* This is the value this implementation supports. */
  47896. +#define PTHREAD_KEYS_MAX 1024
  47897. +
  47898. +/* Controlling the iterations of destructors for thread-specific data. */
  47899. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  47900. +/* Number of iterations this implementation does. */
  47901. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  47902. +
  47903. +/* The number of threads per process. */
  47904. +#define _POSIX_THREAD_THREADS_MAX 64
  47905. +/* We have no predefined limit on the number of threads. */
  47906. +#undef PTHREAD_THREADS_MAX
  47907. +
  47908. +/* Maximum amount by which a process can descrease its asynchronous I/O
  47909. + priority level. */
  47910. +#define AIO_PRIO_DELTA_MAX 20
  47911. +
  47912. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  47913. +#define PTHREAD_STACK_MIN 24576
  47914. +
  47915. +/* Maximum number of timer expiration overruns. */
  47916. +#define DELAYTIMER_MAX 2147483647
  47917. +
  47918. +/* Maximum tty name length. */
  47919. +#define TTY_NAME_MAX 32
  47920. +
  47921. +/* Maximum login name length. This is arbitrary. */
  47922. +#define LOGIN_NAME_MAX 256
  47923. +
  47924. +/* Maximum host name length. */
  47925. +#define HOST_NAME_MAX 64
  47926. +
  47927. +/* Maximum message queue priority level. */
  47928. +#define MQ_PRIO_MAX 32768
  47929. +
  47930. +/* Maximum value the semaphore can have. */
  47931. +#define SEM_VALUE_MAX (2147483647)
  47932. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathdef.h uClibc/libc/sysdeps/linux/alpha/bits/mathdef.h
  47933. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  47934. +++ uClibc/libc/sysdeps/linux/alpha/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  47935. @@ -13,9 +13,8 @@
  47936. Lesser General Public License for more details.
  47937. You should have received a copy of the GNU Lesser General Public
  47938. - License along with the GNU C Library; if not, write to the Free
  47939. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47940. - 02111-1307 USA. */
  47941. + License along with the GNU C Library; if not, see
  47942. + <http://www.gnu.org/licenses/>. */
  47943. #if !defined _MATH_H && !defined _COMPLEX_H
  47944. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  47945. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathinline.h uClibc/libc/sysdeps/linux/alpha/bits/mathinline.h
  47946. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  47947. +++ uClibc/libc/sysdeps/linux/alpha/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  47948. @@ -14,9 +14,8 @@
  47949. Lesser General Public License for more details.
  47950. You should have received a copy of the GNU Lesser General Public
  47951. - License along with the GNU C Library; if not, write to the Free
  47952. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47953. - 02111-1307 USA. */
  47954. + License along with the GNU C Library; if not, see
  47955. + <http://www.gnu.org/licenses/>. */
  47956. #ifndef _MATH_H
  47957. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  47958. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mman.h uClibc/libc/sysdeps/linux/alpha/bits/mman.h
  47959. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  47960. +++ uClibc/libc/sysdeps/linux/alpha/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  47961. @@ -13,9 +13,8 @@
  47962. Lesser General Public License for more details.
  47963. You should have received a copy of the GNU Lesser General Public
  47964. - License along with the GNU C Library; if not, write to the Free
  47965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47966. - 02111-1307 USA. */
  47967. + License along with the GNU C Library; if not, see
  47968. + <http://www.gnu.org/licenses/>. */
  47969. #ifndef _SYS_MMAN_H
  47970. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  47971. @@ -71,7 +70,7 @@
  47972. # define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
  47973. # define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
  47974. # define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
  47975. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  47976. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  47977. be uninitialized. */
  47978. #endif
  47979. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/msq.h uClibc/libc/sysdeps/linux/alpha/bits/msq.h
  47980. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  47981. +++ uClibc/libc/sysdeps/linux/alpha/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  47982. @@ -12,9 +12,8 @@
  47983. Lesser General Public License for more details.
  47984. You should have received a copy of the GNU Lesser General Public
  47985. - License along with the GNU C Library; if not, write to the Free
  47986. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47987. - 02111-1307 USA. */
  47988. + License along with the GNU C Library; if not, see
  47989. + <http://www.gnu.org/licenses/>. */
  47990. #ifndef _SYS_MSG_H
  47991. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  47992. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/netdb.h uClibc/libc/sysdeps/linux/alpha/bits/netdb.h
  47993. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/netdb.h 2012-05-15 09:20:09.000000000 +0200
  47994. +++ uClibc/libc/sysdeps/linux/alpha/bits/netdb.h 2014-02-03 12:32:56.000000000 +0100
  47995. @@ -12,9 +12,8 @@
  47996. Lesser General Public License for more details.
  47997. You should have received a copy of the GNU Lesser General Public
  47998. - License along with the GNU C Library; if not, write to the Free
  47999. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48000. - 02111-1307 USA. */
  48001. + License along with the GNU C Library; if not, see
  48002. + <http://www.gnu.org/licenses/>. */
  48003. #ifndef _NETDB_H
  48004. # error "Never include <bits/netdb.h> directly; use <netdb.h> instead."
  48005. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/resource.h uClibc/libc/sysdeps/linux/alpha/bits/resource.h
  48006. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  48007. +++ uClibc/libc/sysdeps/linux/alpha/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  48008. @@ -14,9 +14,8 @@
  48009. Lesser General Public License for more details.
  48010. You should have received a copy of the GNU Lesser General Public
  48011. - License along with the GNU C Library; if not, write to the Free
  48012. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48013. - 02111-1307 USA. */
  48014. + License along with the GNU C Library; if not, see
  48015. + <http://www.gnu.org/licenses/>. */
  48016. #ifndef _SYS_RESOURCE_H
  48017. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  48018. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sem.h uClibc/libc/sysdeps/linux/alpha/bits/sem.h
  48019. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  48020. +++ uClibc/libc/sysdeps/linux/alpha/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  48021. @@ -12,9 +12,8 @@
  48022. Lesser General Public License for more details.
  48023. You should have received a copy of the GNU Lesser General Public
  48024. - License along with the GNU C Library; if not, write to the Free
  48025. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48026. - 02111-1307 USA. */
  48027. + License along with the GNU C Library; if not, see
  48028. + <http://www.gnu.org/licenses/>. */
  48029. #ifndef _SYS_SEM_H
  48030. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  48031. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/setjmp.h uClibc/libc/sysdeps/linux/alpha/bits/setjmp.h
  48032. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  48033. +++ uClibc/libc/sysdeps/linux/alpha/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  48034. @@ -13,9 +13,8 @@
  48035. Lesser General Public License for more details.
  48036. You should have received a copy of the GNU Lesser General Public
  48037. - License along with the GNU C Library; if not, write to the Free
  48038. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48039. - 02111-1307 USA. */
  48040. + License along with the GNU C Library; if not, see
  48041. + <http://www.gnu.org/licenses/>. */
  48042. #ifndef _BITS_SETJMP_H
  48043. #define _BITS_SETJMP_H 1
  48044. @@ -55,33 +54,6 @@
  48045. * registers.
  48046. */
  48047. -#if defined __USE_MISC || defined __ASSEMBLY__
  48048. -# define JB_S0 0
  48049. -# define JB_S1 1
  48050. -# define JB_S2 2
  48051. -# define JB_S3 3
  48052. -# define JB_S4 4
  48053. -# define JB_S5 5
  48054. -# define JB_PC 6
  48055. -# define JB_FP 7
  48056. -# define JB_SP 8
  48057. -# define JB_F2 9
  48058. -# define JB_F3 10
  48059. -# define JB_F4 11
  48060. -# define JB_F5 12
  48061. -# define JB_F6 13
  48062. -# define JB_F7 14
  48063. -# define JB_F8 15
  48064. -# define JB_F9 16
  48065. -#endif
  48066. -
  48067. -#ifndef __ASSEMBLY__
  48068. typedef long int __jmp_buf[17];
  48069. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  48070. - variable at ADDRESS. */
  48071. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  48072. - ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
  48073. -#endif
  48074. -
  48075. #endif /* bits/setjmp.h */
  48076. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/shm.h uClibc/libc/sysdeps/linux/alpha/bits/shm.h
  48077. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  48078. +++ uClibc/libc/sysdeps/linux/alpha/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  48079. @@ -13,9 +13,8 @@
  48080. Lesser General Public License for more details.
  48081. You should have received a copy of the GNU Lesser General Public
  48082. - License along with the GNU C Library; if not, write to the Free
  48083. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48084. - 02111-1307 USA. */
  48085. + License along with the GNU C Library; if not, see
  48086. + <http://www.gnu.org/licenses/>. */
  48087. #ifndef _SYS_SHM_H
  48088. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  48089. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigaction.h uClibc/libc/sysdeps/linux/alpha/bits/sigaction.h
  48090. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  48091. +++ uClibc/libc/sysdeps/linux/alpha/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  48092. @@ -13,9 +13,8 @@
  48093. Lesser General Public License for more details.
  48094. You should have received a copy of the GNU Lesser General Public
  48095. - License along with the GNU C Library; if not, write to the Free
  48096. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48097. - 02111-1307 USA. */
  48098. + License along with the GNU C Library; if not, see
  48099. + <http://www.gnu.org/licenses/>. */
  48100. #ifndef _SIGNAL_H
  48101. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  48102. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h
  48103. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  48104. +++ uClibc/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  48105. @@ -12,9 +12,8 @@
  48106. Lesser General Public License for more details.
  48107. You should have received a copy of the GNU Lesser General Public
  48108. - License along with the GNU C Library; if not, write to the Free
  48109. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48110. - 02111-1307 USA. */
  48111. + License along with the GNU C Library; if not, see
  48112. + <http://www.gnu.org/licenses/>. */
  48113. #define SIGCONTEXT int _code, struct sigcontext *
  48114. #define SIGCONTEXT_EXTRA_ARGS _code,
  48115. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/siginfo.h uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h
  48116. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  48117. +++ uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  48118. @@ -13,9 +13,8 @@
  48119. Lesser General Public License for more details.
  48120. You should have received a copy of the GNU Lesser General Public
  48121. - License along with the GNU C Library; if not, write to the Free
  48122. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48123. - 02111-1307 USA. */
  48124. + License along with the GNU C Library; if not, see
  48125. + <http://www.gnu.org/licenses/>. */
  48126. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  48127. && !defined __need_sigevent_t
  48128. @@ -258,7 +257,11 @@
  48129. /* Structure to transport application-defined values with signals. */
  48130. # define __SIGEV_MAX_SIZE 64
  48131. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  48132. +# if __WORDSIZE == 64
  48133. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  48134. +# else
  48135. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  48136. +# endif
  48137. typedef struct sigevent
  48138. {
  48139. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/signum.h uClibc/libc/sysdeps/linux/alpha/bits/signum.h
  48140. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  48141. +++ uClibc/libc/sysdeps/linux/alpha/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  48142. @@ -13,9 +13,8 @@
  48143. Lesser General Public License for more details.
  48144. You should have received a copy of the GNU Lesser General Public
  48145. - License along with the GNU C Library; if not, write to the Free
  48146. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48147. - 02111-1307 USA. */
  48148. + License along with the GNU C Library; if not, see
  48149. + <http://www.gnu.org/licenses/>. */
  48150. #ifdef _SIGNAL_H
  48151. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigstack.h uClibc/libc/sysdeps/linux/alpha/bits/sigstack.h
  48152. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  48153. +++ uClibc/libc/sysdeps/linux/alpha/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  48154. @@ -13,9 +13,8 @@
  48155. Lesser General Public License for more details.
  48156. You should have received a copy of the GNU Lesser General Public
  48157. - License along with the GNU C Library; if not, write to the Free
  48158. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48159. - 02111-1307 USA. */
  48160. + License along with the GNU C Library; if not, see
  48161. + <http://www.gnu.org/licenses/>. */
  48162. #ifndef _SIGNAL_H
  48163. # error "Never include this file directly. Use <signal.h> instead"
  48164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/socket_type.h uClibc/libc/sysdeps/linux/alpha/bits/socket_type.h
  48165. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  48166. +++ uClibc/libc/sysdeps/linux/alpha/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  48167. @@ -0,0 +1,54 @@
  48168. +/* Define enum __socket_type for Linux/Alpha.
  48169. + Copyright (C) 1991-2012 Free Software Foundation, Inc.
  48170. + This file is part of the GNU C Library.
  48171. +
  48172. + The GNU C Library is free software; you can redistribute it and/or
  48173. + modify it under the terms of the GNU Lesser General Public
  48174. + License as published by the Free Software Foundation; either
  48175. + version 2.1 of the License, or (at your option) any later version.
  48176. +
  48177. + The GNU C Library is distributed in the hope that it will be useful,
  48178. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  48179. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  48180. + Lesser General Public License for more details.
  48181. +
  48182. + You should have received a copy of the GNU Lesser General Public
  48183. + License along with the GNU C Library. If not, see
  48184. + <http://www.gnu.org/licenses/>. */
  48185. +
  48186. +#ifndef _SYS_SOCKET_H
  48187. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  48188. +#endif
  48189. +
  48190. +/* Types of sockets. */
  48191. +enum __socket_type
  48192. +{
  48193. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  48194. + byte streams. */
  48195. +#define SOCK_STREAM SOCK_STREAM
  48196. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  48197. + of fixed maximum length. */
  48198. +#define SOCK_DGRAM SOCK_DGRAM
  48199. + SOCK_RAW = 3, /* Raw protocol interface. */
  48200. +#define SOCK_RAW SOCK_RAW
  48201. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  48202. +#define SOCK_RDM SOCK_RDM
  48203. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  48204. + datagrams of fixed maximum length. */
  48205. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  48206. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  48207. +#define SOCK_DCCP SOCK_DCCP
  48208. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  48209. + at the dev level. For writing rarp and
  48210. + other similar things on the user level. */
  48211. +#define SOCK_PACKET SOCK_PACKET
  48212. +
  48213. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  48214. +
  48215. + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the
  48216. + new descriptor(s). */
  48217. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  48218. + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as
  48219. + non-blocking. */
  48220. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  48221. +};
  48222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stackinfo.h uClibc/libc/sysdeps/linux/alpha/bits/stackinfo.h
  48223. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  48224. +++ uClibc/libc/sysdeps/linux/alpha/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  48225. @@ -12,9 +12,8 @@
  48226. Lesser General Public License for more details.
  48227. You should have received a copy of the GNU Lesser General Public
  48228. - License along with the GNU C Library; if not, write to the Free
  48229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48230. - 02111-1307 USA. */
  48231. + License along with the GNU C Library; if not, see
  48232. + <http://www.gnu.org/licenses/>. */
  48233. /* This file contains a bit of information about the stack allocation
  48234. of the processor. */
  48235. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/statfs.h uClibc/libc/sysdeps/linux/alpha/bits/statfs.h
  48236. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  48237. +++ uClibc/libc/sysdeps/linux/alpha/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  48238. @@ -12,9 +12,8 @@
  48239. Lesser General Public License for more details.
  48240. You should have received a copy of the GNU Lesser General Public
  48241. - License along with the GNU C Library; if not, write to the Free
  48242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48243. - 02111-1307 USA. */
  48244. + License along with the GNU C Library; if not, see
  48245. + <http://www.gnu.org/licenses/>. */
  48246. #ifndef _SYS_STATFS_H
  48247. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  48248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stat.h uClibc/libc/sysdeps/linux/alpha/bits/stat.h
  48249. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  48250. +++ uClibc/libc/sysdeps/linux/alpha/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  48251. @@ -13,9 +13,8 @@
  48252. Lesser General Public License for more details.
  48253. You should have received a copy of the GNU Lesser General Public
  48254. - License along with the GNU C Library; if not, write to the Free
  48255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48256. - 02111-1307 USA. */
  48257. + License along with the GNU C Library; if not, see
  48258. + <http://www.gnu.org/licenses/>. */
  48259. #ifndef _SYS_STAT_H
  48260. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  48261. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/syscalls.h uClibc/libc/sysdeps/linux/alpha/bits/syscalls.h
  48262. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  48263. +++ uClibc/libc/sysdeps/linux/alpha/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  48264. @@ -14,9 +14,8 @@
  48265. Lesser General Public License for more details.
  48266. You should have received a copy of the GNU Lesser General Public
  48267. - License along with the GNU C Library; if not, write to the Free
  48268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48269. - 02111-1307 USA. */
  48270. + License along with the GNU C Library; if not, see
  48271. + <http://www.gnu.org/licenses/>. */
  48272. #ifndef _BITS_SYSCALLS_H
  48273. #define _BITS_SYSCALLS_H
  48274. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/termios.h uClibc/libc/sysdeps/linux/alpha/bits/termios.h
  48275. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  48276. +++ uClibc/libc/sysdeps/linux/alpha/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  48277. @@ -14,9 +14,8 @@
  48278. Lesser General Public License for more details.
  48279. You should have received a copy of the GNU Lesser General Public
  48280. - License along with the GNU C Library; if not, write to the Free
  48281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48282. - 02111-1307 USA. */
  48283. + License along with the GNU C Library; if not, see
  48284. + <http://www.gnu.org/licenses/>. */
  48285. #ifndef _TERMIOS_H
  48286. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  48287. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/typesizes.h uClibc/libc/sysdeps/linux/alpha/bits/typesizes.h
  48288. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  48289. +++ uClibc/libc/sysdeps/linux/alpha/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  48290. @@ -13,9 +13,8 @@
  48291. Lesser General Public License for more details.
  48292. You should have received a copy of the GNU Lesser General Public
  48293. - License along with the GNU C Library; if not, write to the Free
  48294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48295. - 02111-1307 USA. */
  48296. + License along with the GNU C Library; if not, see
  48297. + <http://www.gnu.org/licenses/>. */
  48298. #ifndef _BITS_TYPES_H
  48299. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  48300. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
  48301. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  48302. +++ uClibc/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  48303. @@ -11,8 +11,8 @@
  48304. /* can your target use syscall6() for mmap ? */
  48305. #define __UCLIBC_MMAP_HAS_6_ARGS__
  48306. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  48307. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  48308. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  48309. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  48310. /* does your target have a broken create_module() ? */
  48311. #define __UCLIBC_SLIGHTLY_BROKEN_CREATE_MODULE__
  48312. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_page.h uClibc/libc/sysdeps/linux/alpha/bits/uClibc_page.h
  48313. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  48314. +++ uClibc/libc/sysdeps/linux/alpha/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  48315. @@ -11,8 +11,8 @@
  48316. * Library General Public License for more details.
  48317. *
  48318. * You should have received a copy of the GNU Library General Public
  48319. - * License along with this library; if not, write to the Free
  48320. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  48321. + * License along with this library; if not, see
  48322. + * <http://www.gnu.org/licenses/>.
  48323. */
  48324. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  48325. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/wordsize.h uClibc/libc/sysdeps/linux/alpha/bits/wordsize.h
  48326. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  48327. +++ uClibc/libc/sysdeps/linux/alpha/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  48328. @@ -12,9 +12,8 @@
  48329. Lesser General Public License for more details.
  48330. You should have received a copy of the GNU Lesser General Public
  48331. - License along with the GNU C Library; if not, write to the Free
  48332. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48333. - 02111-1307 USA. */
  48334. + License along with the GNU C Library; if not, see
  48335. + <http://www.gnu.org/licenses/>. */
  48336. #define __WORDSIZE 64
  48337. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/brk.S uClibc/libc/sysdeps/linux/alpha/brk.S
  48338. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/brk.S 2012-05-15 09:20:09.000000000 +0200
  48339. +++ uClibc/libc/sysdeps/linux/alpha/brk.S 2014-02-03 12:32:56.000000000 +0100
  48340. @@ -13,9 +13,8 @@
  48341. Lesser General Public License for more details.
  48342. You should have received a copy of the GNU Lesser General Public
  48343. - License along with the GNU C Library; if not, write to the Free
  48344. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48345. - 02111-1307 USA. */
  48346. + License along with the GNU C Library; if not, see
  48347. + <http://www.gnu.org/licenses/>. */
  48348. /* __brk is a special syscall under Linux since it never returns an
  48349. error. Instead, the error condition is indicated by returning the old
  48350. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/clone.S uClibc/libc/sysdeps/linux/alpha/clone.S
  48351. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/clone.S 2012-05-15 09:20:09.000000000 +0200
  48352. +++ uClibc/libc/sysdeps/linux/alpha/clone.S 2014-02-03 12:32:56.000000000 +0100
  48353. @@ -13,9 +13,8 @@
  48354. Lesser General Public License for more details.
  48355. You should have received a copy of the GNU Lesser General Public
  48356. - License along with the GNU C Library; if not, write to the Free
  48357. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48358. - 02111-1307 USA. */
  48359. + License along with the GNU C Library; if not, see
  48360. + <http://www.gnu.org/licenses/>. */
  48361. /* clone() is even more special than fork() as it mucks with stacks
  48362. and invokes a function in the right context after its all over. */
  48363. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/crt1.S uClibc/libc/sysdeps/linux/alpha/crt1.S
  48364. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/crt1.S 2012-05-15 09:20:09.000000000 +0200
  48365. +++ uClibc/libc/sysdeps/linux/alpha/crt1.S 2014-02-03 12:32:56.000000000 +0100
  48366. @@ -32,9 +32,8 @@
  48367. Lesser General Public License for more details.
  48368. You should have received a copy of the GNU Lesser General Public
  48369. - License along with the GNU C Library; if not, write to the Free
  48370. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48371. - 02111-1307 USA. */
  48372. + License along with the GNU C Library; if not, see
  48373. + <http://www.gnu.org/licenses/>. */
  48374. #include <features.h>
  48375. #include <sys/regdef.h>
  48376. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/divrem.h uClibc/libc/sysdeps/linux/alpha/divrem.h
  48377. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/divrem.h 2012-05-15 09:20:09.000000000 +0200
  48378. +++ uClibc/libc/sysdeps/linux/alpha/divrem.h 2014-02-03 12:32:56.000000000 +0100
  48379. @@ -13,9 +13,8 @@
  48380. Lesser General Public License for more details.
  48381. You should have received a copy of the GNU Lesser General Public
  48382. - License along with the GNU C Library; if not, write to the Free
  48383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48384. - 02111-1307 USA. */
  48385. + License along with the GNU C Library; if not, see
  48386. + <http://www.gnu.org/licenses/>. */
  48387. /* The current Alpha chips don't provide hardware for integer
  48388. division. The C compiler expects the functions
  48389. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/fpu_control.h uClibc/libc/sysdeps/linux/alpha/fpu_control.h
  48390. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  48391. +++ uClibc/libc/sysdeps/linux/alpha/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  48392. @@ -14,9 +14,8 @@
  48393. Lesser General Public License for more details.
  48394. You should have received a copy of the GNU Lesser General Public
  48395. - License along with the GNU C Library; if not, write to the Free
  48396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48397. - 02111-1307 USA. */
  48398. + License along with the GNU C Library; if not, see
  48399. + <http://www.gnu.org/licenses/>. */
  48400. #ifndef _ALPHA_FPU_CONTROL_H
  48401. #define _ALPHA_FPU_CONTROL_H
  48402. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/alpha/jmpbuf-offsets.h
  48403. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  48404. +++ uClibc/libc/sysdeps/linux/alpha/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  48405. @@ -0,0 +1,35 @@
  48406. +/* Private macros for accessing __jmp_buf contents. Alpha version.
  48407. + Copyright (C) 2006 Free Software Foundation, Inc.
  48408. + This file is part of the GNU C Library.
  48409. +
  48410. + The GNU C Library is free software; you can redistribute it and/or
  48411. + modify it under the terms of the GNU Lesser General Public
  48412. + License as published by the Free Software Foundation; either
  48413. + version 2.1 of the License, or (at your option) any later version.
  48414. +
  48415. + The GNU C Library is distributed in the hope that it will be useful,
  48416. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  48417. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  48418. + Lesser General Public License for more details.
  48419. +
  48420. + You should have received a copy of the GNU Lesser General Public
  48421. + License along with the GNU C Library; if not, see
  48422. + <http://www.gnu.org/licenses/>. */
  48423. +
  48424. +#define JB_S0 0
  48425. +#define JB_S1 1
  48426. +#define JB_S2 2
  48427. +#define JB_S3 3
  48428. +#define JB_S4 4
  48429. +#define JB_S5 5
  48430. +#define JB_PC 6
  48431. +#define JB_FP 7
  48432. +#define JB_SP 8
  48433. +#define JB_F2 9
  48434. +#define JB_F3 10
  48435. +#define JB_F4 11
  48436. +#define JB_F5 12
  48437. +#define JB_F6 13
  48438. +#define JB_F7 14
  48439. +#define JB_F8 15
  48440. +#define JB_F9 16
  48441. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/alpha/jmpbuf-unwind.h
  48442. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  48443. +++ uClibc/libc/sysdeps/linux/alpha/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  48444. @@ -0,0 +1,23 @@
  48445. +/*
  48446. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  48447. + *
  48448. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  48449. + */
  48450. +#include <setjmp.h>
  48451. +#include <jmpbuf-offsets.h>
  48452. +
  48453. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  48454. + variable at ADDRESS. */
  48455. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  48456. + ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
  48457. +
  48458. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  48459. +#include <stdint.h>
  48460. +#include <unwind.h>
  48461. +
  48462. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  48463. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  48464. +
  48465. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  48466. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  48467. +#endif
  48468. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__longjmp.S uClibc/libc/sysdeps/linux/alpha/__longjmp.S
  48469. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  48470. +++ uClibc/libc/sysdeps/linux/alpha/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  48471. @@ -12,14 +12,10 @@
  48472. Lesser General Public License for more details.
  48473. You should have received a copy of the GNU Lesser General Public
  48474. - License along with the GNU C Library; if not, write to the Free
  48475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48476. - 02111-1307 USA. */
  48477. + License along with the GNU C Library; if not, see
  48478. + <http://www.gnu.org/licenses/>. */
  48479. -#include <features.h>
  48480. -#define _SETJMP_H
  48481. -#define __ASSEMBLY__
  48482. -#include <bits/setjmp.h>
  48483. +#include <setjmp-offsets.h>
  48484. #define a0 $16
  48485. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/Makefile.arch uClibc/libc/sysdeps/linux/alpha/Makefile.arch
  48486. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  48487. +++ uClibc/libc/sysdeps/linux/alpha/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  48488. @@ -5,9 +5,9 @@
  48489. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  48490. #
  48491. -CSRC := __syscall_error.c sigprocmask.c
  48492. +CSRC-y := __syscall_error.c sigprocmask.c
  48493. -SSRC := \
  48494. +SSRC-y := \
  48495. __longjmp.S brk.S bsd-_setjmp.S bsd-setjmp.S clone.S \
  48496. divl.S divq.S pipe.S reml.S remq.S __syscall_rt_sigaction.S setjmp.S \
  48497. syscall.S
  48498. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/pipe.S uClibc/libc/sysdeps/linux/alpha/pipe.S
  48499. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/pipe.S 2012-05-15 09:20:09.000000000 +0200
  48500. +++ uClibc/libc/sysdeps/linux/alpha/pipe.S 2014-02-03 12:32:56.000000000 +0100
  48501. @@ -13,9 +13,8 @@
  48502. Lesser General Public License for more details.
  48503. You should have received a copy of the GNU Lesser General Public
  48504. - License along with the GNU C Library; if not, write to the Free
  48505. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48506. - 02111-1307 USA. */
  48507. + License along with the GNU C Library; if not, see
  48508. + <http://www.gnu.org/licenses/>. */
  48509. #include <features.h>
  48510. #include <sys/syscall.h>
  48511. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/setjmp.S uClibc/libc/sysdeps/linux/alpha/setjmp.S
  48512. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  48513. +++ uClibc/libc/sysdeps/linux/alpha/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  48514. @@ -12,15 +12,10 @@
  48515. Lesser General Public License for more details.
  48516. You should have received a copy of the GNU Lesser General Public
  48517. - License along with the GNU C Library; if not, write to the Free
  48518. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48519. - 02111-1307 USA. */
  48520. -
  48521. -#include <features.h>
  48522. -#define _ASM
  48523. -#define _SETJMP_H
  48524. -#define __ASSEMBLY__
  48525. -#include <bits/setjmp.h>
  48526. + License along with the GNU C Library; if not, see
  48527. + <http://www.gnu.org/licenses/>. */
  48528. +
  48529. +#include <jmpbuf-offsets.h>
  48530. #define a0 $16
  48531. @@ -30,10 +25,16 @@
  48532. ldgp $29, 0($27)
  48533. $sigsetjmp_local:
  48534. - subq $30, 16, $30
  48535. - .frame $26, 16, $26, 0
  48536. - stq $26, 0($30)
  48537. - .mask 0x04000000, -16
  48538. +#ifndef __PIC__
  48539. +# define FRAME 16
  48540. + subq $30, FRAME, $30
  48541. + .frame $30, FRAME, $26, 0
  48542. + stq $26, 0($30)
  48543. + .mask 0x04000000, -FRAME
  48544. +#else
  48545. +# define FRAME 0
  48546. + .frame $30, FRAME, $26, 0
  48547. +#endif
  48548. .prologue 1
  48549. stq $9, JB_S0*8(a0)
  48550. @@ -43,9 +44,9 @@
  48551. stq $13, JB_S4*8(a0)
  48552. stq $14, JB_S5*8(a0)
  48553. stq $26, JB_PC*8(a0)
  48554. - addq $30, 16, $1
  48555. - stq $15, JB_FP*8(a0)
  48556. + addq $30, FRAME, $1
  48557. stq $1, JB_SP*8(a0)
  48558. + stq $15, JB_FP*8(a0)
  48559. stt $f2, JB_F2*8(a0)
  48560. stt $f3, JB_F3*8(a0)
  48561. stt $f4, JB_F4*8(a0)
  48562. @@ -55,12 +56,16 @@
  48563. stt $f8, JB_F8*8(a0)
  48564. stt $f9, JB_F9*8(a0)
  48565. +#ifndef __PIC__
  48566. /* Call to C to (potentially) save our signal mask. */
  48567. jsr $26, __sigjmp_save
  48568. -
  48569. ldq $26, 0($30)
  48570. addq $30, 16, $30
  48571. ret
  48572. +#else
  48573. + /* Tailcall to save the signal mask. */
  48574. + br $31, __sigjmp_save !samegp
  48575. +#endif
  48576. .end __sigsetjmp
  48577. @@ -71,7 +76,6 @@
  48578. .align 3;
  48579. .ent _setjmp , 0;
  48580. _setjmp:
  48581. - .frame $30 , 0, $26
  48582. ldgp $29, 0($27)
  48583. mov 0, $17
  48584. br $sigsetjmp_local
  48585. @@ -81,11 +85,7 @@
  48586. .align 3;
  48587. .ent setjmp , 0;
  48588. setjmp:
  48589. - .frame $30 , 0, $26
  48590. ldgp $29, 0($27)
  48591. mov 1, $17
  48592. br $sigsetjmp_local
  48593. .end setjmp
  48594. -
  48595. -.weak _setjmp
  48596. -.weak setjmp
  48597. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sigprocmask.c uClibc/libc/sysdeps/linux/alpha/sigprocmask.c
  48598. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sigprocmask.c 2012-05-15 09:20:09.000000000 +0200
  48599. +++ uClibc/libc/sysdeps/linux/alpha/sigprocmask.c 2014-02-03 12:32:56.000000000 +0100
  48600. @@ -13,9 +13,8 @@
  48601. Lesser General Public License for more details.
  48602. You should have received a copy of the GNU Lesser General Public
  48603. - License along with the GNU C Library; if not, write to the Free
  48604. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48605. - 02111-1307 USA. */
  48606. + License along with the GNU C Library; if not, see
  48607. + <http://www.gnu.org/licenses/>. */
  48608. #include <features.h>
  48609. #include <errno.h>
  48610. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/acct.h uClibc/libc/sysdeps/linux/alpha/sys/acct.h
  48611. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/acct.h 2012-05-15 09:20:09.000000000 +0200
  48612. +++ uClibc/libc/sysdeps/linux/alpha/sys/acct.h 2014-02-03 12:32:56.000000000 +0100
  48613. @@ -12,9 +12,8 @@
  48614. Lesser General Public License for more details.
  48615. You should have received a copy of the GNU Lesser General Public
  48616. - License along with the GNU C Library; if not, write to the Free
  48617. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48618. - 02111-1307 USA. */
  48619. + License along with the GNU C Library; if not, see
  48620. + <http://www.gnu.org/licenses/>. */
  48621. #ifndef _SYS_ACCT_H
  48622. @@ -59,7 +58,7 @@
  48623. /* Switch process accounting on and off. */
  48624. -extern int acct (__const char *__filename) __THROW;
  48625. +extern int acct (const char *__filename) __THROW;
  48626. __END_DECLS
  48627. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/io.h uClibc/libc/sysdeps/linux/alpha/sys/io.h
  48628. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  48629. +++ uClibc/libc/sysdeps/linux/alpha/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  48630. @@ -12,9 +12,8 @@
  48631. Lesser General Public License for more details.
  48632. You should have received a copy of the GNU Lesser General Public
  48633. - License along with the GNU C Library; if not, write to the Free
  48634. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48635. - 02111-1307 USA. */
  48636. + License along with the GNU C Library; if not, see
  48637. + <http://www.gnu.org/licenses/>. */
  48638. #ifndef _SYS_IO_H
  48639. @@ -23,6 +22,7 @@
  48640. __BEGIN_DECLS
  48641. +#if defined __UCLIBC_LINUX_SPECIFIC__
  48642. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  48643. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  48644. permission off for that range. This call requires root privileges.
  48645. @@ -32,12 +32,12 @@
  48646. E.g., Linux/Alpha for Alpha PCs supports this. */
  48647. extern int ioperm (unsigned long int __from, unsigned long int __num,
  48648. int __turn_on) __THROW;
  48649. -libc_hidden_proto(ioperm)
  48650. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  48651. access any I/O port is granted. This call requires root
  48652. privileges. */
  48653. extern int iopl (int __level) __THROW;
  48654. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  48655. /* Return the physical address of the DENSE I/O memory or NULL if none
  48656. is available (e.g. on a jensen). */
  48657. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/procfs.h uClibc/libc/sysdeps/linux/alpha/sys/procfs.h
  48658. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  48659. +++ uClibc/libc/sysdeps/linux/alpha/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  48660. @@ -12,9 +12,8 @@
  48661. Lesser General Public License for more details.
  48662. You should have received a copy of the GNU Lesser General Public
  48663. - License along with the GNU C Library; if not, write to the Free
  48664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48665. - 02111-1307 USA. */
  48666. + License along with the GNU C Library; if not, see
  48667. + <http://www.gnu.org/licenses/>. */
  48668. #ifndef _SYS_PROCFS_H
  48669. #define _SYS_PROCFS_H 1
  48670. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/ucontext.h uClibc/libc/sysdeps/linux/alpha/sys/ucontext.h
  48671. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  48672. +++ uClibc/libc/sysdeps/linux/alpha/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  48673. @@ -12,9 +12,8 @@
  48674. Lesser General Public License for more details.
  48675. You should have received a copy of the GNU Lesser General Public
  48676. - License along with the GNU C Library; if not, write to the Free
  48677. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48678. - 02111-1307 USA. */
  48679. + License along with the GNU C Library; if not, see
  48680. + <http://www.gnu.org/licenses/>. */
  48681. #ifndef _SYS_UCONTEXT_H
  48682. #define _SYS_UCONTEXT_H 1
  48683. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/user.h uClibc/libc/sysdeps/linux/alpha/sys/user.h
  48684. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  48685. +++ uClibc/libc/sysdeps/linux/alpha/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  48686. @@ -12,9 +12,8 @@
  48687. Lesser General Public License for more details.
  48688. You should have received a copy of the GNU Lesser General Public
  48689. - License along with the GNU C Library; if not, write to the Free
  48690. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48691. - 02111-1307 USA. */
  48692. + License along with the GNU C Library; if not, see
  48693. + <http://www.gnu.org/licenses/>. */
  48694. #ifndef _SYS_USER_H
  48695. #define _SYS_USER_H 1
  48696. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S uClibc/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S
  48697. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S 2012-05-15 09:20:09.000000000 +0200
  48698. +++ uClibc/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S 2014-02-03 12:32:56.000000000 +0100
  48699. @@ -13,9 +13,8 @@
  48700. Lesser General Public License for more details.
  48701. You should have received a copy of the GNU Lesser General Public
  48702. - License along with the GNU C Library; if not, write to the Free
  48703. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48704. - 02111-1307 USA. */
  48705. + License along with the GNU C Library; if not, see
  48706. + <http://www.gnu.org/licenses/>. */
  48707. #include <features.h>
  48708. #include <sys/syscall.h>
  48709. @@ -31,6 +30,9 @@
  48710. .text
  48711. .globl __syscall_rt_sigaction
  48712. +#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  48713. +.hidden __syscall_rt_sigaction
  48714. +#endif
  48715. .align 4
  48716. .ent __syscall_rt_sigaction, 0
  48717. __syscall_rt_sigaction:
  48718. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/syscall.S uClibc/libc/sysdeps/linux/alpha/syscall.S
  48719. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/syscall.S 2012-05-15 09:20:09.000000000 +0200
  48720. +++ uClibc/libc/sysdeps/linux/alpha/syscall.S 2014-02-03 12:32:56.000000000 +0100
  48721. @@ -13,9 +13,8 @@
  48722. Lesser General Public License for more details.
  48723. You should have received a copy of the GNU Lesser General Public
  48724. - License along with the GNU C Library; if not, write to the Free
  48725. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  48726. - 02111-1307 USA. */
  48727. + License along with the GNU C Library; if not, see
  48728. + <http://www.gnu.org/licenses/>. */
  48729. #include <features.h>
  48730. #include <sys/regdef.h>
  48731. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/byteswap.h uClibc/libc/sysdeps/linux/arc/bits/byteswap.h
  48732. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/byteswap.h 1970-01-01 01:00:00.000000000 +0100
  48733. +++ uClibc/libc/sysdeps/linux/arc/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  48734. @@ -0,0 +1,23 @@
  48735. +/*
  48736. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48737. + *
  48738. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48739. + *
  48740. + */
  48741. +
  48742. +#ifndef _ASM_BITS_BYTESWAP_H
  48743. +#define _ASM_BITS_BYTESWAP_H 1
  48744. +
  48745. +#ifdef __Xswape /* gcc defined if -mswape is enabled */
  48746. +
  48747. +#define __bswap_non_constant_32(x) \
  48748. + __extension__ \
  48749. + ({ unsigned int __bswap_32_v = x; \
  48750. + __asm__ ("swape %0, %0" : "+r" (__bswap_32_v)); \
  48751. + __bswap_32_v; })
  48752. +
  48753. +#endif /* __Xswape */
  48754. +
  48755. +#endif /* _ASM_BITS_BYTESWAP_H */
  48756. +
  48757. +#include <bits/byteswap-common.h>
  48758. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/endian.h uClibc/libc/sysdeps/linux/arc/bits/endian.h
  48759. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/endian.h 1970-01-01 01:00:00.000000000 +0100
  48760. +++ uClibc/libc/sysdeps/linux/arc/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  48761. @@ -0,0 +1,15 @@
  48762. +/*
  48763. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48764. + *
  48765. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48766. + */
  48767. +#ifndef _ENDIAN_H
  48768. +# error "Never use <bits/endian.h> directly; include <endian.h> instead."
  48769. +#endif
  48770. +
  48771. +/* ARC support either endianness. */
  48772. +#ifdef __BIG_ENDIAN__
  48773. +#define __BYTE_ORDER __BIG_ENDIAN
  48774. +#else
  48775. +#define __BYTE_ORDER __LITTLE_ENDIAN
  48776. +#endif
  48777. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/fcntl.h uClibc/libc/sysdeps/linux/arc/bits/fcntl.h
  48778. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100
  48779. +++ uClibc/libc/sysdeps/linux/arc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  48780. @@ -0,0 +1,223 @@
  48781. +/* O_*, F_*, FD_* bit values for Linux.
  48782. + *
  48783. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48784. + *
  48785. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48786. + */
  48787. +#ifndef _FCNTL_H
  48788. +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  48789. +#endif
  48790. +
  48791. +
  48792. +#include <sys/types.h>
  48793. +#ifdef __USE_GNU
  48794. +# include <bits/uio.h>
  48795. +#endif
  48796. +
  48797. +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  48798. + located on an ext2 file system */
  48799. +#define O_ACCMODE 0003
  48800. +#define O_RDONLY 00
  48801. +#define O_WRONLY 01
  48802. +#define O_RDWR 02
  48803. +#define O_CREAT 0100 /* not fcntl */
  48804. +#define O_EXCL 0200 /* not fcntl */
  48805. +#define O_NOCTTY 0400 /* not fcntl */
  48806. +#define O_TRUNC 01000 /* not fcntl */
  48807. +#define O_APPEND 02000
  48808. +#define O_NONBLOCK 04000
  48809. +#define O_NDELAY O_NONBLOCK
  48810. +#define O_SYNC 010000
  48811. +#define O_FSYNC O_SYNC
  48812. +#define O_ASYNC 020000
  48813. +
  48814. +#ifdef __USE_GNU
  48815. +# define O_DIRECT 040000 /* Direct disk access. */
  48816. +# define O_DIRECTORY 0200000 /* Must be a directory. */
  48817. +# define O_NOFOLLOW 0400000 /* Do not follow links. */
  48818. +# define O_NOATIME 01000000 /* Do not set atime. */
  48819. +# define O_CLOEXEC 02000000 /* Set close_on_exec. */
  48820. +#endif
  48821. +
  48822. +#ifdef __USE_LARGEFILE64
  48823. +# define O_LARGEFILE 0100000
  48824. +#endif
  48825. +
  48826. +/* For now Linux has synchronisity options for data and read operations.
  48827. + We define the symbols here but let them do the same as O_SYNC since
  48828. + this is a superset. */
  48829. +#if defined __USE_POSIX199309 || defined __USE_UNIX98
  48830. +# define O_DSYNC O_SYNC /* Synchronize data. */
  48831. +# define O_RSYNC O_SYNC /* Synchronize read operations. */
  48832. +#endif
  48833. +
  48834. +/* Values for the second argument to `fcntl'. */
  48835. +#define F_DUPFD 0 /* Duplicate file descriptor. */
  48836. +#define F_GETFD 1 /* Get file descriptor flags. */
  48837. +#define F_SETFD 2 /* Set file descriptor flags. */
  48838. +#define F_GETFL 3 /* Get file status flags. */
  48839. +#define F_SETFL 4 /* Set file status flags. */
  48840. +
  48841. +#ifndef __USE_FILE_OFFSET64
  48842. +# define F_GETLK 5 /* Get record locking info. */
  48843. +# define F_SETLK 6 /* Set record locking info (non-blocking). */
  48844. +# define F_SETLKW 7 /* Set record locking info (blocking). */
  48845. +#else
  48846. +# define F_GETLK F_GETLK64 /* Get record locking info. */
  48847. +# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
  48848. +# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
  48849. +#endif
  48850. +#define F_GETLK64 12 /* Get record locking info. */
  48851. +#define F_SETLK64 13 /* Set record locking info (non-blocking). */
  48852. +#define F_SETLKW64 14 /* Set record locking info (blocking). */
  48853. +
  48854. +#if defined __USE_BSD || defined __USE_XOPEN2K
  48855. +# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
  48856. +# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
  48857. +#endif
  48858. +
  48859. +#ifdef __USE_GNU
  48860. +# define F_SETSIG 10 /* Set number of signal to be sent. */
  48861. +# define F_GETSIG 11 /* Get number of signal to be sent. */
  48862. +#endif
  48863. +
  48864. +#ifdef __USE_GNU
  48865. +# define F_SETLEASE 1024 /* Set a lease. */
  48866. +# define F_GETLEASE 1025 /* Enquire what lease is active. */
  48867. +# define F_NOTIFY 1026 /* Request notfications on a directory. */
  48868. +# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
  48869. + close-on-exit set on new fd. */
  48870. +#endif
  48871. +
  48872. +/* For F_[GET|SET]FL. */
  48873. +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
  48874. +
  48875. +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
  48876. +#define F_RDLCK 0 /* Read lock. */
  48877. +#define F_WRLCK 1 /* Write lock. */
  48878. +#define F_UNLCK 2 /* Remove lock. */
  48879. +
  48880. +/* For old implementation of bsd flock(). */
  48881. +#define F_EXLCK 4 /* or 3 */
  48882. +#define F_SHLCK 8 /* or 4 */
  48883. +
  48884. +#ifdef __USE_BSD
  48885. +/* Operations for bsd flock(), also used by the kernel implementation. */
  48886. +# define LOCK_SH 1 /* shared lock */
  48887. +# define LOCK_EX 2 /* exclusive lock */
  48888. +# define LOCK_NB 4 /* or'd with one of the above to prevent
  48889. + blocking */
  48890. +# define LOCK_UN 8 /* remove lock */
  48891. +#endif
  48892. +
  48893. +#ifdef __USE_GNU
  48894. +# define LOCK_MAND 32 /* This is a mandatory flock: */
  48895. +# define LOCK_READ 64 /* ... which allows concurrent read operations. */
  48896. +# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
  48897. +# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
  48898. +#endif
  48899. +
  48900. +#ifdef __USE_GNU
  48901. +/* Types of directory notifications that may be requested with F_NOTIFY. */
  48902. +# define DN_ACCESS 0x00000001 /* File accessed. */
  48903. +# define DN_MODIFY 0x00000002 /* File modified. */
  48904. +# define DN_CREATE 0x00000004 /* File created. */
  48905. +# define DN_DELETE 0x00000008 /* File removed. */
  48906. +# define DN_RENAME 0x00000010 /* File renamed. */
  48907. +# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
  48908. +# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
  48909. +#endif
  48910. +
  48911. +struct flock
  48912. + {
  48913. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  48914. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  48915. +#ifndef __USE_FILE_OFFSET64
  48916. + __off_t l_start; /* Offset where the lock begins. */
  48917. + __off_t l_len; /* Size of the locked area; zero means until EOF. */
  48918. +#else
  48919. + __off64_t l_start; /* Offset where the lock begins. */
  48920. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  48921. +#endif
  48922. + __pid_t l_pid; /* Process holding the lock. */
  48923. + };
  48924. +
  48925. +#ifdef __USE_LARGEFILE64
  48926. +struct flock64
  48927. + {
  48928. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  48929. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  48930. + __off64_t l_start; /* Offset where the lock begins. */
  48931. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  48932. + __pid_t l_pid; /* Process holding the lock. */
  48933. + };
  48934. +#endif
  48935. +
  48936. +/* Define some more compatibility macros to be backward compatible with
  48937. + BSD systems which did not managed to hide these kernel macros. */
  48938. +#ifdef __USE_BSD
  48939. +# define FAPPEND O_APPEND
  48940. +# define FFSYNC O_FSYNC
  48941. +# define FASYNC O_ASYNC
  48942. +# define FNONBLOCK O_NONBLOCK
  48943. +# define FNDELAY O_NDELAY
  48944. +#endif /* Use BSD. */
  48945. +
  48946. +/* Advise to `posix_fadvise'. */
  48947. +#ifdef __USE_XOPEN2K
  48948. +# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
  48949. +# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
  48950. +# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
  48951. +# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
  48952. +# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
  48953. +# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
  48954. +#endif
  48955. +
  48956. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  48957. +/* Flags for SYNC_FILE_RANGE. */
  48958. +# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages
  48959. + in the range before performing the
  48960. + write. */
  48961. +# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those
  48962. + dirty pages in the range which are
  48963. + not presently under writeback. */
  48964. +# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in
  48965. + the range after performing the
  48966. + write. */
  48967. +
  48968. +/* Flags for SPLICE and VMSPLICE. */
  48969. +# define SPLICE_F_MOVE 1 /* Move pages instead of copying. */
  48970. +# define SPLICE_F_NONBLOCK 2 /* Don't block on the pipe splicing
  48971. + (but we may still block on the fd
  48972. + we splice from/to). */
  48973. +# define SPLICE_F_MORE 4 /* Expect more data. */
  48974. +# define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */
  48975. +#endif
  48976. +
  48977. +__BEGIN_DECLS
  48978. +
  48979. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  48980. +
  48981. +/* Provide kernel hint to read ahead. */
  48982. +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
  48983. + __THROW;
  48984. +
  48985. +/* Selective file content synch'ing. */
  48986. +extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
  48987. + unsigned int __flags);
  48988. +
  48989. +/* Splice address range into a pipe. */
  48990. +extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
  48991. + size_t __count, unsigned int __flags);
  48992. +
  48993. +/* Splice two files together. */
  48994. +extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
  48995. + __off64_t *__offout, size_t __len,
  48996. + unsigned int __flags);
  48997. +
  48998. +/* In-kernel implementation of tee for pipe buffers. */
  48999. +extern ssize_t tee (int __fdin, int __fdout, size_t __len,
  49000. + unsigned int __flags);
  49001. +
  49002. +#endif
  49003. +__END_DECLS
  49004. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/kernel_types.h uClibc/libc/sysdeps/linux/arc/bits/kernel_types.h
  49005. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/kernel_types.h 1970-01-01 01:00:00.000000000 +0100
  49006. +++ uClibc/libc/sysdeps/linux/arc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  49007. @@ -0,0 +1,59 @@
  49008. +/*
  49009. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49010. + *
  49011. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49012. + */
  49013. +
  49014. +/* Note that we use the exact same include guard #define names
  49015. + * as asm/posix_types.h. This will avoid gratuitous conflicts
  49016. + * with the posix_types.h kernel header, and will ensure that
  49017. + * our private content, and not the kernel header, will win.
  49018. + * -Erik
  49019. + *
  49020. + * Update: ARC Linux 3.2 ABI change - asm-generic/posix_types.h used now.
  49021. + * for which ARCH wrapper (asm/posix_types.h) is generated, so need to use
  49022. + * the asm-generic file's gaurd.
  49023. + *
  49024. + * Based on asm-generic/stat.h
  49025. + */
  49026. +
  49027. +#ifndef __ASM_GENERIC_POSIX_TYPES_H
  49028. +#define __ASM_GENERIC_POSIX_TYPES_H
  49029. +
  49030. +typedef unsigned long __kernel_dev_t;
  49031. +typedef unsigned long __kernel_ino_t;
  49032. +typedef unsigned int __kernel_mode_t;
  49033. +typedef unsigned int __kernel_nlink_t;
  49034. +typedef long __kernel_off_t;
  49035. +typedef int __kernel_pid_t;
  49036. +typedef int __kernel_ipc_pid_t;
  49037. +typedef unsigned int __kernel_uid_t;
  49038. +typedef unsigned int __kernel_gid_t;
  49039. +typedef unsigned int __kernel_size_t;
  49040. +typedef int __kernel_ssize_t;
  49041. +typedef int __kernel_ptrdiff_t;
  49042. +typedef long __kernel_time_t;
  49043. +typedef long __kernel_suseconds_t;
  49044. +typedef long __kernel_clock_t;
  49045. +typedef int __kernel_daddr_t;
  49046. +typedef char * __kernel_caddr_t;
  49047. +typedef unsigned short __kernel_uid16_t;
  49048. +typedef unsigned short __kernel_gid16_t;
  49049. +typedef __kernel_uid_t __kernel_uid32_t;
  49050. +typedef __kernel_gid_t __kernel_gid32_t;
  49051. +typedef __kernel_uid_t __kernel_old_uid_t;
  49052. +typedef __kernel_gid_t __kernel_old_gid_t;
  49053. +typedef long long __kernel_loff_t;
  49054. +typedef unsigned int __kernel_old_dev_t;
  49055. +typedef long __kernel_long_t;
  49056. +typedef unsigned long __kernel_ulong_t;
  49057. +
  49058. +typedef struct {
  49059. +#ifdef __USE_ALL
  49060. + int val[2];
  49061. +#else
  49062. + int __val[2];
  49063. +#endif
  49064. +} __kernel_fsid_t;
  49065. +
  49066. +#endif /* _ASM_ARC_POSIX_TYPES_H */
  49067. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/setjmp.h uClibc/libc/sysdeps/linux/arc/bits/setjmp.h
  49068. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100
  49069. +++ uClibc/libc/sysdeps/linux/arc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  49070. @@ -0,0 +1,16 @@
  49071. +/*
  49072. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49073. + *
  49074. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49075. + */
  49076. +
  49077. +#ifndef _BITS_SETJMP_H
  49078. +#define _BITS_SETJMP_H 1
  49079. +
  49080. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  49081. +# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  49082. +#endif
  49083. +
  49084. +typedef int __jmp_buf[13+1+1+1]; /*r13-r25, fp, sp, blink */
  49085. +
  49086. +#endif
  49087. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/arc/bits/sigcontextinfo.h
  49088. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100
  49089. +++ uClibc/libc/sysdeps/linux/arc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  49090. @@ -0,0 +1,15 @@
  49091. +/*
  49092. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49093. + *
  49094. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49095. + */
  49096. +
  49097. +#include <features.h>
  49098. +#define SIGCONTEXT struct sigcontext *
  49099. +#define SIGCONTEXT_EXTRA_ARGS
  49100. +
  49101. +#define GET_PC(ctx) ((void *) ctx->regs.scratch.ret)
  49102. +#define GET_FRAME(ctx) ((void *) ctx->regs.scratch.fp)
  49103. +#define GET_STACK(ctx) ((void *) ctx->regs.scratch.sp)
  49104. +#define CALL_SIGHANDLER(handler, signo, ctx) \
  49105. + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
  49106. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/stackinfo.h uClibc/libc/sysdeps/linux/arc/bits/stackinfo.h
  49107. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/stackinfo.h 1970-01-01 01:00:00.000000000 +0100
  49108. +++ uClibc/libc/sysdeps/linux/arc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  49109. @@ -0,0 +1,13 @@
  49110. +/*
  49111. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49112. + *
  49113. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49114. + */
  49115. +
  49116. +#ifndef _STACKINFO_H
  49117. +#define _STACKINFO_H 1
  49118. +
  49119. +/* On ARC, the stack grows down. */
  49120. +#define _STACK_GROWS_DOWN 1
  49121. +
  49122. +#endif /* stackinfo.h */
  49123. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/syscalls.h uClibc/libc/sysdeps/linux/arc/bits/syscalls.h
  49124. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  49125. +++ uClibc/libc/sysdeps/linux/arc/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  49126. @@ -0,0 +1,192 @@
  49127. +/*
  49128. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49129. + *
  49130. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49131. + *
  49132. + */
  49133. +#ifndef _BITS_SYSCALLS_H
  49134. +#define _BITS_SYSCALLS_H
  49135. +#ifndef _SYSCALL_H
  49136. +#error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
  49137. +#endif
  49138. +
  49139. +#ifndef __ASSEMBLER__
  49140. +
  49141. +#include <errno.h>
  49142. +
  49143. +/*
  49144. + * Fine tuned code for errno handling in syscall wrappers.
  49145. + *
  49146. + * 1. __syscall_error(raw_syscall_ret_val) is used to set the errno (vs.
  49147. + * the typical __set_errno). This helps elide the generated code for
  49148. + * GOT fetch for __errno_location pointer etc, in each wrapper.
  49149. + *
  49150. + * 2. The call to above is also disguised in inline asm. This elides
  49151. + * unconditional save/restore of a few callee regs which gcc almost
  49152. + * always generates if the call is exposed
  49153. + *
  49154. + * 3. The function can't be hidden because wrappers from librt et all also
  49155. + * call it. However hidden is not really needed to bypass PLT for
  49156. + * intra-libc calls as the branch insn w/o @plt is sufficient.
  49157. + */
  49158. +
  49159. +#ifdef IS_IN_rtld
  49160. +/* ldso doesn't have real errno */
  49161. +#define ERRNO_ERRANDS(_sys_result)
  49162. +#else /* !IS_IN_rtld */
  49163. +extern int __syscall_error (int);
  49164. +#ifndef IS_IN_libc
  49165. +/* Inter-libc callers use PLT */
  49166. +#define CALL_ERRNO_SETTER "bl __syscall_error@plt \n\t"
  49167. +#else
  49168. +/* intra-libc callers, despite PIC can bypass PLT */
  49169. +#define CALL_ERRNO_SETTER "bl __syscall_error \n\t"
  49170. +#endif
  49171. +
  49172. +#define ERRNO_ERRANDS(_sys_result) \
  49173. + __asm__ volatile ( \
  49174. + "st.a blink, [sp, -4] \n\t" \
  49175. + CALL_ERRNO_SETTER \
  49176. + "ld.ab blink, [sp, 4] \n\t" \
  49177. + :"+r" (_sys_result) \
  49178. + : \
  49179. + :"r1","r2","r3","r4","r5","r6", \
  49180. + "r7","r8","r9","r10","r11","r12" \
  49181. + );
  49182. +
  49183. +#endif /* IS_IN_rtld */
  49184. +
  49185. +/* Invoke the syscall and return unprocessed kernel status */
  49186. +#define INTERNAL_SYSCALL(nm, err, nr, args...) \
  49187. + INTERNAL_SYSCALL_NCS(SYS_ify (nm), err, nr, args)
  49188. +
  49189. +/* -1 to -1023 as valid error values will suffice for some time */
  49190. +#define INTERNAL_SYSCALL_ERROR_P(val, err) \
  49191. + ((unsigned int) (val) > (unsigned int) -1024)
  49192. +
  49193. +/*
  49194. + * Standard sycall wrapper:
  49195. + * -"const" syscall number @nm, sets errno, return success/error-codes
  49196. + */
  49197. +#define INLINE_SYSCALL(nm, nr_args, args...) \
  49198. +({ \
  49199. + register int __res __asm__("r0"); \
  49200. + __res = INTERNAL_SYSCALL(nm, , nr_args, args); \
  49201. + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
  49202. + { \
  49203. + ERRNO_ERRANDS(__res); \
  49204. + } \
  49205. + __res; \
  49206. +})
  49207. +
  49208. +/* Non const syscall number @nm
  49209. + * Ideally this could be folded within INLINE_SYSCALL with
  49210. + * __builtin_constant_p in INTERNAL_SYSCALL but that fails for syscall.c
  49211. + */
  49212. +#define INLINE_SYSCALL_NCS(nm, nr_args, args...) \
  49213. +({ \
  49214. + register int __res __asm__("r0"); \
  49215. + __res = INTERNAL_SYSCALL_NCS(nm, , nr_args, args); \
  49216. + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
  49217. + { \
  49218. + ERRNO_ERRANDS(__res); \
  49219. + } \
  49220. + __res; \
  49221. +})
  49222. +
  49223. +#define INLINE_SYSCALL_NOERR(name, nr, args...) \
  49224. + ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args);\
  49225. + (int) _inline_sys_result; })
  49226. +
  49227. +/*-------------------------------------------------------------------------
  49228. + * Mechanics of Trap - specific to ARC700
  49229. + *
  49230. + * Note the memory clobber is not strictly needed for intended semantics of
  49231. + * the inline asm. However some of the cases, such as old-style 6 arg mmap
  49232. + * gcc was generating code for inline syscall ahead of buffer packing needed
  49233. + * for syscall itself.
  49234. + *-------------------------------------------------------------------------*/
  49235. +
  49236. +#define ARC_TRAP_INSN "trap0 \n\t"
  49237. +
  49238. +#define INTERNAL_SYSCALL_NCS(nm, err, nr_args, args...) \
  49239. +({ \
  49240. + /* Per ABI, r0 is 1st arg and return reg */ \
  49241. + register int __ret __asm__("r0"); \
  49242. + register int _sys_num __asm__("r8"); \
  49243. + \
  49244. + LOAD_ARGS_##nr_args (nm, args) \
  49245. + \
  49246. + __asm__ volatile ( \
  49247. + ARC_TRAP_INSN \
  49248. + : "+r" (__ret) \
  49249. + : "r"(_sys_num) ASM_ARGS_##nr_args \
  49250. + : "memory"); \
  49251. + \
  49252. + __ret; \
  49253. +})
  49254. +
  49255. +/* Macros for setting up inline __asm__ input regs */
  49256. +#define ASM_ARGS_0
  49257. +#define ASM_ARGS_1 ASM_ARGS_0, "r" (__ret)
  49258. +#define ASM_ARGS_2 ASM_ARGS_1, "r" (_arg2)
  49259. +#define ASM_ARGS_3 ASM_ARGS_2, "r" (_arg3)
  49260. +#define ASM_ARGS_4 ASM_ARGS_3, "r" (_arg4)
  49261. +#define ASM_ARGS_5 ASM_ARGS_4, "r" (_arg5)
  49262. +#define ASM_ARGS_6 ASM_ARGS_5, "r" (_arg6)
  49263. +#define ASM_ARGS_7 ASM_ARGS_6, "r" (_arg7)
  49264. +
  49265. +/* Macros for converting sys-call wrapper args into sys call args */
  49266. +#define LOAD_ARGS_0(nm, arg) \
  49267. + _sys_num = (int) (nm); \
  49268. +
  49269. +#define LOAD_ARGS_1(nm, arg1) \
  49270. + __ret = (int) (arg1); \
  49271. + LOAD_ARGS_0 (nm, arg1)
  49272. +
  49273. +/*
  49274. + * Note that the use of _tmpX might look superflous, however it is needed
  49275. + * to ensure that register variables are not clobbered if arg happens to be
  49276. + * a function call itself. e.g. sched_setaffinity() calling getpid() for arg2
  49277. + *
  49278. + * Also this specific order of recursive calling is important to segregate
  49279. + * the tmp args evaluation (function call case described above) and assigment
  49280. + * of register variables
  49281. + */
  49282. +#define LOAD_ARGS_2(nm, arg1, arg2) \
  49283. + int _tmp2 = (int) (arg2); \
  49284. + LOAD_ARGS_1 (nm, arg1) \
  49285. + register int _arg2 __asm__ ("r1") = _tmp2;
  49286. +
  49287. +#define LOAD_ARGS_3(nm, arg1, arg2, arg3) \
  49288. + int _tmp3 = (int) (arg3); \
  49289. + LOAD_ARGS_2 (nm, arg1, arg2) \
  49290. + register int _arg3 __asm__ ("r2") = _tmp3;
  49291. +
  49292. +#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \
  49293. + int _tmp4 = (int) (arg4); \
  49294. + LOAD_ARGS_3 (nm, arg1, arg2, arg3) \
  49295. + register int _arg4 __asm__ ("r3") = _tmp4;
  49296. +
  49297. +#define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \
  49298. + int _tmp5 = (int) (arg5); \
  49299. + LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \
  49300. + register int _arg5 __asm__ ("r4") = _tmp5;
  49301. +
  49302. +#define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6) \
  49303. + int _tmp6 = (int) (arg6); \
  49304. + LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \
  49305. + register int _arg6 __asm__ ("r5") = _tmp6;
  49306. +
  49307. +#define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
  49308. + int _tmp7 = (int) (arg7); \
  49309. + LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \
  49310. + register int _arg7 __asm__ ("r6") = _tmp7;
  49311. +
  49312. +#else
  49313. +
  49314. +#define ARC_TRAP_INSN trap0
  49315. +
  49316. +#endif /* __ASSEMBLER__ */
  49317. +
  49318. +#endif /* _BITS_SYSCALLS_H */
  49319. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h
  49320. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h 1970-01-01 01:00:00.000000000 +0100
  49321. +++ uClibc/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  49322. @@ -0,0 +1,53 @@
  49323. +/*
  49324. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49325. + *
  49326. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49327. + */
  49328. +
  49329. +/*
  49330. + * Track misc arch-specific features that aren't config options
  49331. + */
  49332. +
  49333. +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  49334. +#define _BITS_UCLIBC_ARCH_FEATURES_H
  49335. +
  49336. +/* instruction used when calling abort() to kill yourself */
  49337. +#define __UCLIBC_ABORT_INSTRUCTION__ "flag 0"
  49338. +
  49339. +/* can your target use syscall6() for mmap ? */
  49340. +#undef __UCLIBC_MMAP_HAS_6_ARGS__
  49341. +
  49342. +/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  49343. +#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  49344. +
  49345. +/* does your target have a broken create_module() ? */
  49346. +#undef __UCLIBC_BROKEN_CREATE_MODULE__
  49347. +
  49348. +/* does your target have to worry about older [gs]etrlimit() ? */
  49349. +#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
  49350. +
  49351. +/* does your target have an asm .set ? */
  49352. +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
  49353. +
  49354. +/* define if target doesn't like .global */
  49355. +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
  49356. +
  49357. +/* define if target supports .weak */
  49358. +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
  49359. +
  49360. +/* define if target supports .weakext */
  49361. +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
  49362. +
  49363. +/* needed probably only for ppc64 */
  49364. +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
  49365. +
  49366. +/* define if target supports CFI pseudo ops */
  49367. +#undef __UCLIBC_HAVE_ASM_CFI_DIRECTIVES__
  49368. +
  49369. +/* define if target supports IEEE signed zero floats */
  49370. +#define __UCLIBC_HAVE_SIGNED_ZERO__
  49371. +
  49372. +/* The default ';' is a comment on ARC. */
  49373. +#define __UCLIBC_ASM_LINE_SEP__ `
  49374. +
  49375. +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  49376. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_page.h uClibc/libc/sysdeps/linux/arc/bits/uClibc_page.h
  49377. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  49378. +++ uClibc/libc/sysdeps/linux/arc/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  49379. @@ -0,0 +1,26 @@
  49380. +/*
  49381. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49382. + *
  49383. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49384. + */
  49385. +
  49386. +#ifndef _UCLIBC_PAGE_H
  49387. +#define _UCLIBC_PAGE_H
  49388. +
  49389. +/*
  49390. + * ARC700/linux supports 4k, 8k, 16k pages (build time).
  49391. + * We rely on the kernel exported header (aka uapi headers since 3.8)
  49392. + * for PAGE_SIZE and friends. This avoids hand-editing here when building
  49393. + * toolchain.
  49394. + *
  49395. + * Although uClibc determines page size dynamically, from kernel's auxv which
  49396. + * ARC Linux does pass, still the generic code needs a fall back
  49397. + * _dl_pagesize = auxvt[AT_PAGESZ].a_un.a_val ? : PAGE_SIZE
  49398. + *
  49399. + */
  49400. +#include <asm/page.h>
  49401. +
  49402. +/* TBD: fix this with runtime value for a PAGE_SIZE agnostic uClibc */
  49403. +#define MMAP2_PAGE_SHIFT PAGE_SHIFT
  49404. +
  49405. +#endif /* _UCLIBC_PAGE_H */
  49406. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/wordsize.h uClibc/libc/sysdeps/linux/arc/bits/wordsize.h
  49407. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/wordsize.h 1970-01-01 01:00:00.000000000 +0100
  49408. +++ uClibc/libc/sysdeps/linux/arc/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  49409. @@ -0,0 +1,7 @@
  49410. +/*
  49411. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49412. + *
  49413. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49414. + */
  49415. +
  49416. +#define __WORDSIZE 32
  49417. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-_setjmp.S uClibc/libc/sysdeps/linux/arc/bsd-_setjmp.S
  49418. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-_setjmp.S 1970-01-01 01:00:00.000000000 +0100
  49419. +++ uClibc/libc/sysdeps/linux/arc/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49420. @@ -0,0 +1,20 @@
  49421. +/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. ARC version.
  49422. + *
  49423. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49424. + *
  49425. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49426. + */
  49427. +
  49428. +/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  49429. + We cannot do it in C because it must be a tail-call, so frame-unwinding
  49430. + in setjmp doesn't clobber the state restored by longjmp. */
  49431. +
  49432. +#include <sysdep.h>
  49433. +
  49434. +;@ r0 = jump buffer into which regs will be saved
  49435. +
  49436. +ENTRY(_setjmp)
  49437. + b.d __sigsetjmp
  49438. + mov r1, 0 ; don't save signals
  49439. +END(_setjmp)
  49440. +libc_hidden_def(_setjmp)
  49441. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-setjmp.S uClibc/libc/sysdeps/linux/arc/bsd-setjmp.S
  49442. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-setjmp.S 1970-01-01 01:00:00.000000000 +0100
  49443. +++ uClibc/libc/sysdeps/linux/arc/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49444. @@ -0,0 +1,20 @@
  49445. +/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. ARC version.
  49446. + *
  49447. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49448. + *
  49449. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49450. + */
  49451. +
  49452. +/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  49453. + We cannot do it in C because it must be a tail-call, so frame-unwinding
  49454. + in setjmp doesn't clobber the state restored by longjmp. */
  49455. +
  49456. +#include <sysdep.h>
  49457. +
  49458. +;@ r0 = jump buffer into which regs will be saved
  49459. +
  49460. +ENTRY(setjmp)
  49461. + b.d __sigsetjmp
  49462. + mov r1, 1 ; save signals
  49463. +END(setjmp)
  49464. +libc_hidden_def(setjmp)
  49465. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/cacheflush.c uClibc/libc/sysdeps/linux/arc/cacheflush.c
  49466. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/cacheflush.c 1970-01-01 01:00:00.000000000 +0100
  49467. +++ uClibc/libc/sysdeps/linux/arc/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  49468. @@ -0,0 +1,11 @@
  49469. +/* cacheflush syscall for ARC
  49470. + *
  49471. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49472. + *
  49473. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49474. + */
  49475. +
  49476. +#include <sys/syscall.h>
  49477. +#include <sys/cachectl.h>
  49478. +
  49479. +_syscall3(int, cacheflush, void *, addr, int, nbytes, int, op)
  49480. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/clone.S uClibc/libc/sysdeps/linux/arc/clone.S
  49481. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/clone.S 1970-01-01 01:00:00.000000000 +0100
  49482. +++ uClibc/libc/sysdeps/linux/arc/clone.S 2014-02-03 12:32:56.000000000 +0100
  49483. @@ -0,0 +1,71 @@
  49484. +/*
  49485. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49486. + *
  49487. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49488. + */
  49489. +
  49490. +#include <asm/errno.h>
  49491. +#include <sys/syscall.h>
  49492. +#include <sysdep.h>
  49493. +
  49494. +; Per man, libc clone( ) is as follows
  49495. +;
  49496. +; int clone(int (*fn)(void *), void *child_stack,
  49497. +; int flags, void *arg, ...
  49498. +; /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */);
  49499. +;
  49500. +; NOTE: I'm assuming that the last 3 args are NOT var-args and in case all
  49501. +; 3 are not relevant, caller will nevertheless pass those as NULL.
  49502. +; Current (Jul 2012) upstream powerpc/clone.S assumes similarly.
  49503. +; Our LTP (from 2007) doesn't seem to have tests to prove otherwise
  49504. +
  49505. +; clone syscall in kernel
  49506. +;
  49507. +; int sys_clone(unsigned long clone_flags, unsigned long newsp,
  49508. +; int __user *parent_tidptr, void *tls,
  49509. +; int __user *child_tidptr)
  49510. +
  49511. +
  49512. +ENTRY(clone)
  49513. + cmp r0, 0 ; @fn can't be NULL
  49514. + cmp.ne r1, 0 ; @child_stack can't be NULL
  49515. + bz .L__sys_err
  49516. +
  49517. + ; @fn and @args needed after the syscall for child
  49518. + ; However r3 containing @arg will be clobbered BEFORE syscall
  49519. + ; r0 containg @fn will be clobbered AFTER syscall (with ret val)
  49520. + mov r10, r0
  49521. + mov r11, r3
  49522. +
  49523. + ; adjust libc args for syscall
  49524. + mov r0, r2 ; libc @flags is 1st syscall arg
  49525. + mov r2, r4 ; libc @ptid
  49526. + mov r3, r5 ; libc @tls
  49527. + mov r4, r6 ; libc @ctid
  49528. + mov r8, __NR_clone
  49529. + ARC_TRAP_INSN
  49530. +
  49531. + cmp r0, 0 ; return code : 0 new process, !0 parent
  49532. + blt .L__sys_err2 ; < 0 (signed) error
  49533. + jnz [blink] ; Parent returns
  49534. +
  49535. + ; child jumps off to @fn with @arg as argument
  49536. + j.d [r10]
  49537. + mov r0, r11
  49538. +
  49539. + ; falls thru to _exit() with result from @fn (already in r0)
  49540. + b HIDDEN_JUMPTARGET(_exit)
  49541. +
  49542. +.L__sys_err:
  49543. + mov r0, -EINVAL
  49544. +.L__sys_err2:
  49545. + ; (1) No need to make -ve kernel error code as positive errno
  49546. + ; __syscall_error expects the -ve error code returned by kernel
  49547. + ; (2) r0 still had orig -ve kernel error code
  49548. + ; (3) Tail call to __syscall_error so we dont have to come back
  49549. + ; here hence instead of jmp-n-link (reg push/pop) we do jmp
  49550. + ; (4) No need to route __syscall_error via PLT, B is inherently
  49551. + ; position independent
  49552. + b __syscall_error
  49553. +END(clone)
  49554. +libc_hidden_def(clone)
  49555. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crt1.S uClibc/libc/sysdeps/linux/arc/crt1.S
  49556. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crt1.S 1970-01-01 01:00:00.000000000 +0100
  49557. +++ uClibc/libc/sysdeps/linux/arc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  49558. @@ -0,0 +1,57 @@
  49559. +/*
  49560. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49561. + *
  49562. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49563. + */
  49564. +
  49565. +#include <features.h>
  49566. +
  49567. +.text
  49568. +
  49569. +#ifndef __UCLIBC_CTOR_DTOR__
  49570. + .weak _init
  49571. + .weak _fini
  49572. +#endif
  49573. +
  49574. +/* Stick in a dummy reference to main(), so that if an application
  49575. + * is linking when the main() function is in a static library (.a)
  49576. + * we can be sure that main() actually gets linked in
  49577. + */
  49578. + .type main,@function
  49579. + .type _main,@function
  49580. +
  49581. +
  49582. +/* When we enter this piece of code, the program stack looks like this:
  49583. + argc argument counter (integer)
  49584. + argv[0] program name (pointer)
  49585. + argv[1...N] program args (pointers)
  49586. + argv[argc-1] end of args (integer)
  49587. + NULL
  49588. + env[0...N] environment variables (pointers)
  49589. + NULL
  49590. +*/
  49591. + .text
  49592. + .align 4
  49593. + .global __start
  49594. + .hidden __start
  49595. + .type __start,@function
  49596. +__start:
  49597. + mov fp, 0
  49598. + ld_s r1, [sp] ; argc
  49599. +
  49600. + mov_s r5, r0 ; rltd_fini
  49601. + add_s r2, sp, 4 ; argv
  49602. +
  49603. + mov_s r0, main
  49604. + mov_s r3, _init
  49605. + mov r4, _fini
  49606. +
  49607. + and sp, sp, -8
  49608. + mov r6, sp
  49609. +
  49610. + /* __uClibc_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
  49611. + bl __uClibc_main
  49612. +
  49613. + /* Should never get here.... */
  49614. + flag 1
  49615. +.size __start,.-__start
  49616. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crti.S uClibc/libc/sysdeps/linux/arc/crti.S
  49617. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crti.S 1970-01-01 01:00:00.000000000 +0100
  49618. +++ uClibc/libc/sysdeps/linux/arc/crti.S 2014-02-03 12:32:56.000000000 +0100
  49619. @@ -0,0 +1,27 @@
  49620. +/*
  49621. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49622. + *
  49623. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49624. + */
  49625. +
  49626. +___gnu_compiled_c:
  49627. +
  49628. + .section .init
  49629. + .align 4
  49630. + .global _init
  49631. + .type _init,@function
  49632. +_init:
  49633. + st.a blink,[sp,-4]
  49634. + st.a fp,[sp,-4]
  49635. + mov fp,sp
  49636. +
  49637. +
  49638. + .section .fini
  49639. + .align 4
  49640. + .global _fini
  49641. + .type _fini,@function
  49642. +_fini:
  49643. + st.a blink,[sp,-4]
  49644. + st.a fp,[sp,-4]
  49645. + mov fp,sp
  49646. + .align 4
  49647. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crtn.S uClibc/libc/sysdeps/linux/arc/crtn.S
  49648. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crtn.S 1970-01-01 01:00:00.000000000 +0100
  49649. +++ uClibc/libc/sysdeps/linux/arc/crtn.S 2014-02-03 12:32:56.000000000 +0100
  49650. @@ -0,0 +1,29 @@
  49651. +/*
  49652. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49653. + *
  49654. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49655. + */
  49656. +
  49657. +___gnu_compiled_c:
  49658. +
  49659. + .section .init
  49660. + .align 4
  49661. + .global _init
  49662. + .type _init,@function
  49663. + ; EPILOGUE
  49664. + ld.ab fp,[sp,4]
  49665. + ld blink,[sp,0]
  49666. + j.d [blink]
  49667. + add sp,sp,4
  49668. +; .size _init,.-_init
  49669. +
  49670. + .section .fini
  49671. + .align 4
  49672. + .global _fini
  49673. + .type _fini,@function
  49674. + ; EPILOGUE
  49675. + ld.ab fp,[sp,4]
  49676. + ld blink,[sp,0]
  49677. + j.d [blink]
  49678. + add sp,sp,4
  49679. +; .size _fini,.-_fini
  49680. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/arc/jmpbuf-offsets.h
  49681. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  49682. +++ uClibc/libc/sysdeps/linux/arc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  49683. @@ -0,0 +1,7 @@
  49684. +/*
  49685. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49686. + *
  49687. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49688. + */
  49689. +
  49690. +#define __JMP_BUF_SP (13+1)
  49691. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/arc/jmpbuf-unwind.h
  49692. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  49693. +++ uClibc/libc/sysdeps/linux/arc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  49694. @@ -0,0 +1,13 @@
  49695. +/*
  49696. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49697. + *
  49698. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49699. + */
  49700. +
  49701. +#include <setjmp.h>
  49702. +#include <jmpbuf-offsets.h>
  49703. +
  49704. +/* Test if longjmp to JMPBUF would unwind the frame
  49705. + containing a local variable at ADDRESS. */
  49706. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  49707. + ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  49708. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/__longjmp.S uClibc/libc/sysdeps/linux/arc/__longjmp.S
  49709. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
  49710. +++ uClibc/libc/sysdeps/linux/arc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  49711. @@ -0,0 +1,38 @@
  49712. +/*
  49713. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49714. + *
  49715. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49716. + */
  49717. +
  49718. +#include <sysdep.h>
  49719. +
  49720. +;@ r0 = jump buffer from which regs will be restored
  49721. +;@ r1 = value that setjmp( ) will return due to this longjmp
  49722. +
  49723. +ENTRY(__longjmp)
  49724. +
  49725. + ld_s r13, [r0]
  49726. + ld_s r14, [r0,4]
  49727. + ld r15, [r0,8]
  49728. + ld r16, [r0,12]
  49729. + ld r17, [r0,16]
  49730. + ld r18, [r0,20]
  49731. + ld r19, [r0,24]
  49732. + ld r20, [r0,28]
  49733. + ld r21, [r0,32]
  49734. + ld r22, [r0,36]
  49735. + ld r23, [r0,40]
  49736. + ld r24, [r0,44]
  49737. + ld r25, [r0,48]
  49738. +
  49739. + ld blink, [r0,60] ; load it early enough to not stall the pipeline
  49740. + ld fp, [r0,52]
  49741. + ld sp, [r0,56]
  49742. +
  49743. + mov.f r0, r1 ; get the setjmp return value(due to longjmp) in place
  49744. +
  49745. + j.d [blink] ; to caller of setjmp location, right after the call
  49746. + mov.z r0, 1 ; can't let setjmp return 0 when it is due to longjmp
  49747. +
  49748. +END(__longjmp)
  49749. +libc_hidden_def(__longjmp)
  49750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile uClibc/libc/sysdeps/linux/arc/Makefile
  49751. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile 1970-01-01 01:00:00.000000000 +0100
  49752. +++ uClibc/libc/sysdeps/linux/arc/Makefile 2014-02-03 12:32:56.000000000 +0100
  49753. @@ -0,0 +1,13 @@
  49754. +# Makefile for uClibc
  49755. +#
  49756. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  49757. +#
  49758. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49759. +#
  49760. +
  49761. +top_srcdir=../../../../
  49762. +top_builddir=../../../../
  49763. +all: objs
  49764. +include $(top_builddir)Rules.mak
  49765. +include Makefile.arch
  49766. +include $(top_srcdir)Makerules
  49767. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile.arch uClibc/libc/sysdeps/linux/arc/Makefile.arch
  49768. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  49769. +++ uClibc/libc/sysdeps/linux/arc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  49770. @@ -0,0 +1,11 @@
  49771. +# Makefile for uClibc
  49772. +#
  49773. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  49774. +#
  49775. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49776. +#
  49777. +
  49778. +CSRC-y := syscall.c sigaction.c __syscall_error.c cacheflush.c
  49779. +
  49780. +SSRC-y := sigrestorer.S __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  49781. + vfork.S clone.S
  49782. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/setjmp.S uClibc/libc/sysdeps/linux/arc/setjmp.S
  49783. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/setjmp.S 1970-01-01 01:00:00.000000000 +0100
  49784. +++ uClibc/libc/sysdeps/linux/arc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49785. @@ -0,0 +1,39 @@
  49786. +/*
  49787. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49788. + *
  49789. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49790. + */
  49791. +
  49792. +#include <sysdep.h>
  49793. +
  49794. +;@ r0 = jump buffer into which regs will be saved
  49795. +;@ r1 = do we need to save signals
  49796. +
  49797. +ENTRY(__sigsetjmp)
  49798. +
  49799. + st_s r13, [r0]
  49800. + st_s r14, [r0,4]
  49801. + st r15, [r0,8]
  49802. + st r16, [r0,12]
  49803. + st r17, [r0,16]
  49804. + st r18, [r0,20]
  49805. + st r19, [r0,24]
  49806. + st r20, [r0,28]
  49807. + st r21, [r0,32]
  49808. + st r22, [r0,36]
  49809. + st r23, [r0,40]
  49810. + st r24, [r0,44]
  49811. + st r25, [r0,48]
  49812. + st fp, [r0,52]
  49813. + st sp, [r0,56]
  49814. +
  49815. + ; make a note of where longjmp will return to.
  49816. + ; that will be right next to this setjmp call-site which will be
  49817. + ; contained in blink, since "C" caller of this routine will do
  49818. + ; a branch-n-link
  49819. +
  49820. + st blink, [r0,60]
  49821. + b __sigjmp_save
  49822. +
  49823. +END(__sigsetjmp)
  49824. +libc_hidden_def(__sigsetjmp)
  49825. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigaction.c uClibc/libc/sysdeps/linux/arc/sigaction.c
  49826. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigaction.c 1970-01-01 01:00:00.000000000 +0100
  49827. +++ uClibc/libc/sysdeps/linux/arc/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  49828. @@ -0,0 +1,47 @@
  49829. +/*
  49830. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49831. + *
  49832. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49833. + */
  49834. +
  49835. +#include <errno.h>
  49836. +#include <signal.h>
  49837. +#include <string.h>
  49838. +#include <sys/syscall.h>
  49839. +#include <bits/kernel_sigaction.h>
  49840. +
  49841. +extern void __default_rt_sa_restorer(void);
  49842. +//libc_hidden_proto(__default_rt_sa_restorer);
  49843. +
  49844. +#define SA_RESTORER 0x04000000
  49845. +
  49846. +/* If @act is not NULL, change the action for @sig to @act.
  49847. + If @oact is not NULL, put the old action for @sig in @oact. */
  49848. +int
  49849. +__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
  49850. +{
  49851. + struct sigaction kact;
  49852. +
  49853. + /* !act means caller only wants to know @oact
  49854. + * Hence only otherwise, do SA_RESTORER stuff
  49855. + *
  49856. + * For the normal/default cases (user not providing SA_RESTORER) use
  49857. + * a real sigreturn stub to avoid kernel synthesizing one on user stack
  49858. + * at runtime, which needs PTE permissions update (hence TLB entry
  49859. + * update) and costly cache line flushes for code modification
  49860. + */
  49861. + if (act && !(act->sa_flags & SA_RESTORER)) {
  49862. + memcpy(&kact, act, sizeof(kact));
  49863. + kact.sa_restorer = __default_rt_sa_restorer;
  49864. + kact.sa_flags |= SA_RESTORER;
  49865. +
  49866. + act = &kact;
  49867. + }
  49868. +
  49869. + return __syscall_rt_sigaction(sig, act, oact, sizeof(act->sa_mask));
  49870. +}
  49871. +
  49872. +#ifndef LIBC_SIGACTION
  49873. +weak_alias(__libc_sigaction,sigaction)
  49874. +libc_hidden_weak(sigaction)
  49875. +#endif
  49876. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigrestorer.S uClibc/libc/sysdeps/linux/arc/sigrestorer.S
  49877. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigrestorer.S 1970-01-01 01:00:00.000000000 +0100
  49878. +++ uClibc/libc/sysdeps/linux/arc/sigrestorer.S 2014-02-03 12:32:56.000000000 +0100
  49879. @@ -0,0 +1,21 @@
  49880. +/*
  49881. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49882. + *
  49883. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49884. + */
  49885. +
  49886. +#include <sysdep.h>
  49887. +#include <sys/syscall.h>
  49888. +
  49889. +/*
  49890. + * Provide a real sigreturn stub to avoid kernel synthesizing one
  49891. + * on user stack at runtime, which needs PTE permissions update
  49892. + * (hence TLB entry update) and costly cache line flushes for
  49893. + * code modification
  49894. + */
  49895. +
  49896. +ENTRY(__default_rt_sa_restorer)
  49897. + mov r8, __NR_rt_sigreturn
  49898. + ARC_TRAP_INSN
  49899. +END(__default_rt_sa_restorer)
  49900. +libc_hidden_def(__default_rt_sa_restorer)
  49901. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/cachectl.h uClibc/libc/sysdeps/linux/arc/sys/cachectl.h
  49902. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/cachectl.h 1970-01-01 01:00:00.000000000 +0100
  49903. +++ uClibc/libc/sysdeps/linux/arc/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  49904. @@ -0,0 +1,21 @@
  49905. +/*
  49906. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49907. + *
  49908. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49909. + */
  49910. +
  49911. +#ifndef _SYS_CACHECTL_H
  49912. +#define _SYS_CACHECTL_H 1
  49913. +
  49914. +/*
  49915. + * Get the kernel definition for the flag bits
  49916. + */
  49917. +#include <asm/cachectl.h>
  49918. +
  49919. +__BEGIN_DECLS
  49920. +
  49921. +extern int cacheflush(void *addr, int nbytes, int flags);
  49922. +
  49923. +__END_DECLS
  49924. +
  49925. +#endif /* sys/cachectl.h */
  49926. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/procfs.h uClibc/libc/sysdeps/linux/arc/sys/procfs.h
  49927. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/procfs.h 1970-01-01 01:00:00.000000000 +0100
  49928. +++ uClibc/libc/sysdeps/linux/arc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  49929. @@ -0,0 +1,108 @@
  49930. +/*
  49931. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49932. + *
  49933. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49934. + */
  49935. +
  49936. +#ifndef _SYS_PROCFS_H
  49937. +#define _SYS_PROCFS_H 1
  49938. +
  49939. +/* This is somewhat modelled after the file of the same name on SVR4
  49940. + systems. It provides a definition of the core file format for ELF
  49941. + used on Linux. It doesn't have anything to do with the /proc file
  49942. + system, even though Linux has one.
  49943. +
  49944. + Anyway, the whole purpose of this file is for GDB and GDB only.
  49945. + Don't read too much into it. Don't use it for anything other than
  49946. + GDB unless you know what you are doing. */
  49947. +
  49948. +#include <features.h>
  49949. +#include <sys/time.h>
  49950. +#include <sys/types.h>
  49951. +#include <sys/user.h>
  49952. +
  49953. +__BEGIN_DECLS
  49954. +
  49955. +/* Type for a general-purpose register. */
  49956. +typedef unsigned long elf_greg_t;
  49957. +
  49958. +/* And the whole bunch of them. We could have used `struct
  49959. + user_regs' directly in the typedef, but tradition says that
  49960. + the register set is an array, which does have some peculiar
  49961. + semantics, so leave it that way. */
  49962. +#define ELF_NGREG 20
  49963. +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  49964. +
  49965. +/* Signal info. */
  49966. +struct elf_siginfo
  49967. + {
  49968. + int si_signo; /* Signal number. */
  49969. + int si_code; /* Extra code. */
  49970. + int si_errno; /* Errno. */
  49971. + };
  49972. +
  49973. +/* Definitions to generate Intel SVR4-like core files. These mostly
  49974. + have the same names as the SVR4 types with "elf_" tacked on the
  49975. + front to prevent clashes with Linux definitions, and the typedef
  49976. + forms have been avoided. This is mostly like the SVR4 structure,
  49977. + but more Linuxy, with things that Linux does not support and which
  49978. + GDB doesn't really use excluded. */
  49979. +
  49980. +struct elf_prstatus
  49981. + {
  49982. + struct elf_siginfo pr_info; /* Info associated with signal. */
  49983. + short int pr_cursig; /* Current signal. */
  49984. + unsigned long int pr_sigpend; /* Set of pending signals. */
  49985. + unsigned long int pr_sighold; /* Set of held signals. */
  49986. + __pid_t pr_pid;
  49987. + __pid_t pr_ppid;
  49988. + __pid_t pr_pgrp;
  49989. + __pid_t pr_sid;
  49990. + struct timeval pr_utime; /* User time. */
  49991. + struct timeval pr_stime; /* System time. */
  49992. + struct timeval pr_cutime; /* Cumulative user time. */
  49993. + struct timeval pr_cstime; /* Cumulative system time. */
  49994. + elf_gregset_t pr_reg; /* GP registers. */
  49995. + int pr_fpvalid; /* True if math copro being used. */
  49996. + };
  49997. +
  49998. +
  49999. +#define ELF_PRARGSZ (80) /* Number of chars for args. */
  50000. +
  50001. +struct elf_prpsinfo
  50002. + {
  50003. + char pr_state; /* Numeric process state. */
  50004. + char pr_sname; /* Char for pr_state. */
  50005. + char pr_zomb; /* Zombie. */
  50006. + char pr_nice; /* Nice val. */
  50007. + unsigned long int pr_flag; /* Flags. */
  50008. + unsigned short int pr_uid;
  50009. + unsigned short int pr_gid;
  50010. + int pr_pid, pr_ppid, pr_pgrp, pr_sid;
  50011. + /* Lots missing */
  50012. + char pr_fname[16]; /* Filename of executable. */
  50013. + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
  50014. + };
  50015. +
  50016. +/* The rest of this file provides the types for emulation of the
  50017. + Solaris <proc_service.h> interfaces that should be implemented by
  50018. + users of libthread_db. */
  50019. +
  50020. +/* Addresses. */
  50021. +typedef void *psaddr_t;
  50022. +
  50023. +/* Register sets. Linux has different names. */
  50024. +typedef elf_gregset_t prgregset_t;
  50025. +typedef elf_gregset_t prfpregset_t;
  50026. +
  50027. +/* We don't have any differences between processes and threads,
  50028. + therefore have only one PID type. */
  50029. +typedef __pid_t lwpid_t;
  50030. +
  50031. +/* Process status and info. In the end we do provide typedefs for them. */
  50032. +typedef struct elf_prstatus prstatus_t;
  50033. +typedef struct elf_prpsinfo prpsinfo_t;
  50034. +
  50035. +__END_DECLS
  50036. +
  50037. +#endif /* sys/procfs.h */
  50038. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/ucontext.h uClibc/libc/sysdeps/linux/arc/sys/ucontext.h
  50039. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100
  50040. +++ uClibc/libc/sysdeps/linux/arc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  50041. @@ -0,0 +1,22 @@
  50042. +/*
  50043. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  50044. + *
  50045. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  50046. + */
  50047. +
  50048. +#ifndef _SYS_UCONTEXT_H
  50049. +#define _SYS_UCONTEXT_H 1
  50050. +
  50051. +#include <features.h>
  50052. +#include <signal.h>
  50053. +#include <bits/sigcontext.h>
  50054. +
  50055. +typedef struct ucontext {
  50056. + unsigned long uc_flags;
  50057. + struct ucontext *uc_link;
  50058. + stack_t uc_stack;
  50059. + struct sigcontext uc_mcontext;
  50060. + sigset_t uc_sigmask; /* mask last for extensibility */
  50061. +} ucontext_t;
  50062. +
  50063. +#endif /* sys/ucontext.h */
  50064. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/user.h uClibc/libc/sysdeps/linux/arc/sys/user.h
  50065. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  50066. +++ uClibc/libc/sysdeps/linux/arc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  50067. @@ -0,0 +1,23 @@
  50068. +/*
  50069. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  50070. + *
  50071. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  50072. + */
  50073. +
  50074. +#ifndef _SYS_USER_H
  50075. +#define _SYS_USER_H 1
  50076. +
  50077. +/* The whole purpose of this file is for GDB and GDB only. Don't read
  50078. + too much into it. Don't use it for anything other than GDB unless
  50079. + you know what you are doing. */
  50080. +
  50081. +
  50082. +/* Actually apps like strace also expect a struct user, so it's better to
  50083. + * have a dummy implementation
  50084. + */
  50085. +
  50086. +struct user {
  50087. + int dummy;
  50088. +};
  50089. +
  50090. +#endif /* sys/user.h */
  50091. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/syscall.c uClibc/libc/sysdeps/linux/arc/syscall.c
  50092. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/syscall.c 1970-01-01 01:00:00.000000000 +0100
  50093. +++ uClibc/libc/sysdeps/linux/arc/syscall.c 2014-02-03 12:32:56.000000000 +0100
  50094. @@ -0,0 +1,17 @@
  50095. +/*
  50096. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  50097. + *
  50098. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  50099. + */
  50100. +
  50101. +#include <features.h>
  50102. +#include <errno.h>
  50103. +#include <sys/types.h>
  50104. +#include <sys/syscall.h>
  50105. +
  50106. +extern long syscall(long int sysnum, long a, long b, long c, long d, long e, long f);
  50107. +
  50108. +long syscall(long int sysnum, long a, long b, long c, long d, long e, long f)
  50109. +{
  50110. + return INLINE_SYSCALL_NCS(sysnum, 6, a, b, c, d, e, f);
  50111. +}
  50112. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/__syscall_error.c uClibc/libc/sysdeps/linux/arc/__syscall_error.c
  50113. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  50114. +++ uClibc/libc/sysdeps/linux/arc/__syscall_error.c 2014-02-03 12:32:56.000000000 +0100
  50115. @@ -0,0 +1,15 @@
  50116. +/* Wrapper for setting errno.
  50117. + *
  50118. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  50119. + *
  50120. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  50121. + */
  50122. +
  50123. +#include <errno.h>
  50124. +#include <sys/syscall.h>
  50125. +
  50126. +int __syscall_error(int err_no)
  50127. +{
  50128. + __set_errno(-err_no);
  50129. + return -1;
  50130. +}
  50131. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sysdep.h uClibc/libc/sysdeps/linux/arc/sysdep.h
  50132. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  50133. +++ uClibc/libc/sysdeps/linux/arc/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  50134. @@ -0,0 +1,22 @@
  50135. +#ifndef _LINUX_ARC_SYSDEP_H
  50136. +#define _LINUX_ARC_SYSDEP_H 1
  50137. +
  50138. +#include <features.h>
  50139. +#include <libc-internal.h>
  50140. +
  50141. +#ifdef __ASSEMBLER__
  50142. +
  50143. +#define ENTRY(nm) \
  50144. + .text ` \
  50145. + .align 4 ` \
  50146. + .globl nm ` \
  50147. + .type nm,@function ` \
  50148. +nm:
  50149. +
  50150. +#define END(name) .size name,.-name
  50151. +
  50152. +#endif /* __ASSEMBLER __*/
  50153. +
  50154. +#include <common/sysdep.h>
  50155. +
  50156. +#endif
  50157. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/vfork.S uClibc/libc/sysdeps/linux/arc/vfork.S
  50158. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/vfork.S 1970-01-01 01:00:00.000000000 +0100
  50159. +++ uClibc/libc/sysdeps/linux/arc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  50160. @@ -0,0 +1,29 @@
  50161. +/*
  50162. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  50163. + *
  50164. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  50165. + */
  50166. +
  50167. +#include <sys/syscall.h>
  50168. +#include <sysdep.h>
  50169. +
  50170. +/* No legacy syscall ABI means NR_vfork is not available at all, use clone */
  50171. +#define _SIGNAL_H
  50172. +#include <bits/signum.h> /* For SIGCHLD */
  50173. +
  50174. +#define CLONE_VM 0x00000100
  50175. +#define CLONE_VFORK 0x00004000
  50176. +#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD)
  50177. +
  50178. +ENTRY(vfork)
  50179. + mov r0, CLONE_FLAGS_FOR_VFORK
  50180. + mov_s r1, sp
  50181. + mov r8, __NR_clone
  50182. + ARC_TRAP_INSN
  50183. +
  50184. + cmp r0, 0
  50185. + jge [blink] ; pid >=0 return, else detour via tailcall to errno
  50186. +
  50187. + b __syscall_error
  50188. +END(vfork)
  50189. +libc_hidden_def(vfork)
  50190. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/xstatconv.c uClibc/libc/sysdeps/linux/arc/xstatconv.c
  50191. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/xstatconv.c 1970-01-01 01:00:00.000000000 +0100
  50192. +++ uClibc/libc/sysdeps/linux/arc/xstatconv.c 2014-02-03 12:32:56.000000000 +0100
  50193. @@ -0,0 +1 @@
  50194. +/* We don't need any of this. */
  50195. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_assert.c uClibc/libc/sysdeps/linux/arm/aeabi_assert.c
  50196. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_assert.c 2012-05-15 09:20:09.000000000 +0200
  50197. +++ uClibc/libc/sysdeps/linux/arm/aeabi_assert.c 2014-02-03 12:32:56.000000000 +0100
  50198. @@ -12,16 +12,15 @@
  50199. Lesser General Public License for more details.
  50200. You should have received a copy of the GNU Lesser General Public
  50201. - License along with the GNU C Library; if not, write to the Free
  50202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50203. - 02111-1307 USA. */
  50204. + License along with the GNU C Library; if not, see
  50205. + <http://www.gnu.org/licenses/>. */
  50206. #undef NDEBUG
  50207. #include <assert.h>
  50208. #include <stdlib.h>
  50209. -void __aeabi_assert(const char *assertion, const char *file, unsigned int line);
  50210. +void __aeabi_assert(const char *assertion, const char *file, unsigned int line) attribute_noreturn;
  50211. void __aeabi_assert(const char *assertion, const char *file, unsigned int line)
  50212. {
  50213. __assert (assertion, file, line, NULL);
  50214. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_atexit.c uClibc/libc/sysdeps/linux/arm/aeabi_atexit.c
  50215. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_atexit.c 2012-05-15 09:20:09.000000000 +0200
  50216. +++ uClibc/libc/sysdeps/linux/arm/aeabi_atexit.c 2014-02-03 12:32:56.000000000 +0100
  50217. @@ -12,9 +12,8 @@
  50218. Lesser General Public License for more details.
  50219. You should have received a copy of the GNU Lesser General Public
  50220. - License along with the GNU C Library; if not, write to the Free
  50221. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50222. - 02111-1307 USA. */
  50223. + License along with the GNU C Library; if not, see
  50224. + <http://www.gnu.org/licenses/>. */
  50225. #include <stdlib.h>
  50226. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_errno_addr.c uClibc/libc/sysdeps/linux/arm/aeabi_errno_addr.c
  50227. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_errno_addr.c 2012-05-15 09:20:09.000000000 +0200
  50228. +++ uClibc/libc/sysdeps/linux/arm/aeabi_errno_addr.c 2014-02-03 12:32:56.000000000 +0100
  50229. @@ -12,9 +12,8 @@
  50230. Lesser General Public License for more details.
  50231. You should have received a copy of the GNU Lesser General Public
  50232. - License along with the GNU C Library; if not, write to the Free
  50233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50234. - 02111-1307 USA. */
  50235. + License along with the GNU C Library; if not, see
  50236. + <http://www.gnu.org/licenses/>. */
  50237. #include <errno.h>
  50238. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_lcsts.c uClibc/libc/sysdeps/linux/arm/aeabi_lcsts.c
  50239. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_lcsts.c 2012-05-15 09:20:09.000000000 +0200
  50240. +++ uClibc/libc/sysdeps/linux/arm/aeabi_lcsts.c 2014-02-03 12:32:56.000000000 +0100
  50241. @@ -30,9 +30,8 @@
  50242. Lesser General Public License for more details.
  50243. You should have received a copy of the GNU Lesser General Public
  50244. - License along with the GNU C Library; if not, write to the Free
  50245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50246. - 02111-1307 USA. */
  50247. + License along with the GNU C Library; if not, see
  50248. + <http://www.gnu.org/licenses/>. */
  50249. /* The ARM EABI requires that we provide ISO compile-time constants as
  50250. link-time constants. Some portable applications may reference these. */
  50251. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_localeconv.c uClibc/libc/sysdeps/linux/arm/aeabi_localeconv.c
  50252. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_localeconv.c 2012-05-15 09:20:09.000000000 +0200
  50253. +++ uClibc/libc/sysdeps/linux/arm/aeabi_localeconv.c 2014-02-03 12:32:56.000000000 +0100
  50254. @@ -12,9 +12,8 @@
  50255. Lesser General Public License for more details.
  50256. You should have received a copy of the GNU Lesser General Public
  50257. - License along with the GNU C Library; if not, write to the Free
  50258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50259. - 02111-1307 USA. */
  50260. + License along with the GNU C Library; if not, see
  50261. + <http://www.gnu.org/licenses/>. */
  50262. #include <locale.h>
  50263. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_math.c uClibc/libc/sysdeps/linux/arm/aeabi_math.c
  50264. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_math.c 2012-05-15 09:20:09.000000000 +0200
  50265. +++ uClibc/libc/sysdeps/linux/arm/aeabi_math.c 2014-02-03 12:32:56.000000000 +0100
  50266. @@ -29,9 +29,8 @@
  50267. Lesser General Public License for more details.
  50268. You should have received a copy of the GNU Lesser General Public
  50269. - License along with the GNU C Library; if not, write to the Free
  50270. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50271. - 02111-1307 USA. */
  50272. + License along with the GNU C Library; if not, see
  50273. + <http://www.gnu.org/licenses/>. */
  50274. #include <math.h>
  50275. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c uClibc/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c
  50276. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c 2012-05-15 09:20:09.000000000 +0200
  50277. +++ uClibc/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c 2014-02-03 12:32:56.000000000 +0100
  50278. @@ -12,16 +12,15 @@
  50279. Lesser General Public License for more details.
  50280. You should have received a copy of the GNU Lesser General Public
  50281. - License along with the GNU C Library; if not, write to the Free
  50282. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50283. - 02111-1307 USA. */
  50284. + License along with the GNU C Library; if not, see
  50285. + <http://www.gnu.org/licenses/>. */
  50286. #include <langinfo.h>
  50287. #include <locale.h>
  50288. #include <stdlib.h>
  50289. -int
  50290. -__aeabi_MB_CUR_MAX (void)
  50291. +int __aeabi_MB_CUR_MAX (void);
  50292. +int __aeabi_MB_CUR_MAX (void)
  50293. {
  50294. return MB_CUR_MAX;
  50295. }
  50296. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memclr.c uClibc/libc/sysdeps/linux/arm/aeabi_memclr.c
  50297. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memclr.c 2012-05-15 09:20:09.000000000 +0200
  50298. +++ uClibc/libc/sysdeps/linux/arm/aeabi_memclr.c 2014-02-03 12:32:56.000000000 +0100
  50299. @@ -12,9 +12,8 @@
  50300. Lesser General Public License for more details.
  50301. You should have received a copy of the GNU Lesser General Public
  50302. - License along with the GNU C Library; if not, write to the Free
  50303. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50304. - 02111-1307 USA. */
  50305. + License along with the GNU C Library; if not, see
  50306. + <http://www.gnu.org/licenses/>. */
  50307. #include <string.h>
  50308. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memcpy.c uClibc/libc/sysdeps/linux/arm/aeabi_memcpy.c
  50309. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memcpy.c 2012-05-15 09:20:09.000000000 +0200
  50310. +++ uClibc/libc/sysdeps/linux/arm/aeabi_memcpy.c 2014-02-03 12:32:56.000000000 +0100
  50311. @@ -12,9 +12,8 @@
  50312. Lesser General Public License for more details.
  50313. You should have received a copy of the GNU Lesser General Public
  50314. - License along with the GNU C Library; if not, write to the Free
  50315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50316. - 02111-1307 USA. */
  50317. + License along with the GNU C Library; if not, see
  50318. + <http://www.gnu.org/licenses/>. */
  50319. #include <string.h>
  50320. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memmove.c uClibc/libc/sysdeps/linux/arm/aeabi_memmove.c
  50321. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memmove.c 2012-05-15 09:20:09.000000000 +0200
  50322. +++ uClibc/libc/sysdeps/linux/arm/aeabi_memmove.c 2014-02-03 12:32:56.000000000 +0100
  50323. @@ -12,9 +12,8 @@
  50324. Lesser General Public License for more details.
  50325. You should have received a copy of the GNU Lesser General Public
  50326. - License along with the GNU C Library; if not, write to the Free
  50327. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50328. - 02111-1307 USA. */
  50329. + License along with the GNU C Library; if not, see
  50330. + <http://www.gnu.org/licenses/>. */
  50331. #include <string.h>
  50332. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memset.c uClibc/libc/sysdeps/linux/arm/aeabi_memset.c
  50333. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memset.c 2012-05-15 09:20:09.000000000 +0200
  50334. +++ uClibc/libc/sysdeps/linux/arm/aeabi_memset.c 2014-02-03 12:32:56.000000000 +0100
  50335. @@ -12,9 +12,8 @@
  50336. Lesser General Public License for more details.
  50337. You should have received a copy of the GNU Lesser General Public
  50338. - License along with the GNU C Library; if not, write to the Free
  50339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50340. - 02111-1307 USA. */
  50341. + License along with the GNU C Library; if not, see
  50342. + <http://www.gnu.org/licenses/>. */
  50343. #include <string.h>
  50344. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_sighandlers.S uClibc/libc/sysdeps/linux/arm/aeabi_sighandlers.S
  50345. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_sighandlers.S 2012-05-15 09:20:09.000000000 +0200
  50346. +++ uClibc/libc/sysdeps/linux/arm/aeabi_sighandlers.S 2014-02-03 12:32:56.000000000 +0100
  50347. @@ -30,9 +30,8 @@
  50348. Lesser General Public License for more details.
  50349. You should have received a copy of the GNU Lesser General Public
  50350. - License along with the GNU C Library; if not, write to the Free
  50351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50352. - 02111-1307 USA. */
  50353. + License along with the GNU C Library; if not, see
  50354. + <http://www.gnu.org/licenses/>. */
  50355. /* The ARM EABI defines these as "functions". */
  50356. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c uClibc/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c
  50357. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c 2012-05-15 09:20:09.000000000 +0200
  50358. +++ uClibc/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c 2014-02-03 12:32:56.000000000 +0100
  50359. @@ -12,9 +12,8 @@
  50360. Lesser General Public License for more details.
  50361. You should have received a copy of the GNU Lesser General Public
  50362. - License along with the GNU C Library; if not, write to the Free
  50363. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50364. - 02111-1307 USA. */
  50365. + License along with the GNU C Library; if not, see
  50366. + <http://www.gnu.org/licenses/>. */
  50367. /* Because some objects in ld.so and libc.so are built with
  50368. -fexceptions, we end up with references to this personality
  50369. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/arm_asm.h uClibc/libc/sysdeps/linux/arm/bits/arm_asm.h
  50370. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/arm_asm.h 2012-05-15 09:20:09.000000000 +0200
  50371. +++ uClibc/libc/sysdeps/linux/arm/bits/arm_asm.h 2014-02-03 12:32:56.000000000 +0100
  50372. @@ -3,8 +3,10 @@
  50373. #define _ARM_ASM_H
  50374. #ifdef __thumb2__
  50375. +# ifdef __ASSEMBLER__
  50376. .thumb
  50377. .syntax unified
  50378. +# endif /* __ASSEMBLER__ */
  50379. #define IT(t, cond) i##t cond
  50380. #else
  50381. /* XXX: This can be removed if/when we require an assembler that supports
  50382. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/armsigctx.h uClibc/libc/sysdeps/linux/arm/bits/armsigctx.h
  50383. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/armsigctx.h 2012-05-15 09:20:09.000000000 +0200
  50384. +++ uClibc/libc/sysdeps/linux/arm/bits/armsigctx.h 2014-02-03 12:32:56.000000000 +0100
  50385. @@ -13,9 +13,8 @@
  50386. Lesser General Public License for more details.
  50387. You should have received a copy of the GNU Lesser General Public
  50388. - License along with the GNU C Library; if not, write to the Free
  50389. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50390. - 02111-1307 USA. */
  50391. + License along with the GNU C Library; if not, see
  50392. + <http://www.gnu.org/licenses/>. */
  50393. /* The format of struct sigcontext changed between 2.0 and 2.1 kernels.
  50394. Fortunately 2.0 puts a magic number in the first word and this is not
  50395. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/atomic.h uClibc/libc/sysdeps/linux/arm/bits/atomic.h
  50396. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  50397. +++ uClibc/libc/sysdeps/linux/arm/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  50398. @@ -12,9 +12,8 @@
  50399. Lesser General Public License for more details.
  50400. You should have received a copy of the GNU Lesser General Public
  50401. - License along with the GNU C Library; if not, write to the Free
  50402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50403. - 02111-1307 USA. */
  50404. + License along with the GNU C Library; if not, see
  50405. + <http://www.gnu.org/licenses/>. */
  50406. #if defined __thumb__ && !defined __thumb2__
  50407. #include_next <common/bits/atomic.h>
  50408. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fcntl.h uClibc/libc/sysdeps/linux/arm/bits/fcntl.h
  50409. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  50410. +++ uClibc/libc/sysdeps/linux/arm/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  50411. @@ -14,9 +14,8 @@
  50412. Lesser General Public License for more details.
  50413. You should have received a copy of the GNU Lesser General Public
  50414. - License along with the GNU C Library; if not, write to the Free
  50415. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50416. - 02111-1307 USA. */
  50417. + License along with the GNU C Library; if not, see
  50418. + <http://www.gnu.org/licenses/>. */
  50419. #ifndef _FCNTL_H
  50420. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  50421. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fenv.h uClibc/libc/sysdeps/linux/arm/bits/fenv.h
  50422. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  50423. +++ uClibc/libc/sysdeps/linux/arm/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  50424. @@ -12,9 +12,8 @@
  50425. Lesser General Public License for more details.
  50426. You should have received a copy of the GNU Lesser General Public
  50427. - License along with the GNU C Library; if not, write to the Free
  50428. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50429. - 02111-1307 USA. */
  50430. + License along with the GNU C Library; if not, see
  50431. + <http://www.gnu.org/licenses/>. */
  50432. #ifndef _FENV_H
  50433. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  50434. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/huge_val.h uClibc/libc/sysdeps/linux/arm/bits/huge_val.h
  50435. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  50436. +++ uClibc/libc/sysdeps/linux/arm/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  50437. @@ -16,9 +16,8 @@
  50438. Lesser General Public License for more details.
  50439. You should have received a copy of the GNU Lesser General Public
  50440. - License along with the GNU C Library; if not, write to the Free
  50441. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50442. - 02111-1307 USA. */
  50443. + License along with the GNU C Library; if not, see
  50444. + <http://www.gnu.org/licenses/>. */
  50445. #ifndef _MATH_H
  50446. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  50447. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/kernel_types.h uClibc/libc/sysdeps/linux/arm/bits/kernel_types.h
  50448. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  50449. +++ uClibc/libc/sysdeps/linux/arm/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  50450. @@ -32,6 +32,8 @@
  50451. typedef unsigned short __kernel_old_gid_t;
  50452. typedef long long __kernel_loff_t;
  50453. typedef __kernel_dev_t __kernel_old_dev_t;
  50454. +typedef long __kernel_long_t;
  50455. +typedef unsigned long __kernel_ulong_t;
  50456. typedef struct {
  50457. #ifdef __USE_ALL
  50458. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/mathdef.h uClibc/libc/sysdeps/linux/arm/bits/mathdef.h
  50459. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  50460. +++ uClibc/libc/sysdeps/linux/arm/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  50461. @@ -12,9 +12,8 @@
  50462. Lesser General Public License for more details.
  50463. You should have received a copy of the GNU Lesser General Public
  50464. - License along with the GNU C Library; if not, write to the Free
  50465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50466. - 02111-1307 USA. */
  50467. + License along with the GNU C Library; if not, see
  50468. + <http://www.gnu.org/licenses/>. */
  50469. #if !defined _MATH_H && !defined _COMPLEX_H
  50470. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  50471. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/setjmp.h uClibc/libc/sysdeps/linux/arm/bits/setjmp.h
  50472. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  50473. +++ uClibc/libc/sysdeps/linux/arm/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  50474. @@ -1,4 +1,4 @@
  50475. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  50476. +/* Copyright (C) 1997,1998,2005,2006 Free Software Foundation, Inc.
  50477. This file is part of the GNU C Library.
  50478. The GNU C Library is free software; you can redistribute it and/or
  50479. @@ -12,19 +12,18 @@
  50480. Lesser General Public License for more details.
  50481. You should have received a copy of the GNU Lesser General Public
  50482. - License along with the GNU C Library; if not, write to the Free
  50483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50484. - 02111-1307 USA. */
  50485. + License along with the GNU C Library; if not, see
  50486. + <http://www.gnu.org/licenses/>. */
  50487. /* Define the machine-dependent type `jmp_buf'. ARM version. */
  50488. +
  50489. #ifndef _BITS_SETJMP_H
  50490. -#define _BITS_SETJMP_H 1
  50491. +#define _BITS_SETJMP_H 1
  50492. #if !defined _SETJMP_H && !defined _PTHREAD_H
  50493. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  50494. #endif
  50495. -#ifndef _ASM
  50496. /* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not
  50497. saved. */
  50498. #ifdef __ARM_EABI__
  50499. @@ -38,15 +37,10 @@
  50500. #elif defined __MAVERICK__ || defined __IWMMXT__
  50501. typedef int __jmp_buf[34];
  50502. #else
  50503. +# ifdef __UCLIBC_HAS_FPU__
  50504. typedef int __jmp_buf[22];
  50505. +# else
  50506. +typedef int __jmp_buf[10];
  50507. +# endif
  50508. #endif
  50509. #endif
  50510. -
  50511. -#define __JMP_BUF_SP 8
  50512. -
  50513. -/* Test if longjmp to JMPBUF would unwind the frame
  50514. - containing a local variable at ADDRESS. */
  50515. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  50516. - ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  50517. -
  50518. -#endif /* bits/setjmp.h */
  50519. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/shm.h uClibc/libc/sysdeps/linux/arm/bits/shm.h
  50520. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  50521. +++ uClibc/libc/sysdeps/linux/arm/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  50522. @@ -12,9 +12,8 @@
  50523. Lesser General Public License for more details.
  50524. You should have received a copy of the GNU Lesser General Public
  50525. - License along with the GNU C Library; if not, write to the Free
  50526. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50527. - 02111-1307 USA. */
  50528. + License along with the GNU C Library; if not, see
  50529. + <http://www.gnu.org/licenses/>. */
  50530. #ifndef _SYS_SHM_H
  50531. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  50532. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/arm/bits/sigcontextinfo.h
  50533. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  50534. +++ uClibc/libc/sysdeps/linux/arm/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  50535. @@ -13,9 +13,8 @@
  50536. Lesser General Public License for more details.
  50537. You should have received a copy of the GNU Lesser General Public
  50538. - License along with the GNU C Library; if not, write to the Free
  50539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50540. - 02111-1307 USA. */
  50541. + License along with the GNU C Library; if not, see
  50542. + <http://www.gnu.org/licenses/>. */
  50543. #include <bits/armsigctx.h>
  50544. #include <linux/version.h>
  50545. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/stackinfo.h uClibc/libc/sysdeps/linux/arm/bits/stackinfo.h
  50546. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  50547. +++ uClibc/libc/sysdeps/linux/arm/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  50548. @@ -12,9 +12,8 @@
  50549. Lesser General Public License for more details.
  50550. You should have received a copy of the GNU Lesser General Public
  50551. - License along with the GNU C Library; if not, write to the Free
  50552. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50553. - 02111-1307 USA. */
  50554. + License along with the GNU C Library; if not, see
  50555. + <http://www.gnu.org/licenses/>. */
  50556. /* This file contains a bit of information about the stack allocation
  50557. of the processor. */
  50558. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
  50559. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  50560. +++ uClibc/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  50561. @@ -11,11 +11,11 @@
  50562. /* can your target use syscall6() for mmap ? */
  50563. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  50564. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  50565. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  50566. #ifdef __ARM_EABI__
  50567. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  50568. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  50569. #else
  50570. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  50571. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  50572. #endif
  50573. /* does your target have a broken create_module() ? */
  50574. @@ -48,4 +48,15 @@
  50575. /* only weird assemblers generally need this */
  50576. #undef __UCLIBC_ASM_LINE_SEP__
  50577. +#ifdef __GNUC__
  50578. +# define __need_uClibc_config_h
  50579. +# include <bits/uClibc_config.h>
  50580. +# undef __need_uClibc_config_h
  50581. +# if defined __CONFIG_ARM_EABI__ && !defined __ARM_EABI__
  50582. +# error Your toolchain does not support EABI
  50583. +# elif !defined __CONFIG_ARM_EABI__ && defined __ARM_EABI__
  50584. +# error Your toolchain was built for EABI, but you have chosen OABI
  50585. +# endif
  50586. +#endif
  50587. +
  50588. #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  50589. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/wordsize.h uClibc/libc/sysdeps/linux/arm/bits/wordsize.h
  50590. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  50591. +++ uClibc/libc/sysdeps/linux/arm/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  50592. @@ -12,8 +12,7 @@
  50593. Lesser General Public License for more details.
  50594. You should have received a copy of the GNU Lesser General Public
  50595. - License along with the GNU C Library; if not, write to the Free
  50596. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50597. - 02111-1307 USA. */
  50598. + License along with the GNU C Library; if not, see
  50599. + <http://www.gnu.org/licenses/>. */
  50600. #define __WORDSIZE 32
  50601. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/brk.c uClibc/libc/sysdeps/linux/arm/brk.c
  50602. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/brk.c 2012-05-15 09:20:09.000000000 +0200
  50603. +++ uClibc/libc/sysdeps/linux/arm/brk.c 2014-02-03 12:32:56.000000000 +0100
  50604. @@ -13,9 +13,8 @@
  50605. Lesser General Public License for more details.
  50606. You should have received a copy of the GNU Lesser General Public
  50607. - License along with the GNU C Library; if not, write to the Free
  50608. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50609. - 02111-1307 USA. */
  50610. + License along with the GNU C Library; if not, see
  50611. + <http://www.gnu.org/licenses/>. */
  50612. #include <errno.h>
  50613. #include <unistd.h>
  50614. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-_setjmp.S uClibc/libc/sysdeps/linux/arm/bsd-_setjmp.S
  50615. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  50616. +++ uClibc/libc/sysdeps/linux/arm/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  50617. @@ -13,9 +13,8 @@
  50618. Lesser General Public License for more details.
  50619. You should have received a copy of the GNU Lesser General Public
  50620. - License along with the GNU C Library; if not, write to the Free
  50621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50622. - 02111-1307 USA. */
  50623. + License along with the GNU C Library; if not, see
  50624. + <http://www.gnu.org/licenses/>. */
  50625. #include <bits/arm_asm.h>
  50626. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-setjmp.S uClibc/libc/sysdeps/linux/arm/bsd-setjmp.S
  50627. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  50628. +++ uClibc/libc/sysdeps/linux/arm/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  50629. @@ -13,9 +13,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. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/clone.S uClibc/libc/sysdeps/linux/arm/clone.S
  50639. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/clone.S 2012-05-15 09:20:09.000000000 +0200
  50640. +++ uClibc/libc/sysdeps/linux/arm/clone.S 2014-02-03 12:32:56.000000000 +0100
  50641. @@ -13,9 +13,8 @@
  50642. Lesser General Public License for more details.
  50643. You should have received a copy of the GNU Lesser General Public
  50644. - License along with the GNU C Library; if not, write to the Free
  50645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50646. - 02111-1307 USA. */
  50647. + License along with the GNU C Library; if not, see
  50648. + <http://www.gnu.org/licenses/>. */
  50649. /* clone() is even more special than fork() as it mucks with stacks
  50650. and invokes a function in the right context after its all over. */
  50651. @@ -111,8 +110,8 @@
  50652. ldr r4, [sp, #12]
  50653. DO_CALL (clone)
  50654. movs a1, a1
  50655. - blt __error
  50656. ldmnefd sp!, {r4}
  50657. + blt __error
  50658. IT(t, ne)
  50659. #if defined(__USE_BX__)
  50660. bxne lr
  50661. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/crt1.S uClibc/libc/sysdeps/linux/arm/crt1.S
  50662. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/crt1.S 2012-05-15 09:20:09.000000000 +0200
  50663. +++ uClibc/libc/sysdeps/linux/arm/crt1.S 2014-02-03 12:32:56.000000000 +0100
  50664. @@ -31,9 +31,8 @@
  50665. Lesser General Public License for more details.
  50666. You should have received a copy of the GNU Lesser General Public
  50667. - License along with the GNU C Library; if not, write to the Free
  50668. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50669. - 02111-1307 USA. */
  50670. + License along with the GNU C Library; if not, see
  50671. + <http://www.gnu.org/licenses/>. */
  50672. /* This is the canonical entry point, usually the first thing in the text
  50673. segment.
  50674. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/find_exidx.c uClibc/libc/sysdeps/linux/arm/find_exidx.c
  50675. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/find_exidx.c 2012-05-15 09:20:09.000000000 +0200
  50676. +++ uClibc/libc/sysdeps/linux/arm/find_exidx.c 2014-02-03 12:32:56.000000000 +0100
  50677. @@ -12,9 +12,8 @@
  50678. Lesser General Public License for more details.
  50679. You should have received a copy of the GNU Lesser General Public
  50680. - License along with the GNU C Library; if not, write to the Free
  50681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50682. - 02111-1307 USA. */
  50683. + License along with the GNU C Library; if not, see
  50684. + <http://www.gnu.org/licenses/>. */
  50685. #include <link.h>
  50686. #include <unwind.h>
  50687. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/fpu_control.h uClibc/libc/sysdeps/linux/arm/fpu_control.h
  50688. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  50689. +++ uClibc/libc/sysdeps/linux/arm/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  50690. @@ -13,9 +13,8 @@
  50691. Lesser General Public License for more details.
  50692. You should have received a copy of the GNU Lesser General Public
  50693. - License along with the GNU C Library; if not, write to the Free
  50694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50695. - 02111-1307 USA. */
  50696. + License along with the GNU C Library; if not, see
  50697. + <http://www.gnu.org/licenses/>. */
  50698. #ifndef _FPU_CONTROL_H
  50699. #define _FPU_CONTROL_H
  50700. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/getcontext.S uClibc/libc/sysdeps/linux/arm/getcontext.S
  50701. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  50702. +++ uClibc/libc/sysdeps/linux/arm/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  50703. @@ -0,0 +1,80 @@
  50704. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  50705. + This file is part of the GNU C Library.
  50706. +
  50707. + The GNU C Library is free software; you can redistribute it and/or
  50708. + modify it under the terms of the GNU Lesser General Public
  50709. + License as published by the Free Software Foundation; either
  50710. + version 2.1 of the License, or (at your option) any later version.
  50711. +
  50712. + The GNU C Library is distributed in the hope that it will be useful,
  50713. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50714. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50715. + Lesser General Public License for more details.
  50716. +
  50717. + You should have received a copy of the GNU Lesser General Public
  50718. + License along with the GNU C Library; if not, see
  50719. + <http://www.gnu.org/licenses/>. */
  50720. +
  50721. +#include <sysdep.h>
  50722. +
  50723. +#include "ucontext_i.h"
  50724. +
  50725. + .syntax unified
  50726. + .text
  50727. +
  50728. +/* int getcontext (ucontext_t *ucp) */
  50729. +
  50730. +ENTRY(__getcontext)
  50731. + /* No need to save r0-r3, d0-d7, or d16-d31. */
  50732. + add r1, r0, #MCONTEXT_ARM_R4
  50733. + stmia r1, {r4-r11}
  50734. +
  50735. + /* Save R13 separately as Thumb can't STM it. */
  50736. + str r13, [r0, #MCONTEXT_ARM_SP]
  50737. + str r14, [r0, #MCONTEXT_ARM_LR]
  50738. + /* Return to LR */
  50739. + str r14, [r0, #MCONTEXT_ARM_PC]
  50740. + /* Return zero */
  50741. + mov r2, #0
  50742. + str r2, [r0, #MCONTEXT_ARM_R0]
  50743. +
  50744. + /* Save ucontext_t * across the next call. */
  50745. + mov r4, r0
  50746. +
  50747. + /* __sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */
  50748. + mov r0, #SIG_BLOCK
  50749. + mov r1, #0
  50750. + add r2, r4, #UCONTEXT_SIGMASK
  50751. + bl PLTJMP(sigprocmask)
  50752. +
  50753. +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  50754. +# ifdef __VFP_FP__
  50755. + /* Store the VFP registers. */
  50756. + /* Following instruction is fstmiax ip!, {d8-d15}. */
  50757. + stc p11, cr8, [r0], #64
  50758. + /* Store the floating-point status register. */
  50759. + /* Following instruction is fmrx r2, fpscr. */
  50760. + mrc p10, 7, r1, cr1, cr0, 0
  50761. + str r1, [r0], #4
  50762. +# endif
  50763. +#endif
  50764. +#ifdef __IWMMXT__
  50765. + /* Save the call-preserved iWMMXt registers. */
  50766. + /* Following instructions are wstrd wr10, [r0], #8 (etc.) */
  50767. + stcl p1, cr10, [r0], #8
  50768. + stcl p1, cr11, [r0], #8
  50769. + stcl p1, cr12, [r0], #8
  50770. + stcl p1, cr13, [r0], #8
  50771. + stcl p1, cr14, [r0], #8
  50772. + stcl p1, cr15, [r0], #8
  50773. +#endif
  50774. +
  50775. + /* Restore the clobbered R4 and LR. */
  50776. + ldr r14, [r4, #MCONTEXT_ARM_LR]
  50777. + ldr r4, [r4, #MCONTEXT_ARM_R4]
  50778. +
  50779. + mov r0, #0
  50780. + DO_RET(r14)
  50781. +
  50782. +END(__getcontext)
  50783. +weak_alias(__getcontext, getcontext)
  50784. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/ioperm.c uClibc/libc/sysdeps/linux/arm/ioperm.c
  50785. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/ioperm.c 2012-05-15 09:20:09.000000000 +0200
  50786. +++ uClibc/libc/sysdeps/linux/arm/ioperm.c 2014-02-03 12:32:56.000000000 +0100
  50787. @@ -14,9 +14,8 @@
  50788. Lesser General Public License for more details.
  50789. You should have received a copy of the GNU Lesser General Public
  50790. - License along with the GNU C Library; if not, write to the Free
  50791. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50792. - 02111-1307 USA. */
  50793. + License along with the GNU C Library; if not, see
  50794. + <http://www.gnu.org/licenses/>. */
  50795. /* I/O port access on the ARM is something of a fiction. What we do is to
  50796. map an appropriate area of /dev/mem into user space so that a program
  50797. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/iopl.c uClibc/libc/sysdeps/linux/arm/iopl.c
  50798. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/iopl.c 2012-05-15 09:20:09.000000000 +0200
  50799. +++ uClibc/libc/sysdeps/linux/arm/iopl.c 2014-02-03 12:32:56.000000000 +0100
  50800. @@ -14,9 +14,8 @@
  50801. Lesser General Public License for more details.
  50802. You should have received a copy of the GNU Lesser General Public
  50803. - License along with the GNU C Library; if not, write to the Free
  50804. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50805. - 02111-1307 USA. */
  50806. + License along with the GNU C Library; if not, see
  50807. + <http://www.gnu.org/licenses/>. */
  50808. #include <sys/io.h>
  50809. #include <errno.h>
  50810. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/arm/jmpbuf-offsets.h
  50811. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  50812. +++ uClibc/libc/sysdeps/linux/arm/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  50813. @@ -0,0 +1,23 @@
  50814. +/* Private macros for accessing __jmp_buf contents. ARM version.
  50815. + Copyright (C) 2006 Free Software Foundation, Inc.
  50816. + This file is part of the GNU C Library.
  50817. +
  50818. + The GNU C Library is free software; you can redistribute it and/or
  50819. + modify it under the terms of the GNU Lesser General Public
  50820. + License as published by the Free Software Foundation; either
  50821. + version 2.1 of the License, or (at your option) any later version.
  50822. +
  50823. + The GNU C Library is distributed in the hope that it will be useful,
  50824. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50825. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50826. + Lesser General Public License for more details.
  50827. +
  50828. + You should have received a copy of the GNU Lesser General Public
  50829. + License along with the GNU C Library; if not, see
  50830. + <http://www.gnu.org/licenses/>. */
  50831. +
  50832. +#ifdef __UCLIBC_HAS_FPU__
  50833. +#define __JMP_BUF_SP 20
  50834. +#else
  50835. +#define __JMP_BUF_SP 8
  50836. +#endif
  50837. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/arm/jmpbuf-unwind.h
  50838. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  50839. +++ uClibc/libc/sysdeps/linux/arm/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  50840. @@ -0,0 +1,29 @@
  50841. +/*
  50842. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  50843. + *
  50844. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50845. + */
  50846. +#include <setjmp.h>
  50847. +#include <jmpbuf-offsets.h>
  50848. +
  50849. +/* Test if longjmp to JMPBUF would unwind the frame
  50850. + containing a local variable at ADDRESS. */
  50851. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  50852. + ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  50853. +
  50854. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  50855. +#include <stdint.h>
  50856. +#include <unwind.h>
  50857. +
  50858. +/* Test if longjmp to JMPBUF would unwind the frame
  50859. + containing a local variable at ADDRESS. */
  50860. +#undef _JMPBUF_UNWINDS
  50861. +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
  50862. + ((void *) (address) < (void *) demangle (jmpbuf[__JMP_BUF_SP]))
  50863. +
  50864. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  50865. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  50866. +
  50867. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  50868. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[__JMP_BUF_SP] - (_adj))
  50869. +#endif
  50870. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/__longjmp.S uClibc/libc/sysdeps/linux/arm/__longjmp.S
  50871. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  50872. +++ uClibc/libc/sysdeps/linux/arm/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  50873. @@ -13,16 +13,11 @@
  50874. Lesser General Public License for more details.
  50875. You should have received a copy of the GNU Lesser General Public
  50876. - License along with the GNU C Library; if not, write to the Free
  50877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50878. - 02111-1307 USA. */
  50879. + License along with the GNU C Library; if not, see
  50880. + <http://www.gnu.org/licenses/>. */
  50881. #include <features.h>
  50882. #include <bits/arm_asm.h>
  50883. -#define _SETJMP_H
  50884. -#define _ASM
  50885. -#include <bits/setjmp.h>
  50886. -
  50887. .global __longjmp
  50888. .type __longjmp,%function
  50889. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/makecontext.c uClibc/libc/sysdeps/linux/arm/makecontext.c
  50890. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/makecontext.c 1970-01-01 01:00:00.000000000 +0100
  50891. +++ uClibc/libc/sysdeps/linux/arm/makecontext.c 2014-02-03 12:32:56.000000000 +0100
  50892. @@ -0,0 +1,73 @@
  50893. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  50894. + This file is part of the GNU C Library.
  50895. +
  50896. + The GNU C Library is free software; you can redistribute it and/or
  50897. + modify it under the terms of the GNU Lesser General Public
  50898. + License as published by the Free Software Foundation; either
  50899. + version 2.1 of the License, or (at your option) any later version.
  50900. +
  50901. + The GNU C Library is distributed in the hope that it will be useful,
  50902. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50903. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50904. + Lesser General Public License for more details.
  50905. +
  50906. + You should have received a copy of the GNU Lesser General Public
  50907. + License along with the GNU C Library; if not, see
  50908. + <http://www.gnu.org/licenses/>. */
  50909. +
  50910. +#include <stdarg.h>
  50911. +#include <ucontext.h>
  50912. +
  50913. +/* Number of arguments that go in registers. */
  50914. +#define NREG_ARGS 4
  50915. +
  50916. +/* Take a context previously prepared via getcontext() and set to
  50917. + call func() with the given int only args. */
  50918. +void
  50919. +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
  50920. +{
  50921. + extern void __startcontext (void);
  50922. + unsigned long *funcstack;
  50923. + va_list vl;
  50924. + unsigned long *regptr;
  50925. + unsigned int reg;
  50926. + int misaligned;
  50927. +
  50928. + /* Start at the top of stack. */
  50929. + funcstack = (unsigned long *) (ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
  50930. +
  50931. + /* Ensure the stack stays eight byte aligned. */
  50932. + misaligned = ((unsigned long) funcstack & 4) != 0;
  50933. +
  50934. + if ((argc > NREG_ARGS) && (argc & 1) != 0)
  50935. + misaligned = !misaligned;
  50936. +
  50937. + if (misaligned)
  50938. + funcstack -= 1;
  50939. +
  50940. + va_start (vl, argc);
  50941. +
  50942. + /* Reserve space for the on-stack arguments. */
  50943. + if (argc > NREG_ARGS)
  50944. + funcstack -= (argc - NREG_ARGS);
  50945. +
  50946. + ucp->uc_mcontext.arm_sp = (unsigned long) funcstack;
  50947. + ucp->uc_mcontext.arm_pc = (unsigned long) func;
  50948. +
  50949. + /* Exit to startcontext() with the next context in R4 */
  50950. + ucp->uc_mcontext.arm_r4 = (unsigned long) ucp->uc_link;
  50951. + ucp->uc_mcontext.arm_lr = (unsigned long) __startcontext;
  50952. +
  50953. + /* The first four arguments go into registers. */
  50954. + regptr = &(ucp->uc_mcontext.arm_r0);
  50955. +
  50956. + for (reg = 0; (reg < argc) && (reg < NREG_ARGS); reg++)
  50957. + *regptr++ = va_arg (vl, unsigned long);
  50958. +
  50959. + /* And the remainder on the stack. */
  50960. + for (; reg < argc; reg++)
  50961. + *funcstack++ = va_arg (vl, unsigned long);
  50962. +
  50963. + va_end (vl);
  50964. +}
  50965. +weak_alias (__makecontext, makecontext)
  50966. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/Makefile.arch uClibc/libc/sysdeps/linux/arm/Makefile.arch
  50967. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  50968. +++ uClibc/libc/sysdeps/linux/arm/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  50969. @@ -5,42 +5,40 @@
  50970. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50971. #
  50972. -CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c sigaction.c
  50973. +CSRC-y := brk.c ioperm.c iopl.c __syscall_error.c sigaction.c
  50974. -SSRC := \
  50975. +SSRC-y := \
  50976. __longjmp.S setjmp.S bsd-setjmp.S \
  50977. - bsd-_setjmp.S sigrestorer.S mmap64.S \
  50978. + bsd-_setjmp.S sigrestorer.S \
  50979. vfork.S clone.S
  50980. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  50981. -SSRC += libc-aeabi_read_tp.S libc-thumb_atomics.S
  50982. -endif
  50983. -
  50984. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  50985. -CSRC += posix_fadvise.c posix_fadvise64.c
  50986. -endif
  50987. +SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
  50988. +SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-aeabi_read_tp.S libc-thumb_atomics.S
  50989. +CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
  50990. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += getcontext.S setcontext.S swapcontext.S
  50991. # Is our compiler set up for EABI ?
  50992. -IS_EABI:=$(shell $(CC) $(CFLAGS) -x c - -E -dM </dev/null 2>/dev/null \
  50993. - | grep __ARM_EABI__ 2>&1 >/dev/null && echo 'y' \
  50994. - )
  50995. +CC_IS_EABI_CHECK = $(filter-out -include libc-symbols.h,$(CC) $(CFLAGS))
  50996. +$(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'))
  50997. -ifeq ($(IS_EABI),y)
  50998. -CSRC += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
  50999. +CSRC-$(IS_EABI) += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
  51000. aeabi_localeconv.c aeabi_memclr.c aeabi_memcpy.c \
  51001. aeabi_memmove.c aeabi_memset.c find_exidx.c
  51002. -SSRC += syscall-eabi.S
  51003. -ARCH_OBJ_FILTEROUT := syscall.c
  51004. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  51005. -CSRC += aeabi_mb_cur_max.c
  51006. -endif
  51007. -else
  51008. -CSRC += syscall.c
  51009. -endif
  51010. -
  51011. +SSRC-$(IS_EABI) += syscall-eabi.S
  51012. +CSRC-$(if $(IS_EABI),,y)) += syscall.c
  51013. +ARCH_OBJ_FILTEROUT-$(IS_EABI) := syscall.c
  51014. ifeq ($(IS_EABI),y)
  51015. -libc-static-y += $(ARCH_OUT)/aeabi_lcsts.o $(ARCH_OUT)/aeabi_math.o \
  51016. - $(ARCH_OUT)/aeabi_sighandlers.o
  51017. -libc-nonshared-y += $(ARCH_OUT)/aeabi_lcsts.os $(ARCH_OUT)/aeabi_math.os \
  51018. - $(ARCH_OUT)/aeabi_sighandlers.os $(ARCH_OUT)/aeabi_unwind_cpp_pr1.o
  51019. +CSRC-$(UCLIBC_HAS_WCHAR) += aeabi_mb_cur_max.c
  51020. endif
  51021. +
  51022. +libc-static-$(IS_EABI) += $(addprefix $(ARCH_OUT)/, \
  51023. + aeabi_lcsts.o \
  51024. + aeabi_math.o \
  51025. + aeabi_sighandlers.o \
  51026. + )
  51027. +libc-nonshared-$(IS_EABI) += $(addprefix $(ARCH_OUT)/, \
  51028. + aeabi_lcsts.os \
  51029. + aeabi_math.os \
  51030. + aeabi_sighandlers.os \
  51031. + aeabi_unwind_cpp_pr1.o \
  51032. + )
  51033. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap64.S uClibc/libc/sysdeps/linux/arm/mmap64.S
  51034. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap64.S 2012-05-15 09:20:09.000000000 +0200
  51035. +++ uClibc/libc/sysdeps/linux/arm/mmap64.S 2014-02-03 12:32:56.000000000 +0100
  51036. @@ -12,17 +12,16 @@
  51037. Lesser General Public License for more details.
  51038. You should have received a copy of the GNU Lesser General Public
  51039. - License along with the GNU C Library; if not, write to the Free
  51040. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51041. - 02111-1307 USA. */
  51042. + License along with the GNU C Library; if not, see
  51043. + <http://www.gnu.org/licenses/>. */
  51044. -#include <features.h>
  51045. +#include <_lfs_64.h>
  51046. #define _ERRNO_H
  51047. #include <bits/errno.h>
  51048. #include <sys/syscall.h>
  51049. #include <bits/arm_asm.h>
  51050. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_mmap2
  51051. +#ifdef __NR_mmap2
  51052. /* The mmap2 system call takes six arguments, all in registers. */
  51053. .text
  51054. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap.c uClibc/libc/sysdeps/linux/arm/mmap.c
  51055. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap.c 2012-05-15 09:20:09.000000000 +0200
  51056. +++ uClibc/libc/sysdeps/linux/arm/mmap.c 1970-01-01 01:00:00.000000000 +0100
  51057. @@ -1,74 +0,0 @@
  51058. -/* vi: set sw=4 ts=4: */
  51059. -/*
  51060. - * _mmap() for uClibc
  51061. - *
  51062. - * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
  51063. - *
  51064. - * GNU Library General Public License (LGPL) version 2 or later.
  51065. - */
  51066. -#include <errno.h>
  51067. -#include <unistd.h>
  51068. -#include <sys/mman.h>
  51069. -#include <sys/syscall.h>
  51070. -
  51071. -#if defined (__NR_mmap) || defined (__NR_mmap2)
  51072. -
  51073. -libc_hidden_proto(mmap)
  51074. -#if defined (__UCLIBC_MMAP_HAS_6_ARGS__) && defined (__NR_mmap)
  51075. -#define __NR__mmap __NR_mmap
  51076. -static __inline__ _syscall6 (__ptr_t, _mmap, __ptr_t, addr, size_t, len,
  51077. - int, prot, int, flags, int, fd, __off_t, offset)
  51078. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  51079. - int flags, int fd, __off_t offset)
  51080. -{
  51081. - return (__ptr_t) _mmap (addr, len, prot, flags,
  51082. - fd, offset);
  51083. -}
  51084. -
  51085. -#elif defined (__NR_mmap2)
  51086. -#define __NR__mmap __NR_mmap2
  51087. -
  51088. -#ifndef MMAP2_PAGE_SHIFT
  51089. -# define MMAP2_PAGE_SHIFT 12
  51090. -#endif
  51091. -
  51092. -static __inline__ _syscall6 (__ptr_t, _mmap, __ptr_t, addr, size_t, len,
  51093. - int, prot, int, flags, int, fd, __off_t, offset);
  51094. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  51095. - int flags, int fd, __off_t offset)
  51096. -{
  51097. - /* check if offset is page aligned */
  51098. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
  51099. - {
  51100. - __set_errno(EINVAL);
  51101. - return MAP_FAILED;
  51102. - }
  51103. -#ifdef __USE_FILE_OFFSET64
  51104. - return (__ptr_t) _mmap (addr, len, prot, flags,
  51105. - fd, ((__u_quad_t) offset >> MMAP2_PAGE_SHIFT));
  51106. -#else
  51107. - return (__ptr_t) _mmap (addr, len, prot, flags,
  51108. - fd, ((__u_long) offset >> MMAP2_PAGE_SHIFT));
  51109. -#endif
  51110. -}
  51111. -#elif defined (__NR_mmap)
  51112. -# define __NR__mmap __NR_mmap
  51113. -static __inline__ _syscall1(__ptr_t, _mmap, unsigned long *, buffer)
  51114. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  51115. - int flags, int fd, __off_t offset)
  51116. -{
  51117. - unsigned long buffer[6];
  51118. -
  51119. - buffer[0] = (unsigned long) addr;
  51120. - buffer[1] = (unsigned long) len;
  51121. - buffer[2] = (unsigned long) prot;
  51122. - buffer[3] = (unsigned long) flags;
  51123. - buffer[4] = (unsigned long) fd;
  51124. - buffer[5] = (unsigned long) offset;
  51125. - return (__ptr_t) _mmap(buffer);
  51126. -}
  51127. -#endif
  51128. -libc_hidden_def (mmap)
  51129. -#else
  51130. -# error "Your architecture doesn't seem to provide mmap() !?"
  51131. -#endif
  51132. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise64.c uClibc/libc/sysdeps/linux/arm/posix_fadvise64.c
  51133. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  51134. +++ uClibc/libc/sysdeps/linux/arm/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  51135. @@ -1,59 +0,0 @@
  51136. -/* vi: set sw=4 ts=4: */
  51137. -/*
  51138. - * posix_fadvise64() for ARM uClibc
  51139. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  51140. - *
  51141. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  51142. - *
  51143. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51144. - */
  51145. -
  51146. -#include <features.h>
  51147. -#include <unistd.h>
  51148. -#include <errno.h>
  51149. -#include <endian.h>
  51150. -#include <stdint.h>
  51151. -#include <sys/types.h>
  51152. -#include <sys/syscall.h>
  51153. -#include <fcntl.h>
  51154. -
  51155. -#ifdef __UCLIBC_HAS_LFS__
  51156. -
  51157. -#if defined __NR_arm_fadvise64_64
  51158. -
  51159. -/* Was named __libc_posix_fadvise64 for some inexplicable reason.
  51160. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  51161. -** so it cannot be compat with anything.
  51162. -**
  51163. -** Remove this comment and one at the end after 0.9.31
  51164. -*/
  51165. -
  51166. -/* This is for the ARM version of fadvise64_64 which swaps the params
  51167. - * about to avoid having ABI compat issues
  51168. - */
  51169. -#define __NR___syscall_arm_fadvise64_64 __NR_arm_fadvise64_64
  51170. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  51171. -{
  51172. - INTERNAL_SYSCALL_DECL (err);
  51173. - int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise,
  51174. - __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
  51175. - __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
  51176. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  51177. - return 0;
  51178. - if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
  51179. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  51180. - return 0;
  51181. -}
  51182. -
  51183. -/* weak_alias(__libc_posix_fadvise64, posix_fadvise64); */
  51184. -
  51185. -#elif defined __UCLIBC_HAS_STUBS__
  51186. -
  51187. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  51188. -{
  51189. - return ENOSYS;
  51190. -}
  51191. -
  51192. -#endif
  51193. -
  51194. -#endif
  51195. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise.c uClibc/libc/sysdeps/linux/arm/posix_fadvise.c
  51196. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  51197. +++ uClibc/libc/sysdeps/linux/arm/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  51198. @@ -1,49 +0,0 @@
  51199. -/* vi: set sw=4 ts=4: */
  51200. -/*
  51201. - * posix_fadvise() for ARM uClibc
  51202. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  51203. - *
  51204. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  51205. - *
  51206. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51207. - */
  51208. -#include <sys/syscall.h>
  51209. -#include <fcntl.h>
  51210. -
  51211. -#if defined __NR_arm_fadvise64_64
  51212. -
  51213. -#define HIGH_BITS(x) (sizeof(x) > 4 ? (x) >> 32 : 0)
  51214. -
  51215. -/* Was named __libc_posix_fadvise for some inexplicable reason.
  51216. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  51217. -** so it cannot be compat with anything.
  51218. -**
  51219. -** Remove this comment and one at the end after 0.9.31
  51220. -*/
  51221. -
  51222. -/* This is for the ARM version of fadvise64_64 which swaps the params
  51223. - * about to avoid having ABI compat issues
  51224. - */
  51225. -#define __NR___syscall_arm_fadvise64_64 __NR_arm_fadvise64_64
  51226. -int posix_fadvise(int fd, off_t offset, off_t len, int advise)
  51227. -{
  51228. - INTERNAL_SYSCALL_DECL (err);
  51229. - int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise,
  51230. - __LONG_LONG_PAIR (HIGH_BITS(offset), (long)offset),
  51231. - __LONG_LONG_PAIR (HIGH_BITS(len), (long)len));
  51232. -
  51233. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  51234. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  51235. - return 0;
  51236. -}
  51237. -
  51238. -/* weak_alias(__libc_posix_fadvise, posix_fadvise); */
  51239. -
  51240. -#elif defined __UCLIBC_HAS_STUBS__
  51241. -
  51242. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  51243. -{
  51244. - return ENOSYS;
  51245. -}
  51246. -
  51247. -#endif
  51248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/setcontext.S uClibc/libc/sysdeps/linux/arm/setcontext.S
  51249. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  51250. +++ uClibc/libc/sysdeps/linux/arm/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  51251. @@ -0,0 +1,76 @@
  51252. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  51253. + This file is part of the GNU C Library.
  51254. +
  51255. + The GNU C Library is free software; you can redistribute it and/or
  51256. + modify it under the terms of the GNU Lesser General Public
  51257. + License as published by the Free Software Foundation; either
  51258. + version 2.1 of the License, or (at your option) any later version.
  51259. +
  51260. + The GNU C Library is distributed in the hope that it will be useful,
  51261. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  51262. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  51263. + Lesser General Public License for more details.
  51264. +
  51265. + You should have received a copy of the GNU Lesser General Public
  51266. + License along with the GNU C Library; if not, see
  51267. + <http://www.gnu.org/licenses/>. */
  51268. +
  51269. +#include <sysdep.h>
  51270. +
  51271. +#include "ucontext_i.h"
  51272. +
  51273. + .syntax unified
  51274. + .text
  51275. +
  51276. +/* int setcontext (const ucontext_t *ucp) */
  51277. +
  51278. +ENTRY(__setcontext)
  51279. + mov r4, r0
  51280. +
  51281. +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  51282. +# ifdef __VFP_FP__
  51283. + /* Following instruction is vldmia r0!, {d8-d15}. */
  51284. + ldc p11, cr8, [r0], #64
  51285. + /* Restore the floating-point status register. */
  51286. + ldr r1, [r0], #4
  51287. + /* Following instruction is fmxr fpscr, r1. */
  51288. + mcr p10, 7, r1, cr1, cr0, 0
  51289. +# endif
  51290. +#endif
  51291. +
  51292. +#ifdef __IWMMXT__
  51293. + /* Restore the call-preserved iWMMXt registers. */
  51294. + /* Following instructions are wldrd wr10, [r0], #8 (etc.) */
  51295. + ldcl p1, cr10, [r0], #8
  51296. + ldcl p1, cr11, [r0], #8
  51297. + ldcl p1, cr12, [r0], #8
  51298. + ldcl p1, cr13, [r0], #8
  51299. + ldcl p1, cr14, [r0], #8
  51300. + ldcl p1, cr15, [r0], #8
  51301. +#endif
  51302. +
  51303. + /* Now bring back the signal status. */
  51304. + mov r0, #SIG_SETMASK
  51305. + add r1, r4, #UCONTEXT_SIGMASK
  51306. + mov r2, #0
  51307. + bl PLTJMP(sigprocmask)
  51308. +
  51309. + /* Loading r0-r3 makes makecontext easier. */
  51310. + add r14, r4, #MCONTEXT_ARM_R0
  51311. + ldmia r14, {r0-r11}
  51312. + ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)]
  51313. + add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0)
  51314. + ldmia r14, {r14, pc}
  51315. +
  51316. +END(setcontext)
  51317. +weak_alias(__setcontext, setcontext)
  51318. +
  51319. + /* Called when a makecontext() context returns. Start the
  51320. + context in R4 or fall through to exit(). */
  51321. +ENTRY(__startcontext)
  51322. + movs r0, r4
  51323. + bne PLTJMP(__setcontext)
  51324. +
  51325. + @ New context was 0 - exit
  51326. + b PLTJMP(_exit)
  51327. +END(__startcontext)
  51328. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/setjmp.S uClibc/libc/sysdeps/linux/arm/setjmp.S
  51329. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  51330. +++ uClibc/libc/sysdeps/linux/arm/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  51331. @@ -13,9 +13,8 @@
  51332. Lesser General Public License for more details.
  51333. You should have received a copy of the GNU Lesser General Public
  51334. - License along with the GNU C Library; if not, write to the Free
  51335. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51336. - 02111-1307 USA. */
  51337. + License along with the GNU C Library; if not, see
  51338. + <http://www.gnu.org/licenses/>. */
  51339. #include <features.h>
  51340. #include <bits/arm_asm.h>
  51341. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigaction.c uClibc/libc/sysdeps/linux/arm/sigaction.c
  51342. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  51343. +++ uClibc/libc/sysdeps/linux/arm/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  51344. @@ -12,9 +12,8 @@
  51345. Lesser General Public License for more details.
  51346. You should have received a copy of the GNU Lesser General Public
  51347. - License along with the GNU C Library; if not, write to the Free
  51348. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51349. - 02111-1307 USA.
  51350. + License along with the GNU C Library; if not, see
  51351. + <http://www.gnu.org/licenses/>.
  51352. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  51353. */
  51354. @@ -29,8 +28,6 @@
  51355. extern void __default_sa_restorer(void);
  51356. extern void __default_rt_sa_restorer(void);
  51357. -extern __typeof(sigaction) __libc_sigaction;
  51358. -
  51359. /* When RT signals are in use we need to use a different return stub. */
  51360. #ifdef __NR_rt_sigreturn
  51361. #define choose_restorer(flags) \
  51362. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigrestorer.S uClibc/libc/sysdeps/linux/arm/sigrestorer.S
  51363. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigrestorer.S 2012-05-15 09:20:09.000000000 +0200
  51364. +++ uClibc/libc/sysdeps/linux/arm/sigrestorer.S 2014-02-03 12:32:56.000000000 +0100
  51365. @@ -12,9 +12,8 @@
  51366. Lesser General Public License for more details.
  51367. You should have received a copy of the GNU Lesser General Public
  51368. - License along with the GNU C Library; if not, write to the Free
  51369. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51370. - 02111-1307 USA. */
  51371. + License along with the GNU C Library; if not, see
  51372. + <http://www.gnu.org/licenses/>. */
  51373. #include <bits/arm_asm.h>
  51374. #include <sys/syscall.h>
  51375. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/swapcontext.S uClibc/libc/sysdeps/linux/arm/swapcontext.S
  51376. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  51377. +++ uClibc/libc/sysdeps/linux/arm/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  51378. @@ -0,0 +1,63 @@
  51379. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  51380. + This file is part of the GNU C Library.
  51381. +
  51382. + The GNU C Library is free software; you can redistribute it and/or
  51383. + modify it under the terms of the GNU Lesser General Public
  51384. + License as published by the Free Software Foundation; either
  51385. + version 2.1 of the License, or (at your option) any later version.
  51386. +
  51387. + The GNU C Library is distributed in the hope that it will be useful,
  51388. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  51389. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  51390. + Lesser General Public License for more details.
  51391. +
  51392. + You should have received a copy of the GNU Lesser General Public
  51393. + License along with the GNU C Library; if not, see
  51394. + <http://www.gnu.org/licenses/>. */
  51395. +
  51396. +#include <sysdep.h>
  51397. +
  51398. +#include "ucontext_i.h"
  51399. +
  51400. + .syntax unified
  51401. + .text
  51402. +
  51403. +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
  51404. +
  51405. +ENTRY(swapcontext)
  51406. +
  51407. + /* Have getcontext() do most of the work then fix up
  51408. + LR afterwards. Save R3 to keep the stack aligned. */
  51409. + push {r0,r1,r3,r14}
  51410. + cfi_adjust_cfa_offset (16)
  51411. + cfi_rel_offset (r0,0)
  51412. + cfi_rel_offset (r1,4)
  51413. + cfi_rel_offset (r3,8)
  51414. + cfi_rel_offset (r14,12)
  51415. +
  51416. + bl __getcontext
  51417. + mov r4, r0
  51418. +
  51419. + pop {r0,r1,r3,r14}
  51420. + cfi_adjust_cfa_offset (-16)
  51421. + cfi_restore (r0)
  51422. + cfi_restore (r1)
  51423. + cfi_restore (r3)
  51424. + cfi_restore (r14)
  51425. +
  51426. + /* Exit if getcontext() failed. */
  51427. + cmp r4, #0
  51428. + itt ne
  51429. + movne r0, r4
  51430. + RETINSTR(ne, r14)
  51431. +
  51432. + /* Fix up LR and the PC. */
  51433. + str r13,[r0, #MCONTEXT_ARM_SP]
  51434. + str r14,[r0, #MCONTEXT_ARM_LR]
  51435. + str r14,[r0, #MCONTEXT_ARM_PC]
  51436. +
  51437. + /* And swap using swapcontext(). */
  51438. + mov r0, r1
  51439. + b __setcontext
  51440. +
  51441. +END(swapcontext)
  51442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/elf.h uClibc/libc/sysdeps/linux/arm/sys/elf.h
  51443. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  51444. +++ uClibc/libc/sysdeps/linux/arm/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  51445. @@ -12,9 +12,8 @@
  51446. Lesser General Public License for more details.
  51447. You should have received a copy of the GNU Lesser General Public
  51448. - License along with the GNU C Library; if not, write to the Free
  51449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51450. - 02111-1307 USA. */
  51451. + License along with the GNU C Library; if not, see
  51452. + <http://www.gnu.org/licenses/>. */
  51453. #ifndef _SYS_ELF_H
  51454. #define _SYS_ELF_H 1
  51455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/io.h uClibc/libc/sysdeps/linux/arm/sys/io.h
  51456. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  51457. +++ uClibc/libc/sysdeps/linux/arm/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  51458. @@ -12,9 +12,8 @@
  51459. Lesser General Public License for more details.
  51460. You should have received a copy of the GNU Lesser General Public
  51461. - License along with the GNU C Library; if not, write to the Free
  51462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51463. - 02111-1307 USA. */
  51464. + License along with the GNU C Library; if not, see
  51465. + <http://www.gnu.org/licenses/>. */
  51466. #ifndef _SYS_IO_H
  51467. @@ -23,6 +22,7 @@
  51468. __BEGIN_DECLS
  51469. +#if defined __UCLIBC_LINUX_SPECIFIC__
  51470. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  51471. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  51472. permission off for that range. This call requires root privileges. */
  51473. @@ -34,6 +34,7 @@
  51474. permission to access any I/O port is granted. This call requires
  51475. root privileges. */
  51476. extern int iopl (int __level) __THROW;
  51477. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  51478. /* The functions that actually perform reads and writes. */
  51479. extern unsigned char inb (unsigned long int port) __THROW;
  51480. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/procfs.h uClibc/libc/sysdeps/linux/arm/sys/procfs.h
  51481. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  51482. +++ uClibc/libc/sysdeps/linux/arm/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  51483. @@ -12,9 +12,8 @@
  51484. Lesser General Public License for more details.
  51485. You should have received a copy of the GNU Lesser General Public
  51486. - License along with the GNU C Library; if not, write to the Free
  51487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51488. - 02111-1307 USA. */
  51489. + License along with the GNU C Library; if not, see
  51490. + <http://www.gnu.org/licenses/>. */
  51491. #ifndef _SYS_PROCFS_H
  51492. #define _SYS_PROCFS_H 1
  51493. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/ucontext.h uClibc/libc/sysdeps/linux/arm/sys/ucontext.h
  51494. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  51495. +++ uClibc/libc/sysdeps/linux/arm/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  51496. @@ -12,9 +12,8 @@
  51497. Lesser General Public License for more details.
  51498. You should have received a copy of the GNU Lesser General Public
  51499. - License along with the GNU C Library; if not, write to the Free
  51500. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51501. - 02111-1307 USA. */
  51502. + License along with the GNU C Library; if not, see
  51503. + <http://www.gnu.org/licenses/>. */
  51504. /* System V/ARM ABI compliant context switching support. */
  51505. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/user.h uClibc/libc/sysdeps/linux/arm/sys/user.h
  51506. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  51507. +++ uClibc/libc/sysdeps/linux/arm/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  51508. @@ -12,9 +12,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 _SYS_USER_H
  51517. #define _SYS_USER_H 1
  51518. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/syscall-eabi.S uClibc/libc/sysdeps/linux/arm/syscall-eabi.S
  51519. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/syscall-eabi.S 2012-05-15 09:20:09.000000000 +0200
  51520. +++ uClibc/libc/sysdeps/linux/arm/syscall-eabi.S 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. #include <sys/syscall.h>
  51530. #include <bits/arm_asm.h>
  51531. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sysdep.h uClibc/libc/sysdeps/linux/arm/sysdep.h
  51532. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  51533. +++ uClibc/libc/sysdeps/linux/arm/sysdep.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 _LINUX_ARM_SYSDEP_H
  51543. #define _LINUX_ARM_SYSDEP_H 1
  51544. @@ -157,6 +156,7 @@
  51545. #define PSEUDO_END_ERRVAL(name) \
  51546. END (name)
  51547. +#undef ret_ERRVAL
  51548. #define ret_ERRVAL PSEUDO_RET_NOERRNO
  51549. #if defined NOT_IN_libc
  51550. @@ -254,7 +254,7 @@
  51551. #undef INLINE_SYSCALL
  51552. #define INLINE_SYSCALL(name, nr, args...) \
  51553. ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args); \
  51554. - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ), 0)) \
  51555. + if (unlikely (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  51556. { \
  51557. __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  51558. _inline_sys_result = (unsigned int) -1; \
  51559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/ucontext_i.sym uClibc/libc/sysdeps/linux/arm/ucontext_i.sym
  51560. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  51561. +++ uClibc/libc/sysdeps/linux/arm/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  51562. @@ -0,0 +1,30 @@
  51563. +#include <inttypes.h>
  51564. +#include <signal.h>
  51565. +#include <stddef.h>
  51566. +#include <sys/ucontext.h>
  51567. +
  51568. +SIG_BLOCK
  51569. +SIG_SETMASK
  51570. +
  51571. +-- Offsets of the fields in the ucontext_t structure.
  51572. +#define ucontext(member) offsetof (ucontext_t, member)
  51573. +#define mcontext(member) ucontext (uc_mcontext.member)
  51574. +
  51575. +UCONTEXT_FLAGS ucontext (uc_flags)
  51576. +UCONTEXT_LINK ucontext (uc_link)
  51577. +UCONTEXT_STACK ucontext (uc_stack)
  51578. +UCONTEXT_MCONTEXT ucontext (uc_mcontext)
  51579. +UCONTEXT_SIGMASK ucontext (uc_sigmask)
  51580. +
  51581. +UCONTEXT_REGSPACE ucontext (uc_regspace)
  51582. +
  51583. +MCONTEXT_TRAP_NO mcontext (trap_no)
  51584. +MCONTEXT_ERROR_CODE mcontext (error_code)
  51585. +MCONTEXT_OLDMASK mcontext (oldmask)
  51586. +MCONTEXT_ARM_R0 mcontext (arm_r0)
  51587. +MCONTEXT_ARM_R4 mcontext (arm_r4)
  51588. +MCONTEXT_ARM_SP mcontext (arm_sp)
  51589. +MCONTEXT_ARM_LR mcontext (arm_lr)
  51590. +MCONTEXT_ARM_PC mcontext (arm_pc)
  51591. +MCONTEXT_ARM_CPSR mcontext (arm_cpsr)
  51592. +MCONTEXT_FAULT_ADDRESS mcontext (fault_address)
  51593. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/unwind.h uClibc/libc/sysdeps/linux/arm/unwind.h
  51594. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/unwind.h 2012-05-15 09:20:09.000000000 +0200
  51595. +++ uClibc/libc/sysdeps/linux/arm/unwind.h 2014-02-03 12:32:56.000000000 +0100
  51596. @@ -22,9 +22,8 @@
  51597. General Public License for more details.
  51598. You should have received a copy of the GNU General Public License
  51599. - along with this program; see the file COPYING. If not, write to
  51600. - the Free Software Foundation, 51 Franklin Street, Fifth Floor,
  51601. - Boston, MA 02110-1301, USA. */
  51602. + along with this program; see the file COPYING. If not, see
  51603. + <http://www.gnu.org/licenses/>. */
  51604. /* Language-independent unwinder header public defines. This contains both
  51605. ABI defined objects, and GNU support routines. */
  51606. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/vfork.S uClibc/libc/sysdeps/linux/arm/vfork.S
  51607. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  51608. +++ uClibc/libc/sysdeps/linux/arm/vfork.S 2014-02-03 12:32:56.000000000 +0100
  51609. @@ -104,5 +104,5 @@
  51610. .size __vfork,.-__vfork
  51611. weak_alias(__vfork,vfork)
  51612. -libc_hidden_weak(vfork)
  51613. +libc_hidden_def(vfork)
  51614. #endif
  51615. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/atomic.h uClibc/libc/sysdeps/linux/avr32/bits/atomic.h
  51616. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  51617. +++ uClibc/libc/sysdeps/linux/avr32/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  51618. @@ -28,6 +28,7 @@
  51619. #define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  51620. ({ \
  51621. + __uint32_t __result; \
  51622. __typeof__(*(mem)) __prev; \
  51623. __asm__ __volatile__( \
  51624. "/* __arch_compare_and_exchange_val_32_acq */\n" \
  51625. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/kernel_types.h uClibc/libc/sysdeps/linux/avr32/bits/kernel_types.h
  51626. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  51627. +++ uClibc/libc/sysdeps/linux/avr32/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  51628. @@ -39,6 +39,8 @@
  51629. typedef unsigned short __kernel_old_uid_t;
  51630. typedef unsigned short __kernel_old_gid_t;
  51631. typedef unsigned short __kernel_old_dev_t;
  51632. +typedef long __kernel_long_t;
  51633. +typedef unsigned long __kernel_ulong_t;
  51634. #ifdef __GNUC__
  51635. typedef long long __kernel_loff_t;
  51636. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/setjmp.h uClibc/libc/sysdeps/linux/avr32/bits/setjmp.h
  51637. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  51638. +++ uClibc/libc/sysdeps/linux/avr32/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  51639. @@ -12,19 +12,10 @@
  51640. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  51641. #endif
  51642. -#ifndef _ASM
  51643. /*
  51644. * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
  51645. * not saved.
  51646. */
  51647. typedef int __jmp_buf[11];
  51648. -#endif
  51649. -
  51650. -#define __JMP_BUF_SP 4
  51651. -
  51652. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  51653. - variable at ADDRESS. */
  51654. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51655. - ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
  51656. #endif /* _BITS_SETJMP_H */
  51657. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/stackinfo.h uClibc/libc/sysdeps/linux/avr32/bits/stackinfo.h
  51658. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  51659. +++ uClibc/libc/sysdeps/linux/avr32/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  51660. @@ -12,9 +12,8 @@
  51661. Lesser General Public License for more details.
  51662. You should have received a copy of the GNU Lesser General Public
  51663. - License along with the GNU C Library; if not, write to the Free
  51664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51665. - 02111-1307 USA. */
  51666. + License along with the GNU C Library; if not, see
  51667. + <http://www.gnu.org/licenses/>. */
  51668. /* This file contains a bit of information about the stack allocation
  51669. of the processor. */
  51670. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
  51671. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  51672. +++ uClibc/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  51673. @@ -12,8 +12,8 @@
  51674. /* can your target use syscall6() for mmap ? */
  51675. #define __UCLIBC_MMAP_HAS_6_ARGS__
  51676. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  51677. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  51678. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  51679. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  51680. /* does your target have a broken create_module() ? */
  51681. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  51682. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/avr32/jmpbuf-offsets.h
  51683. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  51684. +++ uClibc/libc/sysdeps/linux/avr32/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  51685. @@ -0,0 +1,9 @@
  51686. +/* Private macros for accessing __jmp_buf contents. avr32 version.
  51687. + * Copyright (C) 2004-2005 Atmel Corporation
  51688. + *
  51689. + * This file is subject to the terms and conditions of the GNU Lesser General
  51690. + * Public License. See the file "COPYING.LIB" in the main directory of this
  51691. + * archive for more details.
  51692. + */
  51693. +
  51694. +#define __JMP_BUF_SP 4
  51695. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/avr32/jmpbuf-unwind.h
  51696. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  51697. +++ uClibc/libc/sysdeps/linux/avr32/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  51698. @@ -0,0 +1,14 @@
  51699. +/*
  51700. + * Copyright (C) 2004-2005 Atmel Corporation
  51701. + *
  51702. + * This file is subject to the terms and conditions of the GNU Lesser General
  51703. + * Public License. See the file "COPYING.LIB" in the main directory of this
  51704. + * archive for more details.
  51705. + */
  51706. +#include <setjmp.h>
  51707. +#include <jmpbuf-offsets.h>
  51708. +
  51709. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  51710. + variable at ADDRESS. */
  51711. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51712. + ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
  51713. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile uClibc/libc/sysdeps/linux/avr32/Makefile
  51714. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile 2012-05-15 09:20:09.000000000 +0200
  51715. +++ uClibc/libc/sysdeps/linux/avr32/Makefile 2014-02-03 12:32:56.000000000 +0100
  51716. @@ -13,8 +13,7 @@
  51717. # details.
  51718. #
  51719. # You should have received a copy of the GNU Library General Public License
  51720. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  51721. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51722. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  51723. top_srcdir=../../../../
  51724. top_builddir=../../../../
  51725. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile.arch uClibc/libc/sysdeps/linux/avr32/Makefile.arch
  51726. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  51727. +++ uClibc/libc/sysdeps/linux/avr32/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  51728. @@ -5,7 +5,7 @@
  51729. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51730. #
  51731. -CSRC := brk.c clone.c mmap.c prctl.c sigaction.c
  51732. +CSRC-y := brk.c clone.c mmap.c prctl.c sigaction.c
  51733. -SSRC := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  51734. +SSRC-y := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  51735. sigrestorer.S syscall.S vfork.S
  51736. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/mmap.c uClibc/libc/sysdeps/linux/avr32/mmap.c
  51737. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/mmap.c 2012-05-15 09:20:09.000000000 +0200
  51738. +++ uClibc/libc/sysdeps/linux/avr32/mmap.c 2014-02-03 12:32:56.000000000 +0100
  51739. @@ -12,10 +12,10 @@
  51740. #include <sys/syscall.h>
  51741. -static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot,
  51742. - int, flags, int, fd, __off_t, pgoff)
  51743. +static __inline__ _syscall6(void *, mmap2, void *, addr, size_t, len, int, prot,
  51744. + int, flags, int, fd, __off_t, pgoff)
  51745. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  51746. +void *mmap(void *addr, size_t len, int prot, int flags, int fd, __off_t offset)
  51747. {
  51748. unsigned long page_size = sysconf(_SC_PAGESIZE);
  51749. unsigned long pgoff;
  51750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/setjmp.S uClibc/libc/sysdeps/linux/avr32/setjmp.S
  51751. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  51752. +++ uClibc/libc/sysdeps/linux/avr32/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  51753. @@ -5,9 +5,6 @@
  51754. * Public License. See the file "COPYING.LIB" in the main directory of this
  51755. * archive for more details.
  51756. */
  51757. -#define _SETJMP_H
  51758. -#define _ASM
  51759. -#include <bits/setjmp.h>
  51760. .text
  51761. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sigaction.c uClibc/libc/sysdeps/linux/avr32/sigaction.c
  51762. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  51763. +++ uClibc/libc/sysdeps/linux/avr32/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  51764. @@ -14,8 +14,6 @@
  51765. #define SA_RESTORER 0x04000000
  51766. extern void __default_rt_sa_restorer(void);
  51767. -extern __typeof(sigaction) __libc_sigaction;
  51768. -
  51769. /*
  51770. * If act is not NULL, change the action for sig to *act.
  51771. * If oact is not NULL, put the old action for sig in *oact.
  51772. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/elf.h uClibc/libc/sysdeps/linux/avr32/sys/elf.h
  51773. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  51774. +++ uClibc/libc/sysdeps/linux/avr32/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  51775. @@ -12,9 +12,8 @@
  51776. Lesser General Public License for more details.
  51777. You should have received a copy of the GNU Lesser General Public
  51778. - License along with the GNU C Library; if not, write to the Free
  51779. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51780. - 02111-1307 USA. */
  51781. + License along with the GNU C Library; if not, see
  51782. + <http://www.gnu.org/licenses/>. */
  51783. #ifndef _SYS_ELF_H
  51784. #define _SYS_ELF_H 1
  51785. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/procfs.h uClibc/libc/sysdeps/linux/avr32/sys/procfs.h
  51786. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  51787. +++ uClibc/libc/sysdeps/linux/avr32/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  51788. @@ -12,9 +12,8 @@
  51789. Lesser General Public License for more details.
  51790. You should have received a copy of the GNU Lesser General Public
  51791. - License along with the GNU C Library; if not, write to the Free
  51792. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51793. - 02111-1307 USA. */
  51794. + License along with the GNU C Library; if not, see
  51795. + <http://www.gnu.org/licenses/>. */
  51796. #ifndef _SYS_PROCFS_H
  51797. #define _SYS_PROCFS_H 1
  51798. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/ucontext.h uClibc/libc/sysdeps/linux/avr32/sys/ucontext.h
  51799. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  51800. +++ uClibc/libc/sysdeps/linux/avr32/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  51801. @@ -12,9 +12,8 @@
  51802. Lesser General Public License for more details.
  51803. You should have received a copy of the GNU Lesser General Public
  51804. - License along with the GNU C Library; if not, write to the Free
  51805. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51806. - 02111-1307 USA. */
  51807. + License along with the GNU C Library; if not, see
  51808. + <http://www.gnu.org/licenses/>. */
  51809. /* Linux/AVR32 ABI compliant context switching support. */
  51810. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/vfork.S uClibc/libc/sysdeps/linux/avr32/vfork.S
  51811. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  51812. +++ uClibc/libc/sysdeps/linux/avr32/vfork.S 2014-02-03 12:32:56.000000000 +0100
  51813. @@ -17,10 +17,10 @@
  51814. * Fortunately, the Linux kernel preserves LR across system calls.
  51815. */
  51816. -#include <features.h>
  51817. #include <sys/syscall.h>
  51818. .global __vfork
  51819. + .hidden __vfork
  51820. .type __vfork,@function
  51821. .align 1
  51822. __vfork:
  51823. @@ -55,4 +55,4 @@
  51824. .size __vfork, . - __vfork
  51825. weak_alias(__vfork,vfork)
  51826. -libc_hidden_weak(vfork)
  51827. +libc_hidden_def(vfork)
  51828. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/elf-fdpic.h uClibc/libc/sysdeps/linux/bfin/bits/elf-fdpic.h
  51829. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/elf-fdpic.h 2012-05-15 09:20:09.000000000 +0200
  51830. +++ uClibc/libc/sysdeps/linux/bfin/bits/elf-fdpic.h 2014-02-03 12:32:56.000000000 +0100
  51831. @@ -22,8 +22,7 @@
  51832. You should have received a copy of the GNU Lesser General Public
  51833. License along with the GNU C Library; see the file COPYING.LIB. If
  51834. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51835. -Cambridge, MA 02139, USA. */
  51836. +not, see <http://www.gnu.org/licenses/>. */
  51837. #ifndef _BITS_ELF_FDPIC_H
  51838. #define _BITS_ELF_FDPIC_H
  51839. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/fcntl.h uClibc/libc/sysdeps/linux/bfin/bits/fcntl.h
  51840. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  51841. +++ uClibc/libc/sysdeps/linux/bfin/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  51842. @@ -13,9 +13,8 @@
  51843. Lesser General Public License for more details.
  51844. You should have received a copy of the GNU Lesser General Public
  51845. - License along with the GNU C Library; if not, write to the Free
  51846. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51847. - 02111-1307 USA. */
  51848. + License along with the GNU C Library; if not, see
  51849. + <http://www.gnu.org/licenses/>. */
  51850. #ifndef _FCNTL_H
  51851. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  51852. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/huge_val.h uClibc/libc/sysdeps/linux/bfin/bits/huge_val.h
  51853. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  51854. +++ uClibc/libc/sysdeps/linux/bfin/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  51855. @@ -16,9 +16,8 @@
  51856. Lesser General Public License for more details.
  51857. You should have received a copy of the GNU Lesser General Public
  51858. - License along with the GNU C Library; if not, write to the Free
  51859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51860. - 02111-1307 USA. */
  51861. + License along with the GNU C Library; if not, see
  51862. + <http://www.gnu.org/licenses/>. */
  51863. #ifndef _MATH_H
  51864. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  51865. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/kernel_types.h uClibc/libc/sysdeps/linux/bfin/bits/kernel_types.h
  51866. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  51867. +++ uClibc/libc/sysdeps/linux/bfin/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  51868. @@ -32,6 +32,8 @@
  51869. typedef unsigned short __kernel_old_gid_t;
  51870. typedef long long __kernel_loff_t;
  51871. typedef __kernel_dev_t __kernel_old_dev_t;
  51872. +typedef long __kernel_long_t;
  51873. +typedef unsigned long __kernel_ulong_t;
  51874. typedef struct {
  51875. #ifdef __USE_ALL
  51876. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/setjmp.h uClibc/libc/sysdeps/linux/bfin/bits/setjmp.h
  51877. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  51878. +++ uClibc/libc/sysdeps/linux/bfin/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  51879. @@ -12,9 +12,8 @@
  51880. Lesser General Public License for more details.
  51881. You should have received a copy of the GNU Lesser General Public
  51882. - License along with the GNU C Library; if not, write to the Free
  51883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51884. - 02111-1307 USA. */
  51885. + License along with the GNU C Library; if not, see
  51886. + <http://www.gnu.org/licenses/>. */
  51887. /* Define the machine-dependent type `jmp_buf'. bfin version. Lineo, Inc. 2001*/
  51888. #ifndef _BITS_SETJMP_H
  51889. @@ -24,7 +23,6 @@
  51890. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  51891. #endif
  51892. -#ifndef _ASM
  51893. /* Jump buffer contains r7-r4, p5-p3, fp, sp and pc. Other registers are not saved. */
  51894. typedef struct
  51895. {
  51896. @@ -45,13 +43,4 @@
  51897. unsigned long pc;
  51898. }__jmp_buf[1];
  51899. -#endif
  51900. -
  51901. -#define __JMP_BUF_SP 8
  51902. -
  51903. -/* Test if longjmp to JMPBUF would unwind the frame
  51904. - containing a local variable at ADDRESS. */
  51905. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51906. - ((void *) (address) < (void *) (jmpbuf)->fp)
  51907. -
  51908. #endif /* bits/setjmp.h */
  51909. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h
  51910. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  51911. +++ uClibc/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  51912. @@ -13,9 +13,8 @@
  51913. Lesser General Public License for more details.
  51914. You should have received a copy of the GNU Lesser General Public
  51915. - License along with the GNU C Library; if not, write to the Free
  51916. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51917. - 02111-1307 USA. */
  51918. + License along with the GNU C Library; if not, see
  51919. + <http://www.gnu.org/licenses/>. */
  51920. #define SIGCONTEXT int _code, struct sigcontext *
  51921. #define SIGCONTEXT_EXTRA_ARGS _code,
  51922. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/stackinfo.h uClibc/libc/sysdeps/linux/bfin/bits/stackinfo.h
  51923. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  51924. +++ uClibc/libc/sysdeps/linux/bfin/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  51925. @@ -12,9 +12,8 @@
  51926. Lesser General Public License for more details.
  51927. You should have received a copy of the GNU Lesser General Public
  51928. - License along with the GNU C Library; if not, write to the Free
  51929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51930. - 02111-1307 USA. */
  51931. + License along with the GNU C Library; if not, see
  51932. + <http://www.gnu.org/licenses/>. */
  51933. /* This file contains a bit of information about the stack allocation
  51934. of the processor. */
  51935. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/typesizes.h uClibc/libc/sysdeps/linux/bfin/bits/typesizes.h
  51936. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  51937. +++ uClibc/libc/sysdeps/linux/bfin/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  51938. @@ -13,9 +13,8 @@
  51939. Lesser General Public License for more details.
  51940. You should have received a copy of the GNU Lesser General Public
  51941. - License along with the GNU C Library; if not, write to the Free
  51942. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51943. - 02111-1307 USA. */
  51944. + License along with the GNU C Library; if not, see
  51945. + <http://www.gnu.org/licenses/>. */
  51946. #ifndef _BITS_TYPES_H
  51947. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  51948. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
  51949. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  51950. +++ uClibc/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  51951. @@ -11,8 +11,8 @@
  51952. /* can your target use syscall6() for mmap ? */
  51953. #define __UCLIBC_MMAP_HAS_6_ARGS__
  51954. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  51955. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  51956. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  51957. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  51958. /* does your target have a broken create_module() ? */
  51959. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  51960. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/wordsize.h uClibc/libc/sysdeps/linux/bfin/bits/wordsize.h
  51961. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  51962. +++ uClibc/libc/sysdeps/linux/bfin/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  51963. @@ -12,8 +12,7 @@
  51964. Lesser General Public License for more details.
  51965. You should have received a copy of the GNU Lesser General Public
  51966. - License along with the GNU C Library; if not, write to the Free
  51967. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51968. - 02111-1307 USA. */
  51969. + License along with the GNU C Library; if not, see
  51970. + <http://www.gnu.org/licenses/>. */
  51971. #define __WORDSIZE 32
  51972. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/cacheflush.c uClibc/libc/sysdeps/linux/bfin/cacheflush.c
  51973. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  51974. +++ uClibc/libc/sysdeps/linux/bfin/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  51975. @@ -6,9 +6,10 @@
  51976. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51977. */
  51978. -#include <unistd.h>
  51979. -#include <errno.h>
  51980. #include <sys/syscall.h>
  51981. -#include <sys/cachectl.h>
  51982. -_syscall3 (int, cacheflush, void *, start, const int, nbytes, const int, flags)
  51983. +#ifdef __NR_cacheflush
  51984. +# include <sys/cachectl.h>
  51985. +
  51986. +_syscall3 (int, cacheflush, void *, addr, const int, nbytes, const int, flags)
  51987. +#endif
  51988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crt1.S uClibc/libc/sysdeps/linux/bfin/crt1.S
  51989. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crt1.S 2012-05-15 09:20:09.000000000 +0200
  51990. +++ uClibc/libc/sysdeps/linux/bfin/crt1.S 2014-02-03 12:32:56.000000000 +0100
  51991. @@ -14,8 +14,7 @@
  51992. You should have received a copy of the GNU Library General Public
  51993. License along with the GNU C Library; see the file COPYING.LIB. If
  51994. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51995. -Cambridge, MA 02139, USA. */
  51996. +not, see <http://www.gnu.org/licenses/>. */
  51997. /* When we enter this piece of code, the user stack looks like this:
  51998. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crti.S uClibc/libc/sysdeps/linux/bfin/crti.S
  51999. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crti.S 2012-05-15 09:20:09.000000000 +0200
  52000. +++ uClibc/libc/sysdeps/linux/bfin/crti.S 2014-02-03 12:32:56.000000000 +0100
  52001. @@ -16,9 +16,8 @@
  52002. GNU General Public License for more details.
  52003. You should have received a copy of the GNU General Public License
  52004. -along with GCC; see the file COPYING. If not, write to
  52005. -the Free Software Foundation, 59 Temple Place - Suite 330,
  52006. -Boston, MA 02111-1307, USA. */
  52007. +along with GCC; see the file COPYING. If not, see
  52008. +<http://www.gnu.org/licenses/>. */
  52009. /* As a special exception, if you link this library with files
  52010. compiled with GCC to produce an executable, this does not cause
  52011. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtn.S uClibc/libc/sysdeps/linux/bfin/crtn.S
  52012. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtn.S 2012-05-15 09:20:09.000000000 +0200
  52013. +++ uClibc/libc/sysdeps/linux/bfin/crtn.S 2014-02-03 12:32:56.000000000 +0100
  52014. @@ -16,9 +16,8 @@
  52015. GNU General Public License for more details.
  52016. You should have received a copy of the GNU General Public License
  52017. -along with GCC; see the file COPYING. If not, write to
  52018. -the Free Software Foundation, 59 Temple Place - Suite 330,
  52019. -Boston, MA 02111-1307, USA. */
  52020. +along with GCC; see the file COPYING. If not, see
  52021. +<http://www.gnu.org/licenses/>. */
  52022. /* As a special exception, if you link this library with files
  52023. compiled with GCC to produce an executable, this does not cause
  52024. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtreloc.c uClibc/libc/sysdeps/linux/bfin/crtreloc.c
  52025. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtreloc.c 2012-05-15 09:20:09.000000000 +0200
  52026. +++ uClibc/libc/sysdeps/linux/bfin/crtreloc.c 2014-02-03 12:32:56.000000000 +0100
  52027. @@ -23,8 +23,7 @@
  52028. You should have received a copy of the GNU Lesser General Public
  52029. License along with the GNU C Library; see the file COPYING.LIB. If
  52030. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  52031. -Cambridge, MA 02139, USA. */
  52032. +not, see <http://www.gnu.org/licenses/>. */
  52033. #ifdef __BFIN_FDPIC__
  52034. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/bfin/jmpbuf-offsets.h
  52035. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  52036. +++ uClibc/libc/sysdeps/linux/bfin/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  52037. @@ -0,0 +1,8 @@
  52038. +/* Private macros for accessing __jmp_buf contents. BFIN version. */
  52039. +/*
  52040. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  52041. + *
  52042. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  52043. + */
  52044. +
  52045. +#define __JMP_BUF_SP 8
  52046. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/bfin/jmpbuf-unwind.h
  52047. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  52048. +++ uClibc/libc/sysdeps/linux/bfin/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  52049. @@ -0,0 +1,11 @@
  52050. +/*
  52051. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  52052. + *
  52053. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  52054. + */
  52055. +#include <setjmp.h>
  52056. +
  52057. +/* Test if longjmp to JMPBUF would unwind the frame
  52058. + containing a local variable at ADDRESS. */
  52059. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  52060. + ((void *) (address) < (void *) (jmpbuf)->fp)
  52061. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/Makefile.arch uClibc/libc/sysdeps/linux/bfin/Makefile.arch
  52062. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  52063. +++ uClibc/libc/sysdeps/linux/bfin/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  52064. @@ -5,9 +5,11 @@
  52065. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  52066. #
  52067. -CSRC := bsdsetjmp.c clone.c \
  52068. - sram-alloc.c sram-free.c dma-memcpy.c cacheflush.c
  52069. +CSRC-y := bsdsetjmp.c clone.c \
  52070. + sram-alloc.c sram-free.c dma-memcpy.c
  52071. -SSRC := __longjmp.S setjmp.S bsd-_setjmp.S
  52072. +SSRC-y := __longjmp.S setjmp.S bsd-_setjmp.S
  52073. +
  52074. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c
  52075. ARCH_HEADERS := bfin_fixed_code.h bfin_l1layout.h bfin_sram.h
  52076. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/cachectl.h uClibc/libc/sysdeps/linux/bfin/sys/cachectl.h
  52077. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/cachectl.h 2012-05-15 09:20:09.000000000 +0200
  52078. +++ uClibc/libc/sysdeps/linux/bfin/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  52079. @@ -18,7 +18,7 @@
  52080. __BEGIN_DECLS
  52081. -extern int cacheflush (void *addr, __const int nbytes, __const int flags);
  52082. +extern int cacheflush (void *addr, const int nbytes, const int flags);
  52083. __END_DECLS
  52084. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/elf.h uClibc/libc/sysdeps/linux/bfin/sys/elf.h
  52085. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  52086. +++ uClibc/libc/sysdeps/linux/bfin/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  52087. @@ -12,9 +12,8 @@
  52088. Lesser General Public License for more details.
  52089. You should have received a copy of the GNU Lesser General Public
  52090. - License along with the GNU C Library; if not, write to the Free
  52091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52092. - 02111-1307 USA. */
  52093. + License along with the GNU C Library; if not, see
  52094. + <http://www.gnu.org/licenses/>. */
  52095. #ifndef _SYS_ELF_H
  52096. #define _SYS_ELF_H 1
  52097. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/io.h uClibc/libc/sysdeps/linux/bfin/sys/io.h
  52098. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  52099. +++ uClibc/libc/sysdeps/linux/bfin/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  52100. @@ -12,9 +12,8 @@
  52101. Lesser General Public License for more details.
  52102. You should have received a copy of the GNU Lesser General Public
  52103. - License along with the GNU C Library; if not, write to the Free
  52104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52105. - 02111-1307 USA. */
  52106. + License along with the GNU C Library; if not, see
  52107. + <http://www.gnu.org/licenses/>. */
  52108. #ifndef _SYS_IO_H
  52109. @@ -23,17 +22,18 @@
  52110. __BEGIN_DECLS
  52111. +#if defined __UCLIBC_LINUX_SPECIFIC__
  52112. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  52113. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  52114. permission off for that range. This call requires root privileges. */
  52115. extern int ioperm (unsigned long int __from, unsigned long int __num,
  52116. int __turn_on) __THROW;
  52117. -libc_hidden_proto(ioperm)
  52118. /* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  52119. permission to access any I/O port is granted. This call requires
  52120. root privileges. */
  52121. extern int iopl (int __level) __THROW;
  52122. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  52123. /* The functions that actually perform reads and writes. */
  52124. extern unsigned char inb (unsigned long int port) __THROW;
  52125. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/procfs.h uClibc/libc/sysdeps/linux/bfin/sys/procfs.h
  52126. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  52127. +++ uClibc/libc/sysdeps/linux/bfin/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  52128. @@ -12,9 +12,8 @@
  52129. Lesser General Public License for more details.
  52130. You should have received a copy of the GNU Lesser General Public
  52131. - License along with the GNU C Library; if not, write to the Free
  52132. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52133. - 02111-1307 USA. */
  52134. + License along with the GNU C Library; if not, see
  52135. + <http://www.gnu.org/licenses/>. */
  52136. #ifndef _SYS_PROCFS_H
  52137. #define _SYS_PROCFS_H 1
  52138. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/ucontext.h uClibc/libc/sysdeps/linux/bfin/sys/ucontext.h
  52139. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  52140. +++ uClibc/libc/sysdeps/linux/bfin/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  52141. @@ -12,9 +12,8 @@
  52142. Lesser General Public License for more details.
  52143. You should have received a copy of the GNU Lesser General Public
  52144. - License along with the GNU C Library; if not, write to the Free
  52145. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52146. - 02111-1307 USA. */
  52147. + License along with the GNU C Library; if not, see
  52148. + <http://www.gnu.org/licenses/>. */
  52149. /* System V/blackfin ABI compliant context switching support. */
  52150. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/byteswap.h uClibc/libc/sysdeps/linux/c6x/bits/byteswap.h
  52151. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  52152. +++ uClibc/libc/sysdeps/linux/c6x/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  52153. @@ -14,9 +14,8 @@
  52154. * for more details.
  52155. *
  52156. * You should have received a copy of the GNU Library General Public License
  52157. - * along with this program; if not, write to the Free Software Foundation,
  52158. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52159. - *
  52160. + * along with this program; see the file COPYING.LIB. If not, see
  52161. + * <http://www.gnu.org/licenses/>.
  52162. */
  52163. #ifndef _ASM_BITS_BYTESWAP_H
  52164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/elf-dsbt.h uClibc/libc/sysdeps/linux/c6x/bits/elf-dsbt.h
  52165. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/elf-dsbt.h 2012-05-15 09:20:09.000000000 +0200
  52166. +++ uClibc/libc/sysdeps/linux/c6x/bits/elf-dsbt.h 2014-02-03 12:32:56.000000000 +0100
  52167. @@ -25,8 +25,7 @@
  52168. You should have received a copy of the GNU Lesser General Public
  52169. License along with the GNU C Library; see the file COPYING.LIB. If
  52170. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  52171. -Cambridge, MA 02139, USA. */
  52172. +not, see <http://www.gnu.org/licenses/>. */
  52173. #ifndef _BITS_ELF_DSBT_H
  52174. #define _BITS_ELF_DSBT_H
  52175. @@ -59,15 +58,10 @@
  52176. struct elf32_dsbt_loadmap {
  52177. /* Protocol version number, must be zero. */
  52178. - Elf32_Word version;
  52179. -
  52180. - /* Pointer to DSBT */
  52181. - unsigned *dsbt_table;
  52182. - unsigned dsbt_size;
  52183. - unsigned dsbt_index;
  52184. + Elf32_Half version;
  52185. /* number of segments */
  52186. - Elf32_Word nsegs;
  52187. + Elf32_Half nsegs;
  52188. /* The actual memory map. */
  52189. struct elf32_dsbt_loadseg segs[0];
  52190. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/fcntl.h uClibc/libc/sysdeps/linux/c6x/bits/fcntl.h
  52191. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  52192. +++ uClibc/libc/sysdeps/linux/c6x/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  52193. @@ -13,9 +13,8 @@
  52194. Lesser General Public License for more details.
  52195. You should have received a copy of the GNU Lesser General Public
  52196. - License along with the GNU C Library; if not, write to the Free
  52197. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52198. - 02111-1307 USA. */
  52199. + License along with the GNU C Library; if not, see
  52200. + <http://www.gnu.org/licenses/>. */
  52201. #ifndef _FCNTL_H
  52202. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  52203. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/ipc.h uClibc/libc/sysdeps/linux/c6x/bits/ipc.h
  52204. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  52205. +++ uClibc/libc/sysdeps/linux/c6x/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  52206. @@ -12,9 +12,8 @@
  52207. Lesser General Public License for more details.
  52208. You should have received a copy of the GNU Lesser General Public
  52209. - License along with the GNU C Library; if not, write to the Free
  52210. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52211. - 02111-1307 USA. */
  52212. + License along with the GNU C Library; if not, see
  52213. + <http://www.gnu.org/licenses/>. */
  52214. #ifndef _SYS_IPC_H
  52215. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  52216. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/kernel_types.h uClibc/libc/sysdeps/linux/c6x/bits/kernel_types.h
  52217. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  52218. +++ uClibc/libc/sysdeps/linux/c6x/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  52219. @@ -22,6 +22,8 @@
  52220. typedef unsigned int __kernel_old_uid_t;
  52221. typedef unsigned int __kernel_old_gid_t;
  52222. typedef unsigned int __kernel_old_dev_t;
  52223. +typedef long __kernel_long_t;
  52224. +typedef unsigned long __kernel_ulong_t;
  52225. typedef unsigned int __kernel_size_t;
  52226. typedef int __kernel_ssize_t;
  52227. typedef int __kernel_ptrdiff_t;
  52228. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/mathdef.h uClibc/libc/sysdeps/linux/c6x/bits/mathdef.h
  52229. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  52230. +++ uClibc/libc/sysdeps/linux/c6x/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  52231. @@ -12,9 +12,8 @@
  52232. Lesser General Public License for more details.
  52233. You should have received a copy of the GNU Lesser General Public
  52234. - License along with the GNU C Library; if not, write to the Free
  52235. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52236. - 02111-1307 USA. */
  52237. + License along with the GNU C Library; if not, see
  52238. + <http://www.gnu.org/licenses/>. */
  52239. #if !defined _MATH_H && !defined _COMPLEX_H
  52240. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  52241. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/nan.h uClibc/libc/sysdeps/linux/c6x/bits/nan.h
  52242. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/nan.h 2012-05-15 09:20:09.000000000 +0200
  52243. +++ uClibc/libc/sysdeps/linux/c6x/bits/nan.h 2014-02-03 12:32:56.000000000 +0100
  52244. @@ -13,9 +13,8 @@
  52245. Lesser General Public License for more details.
  52246. You should have received a copy of the GNU Lesser General Public
  52247. - License along with the GNU C Library; if not, write to the Free
  52248. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52249. - 02111-1307 USA. */
  52250. + License along with the GNU C Library; if not, see
  52251. + <http://www.gnu.org/licenses/>. */
  52252. #ifndef _MATH_H
  52253. # error "Never use <bits/nan.h> directly; include <math.h> instead."
  52254. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/poll.h uClibc/libc/sysdeps/linux/c6x/bits/poll.h
  52255. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  52256. +++ uClibc/libc/sysdeps/linux/c6x/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  52257. @@ -12,9 +12,8 @@
  52258. Lesser General Public License for more details.
  52259. You should have received a copy of the GNU Lesser General Public
  52260. - License along with the GNU C Library; if not, write to the Free
  52261. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52262. - 02111-1307 USA. */
  52263. + License along with the GNU C Library; if not, see
  52264. + <http://www.gnu.org/licenses/>. */
  52265. #ifndef _SYS_POLL_H
  52266. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  52267. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/resource.h uClibc/libc/sysdeps/linux/c6x/bits/resource.h
  52268. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  52269. +++ uClibc/libc/sysdeps/linux/c6x/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  52270. @@ -13,9 +13,8 @@
  52271. Lesser General Public License for more details.
  52272. You should have received a copy of the GNU Lesser General Public
  52273. - License along with the GNU C Library; if not, write to the Free
  52274. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52275. - 02111-1307 USA. */
  52276. + License along with the GNU C Library; if not, see
  52277. + <http://www.gnu.org/licenses/>. */
  52278. #ifndef _SYS_RESOURCE_H
  52279. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  52280. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/setjmp.h uClibc/libc/sysdeps/linux/c6x/bits/setjmp.h
  52281. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  52282. +++ uClibc/libc/sysdeps/linux/c6x/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  52283. @@ -14,12 +14,14 @@
  52284. * for more details.
  52285. *
  52286. * You should have received a copy of the GNU Library General Public License
  52287. - * along with this program; if not, write to the Free Software Foundation,
  52288. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52289. - *
  52290. + * along with this program; see the file COPYING.LIB. If not, see
  52291. + * <http://www.gnu.org/licenses/>.
  52292. */
  52293. -#ifndef _SETJMP_H
  52294. +#ifndef _BITS_SETJMP_H
  52295. +#define _BITS_SETJMP_H 1
  52296. +
  52297. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  52298. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  52299. #endif
  52300. @@ -28,12 +30,4 @@
  52301. unsigned long __pc; /* the return address */
  52302. } __jmp_buf[1];
  52303. -/* the stack pointer (B15) */
  52304. -#define JP_SP 11
  52305. -
  52306. -/* Test if longjmp to JMPBUF would unwind the frame
  52307. - containing a local variable at ADDRESS. */
  52308. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  52309. - ((void *) (address) < (void *) (jmpbuf)->__regs[JP_SP])
  52310. -
  52311. -
  52312. +#endif
  52313. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h
  52314. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  52315. +++ uClibc/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  52316. @@ -13,9 +13,8 @@
  52317. Lesser General Public License for more details.
  52318. You should have received a copy of the GNU Lesser General Public
  52319. - License along with the GNU C Library; if not, write to the Free
  52320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52321. - 02111-1307 USA. */
  52322. + License along with the GNU C Library; if not, see
  52323. + <http://www.gnu.org/licenses/>. */
  52324. #define SIGCONTEXT int _code, struct sigcontext *
  52325. #define SIGCONTEXT_EXTRA_ARGS _code,
  52326. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/stackinfo.h uClibc/libc/sysdeps/linux/c6x/bits/stackinfo.h
  52327. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  52328. +++ uClibc/libc/sysdeps/linux/c6x/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  52329. @@ -12,9 +12,8 @@
  52330. Lesser General Public License for more details.
  52331. You should have received a copy of the GNU Lesser General Public
  52332. - License along with the GNU C Library; if not, write to the Free
  52333. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52334. - 02111-1307 USA. */
  52335. + License along with the GNU C Library; if not, see
  52336. + <http://www.gnu.org/licenses/>. */
  52337. /* This file contains a bit of information about the stack allocation
  52338. of the processor. */
  52339. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/syscalls.h uClibc/libc/sysdeps/linux/c6x/bits/syscalls.h
  52340. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  52341. +++ uClibc/libc/sysdeps/linux/c6x/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  52342. @@ -37,7 +37,7 @@
  52343. #undef INLINE_SYSCALL
  52344. #define INLINE_SYSCALL(name, nr, args...) \
  52345. ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args); \
  52346. - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ), 0)) \
  52347. + if (unlikely (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  52348. { \
  52349. __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  52350. _inline_sys_result = (unsigned int) -1; \
  52351. @@ -103,7 +103,7 @@
  52352. register long __B6 __asm__ ("B6") = (long)(arg4); \
  52353. register long __A8 __asm__ ("A8") = (long)(arg5); \
  52354. register long __g1 __asm__ ("g1") = __NR_clone; \
  52355. - __asm __volatile (__CLONE_SYSCALL_STRING : \
  52356. + __asm__ __volatile__ (__CLONE_SYSCALL_STRING : \
  52357. "=r" (__g1), "=r" (__A4), "=r" (__B4) : \
  52358. "0" (__g1), "1" (__A4), "2" (__B4), \
  52359. "r" (__A6), "r" (__B6), "r" (__A8) : \
  52360. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h
  52361. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  52362. +++ uClibc/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  52363. @@ -12,8 +12,8 @@
  52364. /* can your target use syscall6() for mmap ? */
  52365. #define __UCLIBC_MMAP_HAS_6_ARGS__
  52366. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  52367. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  52368. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  52369. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  52370. /* does your target have a broken create_module() ? */
  52371. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  52372. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/wordsize.h uClibc/libc/sysdeps/linux/c6x/bits/wordsize.h
  52373. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  52374. +++ uClibc/libc/sysdeps/linux/c6x/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  52375. @@ -12,8 +12,7 @@
  52376. Lesser General Public License for more details.
  52377. You should have received a copy of the GNU Lesser General Public
  52378. - License along with the GNU C Library; if not, write to the Free
  52379. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52380. - 02111-1307 USA. */
  52381. + License along with the GNU C Library; if not, see
  52382. + <http://www.gnu.org/licenses/>. */
  52383. #define __WORDSIZE 32
  52384. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/brk.c uClibc/libc/sysdeps/linux/c6x/brk.c
  52385. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/brk.c 2012-05-15 09:20:09.000000000 +0200
  52386. +++ uClibc/libc/sysdeps/linux/c6x/brk.c 2014-02-03 12:32:56.000000000 +0100
  52387. @@ -14,9 +14,8 @@
  52388. * for more details.
  52389. *
  52390. * You should have received a copy of the GNU Library General Public License
  52391. - * along with this program; if not, write to the Free Software Foundation,
  52392. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52393. - *
  52394. + * along with this program; see the file COPYING.LIB. If not, see
  52395. + * <http://www.gnu.org/licenses/>.
  52396. */
  52397. #include <unistd.h>
  52398. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-_setjmp.s uClibc/libc/sysdeps/linux/c6x/bsd-_setjmp.s
  52399. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-_setjmp.s 2012-05-15 09:20:09.000000000 +0200
  52400. +++ uClibc/libc/sysdeps/linux/c6x/bsd-_setjmp.s 2014-02-03 12:32:56.000000000 +0100
  52401. @@ -14,8 +14,7 @@
  52402. ; for more details.
  52403. ;
  52404. ; You should have received a copy of the GNU Library General Public License
  52405. - ; along with this program; if not, write to the Free Software Foundation,
  52406. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52407. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52408. ;
  52409. .global _setjmp
  52410. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-setjmp.S uClibc/libc/sysdeps/linux/c6x/bsd-setjmp.S
  52411. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  52412. +++ uClibc/libc/sysdeps/linux/c6x/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  52413. @@ -14,8 +14,7 @@
  52414. ; for more details.
  52415. ;
  52416. ; You should have received a copy of the GNU Library General Public License
  52417. - ; along with this program; if not, write to the Free Software Foundation,
  52418. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52419. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52420. ;
  52421. .global setjmp
  52422. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/clone.S uClibc/libc/sysdeps/linux/c6x/clone.S
  52423. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/clone.S 2012-05-15 09:20:09.000000000 +0200
  52424. +++ uClibc/libc/sysdeps/linux/c6x/clone.S 2014-02-03 12:32:56.000000000 +0100
  52425. @@ -14,8 +14,7 @@
  52426. ; for more details.
  52427. ;
  52428. ; You should have received a copy of the GNU Library General Public License
  52429. - ; along with this program; if not, write to the Free Software Foundation,
  52430. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52431. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52432. ;
  52433. #define __ASSEMBLY__
  52434. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/crt1.S uClibc/libc/sysdeps/linux/c6x/crt1.S
  52435. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/crt1.S 2012-05-15 09:20:09.000000000 +0200
  52436. +++ uClibc/libc/sysdeps/linux/c6x/crt1.S 2014-02-03 12:32:56.000000000 +0100
  52437. @@ -15,8 +15,7 @@
  52438. ; for more details.
  52439. ;
  52440. ; You should have received a copy of the GNU Library General Public License
  52441. -; along with this program; if not, write to the Free Software Foundation,
  52442. -; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52443. +; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52444. ;
  52445. .text
  52446. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/c6x/jmpbuf-offsets.h
  52447. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  52448. +++ uClibc/libc/sysdeps/linux/c6x/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  52449. @@ -0,0 +1,22 @@
  52450. +/* Private macros for accessing __jmp_buf contents. c6x version.
  52451. + * Port of uClibc for TMS320C6000 DSP architecture
  52452. + * Copyright (C) 2004 Texas Instruments Incorporated
  52453. + * Author of TMS320C6000 port: Aurelien Jacquiot
  52454. + *
  52455. + * This program is free software; you can redistribute it and/or modify it
  52456. + * under the terms of the GNU Library General Public License as published by
  52457. + * the Free Software Foundation; either version 2 of the License, or (at your
  52458. + * option) any later version.
  52459. + *
  52460. + * This program is distributed in the hope that it will be useful, but WITHOUT
  52461. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  52462. + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  52463. + * for more details.
  52464. + *
  52465. + * You should have received a copy of the GNU Library General Public License
  52466. + * along with this program; see the file COPYING.LIB. If not, see
  52467. + * <http://www.gnu.org/licenses/>.
  52468. + */
  52469. +
  52470. +/* the stack pointer (B15) */
  52471. +#define JP_SP 11
  52472. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/c6x/jmpbuf-unwind.h
  52473. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  52474. +++ uClibc/libc/sysdeps/linux/c6x/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  52475. @@ -0,0 +1,28 @@
  52476. +/*
  52477. + * Port of uClibc for TMS320C6000 DSP architecture
  52478. + * Copyright (C) 2004 Texas Instruments Incorporated
  52479. + * Author of TMS320C6000 port: Aurelien Jacquiot
  52480. + *
  52481. + * This program is free software; you can redistribute it and/or modify it
  52482. + * under the terms of the GNU Library General Public License as published by
  52483. + * the Free Software Foundation; either version 2 of the License, or (at your
  52484. + * option) any later version.
  52485. + *
  52486. + * This program is distributed in the hope that it will be useful, but WITHOUT
  52487. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  52488. + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  52489. + * for more details.
  52490. + *
  52491. + * You should have received a copy of the GNU Library General Public License
  52492. + * along with this program; see the file COPYING.LIB. If not, see
  52493. + * <http://www.gnu.org/licenses/>.
  52494. + */
  52495. +#include <setjmp.h>
  52496. +#include <jmpbuf-offsets.h>
  52497. +
  52498. +/* Test if longjmp to JMPBUF would unwind the frame
  52499. + containing a local variable at ADDRESS. */
  52500. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  52501. + ((void *) (address) < (void *) (jmpbuf)->__regs[JP_SP])
  52502. +
  52503. +
  52504. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/__longjmp.S uClibc/libc/sysdeps/linux/c6x/__longjmp.S
  52505. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  52506. +++ uClibc/libc/sysdeps/linux/c6x/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  52507. @@ -14,8 +14,7 @@
  52508. ; for more details.
  52509. ;
  52510. ; You should have received a copy of the GNU Library General Public License
  52511. - ; along with this program; if not, write to the Free Software Foundation,
  52512. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52513. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52514. ;
  52515. .global __longjmp
  52516. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/Makefile.arch uClibc/libc/sysdeps/linux/c6x/Makefile.arch
  52517. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  52518. +++ uClibc/libc/sysdeps/linux/c6x/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  52519. @@ -5,6 +5,6 @@
  52520. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  52521. #
  52522. -CSRC := brk.c pread_write.c syscall.c prctl.c
  52523. +CSRC-y := brk.c syscall.c prctl.c
  52524. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S _vfork.S
  52525. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S _vfork.S
  52526. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/pread_write.c uClibc/libc/sysdeps/linux/c6x/pread_write.c
  52527. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  52528. +++ uClibc/libc/sysdeps/linux/c6x/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  52529. @@ -1,103 +0,0 @@
  52530. -/* vi: set sw=4 ts=4:
  52531. - *
  52532. - * Copyright (C) 2002 by Erik Andersen <andersen@uclibc.org>
  52533. - * Based in part on the files
  52534. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  52535. - * ./sysdeps/unix/sysv/linux/pread.c,
  52536. - * sysdeps/posix/pread.c
  52537. - * sysdeps/posix/pwrite.c
  52538. - * from GNU libc 2.2.5, but reworked considerably...
  52539. - *
  52540. - * This program is free software; you can redistribute it and/or modify it
  52541. - * under the terms of the GNU Library General Public License as published by
  52542. - * the Free Software Foundation; either version 2 of the License, or (at your
  52543. - * option) any later version.
  52544. - *
  52545. - * This program is distributed in the hope that it will be useful, but WITHOUT
  52546. - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  52547. - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  52548. - * for more details.
  52549. - *
  52550. - * You should have received a copy of the GNU Library General Public License
  52551. - * along with this program; if not, write to the Free Software Foundation,
  52552. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52553. - */
  52554. -
  52555. -#define _LARGEFILE64_SOURCE
  52556. -#include <features.h>
  52557. -#undef __OPTIMIZE__
  52558. -/* We absolutely do _NOT_ want interfaces silently
  52559. - * * * renamed under us or very bad things will happen... */
  52560. -#ifdef __USE_FILE_OFFSET64
  52561. -# undef __USE_FILE_OFFSET64
  52562. -#endif
  52563. -
  52564. -
  52565. -#include <errno.h>
  52566. -#include <sys/types.h>
  52567. -#include <sys/syscall.h>
  52568. -#include <unistd.h>
  52569. -#include <stdint.h>
  52570. -
  52571. -extern __typeof(pread) __libc_pread;
  52572. -extern __typeof(pwrite) __libc_pwrite;
  52573. -#ifdef __UCLIBC_HAS_LFS__
  52574. -extern __typeof(pread64) __libc_pread64;
  52575. -extern __typeof(pwrite64) __libc_pwrite64;
  52576. -#endif
  52577. -
  52578. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  52579. -# ifdef __NR_pread
  52580. -# error "__NR_pread and __NR_pread64 both defined???"
  52581. -# endif
  52582. -# define __NR_pread __NR_pread64
  52583. -#endif
  52584. -
  52585. -#define __NR___syscall_pread __NR_pread
  52586. -static inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  52587. - size_t, count, off_t, offset_hi, off_t, offset_lo);
  52588. -
  52589. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  52590. -{
  52591. - return(__syscall_pread(fd,buf,count,offset,offset >> 31));
  52592. -}
  52593. -weak_alias (__libc_pread, pread)
  52594. -
  52595. -#if defined __UCLIBC_HAS_LFS__
  52596. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  52597. -{
  52598. - uint32_t low = offset & 0xffffffff;
  52599. - uint32_t high = offset >> 32;
  52600. - return(__syscall_pread(fd, buf, count, low, high));
  52601. -}
  52602. -weak_alias (__libc_pread64, pread64)
  52603. -#endif /* __UCLIBC_HAS_LFS__ */
  52604. -
  52605. -
  52606. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  52607. -# ifdef __NR_pwrite
  52608. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  52609. -# endif
  52610. -# define __NR_pwrite __NR_pwrite64
  52611. -#endif
  52612. -
  52613. -#define __NR___syscall_pwrite __NR_pwrite
  52614. -static inline _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  52615. - size_t, count, off_t, offset_hi, off_t, offset_lo);
  52616. -
  52617. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  52618. -{
  52619. - return(__syscall_pwrite(fd,buf,count,offset,offset >> 31));
  52620. -}
  52621. -weak_alias (__libc_pwrite, pwrite)
  52622. -
  52623. -#if defined __UCLIBC_HAS_LFS__
  52624. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  52625. -{
  52626. - uint32_t low = offset & 0xffffffff;
  52627. - uint32_t high = offset >> 32;
  52628. - return(__syscall_pwrite(fd, buf, count, low, high));
  52629. -}
  52630. -weak_alias (__libc_pwrite64, pwrite64)
  52631. -#endif /* __UCLIBC_HAS_LFS__ */
  52632. -
  52633. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/setjmp.s uClibc/libc/sysdeps/linux/c6x/setjmp.s
  52634. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/setjmp.s 2012-05-15 09:20:09.000000000 +0200
  52635. +++ uClibc/libc/sysdeps/linux/c6x/setjmp.s 2014-02-03 12:32:56.000000000 +0100
  52636. @@ -14,8 +14,7 @@
  52637. ; for more details.
  52638. ;
  52639. ; You should have received a copy of the GNU Library General Public License
  52640. - ; along with this program; if not, write to the Free Software Foundation,
  52641. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52642. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  52643. ;
  52644. .global __sigsetjmp
  52645. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sigaction.c uClibc/libc/sysdeps/linux/c6x/sigaction.c
  52646. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  52647. +++ uClibc/libc/sysdeps/linux/c6x/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  52648. @@ -17,8 +17,7 @@
  52649. You should have received a copy of the GNU Library General Public
  52650. License along with the GNU C Library; see the file COPYING.LIB. If not,
  52651. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  52652. - Boston, MA 02111-1307, USA.
  52653. + see <http://www.gnu.org/licenses/>.
  52654. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  52655. */
  52656. @@ -34,8 +33,6 @@
  52657. #define SA_RESTORER 0x04000000
  52658. -extern __typeof(sigaction) __libc_sigaction;
  52659. -
  52660. extern void restore_rt(void) __asm__ ("__restore_rt") attribute_hidden;
  52661. extern void restore(void) __asm__ ("__restore") attribute_hidden;
  52662. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/procfs.h uClibc/libc/sysdeps/linux/c6x/sys/procfs.h
  52663. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  52664. +++ uClibc/libc/sysdeps/linux/c6x/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  52665. @@ -12,9 +12,8 @@
  52666. Lesser General Public License for more details.
  52667. You should have received a copy of the GNU Lesser General Public
  52668. - License along with the GNU C Library; if not, write to the Free
  52669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52670. - 02111-1307 USA. */
  52671. + License along with the GNU C Library; if not, see
  52672. + <http://www.gnu.org/licenses/>. */
  52673. #ifndef _SYS_PROCFS_H
  52674. #define _SYS_PROCFS_H 1
  52675. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ptrace.h uClibc/libc/sysdeps/linux/c6x/sys/ptrace.h
  52676. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  52677. +++ uClibc/libc/sysdeps/linux/c6x/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  52678. @@ -13,9 +13,8 @@
  52679. Lesser General Public License for more details.
  52680. You should have received a copy of the GNU Lesser General Public
  52681. - License along with the GNU C Library; if not, write to the Free
  52682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52683. - 02111-1307 USA. */
  52684. + License along with the GNU C Library; if not, see
  52685. + <http://www.gnu.org/licenses/>. */
  52686. #ifndef _SYS_PTRACE_H
  52687. #define _SYS_PTRACE_H 1
  52688. @@ -112,12 +111,6 @@
  52689. PTRACE_SYSCALL = 24,
  52690. #define PT_SYSCALL PTRACE_SYSCALL
  52691. - /* Obtain the load map of the main program or the interpreter of the
  52692. - ptraced process, depending on whether the addr argument is
  52693. - (void*)0 or (void*)1, respectively. */
  52694. - PTRACE_GETDSBT = 31,
  52695. -#define PT_GETDSBT PTRACE_GETDSBT
  52696. -
  52697. /* Set ptrace filter options. */
  52698. PTRACE_SETOPTIONS = 0x4200,
  52699. #define PT_SETOPTIONS PTRACE_SETOPTIONS
  52700. @@ -135,9 +128,6 @@
  52701. #define PT_SETSIGINFO PTRACE_SETSIGINFO
  52702. };
  52703. -#define PTRACE_GETDSBT_EXEC ((void*)0) /* [addr] request the executable loadmap */
  52704. -#define PTRACE_GETDSBT_INTERP ((void*)1) /* [addr] request the interpreter loadmap */
  52705. -
  52706. /* Options set using PTRACE_SETOPTIONS. */
  52707. enum __ptrace_setoptions {
  52708. PTRACE_O_TRACESYSGOOD = 0x00000001,
  52709. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/reg.h uClibc/libc/sysdeps/linux/c6x/sys/reg.h
  52710. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  52711. +++ uClibc/libc/sysdeps/linux/c6x/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  52712. @@ -14,9 +14,8 @@
  52713. * for more details.
  52714. *
  52715. * You should have received a copy of the GNU Library General Public License
  52716. - * along with this program; if not, write to the Free Software Foundation,
  52717. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52718. - *
  52719. + * along with this program; see the file COPYING.LIB. If not, see
  52720. + * <http://www.gnu.org/licenses/>.
  52721. */
  52722. #ifndef _SYS_REG_H
  52723. #define _SYS_REG_H 1
  52724. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ucontext.h uClibc/libc/sysdeps/linux/c6x/sys/ucontext.h
  52725. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  52726. +++ uClibc/libc/sysdeps/linux/c6x/sys/ucontext.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 _SYS_UCONTEXT_H
  52736. #define _SYS_UCONTEXT_H 1
  52737. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/user.h uClibc/libc/sysdeps/linux/c6x/sys/user.h
  52738. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  52739. +++ uClibc/libc/sysdeps/linux/c6x/sys/user.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_USER_H
  52749. #define _SYS_USER_H 1
  52750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/_vfork.S uClibc/libc/sysdeps/linux/c6x/_vfork.S
  52751. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/_vfork.S 2012-05-15 09:20:09.000000000 +0200
  52752. +++ uClibc/libc/sysdeps/linux/c6x/_vfork.S 2014-02-03 12:32:56.000000000 +0100
  52753. @@ -16,8 +16,8 @@
  52754. * for more details.
  52755. *
  52756. * You should have received a copy of the GNU Library General Public License
  52757. - * along with this program; if not, write to the Free Software Foundation,
  52758. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52759. + * along with this program; see the file COPYING.LIB. If not, see
  52760. + * <http://www.gnu.org/licenses/>.
  52761. */
  52762. #define __ASSEMBLY__
  52763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/access.c uClibc/libc/sysdeps/linux/common/access.c
  52764. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/access.c 2012-05-15 09:20:09.000000000 +0200
  52765. +++ uClibc/libc/sysdeps/linux/common/access.c 2014-02-03 12:32:56.000000000 +0100
  52766. @@ -9,4 +9,14 @@
  52767. #include <sys/syscall.h>
  52768. #include <unistd.h>
  52769. +
  52770. +#if defined __NR_faccessat && !defined __NR_access
  52771. +# include <fcntl.h>
  52772. +int access(const char *pathname, int mode)
  52773. +{
  52774. + return faccessat(AT_FDCWD, pathname, mode, 0);
  52775. +}
  52776. +
  52777. +#else
  52778. _syscall2(int, access, const char *, pathname, int, mode)
  52779. +#endif
  52780. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/alarm.c uClibc/libc/sysdeps/linux/common/alarm.c
  52781. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/alarm.c 2012-05-15 09:20:09.000000000 +0200
  52782. +++ uClibc/libc/sysdeps/linux/common/alarm.c 2014-02-03 12:32:56.000000000 +0100
  52783. @@ -10,12 +10,10 @@
  52784. #include <sys/syscall.h>
  52785. #include <unistd.h>
  52786. -
  52787. #ifdef __NR_alarm
  52788. _syscall1(unsigned int, alarm, unsigned int, seconds)
  52789. #else
  52790. -#include <sys/time.h>
  52791. -
  52792. +# include <sys/time.h>
  52793. unsigned int alarm(unsigned int seconds)
  52794. {
  52795. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/arch_prctl.c uClibc/libc/sysdeps/linux/common/arch_prctl.c
  52796. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/arch_prctl.c 2012-05-15 09:20:09.000000000 +0200
  52797. +++ uClibc/libc/sysdeps/linux/common/arch_prctl.c 2014-02-03 12:32:56.000000000 +0100
  52798. @@ -10,6 +10,6 @@
  52799. #include <sys/syscall.h>
  52800. #ifdef __NR_arch_prctl
  52801. -extern int arch_prctl(int code, unsigned long addr);
  52802. +int arch_prctl(int code, unsigned long addr);
  52803. _syscall2(int, arch_prctl, int, code, unsigned long, addr)
  52804. #endif
  52805. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/atomic.h uClibc/libc/sysdeps/linux/common/bits/atomic.h
  52806. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  52807. +++ uClibc/libc/sysdeps/linux/common/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  52808. @@ -13,9 +13,8 @@
  52809. Lesser General Public License for more details.
  52810. You should have received a copy of the GNU Lesser General Public
  52811. - License along with the GNU C Library; if not, write to the Free
  52812. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52813. - 02111-1307 USA. */
  52814. + License along with the GNU C Library; if not, see
  52815. + <http://www.gnu.org/licenses/>. */
  52816. #ifndef _BITS_ATOMIC_H
  52817. #define _BITS_ATOMIC_H 1
  52818. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/byteswap-common.h uClibc/libc/sysdeps/linux/common/bits/byteswap-common.h
  52819. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/byteswap-common.h 2012-05-15 09:20:09.000000000 +0200
  52820. +++ uClibc/libc/sysdeps/linux/common/bits/byteswap-common.h 2014-02-03 12:32:56.000000000 +0100
  52821. @@ -13,9 +13,8 @@
  52822. Lesser General Public License for more details.
  52823. You should have received a copy of the GNU Lesser General Public
  52824. - License along with the GNU C Library; if not, write to the Free
  52825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52826. - 02111-1307 USA. */
  52827. + License along with the GNU C Library; if not, see
  52828. + <http://www.gnu.org/licenses/>. */
  52829. #if !defined _BYTESWAP_H && !defined _NETINET_IN_H
  52830. # error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
  52831. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/cmathcalls.h uClibc/libc/sysdeps/linux/common/bits/cmathcalls.h
  52832. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/cmathcalls.h 2012-05-15 09:20:09.000000000 +0200
  52833. +++ uClibc/libc/sysdeps/linux/common/bits/cmathcalls.h 2014-02-03 12:32:56.000000000 +0100
  52834. @@ -14,9 +14,8 @@
  52835. Lesser General Public License for more details.
  52836. You should have received a copy of the GNU Lesser General Public
  52837. - License along with the GNU C Library; if not, write to the Free
  52838. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52839. - 02111-1307 USA. */
  52840. + License along with the GNU C Library; if not, see
  52841. + <http://www.gnu.org/licenses/>. */
  52842. /* NOTE: Because of the special way this file is used by <complex.h>, this
  52843. file must NOT be protected from multiple inclusion as header files
  52844. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/confname.h uClibc/libc/sysdeps/linux/common/bits/confname.h
  52845. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/confname.h 2012-05-15 09:20:09.000000000 +0200
  52846. +++ uClibc/libc/sysdeps/linux/common/bits/confname.h 2014-02-03 12:32:56.000000000 +0100
  52847. @@ -14,9 +14,8 @@
  52848. Lesser General Public License for more details.
  52849. You should have received a copy of the GNU Lesser General Public
  52850. - License along with the GNU C Library; if not, write to the Free
  52851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52852. - 02111-1307 USA. */
  52853. + License along with the GNU C Library; if not, see
  52854. + <http://www.gnu.org/licenses/>. */
  52855. #ifndef _UNISTD_H
  52856. # error "Never use <bits/confname.h> directly; include <unistd.h> instead."
  52857. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dirent.h uClibc/libc/sysdeps/linux/common/bits/dirent.h
  52858. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  52859. +++ uClibc/libc/sysdeps/linux/common/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  52860. @@ -12,9 +12,8 @@
  52861. Lesser General Public License for more details.
  52862. You should have received a copy of the GNU Lesser General Public
  52863. - License along with the GNU C Library; if not, write to the Free
  52864. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52865. - 02111-1307 USA. */
  52866. + License along with the GNU C Library; if not, see
  52867. + <http://www.gnu.org/licenses/>. */
  52868. #ifndef _DIRENT_H
  52869. # error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  52870. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dlfcn.h uClibc/libc/sysdeps/linux/common/bits/dlfcn.h
  52871. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  52872. +++ uClibc/libc/sysdeps/linux/common/bits/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  52873. @@ -13,9 +13,8 @@
  52874. Lesser General Public License for more details.
  52875. You should have received a copy of the GNU Lesser General Public
  52876. - License along with the GNU C Library; if not, write to the Free
  52877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52878. - 02111-1307 USA. */
  52879. + License along with the GNU C Library; if not, see
  52880. + <http://www.gnu.org/licenses/>. */
  52881. #ifndef _DLFCN_H
  52882. # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
  52883. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/environments.h uClibc/libc/sysdeps/linux/common/bits/environments.h
  52884. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/environments.h 2012-05-15 09:20:09.000000000 +0200
  52885. +++ uClibc/libc/sysdeps/linux/common/bits/environments.h 2014-02-03 12:32:56.000000000 +0100
  52886. @@ -12,9 +12,8 @@
  52887. Lesser General Public License for more details.
  52888. You should have received a copy of the GNU Lesser General Public
  52889. - License along with the GNU C Library; if not, write to the Free
  52890. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52891. - 02111-1307 USA. */
  52892. + License along with the GNU C Library; if not, see
  52893. + <http://www.gnu.org/licenses/>. */
  52894. #ifndef _UNISTD_H
  52895. # error "Never include this file directly. Use <unistd.h> instead"
  52896. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/errno.h uClibc/libc/sysdeps/linux/common/bits/errno.h
  52897. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/errno.h 2012-05-15 09:20:09.000000000 +0200
  52898. +++ uClibc/libc/sysdeps/linux/common/bits/errno.h 2014-02-03 12:32:56.000000000 +0100
  52899. @@ -13,9 +13,8 @@
  52900. Lesser General Public License for more details.
  52901. You should have received a copy of the GNU Lesser General Public
  52902. - License along with the GNU C Library; if not, write to the Free
  52903. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52904. - 02111-1307 USA. */
  52905. + License along with the GNU C Library; if not, see
  52906. + <http://www.gnu.org/licenses/>. */
  52907. #ifdef _ERRNO_H
  52908. @@ -43,6 +42,11 @@
  52909. # ifndef __ASSEMBLER__
  52910. /* Function to get address of global `errno' variable. */
  52911. extern int *__errno_location (void) __THROW __attribute__ ((__const__));
  52912. +# ifdef _LIBC
  52913. +# if !defined(__UCLIBC_HAS_TLS__) && !defined(__UCLIBC_HAS_THREADS__)
  52914. +extern int weak_const_function *__errno_location(void);
  52915. +# endif
  52916. +# endif
  52917. libc_hidden_proto(__errno_location)
  52918. # ifdef __UCLIBC_HAS_THREADS__
  52919. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/eventfd.h uClibc/libc/sysdeps/linux/common/bits/eventfd.h
  52920. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  52921. +++ uClibc/libc/sysdeps/linux/common/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  52922. @@ -0,0 +1,31 @@
  52923. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  52924. + This file is part of the GNU C Library.
  52925. +
  52926. + The GNU C Library is free software; you can redistribute it and/or
  52927. + modify it under the terms of the GNU Lesser General Public
  52928. + License as published by the Free Software Foundation; either
  52929. + version 2.1 of the License, or (at your option) any later version.
  52930. +
  52931. + The GNU C Library is distributed in the hope that it will be useful,
  52932. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  52933. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  52934. + Lesser General Public License for more details.
  52935. +
  52936. + You should have received a copy of the GNU Lesser General Public
  52937. + License along with the GNU C Library; if not, see
  52938. + <http://www.gnu.org/licenses/>. */
  52939. +
  52940. +#ifndef _SYS_EVENTFD_H
  52941. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  52942. +#endif
  52943. +
  52944. +/* Flags for eventfd. */
  52945. +enum
  52946. + {
  52947. + EFD_SEMAPHORE = 00000001,
  52948. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  52949. + EFD_CLOEXEC = 02000000,
  52950. +#define EFD_CLOEXEC EFD_CLOEXEC
  52951. + EFD_NONBLOCK = 00004000
  52952. +#define EFD_NONBLOCK EFD_NONBLOCK
  52953. + };
  52954. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/fenv.h uClibc/libc/sysdeps/linux/common/bits/fenv.h
  52955. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  52956. +++ uClibc/libc/sysdeps/linux/common/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  52957. @@ -12,9 +12,8 @@
  52958. Lesser General Public License for more details.
  52959. You should have received a copy of the GNU Lesser General Public
  52960. - License along with the GNU C Library; if not, write to the Free
  52961. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52962. - 02111-1307 USA. */
  52963. + License along with the GNU C Library; if not, see
  52964. + <http://www.gnu.org/licenses/>. */
  52965. #ifndef _FENV_H
  52966. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  52967. @@ -53,4 +52,4 @@
  52968. fenv_t;
  52969. /* If the default argument is used we use this value. */
  52970. -#define FE_DFL_ENV ((__const fenv_t *) -1l)
  52971. +#define FE_DFL_ENV ((const fenv_t *) -1l)
  52972. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/getopt.h uClibc/libc/sysdeps/linux/common/bits/getopt.h
  52973. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/getopt.h 2012-05-15 09:20:09.000000000 +0200
  52974. +++ uClibc/libc/sysdeps/linux/common/bits/getopt.h 2014-02-03 12:32:56.000000000 +0100
  52975. @@ -14,9 +14,8 @@
  52976. Lesser General Public License for more details.
  52977. You should have received a copy of the GNU Lesser General Public
  52978. - License along with the GNU C Library; if not, write to the Free
  52979. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52980. - 02111-1307 USA. */
  52981. + License along with the GNU C Library; if not, see
  52982. + <http://www.gnu.org/licenses/>. */
  52983. #ifndef _GETOPT_H
  52984. @@ -26,31 +25,7 @@
  52985. # define _GETOPT_H 1
  52986. #endif
  52987. -/* If __GNU_LIBRARY__ is not already defined, either we are being used
  52988. - standalone, or this is the first header included in the source file.
  52989. - If we are being used with glibc, we need to include <features.h>, but
  52990. - that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
  52991. - not defined, include <ctype.h>, which will pull in <features.h> for us
  52992. - if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
  52993. - doesn't flood the namespace with stuff the way some other headers do.) */
  52994. -#if !defined __GNU_LIBRARY__
  52995. -# include <ctype.h>
  52996. -#endif
  52997. -
  52998. -#ifndef __THROW
  52999. -# ifndef __GNUC_PREREQ
  53000. -# define __GNUC_PREREQ(maj, min) (0)
  53001. -# endif
  53002. -# if defined __cplusplus && __GNUC_PREREQ (2,8)
  53003. -# define __THROW throw ()
  53004. -# else
  53005. -# define __THROW
  53006. -# endif
  53007. -#endif
  53008. -
  53009. -#ifdef __cplusplus
  53010. -extern "C" {
  53011. -#endif
  53012. +__BEGIN_DECLS
  53013. /* For communication from `getopt' to the caller.
  53014. When `getopt' finds an option that takes an argument,
  53015. @@ -147,17 +122,9 @@
  53016. arguments to the option '\0'. This behavior is specific to the GNU
  53017. `getopt'. */
  53018. -#if defined __GNU_LIBRARY__ || defined __UCLIBC__
  53019. -/* Many other libraries have conflicting prototypes for getopt, with
  53020. - differences in the consts, in stdlib.h. To avoid compilation
  53021. - errors, only prototype getopt for the GNU C library. */
  53022. extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
  53023. __THROW;
  53024. libc_hidden_proto(getopt)
  53025. -#else /* not __GNU_LIBRARY__ */
  53026. -extern int getopt ();
  53027. -libc_hidden_proto(getopt)
  53028. -#endif /* __GNU_LIBRARY__ */
  53029. #if defined __UCLIBC_HAS_GNU_GETOPT__ || defined __UCLIBC_HAS_GETOPT_LONG__
  53030. #ifndef __need_getopt
  53031. @@ -173,9 +140,7 @@
  53032. #endif
  53033. #endif
  53034. -#ifdef __cplusplus
  53035. -}
  53036. -#endif
  53037. +__END_DECLS
  53038. /* Make sure we later can get all the definitions and declarations. */
  53039. #undef __need_getopt
  53040. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_valf.h uClibc/libc/sysdeps/linux/common/bits/huge_valf.h
  53041. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_valf.h 2012-05-15 09:20:09.000000000 +0200
  53042. +++ uClibc/libc/sysdeps/linux/common/bits/huge_valf.h 2014-02-03 12:32:56.000000000 +0100
  53043. @@ -15,9 +15,8 @@
  53044. Lesser General Public License for more details.
  53045. You should have received a copy of the GNU Lesser General Public
  53046. - License along with the GNU C Library; if not, write to the Free
  53047. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53048. - 02111-1307 USA. */
  53049. + License along with the GNU C Library; if not, see
  53050. + <http://www.gnu.org/licenses/>. */
  53051. #ifndef _MATH_H
  53052. # error "Never use <bits/huge_valf.h> directly; include <math.h> instead."
  53053. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_val.h uClibc/libc/sysdeps/linux/common/bits/huge_val.h
  53054. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  53055. +++ uClibc/libc/sysdeps/linux/common/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  53056. @@ -15,9 +15,8 @@
  53057. Lesser General Public License for more details.
  53058. You should have received a copy of the GNU Lesser General Public
  53059. - License along with the GNU C Library; if not, write to the Free
  53060. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53061. - 02111-1307 USA. */
  53062. + License along with the GNU C Library; if not, see
  53063. + <http://www.gnu.org/licenses/>. */
  53064. #ifndef _MATH_H
  53065. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  53066. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_vall.h uClibc/libc/sysdeps/linux/common/bits/huge_vall.h
  53067. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_vall.h 2012-05-15 09:20:09.000000000 +0200
  53068. +++ uClibc/libc/sysdeps/linux/common/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  53069. @@ -14,9 +14,8 @@
  53070. Lesser General Public License for more details.
  53071. You should have received a copy of the GNU Lesser General Public
  53072. - License along with the GNU C Library; if not, write to the Free
  53073. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53074. - 02111-1307 USA. */
  53075. + License along with the GNU C Library; if not, see
  53076. + <http://www.gnu.org/licenses/>. */
  53077. #ifndef _MATH_H
  53078. # error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  53079. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/inf.h uClibc/libc/sysdeps/linux/common/bits/inf.h
  53080. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/inf.h 2012-05-15 09:20:09.000000000 +0200
  53081. +++ uClibc/libc/sysdeps/linux/common/bits/inf.h 2014-02-03 12:32:56.000000000 +0100
  53082. @@ -13,9 +13,8 @@
  53083. Lesser General Public License for more details.
  53084. You should have received a copy of the GNU Lesser General Public
  53085. - License along with the GNU C Library; if not, write to the Free
  53086. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53087. - 02111-1307 USA. */
  53088. + License along with the GNU C Library; if not, see
  53089. + <http://www.gnu.org/licenses/>. */
  53090. #ifndef _MATH_H
  53091. # error "Never use <bits/inf.h> directly; include <math.h> instead."
  53092. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/in.h uClibc/libc/sysdeps/linux/common/bits/in.h
  53093. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/in.h 2012-05-15 09:20:09.000000000 +0200
  53094. +++ uClibc/libc/sysdeps/linux/common/bits/in.h 2014-02-03 12:32:56.000000000 +0100
  53095. @@ -1,4 +1,4 @@
  53096. -/* Copyright (C) 1991-1999, 2000, 2004 Free Software Foundation, Inc.
  53097. +/* Copyright (C) 1991-2013 Free Software Foundation, Inc.
  53098. This file is part of the GNU C Library.
  53099. The GNU C Library is free software; you can redistribute it and/or
  53100. @@ -12,9 +12,8 @@
  53101. Lesser General Public License for more details.
  53102. You should have received a copy of the GNU Lesser General Public
  53103. - License along with the GNU C Library; if not, write to the Free
  53104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53105. - 02111-1307 USA. */
  53106. + License along with the GNU C Library; if not, see
  53107. + <http://www.gnu.org/licenses/>. */
  53108. /* Linux version. */
  53109. @@ -43,31 +42,49 @@
  53110. #define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */
  53111. #define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */
  53112. #define IP_MSFILTER 41
  53113. -#define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
  53114. -#define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
  53115. -#define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
  53116. -#define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
  53117. -#define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
  53118. -#define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
  53119. -#define MCAST_MSFILTER 48
  53120. -
  53121. -#define MCAST_EXCLUDE 0
  53122. -#define MCAST_INCLUDE 1
  53123. -
  53124. -#define IP_ROUTER_ALERT 5 /* bool */
  53125. -#define IP_PKTINFO 8 /* bool */
  53126. -#define IP_PKTOPTIONS 9
  53127. -#define IP_PMTUDISC 10 /* obsolete name? */
  53128. -#define IP_MTU_DISCOVER 10 /* int; see below */
  53129. -#define IP_RECVERR 11 /* bool */
  53130. -#define IP_RECVTTL 12 /* bool */
  53131. -#define IP_RECVTOS 13 /* bool */
  53132. +#if defined __USE_MISC || defined __USE_GNU
  53133. +# define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
  53134. +# define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
  53135. +# define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
  53136. +# define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
  53137. +# define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
  53138. +# define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
  53139. +# define MCAST_MSFILTER 48
  53140. +# define IP_MULTICAST_ALL 49
  53141. +# define IP_UNICAST_IF 50
  53142. +
  53143. +# define MCAST_EXCLUDE 0
  53144. +# define MCAST_INCLUDE 1
  53145. +#endif
  53146. +
  53147. +#define IP_ROUTER_ALERT 5 /* bool */
  53148. +#define IP_PKTINFO 8 /* bool */
  53149. +#define IP_PKTOPTIONS 9
  53150. +#define IP_PMTUDISC 10 /* obsolete name? */
  53151. +#define IP_MTU_DISCOVER 10 /* int; see below */
  53152. +#define IP_RECVERR 11 /* bool */
  53153. +#define IP_RECVTTL 12 /* bool */
  53154. +#define IP_RECVTOS 13 /* bool */
  53155. +#define IP_MTU 14 /* int */
  53156. +#define IP_FREEBIND 15
  53157. +#define IP_IPSEC_POLICY 16
  53158. +#define IP_XFRM_POLICY 17
  53159. +#define IP_PASSSEC 18
  53160. +#define IP_TRANSPARENT 19
  53161. +#define IP_MULTICAST_ALL 49 /* bool */
  53162. +
  53163. +/* TProxy original addresses */
  53164. +#define IP_ORIGDSTADDR 20
  53165. +#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
  53166. +
  53167. +#define IP_MINTTL 21
  53168. /* IP_MTU_DISCOVER arguments. */
  53169. #define IP_PMTUDISC_DONT 0 /* Never send DF frames. */
  53170. #define IP_PMTUDISC_WANT 1 /* Use per route hints. */
  53171. #define IP_PMTUDISC_DO 2 /* Always DF. */
  53172. +#define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
  53173. /* To select the IP level. */
  53174. #define SOL_IP 0
  53175. @@ -76,6 +93,7 @@
  53176. #define IP_DEFAULT_MULTICAST_LOOP 1
  53177. #define IP_MAX_MEMBERSHIPS 20
  53178. +#if defined __USE_MISC || defined __USE_GNU
  53179. /* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
  53180. The `ip_dst' field is used for the first-hop gateway when using a
  53181. source route (this gets put into the header proper). */
  53182. @@ -100,6 +118,7 @@
  53183. struct in_addr ipi_spec_dst; /* Routing destination address */
  53184. struct in_addr ipi_addr; /* Header destination address */
  53185. };
  53186. +#endif
  53187. #ifdef __UCLIBC_HAS_IPV6__
  53188. /* Options for use with `getsockopt' and `setsockopt' at the IPv6 level.
  53189. @@ -159,6 +178,7 @@
  53190. #define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
  53191. #define IPV6_PMTUDISC_WANT 1 /* Use per route hints. */
  53192. #define IPV6_PMTUDISC_DO 2 /* Always DF. */
  53193. +#define IPV6_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
  53194. /* Socket level values for IPv6. */
  53195. #define SOL_IPV6 41
  53196. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/initspin.h uClibc/libc/sysdeps/linux/common/bits/initspin.h
  53197. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  53198. +++ uClibc/libc/sysdeps/linux/common/bits/initspin.h 2014-02-03 12:32:56.000000000 +0100
  53199. @@ -13,9 +13,8 @@
  53200. Lesser General Public License for more details.
  53201. You should have received a copy of the GNU Lesser General Public
  53202. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  53203. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  53204. - Boston, MA 02111-1307, USA. */
  53205. + License along with the GNU C Library; see the file COPYING.LIB. If
  53206. + not, see <http://www.gnu.org/licenses/>. */
  53207. /* Initial value of a spinlock. Most platforms should use zero,
  53208. unless they only implement a "test and clear" operation instead of
  53209. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctls.h uClibc/libc/sysdeps/linux/common/bits/ioctls.h
  53210. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  53211. +++ uClibc/libc/sysdeps/linux/common/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  53212. @@ -12,9 +12,8 @@
  53213. Lesser General Public License for more details.
  53214. You should have received a copy of the GNU Lesser General Public
  53215. - License along with the GNU C Library; if not, write to the Free
  53216. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53217. - 02111-1307 USA. */
  53218. + License along with the GNU C Library; if not, see
  53219. + <http://www.gnu.org/licenses/>. */
  53220. #ifndef _SYS_IOCTL_H
  53221. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  53222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctl-types.h uClibc/libc/sysdeps/linux/common/bits/ioctl-types.h
  53223. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctl-types.h 2012-05-15 09:20:09.000000000 +0200
  53224. +++ uClibc/libc/sysdeps/linux/common/bits/ioctl-types.h 2014-02-03 12:32:56.000000000 +0100
  53225. @@ -13,9 +13,8 @@
  53226. Lesser General Public License for more details.
  53227. You should have received a copy of the GNU Lesser General Public
  53228. - License along with the GNU C Library; if not, write to the Free
  53229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53230. - 02111-1307 USA. */
  53231. + License along with the GNU C Library; if not, see
  53232. + <http://www.gnu.org/licenses/>. */
  53233. #ifndef _SYS_IOCTL_H
  53234. # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
  53235. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ipc.h uClibc/libc/sysdeps/linux/common/bits/ipc.h
  53236. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  53237. +++ uClibc/libc/sysdeps/linux/common/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  53238. @@ -12,9 +12,8 @@
  53239. Lesser General Public License for more details.
  53240. You should have received a copy of the GNU Lesser General Public
  53241. - License along with the GNU C Library; if not, write to the Free
  53242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53243. - 02111-1307 USA. */
  53244. + License along with the GNU C Library; if not, see
  53245. + <http://www.gnu.org/licenses/>. */
  53246. #ifndef _SYS_IPC_H
  53247. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  53248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel-features.h uClibc/libc/sysdeps/linux/common/bits/kernel-features.h
  53249. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel-features.h 2012-05-15 09:20:09.000000000 +0200
  53250. +++ uClibc/libc/sysdeps/linux/common/bits/kernel-features.h 2014-02-03 12:32:56.000000000 +0100
  53251. @@ -14,9 +14,8 @@
  53252. Lesser General Public License for more details.
  53253. You should have received a copy of the GNU Lesser General Public
  53254. - License along with the GNU C Library; if not, write to the Free
  53255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53256. - 02111-1307 USA. */
  53257. + License along with the GNU C Library; if not, see
  53258. + <http://www.gnu.org/licenses/>. */
  53259. /* This file must not contain any C code. At least it must be protected
  53260. to allow using the file also in assembler files. */
  53261. @@ -311,17 +310,19 @@
  53262. /* Support for various CLOEXEC and NONBLOCK flags was added for x86,
  53263. * x86-64, PPC, IA-64, and SPARC in 2.6.27. */
  53264. -#if __LINUX_KERNEL_VERSION >= 0x02061b \
  53265. - && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
  53266. - || defined __ia64__ || defined __sparc__ || defined __s390__)
  53267. +#if (__LINUX_KERNEL_VERSION >= 0x02061b \
  53268. + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
  53269. + || defined __ia64__ || defined __sparc__ || defined __s390__) \
  53270. + ) || (__LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__) \
  53271. + || defined __aarch64__ || defined __tile__
  53272. /* # define __ASSUME_SOCK_CLOEXEC 1 */
  53273. /* # define __ASSUME_IN_NONBLOCK 1 */
  53274. # define __ASSUME_PIPE2 1
  53275. /* # define __ASSUME_EVENTFD2 1 */
  53276. /* # define __ASSUME_SIGNALFD4 1 */
  53277. +/* # define __ASSUME_DUP3 1 */
  53278. #endif
  53279. -
  53280. /* These features were surely available with 2.4.12. */
  53281. #if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__
  53282. # define __ASSUME_MMAP2_SYSCALL 1
  53283. @@ -494,6 +495,14 @@
  53284. # define __ASSUME_PRIVATE_FUTEX 1
  53285. #endif
  53286. +/* Support for fallocate was added in 2.6.23,
  53287. + on s390 only after 2.6.23-rc1, on alpha only after 2.6.33-rc1. */
  53288. +#if __LINUX_KERNEL_VERSION >= 0x020617 \
  53289. + && (!defined __s390__ || __LINUX_KERNEL_VERSION >= 0x020618) \
  53290. + && (!defined __alpha__ || __LINUX_KERNEL_VERSION >= 0x020621)
  53291. +# define __ASSUME_FALLOCATE 1
  53292. +#endif
  53293. +
  53294. /* getcpu is a syscall for x86-64 since 3.1. */
  53295. #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100
  53296. # define __ASSUME_GETCPU_SYSCALL 1
  53297. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel_sigaction.h uClibc/libc/sysdeps/linux/common/bits/kernel_sigaction.h
  53298. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  53299. +++ uClibc/libc/sysdeps/linux/common/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  53300. @@ -19,18 +19,6 @@
  53301. unsigned long sa_flags;
  53302. void (*sa_restorer)(void);
  53303. };
  53304. -/* In uclibc, userspace struct sigaction is identical to
  53305. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  53306. - * See sigaction.h
  53307. - */
  53308. -
  53309. -extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
  53310. - struct old_kernel_sigaction *);
  53311. -
  53312. #endif
  53313. -
  53314. -extern int __syscall_rt_sigaction(int, const struct sigaction *,
  53315. - struct sigaction *, size_t);
  53316. -
  53317. #endif /* _BITS_SIGACTION_STRUCT_H */
  53318. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/locale.h uClibc/libc/sysdeps/linux/common/bits/locale.h
  53319. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/locale.h 2012-05-15 09:20:09.000000000 +0200
  53320. +++ uClibc/libc/sysdeps/linux/common/bits/locale.h 2014-02-03 12:32:56.000000000 +0100
  53321. @@ -13,9 +13,8 @@
  53322. Lesser General Public License for more details.
  53323. You should have received a copy of the GNU Lesser General Public
  53324. - License along with the GNU C Library; if not, write to the Free
  53325. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53326. - 02111-1307 USA. */
  53327. + License along with the GNU C Library; if not, see
  53328. + <http://www.gnu.org/licenses/>. */
  53329. #if !defined _LOCALE_H && !defined _LANGINFO_H
  53330. # error "Never use <bits/locale.h> directly; include <locale.h> instead."
  53331. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/local_lim.h uClibc/libc/sysdeps/linux/common/bits/local_lim.h
  53332. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  53333. +++ uClibc/libc/sysdeps/linux/common/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  53334. @@ -13,9 +13,8 @@
  53335. Lesser General Public License for more details.
  53336. You should have received a copy of the GNU Lesser General Public
  53337. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  53338. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  53339. - Boston, MA 02111-1307, USA. */
  53340. + License along with the GNU C Library; see the file COPYING.LIB. If
  53341. + not, see <http://www.gnu.org/licenses/>. */
  53342. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  53343. and defines LINK_MAX although filesystems have different maxima. A
  53344. @@ -71,6 +70,8 @@
  53345. /* The number of threads per process. */
  53346. #define _POSIX_THREAD_THREADS_MAX 64
  53347. +/* We have no predefined limit on the number of threads. */
  53348. +#undef PTHREAD_THREADS_MAX
  53349. /* Maximum amount by which a process can descrease its asynchronous I/O
  53350. priority level. */
  53351. @@ -93,3 +94,6 @@
  53352. /* Maximum message queue priority level. */
  53353. #define MQ_PRIO_MAX 32768
  53354. +
  53355. +/* Maximum value the semaphore can have. */
  53356. +#define SEM_VALUE_MAX (2147483647)
  53357. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathcalls.h uClibc/libc/sysdeps/linux/common/bits/mathcalls.h
  53358. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathcalls.h 2012-05-15 09:20:09.000000000 +0200
  53359. +++ uClibc/libc/sysdeps/linux/common/bits/mathcalls.h 2014-02-03 12:32:56.000000000 +0100
  53360. @@ -13,9 +13,8 @@
  53361. Lesser General Public License for more details.
  53362. You should have received a copy of the GNU Lesser General Public
  53363. - License along with the GNU C Library; if not, write to the Free
  53364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53365. - 02111-1307 USA. */
  53366. + License along with the GNU C Library; if not, see
  53367. + <http://www.gnu.org/licenses/>. */
  53368. /* NOTE: Because of the special way this file is used by <math.h>, this
  53369. file must NOT be protected from multiple inclusion as header files
  53370. @@ -49,7 +48,7 @@
  53371. /* __MATHCALLX(type,function,[suffix],args,attrib) and
  53372. - * __MATHCALLI(type,function,[suffix],args) include libm_hidden_def
  53373. + * __MATHCALLI(type,function,[suffix],args) include libm_hidden_proto
  53374. * (for "double" versions only, xxxf and xxxl do not get this treatment).
  53375. *
  53376. * __MATHDECL(type,function,[suffix],args) does not.
  53377. @@ -57,7 +56,7 @@
  53378. * (it is just a shortcut to __MATHDECL(_Mdouble_,function,[suffix],args)).
  53379. *
  53380. * __MATHDECL_PRIV(type,function,[suffix],args,attrib)
  53381. - * includes libm_hidden_def (always) and declares __foo, not foo.
  53382. + * includes libm_hidden_proto (always) and declares __foo, not foo.
  53383. */
  53384. @@ -155,7 +154,7 @@
  53385. __MATHCALLI (exp2,, (_Mdouble_ __x))
  53386. /* Compute base-2 logarithm of X. */
  53387. -__MATHCALL (log2,, (_Mdouble_ __x))
  53388. +__MATHCALLI (log2,, (_Mdouble_ __x))
  53389. __END_NAMESPACE_C99
  53390. #endif
  53391. @@ -223,7 +222,7 @@
  53392. /* Return the fractional part of X after dividing out `ilogb (X)'. */
  53393. -__MATHCALL (significand,, (_Mdouble_ __x))
  53394. +__MATHCALLI (significand,, (_Mdouble_ __x))
  53395. #endif /* Use misc. */
  53396. #if defined __USE_MISC || defined __USE_ISOC99
  53397. @@ -236,7 +235,7 @@
  53398. #ifdef __USE_ISOC99
  53399. __BEGIN_NAMESPACE_C99
  53400. /* Return representation of NaN for double type. */
  53401. -__MATHCALLX (nan,, (__const char *__tagb), (__const__))
  53402. +__MATHCALLX (nan,, (const char *__tagb), (__const__))
  53403. __END_NAMESPACE_C99
  53404. #endif
  53405. @@ -278,7 +277,7 @@
  53406. #if defined __USE_MISC || defined __USE_XOPEN
  53407. /* Obsolete alias for `lgamma'. */
  53408. -__MATHCALL (gamma,, (_Mdouble_))
  53409. +__MATHCALLI (gamma,, (_Mdouble_))
  53410. #endif
  53411. #ifdef __USE_MISC
  53412. @@ -286,6 +285,8 @@
  53413. `signgam'. The reentrant version instead takes a pointer and stores
  53414. the value through it. */
  53415. __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp))
  53416. +/* __MATHCALLI does not work here, probably due to ,_r, */
  53417. +libm_hidden_proto(lgamma_r)
  53418. #endif
  53419. @@ -376,5 +377,5 @@
  53420. #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) \
  53421. && defined __UCLIBC_SUSV3_LEGACY__
  53422. /* Return X times (2 to the Nth power). */
  53423. -__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n))
  53424. +__MATHCALLI (scalb,, (_Mdouble_ __x, _Mdouble_ __n))
  53425. #endif
  53426. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathdef.h uClibc/libc/sysdeps/linux/common/bits/mathdef.h
  53427. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  53428. +++ uClibc/libc/sysdeps/linux/common/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  53429. @@ -12,9 +12,8 @@
  53430. Lesser General Public License for more details.
  53431. You should have received a copy of the GNU Lesser General Public
  53432. - License along with the GNU C Library; if not, write to the Free
  53433. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53434. - 02111-1307 USA. */
  53435. + License along with the GNU C Library; if not, see
  53436. + <http://www.gnu.org/licenses/>. */
  53437. #if !defined _MATH_H && !defined _COMPLEX_H
  53438. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  53439. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mman-common.h uClibc/libc/sysdeps/linux/common/bits/mman-common.h
  53440. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mman-common.h 2012-05-15 09:20:09.000000000 +0200
  53441. +++ uClibc/libc/sysdeps/linux/common/bits/mman-common.h 2014-02-03 12:32:56.000000000 +0100
  53442. @@ -13,9 +13,8 @@
  53443. Lesser General Public License for more details.
  53444. You should have received a copy of the GNU Lesser General Public
  53445. - License along with the GNU C Library; if not, write to the Free
  53446. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53447. - 02111-1307 USA. */
  53448. + License along with the GNU C Library; if not, see
  53449. + <http://www.gnu.org/licenses/>. */
  53450. #ifndef _SYS_MMAN_H
  53451. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  53452. @@ -64,7 +63,7 @@
  53453. # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
  53454. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  53455. # define MAP_STACK 0x20000 /* Allocation is for a stack. */
  53456. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  53457. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  53458. be uninitialized. */
  53459. #endif
  53460. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mqueue.h uClibc/libc/sysdeps/linux/common/bits/mqueue.h
  53461. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mqueue.h 2012-05-15 09:20:09.000000000 +0200
  53462. +++ uClibc/libc/sysdeps/linux/common/bits/mqueue.h 2014-02-03 12:32:56.000000000 +0100
  53463. @@ -12,9 +12,8 @@
  53464. Lesser General Public License for more details.
  53465. You should have received a copy of the GNU Lesser General Public
  53466. - License along with the GNU C Library; if not, write to the Free
  53467. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53468. - 02111-1307 USA. */
  53469. + License along with the GNU C Library; if not, see
  53470. + <http://www.gnu.org/licenses/>. */
  53471. #ifndef _MQUEUE_H
  53472. # error "Never use <bits/mqueue.h> directly; include <mqueue.h> instead."
  53473. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/msq.h uClibc/libc/sysdeps/linux/common/bits/msq.h
  53474. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  53475. +++ uClibc/libc/sysdeps/linux/common/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  53476. @@ -12,9 +12,8 @@
  53477. Lesser General Public License for more details.
  53478. You should have received a copy of the GNU Lesser General Public
  53479. - License along with the GNU C Library; if not, write to the Free
  53480. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53481. - 02111-1307 USA. */
  53482. + License along with the GNU C Library; if not, see
  53483. + <http://www.gnu.org/licenses/>. */
  53484. #ifndef _SYS_MSG_H
  53485. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  53486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/nan.h uClibc/libc/sysdeps/linux/common/bits/nan.h
  53487. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/nan.h 2012-05-15 09:20:09.000000000 +0200
  53488. +++ uClibc/libc/sysdeps/linux/common/bits/nan.h 2014-02-03 12:32:56.000000000 +0100
  53489. @@ -13,9 +13,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. #ifndef _MATH_H
  53498. # error "Never use <bits/nan.h> directly; include <math.h> instead."
  53499. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/netdb.h uClibc/libc/sysdeps/linux/common/bits/netdb.h
  53500. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/netdb.h 2012-05-15 09:20:09.000000000 +0200
  53501. +++ uClibc/libc/sysdeps/linux/common/bits/netdb.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 _NETDB_H
  53511. # error "Never include <bits/netdb.h> directly; use <netdb.h> instead."
  53512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/poll.h uClibc/libc/sysdeps/linux/common/bits/poll.h
  53513. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  53514. +++ uClibc/libc/sysdeps/linux/common/bits/poll.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_POLL_H
  53524. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  53525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix1_lim.h uClibc/libc/sysdeps/linux/common/bits/posix1_lim.h
  53526. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix1_lim.h 2012-05-15 09:20:09.000000000 +0200
  53527. +++ uClibc/libc/sysdeps/linux/common/bits/posix1_lim.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. /*
  53537. * POSIX Standard: 2.9.2 Minimum Values Added to <limits.h>
  53538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix2_lim.h uClibc/libc/sysdeps/linux/common/bits/posix2_lim.h
  53539. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix2_lim.h 2012-05-15 09:20:09.000000000 +0200
  53540. +++ uClibc/libc/sysdeps/linux/common/bits/posix2_lim.h 2014-02-03 12:32:56.000000000 +0100
  53541. @@ -12,9 +12,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. /*
  53550. * Never include this file directly; include <limits.h> instead.
  53551. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix_opt.h uClibc/libc/sysdeps/linux/common/bits/posix_opt.h
  53552. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix_opt.h 2012-05-15 09:20:09.000000000 +0200
  53553. +++ uClibc/libc/sysdeps/linux/common/bits/posix_opt.h 2014-02-03 12:32:56.000000000 +0100
  53554. @@ -1,5 +1,5 @@
  53555. /* Define POSIX options for Linux.
  53556. - Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
  53557. + Copyright (C) 1996-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
  53558. This file is part of the GNU C Library.
  53559. The GNU C Library is free software; you can redistribute it and/or
  53560. @@ -13,12 +13,11 @@
  53561. Lesser General Public License for more details.
  53562. You should have received a copy of the GNU Lesser General Public
  53563. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  53564. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  53565. - Boston, MA 02111-1307, USA. */
  53566. + License along with the GNU C Library; see the file COPYING.LIB. If
  53567. + not, see <http://www.gnu.org/licenses/>. */
  53568. -#ifndef _POSIX_OPT_H
  53569. -#define _POSIX_OPT_H 1
  53570. +#ifndef _BITS_POSIX_OPT_H
  53571. +#define _BITS_POSIX_OPT_H 1
  53572. /* Job control is supported. */
  53573. #define _POSIX_JOB_CONTROL 1
  53574. @@ -27,28 +26,28 @@
  53575. #define _POSIX_SAVED_IDS 1
  53576. /* Priority scheduling is supported. */
  53577. -#define _POSIX_PRIORITY_SCHEDULING 200112L
  53578. +#define _POSIX_PRIORITY_SCHEDULING 200809L
  53579. /* Synchronizing file data is supported. */
  53580. -#define _POSIX_SYNCHRONIZED_IO 200112L
  53581. +#define _POSIX_SYNCHRONIZED_IO 200809L
  53582. /* The fsync function is present. */
  53583. -#define _POSIX_FSYNC 200112L
  53584. +#define _POSIX_FSYNC 200809L
  53585. /* Mapping of files to memory is supported. */
  53586. -#define _POSIX_MAPPED_FILES 200112L
  53587. +#define _POSIX_MAPPED_FILES 200809L
  53588. /* Locking of all memory is supported. */
  53589. -#define _POSIX_MEMLOCK 200112L
  53590. +#define _POSIX_MEMLOCK 200809L
  53591. /* Locking of ranges of memory is supported. */
  53592. -#define _POSIX_MEMLOCK_RANGE 200112L
  53593. +#define _POSIX_MEMLOCK_RANGE 200809L
  53594. /* Setting of memory protections is supported. */
  53595. -#define _POSIX_MEMORY_PROTECTION 200112L
  53596. +#define _POSIX_MEMORY_PROTECTION 200809L
  53597. -/* Only root can change owner of file. */
  53598. -#define _POSIX_CHOWN_RESTRICTED 1
  53599. +/* Some filesystems allow all users to change file ownership. */
  53600. +#define _POSIX_CHOWN_RESTRICTED 0
  53601. /* `c_cc' member of 'struct termios' structure can be disabled by
  53602. using the value _POSIX_VDISABLE. */
  53603. @@ -60,53 +59,67 @@
  53604. /* X/Open realtime support is available. */
  53605. #define _XOPEN_REALTIME 1
  53606. +/* X/Open thread realtime support is available. */
  53607. +#define _XOPEN_REALTIME_THREADS 1
  53608. +
  53609. /* XPG4.2 shared memory is supported. */
  53610. #define _XOPEN_SHM 1
  53611. /* Tell we have POSIX threads. */
  53612. -#define _POSIX_THREADS 200112L
  53613. +#define _POSIX_THREADS 200809L
  53614. /* We have the reentrant functions described in POSIX. */
  53615. #define _POSIX_REENTRANT_FUNCTIONS 1
  53616. -#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
  53617. +#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
  53618. /* We provide priority scheduling for threads. */
  53619. -#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
  53620. +#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
  53621. /* We support user-defined stack sizes. */
  53622. -#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
  53623. +#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
  53624. /* We support user-defined stacks. */
  53625. -#define _POSIX_THREAD_ATTR_STACKADDR 200112L
  53626. +#define _POSIX_THREAD_ATTR_STACKADDR 200809L
  53627. -#ifdef __UCLIBC_HAS_REALTIME__
  53628. -/* We support POSIX.1b semaphores. */
  53629. -#define _POSIX_SEMAPHORES 200112L
  53630. +/* We support priority inheritence. */
  53631. +#define _POSIX_THREAD_PRIO_INHERIT 200809L
  53632. +
  53633. +/* We support priority protection, though only for non-robust
  53634. + mutexes. */
  53635. +#define _POSIX_THREAD_PRIO_PROTECT 200809L
  53636. +
  53637. +#ifdef __USE_XOPEN2K8
  53638. +/* We support priority inheritence for robust mutexes. */
  53639. +# define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
  53640. +
  53641. +/* We do not support priority protection for robust mutexes. */
  53642. +# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
  53643. #endif
  53644. +/* We support POSIX.1b semaphores. */
  53645. +#define _POSIX_SEMAPHORES 200809L
  53646. +
  53647. /* Real-time signals are supported. */
  53648. -#define _POSIX_REALTIME_SIGNALS 200112L
  53649. +#define _POSIX_REALTIME_SIGNALS 200809L
  53650. /* We support asynchronous I/O. */
  53651. -#define _POSIX_ASYNCHRONOUS_IO 200112L
  53652. +#define _POSIX_ASYNCHRONOUS_IO 200809L
  53653. #define _POSIX_ASYNC_IO 1
  53654. /* Alternative name for Unix98. */
  53655. #define _LFS_ASYNCHRONOUS_IO 1
  53656. /* Support for prioritization is also available. */
  53657. -#define _POSIX_PRIORITIZED_IO 200112L
  53658. +#define _POSIX_PRIORITIZED_IO 200809L
  53659. /* The LFS support in asynchronous I/O is also available. */
  53660. #define _LFS64_ASYNCHRONOUS_IO 1
  53661. -#ifdef __UCLIBC_HAS_LFS__
  53662. /* The rest of the LFS is also available. */
  53663. #define _LFS_LARGEFILE 1
  53664. #define _LFS64_LARGEFILE 1
  53665. #define _LFS64_STDIO 1
  53666. -#endif
  53667. /* POSIX shared memory objects are implemented. */
  53668. -#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
  53669. +#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
  53670. /* CPU-time clocks support needs to be checked at runtime. */
  53671. #define _POSIX_CPUTIME 0
  53672. @@ -114,61 +127,53 @@
  53673. /* Clock support in threads must be also checked at runtime. */
  53674. #define _POSIX_THREAD_CPUTIME 0
  53675. -#ifdef __UCLIBC_HAS_REGEX__
  53676. /* GNU libc provides regular expression handling. */
  53677. #define _POSIX_REGEXP 1
  53678. -#endif
  53679. /* Reader/Writer locks are available. */
  53680. -#define _POSIX_READER_WRITER_LOCKS 200112L
  53681. +#define _POSIX_READER_WRITER_LOCKS 200809L
  53682. /* We have a POSIX shell. */
  53683. #define _POSIX_SHELL 1
  53684. /* We support the Timeouts option. */
  53685. -#define _POSIX_TIMEOUTS 200112L
  53686. +#define _POSIX_TIMEOUTS 200809L
  53687. /* We support spinlocks. */
  53688. -#define _POSIX_SPIN_LOCKS 200112L
  53689. +#define _POSIX_SPIN_LOCKS 200809L
  53690. /* The `spawn' function family is supported. */
  53691. -#if 0 /* no support in uClibc (yet) */
  53692. -#define _POSIX_SPAWN 200112L
  53693. -#endif
  53694. +#define _POSIX_SPAWN 200809L
  53695. /* We have POSIX timers. */
  53696. -#define _POSIX_TIMERS 200112L
  53697. +#define _POSIX_TIMERS 200809L
  53698. /* The barrier functions are available. */
  53699. -#define _POSIX_BARRIERS 200112L
  53700. +#define _POSIX_BARRIERS 200809L
  53701. /* POSIX message queues are available. */
  53702. -#define _POSIX_MESSAGE_PASSING 200112L
  53703. +#define _POSIX_MESSAGE_PASSING 200809L
  53704. /* Thread process-shared synchronization is supported. */
  53705. -#define _POSIX_THREAD_PROCESS_SHARED 200112L
  53706. +#define _POSIX_THREAD_PROCESS_SHARED 200809L
  53707. /* The monotonic clock might be available. */
  53708. #define _POSIX_MONOTONIC_CLOCK 0
  53709. /* The clock selection interfaces are available. */
  53710. -#define _POSIX_CLOCK_SELECTION 200112L
  53711. +#define _POSIX_CLOCK_SELECTION 200809L
  53712. /* Advisory information interfaces are available. */
  53713. -#define _POSIX_ADVISORY_INFO 200112L
  53714. +#define _POSIX_ADVISORY_INFO 200809L
  53715. -#ifdef __UCLIBC_HAS_IPV6__
  53716. /* IPv6 support is available. */
  53717. -#define _POSIX_IPV6 200112L
  53718. -#endif
  53719. +#define _POSIX_IPV6 200809L
  53720. -#ifdef __UCLIBC_HAS_SOCKET__
  53721. /* Raw socket support is available. */
  53722. -#define _POSIX_RAW_SOCKETS 200112L
  53723. -#endif
  53724. +#define _POSIX_RAW_SOCKETS 200809L
  53725. /* We have at least one terminal. */
  53726. -#define _POSIX2_CHAR_TERM 200112L
  53727. +#define _POSIX2_CHAR_TERM 200809L
  53728. /* Neither process nor thread sporadic server interfaces is available. */
  53729. #define _POSIX_SPORADIC_SERVER -1
  53730. @@ -183,8 +188,4 @@
  53731. /* Typed memory objects are not available. */
  53732. #define _POSIX_TYPED_MEMORY_OBJECTS -1
  53733. -/* No support for priority inheritance or protection so far. */
  53734. -#define _POSIX_THREAD_PRIO_INHERIT -1
  53735. -#define _POSIX_THREAD_PRIO_PROTECT -1
  53736. -
  53737. -#endif /* posix_opt.h */
  53738. +#endif /* bits/posix_opt.h */
  53739. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/resource.h uClibc/libc/sysdeps/linux/common/bits/resource.h
  53740. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  53741. +++ uClibc/libc/sysdeps/linux/common/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  53742. @@ -14,9 +14,8 @@
  53743. Lesser General Public License for more details.
  53744. You should have received a copy of the GNU Lesser General Public
  53745. - License along with the GNU C Library; if not, write to the Free
  53746. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53747. - 02111-1307 USA. */
  53748. + License along with the GNU C Library; if not, see
  53749. + <http://www.gnu.org/licenses/>. */
  53750. #ifndef _SYS_RESOURCE_H
  53751. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  53752. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sched.h uClibc/libc/sysdeps/linux/common/bits/sched.h
  53753. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sched.h 2012-05-15 09:20:09.000000000 +0200
  53754. +++ uClibc/libc/sysdeps/linux/common/bits/sched.h 2014-02-03 12:32:56.000000000 +0100
  53755. @@ -15,9 +15,8 @@
  53756. Lesser General Public License for more details.
  53757. You should have received a copy of the GNU Lesser General Public
  53758. - License along with the GNU C Library; if not, write to the Free
  53759. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53760. - 02111-1307 USA. */
  53761. + License along with the GNU C Library; if not, see
  53762. + <http://www.gnu.org/licenses/>. */
  53763. #ifndef __need_schedparam
  53764. @@ -109,6 +108,7 @@
  53765. /* Size definition for CPU sets. */
  53766. # define __CPU_SETSIZE 1024
  53767. # define __NCPUBITS (8 * sizeof (__cpu_mask))
  53768. +# include <stdlib.h>
  53769. /* Type for array elements in 'cpu_set_t'. */
  53770. typedef unsigned long int __cpu_mask;
  53771. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/select.h uClibc/libc/sysdeps/linux/common/bits/select.h
  53772. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/select.h 2012-05-15 09:20:09.000000000 +0200
  53773. +++ uClibc/libc/sysdeps/linux/common/bits/select.h 2014-02-03 12:32:56.000000000 +0100
  53774. @@ -12,9 +12,8 @@
  53775. Lesser General Public License for more details.
  53776. You should have received a copy of the GNU Lesser General Public
  53777. - License along with the GNU C Library; if not, write to the Free
  53778. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53779. - 02111-1307 USA. */
  53780. + License along with the GNU C Library; if not, see
  53781. + <http://www.gnu.org/licenses/>. */
  53782. #ifndef _SYS_SELECT_H
  53783. # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
  53784. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sem.h uClibc/libc/sysdeps/linux/common/bits/sem.h
  53785. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  53786. +++ uClibc/libc/sysdeps/linux/common/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  53787. @@ -12,9 +12,8 @@
  53788. Lesser General Public License for more details.
  53789. You should have received a copy of the GNU Lesser General Public
  53790. - License along with the GNU C Library; if not, write to the Free
  53791. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53792. - 02111-1307 USA. */
  53793. + License along with the GNU C Library; if not, see
  53794. + <http://www.gnu.org/licenses/>. */
  53795. #ifndef _SYS_SEM_H
  53796. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  53797. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/shm.h uClibc/libc/sysdeps/linux/common/bits/shm.h
  53798. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  53799. +++ uClibc/libc/sysdeps/linux/common/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  53800. @@ -12,9 +12,8 @@
  53801. Lesser General Public License for more details.
  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; if not, see
  53807. + <http://www.gnu.org/licenses/>. */
  53808. #ifndef _SYS_SHM_H
  53809. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  53810. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigaction.h uClibc/libc/sysdeps/linux/common/bits/sigaction.h
  53811. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  53812. +++ uClibc/libc/sysdeps/linux/common/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  53813. @@ -13,9 +13,8 @@
  53814. Lesser General Public License for more details.
  53815. You should have received a copy of the GNU Lesser General Public
  53816. - License along with the GNU C Library; if not, write to the Free
  53817. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53818. - 02111-1307 USA. */
  53819. + License along with the GNU C Library; if not, see
  53820. + <http://www.gnu.org/licenses/>. */
  53821. #ifndef _SIGNAL_H
  53822. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  53823. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontext.h uClibc/libc/sysdeps/linux/common/bits/sigcontext.h
  53824. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  53825. +++ uClibc/libc/sysdeps/linux/common/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  53826. @@ -12,9 +12,8 @@
  53827. Lesser General Public License for more details.
  53828. You should have received a copy of the GNU Lesser General Public
  53829. - License along with the GNU C Library; if not, write to the Free
  53830. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53831. - 02111-1307 USA. */
  53832. + License along with the GNU C Library; if not, see
  53833. + <http://www.gnu.org/licenses/>. */
  53834. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  53835. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  53836. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/common/bits/sigcontextinfo.h
  53837. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  53838. +++ uClibc/libc/sysdeps/linux/common/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  53839. @@ -13,9 +13,8 @@
  53840. Lesser General Public License for more details.
  53841. You should have received a copy of the GNU Lesser General Public
  53842. - License along with the GNU C Library; if not, write to the Free
  53843. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53844. - 02111-1307 USA. */
  53845. + License along with the GNU C Library; if not, see
  53846. + <http://www.gnu.org/licenses/>. */
  53847. /* In general we cannot provide any information. */
  53848. #define SIGCONTEXT struct sigcontext *
  53849. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/siginfo.h uClibc/libc/sysdeps/linux/common/bits/siginfo.h
  53850. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  53851. +++ uClibc/libc/sysdeps/linux/common/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  53852. @@ -13,9 +13,8 @@
  53853. Lesser General Public License for more details.
  53854. You should have received a copy of the GNU Lesser General Public
  53855. - License along with the GNU C Library; if not, write to the Free
  53856. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53857. - 02111-1307 USA. */
  53858. + License along with the GNU C Library; if not, see
  53859. + <http://www.gnu.org/licenses/>. */
  53860. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  53861. && !defined __need_sigevent_t
  53862. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/signum.h uClibc/libc/sysdeps/linux/common/bits/signum.h
  53863. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  53864. +++ uClibc/libc/sysdeps/linux/common/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  53865. @@ -13,9 +13,8 @@
  53866. Lesser General Public License for more details.
  53867. You should have received a copy of the GNU Lesser General Public
  53868. - License along with the GNU C Library; if not, write to the Free
  53869. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53870. - 02111-1307 USA. */
  53871. + License along with the GNU C Library; if not, see
  53872. + <http://www.gnu.org/licenses/>. */
  53873. #ifdef _SIGNAL_H
  53874. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigset.h uClibc/libc/sysdeps/linux/common/bits/sigset.h
  53875. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigset.h 2012-05-15 09:20:09.000000000 +0200
  53876. +++ uClibc/libc/sysdeps/linux/common/bits/sigset.h 2014-02-03 12:32:56.000000000 +0100
  53877. @@ -13,9 +13,8 @@
  53878. Lesser General Public License for more details.
  53879. You should have received a copy of the GNU Lesser General Public
  53880. - License along with the GNU C Library; if not, write to the Free
  53881. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53882. - 02111-1307 USA. */
  53883. + License along with the GNU C Library; if not, see
  53884. + <http://www.gnu.org/licenses/>. */
  53885. #ifndef _SIGSET_H_types
  53886. # define _SIGSET_H_types 1
  53887. @@ -153,7 +152,7 @@
  53888. checking is done in the non __ versions. */
  53889. # if !defined __USE_EXTERN_INLINES || defined __PROVIDE_OUT_OF_LINE_SIGSETFN
  53890. -extern int __sigismember (__const __sigset_t *, int);
  53891. +extern int __sigismember (const __sigset_t *, int);
  53892. libc_hidden_proto(__sigismember)
  53893. extern int __sigaddset (__sigset_t *, int);
  53894. libc_hidden_proto(__sigaddset)
  53895. @@ -179,7 +178,7 @@
  53896. return BODY; \
  53897. }
  53898. -__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, __const)
  53899. +__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const)
  53900. __SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), )
  53901. __SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), )
  53902. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigstack.h uClibc/libc/sysdeps/linux/common/bits/sigstack.h
  53903. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  53904. +++ uClibc/libc/sysdeps/linux/common/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  53905. @@ -13,9 +13,8 @@
  53906. Lesser General Public License for more details.
  53907. You should have received a copy of the GNU Lesser General Public
  53908. - License along with the GNU C Library; if not, write to the Free
  53909. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53910. - 02111-1307 USA. */
  53911. + License along with the GNU C Library; if not, see
  53912. + <http://www.gnu.org/licenses/>. */
  53913. #ifndef _SIGNAL_H
  53914. # error "Never include this file directly. Use <signal.h> instead"
  53915. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigthread.h uClibc/libc/sysdeps/linux/common/bits/sigthread.h
  53916. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigthread.h 2012-05-15 09:20:09.000000000 +0200
  53917. +++ uClibc/libc/sysdeps/linux/common/bits/sigthread.h 2014-02-03 12:32:56.000000000 +0100
  53918. @@ -13,9 +13,8 @@
  53919. Lesser General Public License for more details.
  53920. You should have received a copy of the GNU Lesser General Public
  53921. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  53922. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  53923. - Boston, MA 02111-1307, USA. */
  53924. + License along with the GNU C Library; see the file COPYING.LIB. If
  53925. + not, see <http://www.gnu.org/licenses/>. */
  53926. #ifndef _BITS_SIGTHREAD_H
  53927. #define _BITS_SIGTHREAD_H 1
  53928. @@ -29,7 +28,7 @@
  53929. /* Modify the signal mask for the calling thread. The arguments have
  53930. the same meaning as for sigprocmask(2). */
  53931. extern int pthread_sigmask (int __how,
  53932. - __const __sigset_t *__restrict __newmask,
  53933. + const __sigset_t *__restrict __newmask,
  53934. __sigset_t *__restrict __oldmask)__THROW;
  53935. /* Send signal SIGNO to the given thread. */
  53936. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sockaddr.h uClibc/libc/sysdeps/linux/common/bits/sockaddr.h
  53937. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sockaddr.h 2012-05-15 09:20:09.000000000 +0200
  53938. +++ uClibc/libc/sysdeps/linux/common/bits/sockaddr.h 2014-02-03 12:32:56.000000000 +0100
  53939. @@ -13,9 +13,8 @@
  53940. Lesser General Public License for more details.
  53941. You should have received a copy of the GNU Lesser General Public
  53942. - License along with the GNU C Library; if not, write to the Free
  53943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53944. - 02111-1307 USA. */
  53945. + License along with the GNU C Library; if not, see
  53946. + <http://www.gnu.org/licenses/>. */
  53947. /*
  53948. * Never include this file directly; use <sys/socket.h> instead.
  53949. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket.h uClibc/libc/sysdeps/linux/common/bits/socket.h
  53950. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  53951. +++ uClibc/libc/sysdeps/linux/common/bits/socket.h 2014-02-03 12:32:56.000000000 +0100
  53952. @@ -1,5 +1,6 @@
  53953. /* System-specific socket constants and types. Linux version.
  53954. - Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  53955. + Copyright (C) 1991,1992,1994-2001,2004,2006-2012
  53956. + Free Software Foundation, Inc.
  53957. This file is part of the GNU C Library.
  53958. The GNU C Library is free software; you can redistribute it and/or
  53959. @@ -13,19 +14,17 @@
  53960. Lesser General Public License for more details.
  53961. You should have received a copy of the GNU Lesser General Public
  53962. - License along with the GNU C Library; if not, write to the Free
  53963. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53964. - 02111-1307 USA. */
  53965. + License along with the GNU C Library; if not, see
  53966. + <http://www.gnu.org/licenses/>. */
  53967. #ifndef __BITS_SOCKET_H
  53968. #define __BITS_SOCKET_H
  53969. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  53970. +#ifndef _SYS_SOCKET_H
  53971. # error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  53972. #endif
  53973. #define __need_size_t
  53974. -#define __need_NULL
  53975. #include <stddef.h>
  53976. #include <limits.h>
  53977. @@ -37,37 +36,8 @@
  53978. # define __socklen_t_defined
  53979. #endif
  53980. -/* Types of sockets. */
  53981. -enum __socket_type
  53982. -{
  53983. - SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  53984. - byte streams. */
  53985. -#define SOCK_STREAM SOCK_STREAM
  53986. - SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  53987. - of fixed maximum length. */
  53988. -#define SOCK_DGRAM SOCK_DGRAM
  53989. - SOCK_RAW = 3, /* Raw protocol interface. */
  53990. -#define SOCK_RAW SOCK_RAW
  53991. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  53992. -#define SOCK_RDM SOCK_RDM
  53993. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  53994. - datagrams of fixed maximum length. */
  53995. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  53996. - SOCK_PACKET = 10, /* Linux specific way of getting packets
  53997. - at the dev level. For writing rarp and
  53998. - other similar things on the user level. */
  53999. -#define SOCK_PACKET SOCK_PACKET
  54000. -
  54001. - /* Flags to be ORed into the type parameter of socket and socketpair and
  54002. - used for the flags parameter of paccept. */
  54003. -
  54004. - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  54005. - new descriptor(s). */
  54006. -#define SOCK_CLOEXEC SOCK_CLOEXEC
  54007. - SOCK_NONBLOCK = 04000 /* Atomically mark descriptor(s) as
  54008. - non-blocking. */
  54009. -#define SOCK_NONBLOCK SOCK_NONBLOCK
  54010. -};
  54011. +/* Get the architecture-dependent definition of enum __socket_type. */
  54012. +#include <bits/socket_type.h>
  54013. /* Protocol families. */
  54014. #define PF_UNSPEC 0 /* Unspecified. */
  54015. @@ -94,22 +64,24 @@
  54016. #define PF_ASH 18 /* Ash. */
  54017. #define PF_ECONET 19 /* Acorn Econet. */
  54018. #define PF_ATMSVC 20 /* ATM SVCs. */
  54019. +#define PF_RDS 21 /* RDS sockets. */
  54020. #define PF_SNA 22 /* Linux SNA Project */
  54021. #define PF_IRDA 23 /* IRDA sockets. */
  54022. #define PF_PPPOX 24 /* PPPoX sockets. */
  54023. #define PF_WANPIPE 25 /* Wanpipe API sockets. */
  54024. -#define PF_LLC 26 /* Linux LLC. */
  54025. -#define PF_CAN 29 /* Controller Area Network. */
  54026. -#define PF_TIPC 30 /* TIPC sockets. */
  54027. +#define PF_LLC 26 /* Linux LLC. */
  54028. +#define PF_CAN 29 /* Controller Area Network. */
  54029. +#define PF_TIPC 30 /* TIPC sockets. */
  54030. #define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  54031. #define PF_IUCV 32 /* IUCV sockets. */
  54032. -#define PF_RXRPC 33 /* RxRPC sockets. */
  54033. -#define PF_ISDN 34 /* mISDN sockets. */
  54034. -#define PF_PHONET 35 /* Phonet sockets. */
  54035. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  54036. -#define PF_CAIF 37 /* CAIF sockets. */
  54037. -#define PF_ALG 38 /* Algorithm sockets. */
  54038. -#define PF_MAX 39 /* For now.. */
  54039. +#define PF_RXRPC 33 /* RxRPC sockets. */
  54040. +#define PF_ISDN 34 /* mISDN sockets. */
  54041. +#define PF_PHONET 35 /* Phonet sockets. */
  54042. +#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  54043. +#define PF_CAIF 37 /* CAIF sockets. */
  54044. +#define PF_ALG 38 /* Algorithm sockets. */
  54045. +#define PF_NFC 39 /* NFC sockets. */
  54046. +#define PF_MAX 40 /* For now.. */
  54047. /* Address families. */
  54048. #define AF_UNSPEC PF_UNSPEC
  54049. @@ -136,21 +108,23 @@
  54050. #define AF_ASH PF_ASH
  54051. #define AF_ECONET PF_ECONET
  54052. #define AF_ATMSVC PF_ATMSVC
  54053. +#define AF_RDS PF_RDS
  54054. #define AF_SNA PF_SNA
  54055. #define AF_IRDA PF_IRDA
  54056. #define AF_PPPOX PF_PPPOX
  54057. #define AF_WANPIPE PF_WANPIPE
  54058. -#define AF_LLC PF_LLC
  54059. -#define AF_CAN PF_CAN
  54060. -#define AF_TIPC PF_TIPC
  54061. +#define AF_LLC PF_LLC
  54062. +#define AF_CAN PF_CAN
  54063. +#define AF_TIPC PF_TIPC
  54064. #define AF_BLUETOOTH PF_BLUETOOTH
  54065. -#define AF_IUCV PF_IUCV
  54066. -#define AF_RXRPC PF_RXRPC
  54067. -#define AF_ISDN PF_ISDN
  54068. -#define AF_PHONET PF_PHONET
  54069. -#define AF_IEEE802154 PF_IEEE802154
  54070. -#define AF_CAIF PF_CAIF
  54071. -#define AF_ALG PF_ALG
  54072. +#define AF_IUCV PF_IUCV
  54073. +#define AF_RXRPC PF_RXRPC
  54074. +#define AF_ISDN PF_ISDN
  54075. +#define AF_PHONET PF_PHONET
  54076. +#define AF_IEEE802154 PF_IEEE802154
  54077. +#define AF_CAIF PF_CAIF
  54078. +#define AF_ALG PF_ALG
  54079. +#define AF_NFC PF_NFC
  54080. #define AF_MAX PF_MAX
  54081. /* Socket level values. Others are defined in the appropriate headers.
  54082. @@ -235,8 +209,14 @@
  54083. #define MSG_ERRQUEUE MSG_ERRQUEUE
  54084. MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  54085. #define MSG_NOSIGNAL MSG_NOSIGNAL
  54086. - MSG_MORE = 0x8000 /* Sender will send more. */
  54087. + MSG_MORE = 0x8000, /* Sender will send more. */
  54088. #define MSG_MORE MSG_MORE
  54089. + MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
  54090. +#define MSG_WAITFORONE MSG_WAITFORONE
  54091. + MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
  54092. + descriptor received through
  54093. + SCM_RIGHTS. */
  54094. +#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
  54095. };
  54096. @@ -290,7 +270,7 @@
  54097. #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  54098. #define CMSG_FIRSTHDR(mhdr) \
  54099. ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  54100. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  54101. + ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
  54102. #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  54103. & (size_t) ~(sizeof (size_t) - 1))
  54104. #define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  54105. @@ -302,14 +282,14 @@
  54106. libc_hidden_proto(__cmsg_nxthdr)
  54107. #ifdef __USE_EXTERN_INLINES
  54108. # ifndef _EXTERN_INLINE
  54109. -# define _EXTERN_INLINE extern __inline
  54110. +# define _EXTERN_INLINE __extern_inline
  54111. # endif
  54112. _EXTERN_INLINE struct cmsghdr *
  54113. __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  54114. {
  54115. if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  54116. /* The kernel header does this so there may be a reason. */
  54117. - return 0;
  54118. + return (struct cmsghdr *) 0;
  54119. __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  54120. + CMSG_ALIGN (__cmsg->cmsg_len));
  54121. @@ -318,7 +298,7 @@
  54122. || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  54123. > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  54124. /* No more entries. */
  54125. - return 0;
  54126. + return (struct cmsghdr *) 0;
  54127. return __cmsg;
  54128. }
  54129. #endif /* Use `extern inline'. */
  54130. @@ -329,20 +309,21 @@
  54131. {
  54132. SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  54133. #define SCM_RIGHTS SCM_RIGHTS
  54134. -#ifdef __USE_BSD
  54135. +#ifdef __USE_GNU
  54136. , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  54137. # define SCM_CREDENTIALS SCM_CREDENTIALS
  54138. #endif
  54139. };
  54140. +#ifdef __USE_GNU
  54141. /* User visible structure for SCM_CREDENTIALS message */
  54142. -
  54143. struct ucred
  54144. {
  54145. pid_t pid; /* PID of sending process. */
  54146. uid_t uid; /* UID of sending process. */
  54147. gid_t gid; /* GID of sending process. */
  54148. };
  54149. +#endif
  54150. /* Get socket manipulation related informations from kernel headers. */
  54151. #ifndef __GLIBC__
  54152. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket_type.h uClibc/libc/sysdeps/linux/common/bits/socket_type.h
  54153. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  54154. +++ uClibc/libc/sysdeps/linux/common/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  54155. @@ -0,0 +1,54 @@
  54156. +/* Define enum __socket_type for generic Linux.
  54157. + Copyright (C) 1991-2012 Free Software Foundation, Inc.
  54158. + This file is part of the GNU C Library.
  54159. +
  54160. + The GNU C Library is free software; you can redistribute it and/or
  54161. + modify it under the terms of the GNU Lesser General Public
  54162. + License as published by the Free Software Foundation; either
  54163. + version 2.1 of the License, or (at your option) any later version.
  54164. +
  54165. + The GNU C Library is distributed in the hope that it will be useful,
  54166. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  54167. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  54168. + Lesser General Public License for more details.
  54169. +
  54170. + You should have received a copy of the GNU Lesser General Public
  54171. + License along with the GNU C Library; if not, see
  54172. + <http://www.gnu.org/licenses/>. */
  54173. +
  54174. +#ifndef _SYS_SOCKET_H
  54175. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  54176. +#endif
  54177. +
  54178. +/* Types of sockets. */
  54179. +enum __socket_type
  54180. +{
  54181. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  54182. + byte streams. */
  54183. +#define SOCK_STREAM SOCK_STREAM
  54184. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  54185. + of fixed maximum length. */
  54186. +#define SOCK_DGRAM SOCK_DGRAM
  54187. + SOCK_RAW = 3, /* Raw protocol interface. */
  54188. +#define SOCK_RAW SOCK_RAW
  54189. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  54190. +#define SOCK_RDM SOCK_RDM
  54191. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  54192. + datagrams of fixed maximum length. */
  54193. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  54194. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  54195. +#define SOCK_DCCP SOCK_DCCP
  54196. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  54197. + at the dev level. For writing rarp and
  54198. + other similar things on the user level. */
  54199. +#define SOCK_PACKET SOCK_PACKET
  54200. +
  54201. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  54202. +
  54203. + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  54204. + new descriptor(s). */
  54205. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  54206. + SOCK_NONBLOCK = 00004000 /* Atomically mark descriptor(s) as
  54207. + non-blocking. */
  54208. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  54209. +};
  54210. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stab.def uClibc/libc/sysdeps/linux/common/bits/stab.def
  54211. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stab.def 2012-05-15 09:20:09.000000000 +0200
  54212. +++ uClibc/libc/sysdeps/linux/common/bits/stab.def 2014-02-03 12:32:56.000000000 +0100
  54213. @@ -13,9 +13,8 @@
  54214. Lesser General Public License for more details.
  54215. You should have received a copy of the GNU Lesser General Public
  54216. - License along with the GNU C Library; if not, write to the Free
  54217. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54218. - 02111-1307 USA. */
  54219. + License along with the GNU C Library; if not, see
  54220. + <http://www.gnu.org/licenses/>. */
  54221. /* This contains contribution from Cygnus Support. */
  54222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stackinfo.h uClibc/libc/sysdeps/linux/common/bits/stackinfo.h
  54223. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  54224. +++ uClibc/libc/sysdeps/linux/common/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  54225. @@ -12,9 +12,8 @@
  54226. Lesser General Public License for more details.
  54227. You should have received a copy of the GNU Lesser General Public
  54228. - License along with the GNU C Library; if not, write to the Free
  54229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54230. - 02111-1307 USA. */
  54231. + License along with the GNU C Library; if not, see
  54232. + <http://www.gnu.org/licenses/>. */
  54233. /* This file contains a bit of information about the stack allocation
  54234. of the processor. Since there is no general truth we can't say
  54235. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statfs.h uClibc/libc/sysdeps/linux/common/bits/statfs.h
  54236. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  54237. +++ uClibc/libc/sysdeps/linux/common/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  54238. @@ -12,9 +12,8 @@
  54239. Lesser General Public License for more details.
  54240. You should have received a copy of the GNU Lesser General Public
  54241. - License along with the GNU C Library; if not, write to the Free
  54242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54243. - 02111-1307 USA. */
  54244. + License along with the GNU C Library; if not, see
  54245. + <http://www.gnu.org/licenses/>. */
  54246. #ifndef _SYS_STATFS_H
  54247. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  54248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stat.h uClibc/libc/sysdeps/linux/common/bits/stat.h
  54249. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  54250. +++ uClibc/libc/sysdeps/linux/common/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  54251. @@ -12,9 +12,8 @@
  54252. Lesser General Public License for more details.
  54253. You should have received a copy of the GNU Lesser General Public
  54254. - License along with the GNU C Library; if not, write to the Free
  54255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54256. - 02111-1307 USA. */
  54257. + License along with the GNU C Library; if not, see
  54258. + <http://www.gnu.org/licenses/>. */
  54259. #ifndef _SYS_STAT_H
  54260. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  54261. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statvfs.h uClibc/libc/sysdeps/linux/common/bits/statvfs.h
  54262. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statvfs.h 2012-05-15 09:20:09.000000000 +0200
  54263. +++ uClibc/libc/sysdeps/linux/common/bits/statvfs.h 2014-02-03 12:32:56.000000000 +0100
  54264. @@ -12,9 +12,8 @@
  54265. Lesser General Public License for more details.
  54266. You should have received a copy of the GNU Lesser General Public
  54267. - License along with the GNU C Library; if not, write to the Free
  54268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54269. - 02111-1307 USA. */
  54270. + License along with the GNU C Library; if not, see
  54271. + <http://www.gnu.org/licenses/>. */
  54272. #ifndef _SYS_STATVFS_H
  54273. # error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."
  54274. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio.h uClibc/libc/sysdeps/linux/common/bits/stdio.h
  54275. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio.h 2012-05-15 09:20:09.000000000 +0200
  54276. +++ uClibc/libc/sysdeps/linux/common/bits/stdio.h 2014-02-03 12:32:56.000000000 +0100
  54277. @@ -13,9 +13,8 @@
  54278. Lesser General Public License for more details.
  54279. You should have received a copy of the GNU Lesser General Public
  54280. - License along with the GNU C Library; if not, write to the Free
  54281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54282. - 02111-1307 USA. */
  54283. + License along with the GNU C Library; if not, see
  54284. + <http://www.gnu.org/licenses/>. */
  54285. #ifndef _STDIO_H
  54286. # error "Never include <bits/stdio.h> directly; use <stdio.h> instead."
  54287. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio_lim.h uClibc/libc/sysdeps/linux/common/bits/stdio_lim.h
  54288. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio_lim.h 2012-05-15 09:20:09.000000000 +0200
  54289. +++ uClibc/libc/sysdeps/linux/common/bits/stdio_lim.h 2014-02-03 12:32:56.000000000 +0100
  54290. @@ -12,9 +12,8 @@
  54291. Lesser General Public License for more details.
  54292. You should have received a copy of the GNU Lesser General Public
  54293. - License along with the GNU C Library; if not, write to the Free
  54294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54295. - 02111-1307 USA. */
  54296. + License along with the GNU C Library; if not, see
  54297. + <http://www.gnu.org/licenses/>. */
  54298. #if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX
  54299. # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
  54300. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/termios.h uClibc/libc/sysdeps/linux/common/bits/termios.h
  54301. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  54302. +++ uClibc/libc/sysdeps/linux/common/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  54303. @@ -14,9 +14,8 @@
  54304. Lesser General Public License for more details.
  54305. You should have received a copy of the GNU Lesser General Public
  54306. - License along with the GNU C Library; if not, write to the Free
  54307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54308. - 02111-1307 USA. */
  54309. + License along with the GNU C Library; if not, see
  54310. + <http://www.gnu.org/licenses/>. */
  54311. #ifndef _TERMIOS_H
  54312. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  54313. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/time.h uClibc/libc/sysdeps/linux/common/bits/time.h
  54314. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/time.h 2012-05-15 09:20:09.000000000 +0200
  54315. +++ uClibc/libc/sysdeps/linux/common/bits/time.h 2014-02-03 12:32:56.000000000 +0100
  54316. @@ -13,9 +13,8 @@
  54317. Lesser General Public License for more details.
  54318. You should have received a copy of the GNU Lesser General Public
  54319. - License along with the GNU C Library; if not, write to the Free
  54320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54321. - 02111-1307 USA. */
  54322. + License along with the GNU C Library; if not, see
  54323. + <http://www.gnu.org/licenses/>. */
  54324. /*
  54325. * Never include this file directly; use <time.h> instead.
  54326. @@ -54,6 +53,12 @@
  54327. # define CLOCK_PROCESS_CPUTIME_ID 2
  54328. /* Thread-specific CPU-time clock. */
  54329. # define CLOCK_THREAD_CPUTIME_ID 3
  54330. +/* Monotonic system-wide clock, not adjusted for frequency scaling. */
  54331. +# define CLOCK_MONOTONIC_RAW 4
  54332. +/* Identifier for system-wide realtime clock, updated only on ticks. */
  54333. +# define CLOCK_REALTIME_COARSE 5
  54334. +/* Monotonic system-wide clock, updated only on ticks. */
  54335. +# define CLOCK_MONOTONIC_COARSE 6
  54336. /* Flag to indicate time is absolute. */
  54337. # define TIMER_ABSTIME 1
  54338. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/types.h uClibc/libc/sysdeps/linux/common/bits/types.h
  54339. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/types.h 2012-05-15 09:20:09.000000000 +0200
  54340. +++ uClibc/libc/sysdeps/linux/common/bits/types.h 2014-02-03 12:32:56.000000000 +0100
  54341. @@ -1,5 +1,5 @@
  54342. /* bits/types.h -- definitions of __*_t types underlying *_t types.
  54343. - Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
  54344. + Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
  54345. This file is part of the GNU C Library.
  54346. The GNU C Library is free software; you can redistribute it and/or
  54347. @@ -13,9 +13,8 @@
  54348. Lesser General Public License for more details.
  54349. You should have received a copy of the GNU Lesser General Public
  54350. - License along with the GNU C Library; if not, write to the Free
  54351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54352. - 02111-1307 USA. */
  54353. + License along with the GNU C Library; if not, see
  54354. + <http://www.gnu.org/licenses/>. */
  54355. /*
  54356. * Never include this file directly; use <sys/types.h> instead.
  54357. @@ -27,8 +26,6 @@
  54358. #include <features.h>
  54359. #include <bits/wordsize.h>
  54360. -#define __need_size_t
  54361. -#include <stddef.h>
  54362. #ifdef _LIBC
  54363. #include <bits/kernel_types.h>
  54364. #endif
  54365. @@ -49,7 +46,7 @@
  54366. #if __WORDSIZE == 64
  54367. typedef signed long int __int64_t;
  54368. typedef unsigned long int __uint64_t;
  54369. -#elif defined(__GNUC__)
  54370. +#elif defined(__GNUC__) || defined __ICC || defined __TenDRA__
  54371. __extension__ typedef signed long long int __int64_t;
  54372. __extension__ typedef unsigned long long int __uint64_t;
  54373. #endif
  54374. @@ -58,7 +55,7 @@
  54375. #if __WORDSIZE == 64
  54376. typedef long int __quad_t;
  54377. typedef unsigned long int __u_quad_t;
  54378. -#elif defined(__GNUC__)
  54379. +#elif defined(__GNUC__) || defined __ICC || defined __TenDRA__
  54380. __extension__ typedef long long int __quad_t;
  54381. __extension__ typedef unsigned long long int __u_quad_t;
  54382. #else
  54383. @@ -200,9 +197,4 @@
  54384. #undef __STD_TYPE
  54385. -/* Now add the thread types. */
  54386. -#if defined __UCLIBC_HAS_THREADS__ && (defined __USE_POSIX199506 || defined __USE_UNIX98)
  54387. -# include <bits/pthreadtypes.h>
  54388. -#endif
  54389. -
  54390. #endif /* bits/types.h */
  54391. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/typesizes.h uClibc/libc/sysdeps/linux/common/bits/typesizes.h
  54392. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  54393. +++ uClibc/libc/sysdeps/linux/common/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  54394. @@ -13,9 +13,8 @@
  54395. Lesser General Public License for more details.
  54396. You should have received a copy of the GNU Lesser General Public
  54397. - License along with the GNU C Library; if not, write to the Free
  54398. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54399. - 02111-1307 USA. */
  54400. + License along with the GNU C Library; if not, see
  54401. + <http://www.gnu.org/licenses/>. */
  54402. #ifndef _BITS_TYPES_H
  54403. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  54404. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/common/bits/uClibc_arch_features.h
  54405. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  54406. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  54407. @@ -14,8 +14,8 @@
  54408. /* can your target use syscall6() for mmap ? */
  54409. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  54410. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  54411. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  54412. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  54413. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  54414. /* does your target have a broken create_module() ? */
  54415. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  54416. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_ctype.h uClibc/libc/sysdeps/linux/common/bits/uClibc_ctype.h
  54417. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_ctype.h 2012-05-15 09:20:09.000000000 +0200
  54418. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_ctype.h 2014-02-03 12:32:56.000000000 +0100
  54419. @@ -11,9 +11,8 @@
  54420. * Lesser General Public License for more details.
  54421. *
  54422. * You should have received a copy of the GNU Lesser General Public
  54423. - * License along with the GNU C Library; if not, write to the Free
  54424. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54425. - * 02111-1307 USA.
  54426. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54427. + * not, see <http://www.gnu.org/licenses/>.
  54428. */
  54429. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54430. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_fpmax.h uClibc/libc/sysdeps/linux/common/bits/uClibc_fpmax.h
  54431. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_fpmax.h 2012-05-15 09:20:09.000000000 +0200
  54432. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_fpmax.h 2014-02-03 12:32:56.000000000 +0100
  54433. @@ -12,10 +12,6 @@
  54434. #ifndef _UCLIBC_FPMAX_H
  54435. #define _UCLIBC_FPMAX_H
  54436. -#ifndef _ISOC99_SOURCE
  54437. -#define _ISOC99_SOURCE 1
  54438. -#endif
  54439. -
  54440. #include <features.h>
  54441. #include <float.h>
  54442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_locale.h uClibc/libc/sysdeps/linux/common/bits/uClibc_locale.h
  54443. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_locale.h 2012-05-15 09:20:09.000000000 +0200
  54444. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_locale.h 2014-02-03 12:32:56.000000000 +0100
  54445. @@ -11,9 +11,8 @@
  54446. * Lesser General Public License for more details.
  54447. *
  54448. * You should have received a copy of the GNU Lesser General Public
  54449. - * License along with the GNU C Library; if not, write to the Free
  54450. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54451. - * 02111-1307 USA.
  54452. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54453. + * not, see <http://www.gnu.org/licenses/>.
  54454. */
  54455. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54456. @@ -93,7 +92,7 @@
  54457. #ifdef _LIBC
  54458. /* extern void _locale_set(const unsigned char *p); */
  54459. -/* extern void _locale_init(void); */
  54460. +extern void weak_function _locale_init(void) attribute_hidden;
  54461. #include <stddef.h>
  54462. #include <stdint.h>
  54463. @@ -338,7 +337,9 @@
  54464. extern __locale_t __curlocale_var;
  54465. # ifdef __UCLIBC_HAS_THREADS__
  54466. extern __locale_t __curlocale(void) __THROW __attribute__ ((__const__));
  54467. +libc_hidden_proto(__curlocale)
  54468. extern __locale_t __curlocale_set(__locale_t newloc);
  54469. +libc_hidden_proto(__curlocale_set)
  54470. # define __UCLIBC_CURLOCALE (__curlocale())
  54471. # else
  54472. # define __UCLIBC_CURLOCALE (__curlocale_var)
  54473. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_local_lim.h uClibc/libc/sysdeps/linux/common/bits/uClibc_local_lim.h
  54474. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_local_lim.h 2012-05-15 09:20:09.000000000 +0200
  54475. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_local_lim.h 2014-02-03 12:32:56.000000000 +0100
  54476. @@ -11,14 +11,22 @@
  54477. #define _BITS_UCLIBC_LOCAL_LIM_H 1
  54478. /* This file works correctly only if local_lim.h is the NPTL version */
  54479. -#if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX
  54480. +#if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX || !defined SEM_VALUE_MAX
  54481. # error local_lim.h was incorrectly updated, use the NPTL version from glibc
  54482. #endif
  54483. /* This should really be moved to thread specific directories */
  54484. #if defined __UCLIBC_HAS_THREADS__ && !defined __UCLIBC_HAS_THREADS_NATIVE__
  54485. +/* glibc uses 16384 */
  54486. # define PTHREAD_THREADS_MAX 1024
  54487. # define TIMER_MAX 256
  54488. +# ifdef __LINUXTHREADS_OLD__
  54489. +# undef SEM_VALUE_MAX
  54490. +# define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  54491. +# endif
  54492. +# undef PTHREAD_STACK_MIN
  54493. +/* glibc uses at least 16364 */
  54494. +# define PTHREAD_STACK_MIN 1024
  54495. #endif
  54496. #ifndef __UCLIBC_HAS_THREADS__
  54497. @@ -28,6 +36,7 @@
  54498. # undef PTHREAD_DESTRUCTOR_ITERATIONS
  54499. # undef PTHREAD_STACK_MIN
  54500. # undef DELAYTIMER_MAX
  54501. +# undef SEM_VALUE_MAX
  54502. #endif
  54503. #endif /* bits/uClibc_local_lim.h */
  54504. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_mutex.h uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h
  54505. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2012-05-15 09:20:09.000000000 +0200
  54506. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2014-02-03 12:32:56.000000000 +0100
  54507. @@ -13,7 +13,9 @@
  54508. #ifdef __UCLIBC_HAS_THREADS__
  54509. #include <pthread.h>
  54510. +#ifdef _LIBC
  54511. #include <bits/uClibc_pthread.h>
  54512. +#endif
  54513. #define __UCLIBC_MUTEX_TYPE pthread_mutex_t
  54514. @@ -108,8 +110,8 @@
  54515. #define __UCLIBC_IO_MUTEX_AUTO_UNLOCK(M,A) __UCLIBC_MUTEX_AUTO_UNLOCK(M,A)
  54516. #define __UCLIBC_IO_MUTEX_LOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(M)
  54517. #define __UCLIBC_IO_MUTEX_UNLOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(M)
  54518. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M, 1)
  54519. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M, 1)
  54520. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,C)
  54521. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,C)
  54522. #endif /* of __USE_STDIO_FUTEXES__ */
  54523. @@ -146,8 +148,8 @@
  54524. #define __UCLIBC_IO_MUTEX_AUTO_UNLOCK(M,A) __UCLIBC_MUTEX_AUTO_UNLOCK(M,A)
  54525. #define __UCLIBC_IO_MUTEX_LOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(M)
  54526. #define __UCLIBC_IO_MUTEX_UNLOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(M)
  54527. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M, 1)
  54528. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M, 1)
  54529. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,C)
  54530. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,C)
  54531. #endif /* of __UCLIBC_HAS_THREADS__ */
  54532. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_page.h uClibc/libc/sysdeps/linux/common/bits/uClibc_page.h
  54533. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  54534. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  54535. @@ -11,9 +11,8 @@
  54536. * Lesser General Public License for more details.
  54537. *
  54538. * You should have received a copy of the GNU Lesser General Public
  54539. - * License along with the GNU C Library; if not, write to the Free
  54540. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54541. - * 02111-1307 USA.
  54542. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54543. + * not, see <http://www.gnu.org/licenses/>.
  54544. */
  54545. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  54546. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h uClibc/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h
  54547. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h 1970-01-01 01:00:00.000000000 +0100
  54548. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h 2014-02-03 12:32:56.000000000 +0100
  54549. @@ -0,0 +1,136 @@
  54550. +/*
  54551. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  54552. + *
  54553. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54554. + */
  54555. +/*
  54556. + * Never include this file directly; use <unistd.h> instead.
  54557. + */
  54558. +
  54559. +#ifndef _BITS_UCLIBC_POSIX_OPT_H
  54560. +#define _BITS_UCLIBC_POSIX_OPT_H 1
  54561. +
  54562. +/* This file works correctly only if posix_opt.h is the NPTL version */
  54563. +#ifndef _POSIX_THREADS
  54564. +# error posix_opt.h was incorrectly updated, use the NPTL version from glibc
  54565. +#endif
  54566. +
  54567. +/* change first options based on what glibc does */
  54568. +
  54569. +#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  54570. +# undef _POSIX_THREAD_PROCESS_SHARED
  54571. +# define _POSIX_THREAD_PROCESS_SHARED -1
  54572. +# undef _POSIX_CLOCK_SELECTION
  54573. +# define _POSIX_CLOCK_SELECTION -1
  54574. +# undef _POSIX_THREAD_PRIO_INHERIT
  54575. +# define _POSIX_THREAD_PRIO_INHERIT -1
  54576. +# undef _POSIX_THREAD_PRIO_PROTECT
  54577. +# define _POSIX_THREAD_PRIO_PROTECT -1
  54578. +# undef _POSIX_THREAD_ROBUST_PRIO_INHERIT
  54579. +# undef _POSIX_THREAD_ROBUST_PRIO_PROTECT
  54580. +#endif
  54581. +
  54582. +/* this has to be adapted to uClibc, not all are thread related */
  54583. +#ifndef __UCLIBC_HAS_THREADS__
  54584. +# undef _XOPEN_REALTIME_THREADS
  54585. +# undef _POSIX_THREADS
  54586. +# undef _POSIX_REENTRANT_FUNCTIONS
  54587. +# undef _POSIX_THREAD_SAFE_FUNCTIONS
  54588. +# undef _POSIX_THREAD_PRIORITY_SCHEDULING
  54589. +# undef _POSIX_THREAD_ATTR_STACKSIZE
  54590. +# undef _POSIX_THREAD_ATTR_STACKADDR
  54591. +# undef _POSIX_THREAD_PRIO_INHERIT
  54592. +# undef _POSIX_THREAD_PRIO_PROTECT
  54593. +# undef _POSIX_SEMAPHORES
  54594. +# undef _POSIX_ASYNCHRONOUS_IO
  54595. +# undef _POSIX_ASYNC_IO
  54596. +# undef _LFS_ASYNCHRONOUS_IO
  54597. +# undef _POSIX_PRIORITIZED_IO
  54598. +# undef _LFS64_ASYNCHRONOUS_IO
  54599. +# undef _POSIX_CPUTIME
  54600. +# undef _POSIX_THREAD_CPUTIME
  54601. +# undef _POSIX_READER_WRITER_LOCKS
  54602. +# undef _POSIX_TIMEOUTS
  54603. +# undef _POSIX_SPIN_LOCKS
  54604. +# undef _POSIX_BARRIERS
  54605. +# undef _POSIX_MESSAGE_PASSING
  54606. +# undef _POSIX_THREAD_PROCESS_SHARED
  54607. +# undef _POSIX_CLOCK_SELECTION
  54608. +# undef _POSIX_ADVISORY_INFO
  54609. +/*# undef _POSIX_RAW_SOCKETS*/
  54610. +/*# undef _POSIX2_CHAR_TERM*/
  54611. +# undef _POSIX_SPORADIC_SERVER
  54612. +# undef _POSIX_THREAD_SPORADIC_SERVER
  54613. +/*# undef _POSIX_TRACE
  54614. +# undef _POSIX_TRACE_EVENT_FILTER
  54615. +# undef _POSIX_TRACE_INHERIT
  54616. +# undef _POSIX_TRACE_LOG
  54617. +# undef _POSIX_TYPED_MEMORY_OBJECTS*/
  54618. +#endif
  54619. +
  54620. +/* were in earlier version, used by sysconf */
  54621. +#define _POSIX_POLL 1
  54622. +#define _POSIX_SELECT 1
  54623. +
  54624. +/* disable independently unsupported features */
  54625. +#undef _POSIX_TRACE
  54626. +#undef _POSIX_TRACE_EVENT_FILTER
  54627. +#undef _POSIX_TRACE_INHERIT
  54628. +#undef _POSIX_TRACE_LOG
  54629. +#undef _POSIX_TYPED_MEMORY_OBJECTS
  54630. +#undef _POSIX_SPAWN
  54631. +
  54632. +#if 0 /* does uClibc support these? */
  54633. +# undef _POSIX_ASYNCHRONOUS_IO
  54634. +# undef _POSIX_ASYNC_IO
  54635. +# undef _LFS_ASYNCHRONOUS_IO
  54636. +# undef _POSIX_PRIORITIZED_IO
  54637. +# undef _LFS64_ASYNCHRONOUS_IO
  54638. +# undef _POSIX_MESSAGE_PASSING
  54639. +#endif
  54640. +
  54641. +/* change options based on uClibc config options */
  54642. +
  54643. +#if 0 /*ndef __UCLIBC_HAS_POSIX_TIMERS__*/
  54644. +# undef _POSIX_TIMERS
  54645. +# undef _POSIX_THREAD_CPUTIME
  54646. +#endif
  54647. +
  54648. +#if 0 /*ndef __UCLIBC_HAS_POSIX_BARRIERS__*/
  54649. +# undef _POSIX_BARRIERS
  54650. +#endif
  54651. +
  54652. +#if 0 /*ndef __UCLIBC_HAS_POSIX_SPINLOCKS__*/
  54653. +# undef _POSIX_SPIN_LOCKS
  54654. +#endif
  54655. +
  54656. +#ifndef __ARCH_USE_MMU__
  54657. +# undef _POSIX_MEMLOCK
  54658. +# undef _POSIX_MEMLOCK_RANGE
  54659. +# undef _POSIX_MEMORY_PROTECTION
  54660. +#endif
  54661. +
  54662. +#ifndef __UCLIBC_HAS_LFS__
  54663. +# undef _LFS64_ASYNCHRONOUS_IO
  54664. +# undef _LFS_LARGEFILE
  54665. +# undef _LFS64_LARGEFILE
  54666. +# undef _LFS64_STDIO
  54667. +#endif
  54668. +
  54669. +#ifndef __UCLIBC_HAS_REALTIME__
  54670. +# undef _POSIX_SEMAPHORES
  54671. +#endif
  54672. +
  54673. +#ifndef __UCLIBC_HAS_REGEX__
  54674. +# undef _POSIX_REGEXP
  54675. +#endif
  54676. +
  54677. +#ifndef __UCLIBC_HAS_IPV6__
  54678. +# undef _POSIX_IPV6
  54679. +#endif
  54680. +
  54681. +#ifndef __UCLIBC_HAS_SOCKET__
  54682. +# undef _POSIX_RAW_SOCKETS
  54683. +#endif
  54684. +
  54685. +#endif /* bits/uClibc_posix_opt.h */
  54686. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h uClibc/libc/sysdeps/linux/common/bits/uClibc_pthread.h
  54687. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h 2012-05-15 09:20:09.000000000 +0200
  54688. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_pthread.h 2014-02-03 12:32:56.000000000 +0100
  54689. @@ -11,9 +11,8 @@
  54690. * Lesser General Public License for more details.
  54691. *
  54692. * You should have received a copy of the GNU Lesser General Public
  54693. - * License along with the GNU C Library; if not, write to the Free
  54694. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54695. - * 02111-1307 USA.
  54696. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54697. + * not, see <http://www.gnu.org/licenses/>.
  54698. */
  54699. /* Supply prototypes for the internal thread functions used by the
  54700. @@ -27,15 +26,12 @@
  54701. # error "Always include <pthread.h> rather than <bits/uClibc_pthread.h>"
  54702. #endif
  54703. -#if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc)
  54704. -
  54705. struct _pthread_cleanup_buffer;
  54706. /* Threading functions internal to uClibc. Make these thread functions
  54707. * weak so that we can elide them from single-threaded processes. */
  54708. extern int weak_function __pthread_mutex_init (pthread_mutex_t *__mutex,
  54709. - __const pthread_mutexattr_t *__mutex_attr);
  54710. -extern int weak_function __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  54711. + const pthread_mutexattr_t *__mutex_attr);
  54712. extern int weak_function __pthread_mutex_lock (pthread_mutex_t *__mutex);
  54713. extern int weak_function __pthread_mutex_unlock (pthread_mutex_t *__mutex);
  54714. extern int weak_function __pthread_mutex_trylock (pthread_mutex_t *__mutex);
  54715. @@ -47,5 +43,3 @@
  54716. int __execute);
  54717. #endif
  54718. -
  54719. -#endif
  54720. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_stdio.h uClibc/libc/sysdeps/linux/common/bits/uClibc_stdio.h
  54721. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2012-05-15 09:20:09.000000000 +0200
  54722. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2014-02-03 12:32:56.000000000 +0100
  54723. @@ -54,27 +54,6 @@
  54724. #endif
  54725. /**********************************************************************/
  54726. -/* Make sure defines related to large files are consistent. */
  54727. -#ifdef _LIBC
  54728. -
  54729. -#ifdef __UCLIBC_HAS_LFS__
  54730. -#undef __USE_LARGEFILE
  54731. -#undef __USE_LARGEFILE64
  54732. -#undef __USE_FILE_OFFSET64
  54733. -/* If we're actually building uClibc with large file support, only define... */
  54734. -#define __USE_LARGEFILE64 1
  54735. -#endif /* __UCLIBC_HAS_LFS__ */
  54736. -
  54737. -#else /* not _LIBC */
  54738. -
  54739. -#ifndef __UCLIBC_HAS_LFS__
  54740. -#if defined(__LARGEFILE64_SOURCE) || defined(__USE_LARGEFILE64) || defined(__USE_FILE_OFFSET64)
  54741. -#error Sorry... uClibc was built without large file support!
  54742. -#endif
  54743. -#endif /* __UCLIBC_HAS_LFS__ */
  54744. -
  54745. -#endif /* _LIBC */
  54746. -/**********************************************************************/
  54747. #ifdef __UCLIBC_HAS_WCHAR__
  54748. #define __need_wchar_t
  54749. @@ -99,22 +78,7 @@
  54750. #define __STDIO_PUTC_MACRO
  54751. #endif
  54752. -
  54753. -/* These are consistency checks on the different options */
  54754. -
  54755. -#ifndef __STDIO_BUFFERS
  54756. -#undef __STDIO_GETC_MACRO
  54757. -#undef __STDIO_PUTC_MACRO
  54758. -#endif
  54759. -
  54760. -#ifdef __BCC__
  54761. -#undef __UCLIBC_HAS_LFS__
  54762. -#endif
  54763. -
  54764. -#ifndef __UCLIBC_HAS_LFS__
  54765. -#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
  54766. -#endif
  54767. -
  54768. +#ifdef _LIBC
  54769. /**********************************************************************/
  54770. #include <bits/uClibc_mutex.h>
  54771. @@ -169,6 +133,8 @@
  54772. #endif
  54773. #endif
  54774. +#endif /* _LIBC */
  54775. +
  54776. /**********************************************************************/
  54777. #define __STDIO_IOFBF 0 /* Fully buffered. */
  54778. @@ -209,7 +175,7 @@
  54779. typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __bufsize);
  54780. typedef __ssize_t __io_write_fn(void *__cookie,
  54781. - __const char *__buf, size_t __bufsize);
  54782. + const char *__buf, size_t __bufsize);
  54783. /* NOTE: GLIBC difference!!! -- fopencookie seek function
  54784. * For glibc, the type of pos is always (__off64_t *) but in our case
  54785. * it is type (__off_t *) when the lib is built without large file support.
  54786. @@ -224,7 +190,7 @@
  54787. __io_close_fn *close;
  54788. } _IO_cookie_io_functions_t;
  54789. -#if defined(_LIBC) || defined(_GNU_SOURCE)
  54790. +#ifdef __USE_GNU
  54791. typedef __io_read_fn cookie_read_function_t;
  54792. typedef __io_write_fn cookie_write_function_t;
  54793. @@ -238,6 +204,17 @@
  54794. #endif
  54795. /**********************************************************************/
  54796. +#if defined __UCLIBC_HAS_THREADS__ && !defined __UCLIBC_IO_MUTEX
  54797. +/* keep this in sync with uClibc_mutex.h */
  54798. +# ifdef __USE_STDIO_FUTEXES__
  54799. +# include <bits/stdio-lock.h>
  54800. +# define __UCLIBC_IO_MUTEX(M) _IO_lock_t M
  54801. +# else
  54802. +# include <bits/pthreadtypes.h>
  54803. +# define __UCLIBC_IO_MUTEX(M) pthread_mutex_t M
  54804. +# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  54805. +#endif
  54806. +
  54807. struct __STDIO_FILE_STRUCT {
  54808. unsigned short __modeflags;
  54809. /* There could be a hole here, but modeflags is used most.*/
  54810. @@ -351,22 +328,27 @@
  54811. **********************************************************************/
  54812. #if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc)
  54813. -extern void _stdio_init(void) attribute_hidden;
  54814. -extern void _stdio_term(void) attribute_hidden;
  54815. +extern void weak_function _stdio_init(void) attribute_hidden;
  54816. +extern void weak_function _stdio_term(void) attribute_hidden;
  54817. #ifdef __STDIO_HAS_OPENLIST
  54818. extern struct __STDIO_FILE_STRUCT *_stdio_openlist;
  54819. #ifdef __UCLIBC_HAS_THREADS__
  54820. -__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_add_lock);
  54821. +__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_add_lock)
  54822. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  54823. + attribute_hidden
  54824. +# endif
  54825. + ;
  54826. #ifdef __STDIO_BUFFERS
  54827. -__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_del_lock);
  54828. -extern volatile int _stdio_openlist_use_count; /* _stdio_openlist_del_lock */
  54829. -extern int _stdio_openlist_del_count; /* _stdio_openlist_del_lock */
  54830. +__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_del_lock)
  54831. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  54832. + attribute_hidden
  54833. +# endif
  54834. + ;
  54835. #endif
  54836. extern int _stdio_user_locking;
  54837. -extern void __stdio_init_mutex(__UCLIBC_MUTEX_TYPE *m) attribute_hidden;
  54838. #endif
  54839. #endif
  54840. @@ -465,6 +447,8 @@
  54841. #else
  54842. +# define __stdin stdin
  54843. +
  54844. #endif /* __STDIO_GETC_MACRO */
  54845. @@ -524,4 +508,8 @@
  54846. # endif
  54847. # endif
  54848. +#else
  54849. +
  54850. +# define __stdout stdout
  54851. +
  54852. #endif /* __STDIO_PUTC_MACRO */
  54853. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_touplow.h uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h
  54854. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_touplow.h 2012-05-15 09:20:09.000000000 +0200
  54855. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h 2014-02-03 12:32:56.000000000 +0100
  54856. @@ -11,9 +11,8 @@
  54857. * Lesser General Public License for more details.
  54858. *
  54859. * You should have received a copy of the GNU Lesser General Public
  54860. - * License along with the GNU C Library; if not, write to the Free
  54861. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54862. - * 02111-1307 USA.
  54863. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54864. + * not, see <http://www.gnu.org/licenses/>.
  54865. */
  54866. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54867. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h uClibc/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h
  54868. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h 2012-05-15 09:20:09.000000000 +0200
  54869. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h 2014-02-03 12:32:56.000000000 +0100
  54870. @@ -11,9 +11,8 @@
  54871. * Lesser General Public License for more details.
  54872. *
  54873. * You should have received a copy of the GNU Lesser General Public
  54874. - * License along with the GNU C Library; if not, write to the Free
  54875. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54876. - * 02111-1307 USA.
  54877. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54878. + * not, see <http://www.gnu.org/licenses/>.
  54879. */
  54880. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54881. @@ -28,16 +27,6 @@
  54882. #ifndef _UINTMAXTOSTR_H
  54883. #define _UINTMAXTOSTR_H 1
  54884. -#ifdef _FEATURES_H
  54885. -# ifndef __USE_ISOC99
  54886. -# error features was included without defining _ISOC99_SOURCE!
  54887. -# endif
  54888. -#else
  54889. -# ifndef _ISOC99_SOURCE
  54890. -# define _ISOC99_SOURCE
  54891. -# endif
  54892. -#endif
  54893. -
  54894. #include <features.h>
  54895. #include <limits.h>
  54896. #include <stdint.h>
  54897. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uwchar.h uClibc/libc/sysdeps/linux/common/bits/uClibc_uwchar.h
  54898. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uwchar.h 2012-05-15 09:20:09.000000000 +0200
  54899. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_uwchar.h 2014-02-03 12:32:56.000000000 +0100
  54900. @@ -11,9 +11,8 @@
  54901. * Lesser General Public License for more details.
  54902. *
  54903. * You should have received a copy of the GNU Lesser General Public
  54904. - * License along with the GNU C Library; if not, write to the Free
  54905. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54906. - * 02111-1307 USA.
  54907. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54908. + * not, see <http://www.gnu.org/licenses/>.
  54909. */
  54910. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54911. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_va_copy.h uClibc/libc/sysdeps/linux/common/bits/uClibc_va_copy.h
  54912. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_va_copy.h 2012-05-15 09:20:09.000000000 +0200
  54913. +++ uClibc/libc/sysdeps/linux/common/bits/uClibc_va_copy.h 2014-02-03 12:32:56.000000000 +0100
  54914. @@ -13,9 +13,8 @@
  54915. * Lesser General Public License for more details.
  54916. *
  54917. * You should have received a copy of the GNU Lesser General Public
  54918. - * License along with the GNU C Library; if not, write to the Free
  54919. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54920. - * 02111-1307 USA.
  54921. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54922. + * not, see <http://www.gnu.org/licenses/>.
  54923. */
  54924. #ifndef _UCLIBC_VA_COPY_H
  54925. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uio.h uClibc/libc/sysdeps/linux/common/bits/uio.h
  54926. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uio.h 2012-05-15 09:20:09.000000000 +0200
  54927. +++ uClibc/libc/sysdeps/linux/common/bits/uio.h 2014-02-03 12:32:56.000000000 +0100
  54928. @@ -12,9 +12,8 @@
  54929. Lesser General Public License for more details.
  54930. You should have received a copy of the GNU Lesser General Public
  54931. - License along with the GNU C Library; if not, write to the Free
  54932. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54933. - 02111-1307 USA. */
  54934. + License along with the GNU C Library; if not, see
  54935. + <http://www.gnu.org/licenses/>. */
  54936. #if !defined _SYS_UIO_H && !defined _FCNTL_H
  54937. # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
  54938. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ustat.h uClibc/libc/sysdeps/linux/common/bits/ustat.h
  54939. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ustat.h 2012-05-15 09:20:09.000000000 +0200
  54940. +++ uClibc/libc/sysdeps/linux/common/bits/ustat.h 2014-02-03 12:32:56.000000000 +0100
  54941. @@ -12,9 +12,8 @@
  54942. Lesser General Public License for more details.
  54943. You should have received a copy of the GNU Lesser General Public
  54944. - License along with the GNU C Library; if not, write to the Free
  54945. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54946. - 02111-1307 USA. */
  54947. + License along with the GNU C Library; if not, see
  54948. + <http://www.gnu.org/licenses/>. */
  54949. #ifndef _SYS_USTAT_H
  54950. # error "Never include <bits/ustat.h> directly; use <sys/ustat.h> instead."
  54951. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmp.h uClibc/libc/sysdeps/linux/common/bits/utmp.h
  54952. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmp.h 2012-05-15 09:20:09.000000000 +0200
  54953. +++ uClibc/libc/sysdeps/linux/common/bits/utmp.h 2014-02-03 12:32:56.000000000 +0100
  54954. @@ -14,9 +14,8 @@
  54955. Lesser General Public License for more details.
  54956. You should have received a copy of the GNU Lesser General Public
  54957. - License along with the GNU C Library; if not, write to the Free
  54958. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54959. - 02111-1307 USA. */
  54960. + License along with the GNU C Library; if not, see
  54961. + <http://www.gnu.org/licenses/>. */
  54962. #ifndef _UTMP_H
  54963. # error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
  54964. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmpx.h uClibc/libc/sysdeps/linux/common/bits/utmpx.h
  54965. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmpx.h 2012-05-15 09:20:09.000000000 +0200
  54966. +++ uClibc/libc/sysdeps/linux/common/bits/utmpx.h 2014-02-03 12:32:56.000000000 +0100
  54967. @@ -13,9 +13,8 @@
  54968. Lesser General Public License for more details.
  54969. You should have received a copy of the GNU Lesser General Public
  54970. - License along with the GNU C Library; if not, write to the Free
  54971. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54972. - 02111-1307 USA. */
  54973. + License along with the GNU C Library; if not, see
  54974. + <http://www.gnu.org/licenses/>. */
  54975. #ifndef _UTMPX_H
  54976. # error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
  54977. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utsname.h uClibc/libc/sysdeps/linux/common/bits/utsname.h
  54978. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utsname.h 2012-05-15 09:20:09.000000000 +0200
  54979. +++ uClibc/libc/sysdeps/linux/common/bits/utsname.h 2014-02-03 12:32:56.000000000 +0100
  54980. @@ -12,9 +12,8 @@
  54981. Lesser General Public License for more details.
  54982. You should have received a copy of the GNU Lesser General Public
  54983. - License along with the GNU C Library; if not, write to the Free
  54984. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54985. - 02111-1307 USA. */
  54986. + License along with the GNU C Library; if not, see
  54987. + <http://www.gnu.org/licenses/>. */
  54988. #ifndef _SYS_UTSNAME_H
  54989. # error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead."
  54990. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitflags.h uClibc/libc/sysdeps/linux/common/bits/waitflags.h
  54991. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitflags.h 2012-05-15 09:20:09.000000000 +0200
  54992. +++ uClibc/libc/sysdeps/linux/common/bits/waitflags.h 2014-02-03 12:32:56.000000000 +0100
  54993. @@ -13,9 +13,8 @@
  54994. Lesser General Public License for more details.
  54995. You should have received a copy of the GNU Lesser General Public
  54996. - License along with the GNU C Library; if not, write to the Free
  54997. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54998. - 02111-1307 USA. */
  54999. + License along with the GNU C Library; if not, see
  55000. + <http://www.gnu.org/licenses/>. */
  55001. #if !defined _SYS_WAIT_H && !defined _STDLIB_H
  55002. # error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead."
  55003. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitstatus.h uClibc/libc/sysdeps/linux/common/bits/waitstatus.h
  55004. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitstatus.h 2012-05-15 09:20:09.000000000 +0200
  55005. +++ uClibc/libc/sysdeps/linux/common/bits/waitstatus.h 2014-02-03 12:32:56.000000000 +0100
  55006. @@ -13,9 +13,8 @@
  55007. Lesser General Public License for more details.
  55008. You should have received a copy of the GNU Lesser General Public
  55009. - License along with the GNU C Library; if not, write to the Free
  55010. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55011. - 02111-1307 USA. */
  55012. + License along with the GNU C Library; if not, see
  55013. + <http://www.gnu.org/licenses/>. */
  55014. #if !defined _SYS_WAIT_H && !defined _STDLIB_H
  55015. # error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead."
  55016. @@ -25,7 +24,7 @@
  55017. /* Everything extant so far uses these same bits. */
  55018. -/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
  55019. +/* If WIFEXITED(STATUS), the low-order 8 bits of exit(N). */
  55020. #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
  55021. /* If WIFSIGNALED(STATUS), the terminating signal. */
  55022. @@ -37,12 +36,20 @@
  55023. /* Nonzero if STATUS indicates normal termination. */
  55024. #define __WIFEXITED(status) (__WTERMSIG(status) == 0)
  55025. -/* Nonzero if STATUS indicates termination by a signal. */
  55026. -#define __WIFSIGNALED(status) \
  55027. - (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
  55028. +/* Nonzero if STATUS indicates termination by a signal.
  55029. + * Note that status 0x007f is "died from signal 127", not "stopped by signal 0".
  55030. + * This does happen on MIPS.
  55031. + * The comparison is "< 0xff", not "< 0x7f", because WCOREDUMP bit (0x80)
  55032. + * can be set too.
  55033. + */
  55034. +#define __WIFSIGNALED(status) (((unsigned)((status) & 0xffff) - 1U) < 0xffU)
  55035. /* Nonzero if STATUS indicates the child is stopped. */
  55036. +#if !defined(__mips__)
  55037. #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
  55038. +#else
  55039. +#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f && ((status) & 0xff00))
  55040. +#endif
  55041. /* Nonzero if STATUS indicates the child continued after a stop. We only
  55042. define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */
  55043. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/wchar.h uClibc/libc/sysdeps/linux/common/bits/wchar.h
  55044. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/wchar.h 2012-05-15 09:20:09.000000000 +0200
  55045. +++ uClibc/libc/sysdeps/linux/common/bits/wchar.h 2014-02-03 12:32:56.000000000 +0100
  55046. @@ -13,9 +13,8 @@
  55047. Lesser General Public License for more details.
  55048. You should have received a copy of the GNU Lesser General Public
  55049. - License along with the GNU C Library; if not, write to the Free
  55050. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55051. - 02111-1307 USA. */
  55052. + License along with the GNU C Library; if not, see
  55053. + <http://www.gnu.org/licenses/>. */
  55054. #ifndef _BITS_WCHAR_H
  55055. #define _BITS_WCHAR_H 1
  55056. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/xopen_lim.h uClibc/libc/sysdeps/linux/common/bits/xopen_lim.h
  55057. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/xopen_lim.h 2012-05-15 09:20:09.000000000 +0200
  55058. +++ uClibc/libc/sysdeps/linux/common/bits/xopen_lim.h 2014-02-03 12:32:56.000000000 +0100
  55059. @@ -12,9 +12,8 @@
  55060. Lesser General Public License for more details.
  55061. You should have received a copy of the GNU Lesser General Public
  55062. - License along with the GNU C Library; if not, write to the Free
  55063. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55064. - 02111-1307 USA. */
  55065. + License along with the GNU C Library; if not, see
  55066. + <http://www.gnu.org/licenses/>. */
  55067. /*
  55068. * Never include this file directly; use <limits.h> instead.
  55069. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/brk.c uClibc/libc/sysdeps/linux/common/brk.c
  55070. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/brk.c 2012-05-15 09:20:09.000000000 +0200
  55071. +++ uClibc/libc/sysdeps/linux/common/brk.c 2014-02-03 12:32:56.000000000 +0100
  55072. @@ -8,10 +8,8 @@
  55073. #include <unistd.h>
  55074. #include <sys/syscall.h>
  55075. -libc_hidden_proto(brk)
  55076. -
  55077. #define __NR___syscall_brk __NR_brk
  55078. -static inline _syscall1(void *, __syscall_brk, void *, end)
  55079. +static __always_inline _syscall1(void *, __syscall_brk, void *, end)
  55080. /* This must be initialized data because commons can't have aliases. */
  55081. void * __curbrk attribute_hidden = 0;
  55082. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/capget.c uClibc/libc/sysdeps/linux/common/capget.c
  55083. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/capget.c 2012-05-15 09:20:09.000000000 +0200
  55084. +++ uClibc/libc/sysdeps/linux/common/capget.c 2014-02-03 12:32:56.000000000 +0100
  55085. @@ -8,7 +8,8 @@
  55086. */
  55087. #include <sys/syscall.h>
  55088. -int capget(void *header, void *data);
  55089. +
  55090. #ifdef __NR_capget
  55091. +int capget(void *header, void *data);
  55092. _syscall2(int, capget, void *, header, void *, data)
  55093. #endif
  55094. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/capset.c uClibc/libc/sysdeps/linux/common/capset.c
  55095. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/capset.c 2012-05-15 09:20:09.000000000 +0200
  55096. +++ uClibc/libc/sysdeps/linux/common/capset.c 2014-02-03 12:32:56.000000000 +0100
  55097. @@ -9,7 +9,7 @@
  55098. #include <sys/syscall.h>
  55099. -int capset(void *header, const void *data);
  55100. #ifdef __NR_capset
  55101. +int capset(void *header, const void *data);
  55102. _syscall2(int, capset, void *, header, const void *, data)
  55103. #endif
  55104. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chdir.c uClibc/libc/sysdeps/linux/common/chdir.c
  55105. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chdir.c 2012-05-15 09:20:09.000000000 +0200
  55106. +++ uClibc/libc/sysdeps/linux/common/chdir.c 2014-02-03 12:32:56.000000000 +0100
  55107. @@ -8,15 +8,7 @@
  55108. */
  55109. #include <sys/syscall.h>
  55110. -#include <string.h>
  55111. #include <unistd.h>
  55112. -#include <sys/param.h>
  55113. -
  55114. -#define __NR___syscall_chdir __NR_chdir
  55115. -static __inline__ _syscall1(int, __syscall_chdir, const char *, path)
  55116. -int chdir(const char *path)
  55117. -{
  55118. - return __syscall_chdir(path);
  55119. -}
  55120. +_syscall1(int, chdir, const char *, path)
  55121. libc_hidden_def(chdir)
  55122. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chmod.c uClibc/libc/sysdeps/linux/common/chmod.c
  55123. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chmod.c 2012-05-15 09:20:09.000000000 +0200
  55124. +++ uClibc/libc/sysdeps/linux/common/chmod.c 2014-02-03 12:32:56.000000000 +0100
  55125. @@ -9,13 +9,22 @@
  55126. #include <sys/syscall.h>
  55127. #include <sys/stat.h>
  55128. +#include <unistd.h>
  55129. +#if defined __NR_fchmodat && !defined __NR_chmod
  55130. +# include <fcntl.h>
  55131. +int chmod(const char *path, mode_t mode)
  55132. +{
  55133. + return fchmodat(AT_FDCWD, path, mode, 0);
  55134. +}
  55135. -#define __NR___syscall_chmod __NR_chmod
  55136. +#else
  55137. +# define __NR___syscall_chmod __NR_chmod
  55138. static __inline__ _syscall2(int, __syscall_chmod, const char *, path, __kernel_mode_t, mode)
  55139. int chmod(const char *path, mode_t mode)
  55140. {
  55141. return __syscall_chmod(path, mode);
  55142. }
  55143. +#endif
  55144. libc_hidden_def(chmod)
  55145. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chown.c uClibc/libc/sysdeps/linux/common/chown.c
  55146. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chown.c 2012-05-15 09:20:09.000000000 +0200
  55147. +++ uClibc/libc/sysdeps/linux/common/chown.c 2014-02-03 12:32:56.000000000 +0100
  55148. @@ -11,18 +11,26 @@
  55149. #include <unistd.h>
  55150. #include <bits/wordsize.h>
  55151. +#if defined __NR_fchownat && !defined __NR_chown
  55152. +# include <fcntl.h>
  55153. +int chown(const char *path, uid_t owner, gid_t group)
  55154. +{
  55155. + return fchownat(AT_FDCWD, path, owner, group, 0);
  55156. +}
  55157. -#if (__WORDSIZE == 32 && defined(__NR_chown32)) || __WORDSIZE == 64
  55158. -# ifdef __NR_chown32
  55159. -# undef __NR_chown
  55160. -# define __NR_chown __NR_chown32
  55161. -# endif
  55162. +#else
  55163. +
  55164. +# if (__WORDSIZE == 32 && defined(__NR_chown32)) || __WORDSIZE == 64
  55165. +# ifdef __NR_chown32
  55166. +# undef __NR_chown
  55167. +# define __NR_chown __NR_chown32
  55168. +# endif
  55169. _syscall3(int, chown, const char *, path, uid_t, owner, gid_t, group)
  55170. -#else
  55171. +# else
  55172. -# define __NR___syscall_chown __NR_chown
  55173. +# define __NR___syscall_chown __NR_chown
  55174. static __inline__ _syscall3(int, __syscall_chown, const char *, path,
  55175. __kernel_uid_t, owner, __kernel_gid_t, group)
  55176. @@ -35,6 +43,7 @@
  55177. }
  55178. return (__syscall_chown(path, owner, group));
  55179. }
  55180. -#endif
  55181. +# endif
  55182. +#endif
  55183. libc_hidden_def(chown)
  55184. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_getres.c uClibc/libc/sysdeps/linux/common/clock_getres.c
  55185. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_getres.c 2012-05-15 09:20:09.000000000 +0200
  55186. +++ uClibc/libc/sysdeps/linux/common/clock_getres.c 2014-02-03 12:32:56.000000000 +0100
  55187. @@ -9,11 +9,11 @@
  55188. #include <sys/syscall.h>
  55189. #include <time.h>
  55190. -#include <unistd.h>
  55191. #ifdef __NR_clock_getres
  55192. _syscall2(int, clock_getres, clockid_t, clock_id, struct timespec*, res)
  55193. #else
  55194. +# include <unistd.h>
  55195. int clock_getres(clockid_t clock_id, struct timespec* res)
  55196. {
  55197. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_gettime.c uClibc/libc/sysdeps/linux/common/clock_gettime.c
  55198. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  55199. +++ uClibc/libc/sysdeps/linux/common/clock_gettime.c 2014-02-03 12:32:56.000000000 +0100
  55200. @@ -10,11 +10,11 @@
  55201. #include <sys/syscall.h>
  55202. #include <time.h>
  55203. -#include <sys/time.h>
  55204. #ifdef __NR_clock_gettime
  55205. _syscall2(int, clock_gettime, clockid_t, clock_id, struct timespec*, tp)
  55206. #else
  55207. +# include <sys/time.h>
  55208. int clock_gettime(clockid_t clock_id, struct timespec* tp)
  55209. {
  55210. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_settime.c uClibc/libc/sysdeps/linux/common/clock_settime.c
  55211. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_settime.c 2012-05-15 09:20:09.000000000 +0200
  55212. +++ uClibc/libc/sysdeps/linux/common/clock_settime.c 2014-02-03 12:32:56.000000000 +0100
  55213. @@ -9,11 +9,11 @@
  55214. #include <sys/syscall.h>
  55215. #include <time.h>
  55216. -#include <sys/time.h>
  55217. #ifdef __NR_clock_settime
  55218. _syscall2(int, clock_settime, clockid_t, clock_id, const struct timespec*, tp)
  55219. #else
  55220. +# include <sys/time.h>
  55221. int clock_settime(clockid_t clock_id, const struct timespec* tp)
  55222. {
  55223. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/close.c uClibc/libc/sysdeps/linux/common/close.c
  55224. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/close.c 2012-05-15 09:20:09.000000000 +0200
  55225. +++ uClibc/libc/sysdeps/linux/common/close.c 2014-02-03 12:32:56.000000000 +0100
  55226. @@ -9,12 +9,13 @@
  55227. #include <sys/syscall.h>
  55228. #include <unistd.h>
  55229. +#include <cancel.h>
  55230. -_syscall1(int, close, int, fd)
  55231. +#define __NR___close_nocancel __NR_close
  55232. +_syscall1(int, __NC(close), int, fd)
  55233. -#ifndef __LINUXTHREADS_OLD__
  55234. -libc_hidden_def(close)
  55235. -#else
  55236. -libc_hidden_weak(close)
  55237. -strong_alias(close,__libc_close)
  55238. -#endif
  55239. +#define __NR___close_nocancel_no_status __NR_close
  55240. +_syscall_noerr1(void, __close_nocancel_no_status, int, fd)
  55241. +
  55242. +CANCELLABLE_SYSCALL(int, close, (int fd), (fd))
  55243. +lt_libc_hidden(close)
  55244. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/cmsg_nxthdr.c uClibc/libc/sysdeps/linux/common/cmsg_nxthdr.c
  55245. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/cmsg_nxthdr.c 2012-05-15 09:20:09.000000000 +0200
  55246. +++ uClibc/libc/sysdeps/linux/common/cmsg_nxthdr.c 2014-02-03 12:32:56.000000000 +0100
  55247. @@ -13,12 +13,11 @@
  55248. Lesser General Public License for more details.
  55249. You should have received a copy of the GNU Lesser General Public
  55250. - License along with the GNU C Library; if not, write to the Free
  55251. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55252. - 02111-1307 USA. */
  55253. + License along with the GNU C Library; if not, see
  55254. + <http://www.gnu.org/licenses/>. */
  55255. -#define __FORCE_GLIBC
  55256. #include <features.h>
  55257. +#include <stddef.h>
  55258. /* Prevent math.h from defining a colliding inline */
  55259. #undef __USE_EXTERN_INLINES
  55260. #include <sys/socket.h>
  55261. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/creat64.c uClibc/libc/sysdeps/linux/common/creat64.c
  55262. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/creat64.c 2012-05-15 09:20:09.000000000 +0200
  55263. +++ uClibc/libc/sysdeps/linux/common/creat64.c 2014-02-03 12:32:56.000000000 +0100
  55264. @@ -12,19 +12,17 @@
  55265. Lesser General Public License for more details.
  55266. You should have received a copy of the GNU Lesser General Public
  55267. - License along with the GNU C Library; if not, write to the Free
  55268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55269. - 02111-1307 USA. */
  55270. + License along with the GNU C Library; if not, see
  55271. + <http://www.gnu.org/licenses/>. */
  55272. #include <_lfs_64.h>
  55273. -
  55274. -#ifdef __UCLIBC_HAS_LFS__
  55275. #include <fcntl.h>
  55276. -#include <sys/types.h>
  55277. +#include <cancel.h>
  55278. /* Create FILE with protections MODE. */
  55279. int creat64(const char *file, mode_t mode)
  55280. {
  55281. - return open64(file, O_WRONLY|O_CREAT|O_TRUNC, mode);
  55282. + return open64(file, O_WRONLY | O_CREAT | O_TRUNC, mode);
  55283. }
  55284. -#endif /* __UCLIBC_HAS_LFS__ */
  55285. +/* open handled cancellation, noop on uClibc */
  55286. +LIBC_CANCEL_HANDLED();
  55287. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/creat.c uClibc/libc/sysdeps/linux/common/creat.c
  55288. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/creat.c 2012-05-15 09:20:09.000000000 +0200
  55289. +++ uClibc/libc/sysdeps/linux/common/creat.c 2014-02-03 12:32:56.000000000 +0100
  55290. @@ -8,8 +8,11 @@
  55291. */
  55292. #include <fcntl.h>
  55293. +#include <cancel.h>
  55294. int creat(const char *file, mode_t mode)
  55295. {
  55296. return open(file, O_WRONLY | O_CREAT | O_TRUNC, mode);
  55297. }
  55298. +/* open handled cancellation, noop on uClibc */
  55299. +LIBC_CANCEL_HANDLED();
  55300. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/create_module.c uClibc/libc/sysdeps/linux/common/create_module.c
  55301. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/create_module.c 2012-05-15 09:20:09.000000000 +0200
  55302. +++ uClibc/libc/sysdeps/linux/common/create_module.c 2014-02-03 12:32:56.000000000 +0100
  55303. @@ -7,10 +7,10 @@
  55304. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55305. */
  55306. -#include <errno.h>
  55307. -#include <unistd.h>
  55308. #include <features.h>
  55309. -#include <sys/types.h>
  55310. +#define __need_size_t
  55311. +#include <stddef.h>
  55312. +#include <errno.h>
  55313. #include <sys/syscall.h>
  55314. #ifdef __NR_create_module
  55315. @@ -22,7 +22,7 @@
  55316. static __inline__ _syscall2(long, __create_module, const char *, name, size_t, size)
  55317. /* By checking the value of errno, we know if we have been fooled
  55318. * by the syscall2 macro making a very high address look like a
  55319. - * negative, so we we fix it up here. */
  55320. + * negative, so we fix it up here. */
  55321. unsigned long create_module(const char *name, size_t size)
  55322. {
  55323. long ret = __create_module(name, size);
  55324. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/delete_module.c uClibc/libc/sysdeps/linux/common/delete_module.c
  55325. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/delete_module.c 2012-05-15 09:20:09.000000000 +0200
  55326. +++ uClibc/libc/sysdeps/linux/common/delete_module.c 2014-02-03 12:32:56.000000000 +0100
  55327. @@ -7,7 +7,7 @@
  55328. */
  55329. #include <sys/syscall.h>
  55330. -int delete_module(const char *name, unsigned int flags);
  55331. #ifdef __NR_delete_module
  55332. +int delete_module(const char *name, unsigned int flags);
  55333. _syscall2(int, delete_module, const char *, name, unsigned int, flags)
  55334. #endif
  55335. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dl-osinfo.h uClibc/libc/sysdeps/linux/common/dl-osinfo.h
  55336. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dl-osinfo.h 2012-05-15 09:20:09.000000000 +0200
  55337. +++ uClibc/libc/sysdeps/linux/common/dl-osinfo.h 2014-02-03 12:32:56.000000000 +0100
  55338. @@ -17,10 +17,11 @@
  55339. # endif
  55340. # include <stdint.h>
  55341. -# include <sys/time.h>
  55342. # ifdef IS_IN_libc
  55343. -#include <fcntl.h>
  55344. +# include <fcntl.h>
  55345. +# include <unistd.h>
  55346. +# include <sys/time.h>
  55347. # define OPEN open
  55348. # define READ read
  55349. # define CLOSE close
  55350. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dup2.c uClibc/libc/sysdeps/linux/common/dup2.c
  55351. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dup2.c 2012-05-15 09:20:09.000000000 +0200
  55352. +++ uClibc/libc/sysdeps/linux/common/dup2.c 2014-02-03 12:32:56.000000000 +0100
  55353. @@ -9,7 +9,24 @@
  55354. #include <sys/syscall.h>
  55355. #include <unistd.h>
  55356. +#if defined __NR_dup3 && !defined __NR_dup2
  55357. +# include <fcntl.h>
  55358. +extern int __libc_fcntl (int fd, int cmd, ...);
  55359. +libc_hidden_proto(__libc_fcntl);
  55360. +int dup2(int old, int newfd)
  55361. +{
  55362. + /*
  55363. + * Check if old fd is valid before we try
  55364. + * to ducplicate it. Return it if valid
  55365. + * or EBADF otherwise
  55366. + */
  55367. + if (old == newfd)
  55368. + return fcntl(old, F_GETFL, 0) < 0 ? -1 : newfd;
  55369. + return dup3(old, newfd, 0);
  55370. +}
  55371. +#else
  55372. _syscall2(int, dup2, int, oldfd, int, newfd)
  55373. +#endif
  55374. libc_hidden_def(dup2)
  55375. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dup3.c uClibc/libc/sysdeps/linux/common/dup3.c
  55376. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dup3.c 1970-01-01 01:00:00.000000000 +0100
  55377. +++ uClibc/libc/sysdeps/linux/common/dup3.c 2014-02-03 12:32:56.000000000 +0100
  55378. @@ -0,0 +1,16 @@
  55379. +/* vi: set sw=4 ts=4: */
  55380. +/*
  55381. + * dup3() for uClibc
  55382. + *
  55383. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  55384. + *
  55385. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55386. + */
  55387. +
  55388. +#include <sys/syscall.h>
  55389. +#include <unistd.h>
  55390. +
  55391. +#if defined(__NR_dup3)
  55392. +_syscall3(int, dup3, int, oldfd, int, newfd, int, flags)
  55393. +libc_hidden_def(dup3)
  55394. +#endif
  55395. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/epoll.c uClibc/libc/sysdeps/linux/common/epoll.c
  55396. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/epoll.c 2012-05-15 09:20:09.000000000 +0200
  55397. +++ uClibc/libc/sysdeps/linux/common/epoll.c 2014-02-03 12:32:56.000000000 +0100
  55398. @@ -1,6 +1,6 @@
  55399. /* vi: set sw=4 ts=4: */
  55400. /*
  55401. - * epoll_create() / epoll_ctl() / epoll_wait() for uClibc
  55402. + * epoll_create() / epoll_ctl() / epoll_wait() / epoll_pwait() for uClibc
  55403. *
  55404. * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  55405. *
  55406. @@ -9,75 +9,61 @@
  55407. #include <sys/syscall.h>
  55408. #include <sys/epoll.h>
  55409. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55410. -# include <sysdep-cancel.h>
  55411. -#else
  55412. -# define SINGLE_THREAD_P 1
  55413. -#endif
  55414. +#include <cancel.h>
  55415. -/*
  55416. - * epoll_create()
  55417. - */
  55418. #ifdef __NR_epoll_create
  55419. _syscall1(int, epoll_create, int, size)
  55420. #endif
  55421. -/*
  55422. - * epoll_create1()
  55423. - */
  55424. #ifdef __NR_epoll_create1
  55425. _syscall1(int, epoll_create1, int, flags)
  55426. #endif
  55427. -/*
  55428. - * epoll_ctl()
  55429. - */
  55430. +#if defined __NR_epoll_create1 && !defined __NR_epoll_create
  55431. +int epoll_create(int size)
  55432. +{
  55433. + return INLINE_SYSCALL(epoll_create1, 1, 0);
  55434. +}
  55435. +
  55436. +#endif
  55437. +
  55438. #ifdef __NR_epoll_ctl
  55439. -_syscall4(int,epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event)
  55440. +_syscall4(int, epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event)
  55441. #endif
  55442. -/*
  55443. - * epoll_wait()
  55444. - */
  55445. #ifdef __NR_epoll_wait
  55446. -extern __typeof(epoll_wait) __libc_epoll_wait;
  55447. -int __libc_epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
  55448. +static int __NC(epoll_wait)(int epfd, struct epoll_event *events, int maxevents, int timeout)
  55449. {
  55450. - if (SINGLE_THREAD_P)
  55451. - return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  55452. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55453. - else {
  55454. - int oldtype = LIBC_CANCEL_ASYNC ();
  55455. - int result = INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  55456. - LIBC_CANCEL_RESET (oldtype);
  55457. - return result;
  55458. - }
  55459. -# endif
  55460. + return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  55461. }
  55462. -weak_alias(__libc_epoll_wait, epoll_wait)
  55463. +CANCELLABLE_SYSCALL(int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
  55464. + (epfd, events, maxevents, timeout))
  55465. #endif
  55466. -/*
  55467. - * epoll_pwait()
  55468. - */
  55469. #ifdef __NR_epoll_pwait
  55470. # include <signal.h>
  55471. -extern __typeof(epoll_pwait) __libc_epoll_pwait;
  55472. -int __libc_epoll_pwait(int epfd, struct epoll_event *events, int maxevents,
  55473. - int timeout, const sigset_t *set)
  55474. +# define __NR___syscall_epoll_pwait __NR_epoll_pwait
  55475. +static __always_inline _syscall6(int, __syscall_epoll_pwait, int, epfd, struct epoll_event *, events,
  55476. + int, maxevents, int, timeout, const sigset_t *, sigmask, size_t, sigsetsize)
  55477. +
  55478. +static int __NC(epoll_pwait)(int epfd, struct epoll_event *events, int maxevents, int timeout,
  55479. + const sigset_t *set)
  55480. {
  55481. - int nsig = _NSIG / 8;
  55482. - if (SINGLE_THREAD_P)
  55483. - return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
  55484. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55485. - else {
  55486. - int oldtype = LIBC_CANCEL_ASYNC ();
  55487. - int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
  55488. - LIBC_CANCEL_RESET (oldtype);
  55489. - return result;
  55490. - }
  55491. -# endif
  55492. + return __syscall_epoll_pwait(epfd, events, maxevents, timeout, set, __SYSCALL_SIGSET_T_SIZE);
  55493. }
  55494. -weak_alias(__libc_epoll_pwait, epoll_pwait)
  55495. +CANCELLABLE_SYSCALL(int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout,
  55496. + const sigset_t *set),
  55497. + (epfd, events, maxevents, timeout, set))
  55498. +/*
  55499. + * If epoll_wait is not defined, then call epoll_pwait instead using NULL
  55500. + * for sigmask argument
  55501. + */
  55502. +# ifndef __NR_epoll_wait
  55503. +# include <stddef.h>
  55504. +int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
  55505. +{
  55506. + return INLINE_SYSCALL(epoll_pwait, 5, epfd, events, maxevents, timeout, NULL);
  55507. +}
  55508. +# endif
  55509. #endif
  55510. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/eventfd.c uClibc/libc/sysdeps/linux/common/eventfd.c
  55511. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/eventfd.c 2012-05-15 09:20:09.000000000 +0200
  55512. +++ uClibc/libc/sysdeps/linux/common/eventfd.c 2014-02-03 12:32:56.000000000 +0100
  55513. @@ -7,12 +7,24 @@
  55514. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55515. */
  55516. +#include <errno.h>
  55517. #include <sys/syscall.h>
  55518. #include <sys/eventfd.h>
  55519. /*
  55520. * eventfd()
  55521. */
  55522. -#ifdef __NR_eventfd
  55523. -_syscall2(int, eventfd, int, count, int, flags)
  55524. +#if defined __NR_eventfd || defined __NR_eventfd2
  55525. +int eventfd (int count, int flags)
  55526. +{
  55527. +#if defined __NR_eventfd2
  55528. + return INLINE_SYSCALL (eventfd2, 2, count, flags);
  55529. +#elif defined __NR_eventfd
  55530. + if (flags != 0) {
  55531. + __set_errno (EINVAL);
  55532. + return -1;
  55533. + }
  55534. + return INLINE_SYSCALL (eventfd, 1, count);
  55535. +#endif
  55536. +}
  55537. #endif
  55538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/_exit.c uClibc/libc/sysdeps/linux/common/_exit.c
  55539. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/_exit.c 2012-05-15 09:20:09.000000000 +0200
  55540. +++ uClibc/libc/sysdeps/linux/common/_exit.c 2014-02-03 12:32:56.000000000 +0100
  55541. @@ -7,28 +7,36 @@
  55542. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55543. */
  55544. -#include <features.h>
  55545. -#include <errno.h>
  55546. #include <unistd.h>
  55547. -#include <sys/types.h>
  55548. +#include <stdlib.h>
  55549. #include <sys/syscall.h>
  55550. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55551. -#include <sysdep.h>
  55552. +#include <bits/kernel-features.h>
  55553. +
  55554. +#ifdef __UCLIBC_ABORT_INSTRUCTION__
  55555. +# define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__)
  55556. +#else
  55557. +# warning "no abort instruction defined for this arch"
  55558. #endif
  55559. +/* have to check for kernel 2.5.35 too, since NR was earlier present */
  55560. +#if defined __NR_exit_group && __LINUX_KERNEL_VERSION >= 0x020600 \
  55561. + && defined __UCLIBC_HAS_THREADS__
  55562. +# undef __NR_exit
  55563. +# define __NR_exit __NR_exit_group
  55564. +#endif
  55565. -void attribute_noreturn _exit(int status)
  55566. +void _exit(int status)
  55567. {
  55568. /* The loop is added only to keep gcc happy. */
  55569. while(1)
  55570. {
  55571. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55572. -# ifdef __NR_exit_group
  55573. - INLINE_SYSCALL(exit_group, 1, status);
  55574. -# endif
  55575. -#endif
  55576. INLINE_SYSCALL(exit, 1, status);
  55577. +#ifdef ABORT_INSTRUCTION
  55578. + ABORT_INSTRUCTION;
  55579. +#endif
  55580. }
  55581. }
  55582. libc_hidden_def(_exit)
  55583. +#ifdef __USE_ISOC99
  55584. weak_alias(_exit,_Exit)
  55585. +#endif
  55586. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/faccessat.c uClibc/libc/sysdeps/linux/common/faccessat.c
  55587. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/faccessat.c 2012-05-15 09:20:09.000000000 +0200
  55588. +++ uClibc/libc/sysdeps/linux/common/faccessat.c 2014-02-03 12:32:56.000000000 +0100
  55589. @@ -11,6 +11,7 @@
  55590. #ifdef __NR_faccessat
  55591. _syscall4(int, faccessat, int, fd, const char *, file, int, type, int, flag)
  55592. +libc_hidden_def(faccessat)
  55593. #else
  55594. /* should add emulation with faccess() and /proc/self/fd/ ... */
  55595. #endif
  55596. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchdir.c uClibc/libc/sysdeps/linux/common/fchdir.c
  55597. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchdir.c 2012-05-15 09:20:09.000000000 +0200
  55598. +++ uClibc/libc/sysdeps/linux/common/fchdir.c 2014-02-03 12:32:56.000000000 +0100
  55599. @@ -10,6 +10,7 @@
  55600. #include <sys/syscall.h>
  55601. #include <unistd.h>
  55602. -
  55603. +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  55604. _syscall1(int, fchdir, int, fd)
  55605. libc_hidden_def(fchdir)
  55606. +#endif
  55607. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchmodat.c uClibc/libc/sysdeps/linux/common/fchmodat.c
  55608. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchmodat.c 2012-05-15 09:20:09.000000000 +0200
  55609. +++ uClibc/libc/sysdeps/linux/common/fchmodat.c 2014-02-03 12:32:56.000000000 +0100
  55610. @@ -32,6 +32,7 @@
  55611. return INLINE_SYSCALL(fchmodat, 3, fd, file, mode);
  55612. }
  55613. +libc_hidden_def(fchmodat)
  55614. #else
  55615. /* should add emulation with fchmod() and /proc/self/fd/ ... */
  55616. #endif
  55617. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchownat.c uClibc/libc/sysdeps/linux/common/fchownat.c
  55618. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchownat.c 2012-05-15 09:20:09.000000000 +0200
  55619. +++ uClibc/libc/sysdeps/linux/common/fchownat.c 2014-02-03 12:32:56.000000000 +0100
  55620. @@ -11,6 +11,7 @@
  55621. #ifdef __NR_fchownat
  55622. _syscall5(int, fchownat, int, fd, const char *, file, uid_t, owner, gid_t, group, int, flag)
  55623. +libc_hidden_def(fchownat)
  55624. #else
  55625. /* should add emulation with fchown() and /proc/self/fd/ ... */
  55626. #endif
  55627. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fdatasync.c uClibc/libc/sysdeps/linux/common/fdatasync.c
  55628. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fdatasync.c 2012-05-15 09:20:09.000000000 +0200
  55629. +++ uClibc/libc/sysdeps/linux/common/fdatasync.c 2014-02-03 12:32:56.000000000 +0100
  55630. @@ -8,36 +8,17 @@
  55631. */
  55632. #include <sys/syscall.h>
  55633. -#include <unistd.h>
  55634. #if !defined __NR_fdatasync && defined __NR_osf_fdatasync
  55635. # define __NR_fdatasync __NR_osf_fdatasync
  55636. #endif
  55637. #ifdef __NR_fdatasync
  55638. +# include <unistd.h>
  55639. +# include <cancel.h>
  55640. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55641. -# include <sysdep-cancel.h>
  55642. -# else
  55643. -# define SINGLE_THREAD_P 1
  55644. -# endif
  55645. -
  55646. -#define __NR___syscall_fdatasync __NR_fdatasync
  55647. -
  55648. -static __always_inline
  55649. -_syscall1(int, __syscall_fdatasync, int, fd)
  55650. -
  55651. -int fdatasync(int fd)
  55652. -{
  55653. - if (SINGLE_THREAD_P)
  55654. - return __syscall_fdatasync(fd);
  55655. -
  55656. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55657. - int oldtype = LIBC_CANCEL_ASYNC ();
  55658. - int result = __syscall_fdatasync(fd);
  55659. - LIBC_CANCEL_RESET (oldtype);
  55660. - return result;
  55661. -# endif
  55662. -}
  55663. +# define __NR___fdatasync_nocancel __NR_fdatasync
  55664. +static _syscall1(int, __NC(fdatasync), int, fd)
  55665. +CANCELLABLE_SYSCALL(int, fdatasync, (int fd), (fd))
  55666. #endif
  55667. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fork.c uClibc/libc/sysdeps/linux/common/fork.c
  55668. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fork.c 2012-05-15 09:20:09.000000000 +0200
  55669. +++ uClibc/libc/sysdeps/linux/common/fork.c 2014-02-03 12:32:56.000000000 +0100
  55670. @@ -8,16 +8,35 @@
  55671. */
  55672. #include <sys/syscall.h>
  55673. -#include <unistd.h>
  55674. -#ifdef __ARCH_USE_MMU__
  55675. -
  55676. -#ifdef __NR_fork
  55677. -#define __NR___libc_fork __NR_fork
  55678. +#if defined __ARCH_USE_MMU__
  55679. +# include <unistd.h>
  55680. extern __typeof(fork) __libc_fork;
  55681. -_syscall0(pid_t, __libc_fork)
  55682. -weak_alias(__libc_fork,fork)
  55683. +# if defined __NR_fork
  55684. +# include <cancel.h>
  55685. +# define __NR___libc_fork __NR_fork
  55686. +_syscall0(pid_t, fork)
  55687. +
  55688. +# elif defined __NR_clone && !defined __NR_fork
  55689. +# include <sys/types.h>
  55690. +# include <signal.h>
  55691. +# include <stddef.h>
  55692. +pid_t fork(void)
  55693. +{
  55694. + pid_t pid = INLINE_SYSCALL(clone, 4, SIGCHLD, NULL, NULL, NULL);
  55695. +
  55696. + if (pid < 0)
  55697. + return -1;
  55698. +
  55699. + return pid;
  55700. +}
  55701. +
  55702. +# endif
  55703. +# ifdef __UCLIBC_HAS_THREADS__
  55704. +strong_alias(fork,__libc_fork)
  55705. libc_hidden_weak(fork)
  55706. -#endif
  55707. +# else
  55708. +libc_hidden_def(fork)
  55709. +# endif
  55710. #endif
  55711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fpu_control.h uClibc/libc/sysdeps/linux/common/fpu_control.h
  55712. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  55713. +++ uClibc/libc/sysdeps/linux/common/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  55714. @@ -13,9 +13,8 @@
  55715. Lesser General Public License for more details.
  55716. You should have received a copy of the GNU Lesser General Public
  55717. - License along with the GNU C Library; if not, write to the Free
  55718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55719. - 02111-1307 USA. */
  55720. + License along with the GNU C Library; if not, see
  55721. + <http://www.gnu.org/licenses/>. */
  55722. #ifndef _FPU_CONTROL_H
  55723. #define _FPU_CONTROL_H
  55724. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat64.c uClibc/libc/sysdeps/linux/common/fstat64.c
  55725. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat64.c 2012-05-15 09:20:09.000000000 +0200
  55726. +++ uClibc/libc/sysdeps/linux/common/fstat64.c 2014-02-03 12:32:56.000000000 +0100
  55727. @@ -7,20 +7,20 @@
  55728. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55729. */
  55730. +#include <_lfs_64.h>
  55731. #include <sys/syscall.h>
  55732. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_fstat64
  55733. -#include <unistd.h>
  55734. -#include <sys/stat.h>
  55735. -#include "xstatconv.h"
  55736. -
  55737. -
  55738. -#define __NR___syscall_fstat64 __NR_fstat64
  55739. -static __inline__ _syscall2(int, __syscall_fstat64,
  55740. - int, filedes, struct kernel_stat64 *, buf)
  55741. +#ifdef __NR_fstat64
  55742. +# include <unistd.h>
  55743. +# include <sys/stat.h>
  55744. +# include "xstatconv.h"
  55745. +# define __NR___syscall_fstat64 __NR_fstat64
  55746. +static __always_inline _syscall2(int, __syscall_fstat64,
  55747. + int, filedes, struct kernel_stat64 *, buf)
  55748. int fstat64(int fd, struct stat64 *buf)
  55749. {
  55750. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55751. int result;
  55752. struct kernel_stat64 kbuf;
  55753. @@ -29,6 +29,9 @@
  55754. __xstat64_conv(&kbuf, buf);
  55755. }
  55756. return result;
  55757. +#else
  55758. + return __syscall_fstat64(fd, buf);
  55759. +#endif
  55760. }
  55761. libc_hidden_def(fstat64)
  55762. #endif
  55763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat64.c uClibc/libc/sysdeps/linux/common/fstatat64.c
  55764. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat64.c 2012-05-15 09:20:09.000000000 +0200
  55765. +++ uClibc/libc/sysdeps/linux/common/fstatat64.c 2014-02-03 12:32:56.000000000 +0100
  55766. @@ -6,20 +6,21 @@
  55767. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55768. */
  55769. +#include <_lfs_64.h>
  55770. +#include <bits/wordsize.h>
  55771. #include <sys/syscall.h>
  55772. -#include <sys/stat.h>
  55773. -#include "xstatconv.h"
  55774. -
  55775. -#ifdef __UCLIBC_HAS_LFS__
  55776. /* 64bit ports tend to favor newfstatat() */
  55777. -#ifdef __NR_newfstatat
  55778. +#if __WORDSIZE == 64 && defined __NR_newfstatat
  55779. # define __NR_fstatat64 __NR_newfstatat
  55780. #endif
  55781. #ifdef __NR_fstatat64
  55782. +# include <sys/stat.h>
  55783. +# include "xstatconv.h"
  55784. int fstatat64(int fd, const char *file, struct stat64 *buf, int flag)
  55785. {
  55786. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55787. int ret;
  55788. struct kernel_stat64 kbuf;
  55789. @@ -28,9 +29,11 @@
  55790. __xstat64_conv(&kbuf, buf);
  55791. return ret;
  55792. +# else
  55793. + return INLINE_SYSCALL(fstatat64, 4, fd, file, buf, flag);
  55794. +# endif
  55795. }
  55796. +libc_hidden_def(fstatat64)
  55797. #else
  55798. /* should add emulation with fstat64() and /proc/self/fd/ ... */
  55799. #endif
  55800. -
  55801. -#endif
  55802. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat.c uClibc/libc/sysdeps/linux/common/fstatat.c
  55803. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat.c 2012-05-15 09:20:09.000000000 +0200
  55804. +++ uClibc/libc/sysdeps/linux/common/fstatat.c 2014-02-03 12:32:56.000000000 +0100
  55805. @@ -11,7 +11,7 @@
  55806. #include "xstatconv.h"
  55807. /* 64bit ports tend to favor newfstatat() */
  55808. -#ifdef __NR_newfstatat
  55809. +#if __WORDSIZE == 64 && defined __NR_newfstatat
  55810. # define __NR_fstatat64 __NR_newfstatat
  55811. #endif
  55812. @@ -19,14 +19,26 @@
  55813. int fstatat(int fd, const char *file, struct stat *buf, int flag)
  55814. {
  55815. int ret;
  55816. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55817. struct kernel_stat64 kbuf;
  55818. -
  55819. ret = INLINE_SYSCALL(fstatat64, 4, fd, file, &kbuf, flag);
  55820. if (ret == 0)
  55821. __xstat32_conv(&kbuf, buf);
  55822. -
  55823. +# else
  55824. + ret = INLINE_SYSCALL(fstatat64, 4, fd, file, buf, flag);
  55825. + if (ret == 0) {
  55826. + /* Did we overflow */
  55827. + if (buf->__pad1 || buf->__pad2 || buf->__pad3
  55828. + || buf->__pad4 || buf->__pad5 || buf->__pad6
  55829. + || buf->__pad7) {
  55830. + __set_errno(EOVERFLOW);
  55831. + return -1;
  55832. + }
  55833. + }
  55834. +# endif /* __ARCH_HAS_DEPRECATED_SYSCALLS__ */
  55835. return ret;
  55836. }
  55837. +libc_hidden_def(fstatat)
  55838. #else
  55839. /* should add emulation with fstat() and /proc/self/fd/ ... */
  55840. #endif
  55841. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat.c uClibc/libc/sysdeps/linux/common/fstat.c
  55842. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat.c 2012-05-15 09:20:09.000000000 +0200
  55843. +++ uClibc/libc/sysdeps/linux/common/fstat.c 2014-02-03 12:32:56.000000000 +0100
  55844. @@ -12,10 +12,28 @@
  55845. #include <sys/stat.h>
  55846. #include "xstatconv.h"
  55847. +#if defined __NR_fstat64 && !defined __NR_fstat
  55848. +int fstat(int fd, struct stat *buf)
  55849. +{
  55850. + int result = INLINE_SYSCALL(fstat64, 2, fd, buf);
  55851. + if (result == 0) {
  55852. + /* Did we overflow? */
  55853. + if (buf->__pad1 || buf->__pad2 || buf->__pad3
  55854. + || buf->__pad4 || buf->__pad5
  55855. + || buf->__pad6 || buf->__pad7) {
  55856. + __set_errno(EOVERFLOW);
  55857. + return -1;
  55858. + }
  55859. + }
  55860. + return result;
  55861. +}
  55862. +libc_hidden_def(fstat)
  55863. +
  55864. +#elif defined __NR_fstat
  55865. int fstat(int fd, struct stat *buf)
  55866. {
  55867. int result;
  55868. -#ifdef __NR_fstat64
  55869. +# ifdef __NR_fstat64
  55870. /* normal stat call has limited values for various stat elements
  55871. * e.g. uid device major/minor etc.
  55872. * so we use 64 variant if available
  55873. @@ -26,19 +44,21 @@
  55874. if (result == 0) {
  55875. __xstat32_conv(&kbuf, buf);
  55876. }
  55877. -#else
  55878. +# else
  55879. struct kernel_stat kbuf;
  55880. result = INLINE_SYSCALL(fstat, 2, fd, &kbuf);
  55881. if (result == 0) {
  55882. __xstat_conv(&kbuf, buf);
  55883. }
  55884. -#endif
  55885. +# endif
  55886. return result;
  55887. }
  55888. libc_hidden_def(fstat)
  55889. -#if ! defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__
  55890. +# if ! defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__
  55891. strong_alias_untyped(fstat,fstat64)
  55892. libc_hidden_def(fstat64)
  55893. +# endif
  55894. +
  55895. #endif
  55896. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatfs.c uClibc/libc/sysdeps/linux/common/fstatfs.c
  55897. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatfs.c 2012-05-15 09:20:09.000000000 +0200
  55898. +++ uClibc/libc/sysdeps/linux/common/fstatfs.c 2014-02-03 12:32:56.000000000 +0100
  55899. @@ -9,8 +9,9 @@
  55900. #include <sys/syscall.h>
  55901. #include <sys/vfs.h>
  55902. +#include <string.h>
  55903. -#ifndef __USE_FILE_OFFSET64
  55904. +#ifndef __USE_FILE_OFFSET64__
  55905. extern int fstatfs (int __fildes, struct statfs *__buf)
  55906. __THROW __nonnull ((2));
  55907. #else
  55908. @@ -23,8 +24,26 @@
  55909. #endif
  55910. extern __typeof(fstatfs) __libc_fstatfs attribute_hidden;
  55911. -#define __NR___libc_fstatfs __NR_fstatfs
  55912. +#ifdef __NR_fstatfs
  55913. +# define __NR___libc_fstatfs __NR_fstatfs
  55914. _syscall2(int, __libc_fstatfs, int, fd, struct statfs *, buf)
  55915. +#else
  55916. +int __libc_fstatfs (int __fildes, struct statfs *__buf)
  55917. +{
  55918. + int err = INLINE_SYSCALL(fstatfs64, 3, __fildes, sizeof(*__buf), __buf);
  55919. +
  55920. + if (err == 0) {
  55921. + /* Did we overflow? */
  55922. + if (__buf->__pad1 || __buf->__pad2 || __buf->__pad3 ||
  55923. + __buf->__pad4 || __buf->__pad5) {
  55924. + __set_errno(EOVERFLOW);
  55925. + return -1;
  55926. + }
  55927. + }
  55928. + return err;
  55929. +};
  55930. +/* Redefined fstatfs because we need it for backwards compatibility */
  55931. +#endif /* __NR_fstatfs */
  55932. #if defined __UCLIBC_LINUX_SPECIFIC__
  55933. weak_alias(__libc_fstatfs,fstatfs)
  55934. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fsync.c uClibc/libc/sysdeps/linux/common/fsync.c
  55935. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fsync.c 2012-05-15 09:20:09.000000000 +0200
  55936. +++ uClibc/libc/sysdeps/linux/common/fsync.c 2014-02-03 12:32:56.000000000 +0100
  55937. @@ -9,29 +9,9 @@
  55938. #include <sys/syscall.h>
  55939. #include <unistd.h>
  55940. +#include <cancel.h>
  55941. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55942. -#include "sysdep-cancel.h"
  55943. -#else
  55944. -#define SINGLE_THREAD_P 1
  55945. -#endif
  55946. +#define __NR___fsync_nocancel __NR_fsync
  55947. +static _syscall1(int, __NC(fsync), int, fd)
  55948. -#define __NR___syscall_fsync __NR_fsync
  55949. -static inline _syscall1(int, __syscall_fsync, int, fd)
  55950. -
  55951. -extern __typeof(fsync) __libc_fsync;
  55952. -
  55953. -int __libc_fsync(int fd)
  55954. -{
  55955. - if (SINGLE_THREAD_P)
  55956. - return __syscall_fsync(fd);
  55957. -
  55958. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55959. - int oldtype = LIBC_CANCEL_ASYNC ();
  55960. - int result = __syscall_fsync(fd);
  55961. - LIBC_CANCEL_RESET (oldtype);
  55962. - return result;
  55963. -#endif
  55964. -}
  55965. -
  55966. -weak_alias(__libc_fsync, fsync)
  55967. +CANCELLABLE_SYSCALL(int, fsync, (int fd), (fd))
  55968. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate64.c uClibc/libc/sysdeps/linux/common/ftruncate64.c
  55969. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate64.c 2012-05-15 09:20:09.000000000 +0200
  55970. +++ uClibc/libc/sysdeps/linux/common/ftruncate64.c 2014-02-03 12:32:56.000000000 +0100
  55971. @@ -7,50 +7,41 @@
  55972. * and on 32 bit machines this sends things into the kernel as
  55973. * two 32-bit arguments (high and low 32 bits of length) that
  55974. * are ordered based on endianess. It turns out endian.h has
  55975. - * just the macro we need to order things, __LONG_LONG_PAIR.
  55976. + * just the macro we need to order things, OFF64_HI_LO.
  55977. */
  55978. -#include <features.h>
  55979. +#include <_lfs_64.h>
  55980. +#include <sys/syscall.h>
  55981. +#include <unistd.h>
  55982. -#ifdef __UCLIBC_HAS_LFS__
  55983. +#ifdef __NR_ftruncate64
  55984. +# include <bits/wordsize.h>
  55985. -# include <unistd.h>
  55986. -# include <errno.h>
  55987. -# include <endian.h>
  55988. -# include <stdint.h>
  55989. -# include <sys/types.h>
  55990. -# include <sys/syscall.h>
  55991. -
  55992. -
  55993. -# ifdef __NR_ftruncate64
  55994. -
  55995. -# if __WORDSIZE == 64
  55996. +# if __WORDSIZE == 64
  55997. /* For a 64 bit machine, life is simple... */
  55998. _syscall2(int, ftruncate64, int, fd, __off64_t, length)
  55999. -# elif __WORDSIZE == 32
  56000. +# elif __WORDSIZE == 32
  56001. +# include <endian.h>
  56002. +# include <stdint.h>
  56003. /* The exported ftruncate64 function. */
  56004. int ftruncate64 (int fd, __off64_t length)
  56005. {
  56006. - uint32_t low = length & 0xffffffff;
  56007. - uint32_t high = length >> 32;
  56008. -# if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
  56009. - return INLINE_SYSCALL(ftruncate64,
  56010. - 4, fd, 0, __LONG_LONG_PAIR (high, low));
  56011. -# else
  56012. - return INLINE_SYSCALL(ftruncate64, 3, fd,
  56013. - __LONG_LONG_PAIR (high, low));
  56014. -# endif
  56015. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  56016. + return INLINE_SYSCALL(ftruncate64, 4, fd, 0, OFF64_HI_LO(length));
  56017. +# else
  56018. + return INLINE_SYSCALL(ftruncate64, 3, fd, OFF64_HI_LO(length));
  56019. +# endif
  56020. }
  56021. -# else /* __WORDSIZE */
  56022. -# error Your machine is not 64 bit or 32 bit, I am dazed and confused.
  56023. -# endif /* __WORDSIZE */
  56024. -
  56025. -# else /* __NR_ftruncate64 */
  56026. +# else /* __WORDSIZE */
  56027. +# error Your machine is not 64 bit or 32 bit, I am dazed and confused.
  56028. +# endif /* __WORDSIZE */
  56029. +#else /* __NR_ftruncate64 */
  56030. +# include <errno.h>
  56031. int ftruncate64 (int fd, __off64_t length)
  56032. {
  56033. @@ -65,7 +56,5 @@
  56034. return -1;
  56035. }
  56036. -# endif /* __NR_ftruncate64 */
  56037. +#endif /* __NR_ftruncate64 */
  56038. libc_hidden_def(ftruncate64)
  56039. -
  56040. -#endif /* __UCLIBC_HAS_LFS__ */
  56041. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate.c uClibc/libc/sysdeps/linux/common/ftruncate.c
  56042. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate.c 2012-05-15 09:20:09.000000000 +0200
  56043. +++ uClibc/libc/sysdeps/linux/common/ftruncate.c 2014-02-03 12:32:56.000000000 +0100
  56044. @@ -10,6 +10,20 @@
  56045. #include <sys/syscall.h>
  56046. #include <unistd.h>
  56047. +#if defined __NR_ftruncate64 && !defined __NR_ftruncate
  56048. +# include <endian.h>
  56049. +# include <stdint.h>
  56050. +int ftruncate(int fd, __off_t length)
  56051. +{
  56052. +# if defined __UCLIBC_HAS_LFS__
  56053. + return ftruncate64(fd, length);
  56054. +# elif __WORDSIZE == 32
  56055. + return INLINE_SYSCALL(ftruncate64, 3, fd, OFF_HI_LO(length));
  56056. +# endif
  56057. +}
  56058. +libc_hidden_def(ftruncate);
  56059. +#else
  56060. _syscall2(int, ftruncate, int, fd, __off_t, length)
  56061. libc_hidden_def(ftruncate)
  56062. +#endif
  56063. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/futimens.c uClibc/libc/sysdeps/linux/common/futimens.c
  56064. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/futimens.c 2012-05-15 09:20:09.000000000 +0200
  56065. +++ uClibc/libc/sysdeps/linux/common/futimens.c 2014-02-03 12:32:56.000000000 +0100
  56066. @@ -16,13 +16,13 @@
  56067. * Note that due to not including the header, we have to alias the call
  56068. * manually.
  56069. */
  56070. -extern int utimensat (int __fd, __const char *__path,
  56071. - __const struct timespec __times[2],
  56072. +extern int utimensat (int __fd, const char *__path,
  56073. + const struct timespec __times[2],
  56074. int __flags) __THROW;
  56075. libc_hidden_proto(utimensat)
  56076. -int futimens (int __fd, __const struct timespec __times[2]) __THROW;
  56077. -int futimens (int fd, __const struct timespec ts[2])
  56078. +int futimens (int __fd, const struct timespec __times[2]) __THROW;
  56079. +int futimens (int fd, const struct timespec ts[2])
  56080. {
  56081. return utimensat(fd, 0, ts, 0);
  56082. }
  56083. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents64.c uClibc/libc/sysdeps/linux/common/getdents64.c
  56084. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents64.c 2012-05-15 09:20:09.000000000 +0200
  56085. +++ uClibc/libc/sysdeps/linux/common/getdents64.c 2014-02-03 12:32:56.000000000 +0100
  56086. @@ -4,7 +4,11 @@
  56087. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56088. */
  56089. -#include <features.h>
  56090. +#include <_lfs_64.h>
  56091. +#include <sys/syscall.h>
  56092. +
  56093. +#ifdef __NR_getdents64
  56094. +
  56095. #include <assert.h>
  56096. #include <errno.h>
  56097. #include <dirent.h>
  56098. @@ -13,17 +17,9 @@
  56099. #include <string.h>
  56100. #include <unistd.h>
  56101. #include <sys/param.h>
  56102. -#include <sys/types.h>
  56103. -#include <sys/syscall.h>
  56104. -#include <bits/kernel_types.h>
  56105. +#include <bits/wordsize.h>
  56106. #include <bits/uClibc_alloc.h>
  56107. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64
  56108. -
  56109. -# ifndef offsetof
  56110. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  56111. -# endif
  56112. -
  56113. struct kernel_dirent64
  56114. {
  56115. uint64_t d_ino;
  56116. @@ -36,7 +32,6 @@
  56117. # define __NR___syscall_getdents64 __NR_getdents64
  56118. static __inline__ _syscall3(int, __syscall_getdents64, int, fd, unsigned char *, dirp, size_t, count)
  56119. -ssize_t __getdents64 (int fd, char *buf, size_t nbytes) attribute_hidden;
  56120. ssize_t __getdents64 (int fd, char *buf, size_t nbytes)
  56121. {
  56122. struct dirent64 *dp;
  56123. @@ -96,10 +91,10 @@
  56124. return (char *) dp - buf;
  56125. }
  56126. -#if __WORDSIZE == 64
  56127. +#if __WORDSIZE == 64 || (defined __UCLIBC_HAS_LFS__ && !defined __NR_getdents)
  56128. /* since getdents doesnt give us d_type but getdents64 does, try and
  56129. * use getdents64 as much as possible */
  56130. -attribute_hidden strong_alias(__getdents64,__getdents)
  56131. +strong_alias(__getdents64,__getdents)
  56132. #endif
  56133. #endif
  56134. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents.c uClibc/libc/sysdeps/linux/common/getdents.c
  56135. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents.c 2012-05-15 09:20:09.000000000 +0200
  56136. +++ uClibc/libc/sysdeps/linux/common/getdents.c 2014-02-03 12:32:56.000000000 +0100
  56137. @@ -4,21 +4,17 @@
  56138. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56139. */
  56140. -#include <assert.h>
  56141. -#include <errno.h>
  56142. +#include <sys/syscall.h>
  56143. +#include <bits/wordsize.h>
  56144. +
  56145. +#if !(defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64 && __WORDSIZE == 64)
  56146. +
  56147. #include <dirent.h>
  56148. -#include <stddef.h>
  56149. -#include <stdint.h>
  56150. #include <string.h>
  56151. -#include <unistd.h>
  56152. -#include <sys/param.h>
  56153. #include <sys/types.h>
  56154. -#include <sys/syscall.h>
  56155. #include <bits/kernel_types.h>
  56156. #include <bits/kernel-features.h>
  56157. -#include <bits/uClibc_alloc.h>
  56158. -#if !(defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64 && __WORDSIZE == 64)
  56159. /* If the condition above is met, __getdents is defined as an alias
  56160. * for __getdents64 (see getdents64.c). Otherwise...
  56161. */
  56162. @@ -30,10 +26,7 @@
  56163. * version / arch details.
  56164. */
  56165. -#ifndef offsetof
  56166. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  56167. -#endif
  56168. -
  56169. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  56170. struct kernel_dirent
  56171. {
  56172. long int d_ino;
  56173. @@ -41,13 +34,16 @@
  56174. unsigned short int d_reclen;
  56175. char d_name[256];
  56176. };
  56177. +# else
  56178. +# define kernel_dirent dirent
  56179. +# endif
  56180. -ssize_t __getdents (int fd, char *buf, size_t nbytes) attribute_hidden;
  56181. -
  56182. -#define __NR___syscall_getdents __NR_getdents
  56183. +# if defined __NR_getdents
  56184. +# define __NR___syscall_getdents __NR_getdents
  56185. static __always_inline _syscall3(int, __syscall_getdents, int, fd, unsigned char *, kdirp, size_t, count)
  56186. +# endif
  56187. -#if defined __ASSUME_GETDENTS32_D_TYPE
  56188. +# if defined __ASSUME_GETDENTS32_D_TYPE && defined __NR_getdents
  56189. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  56190. {
  56191. @@ -76,7 +72,14 @@
  56192. return retval;
  56193. }
  56194. -#elif ! defined __UCLIBC_HAS_LFS__ || ! defined __NR_getdents64
  56195. +# elif ! defined __UCLIBC_HAS_LFS__ || !defined __NR_getdents64
  56196. +
  56197. +# include <assert.h>
  56198. +# include <stddef.h>
  56199. +# include <errno.h>
  56200. +# include <unistd.h>
  56201. +# include <sys/param.h>
  56202. +# include <bits/uClibc_alloc.h>
  56203. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  56204. {
  56205. @@ -88,6 +91,7 @@
  56206. const size_t size_diff = (offsetof (struct dirent, d_name)
  56207. - offsetof (struct kernel_dirent, d_name));
  56208. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  56209. red_nbytes = MIN (nbytes - ((nbytes /
  56210. (offsetof (struct dirent, d_name) + 14)) * size_diff),
  56211. nbytes - size_diff);
  56212. @@ -96,6 +100,21 @@
  56213. skdp = kdp = stack_heap_alloc(red_nbytes);
  56214. retval = __syscall_getdents(fd, (unsigned char *)kdp, red_nbytes);
  56215. +# else
  56216. +
  56217. + dp = (struct dirent *) buf;
  56218. + skdp = kdp = stack_heap_alloc(nbytes);
  56219. +
  56220. + retval = INLINE_SYSCALL(getdents64, 3, fd, (unsigned char *)kdp, nbytes);
  56221. + if (retval > 0) {
  56222. + /* Did we overflow? */
  56223. + if (kdp->__pad1 || kdp->__pad2) {
  56224. + __set_errno(EINVAL);
  56225. + return -1;
  56226. + }
  56227. + }
  56228. +# endif
  56229. +
  56230. if (retval == -1) {
  56231. stack_heap_free(skdp);
  56232. return -1;
  56233. @@ -137,9 +156,10 @@
  56234. return (char *) dp - buf;
  56235. }
  56236. -#elif __WORDSIZE == 32
  56237. +# elif __WORDSIZE == 32 && !defined __NR_getdents64
  56238. +
  56239. +# include <stddef.h>
  56240. -extern __typeof(__getdents) __getdents64 attribute_hidden;
  56241. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  56242. {
  56243. struct dirent *dp;
  56244. @@ -165,10 +185,10 @@
  56245. return ret;
  56246. }
  56247. -#endif
  56248. +# endif
  56249. -#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
  56250. -attribute_hidden strong_alias(__getdents,__getdents64)
  56251. -#endif
  56252. +# if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
  56253. +strong_alias(__getdents,__getdents64)
  56254. +# endif
  56255. #endif
  56256. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdirname.c uClibc/libc/sysdeps/linux/common/getdirname.c
  56257. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdirname.c 2012-05-15 09:20:09.000000000 +0200
  56258. +++ uClibc/libc/sysdeps/linux/common/getdirname.c 2014-02-03 12:32:56.000000000 +0100
  56259. @@ -13,9 +13,8 @@
  56260. Lesser General Public License for more details.
  56261. You should have received a copy of the GNU Lesser General Public
  56262. - License along with the GNU C Library; if not, write to the Free
  56263. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56264. - 02111-1307 USA. */
  56265. + License along with the GNU C Library; if not, see
  56266. + <http://www.gnu.org/licenses/>. */
  56267. #include <features.h>
  56268. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getgroups.c uClibc/libc/sysdeps/linux/common/getgroups.c
  56269. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getgroups.c 2012-05-15 09:20:09.000000000 +0200
  56270. +++ uClibc/libc/sysdeps/linux/common/getgroups.c 2014-02-03 12:32:56.000000000 +0100
  56271. @@ -8,10 +8,7 @@
  56272. */
  56273. #include <sys/syscall.h>
  56274. -#include <stdlib.h>
  56275. #include <unistd.h>
  56276. -#include <grp.h>
  56277. -
  56278. #if defined(__NR_getgroups32)
  56279. # undef __NR_getgroups
  56280. @@ -22,12 +19,14 @@
  56281. _syscall2(int, getgroups, int, size, gid_t *, list)
  56282. #else
  56283. -
  56284. -#define MIN(a,b) (((a)<(b))?(a):(b))
  56285. -
  56286. -#define __NR___syscall_getgroups __NR_getgroups
  56287. -static __inline__ _syscall2(int, __syscall_getgroups,
  56288. - int, size, __kernel_gid_t *, list)
  56289. +# include <errno.h>
  56290. +# include <stdlib.h>
  56291. +# include <sys/types.h>
  56292. +# include <sys/param.h>
  56293. +
  56294. +# define __NR___syscall_getgroups __NR_getgroups
  56295. +static __always_inline
  56296. +_syscall2(int, __syscall_getgroups, int, size, __kernel_gid_t *, list)
  56297. int getgroups(int size, gid_t groups[])
  56298. {
  56299. @@ -56,5 +55,4 @@
  56300. }
  56301. }
  56302. #endif
  56303. -
  56304. libc_hidden_def(getgroups)
  56305. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/get_kernel_syms.c uClibc/libc/sysdeps/linux/common/get_kernel_syms.c
  56306. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/get_kernel_syms.c 2012-05-15 09:20:09.000000000 +0200
  56307. +++ uClibc/libc/sysdeps/linux/common/get_kernel_syms.c 2014-02-03 12:32:56.000000000 +0100
  56308. @@ -9,8 +9,8 @@
  56309. #include <sys/syscall.h>
  56310. -struct kernel_sym;
  56311. -int get_kernel_syms(struct kernel_sym *table attribute_unused);
  56312. #ifdef __NR_get_kernel_syms
  56313. +struct kernel_sym;
  56314. +int get_kernel_syms(struct kernel_sym *table);
  56315. _syscall1(int, get_kernel_syms, struct kernel_sym *, table)
  56316. #endif
  56317. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getpagesize.c uClibc/libc/sysdeps/linux/common/getpagesize.c
  56318. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getpagesize.c 2012-05-15 09:20:09.000000000 +0200
  56319. +++ uClibc/libc/sysdeps/linux/common/getpagesize.c 2014-02-03 12:32:56.000000000 +0100
  56320. @@ -12,16 +12,13 @@
  56321. Lesser General Public License for more details.
  56322. You should have received a copy of the GNU Lesser General Public
  56323. - License along with the GNU C Library; if not, write to the Free
  56324. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56325. - 02111-1307 USA. */
  56326. + License along with the GNU C Library; if not, see
  56327. + <http://www.gnu.org/licenses/>. */
  56328. #include <unistd.h>
  56329. #include <features.h>
  56330. #include <sys/param.h>
  56331. -extern size_t __pagesize;
  56332. -
  56333. /* Return the system page size. */
  56334. /* couldn't make __getpagesize hidden, because shm.h uses it in a macro */
  56335. extern __typeof(getpagesize) __getpagesize;
  56336. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit64.c uClibc/libc/sysdeps/linux/common/getrlimit64.c
  56337. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit64.c 2012-05-15 09:20:09.000000000 +0200
  56338. +++ uClibc/libc/sysdeps/linux/common/getrlimit64.c 2014-02-03 12:32:56.000000000 +0100
  56339. @@ -12,20 +12,16 @@
  56340. Lesser General Public License for more details.
  56341. You should have received a copy of the GNU Lesser General Public
  56342. - License along with the GNU C Library; if not, write to the Free
  56343. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56344. - 02111-1307 USA. */
  56345. + License along with the GNU C Library; if not, see
  56346. + <http://www.gnu.org/licenses/>. */
  56347. #include <_lfs_64.h>
  56348. -
  56349. -#include <sys/types.h>
  56350. -#include <sys/resource.h>
  56351. #include <bits/wordsize.h>
  56352. /* the regular getrlimit will work just fine for 64bit users */
  56353. +#if __WORDSIZE == 32
  56354. -#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  56355. -
  56356. +# include <sys/resource.h>
  56357. /* Put the soft and hard limits for RESOURCE in *RLIMITS.
  56358. Returns 0 if successful, -1 if not (and sets errno). */
  56359. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit.c uClibc/libc/sysdeps/linux/common/getrlimit.c
  56360. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit.c 2012-05-15 09:20:09.000000000 +0200
  56361. +++ uClibc/libc/sysdeps/linux/common/getrlimit.c 2014-02-03 12:32:56.000000000 +0100
  56362. @@ -7,12 +7,9 @@
  56363. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56364. */
  56365. -#define getrlimit64 __hide_getrlimit64
  56366. #include <sys/syscall.h>
  56367. -#include <unistd.h>
  56368. #include <sys/resource.h>
  56369. -#undef getrlimit64
  56370. -
  56371. +#include <bits/wordsize.h>
  56372. /* Only wrap getrlimit if the new ugetrlimit is not present and getrlimit sucks */
  56373. @@ -25,14 +22,14 @@
  56374. struct rlimit *, rlim)
  56375. int getrlimit(__rlimit_resource_t resource, struct rlimit *rlimits)
  56376. {
  56377. - return (__syscall_ugetrlimit(resource, rlimits));
  56378. + return __syscall_ugetrlimit(resource, rlimits);
  56379. }
  56380. #elif !defined(__UCLIBC_HANDLE_OLDER_RLIMIT__)
  56381. /* We don't need to wrap getrlimit() */
  56382. _syscall2(int, getrlimit, __rlimit_resource_t, resource,
  56383. - struct rlimit *, rlim)
  56384. + struct rlimit *, rlim)
  56385. #else
  56386. @@ -59,9 +56,8 @@
  56387. return result;
  56388. }
  56389. #endif
  56390. -
  56391. libc_hidden_def(getrlimit)
  56392. #if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  56393. -strong_alias(getrlimit, getrlimit64)
  56394. +strong_alias_untyped(getrlimit, getrlimit64)
  56395. #endif
  56396. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/gettimeofday.c uClibc/libc/sysdeps/linux/common/gettimeofday.c
  56397. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/gettimeofday.c 2012-05-15 09:20:09.000000000 +0200
  56398. +++ uClibc/libc/sysdeps/linux/common/gettimeofday.c 2014-02-03 12:32:56.000000000 +0100
  56399. @@ -10,9 +10,5 @@
  56400. #include <sys/syscall.h>
  56401. #include <sys/time.h>
  56402. -#ifdef __USE_BSD
  56403. -_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz)
  56404. -#else
  56405. -_syscall2(int, gettimeofday, struct timeval *, tv, void *, tz)
  56406. -#endif
  56407. +_syscall2(int, gettimeofday, struct timeval *, tv, __timezone_ptr_t, tz)
  56408. libc_hidden_def(gettimeofday)
  56409. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/hp-timing.h uClibc/libc/sysdeps/linux/common/hp-timing.h
  56410. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/hp-timing.h 2012-05-15 09:20:09.000000000 +0200
  56411. +++ uClibc/libc/sysdeps/linux/common/hp-timing.h 2014-02-03 12:32:56.000000000 +0100
  56412. @@ -14,9 +14,8 @@
  56413. Lesser General Public License for more details.
  56414. You should have received a copy of the GNU Lesser General Public
  56415. - License along with the GNU C Library; if not, write to the Free
  56416. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56417. - 02111-1307 USA. */
  56418. + License along with the GNU C Library; if not, see
  56419. + <http://www.gnu.org/licenses/>. */
  56420. #ifndef _HP_TIMING_H
  56421. #define _HP_TIMING_H 1
  56422. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/init_module.c uClibc/libc/sysdeps/linux/common/init_module.c
  56423. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/init_module.c 2012-05-15 09:20:09.000000000 +0200
  56424. +++ uClibc/libc/sysdeps/linux/common/init_module.c 2014-02-03 12:32:56.000000000 +0100
  56425. @@ -8,12 +8,13 @@
  56426. */
  56427. #include <sys/syscall.h>
  56428. -int init_module(void *first, void *second, void *third, void *fourth, void *fifth);
  56429. +
  56430. #ifdef __NR_init_module
  56431. +int init_module(void *first, void *second, void *third, void *fourth, void *fifth);
  56432. /* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
  56433. * (for 2.2 and 2.4 kernels). Use the greatest common denominator,
  56434. * and let the kernel cope with whatever it gets. It's good at that. */
  56435. _syscall5(int, init_module, void *, first, void *, second, void *, third,
  56436. - void *, fourth, void *, fifth)
  56437. + void *, fourth, void *, fifth)
  56438. #endif
  56439. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/inotify.c uClibc/libc/sysdeps/linux/common/inotify.c
  56440. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/inotify.c 2012-05-15 09:20:09.000000000 +0200
  56441. +++ uClibc/libc/sysdeps/linux/common/inotify.c 2014-02-03 12:32:56.000000000 +0100
  56442. @@ -19,6 +19,13 @@
  56443. _syscall1(int, inotify_init1, int, flags)
  56444. #endif
  56445. +#if defined __NR_inotify_init1 && !defined __NR_inotify_init
  56446. +int inotify_init(void)
  56447. +{
  56448. + return INLINE_SYSCALL(inotify_init1, 1, 0);
  56449. +}
  56450. +#endif
  56451. +
  56452. #ifdef __NR_inotify_add_watch
  56453. _syscall3(int, inotify_add_watch, int, fd, const char *, path, uint32_t, mask)
  56454. #endif
  56455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ioctl.c uClibc/libc/sysdeps/linux/common/ioctl.c
  56456. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ioctl.c 2012-05-15 09:20:09.000000000 +0200
  56457. +++ uClibc/libc/sysdeps/linux/common/ioctl.c 2014-02-03 12:32:56.000000000 +0100
  56458. @@ -10,14 +10,7 @@
  56459. #include <sys/syscall.h>
  56460. #include <stdarg.h>
  56461. #include <sys/ioctl.h>
  56462. -
  56463. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56464. -#include <sysdep-cancel.h>
  56465. -#else
  56466. -#define SINGLE_THREAD_P 1
  56467. -#endif
  56468. -
  56469. -libc_hidden_proto(ioctl)
  56470. +#include <cancel.h>
  56471. #define __NR___syscall_ioctl __NR_ioctl
  56472. static __always_inline
  56473. @@ -30,17 +23,16 @@
  56474. va_start(list, request);
  56475. arg = va_arg(list, void *);
  56476. -
  56477. va_end(list);
  56478. if (SINGLE_THREAD_P)
  56479. return __syscall_ioctl(fd, request, arg);
  56480. -
  56481. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56482. +#ifdef __NEW_THREADS
  56483. int oldtype = LIBC_CANCEL_ASYNC ();
  56484. int result = __syscall_ioctl(fd, request, arg);
  56485. LIBC_CANCEL_RESET (oldtype);
  56486. return result;
  56487. #endif
  56488. }
  56489. -libc_hidden_def(ioctl)
  56490. +lt_strong_alias(ioctl)
  56491. +lt_libc_hidden(ioctl)
  56492. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ioperm.c uClibc/libc/sysdeps/linux/common/ioperm.c
  56493. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ioperm.c 2012-05-15 09:20:09.000000000 +0200
  56494. +++ uClibc/libc/sysdeps/linux/common/ioperm.c 2014-02-03 12:32:56.000000000 +0100
  56495. @@ -13,10 +13,6 @@
  56496. /* psm: can't #include <sys/io.h>, some archs miss it */
  56497. extern int ioperm(unsigned long __from, unsigned long __num, int __turn_on) __THROW;
  56498. -/* Not needed internally;
  56499. -libc_hidden_proto(ioperm)
  56500. -*/
  56501. _syscall3(int, ioperm, unsigned long, from, unsigned long, num, int, turn_on)
  56502. -/*libc_hidden_def(ioperm)*/
  56503. #endif
  56504. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/common/jmpbuf-offsets.h
  56505. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  56506. +++ uClibc/libc/sysdeps/linux/common/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  56507. @@ -0,0 +1,6 @@
  56508. +/* Private macros for accessing __jmp_buf contents. dummy version. */
  56509. +/*
  56510. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  56511. + *
  56512. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56513. + */
  56514. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lchown.c uClibc/libc/sysdeps/linux/common/lchown.c
  56515. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lchown.c 2012-05-15 09:20:09.000000000 +0200
  56516. +++ uClibc/libc/sysdeps/linux/common/lchown.c 2014-02-03 12:32:56.000000000 +0100
  56517. @@ -11,17 +11,26 @@
  56518. #include <unistd.h>
  56519. #include <bits/wordsize.h>
  56520. -#if (__WORDSIZE == 32 && defined(__NR_lchown32)) || __WORDSIZE == 64
  56521. -# ifdef __NR_lchown32
  56522. -# undef __NR_lchown
  56523. -# define __NR_lchown __NR_lchown32
  56524. -# endif
  56525. +#if defined __NR_fchownat && !defined __NR_lchown
  56526. +# include <fcntl.h>
  56527. +int lchown(const char *path, uid_t owner, gid_t group)
  56528. +{
  56529. + return fchownat(AT_FDCWD, path, owner, group, AT_SYMLINK_NOFOLLOW);
  56530. +}
  56531. +
  56532. +#else
  56533. +
  56534. +# if (__WORDSIZE == 32 && defined(__NR_lchown32)) || __WORDSIZE == 64
  56535. +# ifdef __NR_lchown32
  56536. +# undef __NR_lchown
  56537. +# define __NR_lchown __NR_lchown32
  56538. +# endif
  56539. _syscall3(int, lchown, const char *, path, uid_t, owner, gid_t, group)
  56540. -#else
  56541. +# else
  56542. -# define __NR___syscall_lchown __NR_lchown
  56543. +# define __NR___syscall_lchown __NR_lchown
  56544. static __inline__ _syscall3(int, __syscall_lchown, const char *, path,
  56545. __kernel_uid_t, owner, __kernel_gid_t, group)
  56546. @@ -35,4 +44,6 @@
  56547. return __syscall_lchown(path, owner, group);
  56548. }
  56549. +# endif
  56550. +
  56551. #endif
  56552. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/linkat.c uClibc/libc/sysdeps/linux/common/linkat.c
  56553. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/linkat.c 2012-05-15 09:20:09.000000000 +0200
  56554. +++ uClibc/libc/sysdeps/linux/common/linkat.c 2014-02-03 12:32:56.000000000 +0100
  56555. @@ -11,6 +11,7 @@
  56556. #ifdef __NR_linkat
  56557. _syscall5(int, linkat, int, fromfd, const char *, from, int, tofd, const char *, to, int, flags)
  56558. +libc_hidden_def(linkat)
  56559. #else
  56560. /* should add emulation with link() and /proc/self/fd/ ... */
  56561. #endif
  56562. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/link.c uClibc/libc/sysdeps/linux/common/link.c
  56563. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/link.c 2012-05-15 09:20:09.000000000 +0200
  56564. +++ uClibc/libc/sysdeps/linux/common/link.c 2014-02-03 12:32:56.000000000 +0100
  56565. @@ -9,4 +9,13 @@
  56566. #include <sys/syscall.h>
  56567. #include <unistd.h>
  56568. +
  56569. +#if defined __NR_linkat && !defined __NR_link
  56570. +# include <fcntl.h>
  56571. +int link(const char *oldpath, const char *newpath)
  56572. +{
  56573. + return linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0);
  56574. +}
  56575. +#else
  56576. _syscall2(int, link, const char *, oldpath, const char *, newpath)
  56577. +#endif
  56578. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/llseek.c uClibc/libc/sysdeps/linux/common/llseek.c
  56579. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/llseek.c 2012-05-15 09:20:09.000000000 +0200
  56580. +++ uClibc/libc/sysdeps/linux/common/llseek.c 2014-02-03 12:32:56.000000000 +0100
  56581. @@ -7,36 +7,26 @@
  56582. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56583. */
  56584. -#include <unistd.h>
  56585. -#include <sys/types.h>
  56586. +#include <_lfs_64.h>
  56587. #include <sys/syscall.h>
  56588. +#include <bits/wordsize.h>
  56589. /* Newer kernel ports have llseek() instead of _llseek() */
  56590. #if !defined __NR__llseek && defined __NR_llseek
  56591. # define __NR__llseek __NR_llseek
  56592. #endif
  56593. -#if defined __NR__llseek && defined __UCLIBC_HAS_LFS__
  56594. -
  56595. -loff_t lseek64(int fd, loff_t offset, int whence)
  56596. -{
  56597. - loff_t result;
  56598. - return (loff_t)(INLINE_SYSCALL(_llseek, 5, fd, (off_t) (offset >> 32),
  56599. - (off_t) (offset & 0xffffffff), &result, whence) ?: result);
  56600. -}
  56601. -
  56602. -#else
  56603. -
  56604. -loff_t lseek64(int fd, loff_t offset, int whence)
  56605. +#if defined __NR__llseek && __WORDSIZE == 32
  56606. +# include <unistd.h>
  56607. +# include <endian.h>
  56608. +# include <cancel.h>
  56609. +off64_t __NC(lseek64)(int fd, off64_t offset, int whence)
  56610. {
  56611. - return (loff_t)(lseek(fd, (off_t) (offset), whence));
  56612. + off64_t result;
  56613. + /* do we not need to handle the offset with __LONG_LONG_PAIR depending on endianness? */
  56614. + return (off64_t)INLINE_SYSCALL(_llseek, 5, fd, (off_t) OFF64_HI(offset),
  56615. + (off_t) OFF64_LO(offset), &result, whence) ?: result;
  56616. }
  56617. -
  56618. -#endif
  56619. -
  56620. -#ifndef __LINUXTHREADS_OLD__
  56621. -libc_hidden_def(lseek64)
  56622. -#else
  56623. -libc_hidden_weak(lseek64)
  56624. -strong_alias(lseek64,__libc_lseek64)
  56625. +CANCELLABLE_SYSCALL(off64_t, lseek64, (int fd, off64_t offset, int whence), (fd, offset, whence))
  56626. +lt_libc_hidden(lseek64)
  56627. #endif
  56628. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/longjmp.c uClibc/libc/sysdeps/linux/common/longjmp.c
  56629. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/longjmp.c 2012-05-15 09:20:09.000000000 +0200
  56630. +++ uClibc/libc/sysdeps/linux/common/longjmp.c 2014-02-03 12:32:56.000000000 +0100
  56631. @@ -12,23 +12,13 @@
  56632. Lesser General Public License for more details.
  56633. You should have received a copy of the GNU Lesser General Public
  56634. - License along with the GNU C Library; if not, write to the Free
  56635. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56636. - 02111-1307 USA. */
  56637. + License along with the GNU C Library; if not, see
  56638. + <http://www.gnu.org/licenses/>. */
  56639. #include <stddef.h>
  56640. #include <setjmp.h>
  56641. #include <signal.h>
  56642. -
  56643. -extern void __longjmp (__jmp_buf __env, int __val) attribute_noreturn;
  56644. -libc_hidden_proto(__longjmp)
  56645. -
  56646. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56647. -extern void _longjmp_unwind (jmp_buf env, int val);
  56648. -#endif
  56649. -
  56650. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  56651. /* Set the signal mask to the one specified in ENV, and jump
  56652. to the position specified in ENV, causing the setjmp
  56653. call there to return VAL, or 1 if VAL is 0. */
  56654. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lseek.c uClibc/libc/sysdeps/linux/common/lseek.c
  56655. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lseek.c 2012-05-15 09:20:09.000000000 +0200
  56656. +++ uClibc/libc/sysdeps/linux/common/lseek.c 2014-02-03 12:32:56.000000000 +0100
  56657. @@ -9,19 +9,55 @@
  56658. #include <sys/syscall.h>
  56659. #include <unistd.h>
  56660. +#include <cancel.h>
  56661. #ifdef __NR_lseek
  56662. -_syscall3(__off_t, lseek, int, fildes, __off_t, offset, int, whence)
  56663. +# define __NR___lseek_nocancel __NR_lseek
  56664. +_syscall3(off_t, __NC(lseek), int, fd, off_t, offset, int, whence)
  56665. +/* Use lseek64 if __NR_lseek is not defined but UCLIBC_HAS_LFS is enabled */
  56666. +#elif !defined __NR_lseek && defined __NR_llseek
  56667. +#include <endian.h>
  56668. +off_t __NC(lseek)(int fd, off_t offset, int whence)
  56669. +{
  56670. +#if defined __UCLIBC_HAS_LFS__
  56671. + return lseek64(fd, offset, whence);
  56672. +#elif __WORDSIZE == 32
  56673. + __off64_t result;
  56674. + __off_t high = 0;
  56675. + return INLINE_SYSCALL(llseek, 5, fd,
  56676. + __LONG_LONG_PAIR(high, offset),
  56677. + &result, whence) ?: result;
  56678. +#endif
  56679. +/* No need to handle __WORDSIZE == 64 as such a kernel won't define __NR_llseek */
  56680. +}
  56681. #else
  56682. -
  56683. -__off_t lseek(int fildes, __off_t offset, int whence)
  56684. +# include <errno.h>
  56685. +off_t __NC(lseek)(int fd, off_t offset attribute_unused, int whence)
  56686. {
  56687. - return lseek64(fildes, offset, whence);
  56688. + if (fd < 0) {
  56689. + __set_errno(EBADF);
  56690. + return -1;
  56691. + }
  56692. +
  56693. + switch(whence) {
  56694. + case SEEK_SET:
  56695. + case SEEK_CUR:
  56696. + case SEEK_END:
  56697. + break;
  56698. + default:
  56699. + __set_errno(EINVAL);
  56700. + return -1;
  56701. + }
  56702. +
  56703. + __set_errno(ENOSYS);
  56704. + return -1;
  56705. }
  56706. #endif
  56707. -#ifndef __LINUXTHREADS_OLD__
  56708. -libc_hidden_def(lseek)
  56709. -#else
  56710. -libc_hidden_weak(lseek)
  56711. -strong_alias(lseek,__libc_lseek)
  56712. +CANCELLABLE_SYSCALL(off_t, lseek, (int fd, off_t offset, int whence), (fd, offset, whence))
  56713. +lt_libc_hidden(lseek)
  56714. +#if defined __UCLIBC_HAS_LFS__ && (__WORDSIZE == 64 || (!defined __NR__llseek && !defined __NR_llseek))
  56715. +strong_alias_untyped(__NC(lseek),__NC(lseek64))
  56716. +strong_alias_untyped(lseek,lseek64)
  56717. +lt_strong_alias(lseek64)
  56718. +lt_libc_hidden(lseek64)
  56719. #endif
  56720. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat64.c uClibc/libc/sysdeps/linux/common/lstat64.c
  56721. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat64.c 2012-05-15 09:20:09.000000000 +0200
  56722. +++ uClibc/libc/sysdeps/linux/common/lstat64.c 2014-02-03 12:32:56.000000000 +0100
  56723. @@ -7,17 +7,27 @@
  56724. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56725. */
  56726. +#include <_lfs_64.h>
  56727. #include <sys/syscall.h>
  56728. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_lstat64
  56729. # include <unistd.h>
  56730. # include <sys/stat.h>
  56731. -# include "xstatconv.h"
  56732. +#if defined __NR_fstatat64 && !defined __NR_lstat64
  56733. +# include <fcntl.h>
  56734. +
  56735. +int lstat64(const char *file_name, struct stat64 *buf)
  56736. +{
  56737. + return fstatat64(AT_FDCWD, file_name, buf, AT_SYMLINK_NOFOLLOW);
  56738. +}
  56739. +libc_hidden_def(lstat64)
  56740. +/* For systems which have both, prefer the old one */
  56741. +#elif defined __NR_lstat64
  56742. +# include "xstatconv.h"
  56743. # define __NR___syscall_lstat64 __NR_lstat64
  56744. -static __inline__ _syscall2(int, __syscall_lstat64, const char *, file_name,
  56745. - struct kernel_stat64 *, buf)
  56746. +static __always_inline _syscall2(int, __syscall_lstat64, const char *, file_name,
  56747. + struct kernel_stat64 *, buf)
  56748. int lstat64(const char *file_name, struct stat64 *buf)
  56749. {
  56750. @@ -31,5 +41,4 @@
  56751. return result;
  56752. }
  56753. libc_hidden_def(lstat64)
  56754. -
  56755. #endif
  56756. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat.c uClibc/libc/sysdeps/linux/common/lstat.c
  56757. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat.c 2012-05-15 09:20:09.000000000 +0200
  56758. +++ uClibc/libc/sysdeps/linux/common/lstat.c 2014-02-03 12:32:56.000000000 +0100
  56759. @@ -10,12 +10,23 @@
  56760. #include <sys/syscall.h>
  56761. #include <unistd.h>
  56762. #include <sys/stat.h>
  56763. -#include "xstatconv.h"
  56764. +
  56765. +#if defined __NR_fstatat64 && !defined __NR_lstat
  56766. +# include <fcntl.h>
  56767. int lstat(const char *file_name, struct stat *buf)
  56768. {
  56769. + return fstatat(AT_FDCWD, file_name, buf, AT_SYMLINK_NOFOLLOW);
  56770. +}
  56771. +libc_hidden_def(lstat)
  56772. +
  56773. +/* For systems which have both, prefer the old one */
  56774. +#else
  56775. +# include "xstatconv.h"
  56776. +int lstat(const char *file_name, struct stat *buf)
  56777. +{
  56778. int result;
  56779. -#ifdef __NR_lstat64
  56780. +# ifdef __NR_lstat64
  56781. /* normal stat call has limited values for various stat elements
  56782. * e.g. uid device major/minor etc.
  56783. * so we use 64 variant if available
  56784. @@ -26,19 +37,22 @@
  56785. if (result == 0) {
  56786. __xstat32_conv(&kbuf, buf);
  56787. }
  56788. -#else
  56789. +# else
  56790. struct kernel_stat kbuf;
  56791. result = INLINE_SYSCALL(lstat, 2, file_name, &kbuf);
  56792. if (result == 0) {
  56793. __xstat_conv(&kbuf, buf);
  56794. }
  56795. -#endif
  56796. +# endif /* __NR_lstat64 */
  56797. return result;
  56798. }
  56799. libc_hidden_def(lstat)
  56800. -#if ! defined __NR_lstat64 && defined __UCLIBC_HAS_LFS__
  56801. +# if ! defined __NR_fstatat64 && ! defined __NR_lstat64 \
  56802. + && defined __UCLIBC_HAS_LFS__
  56803. strong_alias_untyped(lstat,lstat64)
  56804. libc_hidden_def(lstat64)
  56805. -#endif
  56806. +# endif
  56807. +
  56808. +#endif /* __NR_fstatat64 */
  56809. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/Makefile.in uClibc/libc/sysdeps/linux/common/Makefile.in
  56810. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  56811. +++ uClibc/libc/sysdeps/linux/common/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  56812. @@ -23,6 +23,7 @@
  56813. bdflush.c \
  56814. capget.c \
  56815. capset.c \
  56816. + dup3.c \
  56817. eventfd.c \
  56818. inotify.c \
  56819. ioperm.c \
  56820. @@ -64,24 +65,30 @@
  56821. # NPTL needs these internally: madvise.c
  56822. CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += madvise.c
  56823. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  56824. -CSRC- += fork.c getpid.c raise.c open.c close.c read.c write.c
  56825. +CSRC- += fork.c getpid.c raise.c #open.c close.c read.c write.c
  56826. CSRC- += $(if $(findstring =arm=,=$(TARGET_ARCH)=),vfork.c)
  56827. CSRC- += $(if $(findstring =x86_64=,=$(TARGET_ARCH)=),vfork.c)
  56828. -CSRC- += $(if $(findstring =mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
  56829. +#CSRC- += $(if $(findstring =mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
  56830. +CSRC- += $(if $(findstring =metag=,=$(TARGET_ARCH)=),vfork.c)
  56831. +endif
  56832. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  56833. +# No conversion is needed for new architectures
  56834. +CSRC- += xstatconv.c
  56835. endif
  56836. # stubbed out in mman.h
  56837. CSRC-$(ARCH_USE_MMU) += msync.c
  56838. # we need these internally: getdomainname.c
  56839. CSRC-$(UCLIBC_BSD_SPECIFIC) += mincore.c setdomainname.c
  56840. CSRC-$(UCLIBC_NTP_LEGACY) += ntp_gettime.c
  56841. -# 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
  56842. +# 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
  56843. CSRC-$(UCLIBC_HAS_REALTIME) += clock_getres.c clock_gettime.c clock_settime.c \
  56844. fdatasync.c mlockall.c mlock.c munlockall.c munlock.c \
  56845. nanosleep.c __rt_sigtimedwait.c __rt_sigwaitinfo.c sched_getparam.c \
  56846. sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c \
  56847. sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c
  56848. # 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
  56849. -CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c
  56850. +CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c \
  56851. + posix_fallocate.c posix_fallocate64.c
  56852. CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
  56853. CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
  56854. CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
  56855. @@ -96,11 +103,11 @@
  56856. # provided via pthreads builddir
  56857. CSRC-y := $(filter-out $(libc_a_CSRC) $(notdir $(libpthread_libc_OBJS:.o=.c)),$(CSRC-y))
  56858. -SSRC := $(filter-out $(libc_a_SSRC) $(notdir $(libpthread_libc_OBJS:.o=.S)),$(SSRC))
  56859. +SSRC-y := $(filter-out $(libc_a_SSRC) $(notdir $(libpthread_libc_OBJS:.o=.S)),$(SSRC-y))
  56860. # fails for some reason
  56861. -ifneq ($(strip $(ARCH_OBJS)),)
  56862. -CSRC-y := $(filter-out $(notdir $(ARCH_OBJS:.o=.c)) $(ARCH_OBJ_FILTEROUT),$(CSRC-y))
  56863. +ifneq ($(strip $(ARCH_OBJS-y)),)
  56864. +CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)) $(ARCH_OBJ_FILTEROUT-y),$(CSRC-y))
  56865. endif
  56866. CFLAGS-ssp.c := $(SSP_DISABLE_FLAGS)
  56867. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdirat.c uClibc/libc/sysdeps/linux/common/mkdirat.c
  56868. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdirat.c 2012-05-15 09:20:09.000000000 +0200
  56869. +++ uClibc/libc/sysdeps/linux/common/mkdirat.c 2014-02-03 12:32:56.000000000 +0100
  56870. @@ -11,6 +11,7 @@
  56871. #ifdef __NR_mkdirat
  56872. _syscall3(int, mkdirat, int, fd, const char *, path, mode_t, mode)
  56873. +libc_hidden_def(mkdirat)
  56874. #else
  56875. /* should add emulation with mkdir() and /proc/self/fd/ ... */
  56876. #endif
  56877. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdir.c uClibc/libc/sysdeps/linux/common/mkdir.c
  56878. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdir.c 2012-05-15 09:20:09.000000000 +0200
  56879. +++ uClibc/libc/sysdeps/linux/common/mkdir.c 2014-02-03 12:32:56.000000000 +0100
  56880. @@ -10,8 +10,15 @@
  56881. #include <sys/syscall.h>
  56882. #include <sys/stat.h>
  56883. +#if defined __NR_mkdirat && !defined __NR_mkdir
  56884. +# include <fcntl.h>
  56885. +int mkdir(const char *pathname, mode_t mode)
  56886. +{
  56887. + return mkdirat(AT_FDCWD, pathname, mode);
  56888. +}
  56889. -#define __NR___syscall_mkdir __NR_mkdir
  56890. +#else
  56891. +# define __NR___syscall_mkdir __NR_mkdir
  56892. static __inline__ _syscall2(int, __syscall_mkdir, const char *, pathname,
  56893. __kernel_mode_t, mode)
  56894. @@ -19,4 +26,5 @@
  56895. {
  56896. return (__syscall_mkdir(pathname, mode));
  56897. }
  56898. +#endif
  56899. libc_hidden_def(mkdir)
  56900. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkfifo.c uClibc/libc/sysdeps/linux/common/mkfifo.c
  56901. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkfifo.c 2012-05-15 09:20:09.000000000 +0200
  56902. +++ uClibc/libc/sysdeps/linux/common/mkfifo.c 2014-02-03 12:32:56.000000000 +0100
  56903. @@ -12,9 +12,8 @@
  56904. Lesser General Public License for more details.
  56905. You should have received a copy of the GNU Lesser General Public
  56906. - License along with the GNU C Library; if not, write to the Free
  56907. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56908. - 02111-1307 USA. */
  56909. + License along with the GNU C Library; if not, see
  56910. + <http://www.gnu.org/licenses/>. */
  56911. #include <errno.h>
  56912. #include <stddef.h>
  56913. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mknod.c uClibc/libc/sysdeps/linux/common/mknod.c
  56914. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mknod.c 2012-05-15 09:20:09.000000000 +0200
  56915. +++ uClibc/libc/sysdeps/linux/common/mknod.c 2014-02-03 12:32:56.000000000 +0100
  56916. @@ -10,6 +10,13 @@
  56917. #include <sys/syscall.h>
  56918. #include <sys/stat.h>
  56919. +#if defined __NR_mknodat && !defined __NR_mknod
  56920. +# include <fcntl.h>
  56921. +int mknod(const char *path, mode_t mode, dev_t dev)
  56922. +{
  56923. + return mknodat(AT_FDCWD, path, mode, dev);
  56924. +}
  56925. +#else
  56926. int mknod(const char *path, mode_t mode, dev_t dev)
  56927. {
  56928. unsigned long long int k_dev;
  56929. @@ -19,4 +26,5 @@
  56930. return INLINE_SYSCALL(mknod, 3, path, mode, (unsigned int)k_dev);
  56931. }
  56932. +#endif
  56933. libc_hidden_def(mknod)
  56934. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap64.c uClibc/libc/sysdeps/linux/common/mmap64.c
  56935. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap64.c 2012-05-15 09:20:09.000000000 +0200
  56936. +++ uClibc/libc/sysdeps/linux/common/mmap64.c 2014-02-03 12:32:56.000000000 +0100
  56937. @@ -6,18 +6,12 @@
  56938. /* Massivly hacked up for uClibc by Erik Andersen */
  56939. #include <_lfs_64.h>
  56940. -
  56941. -#ifdef __UCLIBC_HAS_LFS__
  56942. -
  56943. -#include <errno.h>
  56944. #include <stdint.h>
  56945. -#include <unistd.h>
  56946. -#include <sys/mman.h>
  56947. #include <sys/syscall.h>
  56948. -#include <bits/uClibc_page.h>
  56949. -
  56950. +#include <errno.h>
  56951. +#include <sys/mman.h>
  56952. -# if !defined __NR_mmap2
  56953. +#ifndef __NR_mmap2
  56954. /*
  56955. * This version is a stub that just chops off everything at the mmap 32 bit
  56956. @@ -27,7 +21,7 @@
  56957. *
  56958. */
  56959. -__ptr_t mmap64(__ptr_t addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56960. +void *mmap64(void *addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56961. {
  56962. if (offset != (off_t) offset ||
  56963. (offset + len) != (off_t) (offset + len)) {
  56964. @@ -38,17 +32,18 @@
  56965. return mmap(addr, len, prot, flags, fd, (off_t) offset);
  56966. }
  56967. -# else
  56968. +#else
  56969. +# include <bits/uClibc_page.h>
  56970. -/* Some architectures always use 12 as page shift for mmap2() eventhough the
  56971. +/* Some architectures always use 12 as page shift for mmap2() even though the
  56972. * real PAGE_SHIFT != 12. Other architectures use the same value as
  56973. * PAGE_SHIFT...
  56974. */
  56975. -# ifndef MMAP2_PAGE_SHIFT
  56976. -# define MMAP2_PAGE_SHIFT 12
  56977. -# endif
  56978. +# ifndef MMAP2_PAGE_SHIFT
  56979. +# define MMAP2_PAGE_SHIFT 12
  56980. +# endif
  56981. -__ptr_t mmap64(__ptr_t addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56982. +void *mmap64(void *addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56983. {
  56984. /*
  56985. * Some arches check the size in INLINE_SYSCALL() and barf if it's
  56986. @@ -73,8 +68,7 @@
  56987. */
  56988. sysoff = (uint64_t)offset >> MMAP2_PAGE_SHIFT;
  56989. - return (__ptr_t) INLINE_SYSCALL(mmap2, 6, addr, len, prot, flags, fd, sysoff);
  56990. + return (void*) INLINE_SYSCALL(mmap2, 6, addr, len, prot, flags, fd, sysoff);
  56991. }
  56992. -# endif
  56993. -#endif /* __UCLIBC_HAS_LFS__ */
  56994. +#endif
  56995. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap.c uClibc/libc/sysdeps/linux/common/mmap.c
  56996. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap.c 2012-05-15 09:20:09.000000000 +0200
  56997. +++ uClibc/libc/sysdeps/linux/common/mmap.c 2014-02-03 12:32:56.000000000 +0100
  56998. @@ -7,25 +7,57 @@
  56999. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57000. */
  57001. -#include <sys/syscall.h>
  57002. -#include <unistd.h>
  57003. #include <sys/mman.h>
  57004. -#include <bits/uClibc_page.h>
  57005. +#include <sys/syscall.h>
  57006. -#ifdef __NR_mmap
  57007. +#if defined __UCLIBC_MMAP_HAS_6_ARGS__ && defined __NR_mmap
  57008. +# ifndef _syscall6
  57009. +# error disable __UCLIBC_MMAP_HAS_6_ARGS__ for this arch
  57010. +# endif
  57011. -#ifdef __UCLIBC_MMAP_HAS_6_ARGS__
  57012. +# define __NR__mmap __NR_mmap
  57013. +static _syscall6(void *, _mmap, void *, addr, size_t, len,
  57014. + int, prot, int, flags, int, fd, __off_t, offset)
  57015. -_syscall6(void *, mmap, void *, start, size_t, length,
  57016. - int, prot, int, flags, int, fd, off_t, offset)
  57017. +#elif defined __NR_mmap2 && defined _syscall6
  57018. -#else
  57019. +# include <errno.h>
  57020. +# include <bits/uClibc_page.h>
  57021. +# ifndef MMAP2_PAGE_SHIFT
  57022. +# define MMAP2_PAGE_SHIFT 12
  57023. +# endif
  57024. -# define __NR__mmap __NR_mmap
  57025. -static __inline__ _syscall1(__ptr_t, _mmap, unsigned long *, buffer)
  57026. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  57027. - int flags, int fd, __off_t offset)
  57028. +# define __NR___syscall_mmap2 __NR_mmap2
  57029. +static __inline__ _syscall6(void *, __syscall_mmap2, void *, addr, size_t, len,
  57030. + int, prot, int, flags, int, fd, __off_t, offset)
  57031. +
  57032. +static void *_mmap(void *addr, size_t len, int prot, int flags,
  57033. + int fd, __off_t offset)
  57034. +{
  57035. + const int mmap2_shift = MMAP2_PAGE_SHIFT;
  57036. + const __off_t mmap2_mask = ((__off_t) 1 << MMAP2_PAGE_SHIFT) - 1;
  57037. + /* check if offset is page aligned */
  57038. + if (offset & mmap2_mask) {
  57039. + __set_errno(EINVAL);
  57040. + return MAP_FAILED;
  57041. + }
  57042. +# ifdef __USE_FILE_OFFSET64
  57043. + return __syscall_mmap2(addr, len, prot, flags, fd,
  57044. + ((__u_quad_t) offset >> mmap2_shift));
  57045. +# else
  57046. + return __syscall_mmap2(addr, len, prot, flags, fd,
  57047. + ((__u_long) offset >> mmap2_shift));
  57048. +# endif
  57049. +}
  57050. +
  57051. +#elif defined __NR_mmap
  57052. +
  57053. +# define __NR___syscall_mmap __NR_mmap
  57054. +static __inline__ _syscall1(void *, __syscall_mmap, unsigned long *, buffer)
  57055. +
  57056. +static void *_mmap(void *addr, size_t len, int prot, int flags,
  57057. + int fd, __off_t offset)
  57058. {
  57059. unsigned long buffer[6];
  57060. @@ -35,37 +67,14 @@
  57061. buffer[3] = (unsigned long) flags;
  57062. buffer[4] = (unsigned long) fd;
  57063. buffer[5] = (unsigned long) offset;
  57064. - return (__ptr_t) _mmap(buffer);
  57065. + return __syscall_mmap(buffer);
  57066. }
  57067. -#endif
  57068. -
  57069. -libc_hidden_def(mmap)
  57070. -
  57071. -#elif defined(__NR_mmap2)
  57072. -
  57073. +#else
  57074. -#define __NR___syscall_mmap2 __NR_mmap2
  57075. -static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
  57076. - size_t, len, int, prot, int, flags, int, fd, off_t, offset)
  57077. +# error "Your architecture doesn't seem to provide mmap() !?"
  57078. -/* Some architectures always use 12 as page shift for mmap2() eventhough the
  57079. - * real PAGE_SHIFT != 12. Other architectures use the same value as
  57080. - * PAGE_SHIFT...
  57081. - */
  57082. -# ifndef MMAP2_PAGE_SHIFT
  57083. -# define MMAP2_PAGE_SHIFT 12
  57084. -# endif
  57085. -
  57086. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  57087. -{
  57088. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1)) {
  57089. - __set_errno(EINVAL);
  57090. - return MAP_FAILED;
  57091. - }
  57092. - return __syscall_mmap2(addr, len, prot, flags, fd, offset >> MMAP2_PAGE_SHIFT);
  57093. -}
  57094. +#endif
  57095. +strong_alias(_mmap,mmap)
  57096. libc_hidden_def(mmap)
  57097. -
  57098. -#endif
  57099. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mount.c uClibc/libc/sysdeps/linux/common/mount.c
  57100. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mount.c 2012-05-15 09:20:09.000000000 +0200
  57101. +++ uClibc/libc/sysdeps/linux/common/mount.c 2014-02-03 12:32:56.000000000 +0100
  57102. @@ -10,5 +10,5 @@
  57103. #include <sys/syscall.h>
  57104. #include <sys/mount.h>
  57105. _syscall5(int, mount, const char *, specialfile, const char *, dir,
  57106. - const char *, filesystemtype, unsigned long, rwflag,
  57107. - const void *, data)
  57108. + const char *, filesystemtype, unsigned long, rwflag,
  57109. + const void *, data)
  57110. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/msync.c uClibc/libc/sysdeps/linux/common/msync.c
  57111. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/msync.c 2012-05-15 09:20:09.000000000 +0200
  57112. +++ uClibc/libc/sysdeps/linux/common/msync.c 2014-02-03 12:32:56.000000000 +0100
  57113. @@ -8,38 +8,14 @@
  57114. */
  57115. #include <sys/syscall.h>
  57116. -#include <unistd.h>
  57117. -#include <sys/mman.h>
  57118. -#ifdef __NR_msync
  57119. +#if defined __NR_msync && defined __ARCH_USE_MMU__
  57120. +# include <sys/mman.h>
  57121. +# include <cancel.h>
  57122. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57123. -#include <sysdep-cancel.h>
  57124. -#else
  57125. -#define SINGLE_THREAD_P 1
  57126. -#endif
  57127. -
  57128. -#define __NR___syscall_msync __NR_msync
  57129. -static __always_inline _syscall3(int, __syscall_msync, void *, addr, size_t, length,
  57130. - int, flags)
  57131. -
  57132. -extern __typeof(msync) __libc_msync;
  57133. -int __libc_msync(void * addr, size_t length, int flags)
  57134. -{
  57135. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57136. - int oldtype, result;
  57137. -#endif
  57138. -
  57139. - if (SINGLE_THREAD_P)
  57140. - return __syscall_msync(addr, length, flags);
  57141. -
  57142. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57143. - oldtype = LIBC_CANCEL_ASYNC ();
  57144. - result = __syscall_msync(addr, length, flags);
  57145. - LIBC_CANCEL_RESET (oldtype);
  57146. - return result;
  57147. -#endif
  57148. -}
  57149. -weak_alias(__libc_msync,msync)
  57150. +# define __NR___msync_nocancel __NR_msync
  57151. +static _syscall3(int, __NC(msync), void *, addr, size_t, length, int, flags)
  57152. +CANCELLABLE_SYSCALL(int, msync, (void *addr, size_t length, int flags),
  57153. + (addr, length, flags))
  57154. #endif
  57155. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/munmap.c uClibc/libc/sysdeps/linux/common/munmap.c
  57156. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/munmap.c 2012-05-15 09:20:09.000000000 +0200
  57157. +++ uClibc/libc/sysdeps/linux/common/munmap.c 2014-02-03 12:32:56.000000000 +0100
  57158. @@ -8,9 +8,7 @@
  57159. */
  57160. #include <sys/syscall.h>
  57161. -#include <unistd.h>
  57162. #include <sys/mman.h>
  57163. -
  57164. _syscall2(int, munmap, void *, start, size_t, length)
  57165. libc_hidden_def(munmap)
  57166. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/nanosleep.c uClibc/libc/sysdeps/linux/common/nanosleep.c
  57167. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  57168. +++ uClibc/libc/sysdeps/linux/common/nanosleep.c 2014-02-03 12:32:56.000000000 +0100
  57169. @@ -9,32 +9,13 @@
  57170. #include <sys/syscall.h>
  57171. #include <time.h>
  57172. +#include <cancel.h>
  57173. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57174. -#include <sysdep-cancel.h>
  57175. -#include <pthreadP.h>
  57176. -#else
  57177. -#define SINGLE_THREAD_P 1
  57178. -#endif
  57179. -
  57180. -#define __NR___syscall_nanosleep __NR_nanosleep
  57181. -static inline _syscall2(int, __syscall_nanosleep, const struct timespec *, req,
  57182. - struct timespec *, rem);
  57183. -
  57184. -extern __typeof(nanosleep) __libc_nanosleep;
  57185. -
  57186. -int __libc_nanosleep(const struct timespec *req, struct timespec *rem)
  57187. -{
  57188. - if (SINGLE_THREAD_P)
  57189. - return __syscall_nanosleep(req, rem);
  57190. -
  57191. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57192. - int oldtype = LIBC_CANCEL_ASYNC ();
  57193. - int result = __syscall_nanosleep(req, rem);
  57194. - LIBC_CANCEL_RESET (oldtype);
  57195. - return result;
  57196. -#endif
  57197. -}
  57198. -
  57199. -weak_alias(__libc_nanosleep,nanosleep)
  57200. -libc_hidden_weak(nanosleep)
  57201. +#define __NR___nanosleep_nocancel __NR_nanosleep
  57202. +static _syscall2(int, __NC(nanosleep), const struct timespec *, req,
  57203. + struct timespec *, rem);
  57204. +
  57205. +CANCELLABLE_SYSCALL(int, nanosleep,
  57206. + (const struct timespec *req, struct timespec *rem),
  57207. + (req, rem))
  57208. +lt_libc_hidden(nanosleep)
  57209. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/nice.c uClibc/libc/sysdeps/linux/common/nice.c
  57210. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/nice.c 2012-05-15 09:20:09.000000000 +0200
  57211. +++ uClibc/libc/sysdeps/linux/common/nice.c 2014-02-03 12:32:56.000000000 +0100
  57212. @@ -25,15 +25,15 @@
  57213. static __inline__ int int_add_no_wrap(int a, int b)
  57214. {
  57215. - int s = a + b;
  57216. -
  57217. if (b < 0) {
  57218. - if (s > a) s = INT_MIN;
  57219. + if (a < INT_MIN - b)
  57220. + return INT_MIN;
  57221. } else {
  57222. - if (s < a) s = INT_MAX;
  57223. + if (a > INT_MAX - b)
  57224. + return INT_MAX;
  57225. }
  57226. - return s;
  57227. + return a + b;
  57228. }
  57229. static __inline__ int __syscall_nice(int incr)
  57230. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/noophooks.c uClibc/libc/sysdeps/linux/common/noophooks.c
  57231. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/noophooks.c 2012-05-15 09:20:09.000000000 +0200
  57232. +++ uClibc/libc/sysdeps/linux/common/noophooks.c 2014-02-03 12:32:56.000000000 +0100
  57233. @@ -14,11 +14,8 @@
  57234. Lesser General Public License for more details.
  57235. You should have received a copy of the GNU Lesser General Public
  57236. - License along with the GNU C Library; if not, write to the Free
  57237. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57238. - 02111-1307 USA. */
  57239. -
  57240. -#include <libc-internal.h>
  57241. + License along with the GNU C Library; if not, see
  57242. + <http://www.gnu.org/licenses/>. */
  57243. void
  57244. __cyg_profile_func_enter (attribute_unused void *this_fn, attribute_unused void *call_site);
  57245. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/not-cancel.h uClibc/libc/sysdeps/linux/common/not-cancel.h
  57246. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  57247. +++ uClibc/libc/sysdeps/linux/common/not-cancel.h 2014-02-03 12:32:56.000000000 +0100
  57248. @@ -1,5 +1,5 @@
  57249. /* Uncancelable versions of cancelable interfaces. Linux version.
  57250. - Copyright (C) 2003 Free Software Foundation, Inc.
  57251. + Copyright (C) 2003, 2006 Free Software Foundation, Inc.
  57252. This file is part of the GNU C Library.
  57253. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
  57254. @@ -14,17 +14,50 @@
  57255. Lesser General Public License for more details.
  57256. You should have received a copy of the GNU Lesser General Public
  57257. - License along with the GNU C Library; if not, write to the Free
  57258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57259. - 02111-1307 USA. */
  57260. + License along with the GNU C Library; if not, see
  57261. + <http://www.gnu.org/licenses/>. */
  57262. +#include <sys/types.h>
  57263. #include <sysdep.h>
  57264. +#ifdef NOT_IN_libc
  57265. +
  57266. /* Uncancelable open. */
  57267. +#if defined __NR_openat && !defined __NR_open
  57268. +#define open_not_cancel(name, flags, mode) \
  57269. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode))
  57270. +#define open_not_cancel_2(name, flags) \
  57271. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags))
  57272. +#else
  57273. #define open_not_cancel(name, flags, mode) \
  57274. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  57275. #define open_not_cancel_2(name, flags) \
  57276. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  57277. +#endif
  57278. +
  57279. +#if 0
  57280. +/* Uncancelable openat. */
  57281. +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  57282. +extern int __openat_nocancel (int fd, const char *fname, int oflag,
  57283. + mode_t mode) attribute_hidden;
  57284. +extern int __openat64_nocancel (int fd, const char *fname, int oflag,
  57285. + mode_t mode) attribute_hidden;
  57286. +#else
  57287. +# define __openat_nocancel(fd, fname, oflag, mode) \
  57288. + openat (fd, fname, oflag, mode)
  57289. +# define __openat64_nocancel(fd, fname, oflag, mode) \
  57290. + openat64 (fd, fname, oflag, mode)
  57291. +#endif
  57292. +
  57293. +#define openat_not_cancel(fd, fname, oflag, mode) \
  57294. + __openat_nocancel (fd, fname, oflag, mode)
  57295. +#define openat_not_cancel_3(fd, fname, oflag) \
  57296. + __openat_nocancel (fd, fname, oflag, 0)
  57297. +#define openat64_not_cancel(fd, fname, oflag, mode) \
  57298. + __openat64_nocancel (fd, fname, oflag, mode)
  57299. +#define openat64_not_cancel_3(fd, fname, oflag) \
  57300. + __openat64_nocancel (fd, fname, oflag, 0)
  57301. +#endif
  57302. /* Uncancelable close. */
  57303. #define close_not_cancel(fd) \
  57304. @@ -37,10 +70,13 @@
  57305. #define read_not_cancel(fd, buf, n) \
  57306. INLINE_SYSCALL (read, 3, (fd), (buf), (n))
  57307. +#ifdef __LINUXTHREADS_NEW__
  57308. /* Uncancelable write. */
  57309. #define write_not_cancel(fd, buf, n) \
  57310. INLINE_SYSCALL (write, 3, (fd), (buf), (n))
  57311. +#endif
  57312. +#if 0
  57313. /* Uncancelable writev. */
  57314. #define writev_not_cancel_no_status(fd, iov, n) \
  57315. (void) ({ INTERNAL_SYSCALL_DECL (err); \
  57316. @@ -49,12 +85,68 @@
  57317. /* Uncancelable fcntl. */
  57318. #define fcntl_not_cancel(fd, cmd, val) \
  57319. __fcntl_nocancel (fd, cmd, val)
  57320. +#endif
  57321. +#ifdef __LINUXTHREADS_NEW__
  57322. /* Uncancelable waitpid. */
  57323. -#ifdef __NR_waitpid
  57324. +#if 0 /*def __NR_waitpid*/
  57325. # define waitpid_not_cancel(pid, stat_loc, options) \
  57326. INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options)
  57327. #else
  57328. # define waitpid_not_cancel(pid, stat_loc, options) \
  57329. INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
  57330. #endif
  57331. +#endif
  57332. +
  57333. +/* Uncancelable pause. */
  57334. +#ifdef __NR_pause
  57335. +# define pause_not_cancel() \
  57336. + INLINE_SYSCALL (pause, 0)
  57337. +#else
  57338. +# include <unistd.h>
  57339. +extern __typeof(pause) __pause_nocancel;
  57340. +# define pause_not_cancel() \
  57341. + __pause_nocancel ()
  57342. +#endif
  57343. +
  57344. +/* Uncancelable nanosleep. */
  57345. +#ifdef __NR_nanosleep
  57346. +# define nanosleep_not_cancel(requested_time, remaining) \
  57347. + INLINE_SYSCALL (nanosleep, 2, requested_time, remaining)
  57348. +/*#else
  57349. +# define nanosleep_not_cancel(requested_time, remaining) \
  57350. + __nanosleep_nocancel (requested_time, remaining)*/
  57351. +#endif
  57352. +
  57353. +#if 0
  57354. +/* Uncancelable sigsuspend. */
  57355. +#define sigsuspend_not_cancel(set) \
  57356. + __sigsuspend_nocancel (set)
  57357. +#endif
  57358. +
  57359. +#elif !defined NOT_IN_libc
  57360. +
  57361. +#include <cancel.h>
  57362. +#include <fcntl.h>
  57363. +#include <unistd.h>
  57364. +
  57365. +#define open_not_cancel(name, flags, mode) \
  57366. + __NC(open)(name, flags, mode)
  57367. +#define open_not_cancel_2(name, flags) \
  57368. + __NC(open2)(name, flags)
  57369. +
  57370. +#define close_not_cancel(fd) \
  57371. + __NC(close)(fd)
  57372. +#define close_not_cancel_no_status(fd) \
  57373. + __close_nocancel_no_status(fd)
  57374. +
  57375. +#define read_not_cancel(fd, buf, n) \
  57376. + __NC(read)(fd, buf, n)
  57377. +
  57378. +#define write_not_cancel(fd, buf, n) \
  57379. + __NC(write)(fd, buf, n)
  57380. +
  57381. +#define fcntl_not_cancel(fd, cmd, val) \
  57382. + __NC(fcntl)(fd, cmd, val)
  57383. +
  57384. +#endif
  57385. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ntp_gettime.c uClibc/libc/sysdeps/linux/common/ntp_gettime.c
  57386. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ntp_gettime.c 2012-05-15 09:20:09.000000000 +0200
  57387. +++ uClibc/libc/sysdeps/linux/common/ntp_gettime.c 2014-02-03 12:32:56.000000000 +0100
  57388. @@ -12,9 +12,8 @@
  57389. Lesser General Public License for more details.
  57390. You should have received a copy of the GNU Lesser General Public
  57391. - License along with the GNU C Library; if not, write to the Free
  57392. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57393. - 02111-1307 USA. */
  57394. + License along with the GNU C Library; if not, see
  57395. + <http://www.gnu.org/licenses/>. */
  57396. #include <sys/timex.h>
  57397. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/open64.c uClibc/libc/sysdeps/linux/common/open64.c
  57398. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/open64.c 2012-05-15 09:20:09.000000000 +0200
  57399. +++ uClibc/libc/sysdeps/linux/common/open64.c 2014-02-03 12:32:56.000000000 +0100
  57400. @@ -4,54 +4,30 @@
  57401. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57402. */
  57403. -#include <features.h>
  57404. +#include <_lfs_64.h>
  57405. #include <fcntl.h>
  57406. #include <stdarg.h>
  57407. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57408. -#include <errno.h>
  57409. -#include <sysdep-cancel.h>
  57410. -#endif
  57411. -
  57412. -#ifdef __UCLIBC_HAS_LFS__
  57413. -
  57414. -#ifndef O_LARGEFILE
  57415. -# define O_LARGEFILE 0100000
  57416. -#endif
  57417. +#include <cancel.h>
  57418. /* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
  57419. a third argument is the file protection. */
  57420. -int open64 (const char *file, int oflag, ...)
  57421. +int open64(const char *file, int oflag, ...)
  57422. {
  57423. - mode_t mode = 0;
  57424. -
  57425. - if (oflag & O_CREAT)
  57426. - {
  57427. - va_list arg;
  57428. - va_start (arg, oflag);
  57429. - mode = va_arg (arg, mode_t);
  57430. - va_end (arg);
  57431. - }
  57432. -
  57433. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57434. - if (SINGLE_THREAD_P)
  57435. - return INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode);
  57436. + mode_t mode = 0;
  57437. - int oldtype = LIBC_CANCEL_ASYNC ();
  57438. -
  57439. - int result = INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode);
  57440. -
  57441. - LIBC_CANCEL_RESET (oldtype);
  57442. -
  57443. - return result;
  57444. + if (oflag & O_CREAT) {
  57445. + va_list arg;
  57446. + va_start (arg, oflag);
  57447. + mode = va_arg (arg, mode_t);
  57448. + va_end (arg);
  57449. + }
  57450. +#if defined __NR_openat && !defined __NR_open
  57451. + return openat(AT_FDCWD, file, oflag | O_LARGEFILE, mode);
  57452. #else
  57453. - return open(file, oflag | O_LARGEFILE, mode);
  57454. + return open(file, oflag | O_LARGEFILE, mode);
  57455. #endif
  57456. }
  57457. -#ifndef __LINUXTHREADS_OLD__
  57458. -libc_hidden_def(open64)
  57459. -#else
  57460. -libc_hidden_weak(open64)
  57461. -strong_alias(open64,__libc_open64)
  57462. -#endif
  57463. -
  57464. -#endif /* __UCLIBC_HAS_LFS__ */
  57465. +lt_strong_alias(open64)
  57466. +lt_libc_hidden(open64)
  57467. +/* open handled cancellation, noop on uClibc */
  57468. +LIBC_CANCEL_HANDLED();
  57469. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/openat64.c uClibc/libc/sysdeps/linux/common/openat64.c
  57470. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/openat64.c 2012-05-15 09:20:09.000000000 +0200
  57471. +++ uClibc/libc/sysdeps/linux/common/openat64.c 2014-02-03 12:32:56.000000000 +0100
  57472. @@ -6,27 +6,16 @@
  57473. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57474. */
  57475. -#define openat64 __xx_openat
  57476. +#include <_lfs_64.h>
  57477. #include <sys/syscall.h>
  57478. #include <fcntl.h>
  57479. -#undef openat64
  57480. -
  57481. -#ifdef __UCLIBC_HAS_LFS__
  57482. #ifdef __NR_openat
  57483. -/* The openat() prototype is varargs based, but we don't care about that
  57484. - * here, so need to provide our own dedicated signature.
  57485. - */
  57486. -extern int openat64(int fd, const char *file, int oflag, mode_t mode);
  57487. -libc_hidden_proto(openat64)
  57488. -
  57489. -int openat64(int fd, const char *file, int oflag, mode_t mode)
  57490. +static int __openat64(int fd, const char *file, int oflag, mode_t mode)
  57491. {
  57492. return openat(fd, file, oflag | O_LARGEFILE, mode);
  57493. }
  57494. -libc_hidden_def(openat64)
  57495. +strong_alias_untyped(__openat64,openat64)
  57496. #else
  57497. /* should add emulation with open() and /proc/self/fd/ ... */
  57498. #endif
  57499. -
  57500. -#endif
  57501. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/openat.c uClibc/libc/sysdeps/linux/common/openat.c
  57502. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/openat.c 2012-05-15 09:20:09.000000000 +0200
  57503. +++ uClibc/libc/sysdeps/linux/common/openat.c 2014-02-03 12:32:56.000000000 +0100
  57504. @@ -6,19 +6,13 @@
  57505. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57506. */
  57507. -#define openat __xx_openat
  57508. #include <sys/syscall.h>
  57509. #include <fcntl.h>
  57510. -#undef openat
  57511. #ifdef __NR_openat
  57512. -/* The openat() prototype is varargs based, but we don't care about that
  57513. - * here, so need to provide our own dedicated signature.
  57514. - */
  57515. -extern int openat(int fd, const char *file, int oflag, mode_t mode);
  57516. -libc_hidden_proto(openat)
  57517. -
  57518. -_syscall4(int, openat, int, fd, const char *, file, int, oflag, mode_t, mode)
  57519. +# define __NR___syscall_openat __NR_openat
  57520. +static __inline__ _syscall4(int, __syscall_openat, int, fd, const char *, file, int, oflag, mode_t, mode)
  57521. +strong_alias_untyped(__syscall_openat,openat)
  57522. libc_hidden_def(openat)
  57523. #else
  57524. /* should add emulation with open() and /proc/self/fd/ ... */
  57525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/open.c uClibc/libc/sysdeps/linux/common/open.c
  57526. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/open.c 2012-05-15 09:20:09.000000000 +0200
  57527. +++ uClibc/libc/sysdeps/linux/common/open.c 2014-02-03 12:32:56.000000000 +0100
  57528. @@ -8,15 +8,22 @@
  57529. */
  57530. #include <sys/syscall.h>
  57531. -#include <stdlib.h>
  57532. -#include <stdarg.h>
  57533. #include <fcntl.h>
  57534. -#include <string.h>
  57535. -#include <sys/param.h>
  57536. +#include <stdarg.h>
  57537. +#include <cancel.h>
  57538. +
  57539. +#if defined __NR_open
  57540. +# define __NR___syscall_open __NR_open
  57541. +static __always_inline _syscall3(int, __syscall_open, const char *, file,
  57542. + int, flags, __kernel_mode_t, mode)
  57543. +strong_alias_untyped(__syscall_open,__NC(open))
  57544. -#define __NR___syscall_open __NR_open
  57545. -static __inline__ _syscall3(int, __syscall_open, const char *, file,
  57546. - int, flags, __kernel_mode_t, mode)
  57547. +# define __NR___open2_nocancel __NR_open
  57548. +_syscall2(int, __NC(open2), const char *, file, int, flags)
  57549. +#else
  57550. +int __open2_nocancel(const char *, int) __nonnull ((1)) attribute_hidden;
  57551. +int __open_nocancel(const char *, int, mode_t) __nonnull ((1)) attribute_hidden;
  57552. +#endif
  57553. int open(const char *file, int oflag, ...)
  57554. {
  57555. @@ -29,11 +36,27 @@
  57556. va_end(arg);
  57557. }
  57558. - return __syscall_open(file, oflag, mode);
  57559. + if (SINGLE_THREAD_P)
  57560. +#if defined(__NR_open)
  57561. + return __NC(open)(file, oflag, mode);
  57562. +#elif defined(__NR_openat)
  57563. + return openat(AT_FDCWD, file, oflag, mode);
  57564. +#endif
  57565. +
  57566. +#ifdef __NEW_THREADS
  57567. + int oldtype = LIBC_CANCEL_ASYNC ();
  57568. +# if defined(__NR_open)
  57569. + int result = __NC(open)(file, oflag, mode);
  57570. +# else
  57571. + int result = openat(AT_FDCWD, file, oflag, mode);
  57572. +# endif
  57573. + LIBC_CANCEL_RESET (oldtype);
  57574. + return result;
  57575. +#endif
  57576. }
  57577. -#ifndef __LINUXTHREADS_OLD__
  57578. -libc_hidden_def(open)
  57579. -#else
  57580. -libc_hidden_weak(open)
  57581. -strong_alias(open,__libc_open)
  57582. +lt_strong_alias(open)
  57583. +lt_libc_hidden(open)
  57584. +#if !defined(__NR_open)
  57585. +strong_alias_untyped(open,__open2_nocancel)
  57586. +strong_alias_untyped(open,__open_nocancel)
  57587. #endif
  57588. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pause.c uClibc/libc/sysdeps/linux/common/pause.c
  57589. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pause.c 2012-05-15 09:20:09.000000000 +0200
  57590. +++ uClibc/libc/sysdeps/linux/common/pause.c 2014-02-03 12:32:56.000000000 +0100
  57591. @@ -7,35 +7,35 @@
  57592. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57593. */
  57594. -#define __UCLIBC_HIDE_DEPRECATED__
  57595. #include <sys/syscall.h>
  57596. #include <unistd.h>
  57597. +#include <cancel.h>
  57598. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57599. -#include <sysdep-cancel.h>
  57600. -#endif
  57601. -
  57602. -#include <signal.h>
  57603. +#ifdef __NR_pause
  57604. +/* even if it is not obvious, glibc uses the pause syscall, see syscalls.list */
  57605. +# define __NR___pause_nocancel __NR_pause
  57606. +static _syscall0(int, __NC(pause))
  57607. +CANCELLABLE_SYSCALL(int, pause, (void), ())
  57608. +#else
  57609. +# define __need_NULL
  57610. +# include <stddef.h>
  57611. +# include <signal.h>
  57612. -/* Suspend the process until a signal arrives.
  57613. - This always returns -1 and sets errno to EINTR. */
  57614. -extern __typeof(pause) __libc_pause;
  57615. int
  57616. -__libc_pause (void)
  57617. +# ifdef __LINUXTHREADS_OLD__
  57618. +weak_function
  57619. +# endif
  57620. +__NC(pause)(void)
  57621. {
  57622. - sigset_t set;
  57623. -
  57624. - /*__sigemptyset (&set); - why? */
  57625. - sigprocmask (SIG_BLOCK, NULL, &set);
  57626. + sigset_t set;
  57627. - /* pause is a cancellation point, but so is sigsuspend.
  57628. - So no need for anything special here. */
  57629. + /*__sigemptyset (&set); - why? */
  57630. + sigprocmask (SIG_BLOCK, NULL, &set);
  57631. - return sigsuspend (&set);
  57632. + /* pause is a cancellation point, but so is sigsuspend.
  57633. + So no need for anything special here. */
  57634. + return sigsuspend(&set);
  57635. }
  57636. -weak_alias (__libc_pause, pause)
  57637. -
  57638. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57639. +CANCELLABLE_SYSCALL(int, pause, (void), ())
  57640. LIBC_CANCEL_HANDLED (); /* sigsuspend handles our cancellation. */
  57641. #endif
  57642. -
  57643. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pipe.c uClibc/libc/sysdeps/linux/common/pipe.c
  57644. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pipe.c 2012-05-15 09:20:09.000000000 +0200
  57645. +++ uClibc/libc/sysdeps/linux/common/pipe.c 2014-02-03 12:32:56.000000000 +0100
  57646. @@ -11,5 +11,13 @@
  57647. #include <unistd.h>
  57648. +#if defined __NR_pipe2 && !defined __NR_pipe
  57649. +int pipe(int filedes[2])
  57650. +{
  57651. + return pipe2(filedes, 0);
  57652. +}
  57653. +/* If both are defined then use the pipe syscall */
  57654. +#else
  57655. _syscall1(int, pipe, int *, filedes)
  57656. +#endif
  57657. libc_hidden_def(pipe)
  57658. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pivot_root.c uClibc/libc/sysdeps/linux/common/pivot_root.c
  57659. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pivot_root.c 2012-05-15 09:20:09.000000000 +0200
  57660. +++ uClibc/libc/sysdeps/linux/common/pivot_root.c 2014-02-03 12:32:56.000000000 +0100
  57661. @@ -9,7 +9,7 @@
  57662. #include <sys/syscall.h>
  57663. -int pivot_root(const char *new_root, const char *put_old);
  57664. #ifdef __NR_pivot_root
  57665. +int pivot_root(const char *new_root, const char *put_old);
  57666. _syscall2(int, pivot_root, const char *, new_root, const char *, put_old)
  57667. #endif
  57668. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/poll.c uClibc/libc/sysdeps/linux/common/poll.c
  57669. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/poll.c 2012-05-15 09:20:09.000000000 +0200
  57670. +++ uClibc/libc/sysdeps/linux/common/poll.c 2014-02-03 12:32:56.000000000 +0100
  57671. @@ -13,40 +13,20 @@
  57672. Lesser General Public License for more details.
  57673. You should have received a copy of the GNU Lesser General Public
  57674. - License along with the GNU C Library; if not, write to the Free
  57675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57676. - 02111-1307 USA. */
  57677. + License along with the GNU C Library; if not, see
  57678. + <http://www.gnu.org/licenses/>. */
  57679. #include <sys/syscall.h>
  57680. #include <sys/poll.h>
  57681. #include <bits/kernel-features.h>
  57682. -
  57683. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57684. -#include <sysdep-cancel.h>
  57685. -#else
  57686. -#define SINGLE_THREAD_P 1
  57687. -#endif
  57688. -
  57689. -libc_hidden_proto(poll)
  57690. +#include <cancel.h>
  57691. #if defined __ASSUME_POLL_SYSCALL && defined __NR_poll
  57692. -#define __NR___syscall_poll __NR_poll
  57693. -static inline _syscall3(int, __syscall_poll, struct pollfd *, fds,
  57694. - unsigned long int, nfds, int, timeout);
  57695. -
  57696. -int poll(struct pollfd *fds, nfds_t nfds, int timeout)
  57697. -{
  57698. - if (SINGLE_THREAD_P)
  57699. - return __syscall_poll(fds, nfds, timeout);
  57700. +#define __NR___poll_nocancel __NR_poll
  57701. +static _syscall3(int, __NC(poll), struct pollfd *, fds,
  57702. + unsigned long int, nfds, int, timeout)
  57703. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57704. - int oldtype = LIBC_CANCEL_ASYNC ();
  57705. - int result = __syscall_poll(fds, nfds, timeout);
  57706. - LIBC_CANCEL_RESET (oldtype);
  57707. - return result;
  57708. -#endif
  57709. -}
  57710. #else /* !__NR_poll */
  57711. #include <alloca.h>
  57712. @@ -56,9 +36,7 @@
  57713. #include <sys/time.h>
  57714. #include <sys/param.h>
  57715. #include <unistd.h>
  57716. -
  57717. -libc_hidden_proto(getdtablesize)
  57718. -libc_hidden_proto(select)
  57719. +#include <sys/select.h>
  57720. /* uClinux 2.0 doesn't have poll, emulate it using select */
  57721. @@ -68,7 +46,7 @@
  57722. Returns the number of file descriptors with events, zero if timed out,
  57723. or -1 for errors. */
  57724. -int poll(struct pollfd *fds, nfds_t nfds, int timeout)
  57725. +int __NC(poll)(struct pollfd *fds, nfds_t nfds, int timeout)
  57726. {
  57727. static int max_fd_size;
  57728. struct timeval tv;
  57729. @@ -139,7 +117,7 @@
  57730. while (1)
  57731. {
  57732. - ready = select (maxfd + 1, rset, wset, xset,
  57733. + ready = __NC(select) (maxfd + 1, rset, wset, xset,
  57734. timeout == -1 ? NULL : &tv);
  57735. /* It might be that one or more of the file descriptors is invalid.
  57736. @@ -182,7 +160,7 @@
  57737. if (f->events & POLLPRI)
  57738. FD_SET (f->fd, sngl_xset);
  57739. - n = select (f->fd + 1, sngl_rset, sngl_wset, sngl_xset,
  57740. + n = __NC(select) (f->fd + 1, sngl_rset, sngl_wset, sngl_xset,
  57741. &sngl_tv);
  57742. if (n != -1)
  57743. {
  57744. @@ -227,4 +205,6 @@
  57745. }
  57746. #endif
  57747. -libc_hidden_def(poll)
  57748. +CANCELLABLE_SYSCALL(int, poll, (struct pollfd *fds, nfds_t nfds, int timeout),
  57749. + (fds, nfds, timeout))
  57750. +lt_libc_hidden(poll)
  57751. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise64.c uClibc/libc/sysdeps/linux/common/posix_fadvise64.c
  57752. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  57753. +++ uClibc/libc/sysdeps/linux/common/posix_fadvise64.c 2014-02-03 12:32:56.000000000 +0100
  57754. @@ -8,63 +8,32 @@
  57755. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57756. */
  57757. -#include <features.h>
  57758. -#include <unistd.h>
  57759. -#include <errno.h>
  57760. -#include <endian.h>
  57761. -#include <stdint.h>
  57762. -#include <sys/types.h>
  57763. +#include <_lfs_64.h>
  57764. #include <sys/syscall.h>
  57765. -#include <fcntl.h>
  57766. +#include <bits/wordsize.h>
  57767. -#ifdef __UCLIBC_HAS_LFS__
  57768. -#ifdef __NR_fadvise64_64
  57769. -
  57770. -/* 64 bit implementation is cake ... or more like pie ... */
  57771. -#if __WORDSIZE == 64
  57772. -
  57773. -#define __NR_posix_fadvise64 __NR_fadvise64_64
  57774. -
  57775. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57776. -{
  57777. - if (len != (off_t) len)
  57778. - return EOVERFLOW;
  57779. - INTERNAL_SYSCALL_DECL (err);
  57780. - int ret = INTERNAL_SYSCALL (posix_fadvise64, err, 5, fd,
  57781. - __LONG_LONG_PAIR ((long) (offset >> 32),
  57782. - (long) offset),
  57783. - (off_t) len, advice);
  57784. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  57785. - return 0;
  57786. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57787. -}
  57788. +#ifdef __NR_arm_fadvise64_64
  57789. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  57790. +#endif
  57791. -/* 32 bit implementation is kind of a pita */
  57792. -#elif __WORDSIZE == 32
  57793. +#if defined __NR_fadvise64_64 && __WORDSIZE == 32
  57794. +# include <fcntl.h>
  57795. +# include <endian.h>
  57796. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57797. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice)
  57798. {
  57799. INTERNAL_SYSCALL_DECL (err);
  57800. + /* ARM has always been funky. */
  57801. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) || defined(__arm__)
  57802. + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  57803. + OFF64_HI_LO (offset), OFF64_HI_LO (len));
  57804. +# else
  57805. int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
  57806. - __LONG_LONG_PAIR(offset >> 32, offset & 0xffffffff),
  57807. - __LONG_LONG_PAIR(len >> 32, len & 0xffffffff),
  57808. - advice);
  57809. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  57810. - return 0;
  57811. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57812. + OFF64_HI_LO (offset), OFF64_HI_LO (len),
  57813. + advice);
  57814. +# endif
  57815. + if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57816. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57817. + return 0;
  57818. }
  57819. -
  57820. -#else
  57821. -#error your machine is neither 32 bit or 64 bit ... it must be magical
  57822. #endif
  57823. -
  57824. -#elif !defined __NR_fadvise64 && defined __UCLIBC_HAS_STUBS__
  57825. -/* This is declared as a strong alias in posix_fadvise.c if __NR_fadvise64
  57826. - * is defined.
  57827. - */
  57828. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57829. -{
  57830. - return ENOSYS;
  57831. -}
  57832. -#endif /* __NR_fadvise64_64 */
  57833. -#endif /* __UCLIBC_HAS_LFS__ */
  57834. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise.c uClibc/libc/sysdeps/linux/common/posix_fadvise.c
  57835. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  57836. +++ uClibc/libc/sysdeps/linux/common/posix_fadvise.c 2014-02-03 12:32:56.000000000 +0100
  57837. @@ -9,27 +9,46 @@
  57838. */
  57839. #include <sys/syscall.h>
  57840. -#include <fcntl.h>
  57841. -#ifdef __NR_fadvise64
  57842. -#define __NR_posix_fadvise __NR_fadvise64
  57843. +#ifdef __NR_arm_fadvise64_64
  57844. +/* We handle the 64bit alignment issue which is why the arm guys renamed their
  57845. + * syscall in the first place. So rename it back.
  57846. + */
  57847. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  57848. +#endif
  57849. +
  57850. +#if defined(__NR_fadvise64) || defined(__NR_fadvise64_64)
  57851. +# include <fcntl.h>
  57852. +# include <endian.h>
  57853. +# include <bits/wordsize.h>
  57854. +
  57855. +# ifdef __NR_fadvise64_64
  57856. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice);
  57857. +# endif
  57858. +
  57859. int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  57860. {
  57861. +# ifdef __NR_fadvise64_64
  57862. + return posix_fadvise64(fd, offset, len, advice);
  57863. +# else
  57864. + int ret;
  57865. INTERNAL_SYSCALL_DECL(err);
  57866. - int ret = (int) (INTERNAL_SYSCALL(posix_fadvise, err, 5, fd,
  57867. - __LONG_LONG_PAIR (offset >> 31, offset), len, advice));
  57868. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57869. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57870. - return 0;
  57871. +# if __WORDSIZE == 64
  57872. + ret = INTERNAL_SYSCALL(fadvise64, err, 4, fd, offset, len, advice);
  57873. +# else
  57874. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  57875. + ret = INTERNAL_SYSCALL(fadvise64, err, 6, fd, /*unused*/0,
  57876. +# else
  57877. + ret = INTERNAL_SYSCALL(fadvise64, err, 5, fd,
  57878. +# endif
  57879. + OFF_HI_LO (offset), len, advice);
  57880. +# endif
  57881. + if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57882. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57883. + return 0;
  57884. +# endif
  57885. }
  57886. -
  57887. -#if defined __UCLIBC_HAS_LFS__ && !defined __NR_fadvise64_64
  57888. +# if defined __UCLIBC_HAS_LFS__ && (!defined __NR_fadvise64_64 || __WORDSIZE == 64)
  57889. strong_alias(posix_fadvise,posix_fadvise64)
  57890. -#endif
  57891. -
  57892. -#elif defined __UCLIBC_HAS_STUBS__
  57893. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  57894. -{
  57895. - return ENOSYS;
  57896. -}
  57897. +# endif
  57898. #endif
  57899. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate64.c uClibc/libc/sysdeps/linux/common/posix_fallocate64.c
  57900. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate64.c 1970-01-01 01:00:00.000000000 +0100
  57901. +++ uClibc/libc/sysdeps/linux/common/posix_fallocate64.c 2014-02-03 12:32:56.000000000 +0100
  57902. @@ -0,0 +1,34 @@
  57903. +/* vi: set sw=4 ts=4: */
  57904. +/*
  57905. + * posix_fallocate() for uClibc
  57906. + * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
  57907. + *
  57908. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  57909. + *
  57910. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  57911. + */
  57912. +
  57913. +#include <sys/syscall.h>
  57914. +#include <fcntl.h>
  57915. +#include <bits/kernel-features.h>
  57916. +#include <stdint.h>
  57917. +
  57918. +#if defined __NR_fallocate
  57919. +
  57920. +# if __WORDSIZE == 64
  57921. +/* Can use normal posix_fallocate() */
  57922. +# elif __WORDSIZE == 32
  57923. +int posix_fallocate64(int fd, __off64_t offset, __off64_t len)
  57924. +{
  57925. + int ret;
  57926. + INTERNAL_SYSCALL_DECL(err);
  57927. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
  57928. + OFF64_HI_LO (offset), OFF64_HI_LO (len)));
  57929. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
  57930. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57931. + return 0;
  57932. +}
  57933. +# else
  57934. +# error your machine is neither 32 bit or 64 bit ... it must be magical
  57935. +# endif
  57936. +#endif
  57937. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate.c uClibc/libc/sysdeps/linux/common/posix_fallocate.c
  57938. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate.c 1970-01-01 01:00:00.000000000 +0100
  57939. +++ uClibc/libc/sysdeps/linux/common/posix_fallocate.c 2014-02-03 12:32:56.000000000 +0100
  57940. @@ -0,0 +1,43 @@
  57941. +/* vi: set sw=4 ts=4: */
  57942. +/*
  57943. + * posix_fallocate() for uClibc
  57944. + * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
  57945. + *
  57946. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  57947. + *
  57948. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  57949. + */
  57950. +
  57951. +#include <sys/syscall.h>
  57952. +#include <fcntl.h>
  57953. +#include <bits/kernel-features.h>
  57954. +#include <stdint.h>
  57955. +
  57956. +#if defined __NR_fallocate
  57957. +int posix_fallocate(int fd, __off_t offset, __off_t len)
  57958. +{
  57959. + int ret;
  57960. +
  57961. +# if __WORDSIZE == 32
  57962. + uint32_t off_low = offset;
  57963. + uint32_t len_low = len;
  57964. + /* may assert that these >>31 are 0 */
  57965. + uint32_t zero = 0;
  57966. + INTERNAL_SYSCALL_DECL(err);
  57967. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
  57968. + __LONG_LONG_PAIR (zero, off_low),
  57969. + __LONG_LONG_PAIR (zero, len_low)));
  57970. +# elif __WORDSIZE == 64
  57971. + INTERNAL_SYSCALL_DECL(err);
  57972. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, 0, offset, len));
  57973. +# else
  57974. +# error your machine is neither 32 bit or 64 bit ... it must be magical
  57975. +#endif
  57976. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
  57977. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57978. + return 0;
  57979. +}
  57980. +# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  57981. +strong_alias(posix_fallocate,posix_fallocate64)
  57982. +# endif
  57983. +#endif
  57984. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_madvise.c uClibc/libc/sysdeps/linux/common/posix_madvise.c
  57985. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_madvise.c 1970-01-01 01:00:00.000000000 +0100
  57986. +++ uClibc/libc/sysdeps/linux/common/posix_madvise.c 2014-02-03 12:32:56.000000000 +0100
  57987. @@ -0,0 +1,25 @@
  57988. +/* vi: set sw=4 ts=4: */
  57989. +/* Licensed under the LGPL v2.1, see the file LICENSE in this tarball. */
  57990. +
  57991. +#include <sys/mman.h>
  57992. +#include <sys/syscall.h>
  57993. +
  57994. +#if defined __NR_madvise && defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  57995. +int posix_madvise(void *addr, size_t len, int advice)
  57996. +{
  57997. + int result;
  57998. + /* We have one problem: the kernel's MADV_DONTNEED does not
  57999. + * correspond to POSIX's POSIX_MADV_DONTNEED. The former simply
  58000. + * discards changes made to the memory without writing it back to
  58001. + * disk, if this would be necessary. The POSIX behaviour does not
  58002. + * allow this. There is no functionality mapping for the POSIX
  58003. + * behaviour so far so we ignore that advice for now. */
  58004. + if (advice == POSIX_MADV_DONTNEED)
  58005. + return 0;
  58006. +
  58007. + /* this part might use madvise function */
  58008. + INTERNAL_SYSCALL_DECL (err);
  58009. + result = INTERNAL_SYSCALL (madvise, err, 3, addr, len, advice);
  58010. + return INTERNAL_SYSCALL_ERRNO (result, err);
  58011. +}
  58012. +#endif
  58013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ppoll.c uClibc/libc/sysdeps/linux/common/ppoll.c
  58014. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ppoll.c 2012-05-15 09:20:09.000000000 +0200
  58015. +++ uClibc/libc/sysdeps/linux/common/ppoll.c 2014-02-03 12:32:56.000000000 +0100
  58016. @@ -13,26 +13,22 @@
  58017. Lesser General Public License for more details.
  58018. You should have received a copy of the GNU Lesser General Public
  58019. - License along with the GNU C Library; if not, write to the Free
  58020. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58021. - 02111-1307 USA. */
  58022. + License along with the GNU C Library; if not, see
  58023. + <http://www.gnu.org/licenses/>. */
  58024. -#include <signal.h>
  58025. #include <sys/syscall.h>
  58026. -#include <sys/poll.h>
  58027. +
  58028. +#if defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
  58029. +
  58030. #define __need_NULL
  58031. #include <stddef.h>
  58032. +#include <signal.h>
  58033. +#include <sys/poll.h>
  58034. +#include <cancel.h>
  58035. -#if defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__
  58036. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58037. -# include <sysdep-cancel.h>
  58038. -# else
  58039. -# define SINGLE_THREAD_P 1
  58040. -# endif
  58041. -
  58042. -int
  58043. -ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  58044. - const sigset_t *sigmask)
  58045. +static int
  58046. +__NC(ppoll)(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  58047. + const sigset_t *sigmask)
  58048. {
  58049. /* The Linux kernel can in some situations update the timeout value.
  58050. We do not want that so use a local variable. */
  58051. @@ -41,15 +37,11 @@
  58052. tval = *timeout;
  58053. timeout = &tval;
  58054. }
  58055. - if (SINGLE_THREAD_P)
  58056. - return INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8);
  58057. -
  58058. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58059. - int oldtype = LIBC_CANCEL_ASYNC ();
  58060. - int result = INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8);
  58061. - LIBC_CANCEL_RESET (oldtype);
  58062. - return result;
  58063. -# endif
  58064. + return INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, __SYSCALL_SIGSET_T_SIZE);
  58065. }
  58066. -libc_hidden_def(ppoll)
  58067. +
  58068. +CANCELLABLE_SYSCALL(int, ppoll, (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  58069. + const sigset_t *sigmask),
  58070. + (fds, nfds, timeout, sigmask))
  58071. +
  58072. #endif
  58073. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/prctl.c uClibc/libc/sysdeps/linux/common/prctl.c
  58074. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/prctl.c 2012-05-15 09:20:09.000000000 +0200
  58075. +++ uClibc/libc/sysdeps/linux/common/prctl.c 2014-02-03 12:32:56.000000000 +0100
  58076. @@ -8,10 +8,10 @@
  58077. */
  58078. #include <sys/syscall.h>
  58079. -#include <stdarg.h>
  58080. /* psm: including sys/prctl.h would depend on kernel headers */
  58081. #ifdef __NR_prctl
  58082. -extern int prctl (int, long, long, long, long);
  58083. -_syscall5(int, prctl, int, option, long, _a2, long, _a3, long, _a4, long, _a5)
  58084. +int prctl (int, long, long, long, long);
  58085. +_syscall5(int, prctl, int, option, long, _prctl_a2, long, _prctl_a3,
  58086. + long, _prctl_a4, long, _prctl_a5)
  58087. #endif
  58088. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pread_write.c uClibc/libc/sysdeps/linux/common/pread_write.c
  58089. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  58090. +++ uClibc/libc/sysdeps/linux/common/pread_write.c 2014-02-03 12:32:56.000000000 +0100
  58091. @@ -15,173 +15,101 @@
  58092. #include <sys/syscall.h>
  58093. #include <unistd.h>
  58094. -#include <stdint.h>
  58095. #include <endian.h>
  58096. +#include <bits/wordsize.h>
  58097. +#include <cancel.h>
  58098. -extern __typeof(pread) __libc_pread;
  58099. -extern __typeof(pwrite) __libc_pwrite;
  58100. -#ifdef __UCLIBC_HAS_LFS__
  58101. -extern __typeof(pread64) __libc_pread64;
  58102. -extern __typeof(pwrite64) __libc_pwrite64;
  58103. +#ifdef __NR_pread64
  58104. +# undef __NR_pread
  58105. +# define __NR_pread __NR_pread64
  58106. +#endif
  58107. +#ifdef __NR_pwrite64
  58108. +# undef __NR_pwrite
  58109. +# define __NR_pwrite __NR_pwrite64
  58110. #endif
  58111. -#include <bits/kernel_types.h>
  58112. -
  58113. -#ifdef __NR_pread
  58114. -
  58115. -# define __NR___syscall_pread __NR_pread
  58116. -static __inline__ _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  58117. - size_t, count, off_t, offset_hi, off_t, offset_lo)
  58118. -
  58119. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  58120. -{
  58121. - return __syscall_pread(fd, buf, count, __LONG_LONG_PAIR(offset >> 31, offset));
  58122. -}
  58123. -weak_alias(__libc_pread,pread)
  58124. -
  58125. -# ifdef __UCLIBC_HAS_LFS__
  58126. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  58127. -{
  58128. - uint32_t low = offset & 0xffffffff;
  58129. - uint32_t high = offset >> 32;
  58130. - return __syscall_pread(fd, buf, count, __LONG_LONG_PAIR(high, low));
  58131. -}
  58132. -weak_alias(__libc_pread64,pread64)
  58133. -# endif /* __UCLIBC_HAS_LFS__ */
  58134. -
  58135. -#endif /* __NR_pread */
  58136. -
  58137. -#ifdef __NR_pwrite
  58138. -
  58139. -# define __NR___syscall_pwrite __NR_pwrite
  58140. -static __inline__ _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  58141. - size_t, count, off_t, offset_hi, off_t, offset_lo)
  58142. -
  58143. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  58144. -{
  58145. - return __syscall_pwrite(fd, buf, count, __LONG_LONG_PAIR(offset >> 31, offset));
  58146. -}
  58147. -weak_alias(__libc_pwrite,pwrite)
  58148. -
  58149. -# ifdef __UCLIBC_HAS_LFS__
  58150. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  58151. -{
  58152. - uint32_t low = offset & 0xffffffff;
  58153. - uint32_t high = offset >> 32;
  58154. - return __syscall_pwrite(fd, buf, count, __LONG_LONG_PAIR(high, low));
  58155. -}
  58156. -weak_alias(__libc_pwrite64,pwrite64)
  58157. -# endif /* __UCLIBC_HAS_LFS__ */
  58158. -#endif /* __NR_pwrite */
  58159. -
  58160. -#if ! defined __NR_pread || ! defined __NR_pwrite
  58161. -
  58162. -static ssize_t __fake_pread_write(int fd, void *buf,
  58163. - size_t count, off_t offset, int do_pwrite)
  58164. -{
  58165. - int save_errno;
  58166. - ssize_t result;
  58167. - off_t old_offset;
  58168. -
  58169. - /* Since we must not change the file pointer preserve the
  58170. - * value so that we can restore it later. */
  58171. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  58172. - return -1;
  58173. -
  58174. - /* Set to wanted position. */
  58175. - if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
  58176. - return -1;
  58177. -
  58178. - if (do_pwrite == 1) {
  58179. - /* Write the data. */
  58180. - result = write(fd, buf, count);
  58181. - } else {
  58182. - /* Read the data. */
  58183. - result = read(fd, buf, count);
  58184. - }
  58185. -
  58186. - /* Now we have to restore the position. If this fails we
  58187. - * have to return this as an error. */
  58188. - save_errno = errno;
  58189. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  58190. - {
  58191. - if (result == -1)
  58192. - __set_errno(save_errno);
  58193. - return -1;
  58194. - }
  58195. - __set_errno(save_errno);
  58196. - return(result);
  58197. -}
  58198. -
  58199. -# ifdef __UCLIBC_HAS_LFS__
  58200. +#ifndef MY_PREAD
  58201. +# ifdef __NR_pread
  58202. +# define __NR___syscall_pread __NR_pread
  58203. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  58204. +static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  58205. + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  58206. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset))
  58207. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset))
  58208. +# elif __WORDSIZE == 32
  58209. +static _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  58210. + size_t, count, off_t, offset_hi, off_t, offset_lo)
  58211. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF_HI_LO(offset))
  58212. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF64_HI_LO(offset))
  58213. +# else
  58214. +static _syscall4(ssize_t, __syscall_pread, int, fd, void *, buf,
  58215. + size_t, count, off_t, offset)
  58216. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, offset)
  58217. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, offset)
  58218. +# endif
  58219. +# endif
  58220. +#endif
  58221. -static ssize_t __fake_pread_write64(int fd, void *buf,
  58222. - size_t count, off64_t offset, int do_pwrite)
  58223. -{
  58224. - int save_errno;
  58225. - ssize_t result;
  58226. - off64_t old_offset;
  58227. -
  58228. - /* Since we must not change the file pointer preserve the
  58229. - * value so that we can restore it later. */
  58230. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  58231. - return -1;
  58232. -
  58233. - /* Set to wanted position. */
  58234. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  58235. - return -1;
  58236. -
  58237. - if (do_pwrite == 1) {
  58238. - /* Write the data. */
  58239. - result = write(fd, buf, count);
  58240. - } else {
  58241. - /* Read the data. */
  58242. - result = read(fd, buf, count);
  58243. - }
  58244. -
  58245. - /* Now we have to restore the position. */
  58246. - save_errno = errno;
  58247. - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) {
  58248. - if (result == -1)
  58249. - __set_errno (save_errno);
  58250. - return -1;
  58251. - }
  58252. - __set_errno (save_errno);
  58253. - return result;
  58254. -}
  58255. -# endif /* __UCLIBC_HAS_LFS__ */
  58256. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  58257. +#ifndef MY_PWRITE
  58258. +# ifdef __NR_pwrite
  58259. +# define __NR___syscall_pwrite __NR_pwrite
  58260. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  58261. +static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  58262. + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  58263. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset))
  58264. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset))
  58265. +# elif __WORDSIZE == 32
  58266. +static _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  58267. + size_t, count, off_t, offset_hi, off_t, offset_lo)
  58268. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF_HI_LO(offset))
  58269. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF64_HI_LO(offset))
  58270. +# else
  58271. +static _syscall4(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  58272. + size_t, count, off_t, offset)
  58273. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, offset)
  58274. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, offset)
  58275. +# endif
  58276. +# endif
  58277. +#endif
  58278. -#ifndef __NR_pread
  58279. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  58280. +static ssize_t __NC(pread)(int fd, void *buf, size_t count, off_t offset)
  58281. {
  58282. - return __fake_pread_write(fd, buf, count, offset, 0);
  58283. + return MY_PREAD(fd, buf, count, offset);
  58284. }
  58285. -weak_alias(__libc_pread,pread)
  58286. +CANCELLABLE_SYSCALL(ssize_t, pread, (int fd, void *buf, size_t count, off_t offset),
  58287. + (fd, buf, count, offset))
  58288. -# ifdef __UCLIBC_HAS_LFS__
  58289. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  58290. +static ssize_t __NC(pwrite)(int fd, const void *buf, size_t count, off_t offset)
  58291. {
  58292. - return __fake_pread_write64(fd, buf, count, offset, 0);
  58293. + return MY_PWRITE(fd, buf, count, offset);
  58294. }
  58295. -weak_alias(__libc_pread64,pread64)
  58296. -# endif /* __UCLIBC_HAS_LFS__ */
  58297. -#endif /* ! __NR_pread */
  58298. +CANCELLABLE_SYSCALL(ssize_t, pwrite, (int fd, const void *buf, size_t count, off_t offset),
  58299. + (fd, buf, count, offset))
  58300. -#ifndef __NR_pwrite
  58301. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  58302. +#ifdef __UCLIBC_HAS_LFS__
  58303. +# if __WORDSIZE == 32
  58304. +static ssize_t __NC(pread64)(int fd, void *buf, size_t count, off64_t offset)
  58305. {
  58306. - /* we won't actually be modifying the buffer,
  58307. - *just cast it to get rid of warnings */
  58308. - return __fake_pread_write(fd, (void*)buf, count, offset, 1);
  58309. + return MY_PREAD64(fd, buf, count, offset);
  58310. }
  58311. -weak_alias(__libc_pwrite,pwrite)
  58312. +CANCELLABLE_SYSCALL(ssize_t, pread64, (int fd, void *buf, size_t count, off64_t offset),
  58313. + (fd, buf, count, offset))
  58314. -# ifdef __UCLIBC_HAS_LFS__
  58315. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  58316. -{
  58317. - return __fake_pread_write64(fd, (void*)buf, count, offset, 1);
  58318. -}
  58319. -weak_alias(__libc_pwrite64,pwrite64)
  58320. -# endif /* __UCLIBC_HAS_LFS__ */
  58321. -#endif /* ! __NR_pwrite */
  58322. +static ssize_t __NC(pwrite64)(int fd, const void *buf, size_t count, off64_t offset)
  58323. +{
  58324. + return MY_PWRITE64(fd, buf, count, offset);
  58325. +}
  58326. +CANCELLABLE_SYSCALL(ssize_t, pwrite64, (int fd, const void *buf, size_t count, off64_t offset),
  58327. + (fd, buf, count, offset))
  58328. +# else
  58329. +# ifdef __LINUXTHREADS_OLD__
  58330. +weak_alias(pread,pread64)
  58331. +weak_alias(pwrite,pwrite64)
  58332. +lt_strong_alias(pread64)
  58333. +lt_strong_alias(pwrite64)
  58334. +# else
  58335. +strong_alias_untyped(pread,pread64)
  58336. +strong_alias_untyped(pwrite,pwrite64)
  58337. +# endif
  58338. +# endif
  58339. +#endif
  58340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pselect.c uClibc/libc/sysdeps/linux/common/pselect.c
  58341. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pselect.c 2012-05-15 09:20:09.000000000 +0200
  58342. +++ uClibc/libc/sysdeps/linux/common/pselect.c 2014-02-03 12:32:56.000000000 +0100
  58343. @@ -13,82 +13,53 @@
  58344. Lesser General Public License for more details.
  58345. You should have received a copy of the GNU Lesser General Public
  58346. - License along with the GNU C Library; if not, write to the Free
  58347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58348. - 02111-1307 USA. */
  58349. + License along with the GNU C Library; if not, see
  58350. + <http://www.gnu.org/licenses/>. */
  58351. -#include <errno.h>
  58352. -#include <signal.h>
  58353. -#include <stddef.h> /* For NULL. */
  58354. -#include <sys/time.h>
  58355. -#include <sys/select.h>
  58356. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58357. -#include <sysdep-cancel.h>
  58358. -#endif
  58359. +#include <features.h>
  58360. -libc_hidden_proto(sigprocmask)
  58361. -libc_hidden_proto(select)
  58362. +#ifdef __USE_XOPEN2K
  58363. +#include <sys/syscall.h>
  58364. +#include <sys/select.h>
  58365. +#include <sys/time.h>
  58366. +#include <signal.h>
  58367. +#include <cancel.h>
  58368. -/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
  58369. - readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
  58370. - (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
  58371. - after waiting the interval specified therein. Additionally set the sigmask
  58372. - SIGMASK for this call. Returns the number of ready descriptors, or -1 for
  58373. - errors. */
  58374. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58375. -static int
  58376. -__pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58377. -#else
  58378. -int
  58379. -pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58380. -#endif
  58381. - const struct timespec *timeout, const sigset_t *sigmask)
  58382. +static int __NC(pselect)(int nfds, fd_set *readfds, fd_set *writefds,
  58383. + fd_set *exceptfds, const struct timespec *timeout,
  58384. + const sigset_t *sigmask)
  58385. {
  58386. - struct timeval tval;
  58387. - int retval;
  58388. - sigset_t savemask;
  58389. -
  58390. - /* Change nanosecond number to microseconds. This might mean losing
  58391. - precision and therefore the `pselect` should be available. But
  58392. - for now it is hardly found. */
  58393. - if (timeout != NULL)
  58394. - TIMESPEC_TO_TIMEVAL (&tval, timeout);
  58395. -
  58396. - /* The setting and restoring of the signal mask and the select call
  58397. - should be an atomic operation. This can't be done without kernel
  58398. - help. */
  58399. - if (sigmask != NULL)
  58400. - sigprocmask (SIG_SETMASK, sigmask, &savemask);
  58401. -
  58402. - /* Note the pselect() is a cancellation point. But since we call
  58403. - select() which itself is a cancellation point we do not have
  58404. - to do anything here. */
  58405. - retval = select (nfds, readfds, writefds, exceptfds,
  58406. - timeout != NULL ? &tval : NULL);
  58407. + struct timeval tval;
  58408. + int retval;
  58409. + sigset_t savemask;
  58410. +
  58411. + /* Change nanosecond number to microseconds. This might mean losing
  58412. + precision and therefore the `pselect` should be available. But
  58413. + for now it is hardly found. */
  58414. + if (timeout != NULL)
  58415. + TIMESPEC_TO_TIMEVAL (&tval, timeout);
  58416. +
  58417. + /* The setting and restoring of the signal mask and the select call
  58418. + should be an atomic operation. This can't be done without kernel
  58419. + help. */
  58420. + if (sigmask != NULL)
  58421. + sigprocmask (SIG_SETMASK, sigmask, &savemask);
  58422. +
  58423. + /* The comment below does not apply on uClibc, since we use __select_nocancel */
  58424. + /* Note the pselect() is a cancellation point. But since we call
  58425. + select() which itself is a cancellation point we do not have
  58426. + to do anything here. */
  58427. + retval = __NC(select)(nfds, readfds, writefds, exceptfds,
  58428. + timeout != NULL ? &tval : NULL);
  58429. - if (sigmask != NULL)
  58430. - sigprocmask (SIG_SETMASK, &savemask, NULL);
  58431. + if (sigmask != NULL)
  58432. + sigprocmask (SIG_SETMASK, &savemask, NULL);
  58433. - return retval;
  58434. + return retval;
  58435. }
  58436. +CANCELLABLE_SYSCALL(int, pselect, (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58437. + const struct timespec *timeout, const sigset_t *sigmask),
  58438. + (nfds, readfds, writefds, exceptfds, timeout, sigmask))
  58439. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58440. -int
  58441. -pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58442. - const struct timespec *timeout, const sigset_t *sigmask)
  58443. -{
  58444. - if (SINGLE_THREAD_P)
  58445. - return __pselect (nfds, readfds, writefds, exceptfds,
  58446. - timeout, sigmask);
  58447. -
  58448. - int oldtype = LIBC_CANCEL_ASYNC ();
  58449. -
  58450. - int result = __pselect (nfds, readfds, writefds, exceptfds,
  58451. - timeout, sigmask);
  58452. -
  58453. - LIBC_CANCEL_RESET (oldtype);
  58454. -
  58455. - return result;
  58456. -}
  58457. #endif
  58458. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readahead.c uClibc/libc/sysdeps/linux/common/readahead.c
  58459. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readahead.c 2012-05-15 09:20:09.000000000 +0200
  58460. +++ uClibc/libc/sysdeps/linux/common/readahead.c 2014-02-03 12:32:56.000000000 +0100
  58461. @@ -13,46 +13,33 @@
  58462. Lesser General Public License for more details.
  58463. You should have received a copy of the GNU Lesser General Public
  58464. - License along with the GNU C Library; if not, write to the Free
  58465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58466. - 02111-1307 USA. */
  58467. -
  58468. -#include <errno.h>
  58469. -#include <fcntl.h>
  58470. -#include <sys/types.h>
  58471. -#include <sys/syscall.h>
  58472. -#include <bits/wordsize.h>
  58473. -
  58474. -#ifdef __UCLIBC_HAS_LFS__
  58475. + License along with the GNU C Library; if not, see
  58476. + <http://www.gnu.org/licenses/>. */
  58477. -#include <_lfs_64.h>
  58478. +#include <sys/syscall.h>
  58479. -#ifdef __NR_readahead
  58480. +#if defined __NR_readahead && defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  58481. -# define __NR___readahead __NR_readahead
  58482. +# include <fcntl.h>
  58483. +# include <bits/wordsize.h>
  58484. # if __WORDSIZE == 64
  58485. -static __inline__ _syscall3(ssize_t, __readahead, int, fd,
  58486. - off_t, offset, size_t, count)
  58487. -
  58488. -ssize_t readahead(int fd, off_t offset, size_t count)
  58489. -{
  58490. - return __readahead(fd, offset, count);
  58491. -}
  58492. +_syscall3(ssize_t, readahead, int, fd, off_t, offset, size_t, count)
  58493. # else
  58494. -static __inline__ _syscall4(ssize_t, __readahead, int, fd,
  58495. - off_t, high_offset, off_t, low_offset, size_t, count)
  58496. -
  58497. ssize_t readahead(int fd, off64_t offset, size_t count)
  58498. {
  58499. - return __readahead(fd, (off_t) (offset >> 32), (off_t) (offset & 0xffffffff), count);
  58500. + return INLINE_SYSCALL(readahead,
  58501. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  58502. + 5, fd, 0,
  58503. +# else
  58504. + 4, fd,
  58505. +# endif
  58506. + OFF64_HI_LO(offset), count);
  58507. }
  58508. # endif
  58509. #endif
  58510. -
  58511. -#endif /* __UCLIBC_HAS_LFS__ */
  58512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/read.c uClibc/libc/sysdeps/linux/common/read.c
  58513. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/read.c 2012-05-15 09:20:09.000000000 +0200
  58514. +++ uClibc/libc/sysdeps/linux/common/read.c 2014-02-03 12:32:56.000000000 +0100
  58515. @@ -9,11 +9,11 @@
  58516. #include <sys/syscall.h>
  58517. #include <unistd.h>
  58518. +#include <cancel.h>
  58519. -_syscall3(ssize_t, read, int, fd, __ptr_t, buf, size_t, count)
  58520. -#ifndef __LINUXTHREADS_OLD__
  58521. -libc_hidden_def(read)
  58522. -#else
  58523. -libc_hidden_weak(read)
  58524. -strong_alias(read,__libc_read)
  58525. -#endif
  58526. +#define __NR___read_nocancel __NR_read
  58527. +_syscall3(ssize_t, __NC(read), int, fd, void *, buf, size_t, count)
  58528. +
  58529. +CANCELLABLE_SYSCALL(ssize_t, read, (int fd, void *buf, size_t count),
  58530. + (fd, buf, count))
  58531. +lt_libc_hidden(read)
  58532. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readlinkat.c uClibc/libc/sysdeps/linux/common/readlinkat.c
  58533. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readlinkat.c 2012-05-15 09:20:09.000000000 +0200
  58534. +++ uClibc/libc/sysdeps/linux/common/readlinkat.c 2014-02-03 12:32:56.000000000 +0100
  58535. @@ -11,6 +11,7 @@
  58536. #ifdef __NR_readlinkat
  58537. _syscall4(ssize_t, readlinkat, int, fd, const char *, path, char *, buf, size_t, len)
  58538. +libc_hidden_def(readlinkat)
  58539. #else
  58540. /* should add emulation with readlink() and /proc/self/fd/ ... */
  58541. #endif
  58542. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readlink.c uClibc/libc/sysdeps/linux/common/readlink.c
  58543. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readlink.c 2012-05-15 09:20:09.000000000 +0200
  58544. +++ uClibc/libc/sysdeps/linux/common/readlink.c 2014-02-03 12:32:56.000000000 +0100
  58545. @@ -10,5 +10,13 @@
  58546. #include <sys/syscall.h>
  58547. #include <unistd.h>
  58548. +#if defined(__NR_readlinkat) && !defined(__NR_readlink)
  58549. +# include <fcntl.h>
  58550. +ssize_t readlink (const char *path, char *buf, size_t len)
  58551. +{
  58552. + return readlinkat(AT_FDCWD, path, buf, len);
  58553. +}
  58554. +#else
  58555. _syscall3(ssize_t, readlink, const char *, path, char *, buf, size_t, bufsiz)
  58556. +#endif
  58557. libc_hidden_def(readlink)
  58558. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readv.c uClibc/libc/sysdeps/linux/common/readv.c
  58559. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readv.c 2012-05-15 09:20:09.000000000 +0200
  58560. +++ uClibc/libc/sysdeps/linux/common/readv.c 2014-02-03 12:32:56.000000000 +0100
  58561. @@ -10,41 +10,21 @@
  58562. #include <sys/syscall.h>
  58563. #include <sys/uio.h>
  58564. -
  58565. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58566. -#include <sysdep-cancel.h>
  58567. +#include <cancel.h>
  58568. /* We should deal with kernel which have a smaller UIO_FASTIOV as well
  58569. as a very big count. */
  58570. -static ssize_t __readv (int fd, const struct iovec *vector, int count)
  58571. +static ssize_t __NC(readv)(int fd, const struct iovec *vector, int count)
  58572. {
  58573. - ssize_t bytes_read;
  58574. -
  58575. - bytes_read = INLINE_SYSCALL (readv, 3, fd, vector, count);
  58576. -
  58577. - if (bytes_read >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  58578. - return bytes_read;
  58579. -
  58580. - /* glibc tries again, but we do not. */
  58581. - //return __atomic_readv_replacement (fd, vector, count);
  58582. -
  58583. - return -1;
  58584. -}
  58585. -
  58586. -ssize_t readv (int fd, const struct iovec *vector, int count)
  58587. -{
  58588. - if (SINGLE_THREAD_P)
  58589. - return __readv (fd, vector, count);
  58590. -
  58591. - int oldtype = LIBC_CANCEL_ASYNC ();
  58592. + ssize_t bytes_read = INLINE_SYSCALL(readv, 3, fd, vector, count);
  58593. - int result = __readv (fd, vector, count);
  58594. + if (bytes_read >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  58595. + return bytes_read;
  58596. - LIBC_CANCEL_RESET (oldtype);
  58597. + /* glibc tries again, but we do not. */
  58598. + /* return __atomic_readv_replacement (fd, vector, count); */
  58599. - return result;
  58600. + return -1;
  58601. }
  58602. -#else
  58603. -_syscall3(ssize_t, readv, int, filedes, const struct iovec *, vector,
  58604. - int, count)
  58605. -#endif
  58606. +CANCELLABLE_SYSCALL(ssize_t, readv, (int fd, const struct iovec *vector, int count),
  58607. + (fd, vector, count))
  58608. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/renameat.c uClibc/libc/sysdeps/linux/common/renameat.c
  58609. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/renameat.c 2012-05-15 09:20:09.000000000 +0200
  58610. +++ uClibc/libc/sysdeps/linux/common/renameat.c 2014-02-03 12:32:56.000000000 +0100
  58611. @@ -11,6 +11,7 @@
  58612. #ifdef __NR_renameat
  58613. _syscall4(int, renameat, int, oldfd, const char *, old, int, newfd, const char *, new)
  58614. +libc_hidden_def(renameat)
  58615. #else
  58616. /* should add emulation with rename() and /proc/self/fd/ ... */
  58617. #endif
  58618. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/rename.c uClibc/libc/sysdeps/linux/common/rename.c
  58619. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/rename.c 2012-05-15 09:20:09.000000000 +0200
  58620. +++ uClibc/libc/sysdeps/linux/common/rename.c 2014-02-03 12:32:56.000000000 +0100
  58621. @@ -8,17 +8,15 @@
  58622. */
  58623. #include <sys/syscall.h>
  58624. -#include <unistd.h>
  58625. -#include <string.h>
  58626. -#include <sys/param.h>
  58627. #include <stdio.h>
  58628. +#include <unistd.h>
  58629. -#define __NR___syscall_rename __NR_rename
  58630. -static __inline__ _syscall2(int, __syscall_rename, const char *, oldpath,
  58631. - const char *, newpath)
  58632. -
  58633. -int rename(const char * oldpath, const char * newpath)
  58634. +#if defined __NR_renameat && !defined __NR_rename
  58635. +# include <fcntl.h>
  58636. +int rename(const char *oldpath, const char *newpath)
  58637. {
  58638. - return __syscall_rename(oldpath, newpath);
  58639. + return renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath);
  58640. }
  58641. -
  58642. +#else
  58643. +_syscall2(int, rename, const char *, oldpath, const char *, newpath)
  58644. +#endif
  58645. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/rmdir.c uClibc/libc/sysdeps/linux/common/rmdir.c
  58646. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/rmdir.c 2012-05-15 09:20:09.000000000 +0200
  58647. +++ uClibc/libc/sysdeps/linux/common/rmdir.c 2014-02-03 12:32:56.000000000 +0100
  58648. @@ -11,5 +11,13 @@
  58649. #include <unistd.h>
  58650. +#if defined __NR_unlinkat && !defined __NR_rmdir
  58651. +# include <fcntl.h>
  58652. +int rmdir(const char *pathname)
  58653. +{
  58654. + return unlinkat(AT_FDCWD, pathname, AT_REMOVEDIR);
  58655. +}
  58656. +#else
  58657. _syscall1(int, rmdir, const char *, pathname)
  58658. +#endif
  58659. libc_hidden_def(rmdir)
  58660. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigtimedwait.c uClibc/libc/sysdeps/linux/common/__rt_sigtimedwait.c
  58661. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigtimedwait.c 2012-05-15 09:20:09.000000000 +0200
  58662. +++ uClibc/libc/sysdeps/linux/common/__rt_sigtimedwait.c 2014-02-03 12:32:56.000000000 +0100
  58663. @@ -9,42 +9,49 @@
  58664. */
  58665. #include <sys/syscall.h>
  58666. -#include <signal.h>
  58667. -#include <string.h>
  58668. #ifdef __NR_rt_sigtimedwait
  58669. -
  58670. +# include <signal.h>
  58671. +# include <cancel.h>
  58672. # ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58673. -# include <sysdep-cancel.h>
  58674. # include <pthreadP.h> /* SIGCANCEL */
  58675. +# endif
  58676. +# ifdef SIGCANCEL
  58677. +# define __need_NULL
  58678. +# include <stddef.h>
  58679. +# include <string.h>
  58680. +# endif
  58681. -static int do_sigtimedwait(const sigset_t *set, siginfo_t *info,
  58682. - const struct timespec *timeout)
  58683. +int __NC(sigtimedwait)(const sigset_t *set, siginfo_t *info,
  58684. + const struct timespec *timeout)
  58685. {
  58686. -# ifdef SIGCANCEL
  58687. +# ifdef SIGCANCEL
  58688. sigset_t tmpset;
  58689. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  58690. -# ifdef SIGSETXID
  58691. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  58692. -# endif
  58693. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  58694. +# ifdef SIGSETXID
  58695. + || unlikely (__sigismember (set, SIGSETXID))
  58696. +# endif
  58697. ))
  58698. {
  58699. /* Create a temporary mask without the bit for SIGCANCEL set. */
  58700. // We are not copying more than we have to.
  58701. memcpy (&tmpset, set, _NSIG / 8);
  58702. __sigdelset (&tmpset, SIGCANCEL);
  58703. -# ifdef SIGSETXID
  58704. +# ifdef SIGSETXID
  58705. __sigdelset (&tmpset, SIGSETXID);
  58706. -# endif
  58707. +# endif
  58708. set = &tmpset;
  58709. }
  58710. -# endif
  58711. +# endif
  58712. +/* if this is enabled, enable the disabled section in sigwait.c */
  58713. +# if defined SI_TKILL && defined SI_USER
  58714. /* XXX The size argument hopefully will have to be changed to the
  58715. real size of the user-level sigset_t. */
  58716. - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, info,
  58717. - timeout, _NSIG / 8);
  58718. + /* on uClibc we use the kernel sigset_t size */
  58719. + int result = INLINE_SYSCALL(rt_sigtimedwait, 4, set, info,
  58720. + timeout, __SYSCALL_SIGSET_T_SIZE);
  58721. /* The kernel generates a SI_TKILL code in si_code in case tkill is
  58722. used. tkill is transparently used in raise(). Since having
  58723. @@ -54,39 +61,14 @@
  58724. info->si_code = SI_USER;
  58725. return result;
  58726. -}
  58727. -
  58728. -/* Return any pending signal or wait for one for the given time. */
  58729. -int attribute_hidden __sigtimedwait(const sigset_t *set, siginfo_t *info,
  58730. - const struct timespec *timeout)
  58731. -{
  58732. - if(SINGLE_THREAD_P)
  58733. - return do_sigtimedwait(set, info, timeout);
  58734. -
  58735. - int oldtype = LIBC_CANCEL_ASYNC();
  58736. -
  58737. - /* XXX The size argument hopefully will have to be changed to the
  58738. - real size of the user-level sigset_t. */
  58739. - int result = do_sigtimedwait(set, info, timeout);
  58740. -
  58741. - LIBC_CANCEL_RESET(oldtype);
  58742. -
  58743. - return result;
  58744. -}
  58745. # else
  58746. -# define __need_NULL
  58747. -# include <stddef.h>
  58748. -# define __NR___rt_sigtimedwait __NR_rt_sigtimedwait
  58749. -static _syscall4(int, __rt_sigtimedwait, const sigset_t *, set,
  58750. - siginfo_t *, info, const struct timespec *, timeout,
  58751. - size_t, setsize);
  58752. -
  58753. -int attribute_hidden __sigtimedwait(const sigset_t * set, siginfo_t * info,
  58754. - const struct timespec *timeout)
  58755. -{
  58756. - return __rt_sigtimedwait(set, info, timeout, _NSIG / 8);
  58757. + /* on uClibc we use the kernel sigset_t size */
  58758. + return INLINE_SYSCALL(rt_sigtimedwait, 4, set, info,
  58759. + timeout, __SYSCALL_SIGSET_T_SIZE);
  58760. +# endif
  58761. }
  58762. -# endif /* !__UCLIBC_HAS_THREADS_NATIVE__ */
  58763. -weak_alias(__sigtimedwait,sigtimedwait)
  58764. -libc_hidden_weak(sigtimedwait)
  58765. +CANCELLABLE_SYSCALL(int, sigtimedwait,
  58766. + (const sigset_t *set, siginfo_t *info, const struct timespec *timeout),
  58767. + (set, info, timeout))
  58768. +lt_libc_hidden(sigtimedwait)
  58769. #endif
  58770. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigwaitinfo.c uClibc/libc/sysdeps/linux/common/__rt_sigwaitinfo.c
  58771. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigwaitinfo.c 2012-05-15 09:20:09.000000000 +0200
  58772. +++ uClibc/libc/sysdeps/linux/common/__rt_sigwaitinfo.c 2014-02-03 12:32:56.000000000 +0100
  58773. @@ -9,81 +9,17 @@
  58774. */
  58775. #include <sys/syscall.h>
  58776. -#include <signal.h>
  58777. -#include <string.h>
  58778. #ifdef __NR_rt_sigtimedwait
  58779. +# define __need_NULL
  58780. +# include <stddef.h>
  58781. +# include <signal.h>
  58782. +# include <cancel.h>
  58783. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58784. -# include <sysdep-cancel.h>
  58785. -
  58786. -static int do_sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58787. -{
  58788. -# ifdef SIGCANCEL
  58789. - sigset_t tmpset;
  58790. -
  58791. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  58792. -# ifdef SIGSETXID
  58793. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  58794. -# endif
  58795. - ))
  58796. - {
  58797. - /* Create a temporary mask without the bit for SIGCANCEL set. */
  58798. - // We are not copying more than we have to.
  58799. - memcpy (&tmpset, set, _NSIG / 8);
  58800. - __sigdelset (&tmpset, SIGCANCEL);
  58801. -# ifdef SIGSETXID
  58802. - __sigdelset (&tmpset, SIGSETXID);
  58803. -# endif
  58804. - set = &tmpset;
  58805. - }
  58806. -# endif
  58807. -
  58808. - /* XXX The size argument hopefully will have to be changed to the
  58809. - real size of the user-level sigset_t. */
  58810. - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, info,
  58811. - NULL, _NSIG / 8);
  58812. -
  58813. - /* The kernel generates a SI_TKILL code in si_code in case tkill is
  58814. - used. tkill is transparently used in raise(). Since having
  58815. - SI_TKILL as a code is useful in general we fold the results
  58816. - here. */
  58817. - if (result != -1 && info != NULL && info->si_code == SI_TKILL)
  58818. - info->si_code = SI_USER;
  58819. -
  58820. - return result;
  58821. -}
  58822. -
  58823. -/* Return any pending signal or wait for one for the given time. */
  58824. -int __sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58825. -{
  58826. - if(SINGLE_THREAD_P)
  58827. - return do_sigwaitinfo(set, info);
  58828. -
  58829. - int oldtype = LIBC_CANCEL_ASYNC();
  58830. -
  58831. - /* XXX The size argument hopefully will have to be changed to the
  58832. - real size of the user-level sigset_t. */
  58833. - int result = do_sigwaitinfo(set, info);
  58834. -
  58835. - LIBC_CANCEL_RESET(oldtype);
  58836. -
  58837. - return result;
  58838. -}
  58839. -# else
  58840. -# define __need_NULL
  58841. -# include <stddef.h>
  58842. -# define __NR___rt_sigwaitinfo __NR_rt_sigtimedwait
  58843. -static _syscall4(int, __rt_sigwaitinfo, const sigset_t *, set,
  58844. - siginfo_t *, info, const struct timespec *, timeout,
  58845. - size_t, setsize);
  58846. -
  58847. -int attribute_hidden __sigwaitinfo(const sigset_t * set, siginfo_t * info)
  58848. +int sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58849. {
  58850. - return __rt_sigwaitinfo(set, info, NULL, _NSIG / 8);
  58851. + return sigtimedwait(set, info, NULL);
  58852. }
  58853. -# endif
  58854. -libc_hidden_proto(sigwaitinfo)
  58855. -weak_alias (__sigwaitinfo, sigwaitinfo)
  58856. -libc_hidden_weak(sigwaitinfo)
  58857. +/* cancellation handled by sigtimedwait, noop on uClibc */
  58858. +LIBC_CANCEL_HANDLED();
  58859. #endif
  58860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_cpucount.c uClibc/libc/sysdeps/linux/common/sched_cpucount.c
  58861. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_cpucount.c 2012-05-15 09:20:09.000000000 +0200
  58862. +++ uClibc/libc/sysdeps/linux/common/sched_cpucount.c 2014-02-03 12:32:56.000000000 +0100
  58863. @@ -12,9 +12,8 @@
  58864. Lesser General Public License for more details.
  58865. You should have received a copy of the GNU Lesser General Public
  58866. - License along with the GNU C Library; if not, write to the Free
  58867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58868. - 02111-1307 USA. */
  58869. + License along with the GNU C Library; if not, see
  58870. + <http://www.gnu.org/licenses/>. */
  58871. #include <limits.h>
  58872. #include <sched.h>
  58873. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_getaffinity.c uClibc/libc/sysdeps/linux/common/sched_getaffinity.c
  58874. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  58875. +++ uClibc/libc/sysdeps/linux/common/sched_getaffinity.c 2014-02-03 12:32:56.000000000 +0100
  58876. @@ -12,24 +12,19 @@
  58877. Lesser General Public License for more details.
  58878. You should have received a copy of the GNU Lesser General Public
  58879. - License along with the GNU C Library; if not, write to the Free
  58880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58881. - 02111-1307 USA. */
  58882. + License along with the GNU C Library; if not, see
  58883. + <http://www.gnu.org/licenses/>. */
  58884. -#include <features.h>
  58885. -#ifdef __USE_GNU
  58886. -
  58887. -#include <sched.h>
  58888. -#include <sys/types.h>
  58889. #include <sys/syscall.h>
  58890. -#include <string.h>
  58891. -#include <sys/param.h>
  58892. -
  58893. -#if defined __NR_sched_getaffinity
  58894. -#define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
  58895. -static __inline__ _syscall3(int, __syscall_sched_getaffinity, __kernel_pid_t, pid,
  58896. - size_t, cpusetsize, cpu_set_t *, cpuset)
  58897. +#if defined __NR_sched_getaffinity && defined __USE_GNU
  58898. +# include <sched.h>
  58899. +# include <string.h>
  58900. +# include <sys/types.h>
  58901. +# include <sys/param.h>
  58902. +# define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
  58903. +static __always_inline _syscall3(int, __syscall_sched_getaffinity, __kernel_pid_t, pid,
  58904. + size_t, cpusetsize, cpu_set_t *, cpuset)
  58905. int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)
  58906. {
  58907. @@ -45,4 +40,3 @@
  58908. return res;
  58909. }
  58910. #endif
  58911. -#endif
  58912. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_setaffinity.c uClibc/libc/sysdeps/linux/common/sched_setaffinity.c
  58913. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  58914. +++ uClibc/libc/sysdeps/linux/common/sched_setaffinity.c 2014-02-03 12:32:56.000000000 +0100
  58915. @@ -12,26 +12,20 @@
  58916. Lesser General Public License for more details.
  58917. You should have received a copy of the GNU Lesser General Public
  58918. - License along with the GNU C Library; if not, write to the Free
  58919. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58920. - 02111-1307 USA. */
  58921. + License along with the GNU C Library; if not, see
  58922. + <http://www.gnu.org/licenses/>. */
  58923. -#include <features.h>
  58924. -#ifdef __USE_GNU
  58925. -
  58926. -#include <sched.h>
  58927. -#include <sys/types.h>
  58928. #include <sys/syscall.h>
  58929. -#include <string.h>
  58930. -#include <unistd.h>
  58931. -#include <sys/param.h>
  58932. -#include <alloca.h>
  58933. -
  58934. -#if defined __NR_sched_setaffinity
  58935. -
  58936. -#define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
  58937. -static __inline__ _syscall3(int, __syscall_sched_setaffinity, __kernel_pid_t, pid,
  58938. - size_t, cpusetsize, cpu_set_t *, cpuset)
  58939. +
  58940. +#if defined __NR_sched_setaffinity && defined __USE_GNU
  58941. +# include <sched.h>
  58942. +# include <sys/types.h>
  58943. +# include <string.h>
  58944. +# include <unistd.h>
  58945. +# include <alloca.h>
  58946. +# define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
  58947. +static __always_inline _syscall3(int, __syscall_sched_setaffinity, __kernel_pid_t, pid,
  58948. + size_t, cpusetsize, const cpu_set_t *, cpuset)
  58949. static size_t __kernel_cpumask_size;
  58950. @@ -68,7 +62,6 @@
  58951. return -1;
  58952. }
  58953. - return INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset);
  58954. + return __syscall_sched_setaffinity(pid, cpusetsize, cpuset);
  58955. }
  58956. #endif
  58957. -#endif /* __USE_GNU */
  58958. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/select.c uClibc/libc/sysdeps/linux/common/select.c
  58959. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/select.c 2012-05-15 09:20:09.000000000 +0200
  58960. +++ uClibc/libc/sysdeps/linux/common/select.c 2014-02-03 12:32:56.000000000 +0100
  58961. @@ -9,27 +9,24 @@
  58962. #include <sys/syscall.h>
  58963. #include <sys/select.h>
  58964. -#include <stdint.h>
  58965. +#include <cancel.h>
  58966. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58967. -#include <sysdep-cancel.h>
  58968. -#else
  58969. -#define SINGLE_THREAD_P 1
  58970. +#ifdef __NR__newselect
  58971. +# undef __NR_select
  58972. +# define __NR_select __NR__newselect
  58973. #endif
  58974. -#define USEC_PER_SEC 1000000L
  58975. -
  58976. -extern __typeof(select) __libc_select;
  58977. -
  58978. -#if !defined(__NR__newselect) && !defined(__NR_select) && defined __USE_XOPEN2K
  58979. -# define __NR___libc_pselect6 __NR_pselect6
  58980. -static _syscall6(int, __libc_pselect6, int, n, fd_set *, readfds, fd_set *, writefds,
  58981. - fd_set *, exceptfds, const struct timespec *, timeout,
  58982. - const sigset_t *, sigmask)
  58983. +#if !defined __NR_select && defined __NR_pselect6
  58984. +# include <stdint.h>
  58985. +# define USEC_PER_SEC 1000000L
  58986. +#endif
  58987. -int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58988. - struct timeval *timeout)
  58989. +int __NC(select)(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58990. + struct timeval *timeout)
  58991. {
  58992. +#ifdef __NR_select
  58993. + return INLINE_SYSCALL(select, 5, n, readfds, writefds, exceptfds, timeout);
  58994. +#elif defined __NR_pselect6
  58995. struct timespec _ts, *ts = 0;
  58996. if (timeout) {
  58997. uint32_t usec;
  58998. @@ -51,44 +48,14 @@
  58999. ts = &_ts;
  59000. }
  59001. -
  59002. - if (SINGLE_THREAD_P)
  59003. - return __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
  59004. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  59005. - int oldtype = LIBC_CANCEL_ASYNC ();
  59006. - int result = __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
  59007. - LIBC_CANCEL_RESET (oldtype);
  59008. - return result;
  59009. -#endif
  59010. -
  59011. -}
  59012. -
  59013. -#else
  59014. -
  59015. -#ifdef __NR__newselect
  59016. -# define __NR___syscall_select __NR__newselect
  59017. -#else
  59018. -# define __NR___syscall_select __NR_select
  59019. -#endif
  59020. -
  59021. -static _syscall5(int, __syscall_select, int, n, fd_set *, readfds,
  59022. - fd_set *, writefds, fd_set *, exceptfds, struct timeval *, timeout);
  59023. -
  59024. -int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  59025. - struct timeval *timeout)
  59026. -{
  59027. - if (SINGLE_THREAD_P)
  59028. - return __syscall_select(n, readfds, writefds, exceptfds, timeout);
  59029. -
  59030. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  59031. - int oldtype = LIBC_CANCEL_ASYNC ();
  59032. - int result = __syscall_select(n, readfds, writefds, exceptfds, timeout);
  59033. - LIBC_CANCEL_RESET (oldtype);
  59034. - return result;
  59035. + return INLINE_SYSCALL(pselect6, 6, n, readfds, writefds, exceptfds, ts, 0);
  59036. #endif
  59037. }
  59038. -
  59039. +/* we should guard it, but we need it in other files, so let it fail
  59040. + * if we miss any of the syscalls */
  59041. +#if 1 /*defined __NR_select || defined __NR_pselect6*/
  59042. +CANCELLABLE_SYSCALL(int, select, (int n, fd_set *readfds, fd_set *writefds,
  59043. + fd_set *exceptfds, struct timeval *timeout),
  59044. + (n, readfds, writefds, exceptfds, timeout))
  59045. +lt_libc_hidden(select)
  59046. #endif
  59047. -
  59048. -weak_alias(__libc_select,select)
  59049. -libc_hidden_weak(select)
  59050. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile64.c uClibc/libc/sysdeps/linux/common/sendfile64.c
  59051. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile64.c 2012-05-15 09:20:09.000000000 +0200
  59052. +++ uClibc/libc/sysdeps/linux/common/sendfile64.c 2014-02-03 12:32:56.000000000 +0100
  59053. @@ -10,15 +10,12 @@
  59054. * just the macro we need to order things, __LONG_LONG_PAIR.
  59055. */
  59056. -#include <features.h>
  59057. -#include <unistd.h>
  59058. -#include <errno.h>
  59059. -#include <endian.h>
  59060. -#include <stdint.h>
  59061. -#include <sys/sendfile.h>
  59062. +#include <_lfs_64.h>
  59063. #include <sys/syscall.h>
  59064. #include <bits/wordsize.h>
  59065. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_sendfile64
  59066. +#if defined __NR_sendfile64 && __WORDSIZE != 64
  59067. +# include <sys/sendfile.h>
  59068. _syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count)
  59069. +libc_hidden_def(sendfile64)
  59070. #endif
  59071. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile.c uClibc/libc/sysdeps/linux/common/sendfile.c
  59072. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile.c 2012-05-15 09:20:09.000000000 +0200
  59073. +++ uClibc/libc/sysdeps/linux/common/sendfile.c 2014-02-03 12:32:56.000000000 +0100
  59074. @@ -8,16 +8,57 @@
  59075. */
  59076. #include <sys/syscall.h>
  59077. -#include <unistd.h>
  59078. -#include <sys/sendfile.h>
  59079. -#ifdef __NR_sendfile
  59080. +# include <sys/sendfile.h>
  59081. +# include <bits/wordsize.h>
  59082. +#if defined __NR_sendfile
  59083. _syscall4(ssize_t, sendfile, int, out_fd, int, in_fd, __off_t *, offset,
  59084. - size_t, count)
  59085. + size_t, count)
  59086. +# if defined __UCLIBC_HAS_LFS__ && (!defined __NR_sendfile64 || __WORDSIZE == 64)
  59087. +libc_hidden_def(sendfile64)
  59088. +strong_alias_untyped(sendfile,sendfile64)
  59089. +# endif
  59090. -#if ! defined __NR_sendfile64 && defined __UCLIBC_HAS_LFS__
  59091. -strong_alias(sendfile,sendfile64)
  59092. -#endif
  59093. +#elif defined __NR_sendfile64 && !defined __NR_sendfile
  59094. +# include <unistd.h>
  59095. +# include <stddef.h>
  59096. +
  59097. +ssize_t sendfile(int out_fd, int in_fd, __off_t *offset, size_t count)
  59098. +{
  59099. + __off64_t off64, *off;
  59100. + ssize_t res;
  59101. +
  59102. + /*
  59103. + * Check if valid fds and valid pointers were passed
  59104. + * This does not prevent the user from passing
  59105. + * an arbitrary pointer causing a segfault or
  59106. + * other security issues
  59107. + */
  59108. +
  59109. + if (in_fd < 0 || out_fd < 0) {
  59110. + __set_errno(EBADF);
  59111. + return -1;
  59112. + }
  59113. +
  59114. + if (offset == NULL || (int)offset < 0) {
  59115. + __set_errno(EFAULT);
  59116. + return -1;
  59117. + }
  59118. -#endif /* __NR_sendfile */
  59119. + if (offset) {
  59120. + off = &off64;
  59121. + off64 = *offset;
  59122. + } else {
  59123. + off = NULL;
  59124. + }
  59125. +
  59126. + res = INLINE_SYSCALL(sendfile64, 4, out_fd, in_fd, off, count);
  59127. +
  59128. + if (res >= 0)
  59129. + *offset = off64;
  59130. +
  59131. + return res;
  59132. +}
  59133. +
  59134. +#endif
  59135. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setgroups.c uClibc/libc/sysdeps/linux/common/setgroups.c
  59136. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setgroups.c 2012-05-15 09:20:09.000000000 +0200
  59137. +++ uClibc/libc/sysdeps/linux/common/setgroups.c 2014-02-03 12:32:56.000000000 +0100
  59138. @@ -8,12 +8,9 @@
  59139. */
  59140. #include <sys/syscall.h>
  59141. -#include <stdlib.h>
  59142. -#include <unistd.h>
  59143. -#include <grp.h>
  59144. #ifdef __USE_BSD
  59145. -
  59146. +#include <grp.h>
  59147. #if defined(__NR_setgroups32)
  59148. # undef __NR_setgroups
  59149. @@ -24,11 +21,14 @@
  59150. _syscall2(int, setgroups, size_t, size, const gid_t *, list)
  59151. #else
  59152. -
  59153. -
  59154. -#define __NR___syscall_setgroups __NR_setgroups
  59155. -static __inline__ _syscall2(int, __syscall_setgroups,
  59156. - size_t, size, const __kernel_gid_t *, list)
  59157. +# include <errno.h>
  59158. +# include <stdlib.h>
  59159. +# include <unistd.h>
  59160. +# include <sys/types.h>
  59161. +
  59162. +# define __NR___syscall_setgroups __NR_setgroups
  59163. +static __always_inline _syscall2(int, __syscall_setgroups,
  59164. + size_t, size, const __kernel_gid_t *, list)
  59165. int setgroups(size_t size, const gid_t *groups)
  59166. {
  59167. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setpgrp.c uClibc/libc/sysdeps/linux/common/setpgrp.c
  59168. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setpgrp.c 2012-05-15 09:20:09.000000000 +0200
  59169. +++ uClibc/libc/sysdeps/linux/common/setpgrp.c 2014-02-03 12:32:56.000000000 +0100
  59170. @@ -4,10 +4,8 @@
  59171. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59172. */
  59173. -#include <syscall.h>
  59174. #include <unistd.h>
  59175. -
  59176. int setpgrp(void)
  59177. {
  59178. return setpgid(0,0);
  59179. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit64.c uClibc/libc/sysdeps/linux/common/setrlimit64.c
  59180. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit64.c 2012-05-15 09:20:09.000000000 +0200
  59181. +++ uClibc/libc/sysdeps/linux/common/setrlimit64.c 2014-02-03 12:32:56.000000000 +0100
  59182. @@ -12,20 +12,16 @@
  59183. Lesser General Public License for more details.
  59184. You should have received a copy of the GNU Lesser General Public
  59185. - License along with the GNU C Library; if not, write to the Free
  59186. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59187. - 02111-1307 USA. */
  59188. + License along with the GNU C Library; if not, see
  59189. + <http://www.gnu.org/licenses/>. */
  59190. #include <_lfs_64.h>
  59191. -
  59192. -#include <sys/types.h>
  59193. -#include <sys/resource.h>
  59194. #include <bits/wordsize.h>
  59195. /* the regular setrlimit will work just fine for 64bit users */
  59196. +#if __WORDSIZE == 32
  59197. -#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  59198. -
  59199. +# include <sys/resource.h>
  59200. /* Set the soft and hard limits for RESOURCE to *RLIMITS.
  59201. Only the super-user can increase hard limits.
  59202. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit.c uClibc/libc/sysdeps/linux/common/setrlimit.c
  59203. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit.c 2012-05-15 09:20:09.000000000 +0200
  59204. +++ uClibc/libc/sysdeps/linux/common/setrlimit.c 2014-02-03 12:32:56.000000000 +0100
  59205. @@ -7,12 +7,9 @@
  59206. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59207. */
  59208. -#define setrlimit64 __hide_setrlimit64
  59209. #include <sys/syscall.h>
  59210. -#include <unistd.h>
  59211. #include <sys/resource.h>
  59212. -#undef setrlimit64
  59213. -
  59214. +#include <bits/wordsize.h>
  59215. /* Only wrap setrlimit if the new usetrlimit is not present and setrlimit sucks */
  59216. @@ -25,7 +22,7 @@
  59217. const struct rlimit *, rlim)
  59218. int setrlimit(__rlimit_resource_t resource, struct rlimit *rlimits)
  59219. {
  59220. - return (__syscall_usetrlimit(resource, rlimits));
  59221. + return __syscall_usetrlimit(resource, rlimits);
  59222. }
  59223. #elif !defined(__UCLIBC_HANDLE_OLDER_RLIMIT__)
  59224. @@ -36,6 +33,11 @@
  59225. #else
  59226. +# define __need_NULL
  59227. +# include <stddef.h>
  59228. +# include <errno.h>
  59229. +# include <sys/param.h>
  59230. +
  59231. /* we have to handle old style setrlimit() */
  59232. # define __NR___syscall_setrlimit __NR_setrlimit
  59233. static __always_inline
  59234. @@ -52,18 +54,15 @@
  59235. /* We might have to correct the limits values. Since the old values
  59236. * were signed the new values might be too large. */
  59237. -# define RMIN(x, y) ((x) < (y) ? (x) : (y))
  59238. - rlimits_small.rlim_cur = RMIN((unsigned long int) rlimits->rlim_cur,
  59239. + rlimits_small.rlim_cur = MIN((unsigned long int) rlimits->rlim_cur,
  59240. RLIM_INFINITY >> 1);
  59241. - rlimits_small.rlim_max = RMIN((unsigned long int) rlimits->rlim_max,
  59242. + rlimits_small.rlim_max = MIN((unsigned long int) rlimits->rlim_max,
  59243. RLIM_INFINITY >> 1);
  59244. -#undef RMIN
  59245. - return (__syscall_setrlimit(resource, &rlimits_small));
  59246. + return __syscall_setrlimit(resource, &rlimits_small);
  59247. }
  59248. #endif
  59249. -
  59250. libc_hidden_def(setrlimit)
  59251. #if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  59252. -strong_alias(setrlimit, setrlimit64)
  59253. +strong_alias_untyped(setrlimit, setrlimit64)
  59254. #endif
  59255. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setsid.c uClibc/libc/sysdeps/linux/common/setsid.c
  59256. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setsid.c 2012-05-15 09:20:09.000000000 +0200
  59257. +++ uClibc/libc/sysdeps/linux/common/setsid.c 2014-02-03 12:32:56.000000000 +0100
  59258. @@ -10,6 +10,5 @@
  59259. #include <sys/syscall.h>
  59260. #include <unistd.h>
  59261. -
  59262. _syscall0(pid_t, setsid)
  59263. libc_hidden_def(setsid)
  59264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/settimeofday.c uClibc/libc/sysdeps/linux/common/settimeofday.c
  59265. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/settimeofday.c 2012-05-15 09:20:09.000000000 +0200
  59266. +++ uClibc/libc/sysdeps/linux/common/settimeofday.c 2014-02-03 12:32:56.000000000 +0100
  59267. @@ -8,12 +8,36 @@
  59268. */
  59269. #include <sys/syscall.h>
  59270. -#include <sys/time.h>
  59271. #ifdef __USE_BSD
  59272. +# include <sys/time.h>
  59273. +# ifdef __NR_settimeofday
  59274. +_syscall2(int, settimeofday, const struct timeval *, tv,
  59275. + const struct timezone *, tz)
  59276. +# elif defined __USE_SVID && defined __NR_stime
  59277. +# define __need_NULL
  59278. +# include <stddef.h>
  59279. +# include <errno.h>
  59280. +# include <time.h>
  59281. +int settimeofday(const struct timeval *tv, const struct timezone *tz)
  59282. +{
  59283. + time_t when;
  59284. + if (tv == NULL) {
  59285. + __set_errno(EINVAL);
  59286. + return -1;
  59287. + }
  59288. -_syscall2(int, settimeofday, const struct timeval *, tv,
  59289. - const struct timezone *, tz)
  59290. + if (tz != NULL || tv->tv_usec % 1000000 != 0) {
  59291. + __set_errno(ENOSYS);
  59292. + return -1;
  59293. + }
  59294. +
  59295. + when = tv->tv_sec + (tv->tv_usec / 1000000);
  59296. + return stime(&when);
  59297. +}
  59298. +# endif
  59299. +# if defined __NR_settimeofday || (defined __USE_SVID && defined __NR_stime)
  59300. libc_hidden_def(settimeofday)
  59301. +# endif
  59302. #endif
  59303. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setuid.c uClibc/libc/sysdeps/linux/common/setuid.c
  59304. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setuid.c 2012-05-15 09:20:09.000000000 +0200
  59305. +++ uClibc/libc/sysdeps/linux/common/setuid.c 2014-02-03 12:32:56.000000000 +0100
  59306. @@ -22,7 +22,7 @@
  59307. #else
  59308. # define __NR___syscall_setuid __NR_setuid
  59309. -static __inline__ _syscall1(int, __syscall_setuid, __kernel_uid_t, uid)
  59310. +static __always_inline _syscall1(int, __syscall_setuid, __kernel_uid_t, uid)
  59311. int setuid(uid_t uid)
  59312. {
  59313. @@ -30,6 +30,6 @@
  59314. __set_errno(EINVAL);
  59315. return -1;
  59316. }
  59317. - return (__syscall_setuid(uid));
  59318. + return __syscall_setuid(uid);
  59319. }
  59320. #endif
  59321. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/signalfd.c uClibc/libc/sysdeps/linux/common/signalfd.c
  59322. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/signalfd.c 2012-05-15 09:20:09.000000000 +0200
  59323. +++ uClibc/libc/sysdeps/linux/common/signalfd.c 2014-02-03 12:32:56.000000000 +0100
  59324. @@ -25,13 +25,13 @@
  59325. int signalfd (int fd, const sigset_t *mask, int flags)
  59326. {
  59327. #if defined __NR___syscall_signalfd4
  59328. - return __syscall_signalfd4(fd, mask, _NSIG / 8, flags);
  59329. + return __syscall_signalfd4(fd, mask, __SYSCALL_SIGSET_T_SIZE, flags);
  59330. #elif defined __NR___syscall_signalfd
  59331. if (flags != 0) {
  59332. __set_errno(EINVAL);
  59333. return -1;
  59334. }
  59335. - return __syscall_signalfd(fd, mask, _NSIG / 8);
  59336. + return __syscall_signalfd(fd, mask, __SYSCALL_SIGSET_T_SIZE);
  59337. #endif
  59338. }
  59339. #endif
  59340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigpending.c uClibc/libc/sysdeps/linux/common/sigpending.c
  59341. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigpending.c 2012-05-15 09:20:09.000000000 +0200
  59342. +++ uClibc/libc/sysdeps/linux/common/sigpending.c 2014-02-03 12:32:56.000000000 +0100
  59343. @@ -19,7 +19,7 @@
  59344. int sigpending(sigset_t * set)
  59345. {
  59346. - return __rt_sigpending(set, _NSIG / 8);
  59347. + return __rt_sigpending(set, __SYSCALL_SIGSET_T_SIZE);
  59348. }
  59349. #else
  59350. _syscall1(int, sigpending, sigset_t *, set)
  59351. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigprocmask.c uClibc/libc/sysdeps/linux/common/sigprocmask.c
  59352. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigprocmask.c 2012-05-15 09:20:09.000000000 +0200
  59353. +++ uClibc/libc/sysdeps/linux/common/sigprocmask.c 2014-02-03 12:32:56.000000000 +0100
  59354. @@ -35,9 +35,9 @@
  59355. * The only thing we have to make sure here is that SIGCANCEL and
  59356. * SIGSETXID are not blocked.
  59357. */
  59358. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  59359. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  59360. # ifdef SIGSETXID
  59361. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  59362. + || unlikely (__sigismember (set, SIGSETXID))
  59363. # endif
  59364. ))
  59365. {
  59366. @@ -50,7 +50,7 @@
  59367. }
  59368. #endif
  59369. - return __rt_sigprocmask(how, set, oldset, _NSIG / 8);
  59370. + return __rt_sigprocmask(how, set, oldset, __SYSCALL_SIGSET_T_SIZE);
  59371. }
  59372. @@ -70,9 +70,9 @@
  59373. * The only thing we have to make sure here is that SIGCANCEL and
  59374. * SIGSETXID are not blocked.
  59375. */
  59376. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  59377. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  59378. # ifdef SIGSETXID
  59379. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  59380. + || unlikely (__sigismember (set, SIGSETXID))
  59381. # endif
  59382. ))
  59383. {
  59384. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigqueue.c uClibc/libc/sysdeps/linux/common/sigqueue.c
  59385. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigqueue.c 2012-05-15 09:20:09.000000000 +0200
  59386. +++ uClibc/libc/sysdeps/linux/common/sigqueue.c 2014-02-03 12:32:56.000000000 +0100
  59387. @@ -12,41 +12,35 @@
  59388. Lesser General Public License for more details.
  59389. You should have received a copy of the GNU Lesser General Public
  59390. - License along with the GNU C Library; if not, write to the Free
  59391. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59392. - 02111-1307 USA. */
  59393. -
  59394. -#include <errno.h>
  59395. -#include <signal.h>
  59396. -#include <unistd.h>
  59397. -#include <string.h>
  59398. + License along with the GNU C Library; if not, see
  59399. + <http://www.gnu.org/licenses/>. */
  59400. #include <sys/syscall.h>
  59401. -#if defined __USE_POSIX199309
  59402. +#if defined __NR_rt_sigqueueinfo && defined __USE_POSIX199309
  59403. +# include <signal.h>
  59404. +# include <unistd.h>
  59405. +# include <string.h>
  59406. -#ifdef __NR_rt_sigqueueinfo
  59407. -
  59408. -# define __NR___libc_rt_sigqueueinfo __NR_rt_sigqueueinfo
  59409. -static __inline__ _syscall3(int, __libc_rt_sigqueueinfo, pid_t, pid, int, sig, void*, value)
  59410. +# define __NR___syscall_rt_sigqueueinfo __NR_rt_sigqueueinfo
  59411. +static __always_inline _syscall3(int, __syscall_rt_sigqueueinfo, pid_t, pid, int, sig, void*, value)
  59412. /* Return any pending signal or wait for one for the given time. */
  59413. int sigqueue (pid_t pid, int sig, const union sigval val)
  59414. {
  59415. - siginfo_t info;
  59416. + siginfo_t info;
  59417. - /* First, clear the siginfo_t structure, so that we don't pass our
  59418. - stack content to other tasks. */
  59419. - memset (&info, 0, sizeof (siginfo_t));
  59420. - /* We must pass the information about the data in a siginfo_t value. */
  59421. - info.si_signo = sig;
  59422. - info.si_code = SI_QUEUE;
  59423. - info.si_pid = getpid ();
  59424. - info.si_uid = getuid ();
  59425. - info.si_value = val;
  59426. + /* First, clear the siginfo_t structure, so that we don't pass our
  59427. + stack content to other tasks. */
  59428. + memset(&info, 0, sizeof(info));
  59429. + /* We must pass the information about the data in a siginfo_t value. */
  59430. + info.si_signo = sig;
  59431. + info.si_code = SI_QUEUE;
  59432. + info.si_pid = getpid ();
  59433. + info.si_uid = getuid ();
  59434. + info.si_value = val;
  59435. - return __libc_rt_sigqueueinfo(pid, sig, &info);
  59436. + return __syscall_rt_sigqueueinfo(pid, sig, &info);
  59437. }
  59438. #endif
  59439. -#endif
  59440. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigsuspend.c uClibc/libc/sysdeps/linux/common/sigsuspend.c
  59441. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  59442. +++ uClibc/libc/sysdeps/linux/common/sigsuspend.c 2014-02-03 12:32:56.000000000 +0100
  59443. @@ -9,51 +9,18 @@
  59444. #include <sys/syscall.h>
  59445. -#if defined __USE_POSIX
  59446. +#ifdef __USE_POSIX
  59447. #include <signal.h>
  59448. -#undef sigsuspend
  59449. +#include <cancel.h>
  59450. -libc_hidden_proto(sigsuspend)
  59451. -
  59452. -#ifdef __NR_rt_sigsuspend
  59453. -# define __NR___rt_sigsuspend __NR_rt_sigsuspend
  59454. -
  59455. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  59456. -# include <errno.h>
  59457. -# include <sysdep-cancel.h>
  59458. -
  59459. -/* Change the set of blocked signals to SET,
  59460. - wait until a signal arrives, and restore the set of blocked signals. */
  59461. -int sigsuspend (const sigset_t *set)
  59462. +int __NC(sigsuspend)(const sigset_t *set)
  59463. {
  59464. - if (SINGLE_THREAD_P)
  59465. - return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
  59466. -
  59467. - int oldtype = LIBC_CANCEL_ASYNC ();
  59468. -
  59469. - int result = INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
  59470. -
  59471. - LIBC_CANCEL_RESET (oldtype);
  59472. -
  59473. - return result;
  59474. -}
  59475. -# else
  59476. -static inline _syscall2(int, __rt_sigsuspend, const sigset_t *, mask, size_t, size)
  59477. -
  59478. -int sigsuspend(const sigset_t * mask)
  59479. -{
  59480. - return __rt_sigsuspend(mask, _NSIG / 8);
  59481. -}
  59482. -# endif
  59483. +#ifdef __NR_rt_sigsuspend
  59484. + return INLINE_SYSCALL(rt_sigsuspend, 2, set, __SYSCALL_SIGSET_T_SIZE);
  59485. #else
  59486. -# define __NR___syscall_sigsuspend __NR_sigsuspend
  59487. -static __inline__ _syscall3(int, __syscall_sigsuspend, int, a, unsigned long int, b,
  59488. - unsigned long int, c)
  59489. -
  59490. -int sigsuspend(const sigset_t * set)
  59491. -{
  59492. - return __syscall_sigsuspend(0, 0, set->__val[0]);
  59493. -}
  59494. + return INLINE_SYSCALL(sigsuspend, 3, 0, 0, set->__val[0]);
  59495. #endif
  59496. -libc_hidden_def(sigsuspend)
  59497. +}
  59498. +CANCELLABLE_SYSCALL(int, sigsuspend, (const sigset_t *set), (set))
  59499. +lt_libc_hidden(sigsuspend)
  59500. #endif
  59501. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__socketcall.c uClibc/libc/sysdeps/linux/common/__socketcall.c
  59502. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__socketcall.c 2012-05-15 09:20:09.000000000 +0200
  59503. +++ uClibc/libc/sysdeps/linux/common/__socketcall.c 2014-02-03 12:32:56.000000000 +0100
  59504. @@ -8,8 +8,18 @@
  59505. */
  59506. #include <sys/syscall.h>
  59507. +
  59508. +/* At the time of this writing,
  59509. + * several arches provide the individual calls and do _not_ go through
  59510. + * this demuxer.
  59511. + *
  59512. + * Verify all arches supported by your kernel before you remove the
  59513. + * guard below!
  59514. + */
  59515. #ifdef __NR_socketcall
  59516. +#include <sys/socket.h>
  59517. +
  59518. #define __NR___socketcall __NR_socketcall
  59519. -int __socketcall(int __call, unsigned long *__args) attribute_hidden;
  59520. _syscall2(int, __socketcall, int, call, unsigned long *, args)
  59521. +
  59522. #endif
  59523. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/splice.c uClibc/libc/sysdeps/linux/common/splice.c
  59524. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/splice.c 2012-05-15 09:20:09.000000000 +0200
  59525. +++ uClibc/libc/sysdeps/linux/common/splice.c 2014-02-03 12:32:56.000000000 +0100
  59526. @@ -8,9 +8,10 @@
  59527. */
  59528. #include <sys/syscall.h>
  59529. -#include <fcntl.h>
  59530. -#ifdef __NR_splice
  59531. -_syscall6(ssize_t, splice, int, __fdin, __off64_t *, __offin, int, __fdout,
  59532. - __off64_t *, __offout, size_t, __len, unsigned int, __flags)
  59533. +#if defined __NR_splice && defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  59534. +# include <fcntl.h>
  59535. +
  59536. +_syscall6(ssize_t, splice, int, __fdin, off64_t *, __offin, int, __fdout,
  59537. + off64_t *, __offout, size_t, __len, unsigned int, __flags)
  59538. #endif
  59539. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp.c uClibc/libc/sysdeps/linux/common/ssp.c
  59540. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp.c 2012-05-15 09:20:09.000000000 +0200
  59541. +++ uClibc/libc/sysdeps/linux/common/ssp.c 2014-02-03 12:32:56.000000000 +0100
  59542. @@ -20,103 +20,113 @@
  59543. #error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
  59544. #endif
  59545. +#include <string.h>
  59546. +#include <unistd.h>
  59547. +#include <signal.h>
  59548. +#ifdef __UCLIBC_HAS_SYSLOG__
  59549. +#include <sys/syslog.h>
  59550. +#endif
  59551. +
  59552. #ifdef __PROPOLICE_BLOCK_SEGV__
  59553. # define SSP_SIGTYPE SIGSEGV
  59554. #else
  59555. # define SSP_SIGTYPE SIGABRT
  59556. #endif
  59557. -#include <string.h>
  59558. -#include <unistd.h>
  59559. -#include <signal.h>
  59560. -#if defined __UCLIBC_HAS_SYSLOG__
  59561. -#include <sys/syslog.h>
  59562. +static void do_write(const char *msg)
  59563. +{
  59564. + /* could use inlined syscall here to be sure ... */
  59565. + return (void) write(STDERR_FILENO, msg, strlen(msg));
  59566. +}
  59567. +static void __cold do_msg(const char *msg1, const char *msg2, const char *msg3)
  59568. +{
  59569. + do_write(msg1);
  59570. + do_write(msg2);
  59571. + do_write(msg3);
  59572. + do_write("\n");
  59573. +#ifdef __UCLIBC_HAS_SYSLOG__
  59574. + syslog(LOG_INFO, "%s%s%s()", msg1, msg2, msg3);
  59575. #endif
  59576. +}
  59577. -
  59578. -static void block_signals(void)
  59579. +static void __cold attribute_noreturn
  59580. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  59581. +ssp_handler(char func[])
  59582. +#else
  59583. +ssp_handler(void)
  59584. +#endif
  59585. {
  59586. + pid_t pid;
  59587. + static const char msg_ssd[] = "*** stack smashing detected ***: ";
  59588. + static const char msg_terminated[] = " terminated";
  59589. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  59590. + static const char msg_ssa[] = ": stack smashing attack in function ";
  59591. +#endif
  59592. +
  59593. +#ifdef __DODEBUG__
  59594. struct sigaction sa;
  59595. sigset_t mask;
  59596. __sigfillset(&mask);
  59597. __sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */
  59598. sigprocmask(SIG_BLOCK, &mask, NULL); /* except SSP_SIGTYPE */
  59599. +#endif
  59600. +
  59601. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  59602. + if (func != NULL)
  59603. + do_msg(__uclibc_progname, msg_ssa, func);
  59604. + else
  59605. +#endif
  59606. + do_msg(msg_ssd, __uclibc_progname, msg_terminated);
  59607. + pid = getpid();
  59608. +#ifdef __DODEBUG__
  59609. /* Make the default handler associated with the signal handler */
  59610. memset(&sa, 0, sizeof(sa));
  59611. __sigfillset(&sa.sa_mask); /* Block all signals */
  59612. if (SIG_DFL) /* if it's constant zero, it's already done */
  59613. sa.sa_handler = SIG_DFL;
  59614. - sigaction(SSP_SIGTYPE, &sa, NULL);
  59615. -}
  59616. -
  59617. -static void __cold ssp_write(int fd, const char *msg1, const char *msg2, const char *msg3)
  59618. -{
  59619. - write(fd, msg1, strlen(msg1));
  59620. - write(fd, msg2, strlen(msg2));
  59621. - write(fd, msg3, strlen(msg3));
  59622. - write(fd, "()\n", 3);
  59623. -#if defined __UCLIBC_HAS_SYSLOG__
  59624. - openlog("ssp", LOG_CONS | LOG_PID, LOG_USER);
  59625. - syslog(LOG_INFO, "%s%s%s()", msg1, msg2, msg3);
  59626. - closelog();
  59627. + if (sigaction(SSP_SIGTYPE, &sa, NULL) == 0)
  59628. + (void)kill(pid, SSP_SIGTYPE);
  59629. #endif
  59630. -}
  59631. -
  59632. -static attribute_noreturn void terminate(void)
  59633. -{
  59634. - (void) kill(getpid(), SSP_SIGTYPE);
  59635. - _exit(127);
  59636. + (void)kill(pid, SIGKILL);
  59637. + /* The loop is added only to keep gcc happy. */
  59638. + while(1)
  59639. + _exit(127);
  59640. }
  59641. #ifdef __UCLIBC_HAS_SSP_COMPAT__
  59642. -void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))) attribute_noreturn __cold;
  59643. -void __stack_smash_handler(char func[], int damaged)
  59644. +void __stack_smash_handler(char func[], int damaged) attribute_noreturn __cold;
  59645. +void __stack_smash_handler(char func[], int damaged attribute_unused)
  59646. {
  59647. - static const char message[] = ": stack smashing attack in function ";
  59648. -
  59649. - block_signals();
  59650. -
  59651. - ssp_write(STDERR_FILENO, __uclibc_progname, message, func);
  59652. -
  59653. - /* The loop is added only to keep gcc happy. */
  59654. - while(1)
  59655. - terminate();
  59656. + ssp_handler(func);
  59657. }
  59658. -#endif
  59659. -#ifdef __UCLIBC_HAS_SSP__
  59660. -void __stack_chk_fail(void) attribute_noreturn __cold;
  59661. void __stack_chk_fail(void)
  59662. {
  59663. - static const char msg1[] = "stack smashing detected: ";
  59664. - static const char msg3[] = " terminated";
  59665. -
  59666. - block_signals();
  59667. -
  59668. - ssp_write(STDERR_FILENO, msg1, __uclibc_progname, msg3);
  59669. -
  59670. - /* The loop is added only to keep gcc happy. */
  59671. - while(1)
  59672. - terminate();
  59673. + ssp_handler(NULL);
  59674. }
  59675. +#else
  59676. +strong_alias(ssp_handler,__stack_chk_fail)
  59677. #endif
  59678. #ifdef __UCLIBC_HAS_FORTIFY__
  59679. +/* should be redone when activated to use common code above.
  59680. + * for now, it works without debugging support */
  59681. void __chk_fail(void)
  59682. {
  59683. - static const char msg1[] = "buffer overflow detected: ";
  59684. - static const char msg3[] = " terminated";
  59685. -
  59686. - block_signals();
  59687. + static const char msg_fail[] = "*** buffer overflow detected ***: ";
  59688. + static const char msg_terminated[] = " terminated";
  59689. + pid_t pid;
  59690. - ssp_write(STDERR_FILENO, msg1, __uclibc_progname, msg3);
  59691. + do_msg(msg_fail, __uclibc_progname, msg_terminated);
  59692. + pid = getpid();
  59693. + (void)kill(pid, SIGKILL);
  59694. /* The loop is added only to keep gcc happy. */
  59695. while(1)
  59696. - terminate();
  59697. + _exit(127);
  59698. }
  59699. libc_hidden_def(__chk_fail)
  59700. #endif
  59701. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp-local.c uClibc/libc/sysdeps/linux/common/ssp-local.c
  59702. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp-local.c 2012-05-15 09:20:09.000000000 +0200
  59703. +++ uClibc/libc/sysdeps/linux/common/ssp-local.c 2014-02-03 12:32:56.000000000 +0100
  59704. @@ -12,18 +12,19 @@
  59705. Lesser General Public License for more details.
  59706. You should have received a copy of the GNU Lesser General Public
  59707. - License along with the GNU C Library; if not, write to the Free
  59708. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59709. - 02111-1307 USA. */
  59710. + License along with the GNU C Library; if not, see
  59711. + <http://www.gnu.org/licenses/>. */
  59712. /*
  59713. * Peter S. Mazinger ps.m[@]gmx.net
  59714. * copied stack_chk_fail_local.c from glibc and adapted for uClibc
  59715. */
  59716. -#include <features.h>
  59717. +#if defined __SSP__ || defined __SSP_ALL__
  59718. +# error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
  59719. +#endif
  59720. -extern void __stack_chk_fail (void) attribute_noreturn;
  59721. +#include <features.h>
  59722. /* On some architectures, this helps needless PIC pointer setup
  59723. that would be needed just for the __stack_chk_fail call. */
  59724. @@ -31,5 +32,5 @@
  59725. void __stack_chk_fail_local (void) attribute_noreturn attribute_hidden;
  59726. void __stack_chk_fail_local (void)
  59727. {
  59728. - __stack_chk_fail ();
  59729. + __stack_chk_fail ();
  59730. }
  59731. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stat64.c uClibc/libc/sysdeps/linux/common/stat64.c
  59732. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stat64.c 2012-05-15 09:20:09.000000000 +0200
  59733. +++ uClibc/libc/sysdeps/linux/common/stat64.c 2014-02-03 12:32:56.000000000 +0100
  59734. @@ -7,17 +7,28 @@
  59735. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59736. */
  59737. +#include <_lfs_64.h>
  59738. #include <sys/syscall.h>
  59739. #include <sys/stat.h>
  59740. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_stat64
  59741. +#if defined __UCLIBC_HAS_LFS__
  59742. -# define __NR___syscall_stat64 __NR_stat64
  59743. +# if defined __NR_fstatat64 && !defined __NR_stat64
  59744. +# include <fcntl.h>
  59745. # include <unistd.h>
  59746. -# include "xstatconv.h"
  59747. -static __inline__ _syscall2(int, __syscall_stat64,
  59748. - const char *, file_name, struct kernel_stat64 *, buf)
  59749. +int stat64(const char *file_name, struct stat64 *buf)
  59750. +{
  59751. + return fstatat64(AT_FDCWD, file_name, buf, 0);
  59752. +}
  59753. +libc_hidden_def(stat64)
  59754. +
  59755. +/* For systems which have both, prefer the old one */
  59756. +# elif defined __NR_stat64
  59757. +# define __NR___syscall_stat64 __NR_stat64
  59758. +# include "xstatconv.h"
  59759. +static __always_inline _syscall2(int, __syscall_stat64,
  59760. + const char *, file_name, struct kernel_stat64 *, buf)
  59761. int stat64(const char *file_name, struct stat64 *buf)
  59762. {
  59763. @@ -31,4 +42,6 @@
  59764. return result;
  59765. }
  59766. libc_hidden_def(stat64)
  59767. -#endif
  59768. +# endif
  59769. +
  59770. +#endif /* __UCLIBC_HAS_LFS__ */
  59771. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stat.c uClibc/libc/sysdeps/linux/common/stat.c
  59772. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stat.c 2012-05-15 09:20:09.000000000 +0200
  59773. +++ uClibc/libc/sysdeps/linux/common/stat.c 2014-02-03 12:32:56.000000000 +0100
  59774. @@ -10,14 +10,24 @@
  59775. #include <sys/syscall.h>
  59776. #include <unistd.h>
  59777. #include <sys/stat.h>
  59778. -#include "xstatconv.h"
  59779. #undef stat
  59780. +#if defined __NR_fstatat64 && !defined __NR_stat
  59781. +# include <fcntl.h>
  59782. +
  59783. +int stat(const char *file_name, struct stat *buf)
  59784. +{
  59785. + return fstatat(AT_FDCWD, file_name, buf, 0);
  59786. +}
  59787. +
  59788. +#else
  59789. +# include "xstatconv.h"
  59790. +
  59791. int stat(const char *file_name, struct stat *buf)
  59792. {
  59793. int result;
  59794. -#ifdef __NR_stat64
  59795. +# ifdef __NR_stat64
  59796. /* normal stat call has limited values for various stat elements
  59797. * e.g. uid device major/minor etc.
  59798. * so we use 64 variant if available
  59799. @@ -28,19 +38,21 @@
  59800. if (result == 0) {
  59801. __xstat32_conv(&kbuf, buf);
  59802. }
  59803. -#else
  59804. +# else
  59805. struct kernel_stat kbuf;
  59806. result = INLINE_SYSCALL(stat, 2, file_name, &kbuf);
  59807. if (result == 0) {
  59808. __xstat_conv(&kbuf, buf);
  59809. }
  59810. -#endif
  59811. +# endif /* __NR_stat64 */
  59812. return result;
  59813. }
  59814. +#endif /* __NR_fstat64 */
  59815. libc_hidden_def(stat)
  59816. -#if ! defined __NR_stat64 && defined __UCLIBC_HAS_LFS__
  59817. +#if ! defined __NR_stat64 && ! defined __NR_fstatat64 && \
  59818. + defined __UCLIBC_HAS_LFS__
  59819. strong_alias_untyped(stat,stat64)
  59820. libc_hidden_def(stat64)
  59821. #endif
  59822. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/statfs.c uClibc/libc/sysdeps/linux/common/statfs.c
  59823. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/statfs.c 2012-05-15 09:20:09.000000000 +0200
  59824. +++ uClibc/libc/sysdeps/linux/common/statfs.c 2014-02-03 12:32:56.000000000 +0100
  59825. @@ -13,10 +13,39 @@
  59826. #include <sys/vfs.h>
  59827. extern __typeof(statfs) __libc_statfs attribute_hidden;
  59828. -#define __NR___libc_statfs __NR_statfs
  59829. +
  59830. +#if defined __NR_statfs64 && !defined __NR_statfs
  59831. +
  59832. +int __libc_statfs(const char *path, struct statfs *buf)
  59833. +{
  59834. + int err = INLINE_SYSCALL(statfs64, 3, path, sizeof(*buf), buf);
  59835. +
  59836. + if (err == 0) {
  59837. + /* Did we overflow? */
  59838. + if (buf->__pad1 || buf->__pad2 || buf->__pad3 ||
  59839. + buf->__pad4 || buf->__pad5) {
  59840. + __set_errno(EOVERFLOW);
  59841. + return -1;
  59842. + }
  59843. + }
  59844. +
  59845. + return err;
  59846. +}
  59847. +# if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59848. +/* statfs is used by NPTL, so it must exported in case */
  59849. +weak_alias(__libc_statfs, statfs)
  59850. +# endif
  59851. +
  59852. +/* For systems which have both, prefer the old one */
  59853. +#else
  59854. +
  59855. +# define __NR___libc_statfs __NR_statfs
  59856. _syscall2(int, __libc_statfs, const char *, path, struct statfs *, buf)
  59857. -#if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59858. +# if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59859. /* statfs is used by NPTL, so it must exported in case */
  59860. -weak_alias(__libc_statfs,statfs)
  59861. +weak_alias(__libc_statfs, statfs)
  59862. +# endif
  59863. +
  59864. #endif
  59865. +libc_hidden_def(statfs)
  59866. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stime.c uClibc/libc/sysdeps/linux/common/stime.c
  59867. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stime.c 2012-05-15 09:20:09.000000000 +0200
  59868. +++ uClibc/libc/sysdeps/linux/common/stime.c 2014-02-03 12:32:56.000000000 +0100
  59869. @@ -8,15 +8,17 @@
  59870. */
  59871. #include <sys/syscall.h>
  59872. -#include <time.h>
  59873. -#include <sys/time.h>
  59874. #ifdef __USE_SVID
  59875. -#ifdef __NR_stime
  59876. +# include <time.h>
  59877. +# ifdef __NR_stime
  59878. _syscall1(int, stime, const time_t *, t)
  59879. -#else
  59880. -
  59881. -int stime(const time_t * when)
  59882. +# elif defined __USE_BSD && defined __NR_settimeofday
  59883. +# define __need_NULL
  59884. +# include <stddef.h>
  59885. +# include <errno.h>
  59886. +# include <sys/time.h>
  59887. +int stime(const time_t *when)
  59888. {
  59889. struct timeval tv;
  59890. @@ -28,5 +30,8 @@
  59891. tv.tv_usec = 0;
  59892. return settimeofday(&tv, (struct timezone *) 0);
  59893. }
  59894. -#endif
  59895. +# endif
  59896. +# if defined __NR_stime || (defined __USE_BSD && defined __NR_settimeofday)
  59897. +libc_hidden_def(stime)
  59898. +# endif
  59899. #endif
  59900. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stubs.c uClibc/libc/sysdeps/linux/common/stubs.c
  59901. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stubs.c 2012-05-15 09:20:09.000000000 +0200
  59902. +++ uClibc/libc/sysdeps/linux/common/stubs.c 2014-02-03 12:32:56.000000000 +0100
  59903. @@ -6,31 +6,52 @@
  59904. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59905. */
  59906. +/* Please keep the list sorted alphabetically, in ascending order
  59907. + * of the stub name! */
  59908. +
  59909. #include <errno.h>
  59910. #include <bits/wordsize.h>
  59911. #include <sys/syscall.h>
  59912. #ifdef __UCLIBC_HAS_STUBS__
  59913. -static int enosys_stub(void) __attribute_used__;
  59914. -static int enosys_stub(void)
  59915. +__attribute_used__ static int enosys_stub(void)
  59916. {
  59917. __set_errno(ENOSYS);
  59918. return -1;
  59919. }
  59920. +__attribute_used__ static int ret_enosys_stub(void)
  59921. +{
  59922. + return ENOSYS;
  59923. +}
  59924. +
  59925. #define make_stub(stub) \
  59926. link_warning(stub, #stub ": this function is not implemented") \
  59927. strong_alias(enosys_stub, stub)
  59928. +#define make_ret_stub(stub) \
  59929. + link_warning(stub, #stub ": this function is not implemented") \
  59930. + strong_alias(ret_enosys_stub, stub)
  59931. +
  59932. #ifndef __ARCH_USE_MMU__
  59933. # undef __NR_fork
  59934. #endif
  59935. -#ifndef __UCLIBC_HAS_LFS__
  59936. -# undef __NR_fadvise64
  59937. -# undef __NR_fadvise64_64
  59938. -# undef __NR_sync_file_range
  59939. +#ifdef __arm__
  59940. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  59941. +# define __NR_fadvise64 __NR_arm_fadvise64_64
  59942. +/* ARM always provides funcs w/out syscalls; disable the stubs */
  59943. +# define __NR_ioperm 0
  59944. +# define __NR_iopl 0
  59945. +#endif
  59946. +
  59947. +#ifdef __mips__
  59948. +# define __NR_fadvise64_64 __NR_fadvise64
  59949. +#endif
  59950. +
  59951. +#ifdef __xtensa__
  59952. +# define __NR_fadvise64 __NR_fadvise64_64
  59953. #endif
  59954. #if !defined __NR_accept && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  59955. @@ -45,14 +66,6 @@
  59956. make_stub(arch_prctl)
  59957. #endif
  59958. -#if !defined __NR_capget && defined __UCLIBC_LINUX_SPECIFIC__
  59959. -make_stub(capget)
  59960. -#endif
  59961. -
  59962. -#if !defined __NR_capset && defined __UCLIBC_LINUX_SPECIFIC__
  59963. -make_stub(capset)
  59964. -#endif
  59965. -
  59966. #if !defined __NR_bdflush && defined __UCLIBC_LINUX_SPECIFIC__
  59967. make_stub(bdflush)
  59968. #endif
  59969. @@ -61,11 +74,11 @@
  59970. make_stub(bind)
  59971. #endif
  59972. -#ifndef __NR_capget
  59973. +#if !defined __NR_capget && defined __UCLIBC_LINUX_SPECIFIC__
  59974. make_stub(capget)
  59975. #endif
  59976. -#ifndef __NR_capset
  59977. +#if !defined __NR_capset && defined __UCLIBC_LINUX_SPECIFIC__
  59978. make_stub(capset)
  59979. #endif
  59980. @@ -81,38 +94,44 @@
  59981. make_stub(delete_module)
  59982. #endif
  59983. -#ifndef __NR_epoll_create
  59984. +#if !defined __NR_epoll_create && defined __UCLIBC_HAS_EPOLL__ \
  59985. + && !defined __NR_epoll_create1
  59986. make_stub(epoll_create)
  59987. #endif
  59988. -#ifndef __NR_epoll_ctl
  59989. +#if !defined __NR_epoll_ctl && defined __UCLIBC_HAS_EPOLL__
  59990. make_stub(epoll_ctl)
  59991. #endif
  59992. -#ifndef __NR_epoll_wait
  59993. +#if !defined __NR_epoll_pwait && defined __UCLIBC_HAS_EPOLL__
  59994. +make_stub(epoll_pwait)
  59995. +#endif
  59996. +
  59997. +#if !defined __NR_epoll_wait && defined __UCLIBC_HAS_EPOLL__ \
  59998. + && !defined __NR_epoll_pwait
  59999. make_stub(epoll_wait)
  60000. #endif
  60001. -#if !defined __NR_eventfd && defined __UCLIBC_LINUX_SPECIFIC__
  60002. +#if !defined __NR_eventfd && !defined __NR_eventfd2 && defined __UCLIBC_LINUX_SPECIFIC__
  60003. make_stub(eventfd)
  60004. #endif
  60005. -#ifndef __NR_fdatasync
  60006. +#if !defined __NR_fdatasync && !defined __NR_osf_fdatasync
  60007. make_stub(fdatasync)
  60008. #endif
  60009. +#ifndef __NR_fgetxattr
  60010. +make_stub(fgetxattr)
  60011. +#endif
  60012. +
  60013. #ifndef __NR_flistxattr
  60014. make_stub(flistxattr)
  60015. #endif
  60016. -#ifndef __NR_fork
  60017. +#if !defined __NR_fork && !defined __NR_clone
  60018. make_stub(fork)
  60019. #endif
  60020. -#ifndef __NR_fgetxattr
  60021. -make_stub(fgetxattr)
  60022. -#endif
  60023. -
  60024. #ifndef __NR_fremovexattr
  60025. make_stub(fremovexattr)
  60026. #endif
  60027. @@ -121,7 +140,8 @@
  60028. make_stub(fsetxattr)
  60029. #endif
  60030. -#if !defined __NR_fstatfs && defined __UCLIBC_LINUX_SPECIFIC__
  60031. +#if !defined __NR_fstatfs && !defined __NR_fstatfs64 \
  60032. + && defined __UCLIBC_LINUX_SPECIFIC__
  60033. make_stub(fstatfs)
  60034. #endif
  60035. @@ -129,10 +149,6 @@
  60036. make_stub(get_kernel_syms)
  60037. #endif
  60038. -#if !defined __NR_getcpu && defined __UCLIBC_LINUX_SPECIFIC__ && ((defined __x86_64__ && !defined __UCLIBC_HAS_TLS__) || !defined __x86_64__)
  60039. -make_stub(sched_getcpu)
  60040. -#endif
  60041. -
  60042. #if !defined __NR_getpeername && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  60043. make_stub(getpeername)
  60044. #endif
  60045. @@ -157,7 +173,12 @@
  60046. make_stub(init_module)
  60047. #endif
  60048. -#if !defined __NR_inotify_init && defined __UCLIBC_LINUX_SPECIFIC__
  60049. +#if !defined __NR_inotify_add_watch && defined __UCLIBC_LINUX_SPECIFIC__
  60050. +make_stub(inotify_add_watch)
  60051. +#endif
  60052. +
  60053. +#if !defined __NR_inotify_init && defined __UCLIBC_LINUX_SPECIFIC__ \
  60054. + && !defined __NR_inotify_init1
  60055. make_stub(inotify_init)
  60056. #endif
  60057. @@ -165,19 +186,15 @@
  60058. make_stub(inotify_init1)
  60059. #endif
  60060. -#if !defined __NR_inotify_add_watch && defined __UCLIBC_LINUX_SPECIFIC__
  60061. -make_stub(inotify_add_watch)
  60062. -#endif
  60063. -
  60064. #if !defined __NR_inotify_rm_watch && defined __UCLIBC_LINUX_SPECIFIC__
  60065. make_stub(inotify_rm_watch)
  60066. #endif
  60067. -#if !defined __NR_ioperm && defined __UCLIBC_LINUX_SPECIFIC__ && !defined __arm__
  60068. +#if !defined __NR_ioperm && defined __UCLIBC_LINUX_SPECIFIC__
  60069. make_stub(ioperm)
  60070. #endif
  60071. -#if !defined __NR_iopl && defined __UCLIBC_LINUX_SPECIFIC__ && !defined __arm__
  60072. +#if !defined __NR_iopl && defined __UCLIBC_LINUX_SPECIFIC__
  60073. make_stub(iopl)
  60074. #endif
  60075. @@ -213,6 +230,13 @@
  60076. make_stub(modify_ldt)
  60077. #endif
  60078. +#ifndef __NR_openat
  60079. +make_stub(openat)
  60080. +# ifdef __UCLIBC_HAS_LFS__
  60081. +make_stub(openat64)
  60082. +# endif
  60083. +#endif
  60084. +
  60085. #if !defined __NR_personality && defined __UCLIBC_LINUX_SPECIFIC__
  60086. make_stub(personality)
  60087. #endif
  60088. @@ -225,6 +249,18 @@
  60089. make_stub(pivot_root)
  60090. #endif
  60091. +#if !defined __NR_fadvise64 && defined __UCLIBC_HAS_LFS__
  60092. +make_ret_stub(posix_fadvise)
  60093. +#endif
  60094. +
  60095. +#if !defined __NR_fadvise64_64 && defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  60096. +make_ret_stub(posix_fadvise64)
  60097. +#endif
  60098. +
  60099. +#ifndef __NR_madvise
  60100. +make_ret_stub(posix_madvise)
  60101. +#endif
  60102. +
  60103. #if !defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__
  60104. make_stub(ppoll)
  60105. #endif
  60106. @@ -233,6 +269,10 @@
  60107. make_stub(prctl)
  60108. #endif
  60109. +#if !defined __NR_query_module && defined __UCLIBC_LINUX_MODULE_24__
  60110. +make_stub(query_module)
  60111. +#endif
  60112. +
  60113. #if !defined __NR_readahead && defined __UCLIBC_LINUX_SPECIFIC__
  60114. make_stub(readahead)
  60115. #endif
  60116. @@ -241,10 +281,6 @@
  60117. make_stub(reboot)
  60118. #endif
  60119. -#if !defined __NR_query_module && defined __UCLIBC_LINUX_MODULE_24__
  60120. -make_stub(query_module)
  60121. -#endif
  60122. -
  60123. #if !defined __NR_recv && !defined __NR_socketcall && !defined __NR_recvfrom && defined __UCLIBC_HAS_SOCKET__
  60124. make_stub(recv)
  60125. #endif
  60126. @@ -265,10 +301,18 @@
  60127. make_stub(removexattr)
  60128. #endif
  60129. +#ifndef __NR_renameat
  60130. +make_stub(renameat)
  60131. +#endif
  60132. +
  60133. #if !defined __NR_sched_getaffinity && defined __UCLIBC_LINUX_SPECIFIC__
  60134. make_stub(sched_getaffinity)
  60135. #endif
  60136. +#if !defined __NR_getcpu && defined __UCLIBC_LINUX_SPECIFIC__ && ((defined __x86_64__ && !defined __UCLIBC_HAS_TLS__) || !defined __x86_64__)
  60137. +make_stub(sched_getcpu)
  60138. +#endif
  60139. +
  60140. #if !defined __NR_sched_setaffinity && defined __UCLIBC_LINUX_SPECIFIC__
  60141. make_stub(sched_setaffinity)
  60142. #endif
  60143. @@ -277,7 +321,8 @@
  60144. make_stub(send)
  60145. #endif
  60146. -#if !defined __NR_sendfile && defined __UCLIBC_LINUX_SPECIFIC__
  60147. +#if !defined __NR_sendfile && !defined __NR_sendfile64 \
  60148. + && defined __UCLIBC_LINUX_SPECIFIC__
  60149. make_stub(sendfile)
  60150. #endif
  60151. @@ -325,6 +370,15 @@
  60152. make_stub(signalfd)
  60153. #endif
  60154. +#ifndef __NR_rt_sigtimedwait
  60155. +make_stub(sigtimedwait)
  60156. +make_stub(sigwaitinfo)
  60157. +#endif
  60158. +
  60159. +#ifndef __NR_rt_sigqueueinfo
  60160. +make_stub(sigqueue)
  60161. +#endif
  60162. +
  60163. #if !defined __NR_socket && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  60164. make_stub(socket)
  60165. #endif
  60166. @@ -337,9 +391,9 @@
  60167. make_stub(socketpair)
  60168. #endif
  60169. -#ifndef __NR_rt_sigtimedwait
  60170. -make_stub(sigtimedwait)
  60171. -make_stub(sigwaitinfo)
  60172. +#if !defined __NR_stime && !defined __NR_settimeofday
  60173. +make_stub(stime)
  60174. +make_stub(settimeofday)
  60175. #endif
  60176. #if !defined __NR_splice && defined __UCLIBC_LINUX_SPECIFIC__
  60177. @@ -354,6 +408,10 @@
  60178. make_stub(swapon)
  60179. #endif
  60180. +#if !defined __NR_symlink && !defined __NR_symlinkat
  60181. +make_stub(symlink)
  60182. +#endif
  60183. +
  60184. #if !defined __NR_sync_file_range && defined __UCLIBC_LINUX_SPECIFIC__
  60185. make_stub(sync_file_range)
  60186. #endif
  60187. @@ -382,6 +440,21 @@
  60188. make_stub(timerfd_gettime)
  60189. #endif
  60190. +#ifndef __NR_utimensat
  60191. +make_stub(futimens)
  60192. +make_stub(utimensat)
  60193. +# ifndef __NR_lutimes
  60194. +make_stub(lutimes)
  60195. +# endif
  60196. +#endif
  60197. +
  60198. +#ifndef __NR_utimensat
  60199. +#if !defined __NR_utime && !defined __NR_utimes
  60200. +/*make_stub(utime) obsoleted */
  60201. +make_stub(utimes)
  60202. +#endif
  60203. +#endif
  60204. +
  60205. #if !defined __NR_umount && !defined __NR_umount2 && defined __UCLIBC_LINUX_SPECIFIC__
  60206. make_stub(umount)
  60207. #endif
  60208. @@ -394,19 +467,15 @@
  60209. make_stub(unshare)
  60210. #endif
  60211. -#ifndef __NR_utimensat
  60212. -make_stub(futimens)
  60213. -make_stub(utimensat)
  60214. -# ifndef __NR_lutimes
  60215. -make_stub(lutimes)
  60216. -# endif
  60217. +#if defined __UCLIBC_SV4_DEPRECATED__ && !defined __NR_ustat
  60218. +make_stub(ustat)
  60219. #endif
  60220. #if !defined __NR_vhangup && defined __UCLIBC_LINUX_SPECIFIC__
  60221. make_stub(vhangup)
  60222. #endif
  60223. -#ifndef __NR_vmsplice
  60224. +#if !defined __NR_vmsplice && defined __UCLIBC_LINUX_SPECIFIC__
  60225. make_stub(vmsplice)
  60226. #endif
  60227. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/symlinkat.c uClibc/libc/sysdeps/linux/common/symlinkat.c
  60228. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/symlinkat.c 2012-05-15 09:20:09.000000000 +0200
  60229. +++ uClibc/libc/sysdeps/linux/common/symlinkat.c 2014-02-03 12:32:56.000000000 +0100
  60230. @@ -11,6 +11,7 @@
  60231. #ifdef __NR_symlinkat
  60232. _syscall3(int, symlinkat, const char *, from, int, tofd, const char *, to)
  60233. +libc_hidden_def(symlinkat)
  60234. #else
  60235. /* should add emulation with symlink() and /proc/self/fd/ ... */
  60236. #endif
  60237. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/symlink.c uClibc/libc/sysdeps/linux/common/symlink.c
  60238. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/symlink.c 2012-05-15 09:20:09.000000000 +0200
  60239. +++ uClibc/libc/sysdeps/linux/common/symlink.c 2014-02-03 12:32:56.000000000 +0100
  60240. @@ -9,6 +9,19 @@
  60241. #include <sys/syscall.h>
  60242. #if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
  60243. -#include <unistd.h>
  60244. +# include <unistd.h>
  60245. +
  60246. +# if defined __NR_symlinkat && !defined __NR_symlink
  60247. +# include <fcntl.h>
  60248. +int symlink(const char *oldpath, const char *newpath)
  60249. +{
  60250. + return symlinkat(oldpath, AT_FDCWD, newpath);
  60251. +}
  60252. +
  60253. +# elif defined(__NR_symlink)
  60254. +
  60255. _syscall2(int, symlink, const char *, oldpath, const char *, newpath)
  60256. +
  60257. +# endif
  60258. +
  60259. #endif
  60260. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sync.c uClibc/libc/sysdeps/linux/common/sync.c
  60261. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sync.c 2012-05-15 09:20:09.000000000 +0200
  60262. +++ uClibc/libc/sysdeps/linux/common/sync.c 2014-02-03 12:32:56.000000000 +0100
  60263. @@ -8,12 +8,8 @@
  60264. */
  60265. #include <sys/syscall.h>
  60266. -# if defined __USE_BSD || defined __USE_UNIX98
  60267. -#include <sys/types.h>
  60268. -#include <unistd.h>
  60269. -void sync(void)
  60270. -{
  60271. - INLINE_SYSCALL(sync, 0);
  60272. -}
  60273. +#if defined __USE_BSD || defined __USE_UNIX98
  60274. +# include <unistd.h>
  60275. +_syscall0(void, sync)
  60276. #endif
  60277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c uClibc/libc/sysdeps/linux/common/sync_file_range.c
  60278. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c 2012-05-15 09:20:09.000000000 +0200
  60279. +++ uClibc/libc/sysdeps/linux/common/sync_file_range.c 2014-02-15 14:18:15.000000000 +0100
  60280. @@ -4,24 +4,34 @@
  60281. *
  60282. * Copyright (C) 2008 Bernhard Reutner-Fischer <uclibc@uclibc.org>
  60283. *
  60284. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60285. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  60286. */
  60287. #include <sys/syscall.h>
  60288. -#if defined __USE_GNU
  60289. -#include <fcntl.h>
  60290. +#if defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  60291. +# include <bits/wordsize.h>
  60292. +# include <endian.h>
  60293. +# include <fcntl.h>
  60294. +# include <cancel.h>
  60295. -#if defined __NR_sync_file_range && defined __UCLIBC_HAS_LFS__
  60296. -#define __NR___syscall_sync_file_range __NR_sync_file_range
  60297. -static __inline__ _syscall6(int, __syscall_sync_file_range, int, fd,
  60298. - off_t, offset_hi, off_t, offset_lo,
  60299. - off_t, nbytes_hi, off_t, nbytes_lo, unsigned int, flags)
  60300. -int sync_file_range(int fd, off64_t offset, off64_t nbytes, unsigned int flags)
  60301. +# ifdef __NR_sync_file_range2
  60302. +# undef __NR_sync_file_range
  60303. +# define __NR_sync_file_range __NR_sync_file_range2
  60304. +# endif
  60305. +
  60306. +# ifdef __NR_sync_file_range
  60307. +static int __NC(sync_file_range)(int fd, off64_t offset, off64_t nbytes, unsigned int flags)
  60308. {
  60309. - return __syscall_sync_file_range(fd,
  60310. - __LONG_LONG_PAIR((long)(offset >> 32), (long)(offset & 0xffffffff)),
  60311. - __LONG_LONG_PAIR((long)(nbytes >> 32), (long)(nbytes & 0xffffffff)),
  60312. - flags);
  60313. +# if defined __powerpc__ && __WORDSIZE == 64
  60314. + return INLINE_SYSCALL(sync_file_range, 4, fd, offset, nbytes, flags);
  60315. +# elif defined __mips__ && _MIPS_SIM == _ABIO32
  60316. + return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
  60317. + OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
  60318. +# else
  60319. + return INLINE_SYSCALL(sync_file_range, 6, fd,
  60320. + OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
  60321. +# endif
  60322. }
  60323. -#endif
  60324. +CANCELLABLE_SYSCALL(int, sync_file_range, (int fd, off64_t offset, off64_t nbytes, unsigned int flags), (fd, offset, nbytes, flags))
  60325. +# endif
  60326. #endif
  60327. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/acct.h uClibc/libc/sysdeps/linux/common/sys/acct.h
  60328. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/acct.h 2012-05-15 09:20:09.000000000 +0200
  60329. +++ uClibc/libc/sysdeps/linux/common/sys/acct.h 2014-02-03 12:32:56.000000000 +0100
  60330. @@ -1,4 +1,4 @@
  60331. -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
  60332. +/* Copyright (C) 1996, 1997, 1998, 1999, 2007 Free Software Foundation, Inc.
  60333. This file is part of the GNU C Library.
  60334. The GNU C Library is free software; you can redistribute it and/or
  60335. @@ -12,15 +12,15 @@
  60336. Lesser General Public License for more details.
  60337. You should have received a copy of the GNU Lesser General Public
  60338. - License along with the GNU C Library; if not, write to the Free
  60339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60340. - 02111-1307 USA. */
  60341. + License along with the GNU C Library; if not, see
  60342. + <http://www.gnu.org/licenses/>. */
  60343. #ifndef _SYS_ACCT_H
  60344. #define _SYS_ACCT_H 1
  60345. #include <features.h>
  60346. +#include <endian.h>
  60347. #define __need_time_t
  60348. #include <time.h>
  60349. #include <sys/types.h>
  60350. @@ -38,25 +38,51 @@
  60351. typedef u_int16_t comp_t;
  60352. struct acct
  60353. - {
  60354. - char ac_flag; /* Accounting flags. */
  60355. - u_int16_t ac_uid; /* Accounting user ID. */
  60356. - u_int16_t ac_gid; /* Accounting group ID. */
  60357. - u_int16_t ac_tty; /* Controlling tty. */
  60358. - u_int32_t ac_btime; /* Beginning time. */
  60359. - comp_t ac_utime; /* Accounting user time. */
  60360. - comp_t ac_stime; /* Accounting system time. */
  60361. - comp_t ac_etime; /* Accounting elapsed time. */
  60362. - comp_t ac_mem; /* Accounting average memory usage. */
  60363. - comp_t ac_io; /* Accounting chars transferred. */
  60364. - comp_t ac_rw; /* Accounting blocks read or written. */
  60365. - comp_t ac_minflt; /* Accounting minor pagefaults. */
  60366. - comp_t ac_majflt; /* Accounting major pagefaults. */
  60367. - comp_t ac_swaps; /* Accounting number of swaps. */
  60368. - u_int32_t ac_exitcode; /* Accounting process exitcode. */
  60369. - char ac_comm[ACCT_COMM+1]; /* Accounting command name. */
  60370. - char ac_pad[10]; /* Accounting padding bytes. */
  60371. - };
  60372. +{
  60373. + char ac_flag; /* Flags. */
  60374. + u_int16_t ac_uid; /* Real user ID. */
  60375. + u_int16_t ac_gid; /* Real group ID. */
  60376. + u_int16_t ac_tty; /* Controlling terminal. */
  60377. + u_int32_t ac_btime; /* Beginning time. */
  60378. + comp_t ac_utime; /* User time. */
  60379. + comp_t ac_stime; /* System time. */
  60380. + comp_t ac_etime; /* Elapsed time. */
  60381. + comp_t ac_mem; /* Average memory usage. */
  60382. + comp_t ac_io; /* Chars transferred. */
  60383. + comp_t ac_rw; /* Blocks read or written. */
  60384. + comp_t ac_minflt; /* Minor pagefaults. */
  60385. + comp_t ac_majflt; /* Major pagefaults. */
  60386. + comp_t ac_swaps; /* Number of swaps. */
  60387. + u_int32_t ac_exitcode; /* Process exitcode. */
  60388. + char ac_comm[ACCT_COMM+1]; /* Command name. */
  60389. + char ac_pad[10]; /* Padding bytes. */
  60390. +};
  60391. +
  60392. +#if 0
  60393. +struct acct_v3
  60394. +{
  60395. + char ac_flag; /* Flags */
  60396. + char ac_version; /* Always set to ACCT_VERSION */
  60397. + u_int16_t ac_tty; /* Control Terminal */
  60398. + u_int32_t ac_exitcode; /* Exitcode */
  60399. + u_int32_t ac_uid; /* Real User ID */
  60400. + u_int32_t ac_gid; /* Real Group ID */
  60401. + u_int32_t ac_pid; /* Process ID */
  60402. + u_int32_t ac_ppid; /* Parent Process ID */
  60403. + u_int32_t ac_btime; /* Process Creation Time */
  60404. + float ac_etime; /* Elapsed Time */
  60405. + comp_t ac_utime; /* User Time */
  60406. + comp_t ac_stime; /* System Time */
  60407. + comp_t ac_mem; /* Average Memory Usage */
  60408. + comp_t ac_io; /* Chars Transferred */
  60409. + comp_t ac_rw; /* Blocks Read or Written */
  60410. + comp_t ac_minflt; /* Minor Pagefaults */
  60411. + comp_t ac_majflt; /* Major Pagefaults */
  60412. + comp_t ac_swaps; /* Number of Swaps */
  60413. + char ac_comm[ACCT_COMM]; /* Command Name */
  60414. +};
  60415. +#endif
  60416. +
  60417. enum
  60418. {
  60419. @@ -66,11 +92,17 @@
  60420. AXSIG = 0x10 /* Killed by a signal. */
  60421. };
  60422. +#if __BYTE_ORDER == __BIG_ENDIAN
  60423. +# define ACCT_BYTEORDER 0x80 /* Accounting file is big endian. */
  60424. +#else
  60425. +# define ACCT_BYTEORDER 0x00 /* Accounting file is little endian. */
  60426. +#endif
  60427. +
  60428. #define AHZ 100
  60429. /* Switch process accounting on and off. */
  60430. -extern int acct (__const char *__filename) __THROW;
  60431. +extern int acct (const char *__filename) __THROW;
  60432. __END_DECLS
  60433. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/epoll.h uClibc/libc/sysdeps/linux/common/sys/epoll.h
  60434. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/epoll.h 2012-05-15 09:20:09.000000000 +0200
  60435. +++ uClibc/libc/sysdeps/linux/common/sys/epoll.h 2014-02-03 12:32:56.000000000 +0100
  60436. @@ -36,7 +36,6 @@
  60437. # define __EPOLL_PACKED
  60438. #endif
  60439. -
  60440. enum EPOLL_EVENTS
  60441. {
  60442. EPOLLIN = 0x001,
  60443. @@ -97,7 +96,7 @@
  60444. returned by epoll_create() should be closed with close(). */
  60445. extern int epoll_create (int __size) __THROW;
  60446. -/* Same as epoll_create but with an FLAGS parameter. The unused SIZE
  60447. +/* Same as epoll_create but with a FLAGS parameter. The unused SIZE
  60448. parameter has been dropped. */
  60449. extern int epoll_create1 (int __flags) __THROW;
  60450. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/eventfd.h uClibc/libc/sysdeps/linux/common/sys/eventfd.h
  60451. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/eventfd.h 2012-05-15 09:20:09.000000000 +0200
  60452. +++ uClibc/libc/sysdeps/linux/common/sys/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  60453. @@ -1,4 +1,4 @@
  60454. -/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
  60455. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  60456. This file is part of the GNU C Library.
  60457. The GNU C Library is free software; you can redistribute it and/or
  60458. @@ -12,30 +12,20 @@
  60459. Lesser General Public License for more details.
  60460. You should have received a copy of the GNU Lesser General Public
  60461. - License along with the GNU C Library; if not, write to the Free
  60462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60463. - 02111-1307 USA. */
  60464. + License along with the GNU C Library; if not, see
  60465. + <http://www.gnu.org/licenses/>. */
  60466. #ifndef _SYS_EVENTFD_H
  60467. #define _SYS_EVENTFD_H 1
  60468. #include <stdint.h>
  60469. +/* Get the platform-dependent flags. */
  60470. +#include <bits/eventfd.h>
  60471. /* Type for event counter. */
  60472. typedef uint64_t eventfd_t;
  60473. -/* Flags for signalfd. */
  60474. -enum
  60475. - {
  60476. - EFD_SEMAPHORE = 1,
  60477. -#define EFD_SEMAPHORE EFD_SEMAPHORE
  60478. - EFD_CLOEXEC = 02000000,
  60479. -#define EFD_CLOEXEC EFD_CLOEXEC
  60480. - EFD_NONBLOCK = 04000
  60481. -#define EFD_NONBLOCK EFD_NONBLOCK
  60482. - };
  60483. -
  60484. __BEGIN_DECLS
  60485. @@ -43,6 +33,16 @@
  60486. value to COUNT. */
  60487. extern int eventfd (int __count, int __flags) __THROW;
  60488. +#if 0 /* not (yet) implemented in uClibc */
  60489. +
  60490. +/* Read event counter and possibly wait for events. */
  60491. +extern int eventfd_read (int __fd, eventfd_t *__value);
  60492. +
  60493. +/* Increment event counter. */
  60494. +extern int eventfd_write (int __fd, eventfd_t __value);
  60495. +
  60496. +#endif
  60497. +
  60498. __END_DECLS
  60499. #endif /* sys/eventfd.h */
  60500. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/prctl.h uClibc/libc/sysdeps/linux/common/sys/prctl.h
  60501. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/prctl.h 2012-05-15 09:20:09.000000000 +0200
  60502. +++ uClibc/libc/sysdeps/linux/common/sys/prctl.h 2014-02-03 12:32:56.000000000 +0100
  60503. @@ -12,9 +12,8 @@
  60504. Lesser General Public License for more details.
  60505. You should have received a copy of the GNU Lesser General Public
  60506. - License along with the GNU C Library; if not, write to the Free
  60507. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60508. - 02111-1307 USA. */
  60509. + License along with the GNU C Library; if not, see
  60510. + <http://www.gnu.org/licenses/>. */
  60511. #ifndef _SYS_PRCTL_H
  60512. #define _SYS_PRCTL_H 1
  60513. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/ptrace.h uClibc/libc/sysdeps/linux/common/sys/ptrace.h
  60514. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  60515. +++ uClibc/libc/sysdeps/linux/common/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  60516. @@ -1,5 +1,5 @@
  60517. /* `ptrace' debugger support interface. Linux version.
  60518. - Copyright (C) 1996-1999,2000,2006,2007 Free Software Foundation, Inc.
  60519. + Copyright (C) 1996-2012 Free Software Foundation, Inc.
  60520. This file is part of the GNU C Library.
  60521. The GNU C Library is free software; you can redistribute it and/or
  60522. @@ -13,9 +13,8 @@
  60523. Lesser General Public License for more details.
  60524. You should have received a copy of the GNU Lesser General Public
  60525. - License along with the GNU C Library; if not, write to the Free
  60526. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60527. - 02111-1307 USA. */
  60528. + License along with the GNU C Library; if not, see
  60529. + <http://www.gnu.org/licenses/>. */
  60530. #ifndef _SYS_PTRACE_H
  60531. #define _SYS_PTRACE_H 1
  60532. @@ -125,13 +124,40 @@
  60533. #define PT_GETSIGINFO PTRACE_GETSIGINFO
  60534. /* Set new siginfo for process. */
  60535. - PTRACE_SETSIGINFO = 0x4203
  60536. + PTRACE_SETSIGINFO = 0x4203,
  60537. #define PT_SETSIGINFO PTRACE_SETSIGINFO
  60538. +
  60539. + /* Get register content. */
  60540. + PTRACE_GETREGSET = 0x4204,
  60541. +#define PTRACE_GETREGSET PTRACE_GETREGSET
  60542. +
  60543. + /* Set register content. */
  60544. + PTRACE_SETREGSET = 0x4205,
  60545. +#define PTRACE_SETREGSET PTRACE_SETREGSET
  60546. +
  60547. + /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
  60548. + signal or group stop state. */
  60549. + PTRACE_SEIZE = 0x4206,
  60550. +#define PTRACE_SEIZE PTRACE_SEIZE
  60551. +
  60552. + /* Trap seized tracee. */
  60553. + PTRACE_INTERRUPT = 0x4207,
  60554. +#define PTRACE_INTERRUPT PTRACE_INTERRUPT
  60555. +
  60556. + /* Wait for next group event. */
  60557. + PTRACE_LISTEN = 0x4208
  60558. };
  60559. +/* Flag for PTRACE_LISTEN. */
  60560. +enum __ptrace_flags
  60561. +{
  60562. + PTRACE_SEIZE_DEVEL = 0x80000000
  60563. +};
  60564. +
  60565. /* Options set using PTRACE_SETOPTIONS. */
  60566. -enum __ptrace_setoptions {
  60567. +enum __ptrace_setoptions
  60568. +{
  60569. PTRACE_O_TRACESYSGOOD = 0x00000001,
  60570. PTRACE_O_TRACEFORK = 0x00000002,
  60571. PTRACE_O_TRACEVFORK = 0x00000004,
  60572. @@ -139,17 +165,20 @@
  60573. PTRACE_O_TRACEEXEC = 0x00000010,
  60574. PTRACE_O_TRACEVFORKDONE = 0x00000020,
  60575. PTRACE_O_TRACEEXIT = 0x00000040,
  60576. - PTRACE_O_MASK = 0x0000007f
  60577. + PTRACE_O_TRACESECCOMP = 0x00000080,
  60578. + PTRACE_O_MASK = 0x000000ff
  60579. };
  60580. /* Wait extended result codes for the above trace options. */
  60581. -enum __ptrace_eventcodes {
  60582. +enum __ptrace_eventcodes
  60583. +{
  60584. PTRACE_EVENT_FORK = 1,
  60585. PTRACE_EVENT_VFORK = 2,
  60586. PTRACE_EVENT_CLONE = 3,
  60587. PTRACE_EVENT_EXEC = 4,
  60588. PTRACE_EVENT_VFORK_DONE = 5,
  60589. - PTRACE_EVENT_EXIT = 6
  60590. + PTRACE_EVENT_EXIT = 6,
  60591. + PTRAVE_EVENT_SECCOMP = 7
  60592. };
  60593. /* Perform process tracing functions. REQUEST is one of the values
  60594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl64.c uClibc/libc/sysdeps/linux/common/__syscall_fcntl64.c
  60595. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl64.c 2012-05-15 09:20:09.000000000 +0200
  60596. +++ uClibc/libc/sysdeps/linux/common/__syscall_fcntl64.c 2014-02-03 12:32:56.000000000 +0100
  60597. @@ -7,14 +7,18 @@
  60598. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60599. */
  60600. +#include <_lfs_64.h>
  60601. #include <sys/syscall.h>
  60602. -#include <stdarg.h>
  60603. -#include <fcntl.h>
  60604. +#include <bits/wordsize.h>
  60605. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  60606. +#if defined __NR_fcntl64 && __WORDSIZE == 32
  60607. +# include <stdarg.h>
  60608. +# include <cancel.h>
  60609. +# include <fcntl.h>
  60610. +
  60611. +# define __NR___fcntl64_nocancel __NR_fcntl64
  60612. +_syscall3(int, __NC(fcntl64), int, fd, int, cmd, long, arg)
  60613. -#define __NR___syscall_fcntl64 __NR_fcntl64
  60614. -static __inline__ _syscall3(int, __syscall_fcntl64, int, fd, int, cmd, long, arg)
  60615. int fcntl64(int fd, int cmd, ...)
  60616. {
  60617. long arg;
  60618. @@ -24,7 +28,15 @@
  60619. arg = va_arg(list, long);
  60620. va_end(list);
  60621. - return (__syscall_fcntl64(fd, cmd, arg));
  60622. + if (SINGLE_THREAD_P || (cmd != F_SETLKW64))
  60623. + return __NC(fcntl64)(fd, cmd, arg);
  60624. +# ifdef __NEW_THREADS
  60625. + int oldtype = LIBC_CANCEL_ASYNC();
  60626. + int result = __NC(fcntl64)(fd, cmd, arg);
  60627. + LIBC_CANCEL_RESET(oldtype);
  60628. + return result;
  60629. +# endif
  60630. }
  60631. -libc_hidden_def(fcntl64)
  60632. +lt_strong_alias(fcntl64)
  60633. +lt_libc_hidden(fcntl64)
  60634. #endif
  60635. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl.c uClibc/libc/sysdeps/linux/common/__syscall_fcntl.c
  60636. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl.c 2012-05-15 09:20:09.000000000 +0200
  60637. +++ uClibc/libc/sysdeps/linux/common/__syscall_fcntl.c 2014-02-03 12:32:56.000000000 +0100
  60638. @@ -10,82 +10,61 @@
  60639. #include <sys/syscall.h>
  60640. #include <stdarg.h>
  60641. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60642. -#include <sysdep-cancel.h> /* Must come before <fcntl.h>. */
  60643. -#endif
  60644. +#include <cancel.h> /* Must come before <fcntl.h>. */
  60645. #include <fcntl.h>
  60646. #include <bits/wordsize.h>
  60647. -extern __typeof(fcntl) __libc_fcntl;
  60648. -libc_hidden_proto(__libc_fcntl)
  60649. -
  60650. -int __fcntl_nocancel (int fd, int cmd, ...)
  60651. +int __NC(fcntl)(int fd, int cmd, long arg)
  60652. {
  60653. - va_list ap;
  60654. - void *arg;
  60655. -
  60656. - va_start (ap, cmd);
  60657. - arg = va_arg (ap, void *);
  60658. - va_end (ap);
  60659. -
  60660. -# if __WORDSIZE == 32
  60661. +#if __WORDSIZE == 32
  60662. if (cmd == F_GETLK64 || cmd == F_SETLK64 || cmd == F_SETLKW64) {
  60663. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  60664. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  60665. -# else
  60666. +# if (defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64) || !defined __NR_fcntl
  60667. + return INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  60668. +# else
  60669. __set_errno(ENOSYS);
  60670. return -1;
  60671. -# endif
  60672. - }
  60673. # endif
  60674. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  60675. + }
  60676. +#endif
  60677. +
  60678. +#if defined __NR_fcntl
  60679. + return INLINE_SYSCALL(fcntl, 3, fd, cmd, arg);
  60680. +#else
  60681. + __set_errno(ENOSYS);
  60682. + return -1;
  60683. +#endif
  60684. }
  60685. -libc_hidden_def(__fcntl_nocancel)
  60686. -int __libc_fcntl (int fd, int cmd, ...)
  60687. +int fcntl(int fd, int cmd, ...)
  60688. {
  60689. va_list ap;
  60690. - void *arg;
  60691. + long arg;
  60692. va_start (ap, cmd);
  60693. - arg = va_arg (ap, void *);
  60694. + arg = va_arg (ap, long);
  60695. va_end (ap);
  60696. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60697. if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
  60698. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  60699. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  60700. -# else
  60701. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  60702. -# endif
  60703. -
  60704. +#if defined __NR_fcntl
  60705. + return __NC(fcntl)(fd, cmd, arg);
  60706. +#else
  60707. + return INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  60708. +#endif
  60709. +#ifdef __NEW_THREADS
  60710. int oldtype = LIBC_CANCEL_ASYNC ();
  60711. -
  60712. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  60713. - int result = INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  60714. -# else
  60715. - int result = INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  60716. -# endif
  60717. -
  60718. +#if defined __NR_fcntl
  60719. + int result = __NC(fcntl)(fd, cmd, arg);
  60720. +#else
  60721. + int result = INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  60722. +#endif
  60723. LIBC_CANCEL_RESET (oldtype);
  60724. -
  60725. return result;
  60726. -#else
  60727. -# if __WORDSIZE == 32
  60728. - if (cmd == F_GETLK64 || cmd == F_SETLK64 || cmd == F_SETLKW64) {
  60729. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  60730. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  60731. -# else
  60732. - __set_errno(ENOSYS);
  60733. - return -1;
  60734. -# endif
  60735. - }
  60736. -# endif
  60737. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  60738. #endif
  60739. }
  60740. -libc_hidden_def(__libc_fcntl)
  60741. -
  60742. -libc_hidden_proto(fcntl)
  60743. -weak_alias(__libc_fcntl,fcntl)
  60744. -libc_hidden_weak(fcntl)
  60745. +lt_strong_alias(fcntl)
  60746. +lt_libc_hidden(fcntl)
  60747. +#if defined __UCLIBC_HAS_LFS__ && !defined __NR_fcntl64 && __WORDSIZE == 32
  60748. +strong_alias_untyped(fcntl,fcntl64)
  60749. +lt_strong_alias(fcntl64)
  60750. +lt_libc_hidden(fcntl64)
  60751. +#endif
  60752. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_rt_sigaction.c uClibc/libc/sysdeps/linux/common/__syscall_rt_sigaction.c
  60753. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_rt_sigaction.c 2012-05-15 09:20:09.000000000 +0200
  60754. +++ uClibc/libc/sysdeps/linux/common/__syscall_rt_sigaction.c 2014-02-03 12:32:56.000000000 +0100
  60755. @@ -12,11 +12,8 @@
  60756. #ifdef __NR_rt_sigaction
  60757. #include <signal.h>
  60758. -int __syscall_rt_sigaction (int __signum, const struct sigaction *__act,
  60759. - struct sigaction *__oldact, size_t __size);
  60760. -
  60761. #define __NR___syscall_rt_sigaction __NR_rt_sigaction
  60762. _syscall4(int, __syscall_rt_sigaction, int, signum,
  60763. - const struct sigaction *, act, struct sigaction *, oldact,
  60764. - size_t, size)
  60765. + const struct sigaction *, act, struct sigaction *, oldact,
  60766. + size_t, size)
  60767. #endif
  60768. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/syscalls.h uClibc/libc/sysdeps/linux/common/syscalls.h
  60769. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  60770. +++ uClibc/libc/sysdeps/linux/common/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  60771. @@ -1,24 +0,0 @@
  60772. -/* vi: set sw=4 ts=4: */
  60773. -/*
  60774. - * Common header file for uClibc syscalls
  60775. - *
  60776. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  60777. - *
  60778. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60779. - */
  60780. -
  60781. -#define _LARGEFILE64_SOURCE
  60782. -#include <features.h>
  60783. -#include <errno.h>
  60784. -#include <sys/types.h>
  60785. -#include <sys/syscall.h>
  60786. -#include <endian.h>
  60787. -
  60788. -#undef __OPTIMIZE__
  60789. -/* We absolutely do _NOT_ want interfaces silently
  60790. - * being renamed under us or very bad things will happen... */
  60791. -#ifdef __USE_FILE_OFFSET64
  60792. -# undef __USE_FILE_OFFSET64
  60793. -#endif
  60794. -
  60795. -#include <bits/kernel_types.h>
  60796. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_sigaction.c uClibc/libc/sysdeps/linux/common/__syscall_sigaction.c
  60797. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_sigaction.c 2012-05-15 09:20:09.000000000 +0200
  60798. +++ uClibc/libc/sysdeps/linux/common/__syscall_sigaction.c 2014-02-03 12:32:56.000000000 +0100
  60799. @@ -12,8 +12,7 @@
  60800. #ifndef __NR_rt_sigaction
  60801. #define __NR___syscall_sigaction __NR_sigaction
  60802. #include <signal.h>
  60803. -int __syscall_sigaction (int __signum, const struct sigaction *__act, struct sigaction *__oldact) attribute_hidden;
  60804. _syscall3(int, __syscall_sigaction, int, signum, const struct sigaction *,
  60805. - act, struct sigaction *, oldact)
  60806. + act, struct sigaction *, oldact)
  60807. #endif
  60808. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sysdep.h uClibc/libc/sysdeps/linux/common/sysdep.h
  60809. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  60810. +++ uClibc/libc/sysdeps/linux/common/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  60811. @@ -13,9 +13,8 @@
  60812. Lesser General Public License for more details.
  60813. You should have received a copy of the GNU Lesser General Public
  60814. - License along with the GNU C Library; if not, write to the Free
  60815. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60816. - 02111-1307 USA. */
  60817. + License along with the GNU C Library; if not, see
  60818. + <http://www.gnu.org/licenses/>. */
  60819. #include <sys/syscall.h>
  60820. @@ -49,6 +48,8 @@
  60821. #define JUMPTARGET(sym) sym
  60822. #endif
  60823. +#define ret_ERRVAL ret
  60824. +
  60825. /* Macros to generate eh_frame unwind information. */
  60826. # ifdef HAVE_ASM_CFI_DIRECTIVES
  60827. # define cfi_sections(sect...) .cfi_sections sect
  60828. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sysinfo.c uClibc/libc/sysdeps/linux/common/sysinfo.c
  60829. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sysinfo.c 2012-05-15 09:20:09.000000000 +0200
  60830. +++ uClibc/libc/sysdeps/linux/common/sysinfo.c 2014-02-03 12:32:56.000000000 +0100
  60831. @@ -8,5 +8,8 @@
  60832. */
  60833. #include <sys/syscall.h>
  60834. -#include <sys/sysinfo.h>
  60835. +
  60836. +#ifdef __NR_sysinfo
  60837. +# include <sys/sysinfo.h>
  60838. _syscall1(int, sysinfo, struct sysinfo *, info)
  60839. +#endif
  60840. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/tee.c uClibc/libc/sysdeps/linux/common/tee.c
  60841. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/tee.c 2012-05-15 09:20:09.000000000 +0200
  60842. +++ uClibc/libc/sysdeps/linux/common/tee.c 2014-02-03 12:32:56.000000000 +0100
  60843. @@ -8,9 +8,10 @@
  60844. */
  60845. #include <sys/syscall.h>
  60846. -#include <fcntl.h>
  60847. -#ifdef __NR_tee
  60848. +#if defined __NR_tee && defined __USE_GNU
  60849. +# include <fcntl.h>
  60850. +
  60851. _syscall4(ssize_t, tee, int, __fdin, int, __fdout, size_t, __len,
  60852. - unsigned int, __flags)
  60853. + unsigned int, __flags)
  60854. #endif
  60855. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/time.c uClibc/libc/sysdeps/linux/common/time.c
  60856. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/time.c 2012-05-15 09:20:09.000000000 +0200
  60857. +++ uClibc/libc/sysdeps/linux/common/time.c 2014-02-03 12:32:56.000000000 +0100
  60858. @@ -9,12 +9,11 @@
  60859. #include <sys/syscall.h>
  60860. #include <time.h>
  60861. -#include <sys/time.h>
  60862. -
  60863. #ifdef __NR_time
  60864. _syscall_noerr1(time_t, time, time_t *, t)
  60865. #else
  60866. +# include <sys/time.h>
  60867. time_t time(time_t * t)
  60868. {
  60869. time_t result;
  60870. @@ -25,9 +24,8 @@
  60871. */
  60872. gettimeofday(&tv, NULL);
  60873. result = (time_t) tv.tv_sec;
  60874. - if (t != NULL) {
  60875. + if (t != NULL)
  60876. *t = result;
  60877. - }
  60878. return result;
  60879. }
  60880. #endif
  60881. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/times.c uClibc/libc/sysdeps/linux/common/times.c
  60882. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/times.c 2012-05-15 09:20:09.000000000 +0200
  60883. +++ uClibc/libc/sysdeps/linux/common/times.c 2014-02-03 12:32:56.000000000 +0100
  60884. @@ -10,6 +10,5 @@
  60885. #include <sys/syscall.h>
  60886. #include <sys/times.h>
  60887. -
  60888. _syscall_noerr1(clock_t, times, struct tms *, buf)
  60889. libc_hidden_def(times)
  60890. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate64.c uClibc/libc/sysdeps/linux/common/truncate64.c
  60891. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate64.c 2012-05-15 09:20:09.000000000 +0200
  60892. +++ uClibc/libc/sysdeps/linux/common/truncate64.c 2014-02-03 12:32:56.000000000 +0100
  60893. @@ -7,49 +7,35 @@
  60894. * and on 32 bit machines this sends things into the kernel as
  60895. * two 32-bit arguments (high and low 32 bits of length) that
  60896. * are ordered based on endianess. It turns out endian.h has
  60897. - * just the macro we need to order things, __LONG_LONG_PAIR.
  60898. + * just the macro we need to order things, OFF64_HI_LO.
  60899. */
  60900. -#include <features.h>
  60901. -#include <unistd.h>
  60902. -#include <errno.h>
  60903. -#include <endian.h>
  60904. -#include <stdint.h>
  60905. -#include <sys/types.h>
  60906. +#include <_lfs_64.h>
  60907. #include <sys/syscall.h>
  60908. +#include <unistd.h>
  60909. -#if defined __UCLIBC_HAS_LFS__
  60910. -
  60911. -#if defined __NR_truncate64
  60912. -
  60913. -#if __WORDSIZE == 64
  60914. +#ifdef __NR_truncate64
  60915. +# include <bits/wordsize.h>
  60916. -/* For a 64 bit machine, life is simple... */
  60917. +# if __WORDSIZE == 64
  60918. _syscall2(int, truncate64, const char *, path, __off64_t, length)
  60919. -
  60920. -#elif __WORDSIZE == 32
  60921. -
  60922. -/* The exported truncate64 function. */
  60923. +# elif __WORDSIZE == 32
  60924. +# include <endian.h>
  60925. +# include <stdint.h>
  60926. int truncate64(const char * path, __off64_t length)
  60927. {
  60928. - uint32_t low = length & 0xffffffff;
  60929. - uint32_t high = length >> 32;
  60930. -#if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
  60931. - return INLINE_SYSCALL(truncate64, 4, path, 0,
  60932. - __LONG_LONG_PAIR(high, low));
  60933. -#else
  60934. - return INLINE_SYSCALL(truncate64, 3, path,
  60935. - __LONG_LONG_PAIR(high, low));
  60936. -#endif
  60937. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  60938. + return INLINE_SYSCALL(truncate64, 4, path, 0, OFF64_HI_LO(length));
  60939. +# else
  60940. + return INLINE_SYSCALL(truncate64, 3, path, OFF64_HI_LO(length));
  60941. +# endif
  60942. }
  60943. +# else
  60944. +# error Your machine is not 64 bit nor 32 bit, I am dazed and confused.
  60945. +# endif
  60946. -#else /* __WORDSIZE */
  60947. -#error Your machine is not 64 bit nor 32 bit, I am dazed and confused.
  60948. -#endif /* __WORDSIZE */
  60949. -
  60950. -#else /* __NR_truncate64 */
  60951. -
  60952. -
  60953. +#else
  60954. +# include <errno.h>
  60955. int truncate64(const char * path, __off64_t length)
  60956. {
  60957. __off_t x = (__off_t) length;
  60958. @@ -64,5 +50,4 @@
  60959. }
  60960. #endif /* __NR_truncate64 */
  60961. -
  60962. -#endif /* __UCLIBC_HAS_LFS__ */
  60963. +libc_hidden_def(truncate64)
  60964. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate.c uClibc/libc/sysdeps/linux/common/truncate.c
  60965. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate.c 2012-05-15 09:20:09.000000000 +0200
  60966. +++ uClibc/libc/sysdeps/linux/common/truncate.c 2014-02-03 12:32:56.000000000 +0100
  60967. @@ -10,6 +10,25 @@
  60968. #include <sys/syscall.h>
  60969. #include <unistd.h>
  60970. +#if defined(__NR_truncate64) && !defined(__NR_truncate)
  60971. +# include <endian.h>
  60972. +# include <stdint.h>
  60973. +int truncate(const char *path, __off_t length)
  60974. +{
  60975. +# if defined __UCLIBC_HAS_LFS
  60976. + return truncate64(path, length);
  60977. +# elif __WORDSIZE == 32
  60978. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  60979. + return INLINE_SYSCALL(truncate64, 4, path, 0, OFF_HI_LO(length));
  60980. +# else
  60981. + return INLINE_SYSCALL(truncate64, 3, path, OFF_HI_LO(length));
  60982. +# endif
  60983. +# endif
  60984. +}
  60985. +libc_hidden_def(truncate);
  60986. +
  60987. +#else
  60988. _syscall2(int, truncate, const char *, path, __off_t, length)
  60989. libc_hidden_def(truncate)
  60990. +#endif
  60991. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umask.c uClibc/libc/sysdeps/linux/common/umask.c
  60992. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umask.c 2012-05-15 09:20:09.000000000 +0200
  60993. +++ uClibc/libc/sysdeps/linux/common/umask.c 2014-02-03 12:32:56.000000000 +0100
  60994. @@ -10,10 +10,4 @@
  60995. #include <sys/syscall.h>
  60996. #include <sys/stat.h>
  60997. -#define __NR___syscall_umask __NR_umask
  60998. -static __inline__ _syscall1(__kernel_mode_t, __syscall_umask, __kernel_mode_t, mode)
  60999. -
  61000. -mode_t umask(mode_t mode)
  61001. -{
  61002. - return __syscall_umask(mode);
  61003. -}
  61004. +_syscall_noerr1(mode_t, umask, mode_t, mode)
  61005. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umount2.c uClibc/libc/sysdeps/linux/common/umount2.c
  61006. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umount2.c 2012-05-15 09:20:09.000000000 +0200
  61007. +++ uClibc/libc/sysdeps/linux/common/umount2.c 2014-02-03 12:32:56.000000000 +0100
  61008. @@ -9,9 +9,8 @@
  61009. #include <sys/syscall.h>
  61010. -#if defined __USE_GNU
  61011. -#include <sys/mount.h>
  61012. -#ifdef __NR_umount2 /* Old kernels don't have umount2 */
  61013. +#if defined __UCLIBC_LINUX_SPECIFIC__ && defined __NR_umount2
  61014. +# include <sys/mount.h>
  61015. _syscall2(int, umount2, const char *, special_file, int, flags)
  61016. -#endif
  61017. +libc_hidden_def(umount2)
  61018. #endif
  61019. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umount.c uClibc/libc/sysdeps/linux/common/umount.c
  61020. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umount.c 2012-05-15 09:20:09.000000000 +0200
  61021. +++ uClibc/libc/sysdeps/linux/common/umount.c 2014-02-03 12:32:56.000000000 +0100
  61022. @@ -9,24 +9,15 @@
  61023. #include <sys/syscall.h>
  61024. -#if defined __USE_GNU
  61025. #include <sys/mount.h>
  61026. -
  61027. -/* arch provides umount() syscall */
  61028. #ifdef __NR_umount
  61029. -
  61030. _syscall1(int, umount, const char *, specialfile)
  61031. -
  61032. -/* arch provides umount2() syscall */
  61033. #elif defined __NR_umount2
  61034. -
  61035. -# define __NR___syscall_umount2 __NR_umount2
  61036. -static __inline__ _syscall2(int, __syscall_umount2, const char *, special_file, int, flags)
  61037. -
  61038. +# ifndef __UCLIBC_LINUX_SPECIFIC__
  61039. +static __always_inline _syscall2(int, umount2, const char *, special_file, int, flags)
  61040. +# endif
  61041. int umount(const char *special_file)
  61042. {
  61043. - return (__syscall_umount2(special_file, 0));
  61044. + return umount2(special_file, 0);
  61045. }
  61046. -
  61047. -#endif
  61048. #endif
  61049. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/uname.c uClibc/libc/sysdeps/linux/common/uname.c
  61050. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/uname.c 2012-05-15 09:20:09.000000000 +0200
  61051. +++ uClibc/libc/sysdeps/linux/common/uname.c 2014-02-03 12:32:56.000000000 +0100
  61052. @@ -10,6 +10,5 @@
  61053. #include <sys/syscall.h>
  61054. #include <sys/utsname.h>
  61055. -
  61056. _syscall1(int, uname, struct utsname *, buf)
  61057. libc_hidden_def(uname)
  61058. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unlinkat.c uClibc/libc/sysdeps/linux/common/unlinkat.c
  61059. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unlinkat.c 2012-05-15 09:20:09.000000000 +0200
  61060. +++ uClibc/libc/sysdeps/linux/common/unlinkat.c 2014-02-03 12:32:56.000000000 +0100
  61061. @@ -11,6 +11,7 @@
  61062. #ifdef __NR_unlinkat
  61063. _syscall3(int, unlinkat, int, fd, const char *, file, int, flag)
  61064. +libc_hidden_def(unlinkat)
  61065. #else
  61066. /* should add emulation with unlink() and /proc/self/fd/ ... */
  61067. #endif
  61068. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unlink.c uClibc/libc/sysdeps/linux/common/unlink.c
  61069. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unlink.c 2012-05-15 09:20:09.000000000 +0200
  61070. +++ uClibc/libc/sysdeps/linux/common/unlink.c 2014-02-03 12:32:56.000000000 +0100
  61071. @@ -10,6 +10,13 @@
  61072. #include <sys/syscall.h>
  61073. #include <unistd.h>
  61074. -
  61075. +#if defined __NR_unlinkat && !defined __NR_unlink
  61076. +# include <fcntl.h>
  61077. +int unlink(const char *pathname)
  61078. +{
  61079. + return unlinkat(AT_FDCWD, pathname, 0);
  61080. +}
  61081. +#else
  61082. _syscall1(int, unlink, const char *, pathname)
  61083. +#endif
  61084. libc_hidden_def(unlink)
  61085. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unwind.h uClibc/libc/sysdeps/linux/common/unwind.h
  61086. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unwind.h 2012-05-15 09:20:09.000000000 +0200
  61087. +++ uClibc/libc/sysdeps/linux/common/unwind.h 2014-02-03 12:32:56.000000000 +0100
  61088. @@ -14,9 +14,8 @@
  61089. Lesser General Public License for more details.
  61090. You should have received a copy of the GNU Lesser General Public
  61091. - License along with the GNU C Library; if not, write to the Free
  61092. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61093. - 02111-1307 USA. */
  61094. + License along with the GNU C Library; if not, see
  61095. + <http://www.gnu.org/licenses/>. */
  61096. /* This is derived from the C++ ABI for IA-64. Where we diverge
  61097. for cross-architecture compatibility are noted with "@@@". */
  61098. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ustat.c uClibc/libc/sysdeps/linux/common/ustat.c
  61099. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ustat.c 2012-05-15 09:20:09.000000000 +0200
  61100. +++ uClibc/libc/sysdeps/linux/common/ustat.c 2014-02-03 12:32:56.000000000 +0100
  61101. @@ -11,16 +11,18 @@
  61102. #include <sys/ustat.h>
  61103. #include <sys/sysmacros.h>
  61104. -#define __NR___syscall_ustat __NR_ustat
  61105. +#ifdef __NR_ustat
  61106. +# define __NR___syscall_ustat __NR_ustat
  61107. /* Kernel's fs/super.c defines this:
  61108. * long sys_ustat(unsigned dev, struct ustat __user * ubuf),
  61109. * thus we use unsigned, not __kernel_dev_t.
  61110. */
  61111. -static __inline__ _syscall2(int, __syscall_ustat,
  61112. - unsigned, kdev_t,
  61113. - struct ustat *, ubuf)
  61114. +static __always_inline _syscall2(int, __syscall_ustat,
  61115. + unsigned, kdev_t,
  61116. + struct ustat *, ubuf)
  61117. int ustat(dev_t dev, struct ustat *ubuf)
  61118. {
  61119. return __syscall_ustat(dev, ubuf);
  61120. }
  61121. +#endif
  61122. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/utime.c uClibc/libc/sysdeps/linux/common/utime.c
  61123. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/utime.c 2012-05-15 09:20:09.000000000 +0200
  61124. +++ uClibc/libc/sysdeps/linux/common/utime.c 2014-02-03 12:32:56.000000000 +0100
  61125. @@ -10,13 +10,33 @@
  61126. #include <sys/syscall.h>
  61127. #include <utime.h>
  61128. +#if defined __NR_utimensat && !defined __NR_utime
  61129. +# include <fcntl.h>
  61130. +# include <stddef.h>
  61131. -#ifdef __NR_utime
  61132. -_syscall2(int, utime, const char *, file, const struct utimbuf *, times)
  61133. -#else
  61134. -#include <stdlib.h>
  61135. -#include <sys/time.h>
  61136. +int utime(const char *file, const struct utimbuf *times)
  61137. +{
  61138. + struct timespec tspecs[2], *ts;
  61139. +
  61140. + if (times) {
  61141. + ts = tspecs;
  61142. + ts[0].tv_sec = times->actime;
  61143. + ts[0].tv_nsec = 0;
  61144. + ts[1].tv_sec = times->modtime;
  61145. + ts[1].tv_nsec = 0;
  61146. + } else {
  61147. + ts = NULL;
  61148. + }
  61149. + return utimensat(AT_FDCWD, file, ts, 0);
  61150. +}
  61151. +
  61152. +#elif defined(__NR_utime)
  61153. +_syscall2(int, utime, const char *, file, const struct utimbuf *, times)
  61154. +#elif defined __NR_utimes /* alpha || ia64 */
  61155. +# define __need_NULL
  61156. +# include <stddef.h>
  61157. +# include <sys/time.h>
  61158. int utime(const char *file, const struct utimbuf *times)
  61159. {
  61160. @@ -25,11 +45,15 @@
  61161. if (times != NULL) {
  61162. timevals[0].tv_usec = 0L;
  61163. timevals[1].tv_usec = 0L;
  61164. - timevals[0].tv_sec = (long int) times->actime;
  61165. - timevals[1].tv_sec = (long int) times->modtime;
  61166. + timevals[0].tv_sec = (time_t) times->actime;
  61167. + timevals[1].tv_sec = (time_t) times->modtime;
  61168. }
  61169. return utimes(file, times ? timevals : NULL);
  61170. }
  61171. #endif
  61172. +
  61173. +#if (defined __NR_utimensat && !defined __NR_utime) || \
  61174. + defined __NR_utime || defined __NR_utimes
  61175. link_warning(utime, "the use of OBSOLESCENT `utime' is discouraged, use `utimes'")
  61176. libc_hidden_def(utime)
  61177. +#endif
  61178. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/utimes.c uClibc/libc/sysdeps/linux/common/utimes.c
  61179. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/utimes.c 2012-05-15 09:20:09.000000000 +0200
  61180. +++ uClibc/libc/sysdeps/linux/common/utimes.c 2014-02-03 12:32:56.000000000 +0100
  61181. @@ -8,15 +8,33 @@
  61182. */
  61183. #include <sys/syscall.h>
  61184. -#include <utime.h>
  61185. #include <sys/time.h>
  61186. +#if defined __NR_utimensat && !defined __NR_utimes
  61187. +# include <fcntl.h>
  61188. +# include <stddef.h>
  61189. +int utimes(const char *file, const struct timeval tvp[2])
  61190. +{
  61191. + struct timespec ts[2], *times;
  61192. + if (tvp) {
  61193. + times = ts;
  61194. + times[0].tv_sec = tvp[0].tv_sec;
  61195. + times[0].tv_nsec = tvp[0].tv_usec * 1000;
  61196. + times[1].tv_sec = tvp[1].tv_sec;
  61197. + times[1].tv_nsec = tvp[1].tv_usec * 1000;
  61198. + } else {
  61199. + times = NULL;
  61200. + }
  61201. -#ifdef __NR_utimes
  61202. -_syscall2(int, utimes, const char *, file, const struct timeval *, tvp)
  61203. -#else
  61204. -#include <stdlib.h>
  61205. + return utimensat(AT_FDCWD, file, times, 0);
  61206. +}
  61207. +#elif defined __NR_utimes
  61208. +_syscall2(int, utimes, const char *, file, const struct timeval *, tvp)
  61209. +#elif defined __NR_utime
  61210. +# define __need_NULL
  61211. +# include <stddef.h>
  61212. +# include <utime.h>
  61213. int utimes(const char *file, const struct timeval tvp[2])
  61214. {
  61215. @@ -32,4 +50,7 @@
  61216. return utime(file, times);
  61217. }
  61218. #endif
  61219. +
  61220. +#if defined __NR_utimensat || defined __NR_utimes || defined __NR_utime
  61221. libc_hidden_def(utimes)
  61222. +#endif
  61223. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/vfork.c uClibc/libc/sysdeps/linux/common/vfork.c
  61224. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/vfork.c 2012-05-15 09:20:09.000000000 +0200
  61225. +++ uClibc/libc/sysdeps/linux/common/vfork.c 2014-02-03 12:32:56.000000000 +0100
  61226. @@ -4,30 +4,37 @@
  61227. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61228. */
  61229. -#include <unistd.h>
  61230. -#include <sys/types.h>
  61231. #include <sys/syscall.h>
  61232. +#if (defined __NR_vfork || defined __NR_clone || (defined __ARCH_USE_MMU__ && defined __NR_fork)) && (defined __USE_BSD || defined __USE_XOPEN_EXTENDED)
  61233. +# include <unistd.h>
  61234. extern __typeof(vfork) __vfork attribute_hidden;
  61235. -#ifdef __NR_vfork
  61236. +# if defined __NR_clone && !defined __NR_vfork
  61237. +# include <signal.h>
  61238. +# include <sys/types.h>
  61239. -# define __NR___vfork __NR_vfork
  61240. -_syscall0(pid_t, __vfork)
  61241. +pid_t __vfork(void)
  61242. +{
  61243. + pid_t pid = INLINE_SYSCALL(clone, 4, SIGCHLD,
  61244. + NULL, NULL, NULL);
  61245. -weak_alias(__vfork,vfork)
  61246. -libc_hidden_weak(vfork)
  61247. + if (pid < 0)
  61248. + return -1;
  61249. -#elif defined __ARCH_USE_MMU__ && defined __NR_fork
  61250. + return pid;
  61251. +}
  61252. +# elif defined __NR_vfork
  61253. +# define __NR___vfork __NR_vfork
  61254. +_syscall0(pid_t, __vfork)
  61255. +# else
  61256. /* Trivial implementation for arches that lack vfork */
  61257. -
  61258. pid_t __vfork(void)
  61259. {
  61260. return fork();
  61261. }
  61262. -
  61263. -weak_alias(__vfork,vfork)
  61264. +# endif
  61265. +strong_alias(__vfork,vfork)
  61266. libc_hidden_weak(vfork)
  61267. -
  61268. #endif
  61269. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/vmsplice.c uClibc/libc/sysdeps/linux/common/vmsplice.c
  61270. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/vmsplice.c 2012-05-15 09:20:09.000000000 +0200
  61271. +++ uClibc/libc/sysdeps/linux/common/vmsplice.c 2014-02-03 12:32:56.000000000 +0100
  61272. @@ -8,9 +8,10 @@
  61273. */
  61274. #include <sys/syscall.h>
  61275. -#include <fcntl.h>
  61276. -#ifdef __NR_vmsplice
  61277. +#if defined __NR_vmsplice && defined __USE_GNU
  61278. +# include <fcntl.h>
  61279. +
  61280. _syscall4(ssize_t, vmsplice, int, __fdout, const struct iovec *, __iov,
  61281. - size_t, __count, unsigned int, __flags)
  61282. + size_t, __count, unsigned int, __flags)
  61283. #endif
  61284. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait3.c uClibc/libc/sysdeps/linux/common/wait3.c
  61285. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait3.c 2012-05-15 09:20:09.000000000 +0200
  61286. +++ uClibc/libc/sysdeps/linux/common/wait3.c 2014-02-03 12:32:56.000000000 +0100
  61287. @@ -5,20 +5,12 @@
  61288. */
  61289. #include <sys/syscall.h>
  61290. -#include <sys/types.h>
  61291. -#include <sys/wait.h>
  61292. -#include <sys/resource.h>
  61293. -#if defined __USE_BSD
  61294. +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  61295. +# include <sys/wait.h>
  61296. -
  61297. -/* Wait for a child to exit. When one does, put its status in *STAT_LOC and
  61298. - * return its process ID. For errors return (pid_t) -1. If USAGE is not nil,
  61299. - * store information about the child's resource usage (as a `struct rusage')
  61300. - * there. If the WUNTRACED bit is set in OPTIONS, return status for stopped
  61301. - * children; otherwise don't. */
  61302. -pid_t wait3 (__WAIT_STATUS stat_loc, int options, struct rusage * usage)
  61303. +pid_t wait3(__WAIT_STATUS stat_loc, int options, struct rusage *usage)
  61304. {
  61305. - return wait4 (WAIT_ANY, stat_loc, options, usage);
  61306. + return __wait4_nocancel(WAIT_ANY, stat_loc, options, usage);
  61307. }
  61308. #endif
  61309. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait4.c uClibc/libc/sysdeps/linux/common/wait4.c
  61310. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait4.c 2012-05-15 09:20:09.000000000 +0200
  61311. +++ uClibc/libc/sysdeps/linux/common/wait4.c 2014-02-03 12:32:56.000000000 +0100
  61312. @@ -8,18 +8,16 @@
  61313. */
  61314. #include <sys/syscall.h>
  61315. -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  61316. #include <sys/wait.h>
  61317. -#include <sys/resource.h>
  61318. +# define __NR___syscall_wait4 __NR_wait4
  61319. +static __always_inline _syscall4(int, __syscall_wait4, __kernel_pid_t, pid,
  61320. + int *, status, int, opts, struct rusage *, rusage)
  61321. -#define __NR___syscall_wait4 __NR_wait4
  61322. -static __inline__ _syscall4(int, __syscall_wait4, __kernel_pid_t, pid,
  61323. - int *, status, int, opts, struct rusage *, rusage)
  61324. -
  61325. -pid_t wait4(pid_t pid, int *status, int opts, struct rusage *rusage)
  61326. +pid_t __wait4_nocancel(pid_t pid, int *status, int opts, struct rusage *rusage)
  61327. {
  61328. - return (__syscall_wait4(pid, status, opts, rusage));
  61329. + return __syscall_wait4(pid, status, opts, rusage);
  61330. }
  61331. -libc_hidden_def(wait4)
  61332. +#ifdef __USE_BSD
  61333. +strong_alias(__wait4_nocancel,wait4)
  61334. #endif
  61335. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait.c uClibc/libc/sysdeps/linux/common/wait.c
  61336. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait.c 2012-05-15 09:20:09.000000000 +0200
  61337. +++ uClibc/libc/sysdeps/linux/common/wait.c 2014-02-03 12:32:56.000000000 +0100
  61338. @@ -4,41 +4,11 @@
  61339. *
  61340. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61341. */
  61342. -#include <stdlib.h>
  61343. -#include <syscall.h>
  61344. -#include <sys/types.h>
  61345. #include <sys/wait.h>
  61346. -#include <sys/resource.h>
  61347. +#include <cancel.h>
  61348. -extern __typeof(wait) __libc_wait;
  61349. -/* Wait for a child to die. When one does, put its status in *STAT_LOC
  61350. - * and return its process ID. For errors, return (pid_t) -1. */
  61351. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61352. -#include <errno.h>
  61353. -#include <sysdep-cancel.h>
  61354. -
  61355. -pid_t attribute_hidden
  61356. -__libc_wait (__WAIT_STATUS_DEFN stat_loc)
  61357. -{
  61358. - if (SINGLE_THREAD_P)
  61359. - return INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
  61360. - (struct rusage *) NULL);
  61361. -
  61362. - int oldtype = LIBC_CANCEL_ASYNC ();
  61363. -
  61364. - pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
  61365. - (struct rusage *) NULL);
  61366. -
  61367. - LIBC_CANCEL_RESET (oldtype);
  61368. -
  61369. - return result;
  61370. -}
  61371. -#else
  61372. -/* Wait for a child to die. When one does, put its status in *STAT_LOC
  61373. - * and return its process ID. For errors, return (pid_t) -1. */
  61374. -__pid_t __libc_wait (__WAIT_STATUS_DEFN stat_loc)
  61375. +static pid_t __NC(wait)(__WAIT_STATUS_DEFN stat_loc)
  61376. {
  61377. - return wait4 (WAIT_ANY, stat_loc, 0, (struct rusage *) NULL);
  61378. + return __wait4_nocancel(WAIT_ANY, stat_loc, 0, (struct rusage *)NULL);
  61379. }
  61380. -#endif
  61381. -weak_alias(__libc_wait,wait)
  61382. +CANCELLABLE_SYSCALL(pid_t, wait, (__WAIT_STATUS_DEFN stat_loc), (stat_loc))
  61383. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/waitid.c uClibc/libc/sysdeps/linux/common/waitid.c
  61384. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/waitid.c 2012-05-15 09:20:09.000000000 +0200
  61385. +++ uClibc/libc/sysdeps/linux/common/waitid.c 2014-02-03 12:32:56.000000000 +0100
  61386. @@ -8,43 +8,19 @@
  61387. #include <features.h>
  61388. #if defined __USE_SVID || defined __USE_XOPEN
  61389. -# include <string.h>
  61390. -# include <sys/types.h>
  61391. -# include <sys/wait.h>
  61392. -# include <sys/syscall.h>
  61393. -
  61394. -# ifdef __NR_waitid
  61395. -
  61396. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61397. -# include <sysdep-cancel.h>
  61398. -# else
  61399. -# define SINGLE_THREAD_P 1
  61400. -# endif
  61401. -/* The waitid() POSIX interface takes 4 arguments, but the kernel function
  61402. - * actually takes 5. The fifth is a pointer to struct rusage. Make sure
  61403. - * we pass NULL rather than letting whatever was in the register bleed up.
  61404. - */
  61405. -#define __NR_waitid5 __NR_waitid
  61406. -static __always_inline
  61407. -_syscall5(int, waitid5, idtype_t, idtype, id_t, id, siginfo_t*, infop,
  61408. - int, options, struct rusage*, ru)
  61409. -# endif
  61410. +#include <sys/syscall.h>
  61411. +#include <sys/wait.h>
  61412. +#include <cancel.h>
  61413. +#ifndef __NR_waitid
  61414. +# include <string.h>
  61415. +#endif
  61416. -int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
  61417. +static int __NC(waitid)(idtype_t idtype, id_t id, siginfo_t *infop, int options)
  61418. {
  61419. -# ifdef __NR_waitid
  61420. - if (SINGLE_THREAD_P)
  61421. - return waitid5(idtype, id, infop, options, NULL);
  61422. -
  61423. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61424. - int oldtype = LIBC_CANCEL_ASYNC ();
  61425. - int result = waitid5(idtype, id, infop, options, NULL);
  61426. - LIBC_CANCEL_RESET (oldtype);
  61427. - return result;
  61428. -# endif
  61429. -
  61430. -# elif defined __NR_waitpid
  61431. +#ifdef __NR_waitid
  61432. + return INLINE_SYSCALL(waitid, 5, idtype, id, infop, options, NULL);
  61433. +#else
  61434. switch (idtype) {
  61435. case P_PID:
  61436. if (id <= 0)
  61437. @@ -65,17 +41,17 @@
  61438. }
  61439. memset(infop, 0, sizeof *infop);
  61440. - infop->si_pid = waitpid(id, &infop->si_status, options
  61441. -# ifdef WEXITED
  61442. + infop->si_pid = __NC(waitpid)(id, &infop->si_status, options
  61443. +# ifdef WEXITED
  61444. &~ WEXITED
  61445. -# endif
  61446. +# endif
  61447. );
  61448. if (infop->si_pid < 0)
  61449. return infop->si_pid;
  61450. return 0;
  61451. -# else
  61452. - __set_errno(ENOSYS);
  61453. - return -1;
  61454. -# endif
  61455. +#endif
  61456. }
  61457. +CANCELLABLE_SYSCALL(int, waitid, (idtype_t idtype, id_t id, siginfo_t *infop, int options),
  61458. + (idtype, id, infop, options))
  61459. +
  61460. #endif
  61461. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/waitpid.c uClibc/libc/sysdeps/linux/common/waitpid.c
  61462. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/waitpid.c 2012-05-15 09:20:09.000000000 +0200
  61463. +++ uClibc/libc/sysdeps/linux/common/waitpid.c 2014-02-03 12:32:56.000000000 +0100
  61464. @@ -6,32 +6,16 @@
  61465. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61466. */
  61467. -#include <stdlib.h>
  61468. -#include <sys/types.h>
  61469. #include <sys/wait.h>
  61470. -#include <sys/resource.h>
  61471. +#include <cancel.h>
  61472. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61473. -#include "sysdep-cancel.h"
  61474. -#else
  61475. -#define SINGLE_THREAD_P 1
  61476. -#endif
  61477. -
  61478. -libc_hidden_proto(wait4)
  61479. -
  61480. -extern __typeof(waitpid) __libc_waitpid;
  61481. -__pid_t __libc_waitpid(__pid_t pid, int *wait_stat, int options)
  61482. +pid_t __NC(waitpid)(pid_t pid, int *wait_stat, int options)
  61483. {
  61484. - if (SINGLE_THREAD_P)
  61485. - return wait4(pid, wait_stat, options, NULL);
  61486. -
  61487. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61488. - int oldtype = LIBC_CANCEL_ASYNC ();
  61489. - int result = wait4(pid, wait_stat, options, NULL);
  61490. - LIBC_CANCEL_RESET (oldtype);
  61491. - return result;
  61492. +#if 1 /* kernel/exit.c says to avoid waitpid syscall */
  61493. + return __wait4_nocancel(pid, wait_stat, options, NULL);
  61494. +#else
  61495. + return INLINE_SYSCALL(waitpid, 3, pid, wait_stat, options);
  61496. #endif
  61497. }
  61498. -libc_hidden_proto(waitpid)
  61499. -weak_alias(__libc_waitpid,waitpid)
  61500. -libc_hidden_weak(waitpid)
  61501. +CANCELLABLE_SYSCALL(pid_t, waitpid, (pid_t pid, int *wait_stat, int options), (pid, wait_stat, options))
  61502. +lt_libc_hidden(waitpid)
  61503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/write.c uClibc/libc/sysdeps/linux/common/write.c
  61504. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/write.c 2012-05-15 09:20:09.000000000 +0200
  61505. +++ uClibc/libc/sysdeps/linux/common/write.c 2014-02-03 12:32:56.000000000 +0100
  61506. @@ -9,17 +9,11 @@
  61507. #include <sys/syscall.h>
  61508. #include <unistd.h>
  61509. +#include <cancel.h>
  61510. -_syscall3(ssize_t, write, int, fd, const __ptr_t, buf, size_t, count)
  61511. -#ifndef __LINUXTHREADS_OLD__
  61512. -libc_hidden_def(write)
  61513. -#else
  61514. -libc_hidden_weak(write)
  61515. -strong_alias(write,__libc_write)
  61516. -#endif
  61517. +#define __NR___write_nocancel __NR_write
  61518. +_syscall3(ssize_t, __NC(write), int, fd, const void *, buf, size_t, count)
  61519. -#if 0
  61520. -/* Stupid libgcc.a from gcc 2.95.x uses __write in pure.o
  61521. - * which is a blatant GNU libc-ism... */
  61522. -strong_alias(write,__write)
  61523. -#endif
  61524. +CANCELLABLE_SYSCALL(ssize_t, write, (int fd, const void *buf, size_t count),
  61525. + (fd, buf, count))
  61526. +lt_libc_hidden(write)
  61527. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/writev.c uClibc/libc/sysdeps/linux/common/writev.c
  61528. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/writev.c 2012-05-15 09:20:09.000000000 +0200
  61529. +++ uClibc/libc/sysdeps/linux/common/writev.c 2014-02-03 12:32:56.000000000 +0100
  61530. @@ -9,42 +9,20 @@
  61531. #include <sys/syscall.h>
  61532. #include <sys/uio.h>
  61533. -
  61534. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  61535. -#include <errno.h>
  61536. -#include <sysdep-cancel.h>
  61537. +#include <cancel.h>
  61538. /* We should deal with kernel which have a smaller UIO_FASTIOV as well
  61539. as a very big count. */
  61540. -static ssize_t __writev (int fd, const struct iovec *vector, int count)
  61541. +static ssize_t __NC(writev)(int fd, const struct iovec *vector, int count)
  61542. {
  61543. - ssize_t bytes_written;
  61544. -
  61545. - bytes_written = INLINE_SYSCALL (writev, 3, fd, vector, count);
  61546. -
  61547. - if (bytes_written >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  61548. - return bytes_written;
  61549. -
  61550. - /* glibc tries again, but we do not. */
  61551. - /* return __atomic_writev_replacement (fd, vector, count); */
  61552. -
  61553. - return -1;
  61554. -}
  61555. -
  61556. -ssize_t writev (int fd, const struct iovec *vector, int count)
  61557. -{
  61558. - if (SINGLE_THREAD_P)
  61559. - return __writev (fd, vector, count);
  61560. -
  61561. - int oldtype = LIBC_CANCEL_ASYNC ();
  61562. + ssize_t bytes_written = INLINE_SYSCALL(writev, 3, fd, vector, count);
  61563. - ssize_t result = __writev (fd, vector, count);
  61564. + if (bytes_written >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  61565. + return bytes_written;
  61566. - LIBC_CANCEL_RESET (oldtype);
  61567. + /* glibc tries again, but we do not. */
  61568. + /* return __atomic_writev_replacement (fd, vector, count); */
  61569. - return result;
  61570. + return -1;
  61571. }
  61572. -#else
  61573. -_syscall3(ssize_t, writev, int, filedes, const struct iovec *, vector,
  61574. - int, count)
  61575. -#endif
  61576. +CANCELLABLE_SYSCALL(ssize_t, writev, (int fd, const struct iovec *vector, int count), (fd, vector, count))
  61577. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.c uClibc/libc/sysdeps/linux/common/xstatconv.c
  61578. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.c 2012-05-15 09:20:09.000000000 +0200
  61579. +++ uClibc/libc/sysdeps/linux/common/xstatconv.c 2014-02-03 12:32:56.000000000 +0100
  61580. @@ -13,14 +13,12 @@
  61581. Lesser General Public License for more details.
  61582. You should have received a copy of the GNU Lesser General Public
  61583. - License along with the GNU C Library; if not, write to the Free
  61584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61585. - 02111-1307 USA.
  61586. + License along with the GNU C Library; if not, see
  61587. + <http://www.gnu.org/licenses/>.
  61588. Modified for uClibc by Erik Andersen <andersen@codepoet.org>
  61589. */
  61590. -#include <sys/syscall.h>
  61591. #include <sys/stat.h>
  61592. #include <string.h>
  61593. #include "xstatconv.h"
  61594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.h uClibc/libc/sysdeps/linux/common/xstatconv.h
  61595. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.h 2012-05-15 09:20:09.000000000 +0200
  61596. +++ uClibc/libc/sysdeps/linux/common/xstatconv.h 2014-02-03 12:32:56.000000000 +0100
  61597. @@ -13,9 +13,8 @@
  61598. Lesser General Public License for more details.
  61599. You should have received a copy of the GNU Lesser General Public
  61600. - License along with the GNU C Library; if not, write to the Free
  61601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61602. - 02111-1307 USA.
  61603. + License along with the GNU C Library; if not, see
  61604. + <http://www.gnu.org/licenses/>.
  61605. Modified for uClibc by Erik Andersen <andersen@codepoet.org>
  61606. */
  61607. @@ -23,11 +22,14 @@
  61608. /* Pull in whatever this particular arch's kernel thinks the kernel version of
  61609. * struct stat should look like. It turns out that each arch has a different
  61610. * opinion on the subject, and different kernel revs use different names... */
  61611. +#include <features.h>
  61612. #include <bits/kernel_stat.h>
  61613. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  61614. extern void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf) attribute_hidden;
  61615. extern void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf) attribute_hidden;
  61616. #if defined __UCLIBC_HAS_LFS__
  61617. extern void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf) attribute_hidden;
  61618. #endif
  61619. +#endif
  61620. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/align64bit.h uClibc/libc/sysdeps/linux/common-generic/bits/align64bit.h
  61621. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/align64bit.h 1970-01-01 01:00:00.000000000 +0100
  61622. +++ uClibc/libc/sysdeps/linux/common-generic/bits/align64bit.h 2014-02-03 12:32:56.000000000 +0100
  61623. @@ -0,0 +1,17 @@
  61624. +/*
  61625. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61626. + *
  61627. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61628. + */
  61629. +
  61630. +#ifndef _ALIGN_64_BIT_H
  61631. +#define _ALIGN_64_BIT_H
  61632. +
  61633. +/* Simple macro for getting the 64-bit struct arch alignment */
  61634. +
  61635. +struct __longlong_aligned { long long x; };
  61636. +
  61637. +#define __ARCH_64BIT_ALIGNMENT__ \
  61638. + __attribute__((aligned(__alignof__(struct __longlong_aligned))))
  61639. +
  61640. +#endif /* bits/align64bit.h */
  61641. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/dirent.h uClibc/libc/sysdeps/linux/common-generic/bits/dirent.h
  61642. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/dirent.h 1970-01-01 01:00:00.000000000 +0100
  61643. +++ uClibc/libc/sysdeps/linux/common-generic/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  61644. @@ -0,0 +1,53 @@
  61645. +/*
  61646. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61647. + *
  61648. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61649. + */
  61650. +
  61651. +#ifndef _DIRENT_H
  61652. +# error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  61653. +#endif
  61654. +
  61655. +#include <bits/align64bit.h>
  61656. +#include <endian.h>
  61657. +
  61658. +struct dirent
  61659. + {
  61660. +#ifndef __USE_FILE_OFFSET64
  61661. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  61662. + __U32_TYPE d_ino;
  61663. + __U32_TYPE __pad1;
  61664. + __S32_TYPE d_off;
  61665. + __S32_TYPE __pad2;
  61666. +# else
  61667. + __U32_TYPE __pad1;
  61668. + __U32_TYPE d_ino;
  61669. + __S32_TYPE __pad2;
  61670. + __S32_TYPE d_off;
  61671. +# endif /* __LITTLE_ENDIAN */
  61672. +#else
  61673. + __U64_TYPE d_ino;
  61674. + __S64_TYPE d_off;
  61675. +#endif
  61676. + unsigned short int d_reclen;
  61677. + unsigned char d_type;
  61678. + char d_name[256]; /* We must not include limits.h! */
  61679. + } __ARCH_64BIT_ALIGNMENT__;
  61680. +
  61681. +#ifdef __USE_LARGEFILE64
  61682. +struct dirent64
  61683. + {
  61684. + __U64_TYPE d_ino;
  61685. + __S64_TYPE d_off;
  61686. + unsigned short int d_reclen;
  61687. + unsigned char d_type;
  61688. + char d_name[256]; /* We must not include limits.h! */
  61689. + };
  61690. +#endif
  61691. +
  61692. +#define d_fileno d_ino /* Backwards compatibility. */
  61693. +
  61694. +#undef _DIRENT_HAVE_D_NAMLEN
  61695. +#define _DIRENT_HAVE_D_RECLEN
  61696. +#define _DIRENT_HAVE_D_OFF
  61697. +#define _DIRENT_HAVE_D_TYPE
  61698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/kernel_stat.h uClibc/libc/sysdeps/linux/common-generic/bits/kernel_stat.h
  61699. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/kernel_stat.h 1970-01-01 01:00:00.000000000 +0100
  61700. +++ uClibc/libc/sysdeps/linux/common-generic/bits/kernel_stat.h 2014-02-03 12:32:56.000000000 +0100
  61701. @@ -0,0 +1,28 @@
  61702. +/*
  61703. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61704. + *
  61705. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61706. + */
  61707. +
  61708. +#ifndef _BITS_STAT_STRUCT_H
  61709. +#define _BITS_STAT_STRUCT_H
  61710. +
  61711. +#include <sys/stat.h>
  61712. +
  61713. +/*
  61714. + * The stat structure defined in
  61715. + * libc/sysdeps/linux/common-generic/bits/stat.h
  61716. + * is the same as the kernel one for new architectures
  61717. + *
  61718. + * For the common-generic ABI we really don't need this file at all
  61719. + * However that requires more #ifndef in relevant wrappers,
  61720. + * further uglifying them
  61721. + */
  61722. +#if defined __UCLIBC_HAS_LFS__
  61723. +#define kernel_stat64 stat64
  61724. +#else
  61725. +#define kernel_stat64 stat
  61726. +#endif
  61727. +
  61728. +#endif /* _BITS_STAT_STRUCT_H */
  61729. +
  61730. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/statfs.h uClibc/libc/sysdeps/linux/common-generic/bits/statfs.h
  61731. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100
  61732. +++ uClibc/libc/sysdeps/linux/common-generic/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  61733. @@ -0,0 +1,78 @@
  61734. +/*
  61735. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61736. + *
  61737. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61738. + */
  61739. +
  61740. +#ifndef _SYS_STATFS_H
  61741. +# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  61742. +#endif
  61743. +
  61744. +#include <endian.h>
  61745. +#include <bits/align64bit.h>
  61746. +#include <bits/types.h>
  61747. +
  61748. +
  61749. +struct statfs
  61750. + {
  61751. + __U32_TYPE f_type;
  61752. + __U32_TYPE f_bsize;
  61753. +#ifndef __USE_FILE_OFFSET64
  61754. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  61755. + __U32_TYPE f_blocks;
  61756. + __U32_TYPE __pad1;
  61757. + __U32_TYPE f_bfree;
  61758. + __U32_TYPE __pad2;
  61759. + __U32_TYPE f_bavail;
  61760. + __U32_TYPE __pad3;
  61761. + __U32_TYPE f_files;
  61762. + __U32_TYPE __pad4;
  61763. + __U32_TYPE f_ffree;
  61764. + __U32_TYPE __pad5;
  61765. +# else
  61766. + __U32_TYPE __pad1;
  61767. + __U32_TYPE f_blocks;
  61768. + __U32_TYPE __pad2;
  61769. + __U32_TYPE f_bfree;
  61770. + __U32_TYPE __pad3;
  61771. + __U32_TYPE f_bavail;
  61772. + __U32_TYPE __pad4;
  61773. + __U32_TYPE f_files;
  61774. + __U32_TYPE __pad5;
  61775. + __U32_TYPE f_ffree;
  61776. +# endif /* __LITTLE_ENDIAN */
  61777. +#else
  61778. + __U64_TYPE f_blocks;
  61779. + __U64_TYPE f_bfree;
  61780. + __U64_TYPE f_bavail;
  61781. + __U64_TYPE f_files;
  61782. + __U64_TYPE f_ffree;
  61783. +#endif /* __USE_FILE_OFFSET64 */
  61784. + __fsid_t f_fsid;
  61785. + __U32_TYPE f_namelen;
  61786. + __U32_TYPE f_frsize;
  61787. + __U32_TYPE f_flags;
  61788. + __U32_TYPE f_spare[4];
  61789. + } __ARCH_64BIT_ALIGNMENT__;
  61790. +
  61791. +#ifdef __USE_LARGEFILE64
  61792. +struct statfs64
  61793. + {
  61794. + __U32_TYPE f_type;
  61795. + __U32_TYPE f_bsize;
  61796. + __U64_TYPE f_blocks;
  61797. + __U64_TYPE f_bfree;
  61798. + __U64_TYPE f_bavail;
  61799. + __U64_TYPE f_files;
  61800. + __U64_TYPE f_ffree;
  61801. + __fsid_t f_fsid;
  61802. + __U32_TYPE f_namelen;
  61803. + __U32_TYPE f_frsize;
  61804. + __U32_TYPE f_flags;
  61805. + __U32_TYPE f_spare[4];
  61806. + };
  61807. +#endif
  61808. +
  61809. +/* Tell code we have these members. */
  61810. +#define _STATFS_F_NAMELEN
  61811. +#define _STATFS_F_FRSIZE
  61812. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/stat.h uClibc/libc/sysdeps/linux/common-generic/bits/stat.h
  61813. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/stat.h 1970-01-01 01:00:00.000000000 +0100
  61814. +++ uClibc/libc/sysdeps/linux/common-generic/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  61815. @@ -0,0 +1,195 @@
  61816. +/*
  61817. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61818. + *
  61819. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61820. + */
  61821. +
  61822. +#ifndef _SYS_STAT_H
  61823. +# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  61824. +#endif
  61825. +
  61826. +#include <bits/align64bit.h>
  61827. +#include <endian.h>
  61828. +
  61829. +/* Versions of the `struct stat' data structure. */
  61830. +#define _STAT_VER_LINUX_OLD 1
  61831. +#define _STAT_VER_KERNEL 1
  61832. +#define _STAT_VER_SVR4 2
  61833. +#define _STAT_VER_LINUX 3
  61834. +#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */
  61835. +
  61836. +/* Versions of the `xmknod' interface. */
  61837. +#define _MKNOD_VER_LINUX 1
  61838. +#define _MKNOD_VER_SVR4 2
  61839. +#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
  61840. +
  61841. +/*
  61842. + * For 32-bit architectures, this struct is similar to the stat64 but it
  61843. + * uses 32-bit members along with 32-bit padding. For 64-bit architectures
  61844. + * this struct is exactly the same with the stat64 one
  61845. + */
  61846. +struct stat
  61847. + {
  61848. +#ifndef __USE_FILE_OFFSET64
  61849. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  61850. + unsigned long st_dev; /* Device. */
  61851. + unsigned long __pad1;
  61852. + unsigned long st_ino; /* 32bit file serial number. */
  61853. + unsigned long __pad2;
  61854. + unsigned int st_mode; /* File mode. */
  61855. + unsigned int st_nlink; /* Link count. */
  61856. + unsigned int st_uid; /* User ID of the file's owner. */
  61857. + unsigned int st_gid; /* Group ID of the file's group.*/
  61858. + unsigned long st_rdev; /* Device number, if device. */
  61859. + unsigned long __pad3;
  61860. + unsigned long long __pad4;
  61861. + long st_size; /* SIze of file, in bytes. */
  61862. + long __pad5;
  61863. + int st_blksize; /* Optimal block size for I/O. */
  61864. + int __pad6;
  61865. + long st_blocks; /* Number 512-byte blocks allocated */
  61866. + long __pad7;
  61867. +# else
  61868. + unsigned long __pad1;
  61869. + unsigned long st_dev; /* Device. */
  61870. + unsigned long __pad2;
  61871. + unsigned long st_ino; /* 32bit file serial number. */
  61872. + unsigned int st_mode; /* File mode. */
  61873. + unsigned int st_nlink; /* Link count. */
  61874. + unsigned int st_uid; /* User ID of the file's owner. */
  61875. + unsigned int st_gid; /* Group ID of the file's group.*/
  61876. + unsigned long __pad3;
  61877. + unsigned long st_rdev; /* Device number, if device. */
  61878. + unsigned long long __pad4;
  61879. + long __pad5;
  61880. + long st_size; /* Size of file, in bytes. */
  61881. + int st_blksize; /* Optimal block size for I/O. */
  61882. + int __pad6;
  61883. + long __pad7;
  61884. + long st_blocks; /* Number 512-byte blocks allocated */
  61885. +# endif /* __LITTLE_ENDIAN */
  61886. +#else
  61887. + unsigned long long st_dev; /* Device. */
  61888. + unsigned long long st_ino; /* 32bit file serial number. */
  61889. + unsigned int st_mode; /* File mode. */
  61890. + unsigned int st_nlink; /* Link count. */
  61891. + unsigned int st_uid; /* User ID of the file's owner. */
  61892. + unsigned int st_gid; /* Group ID of the file's group.*/
  61893. + unsigned long long st_rdev; /* Device number, if device. */
  61894. + unsigned long long _pad1;
  61895. + long long st_size; /* SIze of file, in bytes. */
  61896. + int st_blksize; /* Optimal block size for I/O. */
  61897. + int __pad2;
  61898. + long long st_blocks; /* Number 512-byte blocks allocated */
  61899. +#endif
  61900. +#ifdef __USE_MISC
  61901. + /* Nanosecond resolution timestamps are stored in a format
  61902. + equivalent to 'struct timespec'. This is the type used
  61903. + whenever possible but the Unix namespace rules do not allow the
  61904. + identifier 'timespec' to appear in the <sys/stat.h> header.
  61905. + Therefore we have to handle the use of this header in strictly
  61906. + standard-compliant sources special. */
  61907. + struct timespec st_atim; /* Time of last access. */
  61908. + struct timespec st_mtim; /* Time of last modification. */
  61909. + struct timespec st_ctim; /* Time of last status change. */
  61910. +# define st_atime st_atim.tv_sec /* Backward compatibility. */
  61911. +# define st_mtime st_mtim.tv_sec
  61912. +# define st_ctime st_ctim.tv_sec
  61913. +#else
  61914. +# ifndef __USE_FILE_OFFSET64
  61915. + long st_atime; /* Time of last access. */
  61916. + unsigned long st_atime_nsec;
  61917. + long st_mtime; /* Time of last modification. */
  61918. + unsigned long st_mtime_nsec;
  61919. + long st_ctime; /* Time of last status change. */
  61920. + unsigned long st_ctime_nsec;
  61921. +# else
  61922. + int st_atime; /* Time of last access. */
  61923. + unsigned int st_atime_nsec;
  61924. + int st_mtime; /* Time of last modification. */
  61925. + unsigned int st_mtime_nsec;
  61926. + int st_ctime; /* Time of last status change. */
  61927. + unsigned int st_ctime_nsec;
  61928. +# endif
  61929. +#endif
  61930. + unsigned int __unused4;
  61931. + unsigned int __unused5;
  61932. + } __ARCH_64BIT_ALIGNMENT__;
  61933. +
  61934. +
  61935. +#ifdef __USE_LARGEFILE64
  61936. +struct stat64
  61937. + {
  61938. + unsigned long long st_dev; /* Device. */
  61939. + unsigned long long st_ino; /* 32bit file serial number. */
  61940. + unsigned int st_mode; /* File mode. */
  61941. + unsigned int st_nlink; /* Link count. */
  61942. + unsigned int st_uid; /* User ID of the file's owner. */
  61943. + unsigned int st_gid; /* Group ID of the file's group.*/
  61944. + unsigned long long st_rdev; /* Device number, if device. */
  61945. + unsigned long long __pad3;
  61946. + long long st_size; /* Size of file, in bytes. */
  61947. + int st_blksize; /* Optimal block size for I/O. */
  61948. + int __pad4;
  61949. + long long st_blocks; /* Number 512-byte blocks allocated */
  61950. +# ifdef __USE_MISC
  61951. + /* Nanosecond resolution timestamps are stored in a format
  61952. + equivalent to 'struct timespec'. This is the type used
  61953. + whenever possible but the Unix namespace rules do not allow the
  61954. + identifier 'timespec' to appear in the <sys/stat.h> header.
  61955. + Therefore we have to handle the use of this header in strictly
  61956. + standard-compliant sources special. */
  61957. + struct timespec st_atim; /* Time of last access. */
  61958. + struct timespec st_mtim; /* Time of last modification. */
  61959. + struct timespec st_ctim; /* Time of last status change. */
  61960. +# else
  61961. + int st_atime; /* Time of last access. */
  61962. + unsigned int st_atime_nsec;
  61963. + int st_mtime; /* Time of last modification. */
  61964. + unsigned int st_mtime_nsec;
  61965. + int st_ctime; /* Time of last status change. */
  61966. + unsigned int st_ctime_nsec;
  61967. +# endif
  61968. + unsigned int __unused4;
  61969. + unsigned int __unused5;
  61970. +};
  61971. +#endif
  61972. +
  61973. +/* Tell code we have these members. */
  61974. +#define _STATBUF_ST_BLKSIZE
  61975. +#define _STATBUF_ST_RDEV
  61976. +/* Nanosecond resolution time values are supported. */
  61977. +#define _STATBUF_ST_NSEC
  61978. +
  61979. +/* Encoding of the file mode. */
  61980. +
  61981. +#define __S_IFMT 0170000 /* These bits determine file type. */
  61982. +
  61983. +/* File types. */
  61984. +#define __S_IFDIR 0040000 /* Directory. */
  61985. +#define __S_IFCHR 0020000 /* Character device. */
  61986. +#define __S_IFBLK 0060000 /* Block device. */
  61987. +#define __S_IFREG 0100000 /* Regular file. */
  61988. +#define __S_IFIFO 0010000 /* FIFO. */
  61989. +#define __S_IFLNK 0120000 /* Symbolic link. */
  61990. +#define __S_IFSOCK 0140000 /* Socket. */
  61991. +
  61992. +/* POSIX.1b objects. Note that these macros always evaluate to zero. But
  61993. + they do it by enforcing the correct use of the macros. */
  61994. +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
  61995. +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
  61996. +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
  61997. +
  61998. +/* Protection bits. */
  61999. +
  62000. +#define __S_ISUID 04000 /* Set user ID on execution. */
  62001. +#define __S_ISGID 02000 /* Set group ID on execution. */
  62002. +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
  62003. +#define __S_IREAD 0400 /* Read by owner. */
  62004. +#define __S_IWRITE 0200 /* Write by owner. */
  62005. +#define __S_IEXEC 0100 /* Execute by owner. */
  62006. +
  62007. +#ifdef __USE_ATFILE
  62008. +# define UTIME_NOW ((1l << 30) - 1l)
  62009. +# define UTIME_OMIT ((1l << 30) - 2l)
  62010. +#endif
  62011. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/fcntl.h uClibc/libc/sysdeps/linux/cris/bits/fcntl.h
  62012. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62013. +++ uClibc/libc/sysdeps/linux/cris/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62014. @@ -14,9 +14,8 @@
  62015. Lesser General Public License for more details.
  62016. You should have received a copy of the GNU Lesser General Public
  62017. - License along with the GNU C Library; if not, write to the Free
  62018. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62019. - 02111-1307 USA. */
  62020. + License along with the GNU C Library; if not, see
  62021. + <http://www.gnu.org/licenses/>. */
  62022. #ifndef _FCNTL_H
  62023. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62024. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/kernel_types.h uClibc/libc/sysdeps/linux/cris/bits/kernel_types.h
  62025. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  62026. +++ uClibc/libc/sysdeps/linux/cris/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  62027. @@ -28,6 +28,8 @@
  62028. typedef unsigned short __kernel_old_uid_t;
  62029. typedef unsigned short __kernel_old_gid_t;
  62030. typedef __kernel_dev_t __kernel_old_dev_t;
  62031. +typedef long __kernel_long_t;
  62032. +typedef unsigned long __kernel_ulong_t;
  62033. #ifdef __GNUC__
  62034. typedef long long __kernel_loff_t;
  62035. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/setjmp.h uClibc/libc/sysdeps/linux/cris/bits/setjmp.h
  62036. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  62037. +++ uClibc/libc/sysdeps/linux/cris/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  62038. @@ -1,4 +1,4 @@
  62039. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  62040. +/* Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
  62041. This file is part of the GNU C Library.
  62042. The GNU C Library is free software; you can redistribute it and/or
  62043. @@ -12,11 +12,10 @@
  62044. Lesser General Public License for more details.
  62045. You should have received a copy of the GNU Lesser General Public
  62046. - License along with the GNU C Library; if not, write to the Free
  62047. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62048. - 02111-1307 USA. */
  62049. + License along with the GNU C Library; if not, see
  62050. + <http://www.gnu.org/licenses/>. */
  62051. -/* Define the machine-dependent type `jmp_buf'. CRIS version. */
  62052. +/* Define the machine-dependent type `jmp_buf', CRIS version. */
  62053. #ifndef _BITS_SETJMP_H
  62054. #define _BITS_SETJMP_H 1
  62055. @@ -24,10 +23,8 @@
  62056. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  62057. #endif
  62058. -/*
  62059. - Note that we save and restore CCR to be able to
  62060. - correctly handle DI/EI. Note also that the "move x,ccr" does NOT affect
  62061. - the DMA enable bits (E and D).
  62062. +/* Note that saving and restoring CCR has no meaning in user mode, so we
  62063. + don't actually do it; the slot is now reserved.
  62064. jmp_buf[0] - PC
  62065. jmp_buf[1] - SP (R14)
  62066. @@ -46,21 +43,8 @@
  62067. jmp_buf[14] - R1
  62068. jmp_buf[15] - R0
  62069. jmp_buf[16] - SRP
  62070. - jmp_buf[17] - CCR
  62071. - */
  62072. + jmp_buf[17] - CCR */
  62073. -#define _JBLEN 18
  62074. -#if defined (__USE_MISC) || defined (_ASM)
  62075. -#define JB_SP 1
  62076. -#endif
  62077. -
  62078. -#ifndef _ASM
  62079. -typedef int __jmp_buf[_JBLEN];
  62080. -#endif
  62081. -
  62082. -/* Test if longjmp to JMPBUF would unwind the frame
  62083. - containing a local variable at ADDRESS. */
  62084. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62085. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  62086. +typedef int __jmp_buf[18];
  62087. #endif /* bits/setjmp.h */
  62088. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/stackinfo.h uClibc/libc/sysdeps/linux/cris/bits/stackinfo.h
  62089. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  62090. +++ uClibc/libc/sysdeps/linux/cris/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  62091. @@ -12,9 +12,8 @@
  62092. Lesser General Public License for more details.
  62093. You should have received a copy of the GNU Lesser General Public
  62094. - License along with the GNU C Library; if not, write to the Free
  62095. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62096. - 02111-1307 USA. */
  62097. + License along with the GNU C Library; if not, see
  62098. + <http://www.gnu.org/licenses/>. */
  62099. /* This file contains a bit of information about the stack allocation
  62100. of the processor. */
  62101. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/termios.h uClibc/libc/sysdeps/linux/cris/bits/termios.h
  62102. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  62103. +++ uClibc/libc/sysdeps/linux/cris/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  62104. @@ -14,9 +14,8 @@
  62105. Lesser General Public License for more details.
  62106. You should have received a copy of the GNU Lesser General Public
  62107. - License along with the GNU C Library; if not, write to the Free
  62108. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62109. - 02111-1307 USA. */
  62110. + License along with the GNU C Library; if not, see
  62111. + <http://www.gnu.org/licenses/>. */
  62112. #ifndef _TERMIOS_H
  62113. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  62114. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
  62115. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  62116. +++ uClibc/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  62117. @@ -12,8 +12,8 @@
  62118. /* can your target use syscall6() for mmap ? */
  62119. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  62120. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  62121. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  62122. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  62123. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  62124. /* does your target have a broken create_module() ? */
  62125. #define __UCLIBC_BROKEN_CREATE_MODULE__
  62126. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_page.h uClibc/libc/sysdeps/linux/cris/bits/uClibc_page.h
  62127. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  62128. +++ uClibc/libc/sysdeps/linux/cris/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  62129. @@ -11,8 +11,8 @@
  62130. * Library General Public License for more details.
  62131. *
  62132. * You should have received a copy of the GNU Library General Public
  62133. - * License along with this library; if not, write to the Free
  62134. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  62135. + * License along with this library; if not, see
  62136. + * <http://www.gnu.org/licenses/>.
  62137. */
  62138. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  62139. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/wordsize.h uClibc/libc/sysdeps/linux/cris/bits/wordsize.h
  62140. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  62141. +++ uClibc/libc/sysdeps/linux/cris/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  62142. @@ -13,7 +13,6 @@
  62143. You should have received a copy of the GNU Library General Public
  62144. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62145. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62146. - Boston, MA 02111-1307, USA. */
  62147. + see <http://www.gnu.org/licenses/>. */
  62148. #define __WORDSIZE 32
  62149. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/clone.S uClibc/libc/sysdeps/linux/cris/clone.S
  62150. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/clone.S 2012-05-15 09:20:09.000000000 +0200
  62151. +++ uClibc/libc/sysdeps/linux/cris/clone.S 2014-02-03 12:32:56.000000000 +0100
  62152. @@ -13,8 +13,7 @@
  62153. You should have received a copy of the GNU Library General Public
  62154. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62155. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62156. - Boston, MA 02111-1307, USA. */
  62157. + see <http://www.gnu.org/licenses/>. */
  62158. #include <features.h>
  62159. #include <sys/syscall.h>
  62160. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/fork.c uClibc/libc/sysdeps/linux/cris/fork.c
  62161. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/fork.c 2012-05-15 09:20:09.000000000 +0200
  62162. +++ uClibc/libc/sysdeps/linux/cris/fork.c 1970-01-01 01:00:00.000000000 +0100
  62163. @@ -1,18 +0,0 @@
  62164. -/*
  62165. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62166. - *
  62167. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62168. - */
  62169. -
  62170. -#include "sysdep.h"
  62171. -
  62172. -#define __NR___libc_fork __NR_fork
  62173. -SYSCALL__ (__libc_fork, 0)
  62174. - /* R1 is now 0 for the parent and 1 for the child. Decrement it to
  62175. - make it -1 (all bits set) for the parent, and 0 (no bits set)
  62176. - for the child. Then AND it with R0, so the parent gets
  62177. - R0&-1==R0, and the child gets R0&0==0. */
  62178. - /* i dunno what the blurb above is useful for. we just return. */
  62179. -__asm__("ret\n\tnop");
  62180. -weak_alias(__libc_fork,fork)
  62181. -libc_hidden_weak(fork)
  62182. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/cris/jmpbuf-offsets.h
  62183. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  62184. +++ uClibc/libc/sysdeps/linux/cris/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  62185. @@ -0,0 +1,8 @@
  62186. +/* Private macros for accessing __jmp_buf contents. BFIN version. */
  62187. +/*
  62188. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62189. + *
  62190. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62191. + */
  62192. +
  62193. +#define JB_SP 1
  62194. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/cris/jmpbuf-unwind.h
  62195. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  62196. +++ uClibc/libc/sysdeps/linux/cris/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  62197. @@ -0,0 +1,12 @@
  62198. +/*
  62199. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62200. + *
  62201. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62202. + */
  62203. +#include <setjmp.h>
  62204. +#include <jmpbuf-offsets.h>
  62205. +
  62206. +/* Test if longjmp to JMPBUF would unwind the frame
  62207. + containing a local variable at ADDRESS. */
  62208. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62209. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  62210. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/__longjmp.S uClibc/libc/sysdeps/linux/cris/__longjmp.S
  62211. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  62212. +++ uClibc/libc/sysdeps/linux/cris/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  62213. @@ -14,14 +14,9 @@
  62214. You should have received a copy of the GNU Library General Public
  62215. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62216. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62217. - Boston, MA 02111-1307, USA. */
  62218. + see <http://www.gnu.org/licenses/>. */
  62219. -#include <features.h>
  62220. #include "sysdep.h"
  62221. -#define _SETJMP_H
  62222. -#define _ASM
  62223. -#include <bits/setjmp.h>
  62224. .syntax no_register_prefix
  62225. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/Makefile.arch uClibc/libc/sysdeps/linux/cris/Makefile.arch
  62226. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  62227. +++ uClibc/libc/sysdeps/linux/cris/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  62228. @@ -5,9 +5,7 @@
  62229. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62230. #
  62231. -CSRC := __init_brk.c brk.c sbrk.c
  62232. +CSRC-y := __init_brk.c brk.c sbrk.c
  62233. -SSRC := setjmp.S __longjmp.S clone.S sysdep.S syscall.S vfork.S
  62234. -ifeq ($(UNIFIED_SYSCALL),y)
  62235. -SSRC += __uClibc_syscall.S
  62236. -endif
  62237. +SSRC-y := setjmp.S __longjmp.S clone.S sysdep.S syscall.S vfork.S
  62238. +SSRC-$(UNIFIED_SYSCALL) += __uClibc_syscall.S
  62239. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/setjmp.S uClibc/libc/sysdeps/linux/cris/setjmp.S
  62240. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62241. +++ uClibc/libc/sysdeps/linux/cris/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62242. @@ -14,13 +14,9 @@
  62243. You should have received a copy of the GNU Library General Public
  62244. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62245. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62246. - Boston, MA 02111-1307, USA. */
  62247. + see <http://www.gnu.org/licenses/>. */
  62248. #include "sysdep.h"
  62249. -#define _SETJMP_H
  62250. -#define _ASM
  62251. -#include <bits/setjmp.h>
  62252. .syntax no_register_prefix
  62253. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/procfs.h uClibc/libc/sysdeps/linux/cris/sys/procfs.h
  62254. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62255. +++ uClibc/libc/sysdeps/linux/cris/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62256. @@ -13,8 +13,7 @@
  62257. You should have received a copy of the GNU Library General Public
  62258. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62259. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62260. - Boston, MA 02111-1307, USA. */
  62261. + see <http://www.gnu.org/licenses/>. */
  62262. #ifndef _SYS_PROCFS_H
  62263. #define _SYS_PROCFS_H 1
  62264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/ucontext.h uClibc/libc/sysdeps/linux/cris/sys/ucontext.h
  62265. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62266. +++ uClibc/libc/sysdeps/linux/cris/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62267. @@ -12,9 +12,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. /* System V/cris ABI compliant context switching support. */
  62276. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/syscall.S uClibc/libc/sysdeps/linux/cris/syscall.S
  62277. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/syscall.S 2012-05-15 09:20:09.000000000 +0200
  62278. +++ uClibc/libc/sysdeps/linux/cris/syscall.S 2014-02-03 12:32:56.000000000 +0100
  62279. @@ -13,8 +13,7 @@
  62280. You should have received a copy of the GNU Library General Public
  62281. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62282. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62283. - Boston, MA 02111-1307, USA. */
  62284. + see <http://www.gnu.org/licenses/>. */
  62285. #include "sysdep.h"
  62286. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.h uClibc/libc/sysdeps/linux/cris/sysdep.h
  62287. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  62288. +++ uClibc/libc/sysdeps/linux/cris/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  62289. @@ -14,13 +14,12 @@
  62290. You should have received a copy of the GNU Library General Public
  62291. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62292. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62293. - Boston, MA 02111-1307, USA. */
  62294. + see <http://www.gnu.org/licenses/>. */
  62295. #ifndef _SYSDEP_H_
  62296. #define _SYSDEP_H_
  62297. -#include <sys/syscall.h>
  62298. +#include <common/sysdep.h>
  62299. #ifndef C_LABEL
  62300. @@ -126,6 +125,14 @@
  62301. ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), function) @ \
  62302. .align ALIGNARG (2) @ \
  62303. C_LABEL(name)
  62304. +
  62305. +#define HIDDEN_ENTRY(name) \
  62306. + .text @ \
  62307. + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name) @ \
  62308. + .hidden C_SYMBOL_NAME (name) @ \
  62309. + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), function) @ \
  62310. + .align ALIGNARG (2) @ \
  62311. + C_LABEL(name)
  62312. #undef END
  62313. #define END(name) \
  62314. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.S uClibc/libc/sysdeps/linux/cris/sysdep.S
  62315. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.S 2012-05-15 09:20:09.000000000 +0200
  62316. +++ uClibc/libc/sysdeps/linux/cris/sysdep.S 2014-02-03 12:32:56.000000000 +0100
  62317. @@ -13,8 +13,7 @@
  62318. You should have received a copy of the GNU Library General Public
  62319. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62320. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62321. - Boston, MA 02111-1307, USA. */
  62322. + see <http://www.gnu.org/licenses/>. */
  62323. #include <features.h>
  62324. #include "sysdep.h"
  62325. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/vfork.S uClibc/libc/sysdeps/linux/cris/vfork.S
  62326. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/vfork.S 2012-05-15 09:20:09.000000000 +0200
  62327. +++ uClibc/libc/sysdeps/linux/cris/vfork.S 2014-02-03 12:32:56.000000000 +0100
  62328. @@ -16,7 +16,7 @@
  62329. * enclosing function
  62330. */
  62331. -ENTRY(__vfork)
  62332. +HIDDEN_ENTRY(__vfork)
  62333. movu.w __NR_vfork,$r9
  62334. break 13
  62335. cmps.w -4096,$r10
  62336. @@ -27,4 +27,4 @@
  62337. PSEUDO_END(__vfork)
  62338. weak_alias(__vfork,vfork)
  62339. -libc_hidden_weak(vfork)
  62340. +libc_hidden_def(vfork)
  62341. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fcntl.h uClibc/libc/sysdeps/linux/e1/bits/fcntl.h
  62342. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62343. +++ uClibc/libc/sysdeps/linux/e1/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62344. @@ -13,9 +13,8 @@
  62345. Lesser General Public License for more details.
  62346. You should have received a copy of the GNU Lesser General Public
  62347. - License along with the GNU C Library; if not, write to the Free
  62348. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62349. - 02111-1307 USA. */
  62350. + License along with the GNU C Library; if not, see
  62351. + <http://www.gnu.org/licenses/>. */
  62352. #ifndef _FCNTL_H
  62353. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62354. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenv.h uClibc/libc/sysdeps/linux/e1/bits/fenv.h
  62355. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  62356. +++ uClibc/libc/sysdeps/linux/e1/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  62357. @@ -15,9 +15,8 @@
  62358. Lesser General Public License for more details.
  62359. You should have received a copy of the GNU Lesser General Public
  62360. - License along with the GNU C Library; if not, write to the Free
  62361. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62362. - 02111-1307 USA. */
  62363. + License along with the GNU C Library; if not, see
  62364. + <http://www.gnu.org/licenses/>. */
  62365. #ifndef _FENV_H
  62366. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  62367. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenvinline.h uClibc/libc/sysdeps/linux/e1/bits/fenvinline.h
  62368. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenvinline.h 2012-05-15 09:20:09.000000000 +0200
  62369. +++ uClibc/libc/sysdeps/linux/e1/bits/fenvinline.h 2014-02-03 12:32:56.000000000 +0100
  62370. @@ -16,9 +16,8 @@
  62371. Lesser General Public License for more details.
  62372. You should have received a copy of the GNU Lesser General Public
  62373. - License along with the GNU C Library; if not, write to the Free
  62374. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62375. - 02111-1307 USA. */
  62376. + License along with the GNU C Library; if not, see
  62377. + <http://www.gnu.org/licenses/>. */
  62378. #if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_MATH_INLINES
  62379. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/kernel_types.h uClibc/libc/sysdeps/linux/e1/bits/kernel_types.h
  62380. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  62381. +++ uClibc/libc/sysdeps/linux/e1/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  62382. @@ -31,6 +31,8 @@
  62383. typedef unsigned short __kernel_old_uid_t;
  62384. typedef unsigned short __kernel_old_gid_t;
  62385. typedef __kernel_dev_t __kernel_old_dev_t;
  62386. +typedef long __kernel_long_t;
  62387. +typedef unsigned long __kernel_ulong_t;
  62388. typedef long long __kernel_loff_t;
  62389. /*
  62390. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
  62391. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  62392. +++ uClibc/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  62393. @@ -12,8 +12,8 @@
  62394. /* can your target use syscall6() for mmap ? */
  62395. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  62396. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  62397. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  62398. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  62399. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  62400. /* does your target have a broken create_module() ? */
  62401. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  62402. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/unistd.h uClibc/libc/sysdeps/linux/e1/bits/unistd.h
  62403. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/unistd.h 2012-05-15 09:20:09.000000000 +0200
  62404. +++ uClibc/libc/sysdeps/linux/e1/bits/unistd.h 2014-02-03 12:32:56.000000000 +0100
  62405. @@ -378,13 +378,6 @@
  62406. return (type)(par1); \
  62407. }
  62408. -#include <sys/types.h>
  62409. -/* Taken from <bits/errno.h> */
  62410. -#ifndef _LIBC
  62411. -/* We don't support pthreads for the moment*/
  62412. -#define __set_errno(val) ((errno) = (val))
  62413. -#endif
  62414. -
  62415. #if 0
  62416. #define _syscall3(type, name,atype, a , btype, b, ctype, c) \
  62417. type name(atype a, btype b, ctype c,) \
  62418. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/wordsize.h uClibc/libc/sysdeps/linux/e1/bits/wordsize.h
  62419. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  62420. +++ uClibc/libc/sysdeps/linux/e1/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  62421. @@ -15,8 +15,7 @@
  62422. Lesser General Public License for more details.
  62423. You should have received a copy of the GNU Lesser General Public
  62424. - License along with the GNU C Library; if not, write to the Free
  62425. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62426. - 02111-1307 USA. */
  62427. + License along with the GNU C Library; if not, see
  62428. + <http://www.gnu.org/licenses/>. */
  62429. #define __WORDSIZE 32
  62430. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/crt1.c uClibc/libc/sysdeps/linux/e1/crt1.c
  62431. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/crt1.c 2012-05-15 09:20:09.000000000 +0200
  62432. +++ uClibc/libc/sysdeps/linux/e1/crt1.c 2014-02-03 12:32:56.000000000 +0100
  62433. @@ -18,8 +18,8 @@
  62434. * for more details.
  62435. *
  62436. * You should have received a copy of the GNU Library General Public License
  62437. - * along with this program; if not, write to the Free Software Foundation,
  62438. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  62439. + * along with this program; see the file COPYING.LIB. If not, see
  62440. + * <http://www.gnu.org/licenses/>.
  62441. */
  62442. /* Stick in a dummy reference to main(), so that if an application
  62443. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/Makefile uClibc/libc/sysdeps/linux/e1/Makefile
  62444. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/Makefile 2012-05-15 09:20:09.000000000 +0200
  62445. +++ uClibc/libc/sysdeps/linux/e1/Makefile 2014-02-03 12:32:56.000000000 +0100
  62446. @@ -17,7 +17,7 @@
  62447. CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
  62448. # why is crt1.c listed in CSRC ?
  62449. -CSRC := crt1.c syscalls.c longjmp.c setjmp.c vfork.c
  62450. +CSRC := crt1.c syscalls.c longjmp.c setjmp.c
  62451. OBJS := $(patsubst %.c,%.o, $(CSRC))
  62452. OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH)
  62453. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/procfs.h uClibc/libc/sysdeps/linux/e1/sys/procfs.h
  62454. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62455. +++ uClibc/libc/sysdeps/linux/e1/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62456. @@ -12,9 +12,8 @@
  62457. Lesser General Public License for more details.
  62458. You should have received a copy of the GNU Lesser General Public
  62459. - License along with the GNU C Library; if not, write to the Free
  62460. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62461. - 02111-1307 USA. */
  62462. + License along with the GNU C Library; if not, see
  62463. + <http://www.gnu.org/licenses/>. */
  62464. #ifndef _SYS_PROCFS_H
  62465. #define _SYS_PROCFS_H 1
  62466. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/reg.h uClibc/libc/sysdeps/linux/e1/sys/reg.h
  62467. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  62468. +++ uClibc/libc/sysdeps/linux/e1/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  62469. @@ -12,9 +12,8 @@
  62470. Lesser General Public License for more details.
  62471. You should have received a copy of the GNU Lesser General Public
  62472. - License along with the GNU C Library; if not, write to the Free
  62473. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62474. - 02111-1307 USA. */
  62475. + License along with the GNU C Library; if not, see
  62476. + <http://www.gnu.org/licenses/>. */
  62477. #ifndef _SYS_REG_H
  62478. #define _SYS_REG_H 1
  62479. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/ucontext.h uClibc/libc/sysdeps/linux/e1/sys/ucontext.h
  62480. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62481. +++ uClibc/libc/sysdeps/linux/e1/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62482. @@ -12,9 +12,8 @@
  62483. Lesser General Public License for more details.
  62484. You should have received a copy of the GNU Lesser General Public
  62485. - License along with the GNU C Library; if not, write to the Free
  62486. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62487. - 02111-1307 USA. */
  62488. + License along with the GNU C Library; if not, see
  62489. + <http://www.gnu.org/licenses/>. */
  62490. /* System V/m68k ABI compliant context switching support. */
  62491. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/vfork.c uClibc/libc/sysdeps/linux/e1/vfork.c
  62492. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/vfork.c 2012-05-15 09:20:09.000000000 +0200
  62493. +++ uClibc/libc/sysdeps/linux/e1/vfork.c 1970-01-01 01:00:00.000000000 +0100
  62494. @@ -1,14 +0,0 @@
  62495. -/*
  62496. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62497. - *
  62498. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62499. - */
  62500. -
  62501. -#include <sys/types.h>
  62502. -#include <sys/syscall.h>
  62503. -#include <errno.h>
  62504. -
  62505. -#define __NR___vfork __NR_vfork
  62506. -attribute_hidden _syscall0(pid_t, __vfork)
  62507. -weak_alias(__vfork,vfork)
  62508. -libc_hidden_weak(vfork)
  62509. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/elf-fdpic.h uClibc/libc/sysdeps/linux/frv/bits/elf-fdpic.h
  62510. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/elf-fdpic.h 2012-05-15 09:20:09.000000000 +0200
  62511. +++ uClibc/libc/sysdeps/linux/frv/bits/elf-fdpic.h 2014-02-03 12:32:56.000000000 +0100
  62512. @@ -22,8 +22,7 @@
  62513. You should have received a copy of the GNU Lesser General Public
  62514. License along with the GNU C Library; see the file COPYING.LIB. If
  62515. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62516. -Cambridge, MA 02139, USA. */
  62517. +not, see <http://www.gnu.org/licenses/>. */
  62518. #ifndef _BITS_ELF_FDPIC_H
  62519. #define _BITS_ELF_FDPIC_H
  62520. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/fcntl.h uClibc/libc/sysdeps/linux/frv/bits/fcntl.h
  62521. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62522. +++ uClibc/libc/sysdeps/linux/frv/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62523. @@ -13,9 +13,8 @@
  62524. Lesser General Public License for more details.
  62525. You should have received a copy of the GNU Lesser General Public
  62526. - License along with the GNU C Library; if not, write to the Free
  62527. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62528. - 02111-1307 USA. */
  62529. + License along with the GNU C Library; if not, see
  62530. + <http://www.gnu.org/licenses/>. */
  62531. #ifndef _FCNTL_H
  62532. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62533. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/setjmp.h uClibc/libc/sysdeps/linux/frv/bits/setjmp.h
  62534. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  62535. +++ uClibc/libc/sysdeps/linux/frv/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  62536. @@ -12,9 +12,8 @@
  62537. Lesser General Public License for more details.
  62538. You should have received a copy of the GNU Lesser General Public
  62539. - License along with the GNU C Library; if not, write to the Free
  62540. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62541. - 02111-1307 USA. */
  62542. + License along with the GNU C Library; if not, see
  62543. + <http://www.gnu.org/licenses/>. */
  62544. /* Define the machine-dependent type `jmp_buf'. FRV version. */
  62545. @@ -35,7 +34,6 @@
  62546. #define __SETJMP_FP (__SETJMP_SP+1)
  62547. -#ifndef _ASM
  62548. typedef struct
  62549. /* Demand 64-bit alignment such that we can use std/ldd in
  62550. setjmp/longjmp. */
  62551. @@ -48,11 +46,5 @@
  62552. unsigned long __sp; /* stack pointer */
  62553. unsigned long __fp; /* frame pointer */
  62554. } __jmp_buf[1];
  62555. -#endif
  62556. -
  62557. -/* Test if longjmp to JMPBUF would unwind the frame
  62558. - containing a local variable at ADDRESS. */
  62559. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62560. - ((void *) (address) < (void *) (jmpbuf)->__sp)
  62561. #endif /* bits/setjmp.h */
  62562. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stackinfo.h uClibc/libc/sysdeps/linux/frv/bits/stackinfo.h
  62563. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  62564. +++ uClibc/libc/sysdeps/linux/frv/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  62565. @@ -12,9 +12,8 @@
  62566. Lesser General Public License for more details.
  62567. You should have received a copy of the GNU Lesser General Public
  62568. - License along with the GNU C Library; if not, write to the Free
  62569. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62570. - 02111-1307 USA. */
  62571. + License along with the GNU C Library; if not, see
  62572. + <http://www.gnu.org/licenses/>. */
  62573. /* This file contains a bit of information about the stack allocation
  62574. of the processor. */
  62575. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stat.h uClibc/libc/sysdeps/linux/frv/bits/stat.h
  62576. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  62577. +++ uClibc/libc/sysdeps/linux/frv/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  62578. @@ -12,9 +12,8 @@
  62579. Lesser General Public License for more details.
  62580. You should have received a copy of the GNU Lesser General Public
  62581. - License along with the GNU C Library; if not, write to the Free
  62582. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62583. - 02111-1307 USA. */
  62584. + License along with the GNU C Library; if not, see
  62585. + <http://www.gnu.org/licenses/>. */
  62586. #ifndef _SYS_STAT_H
  62587. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  62588. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/syscalls.h uClibc/libc/sysdeps/linux/frv/bits/syscalls.h
  62589. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  62590. +++ uClibc/libc/sysdeps/linux/frv/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  62591. @@ -15,8 +15,7 @@
  62592. # define __syscall_return(type, res) \
  62593. do { \
  62594. unsigned long __sr2 = (res); \
  62595. - if (__builtin_expect ((unsigned long)(__sr2) \
  62596. - >= (unsigned long)(-4095), 0)) { \
  62597. + if (unlikely ((unsigned long)(__sr2) >= (unsigned long)(-4095))) { \
  62598. extern int __syscall_error (int); \
  62599. return (type) __syscall_error (__sr2); \
  62600. } \
  62601. @@ -26,8 +25,7 @@
  62602. # define __syscall_return(type, res) \
  62603. do { \
  62604. unsigned long __sr2 = (res); \
  62605. - if (__builtin_expect ((unsigned long)(__sr2) \
  62606. - >= (unsigned long)(-4095), 0)) { \
  62607. + if (unlikely ((unsigned long)(__sr2) >= (unsigned long)(-4095))) { \
  62608. __set_errno (-__sr2); \
  62609. __sr2 = -1; \
  62610. } \
  62611. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
  62612. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  62613. +++ uClibc/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  62614. @@ -12,8 +12,8 @@
  62615. /* can your target use syscall6() for mmap ? */
  62616. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  62617. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  62618. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  62619. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  62620. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  62621. /* does your target have a broken create_module() ? */
  62622. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  62623. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_page.h uClibc/libc/sysdeps/linux/frv/bits/uClibc_page.h
  62624. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  62625. +++ uClibc/libc/sysdeps/linux/frv/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  62626. @@ -11,8 +11,8 @@
  62627. * Library General Public License for more details.
  62628. *
  62629. * You should have received a copy of the GNU Library General Public
  62630. - * License along with this library; if not, write to the Free
  62631. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  62632. + * License along with this library; if not, see
  62633. + * <http://www.gnu.org/licenses/>.
  62634. */
  62635. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  62636. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/wordsize.h uClibc/libc/sysdeps/linux/frv/bits/wordsize.h
  62637. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  62638. +++ uClibc/libc/sysdeps/linux/frv/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  62639. @@ -12,8 +12,7 @@
  62640. Lesser General Public License for more details.
  62641. You should have received a copy of the GNU Lesser General Public
  62642. - License along with the GNU C Library; if not, write to the Free
  62643. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62644. - 02111-1307 USA. */
  62645. + License along with the GNU C Library; if not, see
  62646. + <http://www.gnu.org/licenses/>. */
  62647. #define __WORDSIZE 32
  62648. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/clone.S uClibc/libc/sysdeps/linux/frv/clone.S
  62649. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/clone.S 2012-05-15 09:20:09.000000000 +0200
  62650. +++ uClibc/libc/sysdeps/linux/frv/clone.S 2014-02-03 12:32:56.000000000 +0100
  62651. @@ -13,9 +13,8 @@
  62652. Lesser General Public License for more details.
  62653. You should have received a copy of the GNU Lesser General Public
  62654. - License along with the GNU C Library; if not, write to the Free
  62655. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62656. - 02111-1307 USA. */
  62657. + License along with the GNU C Library; if not, see
  62658. + <http://www.gnu.org/licenses/>. */
  62659. /* clone() is even more special than fork() as it mucks with stacks
  62660. and invokes a function in the right context after its all over. */
  62661. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crt0.S uClibc/libc/sysdeps/linux/frv/crt0.S
  62662. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crt0.S 2012-05-15 09:20:09.000000000 +0200
  62663. +++ uClibc/libc/sysdeps/linux/frv/crt0.S 2014-02-03 12:32:56.000000000 +0100
  62664. @@ -22,8 +22,7 @@
  62665. You should have received a copy of the GNU Lesser General Public
  62666. License along with the GNU C Library; see the file COPYING.LIB. If
  62667. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62668. -Cambridge, MA 02139, USA. */
  62669. +not, see <http://www.gnu.org/licenses/>. */
  62670. /* Based on ../i386/crt0.S and newlib's libgloss/frv/crt0.S */
  62671. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crti.S uClibc/libc/sysdeps/linux/frv/crti.S
  62672. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crti.S 2012-05-15 09:20:09.000000000 +0200
  62673. +++ uClibc/libc/sysdeps/linux/frv/crti.S 2014-02-03 12:32:56.000000000 +0100
  62674. @@ -22,8 +22,7 @@
  62675. You should have received a copy of the GNU Lesser General Public
  62676. License along with the GNU C Library; see the file COPYING.LIB. If
  62677. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62678. -Cambridge, MA 02139, USA. */
  62679. +not, see <http://www.gnu.org/licenses/>. */
  62680. .section .init,"x"
  62681. .p2align 2
  62682. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtn.S uClibc/libc/sysdeps/linux/frv/crtn.S
  62683. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtn.S 2012-05-15 09:20:09.000000000 +0200
  62684. +++ uClibc/libc/sysdeps/linux/frv/crtn.S 2014-02-03 12:32:56.000000000 +0100
  62685. @@ -22,8 +22,7 @@
  62686. You should have received a copy of the GNU Lesser General Public
  62687. License along with the GNU C Library; see the file COPYING.LIB. If
  62688. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62689. -Cambridge, MA 02139, USA. */
  62690. +not, see <http://www.gnu.org/licenses/>. */
  62691. .section .init,"x"
  62692. .globl _init
  62693. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtreloc.c uClibc/libc/sysdeps/linux/frv/crtreloc.c
  62694. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtreloc.c 2012-05-15 09:20:09.000000000 +0200
  62695. +++ uClibc/libc/sysdeps/linux/frv/crtreloc.c 2014-02-03 12:32:56.000000000 +0100
  62696. @@ -23,8 +23,7 @@
  62697. You should have received a copy of the GNU Lesser General Public
  62698. License along with the GNU C Library; see the file COPYING.LIB. If
  62699. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62700. -Cambridge, MA 02139, USA. */
  62701. +not, see <http://www.gnu.org/licenses/>. */
  62702. #include <sys/types.h>
  62703. #include <link.h>
  62704. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/dl-iterate-phdr.c uClibc/libc/sysdeps/linux/frv/dl-iterate-phdr.c
  62705. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/dl-iterate-phdr.c 2012-05-15 09:20:09.000000000 +0200
  62706. +++ uClibc/libc/sysdeps/linux/frv/dl-iterate-phdr.c 2014-02-03 12:32:56.000000000 +0100
  62707. @@ -13,8 +13,7 @@
  62708. You should have received a copy of the GNU Lesser General Public
  62709. License along with the GNU C Library; see the file COPYING.LIB. If
  62710. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62711. -Cambridge, MA 02139, USA. */
  62712. +not, see <http://www.gnu.org/licenses/>. */
  62713. #include <link.h>
  62714. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/fstat64.c uClibc/libc/sysdeps/linux/frv/fstat64.c
  62715. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/fstat64.c 2012-05-15 09:20:09.000000000 +0200
  62716. +++ uClibc/libc/sysdeps/linux/frv/fstat64.c 2014-02-03 12:32:56.000000000 +0100
  62717. @@ -9,11 +9,9 @@
  62718. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  62719. */
  62720. +#include <_lfs_64.h>
  62721. #include <sys/syscall.h>
  62722. -#include <unistd.h>
  62723. #include <sys/stat.h>
  62724. -#ifdef __UCLIBC_HAS_LFS__
  62725. _syscall2(int, fstat64, int, fd, struct stat64 *, buf)
  62726. libc_hidden_def(fstat64)
  62727. -#endif
  62728. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/frv/jmpbuf-unwind.h
  62729. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  62730. +++ uClibc/libc/sysdeps/linux/frv/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  62731. @@ -0,0 +1,14 @@
  62732. +/*
  62733. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62734. + *
  62735. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62736. + */
  62737. +
  62738. +#include <setjmp.h>
  62739. +
  62740. +/* Test if longjmp to JMPBUF would unwind the frame
  62741. + containing a local variable at ADDRESS. */
  62742. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62743. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  62744. +
  62745. +#endif /* bits/setjmp.h */
  62746. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/__longjmp.S uClibc/libc/sysdeps/linux/frv/__longjmp.S
  62747. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  62748. +++ uClibc/libc/sysdeps/linux/frv/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  62749. @@ -4,10 +4,6 @@
  62750. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62751. */
  62752. -#define _SETJMP_H
  62753. -#define _ASM
  62754. -#include <bits/setjmp.h>
  62755. -
  62756. # setjmp/longjmp for Frv. The jmpbuf looks like this:
  62757. #
  62758. # Register jmpbuf offset
  62759. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/lstat64.c uClibc/libc/sysdeps/linux/frv/lstat64.c
  62760. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/lstat64.c 2012-05-15 09:20:09.000000000 +0200
  62761. +++ uClibc/libc/sysdeps/linux/frv/lstat64.c 2014-02-03 12:32:56.000000000 +0100
  62762. @@ -9,11 +9,9 @@
  62763. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  62764. */
  62765. +#include <_lfs_64.h>
  62766. #include <sys/syscall.h>
  62767. -#include <unistd.h>
  62768. #include <sys/stat.h>
  62769. -#ifdef __UCLIBC_HAS_LFS__
  62770. _syscall2(int, lstat64, const char *, file_name, struct stat64 *, buf)
  62771. libc_hidden_def(lstat64)
  62772. -#endif
  62773. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/Makefile uClibc/libc/sysdeps/linux/frv/Makefile
  62774. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/Makefile 2012-05-15 09:20:09.000000000 +0200
  62775. +++ uClibc/libc/sysdeps/linux/frv/Makefile 2014-02-03 12:32:56.000000000 +0100
  62776. @@ -17,7 +17,7 @@
  62777. SSRC := __longjmp.S setjmp.S clone.S vfork.S
  62778. SOBJ := $(patsubst %.S,%.o, $(SSRC))
  62779. -CSRC = mmap.c sysdep.c syscall.c brk.c sbrk.c __init_brk.c dl-iterate-phdr.c
  62780. +CSRC = sysdep.c syscall.c brk.c sbrk.c __init_brk.c dl-iterate-phdr.c
  62781. CSRC += xstatconv.c stat.c stat64.c fstat.c fstat64.c lstat.c lstat64.c
  62782. COBJ := $(patsubst %.c,%.o, $(CSRC))
  62783. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/mmap.c uClibc/libc/sysdeps/linux/frv/mmap.c
  62784. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/mmap.c 2012-05-15 09:20:09.000000000 +0200
  62785. +++ uClibc/libc/sysdeps/linux/frv/mmap.c 1970-01-01 01:00:00.000000000 +0100
  62786. @@ -1,50 +0,0 @@
  62787. -/* Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
  62788. - This file is part of the GNU C Library.
  62789. - Contributed by Daniel Jacobowitz <dan@debian.org>, 1999.
  62790. -
  62791. - The GNU C Library is free software; you can redistribute it and/or
  62792. - modify it under the terms of the GNU Lesser General Public
  62793. - License as published by the Free Software Foundation; either
  62794. - version 2.1 of the License, or (at your option) any later version.
  62795. -
  62796. - The GNU C Library is distributed in the hope that it will be useful,
  62797. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  62798. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  62799. - Lesser General Public License for more details.
  62800. -
  62801. - You should have received a copy of the GNU Lesser General Public
  62802. - License along with the GNU C Library; if not, write to the Free
  62803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62804. - 02111-1307 USA. */
  62805. -
  62806. -/* Massivly hacked up for uClibc by Erik Andersen */
  62807. -
  62808. -/* Extracted from ../common/mmap64.c by Alexandre Oliva <aoliva@redhat.com>
  62809. -
  62810. - We don't want to use the old mmap interface. */
  62811. -
  62812. -#include <features.h>
  62813. -#include <errno.h>
  62814. -#include <unistd.h>
  62815. -#include <sys/syscall.h>
  62816. -#include <sys/mman.h>
  62817. -
  62818. -
  62819. -#define __NR___syscall_mmap2 __NR_mmap2
  62820. -static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
  62821. - size_t, len, int, prot, int, flags, int, fd, off_t, offset)
  62822. -
  62823. -/* This is always 12, even on architectures where PAGE_SHIFT != 12. */
  62824. -# ifndef MMAP2_PAGE_SHIFT
  62825. -# define MMAP2_PAGE_SHIFT 12
  62826. -# endif
  62827. -
  62828. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  62829. -{
  62830. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1)) {
  62831. - __set_errno (EINVAL);
  62832. - return MAP_FAILED;
  62833. - }
  62834. - return(__syscall_mmap2(addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT)));
  62835. -}
  62836. -libc_hidden_def(mmap)
  62837. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/stat64.c uClibc/libc/sysdeps/linux/frv/stat64.c
  62838. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/stat64.c 2012-05-15 09:20:09.000000000 +0200
  62839. +++ uClibc/libc/sysdeps/linux/frv/stat64.c 2014-02-03 12:32:56.000000000 +0100
  62840. @@ -9,11 +9,9 @@
  62841. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  62842. */
  62843. +#include <_lfs_64.h>
  62844. #include <sys/syscall.h>
  62845. -#include <unistd.h>
  62846. #include <sys/stat.h>
  62847. -#ifdef __UCLIBC_HAS_LFS__
  62848. _syscall2(int, stat64, const char *, file_name, struct stat64 *, buf)
  62849. libc_hidden_def(stat64)
  62850. -#endif
  62851. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/procfs.h uClibc/libc/sysdeps/linux/frv/sys/procfs.h
  62852. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62853. +++ uClibc/libc/sysdeps/linux/frv/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62854. @@ -12,9 +12,8 @@
  62855. Lesser General Public License for more details.
  62856. You should have received a copy of the GNU Lesser General Public
  62857. - License along with the GNU C Library; if not, write to the Free
  62858. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62859. - 02111-1307 USA. */
  62860. + License along with the GNU C Library; if not, see
  62861. + <http://www.gnu.org/licenses/>. */
  62862. #ifndef _SYS_PROCFS_H
  62863. #define _SYS_PROCFS_H 1
  62864. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ptrace.h uClibc/libc/sysdeps/linux/frv/sys/ptrace.h
  62865. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  62866. +++ uClibc/libc/sysdeps/linux/frv/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  62867. @@ -14,9 +14,8 @@
  62868. Lesser General Public License for more details.
  62869. You should have received a copy of the GNU Lesser General Public
  62870. - License along with the GNU C Library; if not, write to the Free
  62871. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62872. - 02111-1307 USA. */
  62873. + License along with the GNU C Library; if not, see
  62874. + <http://www.gnu.org/licenses/>. */
  62875. #ifndef _SYS_PTRACE_H
  62876. #define _SYS_PTRACE_H 1
  62877. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ucontext.h uClibc/libc/sysdeps/linux/frv/sys/ucontext.h
  62878. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62879. +++ uClibc/libc/sysdeps/linux/frv/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62880. @@ -13,8 +13,7 @@
  62881. You should have received a copy of the GNU Library General Public
  62882. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62883. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62884. - Boston, MA 02111-1307, USA. */
  62885. + see <http://www.gnu.org/licenses/>. */
  62886. #ifndef _SYS_UCONTEXT_H
  62887. #define _SYS_UCONTEXT_H 1
  62888. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/syscall.c uClibc/libc/sysdeps/linux/frv/syscall.c
  62889. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/syscall.c 2012-05-15 09:20:09.000000000 +0200
  62890. +++ uClibc/libc/sysdeps/linux/frv/syscall.c 2014-02-03 12:32:56.000000000 +0100
  62891. @@ -13,8 +13,8 @@
  62892. * for more details.
  62893. *
  62894. * You should have received a copy of the GNU Library General Public License
  62895. - * along with this program; if not, write to the Free Software Foundation,
  62896. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  62897. + * along with this program; see the file COPYING.LIB. If not, see
  62898. + * <http://www.gnu.org/licenses/>.
  62899. */
  62900. #include <features.h>
  62901. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sysdep.c uClibc/libc/sysdeps/linux/frv/sysdep.c
  62902. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sysdep.c 2012-05-15 09:20:09.000000000 +0200
  62903. +++ uClibc/libc/sysdeps/linux/frv/sysdep.c 2014-02-03 12:32:56.000000000 +0100
  62904. @@ -12,9 +12,8 @@
  62905. Lesser General Public License for more details.
  62906. You should have received a copy of the GNU Lesser General Public
  62907. - License along with the GNU C Library; if not, write to the Free
  62908. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62909. - 02111-1307 USA. */
  62910. + License along with the GNU C Library; if not, see
  62911. + <http://www.gnu.org/licenses/>. */
  62912. #include <errno.h>
  62913. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/vfork.S uClibc/libc/sysdeps/linux/frv/vfork.S
  62914. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/vfork.S 2012-05-15 09:20:09.000000000 +0200
  62915. +++ uClibc/libc/sysdeps/linux/frv/vfork.S 2014-02-03 12:32:56.000000000 +0100
  62916. @@ -13,15 +13,10 @@
  62917. Lesser General Public License for more details.
  62918. You should have received a copy of the GNU Lesser General Public
  62919. - License along with the GNU C Library; if not, write to the Free
  62920. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62921. - 02111-1307 USA. */
  62922. -
  62923. -#include <features.h>
  62924. -
  62925. -#include <asm/unistd.h>
  62926. -#define _ERRNO_H 1
  62927. -#include <bits/errno.h>
  62928. + License along with the GNU C Library; if not, see
  62929. + <http://www.gnu.org/licenses/>. */
  62930. +
  62931. +#include <sys/syscall.h>
  62932. .text
  62933. .globl __vfork
  62934. @@ -44,4 +39,4 @@
  62935. .size __vfork,.-__vfork
  62936. weak_alias(__vfork,vfork)
  62937. -libc_hidden_weak(vfork)
  62938. +libc_hidden_def(vfork)
  62939. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/byteswap.h uClibc/libc/sysdeps/linux/h8300/bits/byteswap.h
  62940. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  62941. +++ uClibc/libc/sysdeps/linux/h8300/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  62942. @@ -14,8 +14,7 @@
  62943. You should have received a copy of the GNU Library General Public
  62944. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62945. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62946. - Boston, MA 02111-1307, USA. */
  62947. + see <http://www.gnu.org/licenses/>. */
  62948. #ifndef _ASM_BITS_BYTESWAP_H
  62949. #define _ASM_BITS_BYTESWAP_H 1
  62950. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/fcntl.h uClibc/libc/sysdeps/linux/h8300/bits/fcntl.h
  62951. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62952. +++ uClibc/libc/sysdeps/linux/h8300/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62953. @@ -13,9 +13,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. #ifndef _FCNTL_H
  62962. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62963. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/kernel_types.h uClibc/libc/sysdeps/linux/h8300/bits/kernel_types.h
  62964. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  62965. +++ uClibc/libc/sysdeps/linux/h8300/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  62966. @@ -32,6 +32,8 @@
  62967. typedef unsigned short __kernel_old_gid_t;
  62968. typedef long long __kernel_loff_t;
  62969. typedef __kernel_dev_t __kernel_old_dev_t;
  62970. +typedef long __kernel_long_t;
  62971. +typedef unsigned long __kernel_ulong_t;
  62972. typedef struct {
  62973. #ifdef __USE_ALL
  62974. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/setjmp.h uClibc/libc/sysdeps/linux/h8300/bits/setjmp.h
  62975. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  62976. +++ uClibc/libc/sysdeps/linux/h8300/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  62977. @@ -9,24 +9,10 @@
  62978. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  62979. #endif
  62980. -#ifndef _ASM
  62981. -
  62982. typedef struct
  62983. {
  62984. unsigned long __regs[4]; /* save er4 - er7(sp) */
  62985. unsigned long __pc; /* the return address */
  62986. } __jmp_buf[1];
  62987. -#endif /* _ASM */
  62988. -
  62989. -#define JB_REGS 0
  62990. -#define JB_PC 16
  62991. -#define JB_SIZE 20
  62992. -
  62993. -
  62994. -/* Test if longjmp to JMPBUF would unwind the frame
  62995. - containing a local variable at ADDRESS. */
  62996. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62997. - ((void *) (address) < (void *) (jmpbuf)->__regs[3])
  62998. -
  62999. #endif /* bits/setjmp.h */
  63000. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h
  63001. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  63002. +++ uClibc/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  63003. @@ -13,9 +13,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. #define SIGCONTEXT int _code, struct sigcontext *
  63012. #define SIGCONTEXT_EXTRA_ARGS _code,
  63013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/stackinfo.h uClibc/libc/sysdeps/linux/h8300/bits/stackinfo.h
  63014. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  63015. +++ uClibc/libc/sysdeps/linux/h8300/bits/stackinfo.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. /* This file contains a bit of information about the stack allocation
  63025. of the processor. */
  63026. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
  63027. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  63028. +++ uClibc/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  63029. @@ -12,8 +12,8 @@
  63030. /* can your target use syscall6() for mmap ? */
  63031. #define __UCLIBC_MMAP_HAS_6_ARGS__
  63032. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  63033. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  63034. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  63035. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  63036. /* does your target have a broken create_module() ? */
  63037. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  63038. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-_setjmp.S uClibc/libc/sysdeps/linux/h8300/bsd-_setjmp.S
  63039. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63040. +++ uClibc/libc/sysdeps/linux/h8300/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63041. @@ -1,8 +1,6 @@
  63042. /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. H8/300 version. */
  63043. -#define _ASM
  63044. -#define _SETJMP_H
  63045. -#include <bits/setjmp.h>
  63046. +#include <jmpbuf-offsets.h>
  63047. #ifdef __H8300S__
  63048. .h8300s
  63049. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-setjmp.S uClibc/libc/sysdeps/linux/h8300/bsd-setjmp.S
  63050. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63051. +++ uClibc/libc/sysdeps/linux/h8300/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63052. @@ -1,8 +1,6 @@
  63053. /* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. H8/300 version. */
  63054. -#define _ASM
  63055. -#define _SETJMP_H
  63056. -#include <bits/setjmp.h>
  63057. +#include <jmpbuf-offsets.h>
  63058. #ifdef __H8300S__
  63059. .h8300s
  63060. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/crt0.S uClibc/libc/sysdeps/linux/h8300/crt0.S
  63061. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/crt0.S 2012-05-15 09:20:09.000000000 +0200
  63062. +++ uClibc/libc/sysdeps/linux/h8300/crt0.S 2014-02-03 12:32:56.000000000 +0100
  63063. @@ -14,8 +14,7 @@
  63064. You should have received a copy of the GNU Library General Public
  63065. License along with the GNU C Library; see the file COPYING.LIB. If
  63066. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  63067. -Cambridge, MA 02139, USA. */
  63068. +not, see <http://www.gnu.org/licenses/>. */
  63069. #include <features.h>
  63070. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/h8300/jmpbuf-offsets.h
  63071. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  63072. +++ uClibc/libc/sysdeps/linux/h8300/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  63073. @@ -0,0 +1,9 @@
  63074. +/*
  63075. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  63076. + *
  63077. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63078. + */
  63079. +
  63080. +#define JB_REGS 0
  63081. +#define JB_PC 16
  63082. +#define JB_SIZE 20
  63083. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/h8300/jmpbuf-unwind.h
  63084. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  63085. +++ uClibc/libc/sysdeps/linux/h8300/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  63086. @@ -0,0 +1,12 @@
  63087. +/*
  63088. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  63089. + *
  63090. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63091. + */
  63092. +
  63093. +#include <setjmp.h>
  63094. +
  63095. +/* Test if longjmp to JMPBUF would unwind the frame
  63096. + containing a local variable at ADDRESS. */
  63097. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  63098. + ((void *) (address) < (void *) (jmpbuf)->__regs[3])
  63099. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/__longjmp.S uClibc/libc/sysdeps/linux/h8300/__longjmp.S
  63100. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  63101. +++ uClibc/libc/sysdeps/linux/h8300/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  63102. @@ -20,3 +20,5 @@
  63103. mov.l @er0+,er3 ; return PC
  63104. adds #4,sp ; adjust return stack
  63105. jmp @er3
  63106. +
  63107. +libc_hidden_def(__longjmp)
  63108. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/setjmp.S uClibc/libc/sysdeps/linux/h8300/setjmp.S
  63109. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63110. +++ uClibc/libc/sysdeps/linux/h8300/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63111. @@ -1,6 +1,4 @@
  63112. -#define _ASM
  63113. -#define _SETJMP_H
  63114. -#include <bits/setjmp.h>
  63115. +#include <jmpbuf-offsets.h>
  63116. #ifdef __H8300S__
  63117. .h8300s
  63118. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/procfs.h uClibc/libc/sysdeps/linux/h8300/sys/procfs.h
  63119. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  63120. +++ uClibc/libc/sysdeps/linux/h8300/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  63121. @@ -12,9 +12,8 @@
  63122. Lesser General Public License for more details.
  63123. You should have received a copy of the GNU Lesser General Public
  63124. - License along with the GNU C Library; if not, write to the Free
  63125. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63126. - 02111-1307 USA. */
  63127. + License along with the GNU C Library; if not, see
  63128. + <http://www.gnu.org/licenses/>. */
  63129. #ifndef _SYS_PROCFS_H
  63130. #define _SYS_PROCFS_H 1
  63131. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/ucontext.h uClibc/libc/sysdeps/linux/h8300/sys/ucontext.h
  63132. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  63133. +++ uClibc/libc/sysdeps/linux/h8300/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  63134. @@ -12,9 +12,8 @@
  63135. Lesser General Public License for more details.
  63136. You should have received a copy of the GNU Lesser General Public
  63137. - License along with the GNU C Library; if not, write to the Free
  63138. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63139. - 02111-1307 USA. */
  63140. + License along with the GNU C Library; if not, see
  63141. + <http://www.gnu.org/licenses/>. */
  63142. /* H8/300 compliant context switching support. */
  63143. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/vfork.S uClibc/libc/sysdeps/linux/h8300/vfork.S
  63144. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/vfork.S 2012-05-15 09:20:09.000000000 +0200
  63145. +++ uClibc/libc/sysdeps/linux/h8300/vfork.S 2014-02-03 12:32:56.000000000 +0100
  63146. @@ -1,5 +1,5 @@
  63147. -#include <asm/unistd.h>
  63148. +#include <sys/syscall.h>
  63149. #ifndef __NR_vfork
  63150. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  63151. @@ -12,7 +12,6 @@
  63152. #endif
  63153. .text
  63154. .align 2
  63155. - .globl _errno
  63156. .globl ___vfork
  63157. .hidden ___vfork
  63158. .type ___vfork,@function
  63159. @@ -38,4 +37,4 @@
  63160. jmp @er1 /* don't return, just jmp directly */
  63161. weak_alias(__vfork,vfork)
  63162. -libc_hidden_weak(vfork)
  63163. +libc_hidden_def(vfork)
  63164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/add_n.s uClibc/libc/sysdeps/linux/hppa/add_n.s
  63165. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/add_n.s 2012-05-15 09:20:09.000000000 +0200
  63166. +++ uClibc/libc/sysdeps/linux/hppa/add_n.s 2014-02-03 12:32:56.000000000 +0100
  63167. @@ -16,9 +16,8 @@
  63168. ;! License for more details.
  63169. ;! You should have received a copy of the GNU Lesser General Public License
  63170. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  63171. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  63172. -;! MA 02111-1307, USA.
  63173. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  63174. +;! <http://www.gnu.org/licenses/>.
  63175. ;! INPUT PARAMETERS
  63176. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/atomic.h uClibc/libc/sysdeps/linux/hppa/bits/atomic.h
  63177. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  63178. +++ uClibc/libc/sysdeps/linux/hppa/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  63179. @@ -13,11 +13,11 @@
  63180. Lesser General Public License for more details.
  63181. You should have received a copy of the GNU Lesser General Public
  63182. - License along with the GNU C Library; if not, write to the Free
  63183. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63184. - 02111-1307 USA. */
  63185. + License along with the GNU C Library; if not, see
  63186. + <http://www.gnu.org/licenses/>. */
  63187. #include <stdint.h>
  63188. +#include <errno.h>
  63189. #include <bits/kernel-features.h>
  63190. #define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__)
  63191. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/eventfd.h uClibc/libc/sysdeps/linux/hppa/bits/eventfd.h
  63192. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  63193. +++ uClibc/libc/sysdeps/linux/hppa/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  63194. @@ -0,0 +1,32 @@
  63195. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  63196. + This file is part of the GNU C Library.
  63197. +
  63198. + The GNU C Library is free software; you can redistribute it and/or
  63199. + modify it under the terms of the GNU Lesser General Public
  63200. + License as published by the Free Software Foundation; either
  63201. + version 2.1 of the License, or (at your option) any later version.
  63202. +
  63203. + The GNU C Library is distributed in the hope that it will be useful,
  63204. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63205. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63206. + Lesser General Public License for more details.
  63207. +
  63208. + You should have received a copy of the GNU Lesser General Public
  63209. + License along with the GNU C Library. If not, see
  63210. + <http://www.gnu.org/licenses/>. */
  63211. +
  63212. +#ifndef _SYS_EVENTFD_H
  63213. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  63214. +#endif
  63215. +
  63216. +/* Flags for signalfd. */
  63217. +enum
  63218. + {
  63219. + EFD_SEMAPHORE = 000000001,
  63220. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  63221. + EFD_CLOEXEC = 010000000,
  63222. +#define EFD_CLOEXEC EFD_CLOEXEC
  63223. +/* the below value looks suspicious, should be 000200004 for consistency */
  63224. + EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
  63225. +#define EFD_NONBLOCK EFD_NONBLOCK
  63226. + };
  63227. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fcntl.h uClibc/libc/sysdeps/linux/hppa/bits/fcntl.h
  63228. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  63229. +++ uClibc/libc/sysdeps/linux/hppa/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  63230. @@ -14,9 +14,8 @@
  63231. Lesser General Public License for more details.
  63232. You should have received a copy of the GNU Lesser General Public
  63233. - License along with the GNU C Library; if not, write to the Free
  63234. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63235. - 02111-1307 USA. */
  63236. + License along with the GNU C Library; if not, see
  63237. + <http://www.gnu.org/licenses/>. */
  63238. #ifndef _FCNTL_H
  63239. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  63240. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fenv.h uClibc/libc/sysdeps/linux/hppa/bits/fenv.h
  63241. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  63242. +++ uClibc/libc/sysdeps/linux/hppa/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  63243. @@ -13,9 +13,8 @@
  63244. Lesser General Public License for more details.
  63245. You should have received a copy of the GNU Lesser General Public
  63246. - License along with the GNU C Library; if not, write to the Free
  63247. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63248. - 02111-1307 USA. */
  63249. + License along with the GNU C Library; if not, see
  63250. + <http://www.gnu.org/licenses/>. */
  63251. #ifndef _FENV_H
  63252. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  63253. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/ipc.h uClibc/libc/sysdeps/linux/hppa/bits/ipc.h
  63254. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  63255. +++ uClibc/libc/sysdeps/linux/hppa/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  63256. @@ -12,9 +12,8 @@
  63257. Lesser General Public License for more details.
  63258. You should have received a copy of the GNU Lesser General Public
  63259. - License along with the GNU C Library; if not, write to the Free
  63260. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63261. - 02111-1307 USA. */
  63262. + License along with the GNU C Library; if not, see
  63263. + <http://www.gnu.org/licenses/>. */
  63264. #ifndef _SYS_IPC_H
  63265. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  63266. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h uClibc/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h
  63267. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  63268. +++ uClibc/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  63269. @@ -12,12 +12,4 @@
  63270. unsigned long sa_flags;
  63271. };
  63272. -/* In uclibc, userspace struct sigaction is identical to
  63273. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  63274. - * See sigaction.h
  63275. - */
  63276. -
  63277. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  63278. - struct sigaction *, size_t) attribute_hidden;
  63279. -
  63280. #endif
  63281. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_types.h uClibc/libc/sysdeps/linux/hppa/bits/kernel_types.h
  63282. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  63283. +++ uClibc/libc/sysdeps/linux/hppa/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  63284. @@ -45,6 +45,8 @@
  63285. typedef unsigned long long __kernel_ino64_t;
  63286. typedef unsigned int __kernel_old_dev_t;
  63287. +typedef long __kernel_long_t;
  63288. +typedef unsigned long __kernel_ulong_t;
  63289. typedef struct {
  63290. #ifdef __USE_ALL
  63291. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/mman.h uClibc/libc/sysdeps/linux/hppa/bits/mman.h
  63292. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  63293. +++ uClibc/libc/sysdeps/linux/hppa/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  63294. @@ -13,9 +13,8 @@
  63295. Lesser General Public License for more details.
  63296. You should have received a copy of the GNU Lesser General Public
  63297. - License along with the GNU C Library; if not, write to the Free
  63298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63299. - 02111-1307 USA. */
  63300. + License along with the GNU C Library; if not, see
  63301. + <http://www.gnu.org/licenses/>. */
  63302. #ifndef _SYS_MMAN_H
  63303. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  63304. @@ -45,7 +44,7 @@
  63305. #define MAP_GROWSDOWN 0x8000 /* stack-like segment */
  63306. #define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
  63307. #define MAP_NONBLOCK 0x20000 /* do not block on IO */
  63308. -#define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  63309. +#define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  63310. be uninitialized. */
  63311. #define MS_SYNC 1 /* synchronous memory sync */
  63312. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/setjmp.h uClibc/libc/sysdeps/linux/hppa/bits/setjmp.h
  63313. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  63314. +++ uClibc/libc/sysdeps/linux/hppa/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  63315. @@ -1,4 +1,4 @@
  63316. -/* Copyright (C) 2000 Free Software Foundation, Inc.
  63317. +/* Copyright (C) 2000, 2005, 2006 Free Software Foundation, Inc.
  63318. This file is part of the GNU C Library.
  63319. The GNU C Library is free software; you can redistribute it and/or
  63320. @@ -12,9 +12,8 @@
  63321. Lesser General Public License for more details.
  63322. You should have received a copy of the GNU Lesser General Public
  63323. - License along with the GNU C Library; if not, write to the Free
  63324. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63325. - 02111-1307 USA. */
  63326. + License along with the GNU C Library; if not, see
  63327. + <http://www.gnu.org/licenses/>. */
  63328. /* Define the machine-dependent type `jmp_buf'. HPPA version. */
  63329. #ifndef _BITS_SETJMP_H
  63330. @@ -29,17 +28,6 @@
  63331. easier, and to ensure proper alignment. Naturally, user code should
  63332. not depend on either representation. */
  63333. -#if defined __USE_MISC || defined _ASM
  63334. -#define JB_SP (76/4)
  63335. -#endif
  63336. -
  63337. -#ifndef _ASM
  63338. typedef double __jmp_buf[21];
  63339. -#endif
  63340. -
  63341. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  63342. - variable at ADDRESS. */
  63343. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  63344. - ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
  63345. #endif /* bits/setjmp.h */
  63346. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/sigaction.h uClibc/libc/sysdeps/linux/hppa/bits/sigaction.h
  63347. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  63348. +++ uClibc/libc/sysdeps/linux/hppa/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  63349. @@ -13,9 +13,8 @@
  63350. Lesser General Public License for more details.
  63351. You should have received a copy of the GNU Lesser General Public
  63352. - License along with the GNU C Library; if not, write to the Free
  63353. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63354. - 02111-1307 USA. */
  63355. + License along with the GNU C Library; if not, see
  63356. + <http://www.gnu.org/licenses/>. */
  63357. #ifndef _SIGNAL_H
  63358. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  63359. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/signum.h uClibc/libc/sysdeps/linux/hppa/bits/signum.h
  63360. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  63361. +++ uClibc/libc/sysdeps/linux/hppa/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  63362. @@ -13,9 +13,8 @@
  63363. Lesser General Public License for more details.
  63364. You should have received a copy of the GNU Lesser General Public
  63365. - License along with the GNU C Library; if not, write to the Free
  63366. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63367. - 02111-1307 USA. */
  63368. + License along with the GNU C Library; if not, see
  63369. + <http://www.gnu.org/licenses/>. */
  63370. #ifdef _SIGNAL_H
  63371. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/socket_type.h uClibc/libc/sysdeps/linux/hppa/bits/socket_type.h
  63372. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  63373. +++ uClibc/libc/sysdeps/linux/hppa/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  63374. @@ -0,0 +1,54 @@
  63375. +/* Define enum __socket_type for Linux/HP-PARISC.
  63376. + Copyright (C) 2012 Free Software Foundation, Inc.
  63377. + This file is part of the GNU C Library.
  63378. +
  63379. + The GNU C Library is free software; you can redistribute it and/or
  63380. + modify it under the terms of the GNU Lesser General Public
  63381. + License as published by the Free Software Foundation; either
  63382. + version 2.1 of the License, or (at your option) any later version.
  63383. +
  63384. + The GNU C Library is distributed in the hope that it will be useful,
  63385. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63386. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63387. + Lesser General Public License for more details.
  63388. +
  63389. + You should have received a copy of the GNU Lesser General Public
  63390. + License along with the GNU C Library; if not, see
  63391. + <http://www.gnu.org/licenses/>. */
  63392. +
  63393. +#ifndef _SYS_SOCKET_H
  63394. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  63395. +#endif
  63396. +
  63397. +/* Types of sockets. */
  63398. +enum __socket_type
  63399. +{
  63400. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  63401. + byte streams. */
  63402. +#define SOCK_STREAM SOCK_STREAM
  63403. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  63404. + of fixed maximum length. */
  63405. +#define SOCK_DGRAM SOCK_DGRAM
  63406. + SOCK_RAW = 3, /* Raw protocol interface. */
  63407. +#define SOCK_RAW SOCK_RAW
  63408. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  63409. +#define SOCK_RDM SOCK_RDM
  63410. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  63411. + datagrams of fixed maximum length. */
  63412. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  63413. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  63414. +#define SOCK_DCCP SOCK_DCCP
  63415. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  63416. + at the dev level. For writing rarp and
  63417. + other similar things on the user level. */
  63418. +#define SOCK_PACKET SOCK_PACKET
  63419. +
  63420. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  63421. +
  63422. + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the
  63423. + new descriptor(s). */
  63424. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  63425. + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as
  63426. + non-blocking. */
  63427. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  63428. +};
  63429. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/stackinfo.h uClibc/libc/sysdeps/linux/hppa/bits/stackinfo.h
  63430. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  63431. +++ uClibc/libc/sysdeps/linux/hppa/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  63432. @@ -12,9 +12,8 @@
  63433. Lesser General Public License for more details.
  63434. You should have received a copy of the GNU Lesser General Public
  63435. - License along with the GNU C Library; if not, write to the Free
  63436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63437. - 02111-1307 USA. */
  63438. + License along with the GNU C Library; if not, see
  63439. + <http://www.gnu.org/licenses/>. */
  63440. /* This file contains a bit of information about the stack allocation
  63441. of the processor. */
  63442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
  63443. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  63444. +++ uClibc/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  63445. @@ -9,10 +9,10 @@
  63446. #define __UCLIBC_ABORT_INSTRUCTION__ "iitlbp %r0,(%sr0,%r0)"
  63447. /* can your target use syscall6() for mmap ? */
  63448. -#undef __UCLIBC_MMAP_HAS_6_ARGS__
  63449. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  63450. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  63451. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  63452. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  63453. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  63454. /* does your target have a broken create_module() ? */
  63455. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  63456. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/brk.c uClibc/libc/sysdeps/linux/hppa/brk.c
  63457. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/brk.c 2012-05-15 09:20:09.000000000 +0200
  63458. +++ uClibc/libc/sysdeps/linux/hppa/brk.c 2014-02-03 12:32:56.000000000 +0100
  63459. @@ -13,9 +13,8 @@
  63460. Lesser General Public License for more details.
  63461. You should have received a copy of the GNU Lesser General Public
  63462. - License along with the GNU C Library; if not, write to the Free
  63463. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63464. - 02111-1307 USA. */
  63465. + License along with the GNU C Library; if not, see
  63466. + <http://www.gnu.org/licenses/>. */
  63467. #include <errno.h>
  63468. #include <sys/syscall.h>
  63469. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-_setjmp.S uClibc/libc/sysdeps/linux/hppa/bsd-_setjmp.S
  63470. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63471. +++ uClibc/libc/sysdeps/linux/hppa/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63472. @@ -13,9 +13,8 @@
  63473. Lesser General Public License for more details.
  63474. You should have received a copy of the GNU Lesser General Public
  63475. - License along with the GNU C Library; if not, write to the Free
  63476. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63477. - 02111-1307 USA. */
  63478. + License along with the GNU C Library; if not, see
  63479. + <http://www.gnu.org/licenses/>. */
  63480. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  63481. We cannot do it in C because it must be a tail-call, so frame-unwinding
  63482. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-setjmp.S uClibc/libc/sysdeps/linux/hppa/bsd-setjmp.S
  63483. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63484. +++ uClibc/libc/sysdeps/linux/hppa/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63485. @@ -13,9 +13,8 @@
  63486. Lesser General Public License for more details.
  63487. You should have received a copy of the GNU Lesser General Public
  63488. - License along with the GNU C Library; if not, write to the Free
  63489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63490. - 02111-1307 USA. */
  63491. + License along with the GNU C Library; if not, see
  63492. + <http://www.gnu.org/licenses/>. */
  63493. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  63494. We cannot do it in C because it must be a tail-call, so frame-unwinding
  63495. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/clone.S uClibc/libc/sysdeps/linux/hppa/clone.S
  63496. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/clone.S 2012-05-15 09:20:09.000000000 +0200
  63497. +++ uClibc/libc/sysdeps/linux/hppa/clone.S 2014-02-03 12:32:56.000000000 +0100
  63498. @@ -14,9 +14,8 @@
  63499. Lesser General Public License for more details.
  63500. You should have received a copy of the GNU Lesser General Public
  63501. - License along with the GNU C Library; if not, write to the Free
  63502. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63503. - 02111-1307 USA. */
  63504. + License along with the GNU C Library; if not, see
  63505. + <http://www.gnu.org/licenses/>. */
  63506. /* clone() is even more special than fork() as it mucks with stacks
  63507. and invokes a function in the right context after its all over. */
  63508. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/crt1.S uClibc/libc/sysdeps/linux/hppa/crt1.S
  63509. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/crt1.S 2012-05-15 09:20:09.000000000 +0200
  63510. +++ uClibc/libc/sysdeps/linux/hppa/crt1.S 2014-02-03 12:32:56.000000000 +0100
  63511. @@ -30,9 +30,8 @@
  63512. Lesser General Public License for more details.
  63513. You should have received a copy of the GNU Lesser General Public
  63514. - License along with the GNU C Library; if not, write to the Free
  63515. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63516. - 02111-1307 USA. */
  63517. + License along with the GNU C Library; if not, see
  63518. + <http://www.gnu.org/licenses/>. */
  63519. .import main, code
  63520. .import $global$, data
  63521. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/hppa/jmpbuf-offsets.h
  63522. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  63523. +++ uClibc/libc/sysdeps/linux/hppa/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  63524. @@ -0,0 +1,19 @@
  63525. +/* Private macros for accessing __jmp_buf contents. HPPA version.
  63526. + Copyright (C) 2006 Free Software Foundation, Inc.
  63527. + This file is part of the GNU C Library.
  63528. +
  63529. + The GNU C Library is free software; you can redistribute it and/or
  63530. + modify it under the terms of the GNU Lesser General Public
  63531. + License as published by the Free Software Foundation; either
  63532. + version 2.1 of the License, or (at your option) any later version.
  63533. +
  63534. + The GNU C Library is distributed in the hope that it will be useful,
  63535. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63536. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63537. + Lesser General Public License for more details.
  63538. +
  63539. + You should have received a copy of the GNU Lesser General Public
  63540. + License along with the GNU C Library; if not, see
  63541. + <http://www.gnu.org/licenses/>. */
  63542. +
  63543. +#define JB_SP (76/4)
  63544. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/hppa/jmpbuf-unwind.h
  63545. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  63546. +++ uClibc/libc/sysdeps/linux/hppa/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  63547. @@ -0,0 +1,12 @@
  63548. +/*
  63549. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  63550. + *
  63551. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63552. + */
  63553. +#include <setjmp.h>
  63554. +#include <jmpbuf-offsets.h>
  63555. +
  63556. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  63557. + variable at ADDRESS. */
  63558. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  63559. + ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
  63560. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/__longjmp.S uClibc/libc/sysdeps/linux/hppa/__longjmp.S
  63561. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  63562. +++ uClibc/libc/sysdeps/linux/hppa/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  63563. @@ -13,14 +13,8 @@
  63564. Lesser General Public License for more details.
  63565. You should have received a copy of the GNU Lesser General Public
  63566. - License along with the GNU C Library; if not, write to the Free
  63567. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63568. - 02111-1307 USA. */
  63569. -
  63570. -#include <features.h>
  63571. -#define _SETJMP_H
  63572. -#define _ASM
  63573. -#include <bits/setjmp.h>
  63574. + License along with the GNU C Library; if not, see
  63575. + <http://www.gnu.org/licenses/>. */
  63576. /* __longjmp(jmpbuf, val) */
  63577. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/lshift.s uClibc/libc/sysdeps/linux/hppa/lshift.s
  63578. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/lshift.s 2012-05-15 09:20:09.000000000 +0200
  63579. +++ uClibc/libc/sysdeps/linux/hppa/lshift.s 2014-02-03 12:32:56.000000000 +0100
  63580. @@ -15,9 +15,8 @@
  63581. ;! License for more details.
  63582. ;! You should have received a copy of the GNU Lesser General Public License
  63583. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  63584. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  63585. -;! MA 02111-1307, USA.
  63586. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  63587. +;! <http://www.gnu.org/licenses/>.
  63588. ;! INPUT PARAMETERS
  63589. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/Makefile.arch uClibc/libc/sysdeps/linux/hppa/Makefile.arch
  63590. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  63591. +++ uClibc/libc/sysdeps/linux/hppa/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  63592. @@ -5,7 +5,7 @@
  63593. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63594. #
  63595. -CSRC := __syscall_error.c brk.c mmap.c syscall.c
  63596. +CSRC-y := __syscall_error.c brk.c syscall.c
  63597. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S \
  63598. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S \
  63599. add_n.s lshift.s rshift.s sub_n.s udiv_qrnnd.s
  63600. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/mmap.c uClibc/libc/sysdeps/linux/hppa/mmap.c
  63601. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/mmap.c 2012-05-15 09:20:09.000000000 +0200
  63602. +++ uClibc/libc/sysdeps/linux/hppa/mmap.c 1970-01-01 01:00:00.000000000 +0100
  63603. @@ -1,19 +0,0 @@
  63604. -/* vi: set sw=4 ts=4: */
  63605. -/*
  63606. - * mmap() for uClibc/x86_64
  63607. - *
  63608. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  63609. - * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
  63610. - *
  63611. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63612. - */
  63613. -
  63614. -#include <errno.h>
  63615. -#include <unistd.h>
  63616. -#include <sys/mman.h>
  63617. -#include <sys/syscall.h>
  63618. -
  63619. -
  63620. -_syscall6(void *, mmap, void *, start, size_t, length, int, prot,
  63621. - int, flags, int, fd, off_t, offset)
  63622. -libc_hidden_def(mmap)
  63623. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/rshift.s uClibc/libc/sysdeps/linux/hppa/rshift.s
  63624. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/rshift.s 2012-05-15 09:20:09.000000000 +0200
  63625. +++ uClibc/libc/sysdeps/linux/hppa/rshift.s 2014-02-03 12:32:56.000000000 +0100
  63626. @@ -15,9 +15,8 @@
  63627. ;! License for more details.
  63628. ;! You should have received a copy of the GNU Lesser General Public License
  63629. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  63630. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  63631. -;! MA 02111-1307, USA.
  63632. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  63633. +;! <http://www.gnu.org/licenses/>.
  63634. ;! INPUT PARAMETERS
  63635. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/setjmp.S uClibc/libc/sysdeps/linux/hppa/setjmp.S
  63636. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63637. +++ uClibc/libc/sysdeps/linux/hppa/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63638. @@ -13,9 +13,8 @@
  63639. Lesser General Public License for more details.
  63640. You should have received a copy of the GNU Lesser General Public
  63641. - License along with the GNU C Library; if not, write to the Free
  63642. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63643. - 02111-1307 USA. */
  63644. + License along with the GNU C Library; if not, see
  63645. + <http://www.gnu.org/licenses/>. */
  63646. .text
  63647. .align 4
  63648. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sub_n.s uClibc/libc/sysdeps/linux/hppa/sub_n.s
  63649. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sub_n.s 2012-05-15 09:20:09.000000000 +0200
  63650. +++ uClibc/libc/sysdeps/linux/hppa/sub_n.s 2014-02-03 12:32:56.000000000 +0100
  63651. @@ -16,9 +16,8 @@
  63652. ;! License for more details.
  63653. ;! You should have received a copy of the GNU Lesser General Public License
  63654. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  63655. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  63656. -;! MA 02111-1307, USA.
  63657. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  63658. +;! <http://www.gnu.org/licenses/>.
  63659. ;! INPUT PARAMETERS
  63660. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/procfs.h uClibc/libc/sysdeps/linux/hppa/sys/procfs.h
  63661. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  63662. +++ uClibc/libc/sysdeps/linux/hppa/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  63663. @@ -12,9 +12,8 @@
  63664. Lesser General Public License for more details.
  63665. You should have received a copy of the GNU Lesser General Public
  63666. - License along with the GNU C Library; if not, write to the Free
  63667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63668. - 02111-1307 USA. */
  63669. + License along with the GNU C Library; if not, see
  63670. + <http://www.gnu.org/licenses/>. */
  63671. #ifndef _SYS_PROCFS_H
  63672. #define _SYS_PROCFS_H 1
  63673. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/ucontext.h uClibc/libc/sysdeps/linux/hppa/sys/ucontext.h
  63674. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  63675. +++ uClibc/libc/sysdeps/linux/hppa/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  63676. @@ -12,9 +12,8 @@
  63677. Lesser General Public License for more details.
  63678. You should have received a copy of the GNU Lesser General Public
  63679. - License along with the GNU C Library; if not, write to the Free
  63680. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63681. - 02111-1307 USA. */
  63682. + License along with the GNU C Library; if not, see
  63683. + <http://www.gnu.org/licenses/>. */
  63684. /* Don't rely on this, the interface is currently messed up and may need to
  63685. be broken to be fixed. */
  63686. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/syscall.c uClibc/libc/sysdeps/linux/hppa/syscall.c
  63687. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/syscall.c 2012-05-15 09:20:09.000000000 +0200
  63688. +++ uClibc/libc/sysdeps/linux/hppa/syscall.c 2014-02-03 12:32:56.000000000 +0100
  63689. @@ -12,9 +12,8 @@
  63690. Lesser General Public License for more details.
  63691. You should have received a copy of the GNU Lesser General Public
  63692. - License along with the GNU C Library; if not, write to the Free
  63693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63694. - 02111-1307 USA. */
  63695. + License along with the GNU C Library; if not, see
  63696. + <http://www.gnu.org/licenses/>. */
  63697. #include <stdarg.h>
  63698. #include <errno.h>
  63699. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/udiv_qrnnd.s uClibc/libc/sysdeps/linux/hppa/udiv_qrnnd.s
  63700. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/udiv_qrnnd.s 2012-05-15 09:20:09.000000000 +0200
  63701. +++ uClibc/libc/sysdeps/linux/hppa/udiv_qrnnd.s 2014-02-03 12:32:56.000000000 +0100
  63702. @@ -16,9 +16,8 @@
  63703. ;! License for more details.
  63704. ;! You should have received a copy of the GNU Lesser General Public License
  63705. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  63706. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  63707. -;! MA 02111-1307, USA.
  63708. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  63709. +;! <http://www.gnu.org/licenses/>.
  63710. ;! INPUT PARAMETERS
  63711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/atomic.h uClibc/libc/sysdeps/linux/i386/bits/atomic.h
  63712. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  63713. +++ uClibc/libc/sysdeps/linux/i386/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  63714. @@ -13,9 +13,8 @@
  63715. Lesser General Public License for more details.
  63716. You should have received a copy of the GNU Lesser General Public
  63717. - License along with the GNU C Library; if not, write to the Free
  63718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63719. - 02111-1307 USA. */
  63720. + License along with the GNU C Library; if not, see
  63721. + <http://www.gnu.org/licenses/>. */
  63722. #include <stdint.h>
  63723. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/byteswap.h uClibc/libc/sysdeps/linux/i386/bits/byteswap.h
  63724. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  63725. +++ uClibc/libc/sysdeps/linux/i386/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  63726. @@ -13,9 +13,8 @@
  63727. Lesser General Public License for more details.
  63728. You should have received a copy of the GNU Lesser General Public
  63729. - License along with the GNU C Library; if not, write to the Free
  63730. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63731. - 02111-1307 USA. */
  63732. + License along with the GNU C Library; if not, see
  63733. + <http://www.gnu.org/licenses/>. */
  63734. #ifndef _ASM_BITS_BYTESWAP_H
  63735. #define _ASM_BITS_BYTESWAP_H 1
  63736. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fcntl.h uClibc/libc/sysdeps/linux/i386/bits/fcntl.h
  63737. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  63738. +++ uClibc/libc/sysdeps/linux/i386/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  63739. @@ -14,9 +14,8 @@
  63740. Lesser General Public License for more details.
  63741. You should have received a copy of the GNU Lesser General Public
  63742. - License along with the GNU C Library; if not, write to the Free
  63743. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63744. - 02111-1307 USA. */
  63745. + License along with the GNU C Library; if not, see
  63746. + <http://www.gnu.org/licenses/>. */
  63747. #ifndef _FCNTL_H
  63748. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  63749. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fenv.h uClibc/libc/sysdeps/linux/i386/bits/fenv.h
  63750. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  63751. +++ uClibc/libc/sysdeps/linux/i386/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  63752. @@ -12,9 +12,8 @@
  63753. Lesser General Public License for more details.
  63754. You should have received a copy of the GNU Lesser General Public
  63755. - License along with the GNU C Library; if not, write to the Free
  63756. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63757. - 02111-1307 USA. */
  63758. + License along with the GNU C Library; if not, see
  63759. + <http://www.gnu.org/licenses/>. */
  63760. #ifndef _FENV_H
  63761. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  63762. @@ -82,9 +81,9 @@
  63763. fenv_t;
  63764. /* If the default argument is used we use this value. */
  63765. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  63766. +#define FE_DFL_ENV ((const fenv_t *) -1)
  63767. #ifdef __USE_GNU
  63768. /* Floating-point environment where none of the exception is masked. */
  63769. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  63770. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  63771. #endif
  63772. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/huge_vall.h uClibc/libc/sysdeps/linux/i386/bits/huge_vall.h
  63773. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  63774. +++ uClibc/libc/sysdeps/linux/i386/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  63775. @@ -0,0 +1,42 @@
  63776. +/* `HUGE_VALL' constant for ix86 (where it is infinity).
  63777. + Used by <stdlib.h> and <math.h> functions for overflow.
  63778. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  63779. + Free Software Foundation, Inc.
  63780. + This file is part of the GNU C Library.
  63781. +
  63782. + The GNU C Library is free software; you can redistribute it and/or
  63783. + modify it under the terms of the GNU Lesser General Public
  63784. + License as published by the Free Software Foundation; either
  63785. + version 2.1 of the License, or (at your option) any later version.
  63786. +
  63787. + The GNU C Library is distributed in the hope that it will be useful,
  63788. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63789. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63790. + Lesser General Public License for more details.
  63791. +
  63792. + You should have received a copy of the GNU Lesser General Public
  63793. + License along with the GNU C Library; if not, see
  63794. + <http://www.gnu.org/licenses/>. */
  63795. +
  63796. +#ifndef _MATH_H
  63797. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  63798. +#endif
  63799. +
  63800. +#if __GNUC_PREREQ(3,3)
  63801. +# define HUGE_VALL (__builtin_huge_vall())
  63802. +#elif __GNUC_PREREQ(2,96)
  63803. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  63804. +#else
  63805. +
  63806. +# define __HUGE_VALL_bytes { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 }
  63807. +
  63808. +# define __huge_vall_t union { unsigned char __c[12]; long double __ld; }
  63809. +# ifdef __GNUC__
  63810. +# define HUGE_VALL (__extension__ \
  63811. + ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld)
  63812. +# else /* Not GCC. */
  63813. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  63814. +# define HUGE_VALL (__huge_vall.__ld)
  63815. +# endif /* GCC. */
  63816. +
  63817. +#endif /* GCC 2.95 */
  63818. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/kernel_types.h uClibc/libc/sysdeps/linux/i386/bits/kernel_types.h
  63819. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  63820. +++ uClibc/libc/sysdeps/linux/i386/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  63821. @@ -40,6 +40,8 @@
  63822. typedef unsigned short __kernel_old_uid_t;
  63823. typedef unsigned short __kernel_old_gid_t;
  63824. typedef __kernel_dev_t __kernel_old_dev_t;
  63825. +typedef long __kernel_long_t;
  63826. +typedef unsigned long __kernel_ulong_t;
  63827. typedef long long __kernel_loff_t;
  63828. typedef struct {
  63829. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathdef.h uClibc/libc/sysdeps/linux/i386/bits/mathdef.h
  63830. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  63831. +++ uClibc/libc/sysdeps/linux/i386/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  63832. @@ -12,9 +12,8 @@
  63833. Lesser General Public License for more details.
  63834. You should have received a copy of the GNU Lesser General Public
  63835. - License along with the GNU C Library; if not, write to the Free
  63836. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63837. - 02111-1307 USA. */
  63838. + License along with the GNU C Library; if not, see
  63839. + <http://www.gnu.org/licenses/>. */
  63840. #if !defined _MATH_H && !defined _COMPLEX_H
  63841. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  63842. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathinline.h uClibc/libc/sysdeps/linux/i386/bits/mathinline.h
  63843. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  63844. +++ uClibc/libc/sysdeps/linux/i386/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  63845. @@ -15,9 +15,8 @@
  63846. Lesser General Public License for more details.
  63847. You should have received a copy of the GNU Lesser General Public
  63848. - License along with the GNU C Library; if not, write to the Free
  63849. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63850. - 02111-1307 USA. */
  63851. + License along with the GNU C Library; if not, see
  63852. + <http://www.gnu.org/licenses/>. */
  63853. #ifndef _MATH_H
  63854. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  63855. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/select.h uClibc/libc/sysdeps/linux/i386/bits/select.h
  63856. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/select.h 2012-05-15 09:20:09.000000000 +0200
  63857. +++ uClibc/libc/sysdeps/linux/i386/bits/select.h 2014-02-03 12:32:56.000000000 +0100
  63858. @@ -12,9 +12,8 @@
  63859. Lesser General Public License for more details.
  63860. You should have received a copy of the GNU Lesser General Public
  63861. - License along with the GNU C Library; if not, write to the Free
  63862. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63863. - 02111-1307 USA. */
  63864. + License along with the GNU C Library; if not, see
  63865. + <http://www.gnu.org/licenses/>. */
  63866. #ifndef _SYS_SELECT_H
  63867. # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
  63868. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/setjmp.h uClibc/libc/sysdeps/linux/i386/bits/setjmp.h
  63869. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  63870. +++ uClibc/libc/sysdeps/linux/i386/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  63871. @@ -1,4 +1,5 @@
  63872. -/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
  63873. +/* Copyright (C) 1997,1998,2000,2001,2003,2005,2006
  63874. + Free Software Foundation, Inc.
  63875. This file is part of the GNU C Library.
  63876. The GNU C Library is free software; you can redistribute it and/or
  63877. @@ -12,9 +13,8 @@
  63878. Lesser General Public License for more details.
  63879. You should have received a copy of the GNU Lesser General Public
  63880. - License along with the GNU C Library; if not, write to the Free
  63881. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63882. - 02111-1307 USA. */
  63883. + License along with the GNU C Library; if not, see
  63884. + <http://www.gnu.org/licenses/>. */
  63885. /* Define the machine-dependent type `jmp_buf'. Intel 386 version. */
  63886. #ifndef _BITS_SETJMP_H
  63887. @@ -24,23 +24,6 @@
  63888. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  63889. #endif
  63890. -#if defined __USE_MISC || defined _ASM
  63891. -# define JB_BX 0
  63892. -# define JB_SI 1
  63893. -# define JB_DI 2
  63894. -# define JB_BP 3
  63895. -# define JB_SP 4
  63896. -# define JB_PC 5
  63897. -# define JB_SIZE 24
  63898. -#endif
  63899. -
  63900. -#ifndef _ASM
  63901. typedef int __jmp_buf[6];
  63902. -#endif
  63903. -
  63904. -/* Test if longjmp to JMPBUF would unwind the frame
  63905. - containing a local variable at ADDRESS. */
  63906. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  63907. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  63908. #endif /* bits/setjmp.h */
  63909. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/i386/bits/sigcontextinfo.h
  63910. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  63911. +++ uClibc/libc/sysdeps/linux/i386/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  63912. @@ -13,9 +13,8 @@
  63913. Lesser General Public License for more details.
  63914. You should have received a copy of the GNU Lesser General Public
  63915. - License along with the GNU C Library; if not, write to the Free
  63916. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63917. - 02111-1307 USA. */
  63918. + License along with the GNU C Library; if not, see
  63919. + <http://www.gnu.org/licenses/>. */
  63920. #define SIGCONTEXT struct sigcontext
  63921. #define SIGCONTEXT_EXTRA_ARGS
  63922. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/stackinfo.h uClibc/libc/sysdeps/linux/i386/bits/stackinfo.h
  63923. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  63924. +++ uClibc/libc/sysdeps/linux/i386/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  63925. @@ -12,9 +12,8 @@
  63926. Lesser General Public License for more details.
  63927. You should have received a copy of the GNU Lesser General Public
  63928. - License along with the GNU C Library; if not, write to the Free
  63929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63930. - 02111-1307 USA. */
  63931. + License along with the GNU C Library; if not, see
  63932. + <http://www.gnu.org/licenses/>. */
  63933. /* This file contains a bit of information about the stack allocation
  63934. of the processor. */
  63935. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/syscalls.h uClibc/libc/sysdeps/linux/i386/bits/syscalls.h
  63936. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  63937. +++ uClibc/libc/sysdeps/linux/i386/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  63938. @@ -136,7 +136,7 @@
  63939. #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
  63940. , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
  63941. #define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \
  63942. - , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "m" (arg6)
  63943. + , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "g" (arg6)
  63944. #else /* !PIC */
  63945. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
  63946. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  63947. +++ uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  63948. @@ -11,8 +11,8 @@
  63949. /* can your target use syscall6() for mmap ? */
  63950. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  63951. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  63952. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  63953. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  63954. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  63955. /* does your target have a broken create_module() ? */
  63956. #define __UCLIBC_BROKEN_CREATE_MODULE__
  63957. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wchar.h uClibc/libc/sysdeps/linux/i386/bits/wchar.h
  63958. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wchar.h 2012-05-15 09:20:09.000000000 +0200
  63959. +++ uClibc/libc/sysdeps/linux/i386/bits/wchar.h 2014-02-03 12:32:56.000000000 +0100
  63960. @@ -13,9 +13,8 @@
  63961. Lesser General Public License for more details.
  63962. You should have received a copy of the GNU Lesser General Public
  63963. - License along with the GNU C Library; if not, write to the Free
  63964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63965. - 02111-1307 USA. */
  63966. + License along with the GNU C Library; if not, see
  63967. + <http://www.gnu.org/licenses/>. */
  63968. #ifndef _BITS_WCHAR_H
  63969. #define _BITS_WCHAR_H 1
  63970. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wordsize.h uClibc/libc/sysdeps/linux/i386/bits/wordsize.h
  63971. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  63972. +++ uClibc/libc/sysdeps/linux/i386/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  63973. @@ -12,9 +12,8 @@
  63974. Lesser General Public License for more details.
  63975. You should have received a copy of the GNU Lesser General Public
  63976. - License along with the GNU C Library; if not, write to the Free
  63977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63978. - 02111-1307 USA. */
  63979. + License along with the GNU C Library; if not, see
  63980. + <http://www.gnu.org/licenses/>. */
  63981. #define __WORDSIZE 32
  63982. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/brk.c uClibc/libc/sysdeps/linux/i386/brk.c
  63983. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/brk.c 2012-05-15 09:20:09.000000000 +0200
  63984. +++ uClibc/libc/sysdeps/linux/i386/brk.c 2014-02-03 12:32:56.000000000 +0100
  63985. @@ -13,9 +13,8 @@
  63986. Lesser General Public License for more details.
  63987. You should have received a copy of the GNU Lesser General Public
  63988. - License along with the GNU C Library; if not, write to the Free
  63989. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63990. - 02111-1307 USA. */
  63991. + License along with the GNU C Library; if not, see
  63992. + <http://www.gnu.org/licenses/>. */
  63993. #include <errno.h>
  63994. #include <unistd.h>
  63995. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-_setjmp.S uClibc/libc/sysdeps/linux/i386/bsd-_setjmp.S
  63996. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63997. +++ uClibc/libc/sysdeps/linux/i386/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63998. @@ -13,17 +13,14 @@
  63999. Lesser General Public License for more details.
  64000. You should have received a copy of the GNU Lesser General Public
  64001. - License along with the GNU C Library; if not, write to the Free
  64002. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64003. - 02111-1307 USA. */
  64004. + License along with the GNU C Library; if not, see
  64005. + <http://www.gnu.org/licenses/>. */
  64006. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  64007. We cannot do it in C because it must be a tail-call, so frame-unwinding
  64008. in setjmp doesn't clobber the state restored by longjmp. */
  64009. -#define _ASM
  64010. -#define _SETJMP_H
  64011. -#include <bits/setjmp.h>
  64012. +#include <jmpbuf-offsets.h>
  64013. .global _setjmp
  64014. .type _setjmp,%function
  64015. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-setjmp.S uClibc/libc/sysdeps/linux/i386/bsd-setjmp.S
  64016. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  64017. +++ uClibc/libc/sysdeps/linux/i386/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  64018. @@ -13,13 +13,8 @@
  64019. Lesser General Public License for more details.
  64020. You should have received a copy of the GNU Lesser General Public
  64021. - License along with the GNU C Library; if not, write to the Free
  64022. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64023. - 02111-1307 USA. */
  64024. -
  64025. -#define _ASM
  64026. -#define _SETJMP_H
  64027. -#include <bits/setjmp.h>
  64028. + License along with the GNU C Library; if not, see
  64029. + <http://www.gnu.org/licenses/>. */
  64030. .global setjmp
  64031. .type setjmp,%function
  64032. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/clone.S uClibc/libc/sysdeps/linux/i386/clone.S
  64033. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/clone.S 2012-05-15 09:20:09.000000000 +0200
  64034. +++ uClibc/libc/sysdeps/linux/i386/clone.S 2014-02-03 12:32:56.000000000 +0100
  64035. @@ -13,9 +13,8 @@
  64036. Lesser General Public License for more details.
  64037. You should have received a copy of the GNU Lesser General Public
  64038. - License along with the GNU C Library; if not, write to the Free
  64039. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64040. - 02111-1307 USA. */
  64041. + License along with the GNU C Library; if not, see
  64042. + <http://www.gnu.org/licenses/>. */
  64043. /* clone() is even more special than fork() as it mucks with stacks
  64044. and invokes a function in the right context after its all over.
  64045. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/crt1.S uClibc/libc/sysdeps/linux/i386/crt1.S
  64046. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/crt1.S 2012-05-15 09:20:09.000000000 +0200
  64047. +++ uClibc/libc/sysdeps/linux/i386/crt1.S 2014-02-03 12:32:56.000000000 +0100
  64048. @@ -31,9 +31,8 @@
  64049. Lesser General Public License for more details.
  64050. You should have received a copy of the GNU Lesser General Public
  64051. - License along with the GNU C Library; if not, write to the Free
  64052. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64053. - 02111-1307 USA. */
  64054. + License along with the GNU C Library; if not, see
  64055. + <http://www.gnu.org/licenses/>. */
  64056. /* This is the canonical entry point, usually the first thing in the text
  64057. segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry
  64058. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/fpu_control.h uClibc/libc/sysdeps/linux/i386/fpu_control.h
  64059. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  64060. +++ uClibc/libc/sysdeps/linux/i386/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  64061. @@ -14,9 +14,8 @@
  64062. Lesser General Public License for more details.
  64063. You should have received a copy of the GNU Lesser General Public
  64064. - License along with the GNU C Library; if not, write to the Free
  64065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64066. - 02111-1307 USA. */
  64067. + License along with the GNU C Library; if not, see
  64068. + <http://www.gnu.org/licenses/>. */
  64069. #ifndef _FPU_CONTROL_H
  64070. #define _FPU_CONTROL_H 1
  64071. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/getcontext.S uClibc/libc/sysdeps/linux/i386/getcontext.S
  64072. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  64073. +++ uClibc/libc/sysdeps/linux/i386/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  64074. @@ -0,0 +1,84 @@
  64075. +/* Save current context.
  64076. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  64077. + This file is part of the GNU C Library.
  64078. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  64079. +
  64080. + The GNU C Library is free software; you can redistribute it and/or
  64081. + modify it under the terms of the GNU Lesser General Public
  64082. + License as published by the Free Software Foundation; either
  64083. + version 2.1 of the License, or (at your option) any later version.
  64084. +
  64085. + The GNU C Library is distributed in the hope that it will be useful,
  64086. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64087. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64088. + Lesser General Public License for more details.
  64089. +
  64090. + You should have received a copy of the GNU Lesser General Public
  64091. + License along with the GNU C Library; if not, see
  64092. + <http://www.gnu.org/licenses/>. */
  64093. +
  64094. +#include <sysdep.h>
  64095. +
  64096. +#include "ucontext_i.h"
  64097. +
  64098. +
  64099. +ENTRY(__getcontext)
  64100. + /* Load address of the context data structure. */
  64101. + movl 4(%esp), %eax
  64102. +
  64103. + /* Return value of getcontext. EAX is the only register whose
  64104. + value is not preserved. */
  64105. + movl $0, oEAX(%eax)
  64106. +
  64107. + /* Save the 32-bit register values and the return address. */
  64108. + movl %ecx, oECX(%eax)
  64109. + movl %edx, oEDX(%eax)
  64110. + movl %edi, oEDI(%eax)
  64111. + movl %esi, oESI(%eax)
  64112. + movl %ebp, oEBP(%eax)
  64113. + movl (%esp), %ecx
  64114. + movl %ecx, oEIP(%eax)
  64115. + leal 4(%esp), %ecx /* Exclude the return address. */
  64116. + movl %ecx, oESP(%eax)
  64117. + movl %ebx, oEBX(%eax)
  64118. +
  64119. + /* Save the FS segment register. We don't touch the GS register
  64120. + since it is used for threads. */
  64121. + xorl %edx, %edx
  64122. + movw %fs, %dx
  64123. + movl %edx, oFS(%eax)
  64124. +
  64125. + /* We have separate floating-point register content memory on the
  64126. + stack. We use the __fpregs_mem block in the context. Set the
  64127. + links up correctly. */
  64128. + leal oFPREGSMEM(%eax), %ecx
  64129. + movl %ecx, oFPREGS(%eax)
  64130. + /* Save the floating-point context. */
  64131. + fnstenv (%ecx)
  64132. + /* And load it right back since the processor changes the mask.
  64133. + Intel thought this opcode to be used in interrupt handlers which
  64134. + would block all exceptions. */
  64135. + fldenv (%ecx)
  64136. +
  64137. + /* Save the current signal mask. */
  64138. + pushl %ebx
  64139. + cfi_adjust_cfa_offset (4)
  64140. + cfi_rel_offset (ebx, 0)
  64141. + leal oSIGMASK(%eax), %edx
  64142. + xorl %ecx, %ecx
  64143. + movl $SIG_BLOCK, %ebx
  64144. + movl $__NR_sigprocmask, %eax
  64145. + ENTER_KERNEL
  64146. + popl %ebx
  64147. + cfi_adjust_cfa_offset (-4)
  64148. + cfi_restore (ebx)
  64149. + cmpl $-4095, %eax /* Check %eax for error. */
  64150. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  64151. +
  64152. + /* All done, return 0 for success. */
  64153. + xorl %eax, %eax
  64154. +L(pseudo_end):
  64155. + ret
  64156. +PSEUDO_END(__getcontext)
  64157. +
  64158. +weak_alias (__getcontext, getcontext)
  64159. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/i386/jmpbuf-offsets.h
  64160. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  64161. +++ uClibc/libc/sysdeps/linux/i386/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  64162. @@ -0,0 +1,25 @@
  64163. +/* Private macros for accessing __jmp_buf contents. i386 version.
  64164. + Copyright (C) 2006 Free Software Foundation, Inc.
  64165. + This file is part of the GNU C Library.
  64166. +
  64167. + The GNU C Library is free software; you can redistribute it and/or
  64168. + modify it under the terms of the GNU Lesser General Public
  64169. + License as published by the Free Software Foundation; either
  64170. + version 2.1 of the License, or (at your option) any later version.
  64171. +
  64172. + The GNU C Library is distributed in the hope that it will be useful,
  64173. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64174. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64175. + Lesser General Public License for more details.
  64176. +
  64177. + You should have received a copy of the GNU Lesser General Public
  64178. + License along with the GNU C Library; if not, see
  64179. + <http://www.gnu.org/licenses/>. */
  64180. +
  64181. +#define JB_BX 0
  64182. +#define JB_SI 1
  64183. +#define JB_DI 2
  64184. +#define JB_BP 3
  64185. +#define JB_SP 4
  64186. +#define JB_PC 5
  64187. +#define JB_SIZE 24
  64188. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/i386/jmpbuf-unwind.h
  64189. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  64190. +++ uClibc/libc/sysdeps/linux/i386/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  64191. @@ -0,0 +1,23 @@
  64192. +/*
  64193. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  64194. + *
  64195. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  64196. + */
  64197. +#include <setjmp.h>
  64198. +#include <jmpbuf-offsets.h>
  64199. +
  64200. +/* Test if longjmp to JMPBUF would unwind the frame
  64201. + containing a local variable at ADDRESS. */
  64202. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  64203. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  64204. +
  64205. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  64206. +#include <stdint.h>
  64207. +#include <unwind.h>
  64208. +
  64209. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  64210. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  64211. +
  64212. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  64213. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  64214. +#endif
  64215. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/__longjmp.S uClibc/libc/sysdeps/linux/i386/__longjmp.S
  64216. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  64217. +++ uClibc/libc/sysdeps/linux/i386/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  64218. @@ -14,13 +14,9 @@
  64219. You should have received a copy of the GNU Library General Public
  64220. License along with the GNU C Library; see the file COPYING.LIB. If not,
  64221. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  64222. - Boston, MA 02111-1307, USA. */
  64223. + see <http://www.gnu.org/licenses/>. */
  64224. -#include <features.h>
  64225. -#define _ASM
  64226. -#define _SETJMP_H
  64227. -#include <bits/setjmp.h>
  64228. +#include <jmpbuf-offsets.h>
  64229. .global __longjmp
  64230. .type __longjmp,%function
  64231. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/makecontext.S uClibc/libc/sysdeps/linux/i386/makecontext.S
  64232. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/makecontext.S 1970-01-01 01:00:00.000000000 +0100
  64233. +++ uClibc/libc/sysdeps/linux/i386/makecontext.S 2014-02-03 12:32:56.000000000 +0100
  64234. @@ -0,0 +1,123 @@
  64235. +/* Create new context.
  64236. + Copyright (C) 2001,2002,2005,2007,2008,2009 Free Software Foundation, Inc.
  64237. + This file is part of the GNU C Library.
  64238. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  64239. +
  64240. + The GNU C Library is free software; you can redistribute it and/or
  64241. + modify it under the terms of the GNU Lesser General Public
  64242. + License as published by the Free Software Foundation; either
  64243. + version 2.1 of the License, or (at your option) any later version.
  64244. +
  64245. + The GNU C Library is distributed in the hope that it will be useful,
  64246. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64247. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64248. + Lesser General Public License for more details.
  64249. +
  64250. + You should have received a copy of the GNU Lesser General Public
  64251. + License along with the GNU C Library; if not, see
  64252. + <http://www.gnu.org/licenses/>. */
  64253. +
  64254. +#include <sysdep.h>
  64255. +
  64256. +#include "ucontext_i.h"
  64257. +
  64258. +
  64259. +ENTRY(__makecontext)
  64260. + movl 4(%esp), %eax
  64261. +
  64262. + /* Load the address of the function we are supposed to run. */
  64263. + movl 8(%esp), %ecx
  64264. +
  64265. + /* Compute the address of the stack. The information comes from
  64266. + to us_stack element. */
  64267. + movl oSS_SP(%eax), %edx
  64268. + movl %ecx, oEIP(%eax)
  64269. + addl oSS_SIZE(%eax), %edx
  64270. +
  64271. + /* Remember the number of parameters for the exit handler since
  64272. + it has to remove them. We store the number in the EBX register
  64273. + which the function we will call must preserve. */
  64274. + movl 12(%esp), %ecx
  64275. + movl %ecx, oEBX(%eax)
  64276. +
  64277. + /* Make room on the new stack for the parameters.
  64278. + Room for the arguments, return address (== L(exitcode)) and
  64279. + oLINK pointer is needed. One of the pointer sizes is subtracted
  64280. + after aligning the stack. */
  64281. + negl %ecx
  64282. + leal -4(%edx,%ecx,4), %edx
  64283. + negl %ecx
  64284. +
  64285. + /* Align the stack. */
  64286. + andl $0xfffffff0, %edx
  64287. + subl $4, %edx
  64288. +
  64289. + /* Store the future stack pointer. */
  64290. + movl %edx, oESP(%eax)
  64291. +
  64292. + /* Put the next context on the new stack (from the uc_link
  64293. + element). */
  64294. + movl oLINK(%eax), %eax
  64295. + movl %eax, 4(%edx,%ecx,4)
  64296. +
  64297. + /* Copy all the parameters. */
  64298. + jecxz 2f
  64299. +1: movl 12(%esp,%ecx,4), %eax
  64300. + movl %eax, (%edx,%ecx,4)
  64301. + decl %ecx
  64302. + jnz 1b
  64303. +2:
  64304. +
  64305. + /* If the function we call returns we must continue with the
  64306. + context which is given in the uc_link element. To do this
  64307. + set the return address for the function the user provides
  64308. + to a little bit of helper code which does the magic (see
  64309. + below). */
  64310. +#ifdef __PIC__
  64311. + call 1f
  64312. + cfi_adjust_cfa_offset (4)
  64313. +1: popl %ecx
  64314. + cfi_adjust_cfa_offset (-4)
  64315. + addl $L(exitcode)-1b, %ecx
  64316. + movl %ecx, (%edx)
  64317. +#else
  64318. + movl $L(exitcode), (%edx)
  64319. +#endif
  64320. + /* 'makecontext' returns no value. */
  64321. +L(pseudo_end):
  64322. + ret
  64323. +
  64324. + /* This is the helper code which gets called if a function which
  64325. + is registered with 'makecontext' returns. In this case we
  64326. + have to install the context listed in the uc_link element of
  64327. + the context 'makecontext' manipulated at the time of the
  64328. + 'makecontext' call. If the pointer is NULL the process must
  64329. + terminate. */
  64330. + cfi_endproc
  64331. +L(exitcode):
  64332. + /* This removes the parameters passed to the function given to
  64333. + 'makecontext' from the stack. EBX contains the number of
  64334. + parameters (see above). */
  64335. + leal (%esp,%ebx,4), %esp
  64336. +
  64337. +#ifdef __PIC__
  64338. + call 1f
  64339. +1: popl %ebx
  64340. + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
  64341. +#endif
  64342. + cmpl $0, (%esp) /* Check the next context. */
  64343. + je 2f /* If it is zero exit. */
  64344. +
  64345. + call JUMPTARGET(__setcontext)
  64346. + /* If this returns (which can happen if the syscall fails) we'll
  64347. + exit the program with the return error value (-1). */
  64348. +
  64349. + movl %eax, (%esp)
  64350. +2: call HIDDEN_JUMPTARGET(exit)
  64351. + /* The 'exit' call should never return. In case it does cause
  64352. + the process to terminate. */
  64353. + hlt
  64354. + cfi_startproc
  64355. +END(__makecontext)
  64356. +
  64357. +weak_alias (__makecontext, makecontext)
  64358. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/Makefile.arch uClibc/libc/sysdeps/linux/i386/Makefile.arch
  64359. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  64360. +++ uClibc/libc/sysdeps/linux/i386/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  64361. @@ -5,13 +5,13 @@
  64362. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  64363. #
  64364. -CSRC := brk.c __syscall_error.c sigaction.c
  64365. +CSRC-y := brk.c __syscall_error.c sigaction.c
  64366. -SSRC := \
  64367. +SSRC-y := \
  64368. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  64369. - sync_file_range.S syscall.S mmap.S mmap64.S posix_fadvise64.S
  64370. + sync_file_range.S syscall.S mmap.S
  64371. -
  64372. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  64373. -SSRC += vfork.S clone.S
  64374. -endif
  64375. +SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
  64376. +SSRC-$(if $(findstring yy,$(UCLIBC_HAS_ADVANCED_REALTIME)$(UCLIBC_HAS_LFS)),y) += posix_fadvise64.S
  64377. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  64378. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.S setcontext.S getcontext.S swapcontext.S
  64379. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap64.S uClibc/libc/sysdeps/linux/i386/mmap64.S
  64380. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap64.S 2012-05-15 09:20:09.000000000 +0200
  64381. +++ uClibc/libc/sysdeps/linux/i386/mmap64.S 2014-02-03 12:32:56.000000000 +0100
  64382. @@ -12,18 +12,16 @@
  64383. Lesser General Public License for more details.
  64384. You should have received a copy of the GNU Lesser General Public
  64385. - License along with the GNU C Library; if not, write to the Free
  64386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64387. - 02111-1307 USA. */
  64388. + License along with the GNU C Library; if not, see
  64389. + <http://www.gnu.org/licenses/>. */
  64390. +#include <_lfs_64.h>
  64391. #define _ERRNO_H 1
  64392. -#include <features.h>
  64393. #include <bits/errno.h>
  64394. #include <sys/syscall.h>
  64395. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_mmap2
  64396. -
  64397. +#ifdef __NR_mmap2
  64398. #define LINKAGE 4
  64399. #define PTR_SIZE 4
  64400. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap.S uClibc/libc/sysdeps/linux/i386/mmap.S
  64401. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap.S 2012-05-15 09:20:09.000000000 +0200
  64402. +++ uClibc/libc/sysdeps/linux/i386/mmap.S 2014-02-03 12:32:56.000000000 +0100
  64403. @@ -12,9 +12,8 @@
  64404. Lesser General Public License for more details.
  64405. You should have received a copy of the GNU Lesser General Public
  64406. - License along with the GNU C Library; if not, write to the Free
  64407. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64408. - 02111-1307 USA. */
  64409. + License along with the GNU C Library; if not, see
  64410. + <http://www.gnu.org/licenses/>. */
  64411. #define _ERRNO_H 1
  64412. #include <features.h>
  64413. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/posix_fadvise64.S uClibc/libc/sysdeps/linux/i386/posix_fadvise64.S
  64414. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/posix_fadvise64.S 2012-05-15 09:20:09.000000000 +0200
  64415. +++ uClibc/libc/sysdeps/linux/i386/posix_fadvise64.S 2014-02-03 12:32:56.000000000 +0100
  64416. @@ -13,29 +13,18 @@
  64417. Lesser General Public License for more details.
  64418. You should have received a copy of the GNU Lesser General Public
  64419. - License along with the GNU C Library; if not, write to the Free
  64420. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64421. - 02111-1307 USA. */
  64422. -
  64423. -#define _ERRNO_H 1
  64424. -#include <features.h>
  64425. -#include <bits/errno.h>
  64426. -#include <sys/syscall.h>
  64427. + License along with the GNU C Library; if not, see
  64428. + <http://www.gnu.org/licenses/>. */
  64429. -#if defined __NR_fadvise64_64 || defined __NR_fadvise64
  64430. +#include <_lfs_64.h>
  64431. +#include <sys/syscall.h>
  64432. -/* Was named __libc_posix_fadvise64 for some inexplicable reason.
  64433. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  64434. -** so it cannot be compat with anything.
  64435. -**
  64436. -** Remove this comment and one at the end after 0.9.31
  64437. -*/
  64438. +#ifdef __NR_fadvise64_64
  64439. .text
  64440. .global posix_fadvise64
  64441. .type posix_fadvise64,%function
  64442. posix_fadvise64:
  64443. -#if defined __NR_fadvise64_64
  64444. /* Save regs */
  64445. pushl %ebp
  64446. pushl %ebx
  64447. @@ -63,47 +52,7 @@
  64448. /* Returns 0 on success, else an error code. */
  64449. negl %eax
  64450. -#elif defined __NR_fadvise64
  64451. - /* Save regs */
  64452. - pushl %ebx
  64453. - pushl %esi
  64454. - pushl %edi
  64455. -#if 0
  64456. - /* does len overflow long? */
  64457. - cmpl $0, 28(%esp)
  64458. - movl $-EOVERFLOW, %eax
  64459. - jne overflow
  64460. -#endif
  64461. - movl $__NR_fadvise64, %eax /* Syscall number in %eax. */
  64462. -
  64463. - movl 16(%esp), %ebx
  64464. - movl 20(%esp), %ecx
  64465. - movl 24(%esp), %edx
  64466. - movl 28(%esp), %esi
  64467. - movl 32(%esp), %edi
  64468. -
  64469. - /* Do the system call trap. */
  64470. - int $0x80
  64471. -overflow:
  64472. - /* Restore regs */
  64473. - popl %edi
  64474. - popl %esi
  64475. - popl %ebx
  64476. -
  64477. - /* Returns 0 on success, else an error code. */
  64478. - negl %eax
  64479. -#endif
  64480. -
  64481. /* Successful; return the syscall's value. */
  64482. ret
  64483. -
  64484. .size posix_fadvise64,.-posix_fadvise64
  64485. -
  64486. -/*
  64487. -** libc_hidden_def(__libc_posix_fadvise64)
  64488. -** #if defined __UCLIBC_HAS_LFS__ && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  64489. -** weak_alias(__libc_posix_fadvise64,posix_fadvise64)
  64490. -** #endif
  64491. -*/
  64492. -
  64493. #endif
  64494. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/setcontext.S uClibc/libc/sysdeps/linux/i386/setcontext.S
  64495. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  64496. +++ uClibc/libc/sysdeps/linux/i386/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  64497. @@ -0,0 +1,96 @@
  64498. +/* Install given context.
  64499. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  64500. + This file is part of the GNU C Library.
  64501. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  64502. +
  64503. + The GNU C Library is free software; you can redistribute it and/or
  64504. + modify it under the terms of the GNU Lesser General Public
  64505. + License as published by the Free Software Foundation; either
  64506. + version 2.1 of the License, or (at your option) any later version.
  64507. +
  64508. + The GNU C Library is distributed in the hope that it will be useful,
  64509. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64510. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64511. + Lesser General Public License for more details.
  64512. +
  64513. + You should have received a copy of the GNU Lesser General Public
  64514. + License along with the GNU C Library; if not, see
  64515. + <http://www.gnu.org/licenses/>. */
  64516. +
  64517. +#include <sysdep.h>
  64518. +
  64519. +#include "ucontext_i.h"
  64520. +
  64521. +
  64522. +ENTRY(__setcontext)
  64523. + /* Load address of the context data structure. */
  64524. + movl 4(%esp), %eax
  64525. +
  64526. + /* Get the current signal mask. Note that we preserve EBX in case
  64527. + the system call fails and we return from the function with an
  64528. + error. */
  64529. + pushl %ebx
  64530. + cfi_adjust_cfa_offset (4)
  64531. + xorl %edx, %edx
  64532. + leal oSIGMASK(%eax), %ecx
  64533. + movl $SIG_SETMASK, %ebx
  64534. + cfi_rel_offset (ebx, 0)
  64535. + movl $__NR_sigprocmask, %eax
  64536. + ENTER_KERNEL
  64537. + popl %ebx
  64538. + cfi_adjust_cfa_offset (-4)
  64539. + cfi_restore (ebx)
  64540. + cmpl $-4095, %eax /* Check %eax for error. */
  64541. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  64542. +
  64543. + /* EAX was modified, reload it. */
  64544. + movl 4(%esp), %eax
  64545. +
  64546. + /* Restore the floating-point context. Not the registers, only the
  64547. + rest. */
  64548. + movl oFPREGS(%eax), %ecx
  64549. + fldenv (%ecx)
  64550. +
  64551. + /* Restore the FS segment register. We don't touch the GS register
  64552. + since it is used for threads. */
  64553. + movl oFS(%eax), %ecx
  64554. + movw %cx, %fs
  64555. +
  64556. + /* Fetch the address to return to. */
  64557. + movl oEIP(%eax), %ecx
  64558. +
  64559. + /* Load the new stack pointer. */
  64560. + cfi_def_cfa (eax, 0)
  64561. + cfi_offset (edi, oEDI)
  64562. + cfi_offset (esi, oESI)
  64563. + cfi_offset (ebp, oEBP)
  64564. + cfi_offset (ebx, oEBX)
  64565. + cfi_offset (edx, oEDX)
  64566. + cfi_offset (ecx, oECX)
  64567. + movl oESP(%eax), %esp
  64568. +
  64569. + /* Push the return address on the new stack so we can return there. */
  64570. + pushl %ecx
  64571. +
  64572. + /* Load the values of all the 32-bit registers (except ESP).
  64573. + Since we are loading from EAX, it must be last. */
  64574. + movl oEDI(%eax), %edi
  64575. + movl oESI(%eax), %esi
  64576. + movl oEBP(%eax), %ebp
  64577. + movl oEBX(%eax), %ebx
  64578. + movl oEDX(%eax), %edx
  64579. + movl oECX(%eax), %ecx
  64580. + movl oEAX(%eax), %eax
  64581. +
  64582. + /* End FDE here, we fall into another context. */
  64583. + cfi_endproc
  64584. + cfi_startproc
  64585. +
  64586. + /* The following 'ret' will pop the address of the code and jump
  64587. + to it. */
  64588. +
  64589. +L(pseudo_end):
  64590. + ret
  64591. +PSEUDO_END(__setcontext)
  64592. +
  64593. +weak_alias (__setcontext, setcontext)
  64594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/setjmp.S uClibc/libc/sysdeps/linux/i386/setjmp.S
  64595. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  64596. +++ uClibc/libc/sysdeps/linux/i386/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  64597. @@ -13,14 +13,8 @@
  64598. Lesser General Public License for more details.
  64599. You should have received a copy of the GNU Lesser General Public
  64600. - License along with the GNU C Library; if not, write to the Free
  64601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64602. - 02111-1307 USA. */
  64603. -
  64604. -#define _ASM
  64605. -#define _SETJMP_H
  64606. -#include <bits/setjmp.h>
  64607. -
  64608. + License along with the GNU C Library; if not, see
  64609. + <http://www.gnu.org/licenses/>. */
  64610. .global __sigsetjmp
  64611. .type __sigsetjmp,%function
  64612. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sigaction.c uClibc/libc/sysdeps/linux/i386/sigaction.c
  64613. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  64614. +++ uClibc/libc/sysdeps/linux/i386/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  64615. @@ -13,8 +13,7 @@
  64616. You should have received a copy of the GNU Library General Public
  64617. License along with the GNU C Library; see the file COPYING.LIB. If not,
  64618. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  64619. - Boston, MA 02111-1307, USA.
  64620. + see <http://www.gnu.org/licenses/>.
  64621. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  64622. */
  64623. @@ -27,9 +26,6 @@
  64624. #define SA_RESTORER 0x04000000
  64625. -extern __typeof(sigaction) __libc_sigaction;
  64626. -
  64627. -
  64628. #if defined __NR_rt_sigaction
  64629. extern void restore_rt(void) __asm__ ("__restore_rt") attribute_hidden;
  64630. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/swapcontext.S uClibc/libc/sysdeps/linux/i386/swapcontext.S
  64631. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  64632. +++ uClibc/libc/sysdeps/linux/i386/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  64633. @@ -0,0 +1,110 @@
  64634. +/* Save current context and install the given one.
  64635. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  64636. + This file is part of the GNU C Library.
  64637. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  64638. +
  64639. + The GNU C Library is free software; you can redistribute it and/or
  64640. + modify it under the terms of the GNU Lesser General Public
  64641. + License as published by the Free Software Foundation; either
  64642. + version 2.1 of the License, or (at your option) any later version.
  64643. +
  64644. + The GNU C Library is distributed in the hope that it will be useful,
  64645. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64646. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64647. + Lesser General Public License for more details.
  64648. +
  64649. + You should have received a copy of the GNU Lesser General Public
  64650. + License along with the GNU C Library; if not, see
  64651. + <http://www.gnu.org/licenses/>. */
  64652. +
  64653. +#include <sysdep.h>
  64654. +
  64655. +#include "ucontext_i.h"
  64656. +
  64657. +
  64658. +ENTRY(__swapcontext)
  64659. + /* Load address of the context data structure we save in. */
  64660. + movl 4(%esp), %eax
  64661. +
  64662. + /* Return value of swapcontext. EAX is the only register whose
  64663. + value is not preserved. */
  64664. + movl $0, oEAX(%eax)
  64665. +
  64666. + /* Save the 32-bit register values and the return address. */
  64667. + movl %ecx, oECX(%eax)
  64668. + movl %edx, oEDX(%eax)
  64669. + movl %edi, oEDI(%eax)
  64670. + movl %esi, oESI(%eax)
  64671. + movl %ebp, oEBP(%eax)
  64672. + movl (%esp), %ecx
  64673. + movl %ecx, oEIP(%eax)
  64674. + leal 4(%esp), %ecx
  64675. + movl %ecx, oESP(%eax)
  64676. + movl %ebx, oEBX(%eax)
  64677. +
  64678. + /* Save the FS segment register. */
  64679. + xorl %edx, %edx
  64680. + movw %fs, %dx
  64681. + movl %edx, oFS(%eax)
  64682. +
  64683. + /* We have separate floating-point register content memory on the
  64684. + stack. We use the __fpregs_mem block in the context. Set the
  64685. + links up correctly. */
  64686. + leal oFPREGSMEM(%eax), %ecx
  64687. + movl %ecx, oFPREGS(%eax)
  64688. + /* Save the floating-point context. */
  64689. + fnstenv (%ecx)
  64690. +
  64691. + /* Load address of the context data structure we have to load. */
  64692. + movl 8(%esp), %ecx
  64693. +
  64694. + /* Save the current signal mask and install the new one. */
  64695. + pushl %ebx
  64696. + leal oSIGMASK(%eax), %edx
  64697. + leal oSIGMASK(%ecx), %ecx
  64698. + movl $SIG_SETMASK, %ebx
  64699. + movl $__NR_sigprocmask, %eax
  64700. + ENTER_KERNEL
  64701. + popl %ebx
  64702. + cmpl $-4095, %eax /* Check %eax for error. */
  64703. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  64704. +
  64705. + /* EAX was modified, reload it. */
  64706. + movl 8(%esp), %eax
  64707. +
  64708. + /* Restore the floating-point context. Not the registers, only the
  64709. + rest. */
  64710. + movl oFPREGS(%eax), %ecx
  64711. + fldenv (%ecx)
  64712. +
  64713. + /* Restore the FS segment register. We don't touch the GS register
  64714. + since it is used for threads. */
  64715. + movl oFS(%eax), %edx
  64716. + movw %dx, %fs
  64717. +
  64718. + /* Fetch the address to return to. */
  64719. + movl oEIP(%eax), %ecx
  64720. +
  64721. + /* Load the new stack pointer. */
  64722. + movl oESP(%eax), %esp
  64723. +
  64724. + /* Push the return address on the new stack so we can return there. */
  64725. + pushl %ecx
  64726. +
  64727. + /* Load the values of all the 32-bit registers (except ESP).
  64728. + Since we are loading from EAX, it must be last. */
  64729. + movl oEDI(%eax), %edi
  64730. + movl oESI(%eax), %esi
  64731. + movl oEBP(%eax), %ebp
  64732. + movl oEBX(%eax), %ebx
  64733. + movl oEDX(%eax), %edx
  64734. + movl oECX(%eax), %ecx
  64735. + movl oEAX(%eax), %eax
  64736. +
  64737. + /* The following 'ret' will pop the address of the code and jump
  64738. + to it. */
  64739. +L(pseudo_end):
  64740. + ret
  64741. +PSEUDO_END(__swapcontext)
  64742. +
  64743. +weak_alias (__swapcontext, swapcontext)
  64744. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sync_file_range.S uClibc/libc/sysdeps/linux/i386/sync_file_range.S
  64745. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sync_file_range.S 2012-05-15 09:20:09.000000000 +0200
  64746. +++ uClibc/libc/sysdeps/linux/i386/sync_file_range.S 2014-02-03 12:32:56.000000000 +0100
  64747. @@ -12,9 +12,8 @@
  64748. Lesser General Public License for more details.
  64749. You should have received a copy of the GNU Lesser General Public
  64750. - License along with the GNU C Library; if not, write to the Free
  64751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64752. - 02111-1307 USA. */
  64753. + License along with the GNU C Library; if not, see
  64754. + <http://www.gnu.org/licenses/>. */
  64755. #define _ERRNO_H 1
  64756. #include <features.h>
  64757. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/debugreg.h uClibc/libc/sysdeps/linux/i386/sys/debugreg.h
  64758. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/debugreg.h 2012-05-15 09:20:09.000000000 +0200
  64759. +++ uClibc/libc/sysdeps/linux/i386/sys/debugreg.h 2014-02-03 12:32:56.000000000 +0100
  64760. @@ -12,9 +12,8 @@
  64761. Lesser General Public License for more details.
  64762. You should have received a copy of the GNU Lesser General Public
  64763. - License along with the GNU C Library; if not, write to the Free
  64764. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64765. - 02111-1307 USA. */
  64766. + License along with the GNU C Library; if not, see
  64767. + <http://www.gnu.org/licenses/>. */
  64768. #ifndef _SYS_DEBUGREG_H
  64769. #define _SYS_DEBUGREG_H 1
  64770. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/elf.h uClibc/libc/sysdeps/linux/i386/sys/elf.h
  64771. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  64772. +++ uClibc/libc/sysdeps/linux/i386/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  64773. @@ -12,9 +12,8 @@
  64774. Lesser General Public License for more details.
  64775. You should have received a copy of the GNU Lesser General Public
  64776. - License along with the GNU C Library; if not, write to the Free
  64777. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64778. - 02111-1307 USA. */
  64779. + License along with the GNU C Library; if not, see
  64780. + <http://www.gnu.org/licenses/>. */
  64781. #ifndef _SYS_ELF_H
  64782. #define _SYS_ELF_H 1
  64783. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/io.h uClibc/libc/sysdeps/linux/i386/sys/io.h
  64784. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  64785. +++ uClibc/libc/sysdeps/linux/i386/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  64786. @@ -12,9 +12,8 @@
  64787. Lesser General Public License for more details.
  64788. You should have received a copy of the GNU Lesser General Public
  64789. - License along with the GNU C Library; if not, write to the Free
  64790. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64791. - 02111-1307 USA. */
  64792. + License along with the GNU C Library; if not, see
  64793. + <http://www.gnu.org/licenses/>. */
  64794. #ifndef _SYS_IO_H
  64795. #define _SYS_IO_H 1
  64796. @@ -33,7 +32,6 @@
  64797. E.g., Linux/Alpha for Alpha PCs supports this. */
  64798. extern int ioperm (unsigned long int __from, unsigned long int __num,
  64799. int __turn_on) __THROW;
  64800. -libc_hidden_proto(ioperm)
  64801. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  64802. access any I/O port is granted. This call requires root
  64803. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/perm.h uClibc/libc/sysdeps/linux/i386/sys/perm.h
  64804. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/perm.h 2012-05-15 09:20:09.000000000 +0200
  64805. +++ uClibc/libc/sysdeps/linux/i386/sys/perm.h 2014-02-03 12:32:56.000000000 +0100
  64806. @@ -12,9 +12,8 @@
  64807. Lesser General Public License for more details.
  64808. You should have received a copy of the GNU Lesser General Public
  64809. - License along with the GNU C Library; if not, write to the Free
  64810. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64811. - 02111-1307 USA. */
  64812. + License along with the GNU C Library; if not, see
  64813. + <http://www.gnu.org/licenses/>. */
  64814. #ifndef _SYS_PERM_H
  64815. @@ -26,7 +25,6 @@
  64816. /* Set port input/output permissions. */
  64817. extern int ioperm (unsigned long int __from, unsigned long int __num,
  64818. int __turn_on) __THROW;
  64819. -libc_hidden_proto(ioperm)
  64820. /* Change I/O privilege level. */
  64821. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/procfs.h uClibc/libc/sysdeps/linux/i386/sys/procfs.h
  64822. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  64823. +++ uClibc/libc/sysdeps/linux/i386/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  64824. @@ -12,9 +12,8 @@
  64825. Lesser General Public License for more details.
  64826. You should have received a copy of the GNU Lesser General Public
  64827. - License along with the GNU C Library; if not, write to the Free
  64828. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64829. - 02111-1307 USA. */
  64830. + License along with the GNU C Library; if not, see
  64831. + <http://www.gnu.org/licenses/>. */
  64832. #ifndef _SYS_PROCFS_H
  64833. #define _SYS_PROCFS_H 1
  64834. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/reg.h uClibc/libc/sysdeps/linux/i386/sys/reg.h
  64835. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  64836. +++ uClibc/libc/sysdeps/linux/i386/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  64837. @@ -12,9 +12,8 @@
  64838. Lesser General Public License for more details.
  64839. You should have received a copy of the GNU Lesser General Public
  64840. - License along with the GNU C Library; if not, write to the Free
  64841. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64842. - 02111-1307 USA. */
  64843. + License along with the GNU C Library; if not, see
  64844. + <http://www.gnu.org/licenses/>. */
  64845. #ifndef _SYS_REG_H
  64846. #define _SYS_REG_H 1
  64847. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/ucontext.h uClibc/libc/sysdeps/linux/i386/sys/ucontext.h
  64848. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  64849. +++ uClibc/libc/sysdeps/linux/i386/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  64850. @@ -12,9 +12,8 @@
  64851. Lesser General Public License for more details.
  64852. You should have received a copy of the GNU Lesser General Public
  64853. - License along with the GNU C Library; if not, write to the Free
  64854. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64855. - 02111-1307 USA. */
  64856. + License along with the GNU C Library; if not, see
  64857. + <http://www.gnu.org/licenses/>. */
  64858. #ifndef _SYS_UCONTEXT_H
  64859. #define _SYS_UCONTEXT_H 1
  64860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/user.h uClibc/libc/sysdeps/linux/i386/sys/user.h
  64861. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  64862. +++ uClibc/libc/sysdeps/linux/i386/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  64863. @@ -12,9 +12,8 @@
  64864. Lesser General Public License for more details.
  64865. You should have received a copy of the GNU Lesser General Public
  64866. - License along with the GNU C Library; if not, write to the Free
  64867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64868. - 02111-1307 USA. */
  64869. + License along with the GNU C Library; if not, see
  64870. + <http://www.gnu.org/licenses/>. */
  64871. #ifndef _SYS_USER_H
  64872. #define _SYS_USER_H 1
  64873. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/vm86.h uClibc/libc/sysdeps/linux/i386/sys/vm86.h
  64874. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/vm86.h 2012-05-15 09:20:09.000000000 +0200
  64875. +++ uClibc/libc/sysdeps/linux/i386/sys/vm86.h 2014-02-03 12:32:56.000000000 +0100
  64876. @@ -12,9 +12,8 @@
  64877. Lesser General Public License for more details.
  64878. You should have received a copy of the GNU Lesser General Public
  64879. - License along with the GNU C Library; if not, write to the Free
  64880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64881. - 02111-1307 USA. */
  64882. + License along with the GNU C Library; if not, see
  64883. + <http://www.gnu.org/licenses/>. */
  64884. #ifndef _SYS_VM86_H
  64885. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sysdep.h uClibc/libc/sysdeps/linux/i386/sysdep.h
  64886. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  64887. +++ uClibc/libc/sysdeps/linux/i386/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  64888. @@ -14,9 +14,8 @@
  64889. Lesser General Public License for more details.
  64890. You should have received a copy of the GNU Lesser General Public
  64891. - License along with the GNU C Library; if not, write to the Free
  64892. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64893. - 02111-1307 USA. */
  64894. + License along with the GNU C Library; if not, see
  64895. + <http://www.gnu.org/licenses/>. */
  64896. #ifndef _LINUX_I386_SYSDEP_H
  64897. #define _LINUX_I386_SYSDEP_H 1
  64898. @@ -44,12 +43,9 @@
  64899. incomplete stabs information. Fake some entries here which specify
  64900. the current source file. */
  64901. #define ENTRY(name) \
  64902. - STABS_CURRENT_FILE1("") \
  64903. - STABS_CURRENT_FILE(name) \
  64904. ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
  64905. ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
  64906. .align ALIGNARG(4); \
  64907. - STABS_FUN(name) \
  64908. C_LABEL(name) \
  64909. cfi_startproc; \
  64910. CALL_MCOUNT
  64911. @@ -58,30 +54,6 @@
  64912. #define END(name) \
  64913. cfi_endproc; \
  64914. ASM_SIZE_DIRECTIVE(name) \
  64915. - STABS_FUN_END(name)
  64916. -
  64917. -#ifdef HAVE_CPP_ASM_DEBUGINFO
  64918. -/* Disable that goop, because we just pass -g through to the assembler
  64919. - and it generates proper line number information directly. */
  64920. -# define STABS_CURRENT_FILE1(name)
  64921. -# define STABS_CURRENT_FILE(name)
  64922. -# define STABS_FUN(name)
  64923. -# define STABS_FUN_END(name)
  64924. -#else
  64925. -/* Remove the following two lines once the gdb bug is fixed. */
  64926. -#define STABS_CURRENT_FILE(name) \
  64927. - STABS_CURRENT_FILE1 (#name)
  64928. -#define STABS_CURRENT_FILE1(name) \
  64929. - 1: .stabs name,100,0,0,1b;
  64930. -/* Emit stabs definition lines. We use F(0,1) and define t(0,1) as `int',
  64931. - the same way gcc does it. */
  64932. -#define STABS_FUN(name) STABS_FUN2(name, name##:F(0,1))
  64933. -#define STABS_FUN2(name, namestr) \
  64934. - .stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0; \
  64935. - .stabs #namestr,36,0,0,name;
  64936. -#define STABS_FUN_END(name) \
  64937. - 1: .stabs "",36,0,0,1b-name;
  64938. -#endif
  64939. /* If compiled for profiling, call `mcount' at the start of each function. */
  64940. #ifdef PROF
  64941. @@ -150,10 +122,6 @@
  64942. #undef __i686
  64943. #endif /* __ASSEMBLER__ */
  64944. -#ifndef offsetof
  64945. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  64946. -#endif
  64947. -
  64948. /* For Linux we can use the system call table in the header file
  64949. /usr/include/asm/unistd.h
  64950. of the kernel. But these symbols do not follow the SYS_* syntax
  64951. @@ -227,8 +195,6 @@
  64952. #define PSEUDO_END_ERRVAL(name) \
  64953. END (name)
  64954. -#define ret_ERRVAL ret
  64955. -
  64956. #ifndef __PIC__
  64957. # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  64958. #else
  64959. @@ -444,6 +410,7 @@
  64960. # define PTR_DEMANGLE(reg) rorl $9, reg; \
  64961. xorl %gs:POINTER_GUARD, reg
  64962. # else
  64963. +# include <stddef.h>
  64964. # define PTR_MANGLE(var) __asm__ ("xorl %%gs:%c2, %0\n" \
  64965. "roll $9, %0" \
  64966. : "=r" (var) \
  64967. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/ucontext_i.sym uClibc/libc/sysdeps/linux/i386/ucontext_i.sym
  64968. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  64969. +++ uClibc/libc/sysdeps/linux/i386/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  64970. @@ -0,0 +1,30 @@
  64971. +#include <stddef.h>
  64972. +#include <signal.h>
  64973. +#include <sys/ucontext.h>
  64974. +
  64975. +--
  64976. +
  64977. +SIG_BLOCK
  64978. +SIG_SETMASK
  64979. +
  64980. +#define ucontext(member) offsetof (ucontext_t, member)
  64981. +#define mcontext(member) ucontext (uc_mcontext.member)
  64982. +#define mreg(reg) mcontext (gregs[REG_##reg])
  64983. +
  64984. +oLINK ucontext (uc_link)
  64985. +oSS_SP ucontext (uc_stack.ss_sp)
  64986. +oSS_SIZE ucontext (uc_stack.ss_size)
  64987. +oGS mreg (GS)
  64988. +oFS mreg (FS)
  64989. +oEDI mreg (EDI)
  64990. +oESI mreg (ESI)
  64991. +oEBP mreg (EBP)
  64992. +oESP mreg (ESP)
  64993. +oEBX mreg (EBX)
  64994. +oEDX mreg (EDX)
  64995. +oECX mreg (ECX)
  64996. +oEAX mreg (EAX)
  64997. +oEIP mreg (EIP)
  64998. +oFPREGS mcontext (fpregs)
  64999. +oSIGMASK ucontext (uc_sigmask)
  65000. +oFPREGSMEM ucontext (__fpregs_mem)
  65001. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/vfork.S uClibc/libc/sysdeps/linux/i386/vfork.S
  65002. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  65003. +++ uClibc/libc/sysdeps/linux/i386/vfork.S 2014-02-03 12:32:56.000000000 +0100
  65004. @@ -38,4 +38,4 @@
  65005. .size __vfork,.-__vfork
  65006. weak_alias(__vfork,vfork)
  65007. -libc_hidden_weak(vfork)
  65008. +libc_hidden_def(vfork)
  65009. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/fcntl.h uClibc/libc/sysdeps/linux/i960/bits/fcntl.h
  65010. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  65011. +++ uClibc/libc/sysdeps/linux/i960/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  65012. @@ -13,9 +13,8 @@
  65013. Lesser General Public License for more details.
  65014. You should have received a copy of the GNU Lesser General Public
  65015. - License along with the GNU C Library; if not, write to the Free
  65016. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65017. - 02111-1307 USA. */
  65018. + License along with the GNU C Library; if not, see
  65019. + <http://www.gnu.org/licenses/>. */
  65020. #ifndef _FCNTL_H
  65021. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  65022. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
  65023. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  65024. +++ uClibc/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  65025. @@ -12,8 +12,8 @@
  65026. /* can your target use syscall6() for mmap ? */
  65027. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  65028. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  65029. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  65030. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  65031. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  65032. /* does your target have a broken create_module() ? */
  65033. #define __UCLIBC_BROKEN_CREATE_MODULE__
  65034. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/wordsize.h uClibc/libc/sysdeps/linux/i960/bits/wordsize.h
  65035. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  65036. +++ uClibc/libc/sysdeps/linux/i960/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  65037. @@ -12,8 +12,7 @@
  65038. Lesser General Public License for more details.
  65039. You should have received a copy of the GNU Lesser General Public
  65040. - License along with the GNU C Library; if not, write to the Free
  65041. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65042. - 02111-1307 USA. */
  65043. + License along with the GNU C Library; if not, see
  65044. + <http://www.gnu.org/licenses/>. */
  65045. #define __WORDSIZE 32
  65046. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/clone.S uClibc/libc/sysdeps/linux/i960/clone.S
  65047. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/clone.S 2012-05-15 09:20:09.000000000 +0200
  65048. +++ uClibc/libc/sysdeps/linux/i960/clone.S 2014-02-03 12:32:56.000000000 +0100
  65049. @@ -14,8 +14,7 @@
  65050. # details.
  65051. #
  65052. # You should have received a copy of the GNU Library General Public License
  65053. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  65054. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  65055. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  65056. #
  65057. # Derived from an old port of uC-libc to the i960 by Keith Adams (kma@cse.ogi.edu).
  65058. #
  65059. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/crt0.S uClibc/libc/sysdeps/linux/i960/crt0.S
  65060. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/crt0.S 2012-05-15 09:20:09.000000000 +0200
  65061. +++ uClibc/libc/sysdeps/linux/i960/crt0.S 2014-02-03 12:32:56.000000000 +0100
  65062. @@ -14,8 +14,7 @@
  65063. # details.
  65064. #
  65065. # You should have received a copy of the GNU Library General Public License
  65066. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  65067. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  65068. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  65069. #
  65070. /*
  65071. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/mmap.S uClibc/libc/sysdeps/linux/i960/mmap.S
  65072. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/mmap.S 2012-05-15 09:20:09.000000000 +0200
  65073. +++ uClibc/libc/sysdeps/linux/i960/mmap.S 2014-02-03 12:32:56.000000000 +0100
  65074. @@ -14,8 +14,7 @@
  65075. # details.
  65076. #
  65077. # You should have received a copy of the GNU Library General Public License
  65078. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  65079. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  65080. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  65081. #
  65082. # Derived from an old port of uC-libc to the i960 by Keith Adams (kma@cse.ogi.edu).
  65083. #
  65084. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/setjmp.S uClibc/libc/sysdeps/linux/i960/setjmp.S
  65085. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65086. +++ uClibc/libc/sysdeps/linux/i960/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65087. @@ -122,3 +122,5 @@
  65088. mov 1, g0 /* return 1 by default */
  65089. 0:
  65090. ret /* return to caller of __sigsetjmp */
  65091. +
  65092. +libc_hidden_def(__longjmp)
  65093. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/procfs.h uClibc/libc/sysdeps/linux/i960/sys/procfs.h
  65094. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  65095. +++ uClibc/libc/sysdeps/linux/i960/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  65096. @@ -12,9 +12,8 @@
  65097. Lesser General Public License for more details.
  65098. You should have received a copy of the GNU Lesser General Public
  65099. - License along with the GNU C Library; if not, write to the Free
  65100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65101. - 02111-1307 USA. */
  65102. + License along with the GNU C Library; if not, see
  65103. + <http://www.gnu.org/licenses/>. */
  65104. #ifndef _SYS_PROCFS_H
  65105. #define _SYS_PROCFS_H 1
  65106. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/ucontext.h uClibc/libc/sysdeps/linux/i960/sys/ucontext.h
  65107. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  65108. +++ uClibc/libc/sysdeps/linux/i960/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  65109. @@ -12,9 +12,8 @@
  65110. Lesser General Public License for more details.
  65111. You should have received a copy of the GNU Lesser General Public
  65112. - License along with the GNU C Library; if not, write to the Free
  65113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65114. - 02111-1307 USA. */
  65115. + License along with the GNU C Library; if not, see
  65116. + <http://www.gnu.org/licenses/>. */
  65117. /* Don't rely on this, the interface is currently messed up and may need to
  65118. be broken to be fixed. */
  65119. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/vfork.S uClibc/libc/sysdeps/linux/i960/vfork.S
  65120. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/vfork.S 2012-05-15 09:20:09.000000000 +0200
  65121. +++ uClibc/libc/sysdeps/linux/i960/vfork.S 2014-02-03 12:32:56.000000000 +0100
  65122. @@ -18,6 +18,7 @@
  65123. .globl ___vfork
  65124. .hidden ___vfork
  65125. + .type ___vfork,@function
  65126. ___vfork:
  65127. mov g13, r3
  65128. ldconst __NR_vfork, g13
  65129. @@ -30,4 +31,4 @@
  65130. ret
  65131. weak_alias(__vfork,vfork)
  65132. -libc_hidden_weak(vfork)
  65133. +libc_hidden_def(vfork)
  65134. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/atomic.h uClibc/libc/sysdeps/linux/ia64/bits/atomic.h
  65135. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  65136. +++ uClibc/libc/sysdeps/linux/ia64/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  65137. @@ -12,9 +12,8 @@
  65138. Lesser General Public License for more details.
  65139. You should have received a copy of the GNU Lesser General Public
  65140. - License along with the GNU C Library; if not, write to the Free
  65141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65142. - 02111-1307 USA. */
  65143. + License along with the GNU C Library; if not, see
  65144. + <http://www.gnu.org/licenses/>. */
  65145. #include <stdint.h>
  65146. #include <ia64intrin.h>
  65147. @@ -92,12 +91,12 @@
  65148. do \
  65149. { \
  65150. __oldval = __val; \
  65151. - if (__builtin_expect (__val <= 0, 0)) \
  65152. + if (unlikely (__val <= 0)) \
  65153. break; \
  65154. __val = atomic_compare_and_exchange_val_acq (__memp, __oldval - 1, \
  65155. __oldval); \
  65156. } \
  65157. - while (__builtin_expect (__val != __oldval, 0)); \
  65158. + while (unlikely (__val != __oldval)); \
  65159. __oldval; })
  65160. #define atomic_bit_test_set(mem, bit) \
  65161. @@ -113,7 +112,7 @@
  65162. __oldval | __mask, \
  65163. __oldval); \
  65164. } \
  65165. - while (__builtin_expect (__val != __oldval, 0)); \
  65166. + while (unlikely (__val != __oldval)); \
  65167. __oldval & __mask; })
  65168. #define atomic_full_barrier() __sync_synchronize ()
  65169. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/byteswap.h uClibc/libc/sysdeps/linux/ia64/bits/byteswap.h
  65170. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  65171. +++ uClibc/libc/sysdeps/linux/ia64/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  65172. @@ -13,9 +13,8 @@
  65173. Lesser General Public License for more details.
  65174. You should have received a copy of the GNU Lesser General Public
  65175. - License along with the GNU C Library; if not, write to the Free
  65176. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65177. - 02111-1307 USA. */
  65178. + License along with the GNU C Library; if not, see
  65179. + <http://www.gnu.org/licenses/>. */
  65180. #ifndef _ASM_BITS_BYTESWAP_H
  65181. #define _ASM_BITS_BYTESWAP_H 1
  65182. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fcntl.h uClibc/libc/sysdeps/linux/ia64/bits/fcntl.h
  65183. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  65184. +++ uClibc/libc/sysdeps/linux/ia64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  65185. @@ -13,9 +13,8 @@
  65186. Lesser General Public License for more details.
  65187. You should have received a copy of the GNU Lesser General Public
  65188. - License along with the GNU C Library; if not, write to the Free
  65189. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65190. - 02111-1307 USA. */
  65191. + License along with the GNU C Library; if not, see
  65192. + <http://www.gnu.org/licenses/>. */
  65193. #ifndef _FCNTL_H
  65194. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  65195. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fenv.h uClibc/libc/sysdeps/linux/ia64/bits/fenv.h
  65196. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  65197. +++ uClibc/libc/sysdeps/linux/ia64/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  65198. @@ -12,9 +12,8 @@
  65199. Lesser General Public License for more details.
  65200. You should have received a copy of the GNU Lesser General Public
  65201. - License along with the GNU C Library; if not, write to the Free
  65202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65203. - 02111-1307 USA. */
  65204. + License along with the GNU C Library; if not, see
  65205. + <http://www.gnu.org/licenses/>. */
  65206. #ifndef _FENV_H
  65207. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  65208. @@ -73,15 +72,15 @@
  65209. typedef unsigned long int fenv_t;
  65210. /* If the default argument is used we use this value. */
  65211. -#define FE_DFL_ENV ((__const fenv_t *) 0xc009804c0270033fUL)
  65212. +#define FE_DFL_ENV ((const fenv_t *) 0xc009804c0270033fUL)
  65213. #ifdef __USE_GNU
  65214. /* Floating-point environment where only FE_UNNORMAL is masked since this
  65215. exception is not generally supported by glibc. */
  65216. -# define FE_NOMASK_ENV ((__const fenv_t *) 0xc009804c02700302UL)
  65217. +# define FE_NOMASK_ENV ((const fenv_t *) 0xc009804c02700302UL)
  65218. /* Floating-point environment with (processor-dependent) non-IEEE
  65219. floating point. In this case, turning on flush-to-zero mode for
  65220. s0, s2, and s3. */
  65221. -# define FE_NONIEEE_ENV ((__const fenv_t *) 0xc009a04d0270037fUL)
  65222. +# define FE_NONIEEE_ENV ((const fenv_t *) 0xc009a04d0270037fUL)
  65223. #endif
  65224. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/huge_vall.h uClibc/libc/sysdeps/linux/ia64/bits/huge_vall.h
  65225. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  65226. +++ uClibc/libc/sysdeps/linux/ia64/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  65227. @@ -0,0 +1,41 @@
  65228. +/* `HUGE_VALL' constant for ia64 (where it is infinity).
  65229. + Used by <stdlib.h> and <math.h> functions for overflow.
  65230. + Copyright (C) 2000, 2004 Free Software Foundation, Inc.
  65231. + This file is part of the GNU C Library.
  65232. +
  65233. + The GNU C Library is free software; you can redistribute it and/or
  65234. + modify it under the terms of the GNU Lesser General Public
  65235. + License as published by the Free Software Foundation; either
  65236. + version 2.1 of the License, or (at your option) any later version.
  65237. +
  65238. + The GNU C Library is distributed in the hope that it will be useful,
  65239. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  65240. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  65241. + Lesser General Public License for more details.
  65242. +
  65243. + You should have received a copy of the GNU Lesser General Public
  65244. + License along with the GNU C Library; if not, see
  65245. + <http://www.gnu.org/licenses/>. */
  65246. +
  65247. +#ifndef _MATH_H
  65248. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  65249. +#endif
  65250. +
  65251. +#if __GNUC_PREREQ(3,3)
  65252. +# define HUGE_VALL (__builtin_huge_vall())
  65253. +#elif __GNUC_PREREQ(2,96)
  65254. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  65255. +#else
  65256. +
  65257. +# define __HUGE_VALL_bytes { 0,0,0,0,0,0,0, 0x80, 0xff, 0x7f, 0,0,0,0,0,0}
  65258. +
  65259. +# define __huge_vall_t union { unsigned char __c[16]; long double __ld; }
  65260. +# ifdef __GNUC__
  65261. +# define HUGE_VALL (__extension__ \
  65262. + ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld)
  65263. +# else /* Not GCC. */
  65264. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  65265. +# define HUGE_VALL (__huge_vall.__ld)
  65266. +# endif /* GCC. */
  65267. +
  65268. +#endif /* GCC 2.95 */
  65269. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/ipc.h uClibc/libc/sysdeps/linux/ia64/bits/ipc.h
  65270. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  65271. +++ uClibc/libc/sysdeps/linux/ia64/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  65272. @@ -13,9 +13,8 @@
  65273. Lesser General Public License for more details.
  65274. You should have received a copy of the GNU Lesser General Public
  65275. - License along with the GNU C Library; if not, write to the Free
  65276. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65277. - 02111-1307 USA. */
  65278. + License along with the GNU C Library; if not, see
  65279. + <http://www.gnu.org/licenses/>. */
  65280. #ifndef _SYS_IPC_H
  65281. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  65282. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/kernel_types.h uClibc/libc/sysdeps/linux/ia64/bits/kernel_types.h
  65283. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  65284. +++ uClibc/libc/sysdeps/linux/ia64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  65285. @@ -52,5 +52,7 @@
  65286. typedef unsigned int __kernel_dev_t;
  65287. typedef unsigned int __kernel_old_dev_t;
  65288. +typedef long __kernel_long_t;
  65289. +typedef unsigned long __kernel_ulong_t;
  65290. #endif /* _ASM_IA64_POSIX_TYPES_H */
  65291. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/local_lim.h uClibc/libc/sysdeps/linux/ia64/bits/local_lim.h
  65292. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  65293. +++ uClibc/libc/sysdeps/linux/ia64/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  65294. @@ -0,0 +1,99 @@
  65295. +/* Minimum guaranteed maximum values for system limits. Linux/IA-64 version.
  65296. + Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc.
  65297. + This file is part of the GNU C Library.
  65298. +
  65299. + The GNU C Library is free software; you can redistribute it and/or
  65300. + modify it under the terms of the GNU Library General Public License as
  65301. + published by the Free Software Foundation; either version 2 of the
  65302. + License, or (at your option) any later version.
  65303. +
  65304. + The GNU C Library is distributed in the hope that it will be useful,
  65305. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  65306. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  65307. + Library General Public License for more details.
  65308. +
  65309. + You should have received a copy of the GNU Library General Public
  65310. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  65311. + see <http://www.gnu.org/licenses/>. */
  65312. +
  65313. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  65314. + and defines LINK_MAX although filesystems have different maxima. A
  65315. + similar thing is true for OPEN_MAX: the limit can be changed at
  65316. + runtime and therefore the macro must not be defined. Remove this
  65317. + after including the header if necessary. */
  65318. +#ifndef NR_OPEN
  65319. +# define __undef_NR_OPEN
  65320. +#endif
  65321. +#ifndef LINK_MAX
  65322. +# define __undef_LINK_MAX
  65323. +#endif
  65324. +#ifndef OPEN_MAX
  65325. +# define __undef_OPEN_MAX
  65326. +#endif
  65327. +#ifndef ARG_MAX
  65328. +# define __undef_ARG_MAX
  65329. +#endif
  65330. +
  65331. +/* The kernel sources contain a file with all the needed information. */
  65332. +#include <linux/limits.h>
  65333. +
  65334. +/* Have to remove NR_OPEN? */
  65335. +#ifdef __undef_NR_OPEN
  65336. +# undef NR_OPEN
  65337. +# undef __undef_NR_OPEN
  65338. +#endif
  65339. +/* Have to remove LINK_MAX? */
  65340. +#ifdef __undef_LINK_MAX
  65341. +# undef LINK_MAX
  65342. +# undef __undef_LINK_MAX
  65343. +#endif
  65344. +/* Have to remove OPEN_MAX? */
  65345. +#ifdef __undef_OPEN_MAX
  65346. +# undef OPEN_MAX
  65347. +# undef __undef_OPEN_MAX
  65348. +#endif
  65349. +/* Have to remove ARG_MAX? */
  65350. +#ifdef __undef_ARG_MAX
  65351. +# undef ARG_MAX
  65352. +# undef __undef_ARG_MAX
  65353. +#endif
  65354. +
  65355. +/* The number of data keys per process. */
  65356. +#define _POSIX_THREAD_KEYS_MAX 128
  65357. +/* This is the value this implementation supports. */
  65358. +#define PTHREAD_KEYS_MAX 1024
  65359. +
  65360. +/* Controlling the iterations of destructors for thread-specific data. */
  65361. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  65362. +/* Number of iterations this implementation does. */
  65363. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  65364. +
  65365. +/* The number of threads per process. */
  65366. +#define _POSIX_THREAD_THREADS_MAX 64
  65367. +/* We have no predefined limit on the number of threads. */
  65368. +#undef PTHREAD_THREADS_MAX
  65369. +
  65370. +/* Maximum amount by which a process can descrease its asynchronous I/O
  65371. + priority level. */
  65372. +#define AIO_PRIO_DELTA_MAX 20
  65373. +
  65374. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  65375. +#define PTHREAD_STACK_MIN 196608
  65376. +
  65377. +/* Maximum number of timer expiration overruns. */
  65378. +#define DELAYTIMER_MAX 2147483647
  65379. +
  65380. +/* Maximum tty name length. */
  65381. +#define TTY_NAME_MAX 32
  65382. +
  65383. +/* Maximum login name length. This is arbitrary. */
  65384. +#define LOGIN_NAME_MAX 256
  65385. +
  65386. +/* Maximum host name length. */
  65387. +#define HOST_NAME_MAX 64
  65388. +
  65389. +/* Maximum message queue priority level. */
  65390. +#define MQ_PRIO_MAX 32768
  65391. +
  65392. +/* Maximum value the semaphore can have. */
  65393. +#define SEM_VALUE_MAX (2147483647)
  65394. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathdef.h uClibc/libc/sysdeps/linux/ia64/bits/mathdef.h
  65395. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  65396. +++ uClibc/libc/sysdeps/linux/ia64/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  65397. @@ -12,9 +12,8 @@
  65398. Lesser General Public License for more details.
  65399. You should have received a copy of the GNU Lesser General Public
  65400. - License along with the GNU C Library; if not, write to the Free
  65401. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65402. - 02111-1307 USA. */
  65403. + License along with the GNU C Library; if not, see
  65404. + <http://www.gnu.org/licenses/>. */
  65405. #if !defined _MATH_H && !defined _COMPLEX_H
  65406. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  65407. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathinline.h uClibc/libc/sysdeps/linux/ia64/bits/mathinline.h
  65408. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  65409. +++ uClibc/libc/sysdeps/linux/ia64/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  65410. @@ -13,9 +13,8 @@
  65411. Lesser General Public License for more details.
  65412. You should have received a copy of the GNU Lesser General Public
  65413. - License along with the GNU C Library; if not, write to the Free
  65414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65415. - 02111-1307 USA. */
  65416. + License along with the GNU C Library; if not, see
  65417. + <http://www.gnu.org/licenses/>. */
  65418. #ifndef _MATH_H
  65419. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  65420. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/msq.h uClibc/libc/sysdeps/linux/ia64/bits/msq.h
  65421. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  65422. +++ uClibc/libc/sysdeps/linux/ia64/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  65423. @@ -13,9 +13,8 @@
  65424. Lesser General Public License for more details.
  65425. You should have received a copy of the GNU Lesser General Public
  65426. - License along with the GNU C Library; if not, write to the Free
  65427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65428. - 02111-1307 USA. */
  65429. + License along with the GNU C Library; if not, see
  65430. + <http://www.gnu.org/licenses/>. */
  65431. #ifndef _SYS_MSG_H
  65432. #error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  65433. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sem.h uClibc/libc/sysdeps/linux/ia64/bits/sem.h
  65434. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  65435. +++ uClibc/libc/sysdeps/linux/ia64/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  65436. @@ -14,9 +14,8 @@
  65437. Lesser General Public License for more details.
  65438. You should have received a copy of the GNU Lesser General Public
  65439. - License along with the GNU C Library; if not, write to the Free
  65440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65441. - 02111-1307 USA. */
  65442. + License along with the GNU C Library; if not, see
  65443. + <http://www.gnu.org/licenses/>. */
  65444. #ifndef _SYS_SEM_H
  65445. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  65446. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/setjmp.h uClibc/libc/sysdeps/linux/ia64/bits/setjmp.h
  65447. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  65448. +++ uClibc/libc/sysdeps/linux/ia64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  65449. @@ -1,5 +1,5 @@
  65450. /* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version.
  65451. - Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
  65452. + Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
  65453. This file is part of the GNU C Library.
  65454. Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
  65455. @@ -14,9 +14,8 @@
  65456. Lesser General Public License for more details.
  65457. You should have received a copy of the GNU Lesser General Public
  65458. - License along with the GNU C Library; if not, write to the Free
  65459. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65460. - 02111-1307 USA. */
  65461. + License along with the GNU C Library; if not, see
  65462. + <http://www.gnu.org/licenses/>. */
  65463. #ifndef _BITS_SETJMP_H
  65464. #define _BITS_SETJMP_H 1
  65465. @@ -32,9 +31,4 @@
  65466. /* the __jmp_buf element type should be __float80 per ABI... */
  65467. typedef long __jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
  65468. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  65469. - variable at ADDRESS. */
  65470. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  65471. - ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
  65472. -
  65473. #endif /* bits/setjmp.h */
  65474. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/shm.h uClibc/libc/sysdeps/linux/ia64/bits/shm.h
  65475. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  65476. +++ uClibc/libc/sysdeps/linux/ia64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  65477. @@ -12,9 +12,8 @@
  65478. Lesser General Public License for more details.
  65479. You should have received a copy of the GNU Lesser General Public
  65480. - License along with the GNU C Library; if not, write to the Free
  65481. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65482. - 02111-1307 USA. */
  65483. + License along with the GNU C Library; if not, see
  65484. + <http://www.gnu.org/licenses/>. */
  65485. #ifndef _SYS_SHM_H
  65486. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  65487. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigaction.h uClibc/libc/sysdeps/linux/ia64/bits/sigaction.h
  65488. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  65489. +++ uClibc/libc/sysdeps/linux/ia64/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  65490. @@ -13,9 +13,8 @@
  65491. Lesser General Public License for more details.
  65492. You should have received a copy of the GNU Lesser General Public
  65493. - License along with the GNU C Library; if not, write to the Free
  65494. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65495. - 02111-1307 USA. */
  65496. + License along with the GNU C Library; if not, see
  65497. + <http://www.gnu.org/licenses/>. */
  65498. #ifndef _SIGNAL_H
  65499. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  65500. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigcontext.h uClibc/libc/sysdeps/linux/ia64/bits/sigcontext.h
  65501. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  65502. +++ uClibc/libc/sysdeps/linux/ia64/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  65503. @@ -14,9 +14,8 @@
  65504. Lesser General Public License for more details.
  65505. You should have received a copy of the GNU Lesser General Public
  65506. - License along with the GNU C Library; if not, write to the Free
  65507. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65508. - 02111-1307 USA. */
  65509. + License along with the GNU C Library; if not, see
  65510. + <http://www.gnu.org/licenses/>. */
  65511. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  65512. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  65513. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/siginfo.h uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h
  65514. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  65515. +++ uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  65516. @@ -14,9 +14,8 @@
  65517. Lesser General Public License for more details.
  65518. You should have received a copy of the GNU Lesser General Public
  65519. - License along with the GNU C Library; if not, write to the Free
  65520. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65521. - 02111-1307 USA. */
  65522. + License along with the GNU C Library; if not, see
  65523. + <http://www.gnu.org/licenses/>. */
  65524. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  65525. && !defined __need_sigevent_t
  65526. @@ -298,7 +297,11 @@
  65527. /* Structure to transport application-defined values with signals. */
  65528. # define __SIGEV_MAX_SIZE 64
  65529. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  65530. +# if __WORDSIZE == 64
  65531. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  65532. +# else
  65533. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  65534. +# endif
  65535. typedef struct sigevent
  65536. {
  65537. @@ -310,6 +313,10 @@
  65538. {
  65539. int _pad[__SIGEV_PAD_SIZE];
  65540. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  65541. + thread to receive the signal. */
  65542. + __pid_t _tid;
  65543. +
  65544. struct
  65545. {
  65546. void (*_function) (sigval_t); /* Function to start. */
  65547. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigstack.h uClibc/libc/sysdeps/linux/ia64/bits/sigstack.h
  65548. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  65549. +++ uClibc/libc/sysdeps/linux/ia64/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  65550. @@ -13,9 +13,8 @@
  65551. Lesser General Public License for more details.
  65552. You should have received a copy of the GNU Lesser General Public
  65553. - License along with the GNU C Library; if not, write to the Free
  65554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65555. - 02111-1307 USA. */
  65556. + License along with the GNU C Library; if not, see
  65557. + <http://www.gnu.org/licenses/>. */
  65558. #ifndef _SIGNAL_H
  65559. # error "Never include this file directly. Use <signal.h> instead"
  65560. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stackinfo.h uClibc/libc/sysdeps/linux/ia64/bits/stackinfo.h
  65561. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  65562. +++ uClibc/libc/sysdeps/linux/ia64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  65563. @@ -12,9 +12,8 @@
  65564. Lesser General Public License for more details.
  65565. You should have received a copy of the GNU Lesser General Public
  65566. - License along with the GNU C Library; if not, write to the Free
  65567. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65568. - 02111-1307 USA. */
  65569. + License along with the GNU C Library; if not, see
  65570. + <http://www.gnu.org/licenses/>. */
  65571. /* This file contains a bit of information about the stack allocation
  65572. of the processor. */
  65573. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stat.h uClibc/libc/sysdeps/linux/ia64/bits/stat.h
  65574. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  65575. +++ uClibc/libc/sysdeps/linux/ia64/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  65576. @@ -12,9 +12,8 @@
  65577. Lesser General Public License for more details.
  65578. You should have received a copy of the GNU Lesser General Public
  65579. - License along with the GNU C Library; if not, write to the Free
  65580. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65581. - 02111-1307 USA. */
  65582. + License along with the GNU C Library; if not, see
  65583. + <http://www.gnu.org/licenses/>. */
  65584. #ifndef _SYS_STAT_H
  65585. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  65586. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/syscalls.h uClibc/libc/sysdeps/linux/ia64/bits/syscalls.h
  65587. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  65588. +++ uClibc/libc/sysdeps/linux/ia64/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  65589. @@ -15,9 +15,8 @@
  65590. Lesser General Public License for more details.
  65591. You should have received a copy of the GNU Lesser General Public
  65592. - License along with the GNU C Library; if not, write to the Free
  65593. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65594. - 02111-1307 USA. */
  65595. + License along with the GNU C Library; if not, see
  65596. + <http://www.gnu.org/licenses/>. */
  65597. #ifndef _BITS_SYSCALLS_H
  65598. #define _BITS_SYSCALLS_H
  65599. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h
  65600. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  65601. +++ uClibc/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  65602. @@ -11,8 +11,8 @@
  65603. /* can your target use syscall6() for mmap ? */
  65604. #define __UCLIBC_MMAP_HAS_6_ARGS__
  65605. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  65606. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  65607. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  65608. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  65609. /* does your target have a broken create_module() ? */
  65610. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  65611. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/wordsize.h uClibc/libc/sysdeps/linux/ia64/bits/wordsize.h
  65612. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  65613. +++ uClibc/libc/sysdeps/linux/ia64/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  65614. @@ -12,8 +12,7 @@
  65615. Lesser General Public License for more details.
  65616. You should have received a copy of the GNU Lesser General Public
  65617. - License along with the GNU C Library; if not, write to the Free
  65618. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65619. - 02111-1307 USA. */
  65620. + License along with the GNU C Library; if not, see
  65621. + <http://www.gnu.org/licenses/>. */
  65622. #define __WORDSIZE 64
  65623. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/brk.S uClibc/libc/sysdeps/linux/ia64/brk.S
  65624. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/brk.S 2012-05-15 09:20:09.000000000 +0200
  65625. +++ uClibc/libc/sysdeps/linux/ia64/brk.S 2014-02-03 12:32:56.000000000 +0100
  65626. @@ -15,9 +15,8 @@
  65627. Lesser General Public License for more details.
  65628. You should have received a copy of the GNU Lesser General Public
  65629. - License along with the GNU C Library; if not, write to the Free
  65630. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65631. - 02111-1307 USA. */
  65632. + License along with the GNU C Library; if not, see
  65633. + <http://www.gnu.org/licenses/>. */
  65634. #include "sysdep.h"
  65635. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/clone2.S uClibc/libc/sysdeps/linux/ia64/clone2.S
  65636. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/clone2.S 2012-05-15 09:20:09.000000000 +0200
  65637. +++ uClibc/libc/sysdeps/linux/ia64/clone2.S 2014-02-03 12:32:56.000000000 +0100
  65638. @@ -12,9 +12,8 @@
  65639. Lesser General Public License for more details.
  65640. You should have received a copy of the GNU Lesser General Public
  65641. - License along with the GNU C Library; if not, write to the Free
  65642. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65643. - 02111-1307 USA. */
  65644. + License along with the GNU C Library; if not, see
  65645. + <http://www.gnu.org/licenses/>. */
  65646. #include "sysdep.h"
  65647. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/crt1.S uClibc/libc/sysdeps/linux/ia64/crt1.S
  65648. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  65649. +++ uClibc/libc/sysdeps/linux/ia64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  65650. @@ -30,9 +30,8 @@
  65651. Lesser General Public License for more details.
  65652. You should have received a copy of the GNU Lesser General Public
  65653. - License along with the GNU C Library; if not, write to the Free
  65654. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65655. - 02111-1307 USA. */
  65656. + License along with the GNU C Library; if not, see
  65657. + <http://www.gnu.org/licenses/>. */
  65658. #define __ASSEMBLY__
  65659. #include "sysdep.h"
  65660. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/fork.S uClibc/libc/sysdeps/linux/ia64/fork.S
  65661. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/fork.S 2012-05-15 09:20:09.000000000 +0200
  65662. +++ uClibc/libc/sysdeps/linux/ia64/fork.S 2014-02-03 12:32:56.000000000 +0100
  65663. @@ -12,9 +12,8 @@
  65664. Lesser General Public License for more details.
  65665. You should have received a copy of the GNU Lesser General Public
  65666. - License along with the GNU C Library; if not, write to the Free
  65667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65668. - 02111-1307 USA. */
  65669. + License along with the GNU C Library; if not, see
  65670. + <http://www.gnu.org/licenses/>. */
  65671. #include "sysdep.h"
  65672. @@ -24,7 +23,10 @@
  65673. /* pid_t fork(void); */
  65674. /* Implemented as a clone system call with parameters SIGCHLD and 0 */
  65675. -ENTRY(__libc_fork)
  65676. +#ifdef __UCLIBC_HAS_THREADS__
  65677. +.weak fork
  65678. +#endif
  65679. +ENTRY(fork)
  65680. alloc r2=ar.pfs,0,0,2,0
  65681. mov out0=SIGCHLD /* Return SIGCHLD when child finishes */
  65682. /* no other clone flags; nothing shared */
  65683. @@ -34,9 +36,8 @@
  65684. cmp.eq p6,p0=-1,r10
  65685. (p6) br.cond.spnt.few __syscall_error
  65686. ret
  65687. -PSEUDO_END(__libc_fork)
  65688. -
  65689. -weak_alias (__libc_fork, __fork)
  65690. -libc_hidden_def (__fork)
  65691. -weak_alias (__libc_fork, fork)
  65692. -libc_hidden_weak (fork)
  65693. +PSEUDO_END(fork)
  65694. +#ifdef __UCLIBC_HAS_THREADS__
  65695. +strong_alias(fork,__libc_fork)
  65696. +#endif
  65697. +libc_hidden_def(fork)
  65698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/ia64/jmpbuf-unwind.h
  65699. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  65700. +++ uClibc/libc/sysdeps/linux/ia64/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  65701. @@ -0,0 +1,11 @@
  65702. +/*
  65703. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  65704. + *
  65705. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65706. + */
  65707. +#include <setjmp.h>
  65708. +
  65709. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  65710. + variable at ADDRESS. */
  65711. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  65712. + ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
  65713. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/__longjmp.S uClibc/libc/sysdeps/linux/ia64/__longjmp.S
  65714. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  65715. +++ uClibc/libc/sysdeps/linux/ia64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  65716. @@ -12,9 +12,8 @@
  65717. Lesser General Public License for more details.
  65718. You should have received a copy of the GNU Lesser General Public
  65719. - License along with the GNU C Library; if not, write to the Free
  65720. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65721. - 02111-1307 USA.
  65722. + License along with the GNU C Library; if not, see
  65723. + <http://www.gnu.org/licenses/>.
  65724. Note that __sigsetjmp() did NOT flush the register stack. Instead,
  65725. we do it here since __longjmp() is usually much less frequently
  65726. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/Makefile.arch uClibc/libc/sysdeps/linux/ia64/Makefile.arch
  65727. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  65728. +++ uClibc/libc/sysdeps/linux/ia64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  65729. @@ -5,8 +5,8 @@
  65730. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65731. #
  65732. -CSRC := __syscall_error.c
  65733. +CSRC-y := __syscall_error.c
  65734. -SSRC := \
  65735. +SSRC-y := \
  65736. __longjmp.S brk.S bsd-setjmp.S bsd-_setjmp.S clone2.S fork.S \
  65737. pipe.S setjmp.S syscall.S vfork.S
  65738. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/pipe.S uClibc/libc/sysdeps/linux/ia64/pipe.S
  65739. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/pipe.S 2012-05-15 09:20:09.000000000 +0200
  65740. +++ uClibc/libc/sysdeps/linux/ia64/pipe.S 2014-02-03 12:32:56.000000000 +0100
  65741. @@ -13,9 +13,8 @@
  65742. Lesser General Public License for more details.
  65743. You should have received a copy of the GNU Lesser General Public
  65744. - License along with the GNU C Library; if not, write to the Free
  65745. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65746. - 02111-1307 USA. */
  65747. + License along with the GNU C Library; if not, see
  65748. + <http://www.gnu.org/licenses/>. */
  65749. /* __pipe is a special syscall since it returns two values. */
  65750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/setjmp.S uClibc/libc/sysdeps/linux/ia64/setjmp.S
  65751. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65752. +++ uClibc/libc/sysdeps/linux/ia64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65753. @@ -13,9 +13,8 @@
  65754. Lesser General Public License for more details.
  65755. You should have received a copy of the GNU Lesser General Public
  65756. - License along with the GNU C Library; if not, write to the Free
  65757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65758. - 02111-1307 USA.
  65759. + License along with the GNU C Library; if not, see
  65760. + <http://www.gnu.org/licenses/>.
  65761. The layout of the jmp_buf is as follows. This is subject to change
  65762. and user-code should never depend on the particular layout of
  65763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/io.h uClibc/libc/sysdeps/linux/ia64/sys/io.h
  65764. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  65765. +++ uClibc/libc/sysdeps/linux/ia64/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  65766. @@ -13,9 +13,8 @@
  65767. Lesser General Public License for more details.
  65768. You should have received a copy of the GNU Lesser General Public
  65769. - License along with the GNU C Library; if not, write to the Free
  65770. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65771. - 02111-1307 USA. */
  65772. + License along with the GNU C Library; if not, see
  65773. + <http://www.gnu.org/licenses/>. */
  65774. #ifndef _SYS_IO_H
  65775. #define _SYS_IO_H 1
  65776. @@ -24,6 +23,7 @@
  65777. __BEGIN_DECLS
  65778. +#if defined __UCLIBC_LINUX_SPECIFIC__
  65779. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  65780. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  65781. permission off for that range. This call requires root privileges.
  65782. @@ -33,12 +33,12 @@
  65783. E.g., Linux/Alpha for Alpha PCs supports this. */
  65784. extern int ioperm (unsigned long int __from, unsigned long int __num,
  65785. int __turn_on);
  65786. -libc_hidden_proto(ioperm)
  65787. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  65788. access any I/O port is granted. This call requires root
  65789. privileges. */
  65790. extern int iopl (int __level);
  65791. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  65792. extern unsigned int _inb (unsigned long int __port);
  65793. extern unsigned int _inb (unsigned long int __port);
  65794. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/procfs.h uClibc/libc/sysdeps/linux/ia64/sys/procfs.h
  65795. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  65796. +++ uClibc/libc/sysdeps/linux/ia64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  65797. @@ -12,9 +12,8 @@
  65798. Lesser General Public License for more details.
  65799. You should have received a copy of the GNU Lesser General Public
  65800. - License along with the GNU C Library; if not, write to the Free
  65801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65802. - 02111-1307 USA. */
  65803. + License along with the GNU C Library; if not, see
  65804. + <http://www.gnu.org/licenses/>. */
  65805. #ifndef _SYS_PROCFS_H
  65806. #define _SYS_PROCFS_H 1
  65807. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ptrace.h uClibc/libc/sysdeps/linux/ia64/sys/ptrace.h
  65808. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  65809. +++ uClibc/libc/sysdeps/linux/ia64/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  65810. @@ -13,9 +13,8 @@
  65811. Lesser General Public License for more details.
  65812. You should have received a copy of the GNU Lesser General Public
  65813. - License along with the GNU C Library; if not, write to the Free
  65814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65815. - 02111-1307 USA. */
  65816. + License along with the GNU C Library; if not, see
  65817. + <http://www.gnu.org/licenses/>. */
  65818. #ifndef _SYS_PTRACE_H
  65819. #define _SYS_PTRACE_H 1
  65820. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ucontext.h uClibc/libc/sysdeps/linux/ia64/sys/ucontext.h
  65821. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  65822. +++ uClibc/libc/sysdeps/linux/ia64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  65823. @@ -12,9 +12,8 @@
  65824. Lesser General Public License for more details.
  65825. You should have received a copy of the GNU Lesser General Public
  65826. - License along with the GNU C Library; if not, write to the Free
  65827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65828. - 02111-1307 USA. */
  65829. + License along with the GNU C Library; if not, see
  65830. + <http://www.gnu.org/licenses/>. */
  65831. #ifndef _SYS_UCONTEXT_H
  65832. #define _SYS_UCONTEXT_H 1
  65833. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/user.h uClibc/libc/sysdeps/linux/ia64/sys/user.h
  65834. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  65835. +++ uClibc/libc/sysdeps/linux/ia64/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  65836. @@ -12,9 +12,8 @@
  65837. Lesser General Public License for more details.
  65838. You should have received a copy of the GNU Lesser General Public
  65839. - License along with the GNU C Library; if not, write to the Free
  65840. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65841. - 02111-1307 USA. */
  65842. + License along with the GNU C Library; if not, see
  65843. + <http://www.gnu.org/licenses/>. */
  65844. #ifndef _SYS_USER_H
  65845. #define _SYS_USER_H 1
  65846. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/syscall.S uClibc/libc/sysdeps/linux/ia64/syscall.S
  65847. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/syscall.S 2012-05-15 09:20:09.000000000 +0200
  65848. +++ uClibc/libc/sysdeps/linux/ia64/syscall.S 2014-02-03 12:32:56.000000000 +0100
  65849. @@ -13,9 +13,8 @@
  65850. Lesser General Public License for more details.
  65851. You should have received a copy of the GNU Lesser General Public
  65852. - License along with the GNU C Library; if not, write to the Free
  65853. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65854. - 02111-1307 USA. */
  65855. + License along with the GNU C Library; if not, see
  65856. + <http://www.gnu.org/licenses/>. */
  65857. #include "sysdep.h"
  65858. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sysdep.h uClibc/libc/sysdeps/linux/ia64/sysdep.h
  65859. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  65860. +++ uClibc/libc/sysdeps/linux/ia64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  65861. @@ -14,13 +14,13 @@
  65862. Lesser General Public License for more details.
  65863. You should have received a copy of the GNU Lesser General Public
  65864. - License along with the GNU C Library; if not, write to the Free
  65865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65866. - 02111-1307 USA. */
  65867. + License along with the GNU C Library; if not, see
  65868. + <http://www.gnu.org/licenses/>. */
  65869. #ifndef _LINUX_IA64_SYSDEP_H
  65870. #define _LINUX_IA64_SYSDEP_H 1
  65871. +#include <common/sysdep.h>
  65872. #include <features.h>
  65873. #include <asm/unistd.h>
  65874. @@ -49,6 +49,15 @@
  65875. C_LABEL(name) \
  65876. CALL_MCOUNT
  65877. +#define HIDDEN_ENTRY(name) \
  65878. + .text; \
  65879. + .align 32; \
  65880. + .proc C_SYMBOL_NAME(name); \
  65881. + .global C_SYMBOL_NAME(name); \
  65882. + .hidden C_SYMBOL_NAME(name); \
  65883. + C_LABEL(name) \
  65884. + CALL_MCOUNT
  65885. +
  65886. #define LEAF(name) \
  65887. .text; \
  65888. .align 32; \
  65889. @@ -161,7 +170,6 @@
  65890. #define ret br.ret.sptk.few b0
  65891. #define ret_NOERRNO ret
  65892. -#define ret_ERRVAL ret
  65893. #endif /* not __ASSEMBLER__ */
  65894. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/vfork.S uClibc/libc/sysdeps/linux/ia64/vfork.S
  65895. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  65896. +++ uClibc/libc/sysdeps/linux/ia64/vfork.S 2014-02-03 12:32:56.000000000 +0100
  65897. @@ -12,9 +12,8 @@
  65898. Lesser General Public License for more details.
  65899. You should have received a copy of the GNU Lesser General Public
  65900. - License along with the GNU C Library; if not, write to the Free
  65901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65902. - 02111-1307 USA. */
  65903. + License along with the GNU C Library; if not, see
  65904. + <http://www.gnu.org/licenses/>. */
  65905. #include "sysdep.h"
  65906. @@ -29,7 +28,7 @@
  65907. /* pid_t vfork(void); */
  65908. /* Implemented as __clone_syscall(CLONE_VFORK | CLONE_VM | SIGCHLD, 0) */
  65909. -ENTRY(__vfork)
  65910. +HIDDEN_ENTRY(__vfork)
  65911. alloc r2=ar.pfs,0,0,2,0
  65912. mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
  65913. mov out1=0 /* Standard sp value. */
  65914. @@ -41,4 +40,4 @@
  65915. PSEUDO_END(__vfork)
  65916. weak_alias(__vfork,vfork)
  65917. -libc_hidden_weak(vfork)
  65918. +libc_hidden_def(vfork)
  65919. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/byteswap.h uClibc/libc/sysdeps/linux/m68k/bits/byteswap.h
  65920. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  65921. +++ uClibc/libc/sysdeps/linux/m68k/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  65922. @@ -13,9 +13,8 @@
  65923. Lesser General Public License for more details.
  65924. You should have received a copy of the GNU Lesser General Public
  65925. - License along with the GNU C Library; if not, write to the Free
  65926. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65927. - 02111-1307 USA. */
  65928. + License along with the GNU C Library; if not, see
  65929. + <http://www.gnu.org/licenses/>. */
  65930. #ifndef _ASM_BITS_BYTESWAP_H
  65931. #define _ASM_BITS_BYTESWAP_H 1
  65932. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fcntl.h uClibc/libc/sysdeps/linux/m68k/bits/fcntl.h
  65933. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  65934. +++ uClibc/libc/sysdeps/linux/m68k/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  65935. @@ -13,9 +13,8 @@
  65936. Lesser General Public License for more details.
  65937. You should have received a copy of the GNU Lesser General Public
  65938. - License along with the GNU C Library; if not, write to the Free
  65939. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65940. - 02111-1307 USA. */
  65941. + License along with the GNU C Library; if not, see
  65942. + <http://www.gnu.org/licenses/>. */
  65943. #ifndef _FCNTL_H
  65944. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  65945. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fenv.h uClibc/libc/sysdeps/linux/m68k/bits/fenv.h
  65946. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  65947. +++ uClibc/libc/sysdeps/linux/m68k/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  65948. @@ -12,9 +12,8 @@
  65949. Lesser General Public License for more details.
  65950. You should have received a copy of the GNU Lesser General Public
  65951. - License along with the GNU C Library; if not, write to the Free
  65952. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65953. - 02111-1307 USA. */
  65954. + License along with the GNU C Library; if not, see
  65955. + <http://www.gnu.org/licenses/>. */
  65956. #ifndef _FENV_H
  65957. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  65958. @@ -71,9 +70,9 @@
  65959. fenv_t;
  65960. /* If the default argument is used we use this value. */
  65961. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  65962. +#define FE_DFL_ENV ((const fenv_t *) -1)
  65963. #ifdef __USE_GNU
  65964. /* Floating-point environment where none of the exceptions are masked. */
  65965. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  65966. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  65967. #endif
  65968. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/huge_vall.h uClibc/libc/sysdeps/linux/m68k/bits/huge_vall.h
  65969. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  65970. +++ uClibc/libc/sysdeps/linux/m68k/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  65971. @@ -0,0 +1,42 @@
  65972. +/* `HUGE_VALL' constant for m68k (where it is infinity).
  65973. + Used by <stdlib.h> and <math.h> functions for overflow.
  65974. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  65975. + Free Software Foundation, Inc.
  65976. + This file is part of the GNU C Library.
  65977. +
  65978. + The GNU C Library is free software; you can redistribute it and/or
  65979. + modify it under the terms of the GNU Lesser General Public
  65980. + License as published by the Free Software Foundation; either
  65981. + version 2.1 of the License, or (at your option) any later version.
  65982. +
  65983. + The GNU C Library is distributed in the hope that it will be useful,
  65984. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  65985. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  65986. + Lesser General Public License for more details.
  65987. +
  65988. + You should have received a copy of the GNU Lesser General Public
  65989. + License along with the GNU C Library; if not, see
  65990. + <http://www.gnu.org/licenses/>. */
  65991. +
  65992. +#ifndef _MATH_H
  65993. +# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  65994. +#endif
  65995. +
  65996. +#if __GNUC_PREREQ(3,3)
  65997. +# define HUGE_VALL (__builtin_huge_vall ())
  65998. +#elif __GNUC_PREREQ(2,96)
  65999. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  66000. +#elif defined__GNUC__
  66001. +
  66002. +# define HUGE_VALL \
  66003. + (__extension__ \
  66004. + ((union { unsigned long __l[3]; long double __ld; }) \
  66005. + { __l: { 0x7fff0000UL, 0x80000000UL, 0UL } }).__ld)
  66006. +
  66007. +#else /* not GCC */
  66008. +
  66009. +static union { unsigned char __c[12]; long double __ld; } __huge_vall =
  66010. + { { 0x7f, 0xff, 0, 0, 0x80, 0, 0, 0, 0, 0, 0, 0 } };
  66011. +# define HUGE_VALL (__huge_vall.__ld)
  66012. +
  66013. +#endif /* GCC 2.95. */
  66014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/kernel_types.h uClibc/libc/sysdeps/linux/m68k/bits/kernel_types.h
  66015. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  66016. +++ uClibc/libc/sysdeps/linux/m68k/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  66017. @@ -32,6 +32,8 @@
  66018. typedef unsigned short __kernel_old_gid_t;
  66019. typedef long long __kernel_loff_t;
  66020. typedef __kernel_dev_t __kernel_old_dev_t;
  66021. +typedef long __kernel_long_t;
  66022. +typedef unsigned long __kernel_ulong_t;
  66023. typedef struct {
  66024. #ifdef __USE_ALL
  66025. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathdef.h uClibc/libc/sysdeps/linux/m68k/bits/mathdef.h
  66026. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  66027. +++ uClibc/libc/sysdeps/linux/m68k/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  66028. @@ -12,9 +12,8 @@
  66029. Lesser General Public License for more details.
  66030. You should have received a copy of the GNU Lesser General Public
  66031. - License along with the GNU C Library; if not, write to the Free
  66032. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66033. - 02111-1307 USA. */
  66034. + License along with the GNU C Library; if not, see
  66035. + <http://www.gnu.org/licenses/>. */
  66036. #if !defined _MATH_H && !defined _COMPLEX_H
  66037. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  66038. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathinline.h uClibc/libc/sysdeps/linux/m68k/bits/mathinline.h
  66039. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  66040. +++ uClibc/libc/sysdeps/linux/m68k/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  66041. @@ -14,9 +14,8 @@
  66042. Lesser General Public License for more details.
  66043. You should have received a copy of the GNU Lesser General Public
  66044. - License along with the GNU C Library; if not, write to the Free
  66045. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66046. - 02111-1307 USA. */
  66047. + License along with the GNU C Library; if not, see
  66048. + <http://www.gnu.org/licenses/>. */
  66049. #ifdef __GNUC__
  66050. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/poll.h uClibc/libc/sysdeps/linux/m68k/bits/poll.h
  66051. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  66052. +++ uClibc/libc/sysdeps/linux/m68k/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  66053. @@ -12,9 +12,8 @@
  66054. Lesser General Public License for more details.
  66055. You should have received a copy of the GNU Lesser General Public
  66056. - License along with the GNU C Library; if not, write to the Free
  66057. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66058. - 02111-1307 USA. */
  66059. + License along with the GNU C Library; if not, see
  66060. + <http://www.gnu.org/licenses/>. */
  66061. #ifndef _SYS_POLL_H
  66062. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  66063. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/setjmp.h uClibc/libc/sysdeps/linux/m68k/bits/setjmp.h
  66064. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  66065. +++ uClibc/libc/sysdeps/linux/m68k/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  66066. @@ -13,9 +13,8 @@
  66067. Lesser General Public License for more details.
  66068. You should have received a copy of the GNU Lesser General Public
  66069. - License along with the GNU C Library; if not, write to the Free
  66070. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66071. - 02111-1307 USA. */
  66072. + License along with the GNU C Library; if not, see
  66073. + <http://www.gnu.org/licenses/>. */
  66074. /* Define the machine-dependent type `jmp_buf'. m68k version. */
  66075. #ifndef _BITS_SETJMP_H
  66076. @@ -25,7 +24,7 @@
  66077. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  66078. #endif
  66079. -#ifndef _ASM
  66080. +#include <features.h>
  66081. typedef struct
  66082. {
  66083. @@ -37,7 +36,7 @@
  66084. int *__fp;
  66085. int *__sp;
  66086. -#if defined __HAVE_68881__ || defined __HAVE_FPU__
  66087. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66088. /* There are eight floating point registers which
  66089. are saved in IEEE 96-bit extended format. */
  66090. char __fpregs[8 * (96 / 8)];
  66091. @@ -45,24 +44,4 @@
  66092. } __jmp_buf[1];
  66093. -#endif
  66094. -
  66095. -#define JB_REGS 0
  66096. -#define JB_DREGS 0
  66097. -#define JB_AREGS 24
  66098. -#define JB_PC 48
  66099. -#define JB_FPREGS 52
  66100. -
  66101. -#if defined __HAVE_68881__ || defined __HAVE_FPU__
  66102. -# define JB_SIZE 76
  66103. -#else
  66104. -# define JB_SIZE 52
  66105. -#endif
  66106. -
  66107. -
  66108. -/* Test if longjmp to JMPBUF would unwind the frame
  66109. - containing a local variable at ADDRESS. */
  66110. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  66111. - ((void *) (address) < (void *) (jmpbuf)->__aregs[5])
  66112. -
  66113. #endif /* bits/setjmp.h */
  66114. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h
  66115. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  66116. +++ uClibc/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  66117. @@ -13,9 +13,8 @@
  66118. Lesser General Public License for more details.
  66119. You should have received a copy of the GNU Lesser General Public
  66120. - License along with the GNU C Library; if not, write to the Free
  66121. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66122. - 02111-1307 USA. */
  66123. + License along with the GNU C Library; if not, see
  66124. + <http://www.gnu.org/licenses/>. */
  66125. #define SIGCONTEXT int _code, struct sigcontext *
  66126. #define SIGCONTEXT_EXTRA_ARGS _code,
  66127. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stackinfo.h uClibc/libc/sysdeps/linux/m68k/bits/stackinfo.h
  66128. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  66129. +++ uClibc/libc/sysdeps/linux/m68k/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  66130. @@ -12,9 +12,8 @@
  66131. Lesser General Public License for more details.
  66132. You should have received a copy of the GNU Lesser General Public
  66133. - License along with the GNU C Library; if not, write to the Free
  66134. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66135. - 02111-1307 USA. */
  66136. + License along with the GNU C Library; if not, see
  66137. + <http://www.gnu.org/licenses/>. */
  66138. /* This file contains a bit of information about the stack allocation
  66139. of the processor. */
  66140. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stat.h uClibc/libc/sysdeps/linux/m68k/bits/stat.h
  66141. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  66142. +++ uClibc/libc/sysdeps/linux/m68k/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  66143. @@ -13,9 +13,8 @@
  66144. Lesser General Public License for more details.
  66145. You should have received a copy of the GNU Lesser General Public
  66146. - License along with the GNU C Library; if not, write to the Free
  66147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66148. - 02111-1307 USA. */
  66149. + License along with the GNU C Library; if not, see
  66150. + <http://www.gnu.org/licenses/>. */
  66151. #ifndef _SYS_STAT_H
  66152. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  66153. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
  66154. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  66155. +++ uClibc/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  66156. @@ -15,8 +15,8 @@
  66157. /* can your target use syscall6() for mmap ? */
  66158. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  66159. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  66160. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  66161. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  66162. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  66163. /* does your target have a broken create_module() ? */
  66164. #define __UCLIBC_BROKEN_CREATE_MODULE__
  66165. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_page.h uClibc/libc/sysdeps/linux/m68k/bits/uClibc_page.h
  66166. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  66167. +++ uClibc/libc/sysdeps/linux/m68k/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  66168. @@ -11,8 +11,8 @@
  66169. * Library General Public License for more details.
  66170. *
  66171. * You should have received a copy of the GNU Library General Public
  66172. - * License along with this library; if not, write to the Free
  66173. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  66174. + * License along with this library; if not, see
  66175. + * <http://www.gnu.org/licenses/>.
  66176. */
  66177. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  66178. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/wordsize.h uClibc/libc/sysdeps/linux/m68k/bits/wordsize.h
  66179. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  66180. +++ uClibc/libc/sysdeps/linux/m68k/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  66181. @@ -12,8 +12,7 @@
  66182. Lesser General Public License for more details.
  66183. You should have received a copy of the GNU Lesser General Public
  66184. - License along with the GNU C Library; if not, write to the Free
  66185. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66186. - 02111-1307 USA. */
  66187. + License along with the GNU C Library; if not, see
  66188. + <http://www.gnu.org/licenses/>. */
  66189. #define __WORDSIZE 32
  66190. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-_setjmp.S uClibc/libc/sysdeps/linux/m68k/bsd-_setjmp.S
  66191. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  66192. +++ uClibc/libc/sysdeps/linux/m68k/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  66193. @@ -2,9 +2,8 @@
  66194. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  66195. /* This file is released under the LGPL, any version you like */
  66196. -#define _ASM
  66197. -#define _SETJMP_H
  66198. -#include <bits/setjmp.h>
  66199. +#include <features.h>
  66200. +#include <jmpbuf-offsets.h>
  66201. .globl _setjmp;
  66202. .type _setjmp,@function
  66203. @@ -14,7 +13,7 @@
  66204. moveal %sp@(4), %a0
  66205. movel %sp@(0), %a0@(JB_PC)
  66206. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  66207. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  66208. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66209. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  66210. #endif
  66211. clrl %d0
  66212. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-setjmp.S uClibc/libc/sysdeps/linux/m68k/bsd-setjmp.S
  66213. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  66214. +++ uClibc/libc/sysdeps/linux/m68k/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  66215. @@ -2,9 +2,8 @@
  66216. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  66217. /* This file is released under the LGPL, any version you like */
  66218. -#define _ASM
  66219. -#define _SETJMP_H
  66220. -#include <bits/setjmp.h>
  66221. +#include <features.h>
  66222. +#include <jmpbuf-offsets.h>
  66223. #include "m68k_pic.S"
  66224. .globl setjmp;
  66225. @@ -15,7 +14,7 @@
  66226. moveal %sp@(4), %a0
  66227. movel %sp@(0), %a0@(JB_PC)
  66228. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  66229. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  66230. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66231. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  66232. #endif
  66233. clrl %d0
  66234. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/crt1.S uClibc/libc/sysdeps/linux/m68k/crt1.S
  66235. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/crt1.S 2012-05-15 09:20:09.000000000 +0200
  66236. +++ uClibc/libc/sysdeps/linux/m68k/crt1.S 2014-02-03 12:32:56.000000000 +0100
  66237. @@ -30,9 +30,8 @@
  66238. Lesser General Public License for more details.
  66239. You should have received a copy of the GNU Lesser General Public
  66240. - License along with the GNU C Library; if not, write to the Free
  66241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66242. - 02111-1307 USA. */
  66243. + License along with the GNU C Library; if not, see
  66244. + <http://www.gnu.org/licenses/>. */
  66245. #include <features.h>
  66246. #include "m68k_pic.S"
  66247. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/fpu_control.h uClibc/libc/sysdeps/linux/m68k/fpu_control.h
  66248. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  66249. +++ uClibc/libc/sysdeps/linux/m68k/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  66250. @@ -13,9 +13,8 @@
  66251. Lesser General Public License for more details.
  66252. You should have received a copy of the GNU Lesser General Public
  66253. - License along with the GNU C Library; if not, write to the Free
  66254. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66255. - 02111-1307 USA. */
  66256. + License along with the GNU C Library; if not, see
  66257. + <http://www.gnu.org/licenses/>. */
  66258. #ifndef _FPU_CONTROL_H
  66259. #define _FPU_CONTROL_H
  66260. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/m68k/jmpbuf-offsets.h
  66261. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  66262. +++ uClibc/libc/sysdeps/linux/m68k/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  66263. @@ -0,0 +1,19 @@
  66264. +/*
  66265. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66266. + *
  66267. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  66268. + */
  66269. +
  66270. +#include <features.h>
  66271. +
  66272. +#define JB_REGS 0
  66273. +#define JB_DREGS 0
  66274. +#define JB_AREGS 24
  66275. +#define JB_PC 48
  66276. +#define JB_FPREGS 52
  66277. +
  66278. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66279. +# define JB_SIZE 76
  66280. +#else
  66281. +# define JB_SIZE 52
  66282. +#endif
  66283. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/m68k/jmpbuf-unwind.h
  66284. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  66285. +++ uClibc/libc/sysdeps/linux/m68k/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  66286. @@ -0,0 +1,11 @@
  66287. +/*
  66288. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66289. + *
  66290. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  66291. + */
  66292. +#include <setjmp.h>
  66293. +
  66294. +/* Test if longjmp to JMPBUF would unwind the frame
  66295. + containing a local variable at ADDRESS. */
  66296. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  66297. + ((void *) (address) < (void *) (jmpbuf)->__aregs[5])
  66298. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/__longjmp.S uClibc/libc/sysdeps/linux/m68k/__longjmp.S
  66299. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  66300. +++ uClibc/libc/sysdeps/linux/m68k/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  66301. @@ -2,10 +2,8 @@
  66302. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  66303. /* This file is released under the LGPL, any version you like */
  66304. -#define _ASM
  66305. -#define _SETJMP_H
  66306. #include <features.h>
  66307. -#include <bits/setjmp.h>
  66308. +#include <jmpbuf-offsets.h>
  66309. .globl __longjmp
  66310. .type __longjmp,@function
  66311. @@ -17,7 +15,7 @@
  66312. movel #1, %d0
  66313. 1:
  66314. moveml %a0@(JB_REGS), %d2-%d7/%a2-%a7
  66315. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  66316. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66317. fmovemx %a0@(JB_FPREGS), %fp2-%fp7
  66318. #endif
  66319. movel %a0@(JB_PC), %sp@
  66320. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/Makefile.arch uClibc/libc/sysdeps/linux/m68k/Makefile.arch
  66321. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  66322. +++ uClibc/libc/sysdeps/linux/m68k/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  66323. @@ -5,6 +5,6 @@
  66324. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  66325. #
  66326. -CSRC := brk.c __syscall_error.c
  66327. +CSRC-y := brk.c __syscall_error.c
  66328. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S vfork.S
  66329. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S vfork.S
  66330. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/setjmp.S uClibc/libc/sysdeps/linux/m68k/setjmp.S
  66331. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  66332. +++ uClibc/libc/sysdeps/linux/m68k/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  66333. @@ -2,9 +2,8 @@
  66334. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  66335. /* This file is released under the LGPL, any version you like */
  66336. -#define _ASM
  66337. -#define _SETJMP_H
  66338. -#include <bits/setjmp.h>
  66339. +#include <features.h>
  66340. +#include <jmpbuf-offsets.h>
  66341. #include "m68k_pic.S"
  66342. .globl __sigsetjmp;
  66343. @@ -15,7 +14,7 @@
  66344. moveal %sp@(4), %a0
  66345. movel %sp@(0), %a0@(JB_PC)
  66346. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  66347. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  66348. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  66349. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  66350. #endif
  66351. clrl %d0
  66352. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/procfs.h uClibc/libc/sysdeps/linux/m68k/sys/procfs.h
  66353. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  66354. +++ uClibc/libc/sysdeps/linux/m68k/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  66355. @@ -12,9 +12,8 @@
  66356. Lesser General Public License for more details.
  66357. You should have received a copy of the GNU Lesser General Public
  66358. - License along with the GNU C Library; if not, write to the Free
  66359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66360. - 02111-1307 USA. */
  66361. + License along with the GNU C Library; if not, see
  66362. + <http://www.gnu.org/licenses/>. */
  66363. #ifndef _SYS_PROCFS_H
  66364. #define _SYS_PROCFS_H 1
  66365. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/reg.h uClibc/libc/sysdeps/linux/m68k/sys/reg.h
  66366. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  66367. +++ uClibc/libc/sysdeps/linux/m68k/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  66368. @@ -12,9 +12,8 @@
  66369. Lesser General Public License for more details.
  66370. You should have received a copy of the GNU Lesser General Public
  66371. - License along with the GNU C Library; if not, write to the Free
  66372. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66373. - 02111-1307 USA. */
  66374. + License along with the GNU C Library; if not, see
  66375. + <http://www.gnu.org/licenses/>. */
  66376. #ifndef _SYS_REG_H
  66377. #define _SYS_REG_H 1
  66378. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/ucontext.h uClibc/libc/sysdeps/linux/m68k/sys/ucontext.h
  66379. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  66380. +++ uClibc/libc/sysdeps/linux/m68k/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  66381. @@ -12,9 +12,8 @@
  66382. Lesser General Public License for more details.
  66383. You should have received a copy of the GNU Lesser General Public
  66384. - License along with the GNU C Library; if not, write to the Free
  66385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66386. - 02111-1307 USA. */
  66387. + License along with the GNU C Library; if not, see
  66388. + <http://www.gnu.org/licenses/>. */
  66389. /* System V/m68k ABI compliant context switching support. */
  66390. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/vfork.S uClibc/libc/sysdeps/linux/m68k/vfork.S
  66391. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/vfork.S 2012-05-15 09:20:09.000000000 +0200
  66392. +++ uClibc/libc/sysdeps/linux/m68k/vfork.S 2014-02-03 12:32:56.000000000 +0100
  66393. @@ -4,9 +4,7 @@
  66394. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  66395. */
  66396. -#include <features.h>
  66397. -
  66398. -#include <asm/unistd.h>
  66399. +#include <sys/syscall.h>
  66400. #ifndef __NR_vfork
  66401. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  66402. @@ -16,7 +14,6 @@
  66403. .text
  66404. .align 2
  66405. - .globl errno
  66406. .globl __vfork
  66407. .hidden __vfork
  66408. .type __vfork,@function
  66409. @@ -42,4 +39,4 @@
  66410. .size __vfork,.-__vfork
  66411. weak_alias(__vfork,vfork)
  66412. -libc_hidden_weak(vfork)
  66413. +libc_hidden_def(vfork)
  66414. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/Makefile.commonarch uClibc/libc/sysdeps/linux/Makefile.commonarch
  66415. --- uClibc-0.9.33.2/libc/sysdeps/linux/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  66416. +++ uClibc/libc/sysdeps/linux/Makefile.commonarch 2014-02-03 12:32:56.000000000 +0100
  66417. @@ -8,15 +8,15 @@
  66418. ARCH_DIR := $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
  66419. ARCH_OUT := $(top_builddir)libc/sysdeps/linux/$(TARGET_ARCH)
  66420. -ARCH_CSRC := $(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
  66421. -ARCH_COBJ := $(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
  66422. -ARCH_SSRC = $(patsubst %.s,$(ARCH_DIR)/%.s,$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)))
  66423. -ARCH_SOBJ = $(patsubst %.s,$(ARCH_OUT)/%.o,$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)))
  66424. +ARCH_CSRC := $(addprefix $(ARCH_DIR)/,$(CSRC-y))
  66425. +ARCH_COBJ := $(addprefix $(ARCH_OUT)/,$(CSRC-y:.c=.o))
  66426. +ARCH_SSRC = $(addprefix $(ARCH_DIR)/,$(SSRC-y))
  66427. +ARCH_SOBJ = $(patsubst %.s,%.o,$(patsubst %.S,%.o,$(addprefix $(ARCH_OUT)/,$(SSRC-y))))
  66428. -ARCH_OBJS = $(ARCH_COBJ) $(ARCH_SOBJ)
  66429. +ARCH_OBJS-y = $(ARCH_COBJ) $(ARCH_SOBJ)
  66430. crt-y := FORCE
  66431. -libc-y += $(ARCH_OBJS)
  66432. +libc-y += $(ARCH_OBJS-y)
  66433. libc-nomulti-y += $(ARCH_SOBJ)
  66434. objclean-y += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
  66435. @@ -37,5 +37,23 @@
  66436. headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
  66437. HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
  66438. $(do_rm) $(ARCH_HEADERS_OUT)
  66439. -
  66440. endif
  66441. +
  66442. +CFLAGS-ucontext_i.c = -S
  66443. +
  66444. +$(ARCH_OUT)/ucontext_i.c: $(ARCH_DIR)/ucontext_i.sym
  66445. + $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
  66446. +
  66447. +$(ARCH_OUT)/ucontext_i.s: $(ARCH_OUT)/ucontext_i.c
  66448. + $(compile.c)
  66449. +
  66450. +$(ARCH_OUT)/ucontext_i.h: $(ARCH_OUT)/ucontext_i.s
  66451. + $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
  66452. +
  66453. +pregen-headers-$(UCLIBC_HAS_CONTEXT_FUNCS) += $(ARCH_OUT)/ucontext_i.h
  66454. +
  66455. +headers_clean-$(UCLIBC_HAS_CONTEXT_FUNCS) += \
  66456. + HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i)
  66457. +
  66458. +HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i):
  66459. + $(do_rm) $(addprefix $(ARCH_OUT)/ucontext_i., c h s)
  66460. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/atomic.h uClibc/libc/sysdeps/linux/metag/bits/atomic.h
  66461. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/atomic.h 1970-01-01 01:00:00.000000000 +0100
  66462. +++ uClibc/libc/sysdeps/linux/metag/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  66463. @@ -0,0 +1,66 @@
  66464. +/*
  66465. + * Copyrith (C) 2013 Imagination Technologies Ltd.
  66466. + *
  66467. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66468. + *
  66469. + */
  66470. +
  66471. +#include <stdint.h>
  66472. +#include <sysdep.h>
  66473. +
  66474. +typedef int8_t atomic8_t;
  66475. +typedef uint8_t uatomic8_t;
  66476. +typedef int_fast8_t atomic_fast8_t;
  66477. +typedef uint_fast8_t uatomic_fast8_t;
  66478. +
  66479. +typedef int32_t atomic32_t;
  66480. +typedef uint32_t uatomic32_t;
  66481. +typedef int_fast32_t atomic_fast32_t;
  66482. +typedef uint_fast32_t uatomic_fast32_t;
  66483. +
  66484. +typedef intptr_t atomicptr_t;
  66485. +typedef uintptr_t uatomicptr_t;
  66486. +typedef intmax_t atomic_max_t;
  66487. +typedef uintmax_t uatomic_max_t;
  66488. +
  66489. +void __metag_link_error (void);
  66490. +
  66491. +#define atomic_full_barrier() \
  66492. + __asm__ __volatile__("": : :"memory")
  66493. +
  66494. +/* Atomic compare and exchange. This sequence relies on the kernel to
  66495. + provide a compare and exchange operation which is atomic. */
  66496. +
  66497. +#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
  66498. + ({ __metag_link_error (); oldval; })
  66499. +
  66500. +#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
  66501. + ({ __metag_link_error (); oldval; })
  66502. +
  66503. +/* This code uses the kernel helper to do cmpxchg. It relies on the fact
  66504. + the helper code only clobbers D0Re0. */
  66505. +#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  66506. + ({ register __typeof (oldval) a_current __asm__ ("D1Ar1"); \
  66507. + register __typeof (oldval) a_newval __asm__ ("D0Ar2") = (newval); \
  66508. + register __typeof (mem) a_ptr __asm__ ("D1Ar3") = (mem); \
  66509. + register __typeof (oldval) a_oldval __asm__ ("D0Ar4") = (oldval); \
  66510. + __asm__ __volatile__ \
  66511. + ("0:\n\t" \
  66512. + "GETD %[cur], [%[ptr]]\n\t" \
  66513. + "CMP %[cur], %[old]\n\t" \
  66514. + "BNE 1f\n\t" \
  66515. + "MOVT D1RtP, #0x6fff\n\t" \
  66516. + "ADD D1RtP, D1RtP, #0xf040\n\t" \
  66517. + "SWAP D1RtP, PC\n\t" \
  66518. + "MOV %[cur], %[old]\n\t" \
  66519. + "CMP D0Re0, #0\n\t" \
  66520. + "BNE 0b\n\t" \
  66521. + "1:" \
  66522. + : [cur] "=&r" (a_current) \
  66523. + : [new] "r" (a_newval), [ptr] "r" (a_ptr), \
  66524. + [old] "r" (a_oldval) \
  66525. + : "D0Re0", "D1RtP", "cc", "memory"); \
  66526. + a_current; })
  66527. +
  66528. +#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
  66529. + ({ __metag_link_error (); oldval; })
  66530. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/endian.h uClibc/libc/sysdeps/linux/metag/bits/endian.h
  66531. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/endian.h 1970-01-01 01:00:00.000000000 +0100
  66532. +++ uClibc/libc/sysdeps/linux/metag/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  66533. @@ -0,0 +1,12 @@
  66534. +/* Meta is little endian
  66535. + *
  66536. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66537. + *
  66538. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66539. + */
  66540. +
  66541. +#ifndef _ENDIAN_H
  66542. +# error "Never use <bits/endian.h> directly; include <endian.h> instead."
  66543. +#endif
  66544. +
  66545. +#define __BYTE_ORDER __LITTLE_ENDIAN
  66546. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fcntl.h uClibc/libc/sysdeps/linux/metag/bits/fcntl.h
  66547. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100
  66548. +++ uClibc/libc/sysdeps/linux/metag/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  66549. @@ -0,0 +1,238 @@
  66550. +/* O_*, F_*, FD_* bit values for Linux.
  66551. + Copyright (C) 1995-1998, 2000, 2004, 2006, 2007, 2008
  66552. + Free Software Foundation, Inc.
  66553. + This file is part of the GNU C Library.
  66554. +
  66555. + The GNU C Library is free software; you can redistribute it and/or
  66556. + modify it under the terms of the GNU Lesser General Public
  66557. + License as published by the Free Software Foundation; either
  66558. + version 2.1 of the License, or (at your option) any later version.
  66559. +
  66560. + The GNU C Library is distributed in the hope that it will be useful,
  66561. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66562. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66563. + Lesser General Public License for more details.
  66564. +
  66565. + You should have received a copy of the GNU Lesser General Public
  66566. + License along with the GNU C Library; if not, write to the Free
  66567. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66568. + 02111-1307 USA. */
  66569. +
  66570. +#ifndef _FCNTL_H
  66571. +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  66572. +#endif
  66573. +
  66574. +#include <sys/types.h>
  66575. +#ifdef __USE_GNU
  66576. +# include <bits/uio.h>
  66577. +#endif
  66578. +
  66579. +
  66580. +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  66581. + located on an ext2 file system */
  66582. +#define O_ACCMODE 0003
  66583. +#define O_RDONLY 00
  66584. +#define O_WRONLY 01
  66585. +#define O_RDWR 02
  66586. +#define O_CREAT 0100 /* not fcntl */
  66587. +#define O_EXCL 0200 /* not fcntl */
  66588. +#define O_NOCTTY 0400 /* not fcntl */
  66589. +#define O_TRUNC 01000 /* not fcntl */
  66590. +#define O_APPEND 02000
  66591. +#define O_NONBLOCK 04000
  66592. +#define O_NDELAY O_NONBLOCK
  66593. +#define O_SYNC 010000
  66594. +#define O_FSYNC O_SYNC
  66595. +#define O_ASYNC 020000
  66596. +
  66597. +#ifdef __USE_GNU
  66598. +# define O_DIRECT 040000 /* Direct disk access. */
  66599. +# define O_DIRECTORY 0200000 /* Must be a directory. */
  66600. +# define O_NOFOLLOW 0400000 /* Do not follow links. */
  66601. +# define O_NOATIME 01000000 /* Do not set atime. */
  66602. +# define O_CLOEXEC 02000000 /* Set close_on_exec. */
  66603. +#endif
  66604. +
  66605. +/* For now Linux has synchronisity options for data and read operations.
  66606. + We define the symbols here but let them do the same as O_SYNC since
  66607. + this is a superset. */
  66608. +#if defined __USE_POSIX199309 || defined __USE_UNIX98
  66609. +# define O_DSYNC O_SYNC /* Synchronize data. */
  66610. +# define O_RSYNC O_SYNC /* Synchronize read operations. */
  66611. +#endif
  66612. +
  66613. +#ifdef __USE_LARGEFILE64
  66614. +# define O_LARGEFILE 0100000
  66615. +#endif
  66616. +
  66617. +/* Values for the second argument to `fcntl'. */
  66618. +#define F_DUPFD 0 /* Duplicate file descriptor. */
  66619. +#define F_GETFD 1 /* Get file descriptor flags. */
  66620. +#define F_SETFD 2 /* Set file descriptor flags. */
  66621. +#define F_GETFL 3 /* Get file status flags. */
  66622. +#define F_SETFL 4 /* Set file status flags. */
  66623. +#ifndef __USE_FILE_OFFSET64
  66624. +# define F_GETLK 5 /* Get record locking info. */
  66625. +# define F_SETLK 6 /* Set record locking info (non-blocking). */
  66626. +# define F_SETLKW 7 /* Set record locking info (blocking). */
  66627. +#else
  66628. +# define F_GETLK F_GETLK64 /* Get record locking info. */
  66629. +# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
  66630. +# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
  66631. +#endif
  66632. +#define F_GETLK64 12 /* Get record locking info. */
  66633. +#define F_SETLK64 13 /* Set record locking info (non-blocking). */
  66634. +#define F_SETLKW64 14 /* Set record locking info (blocking). */
  66635. +
  66636. +#if defined __USE_BSD || defined __USE_UNIX98
  66637. +# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
  66638. +# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
  66639. +#endif
  66640. +
  66641. +#ifdef __USE_GNU
  66642. +# define F_SETSIG 10 /* Set number of signal to be sent. */
  66643. +# define F_GETSIG 11 /* Get number of signal to be sent. */
  66644. +#endif
  66645. +
  66646. +#ifdef __USE_GNU
  66647. +# define F_SETLEASE 1024 /* Set a lease. */
  66648. +# define F_GETLEASE 1025 /* Enquire what lease is active. */
  66649. +# define F_NOTIFY 1026 /* Request notfications on a directory. */
  66650. +# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
  66651. + close-on-exit set on new fd. */
  66652. +#endif
  66653. +
  66654. +/* For F_[GET|SET]FD. */
  66655. +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
  66656. +
  66657. +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
  66658. +#define F_RDLCK 0 /* Read lock. */
  66659. +#define F_WRLCK 1 /* Write lock. */
  66660. +#define F_UNLCK 2 /* Remove lock. */
  66661. +
  66662. +/* For old implementation of bsd flock(). */
  66663. +#define F_EXLCK 4 /* or 3 */
  66664. +#define F_SHLCK 8 /* or 4 */
  66665. +
  66666. +#ifdef __USE_BSD
  66667. +/* Operations for bsd flock(), also used by the kernel implementation. */
  66668. +# define LOCK_SH 1 /* shared lock */
  66669. +# define LOCK_EX 2 /* exclusive lock */
  66670. +# define LOCK_NB 4 /* or'd with one of the above to prevent
  66671. + blocking */
  66672. +# define LOCK_UN 8 /* remove lock */
  66673. +#endif
  66674. +
  66675. +#ifdef __USE_GNU
  66676. +# define LOCK_MAND 32 /* This is a mandatory flock: */
  66677. +# define LOCK_READ 64 /* ... which allows concurrent read operations. */
  66678. +# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
  66679. +# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
  66680. +#endif
  66681. +
  66682. +#ifdef __USE_GNU
  66683. +/* Types of directory notifications that may be requested with F_NOTIFY. */
  66684. +# define DN_ACCESS 0x00000001 /* File accessed. */
  66685. +# define DN_MODIFY 0x00000002 /* File modified. */
  66686. +# define DN_CREATE 0x00000004 /* File created. */
  66687. +# define DN_DELETE 0x00000008 /* File removed. */
  66688. +# define DN_RENAME 0x00000010 /* File renamed. */
  66689. +# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
  66690. +# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
  66691. +#endif
  66692. +
  66693. +struct flock
  66694. + {
  66695. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  66696. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  66697. +#ifndef __USE_FILE_OFFSET64
  66698. + __off_t l_start; /* Offset where the lock begins. */
  66699. + __off_t l_len; /* Size of the locked area; zero means until EOF. */
  66700. +#else
  66701. + __off64_t l_start; /* Offset where the lock begins. */
  66702. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  66703. +#endif
  66704. + __pid_t l_pid; /* Process holding the lock. */
  66705. + };
  66706. +
  66707. +#ifdef __USE_LARGEFILE64
  66708. +struct flock64
  66709. + {
  66710. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  66711. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  66712. + __off64_t l_start; /* Offset where the lock begins. */
  66713. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  66714. + __pid_t l_pid; /* Process holding the lock. */
  66715. + };
  66716. +#endif
  66717. +
  66718. +/* Define some more compatibility macros to be backward compatible with
  66719. + BSD systems which did not managed to hide these kernel macros. */
  66720. +#ifdef __USE_BSD
  66721. +# define FAPPEND O_APPEND
  66722. +# define FFSYNC O_FSYNC
  66723. +# define FASYNC O_ASYNC
  66724. +# define FNONBLOCK O_NONBLOCK
  66725. +# define FNDELAY O_NDELAY
  66726. +#endif /* Use BSD. */
  66727. +
  66728. +/* Advise to `posix_fadvise'. */
  66729. +#ifdef __USE_XOPEN2K
  66730. +# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
  66731. +# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
  66732. +# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
  66733. +# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
  66734. +# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
  66735. +# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
  66736. +#endif
  66737. +
  66738. +
  66739. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  66740. +/* Flags for SYNC_FILE_RANGE. */
  66741. +# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages
  66742. + in the range before performing the
  66743. + write. */
  66744. +# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those
  66745. + dirty pages in the range which are
  66746. + not presently under writeback. */
  66747. +# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in
  66748. + the range after performing the
  66749. + write. */
  66750. +
  66751. +/* Flags for SPLICE and VMSPLICE. */
  66752. +# define SPLICE_F_MOVE 1 /* Move pages instead of copying. */
  66753. +# define SPLICE_F_NONBLOCK 2 /* Don't block on the pipe splicing
  66754. + (but we may still block on the fd
  66755. + we splice from/to). */
  66756. +# define SPLICE_F_MORE 4 /* Expect more data. */
  66757. +# define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */
  66758. +#endif
  66759. +
  66760. +__BEGIN_DECLS
  66761. +
  66762. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  66763. +
  66764. +/* Provide kernel hint to read ahead. */
  66765. +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
  66766. + __THROW;
  66767. +
  66768. +/* Selective file content synch'ing. */
  66769. +extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
  66770. + unsigned int __flags);
  66771. +
  66772. +/* Splice address range into a pipe. */
  66773. +extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
  66774. + size_t __count, unsigned int __flags);
  66775. +
  66776. +/* Splice two files together. */
  66777. +extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
  66778. + __off64_t *__offout, size_t __len,
  66779. + unsigned int __flags);
  66780. +
  66781. +/* In-kernel implementation of tee for pipe buffers. */
  66782. +extern ssize_t tee (int __fdin, int __fdout, size_t __len,
  66783. + unsigned int __flags);
  66784. +
  66785. +#endif
  66786. +__END_DECLS
  66787. +
  66788. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fenv.h uClibc/libc/sysdeps/linux/metag/bits/fenv.h
  66789. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100
  66790. +++ uClibc/libc/sysdeps/linux/metag/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  66791. @@ -0,0 +1,77 @@
  66792. +/* Copyright (C) 2013 Imagination Technologies Ltd.
  66793. + This file is part of the GNU C Library.
  66794. +
  66795. + The GNU C Library is free software; you can redistribute it and/or
  66796. + modify it under the terms of the GNU Lesser General Public
  66797. + License as published by the Free Software Foundation; either
  66798. + version 2.1 of the License, or (at your option) any later version.
  66799. +
  66800. + The GNU C Library is distributed in the hope that it will be useful,
  66801. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66802. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66803. + Lesser General Public License for more details.
  66804. +
  66805. + You should have received a copy of the GNU Lesser General Public
  66806. + License along with the GNU C Library; if not, write to the Free
  66807. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66808. + 02111-1307 USA. */
  66809. +
  66810. +#ifndef _FENV_H
  66811. +# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  66812. +#endif
  66813. +
  66814. +
  66815. +/* Define bits representing the exception. We use the bit positions
  66816. + of the appropriate bits in TXDEFR. */
  66817. +enum
  66818. + {
  66819. + FE_INEXACT = 0x1,
  66820. +#define FE_INEXACT FE_INEXACT
  66821. + FE_UNDERFLOW = 0x2,
  66822. +#define FE_UNDERFLOW FE_UNDERFLOW
  66823. + FE_OVERFLOW = 0x4,
  66824. +#define FE_OVERFLOW FE_OVERFLOW
  66825. + FE_DIVBYZERO = 0x8,
  66826. +#define FE_DIVBYZERO FE_DIVBYZERO
  66827. + FE_INVALID = 0x10,
  66828. +#define FE_INVALID FE_INVALID
  66829. + };
  66830. +
  66831. +#define FE_ALL_EXCEPT \
  66832. + (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
  66833. +
  66834. +/* The Meta FPU supports all of the four defined rounding modes. We
  66835. + use the values of the rounding mode bits in TXMODE as the values
  66836. + for the appropriate macros. */
  66837. +enum
  66838. + {
  66839. + FE_TONEAREST = 0x0,
  66840. +#define FE_TONEAREST FE_TONEAREST
  66841. + FE_TOWARDZERO = 0x1,
  66842. +#define FE_TOWARDZERO FE_TOWARDZERO
  66843. + FE_UPWARD = 0x2,
  66844. +#define FE_UPWARD FE_UPWARD
  66845. + FE_DOWNWARD = 0x3
  66846. +#define FE_DOWNWARD FE_DOWNWARD
  66847. + };
  66848. +
  66849. +
  66850. +/* Type representing exception flags. */
  66851. +typedef unsigned int fexcept_t;
  66852. +
  66853. +
  66854. +/* Type representing floating-point environment. */
  66855. +typedef struct
  66856. + {
  66857. + unsigned int txdefr;
  66858. + unsigned int txmode;
  66859. + }
  66860. +fenv_t;
  66861. +
  66862. +/* If the default argument is used we use this value. */
  66863. +#define FE_DFL_ENV ((__const fenv_t *) -1)
  66864. +
  66865. +#ifdef __USE_GNU
  66866. +/* Floating-point environment where none of the exception is masked. */
  66867. +# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  66868. +#endif
  66869. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/ipc.h uClibc/libc/sysdeps/linux/metag/bits/ipc.h
  66870. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100
  66871. +++ uClibc/libc/sysdeps/linux/metag/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  66872. @@ -0,0 +1,55 @@
  66873. +/* Copyright (C) 1995-1999, 2000, 2005, 2007 Free Software Foundation, Inc.
  66874. + This file is part of the GNU C Library.
  66875. +
  66876. + The GNU C Library is free software; you can redistribute it and/or
  66877. + modify it under the terms of the GNU Lesser General Public
  66878. + License as published by the Free Software Foundation; either
  66879. + version 2.1 of the License, or (at your option) any later version.
  66880. +
  66881. + The GNU C Library is distributed in the hope that it will be useful,
  66882. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66883. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66884. + Lesser General Public License for more details.
  66885. +
  66886. + You should have received a copy of the GNU Lesser General Public
  66887. + License along with the GNU C Library; if not, write to the Free
  66888. + Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  66889. + Boston, MA 02110-1301, USA. */
  66890. +
  66891. +#ifndef _SYS_IPC_H
  66892. +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  66893. +#endif
  66894. +
  66895. +#include <bits/types.h>
  66896. +
  66897. +/* Mode bits for `msgget', `semget', and `shmget'. */
  66898. +#define IPC_CREAT 01000 /* Create key if key does not exist. */
  66899. +#define IPC_EXCL 02000 /* Fail if key exists. */
  66900. +#define IPC_NOWAIT 04000 /* Return error on wait. */
  66901. +
  66902. +/* Control commands for `msgctl', `semctl', and `shmctl'. */
  66903. +#define IPC_RMID 0 /* Remove identifier. */
  66904. +#define IPC_SET 1 /* Set `ipc_perm' options. */
  66905. +#define IPC_STAT 2 /* Get `ipc_perm' options. */
  66906. +#ifdef __USE_GNU
  66907. +# define IPC_INFO 3 /* See ipcs. */
  66908. +#endif
  66909. +
  66910. +/* Special key values. */
  66911. +#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
  66912. +
  66913. +
  66914. +/* Data structure used to pass permission information to IPC operations. */
  66915. +struct ipc_perm
  66916. + {
  66917. + __key_t __key; /* Key. */
  66918. + __uid_t uid; /* Owner's user ID. */
  66919. + __gid_t gid; /* Owner's group ID. */
  66920. + __uid_t cuid; /* Creator's user ID. */
  66921. + __gid_t cgid; /* Creator's group ID. */
  66922. + unsigned int mode; /* Read/write permission. */
  66923. + unsigned short __seq; /* Sequence number. */
  66924. + unsigned short __pad1;
  66925. + unsigned long __unused1;
  66926. + unsigned long __unused2;
  66927. + };
  66928. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/kernel_types.h uClibc/libc/sysdeps/linux/metag/bits/kernel_types.h
  66929. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/kernel_types.h 1970-01-01 01:00:00.000000000 +0100
  66930. +++ uClibc/libc/sysdeps/linux/metag/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  66931. @@ -0,0 +1,47 @@
  66932. +/* Note that we use the exact same include guard #define names
  66933. + * as asm/posix_types.h. This will avoid gratuitous conflicts
  66934. + * with the posix_types.h kernel header, and will ensure that
  66935. + * our private content, and not the kernel header, will win.
  66936. + * -Erik
  66937. + *
  66938. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66939. + *
  66940. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66941. + */
  66942. +
  66943. +#ifndef __ASM_GENERIC_POSIX_TYPES_H
  66944. +#define __ASM_GENERIC_POSIX_TYPES_H
  66945. +
  66946. +typedef unsigned int __kernel_dev_t;
  66947. +typedef unsigned int __kernel_ino_t;
  66948. +typedef unsigned int __kernel_mode_t;
  66949. +typedef unsigned long __kernel_nlink_t;
  66950. +typedef long __kernel_off_t;
  66951. +typedef int __kernel_pid_t;
  66952. +typedef unsigned int __kernel_uid_t;
  66953. +typedef unsigned int __kernel_gid_t;
  66954. +typedef unsigned int __kernel_size_t;
  66955. +typedef int __kernel_ssize_t;
  66956. +typedef long __kernel_ptrdiff_t;
  66957. +typedef long __kernel_time_t;
  66958. +typedef long __kernel_suseconds_t;
  66959. +typedef long __kernel_clock_t;
  66960. +typedef int __kernel_daddr_t;
  66961. +typedef char * __kernel_caddr_t;
  66962. +typedef int __kernel_ipc_pid_t;
  66963. +typedef unsigned short __kernel_uid16_t;
  66964. +typedef unsigned short __kernel_gid16_t;
  66965. +typedef unsigned int __kernel_uid32_t;
  66966. +typedef unsigned int __kernel_gid32_t;
  66967. +typedef unsigned int __kernel_old_uid_t;
  66968. +typedef unsigned int __kernel_old_gid_t;
  66969. +typedef __kernel_dev_t __kernel_old_dev_t;
  66970. +typedef long long __kernel_loff_t;
  66971. +typedef long __kernel_long_t;
  66972. +typedef unsigned long __kernel_ulong_t;
  66973. +
  66974. +typedef struct {
  66975. + int val[2];
  66976. +} __kernel_fsid_t;
  66977. +
  66978. +#endif /* __ASM_GENERIC_POSIX_TYPES_H */
  66979. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/profil-counter.h uClibc/libc/sysdeps/linux/metag/bits/profil-counter.h
  66980. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/profil-counter.h 1970-01-01 01:00:00.000000000 +0100
  66981. +++ uClibc/libc/sysdeps/linux/metag/bits/profil-counter.h 2014-02-03 12:32:56.000000000 +0100
  66982. @@ -0,0 +1,17 @@
  66983. +/*
  66984. + * Low-level statistical profiling support function. Linux/Meta version.
  66985. + *
  66986. + * Copyright (C) 2013, Imagination Technologies Ltd.
  66987. + *
  66988. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66989. + *
  66990. + * Based on the SH version from the GNU C Library.
  66991. + */
  66992. +
  66993. +#include <signal.h>
  66994. +
  66995. +static void
  66996. +profil_counter (int signo, struct sigcontext sc)
  66997. +{
  66998. + profil_count (sc.cbuf.ctx.CurrPC);
  66999. +}
  67000. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/setjmp.h uClibc/libc/sysdeps/linux/metag/bits/setjmp.h
  67001. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100
  67002. +++ uClibc/libc/sysdeps/linux/metag/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  67003. @@ -0,0 +1,44 @@
  67004. +/*
  67005. + * Copyright (C) 2013, Imagination Technologies Ltd.
  67006. + *
  67007. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67008. + */
  67009. +
  67010. +/* Define the machine-dependent type `jmp_buf' */
  67011. +#ifndef _BITS_SETJMP_H
  67012. +#define _BITS_SETJMP_H 1
  67013. +
  67014. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  67015. +# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  67016. +#endif
  67017. +
  67018. +/*
  67019. + jmp_buf[0] - A0StP
  67020. + jmp_buf[1] - A1GbP
  67021. + jmp_buf[2] - A0FrP
  67022. + jmp_buf[3] - A1LbP
  67023. + jmp_buf[4] - D0FrT
  67024. + jmp_buf[5] - D1RtP
  67025. + jmp_buf[6] - D0.5
  67026. + jmp_buf[7] - D1.5
  67027. + jmp_buf[8] - D0.6
  67028. + jmp_buf[9] - D1.6
  67029. + jmp_buf[10] - D0.7
  67030. + jmp_buf[11] - D1.7
  67031. + */
  67032. +
  67033. +#define _JBLEN 24
  67034. +#if defined (__USE_MISC) || defined (_ASM)
  67035. +#define JB_SP 0
  67036. +#endif
  67037. +
  67038. +#ifndef _ASM
  67039. +typedef int __jmp_buf[_JBLEN] __attribute__((aligned (8)));
  67040. +#endif
  67041. +
  67042. +/* Test if longjmp to JMPBUF would unwind the frame
  67043. + containing a local variable at ADDRESS. */
  67044. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  67045. + ((void *) (address) > (void *) (jmpbuf)[JB_SP])
  67046. +
  67047. +#endif /* bits/setjmp.h */
  67048. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/metag/bits/sigcontextinfo.h
  67049. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100
  67050. +++ uClibc/libc/sysdeps/linux/metag/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  67051. @@ -0,0 +1,14 @@
  67052. +/*
  67053. + * Copyright (C) 2013, Imagination Technologies Ltd.
  67054. + *
  67055. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67056. + *
  67057. + */
  67058. +
  67059. +#define SIGCONTEXT struct sigcontext
  67060. +#define SIGCONTEXT_EXTRA_ARGS
  67061. +#define GET_PC(ctx) ((void *) ctx.cbuf.ctx.CurrPC)
  67062. +#define GET_FRAME(ctx) ((void *) ctx.cbuf.ctx.AX[1].U0)
  67063. +#define GET_STACK(ctx) ((void *) ctx.cbuf.ctx.AX[0].U0)
  67064. +#define CALL_SIGHANDLER(handler, signo, ctx) \
  67065. + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
  67066. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/stackinfo.h uClibc/libc/sysdeps/linux/metag/bits/stackinfo.h
  67067. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/stackinfo.h 1970-01-01 01:00:00.000000000 +0100
  67068. +++ uClibc/libc/sysdeps/linux/metag/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  67069. @@ -0,0 +1,28 @@
  67070. +/* Copyright (C) 2001 Free Software Foundation, Inc.
  67071. + This file is part of the GNU C Library.
  67072. +
  67073. + The GNU C Library is free software; you can redistribute it and/or
  67074. + modify it under the terms of the GNU Lesser General Public
  67075. + License as published by the Free Software Foundation; either
  67076. + version 2.1 of the License, or (at your option) any later version.
  67077. +
  67078. + The GNU C Library is distributed in the hope that it will be useful,
  67079. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67080. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67081. + Lesser General Public License for more details.
  67082. +
  67083. + You should have received a copy of the GNU Lesser General Public
  67084. + License along with the GNU C Library; if not, write to the Free
  67085. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67086. + 02111-1307 USA. */
  67087. +
  67088. +/* This file contains a bit of information about the stack allocation
  67089. + of the processor. */
  67090. +
  67091. +#ifndef _STACKINFO_H
  67092. +#define _STACKINFO_H 1
  67093. +
  67094. +/* On Meta the stack grows up. */
  67095. +#define _STACK_GROWS_UP 1
  67096. +
  67097. +#endif /* stackinfo.h */
  67098. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/syscalls.h uClibc/libc/sysdeps/linux/metag/bits/syscalls.h
  67099. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  67100. +++ uClibc/libc/sysdeps/linux/metag/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  67101. @@ -0,0 +1,120 @@
  67102. +/*
  67103. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67104. + *
  67105. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67106. + *
  67107. + */
  67108. +
  67109. +#ifndef _BITS_SYSCALLS_H
  67110. +#define _BITS_SYSCALLS_H
  67111. +#ifndef _SYSCALL_H
  67112. +# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
  67113. +#endif
  67114. +
  67115. +/*
  67116. + Meta version adapted from the ARM version.
  67117. +*/
  67118. +
  67119. +#define SYS_ify(syscall_name) (__NR_##syscall_name)
  67120. +
  67121. +#ifdef __ASSEMBLER__
  67122. +
  67123. +/* Call a given syscall, with arguments loaded. */
  67124. +#undef DO_CALL
  67125. +#define DO_CALL(syscall_name, args) \
  67126. + MOV D1Re0, #SYS_ify (syscall_name); \
  67127. + SWITCH #0x440001
  67128. +
  67129. +#else
  67130. +
  67131. +#include <errno.h>
  67132. +
  67133. +#undef INLINE_SYSCALL_NCS
  67134. +#define INLINE_SYSCALL_NCS(name, nr, args...) \
  67135. +(__extension__ \
  67136. + ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL_NCS (name, , nr, args); \
  67137. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  67138. + { \
  67139. + __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  67140. + _inline_sys_result = (unsigned int) -1; \
  67141. + } \
  67142. + (int) _inline_sys_result; }) \
  67143. +)
  67144. +
  67145. +#undef INTERNAL_SYSCALL_DECL
  67146. +#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
  67147. +
  67148. +#undef INTERNAL_SYSCALL_NCS
  67149. +#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
  67150. +(__extension__ \
  67151. + ({unsigned int __sys_result; \
  67152. + { \
  67153. + PREP_ARGS_##nr (args); \
  67154. + register int _result __asm__ ("D0Re0"), _nr __asm__ ("D1Re0"); \
  67155. + LOAD_ARGS_##nr; \
  67156. + _nr = (name); \
  67157. + __asm__ volatile ("SWITCH #0x440001 ! syscall " #name \
  67158. + : "=r" (_result) \
  67159. + : "d" (_nr) ASM_ARGS_##nr \
  67160. + : "memory"); \
  67161. + __sys_result = _result; \
  67162. + } \
  67163. + (int) __sys_result; }) \
  67164. +)
  67165. +
  67166. +#undef INTERNAL_SYSCALL_ERROR_P
  67167. +#define INTERNAL_SYSCALL_ERROR_P(val, err) \
  67168. + ((unsigned int) (val) >= 0xfffff001u)
  67169. +
  67170. +#undef INTERNAL_SYSCALL_ERRNO
  67171. +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
  67172. +
  67173. +#define PREP_ARGS_0()
  67174. +#define PREP_ARGS_1(a1) \
  67175. + int _t1 = (int) (a1); \
  67176. + PREP_ARGS_0 ()
  67177. +#define PREP_ARGS_2(a1, a2) \
  67178. + int _t2 = (int) (a2); \
  67179. + PREP_ARGS_1 (a1)
  67180. +#define PREP_ARGS_3(a1, a2, a3) \
  67181. + int _t3 = (int) (a3); \
  67182. + PREP_ARGS_2 (a1, a2)
  67183. +#define PREP_ARGS_4(a1, a2, a3, a4) \
  67184. + int _t4 = (int) (a4); \
  67185. + PREP_ARGS_3 (a1, a2, a3)
  67186. +#define PREP_ARGS_5(a1, a2, a3, a4, a5) \
  67187. + int _t5 = (int) (a5); \
  67188. + PREP_ARGS_4 (a1, a2, a3, a4)
  67189. +#define PREP_ARGS_6(a1, a2, a3, a4, a5, a6) \
  67190. + int _t6 = (int) (a6); \
  67191. + PREP_ARGS_5 (a1, a2, a3, a4, a5)
  67192. +
  67193. +#define LOAD_ARGS_0
  67194. +#define ASM_ARGS_0
  67195. +#define LOAD_ARGS_1 \
  67196. + register int _a1 __asm__ ("D1Ar1") = (int) (_t1); \
  67197. + LOAD_ARGS_0
  67198. +#define ASM_ARGS_1 ASM_ARGS_0, "d" (_a1)
  67199. +#define LOAD_ARGS_2 \
  67200. + register int _a2 __asm__ ("D0Ar2") = (int) (_t2); \
  67201. + LOAD_ARGS_1
  67202. +#define ASM_ARGS_2 ASM_ARGS_1, "d" (_a2)
  67203. +#define LOAD_ARGS_3 \
  67204. + register int _a3 __asm__ ("D1Ar3") = (int) (_t3); \
  67205. + LOAD_ARGS_2
  67206. +#define ASM_ARGS_3 ASM_ARGS_2, "d" (_a3)
  67207. +#define LOAD_ARGS_4 \
  67208. + register int _a4 __asm__ ("D0Ar4") = (int) (_t4); \
  67209. + LOAD_ARGS_3
  67210. +#define ASM_ARGS_4 ASM_ARGS_3, "d" (_a4)
  67211. +#define LOAD_ARGS_5 \
  67212. + register int _a5 __asm__ ("D1Ar5") = (int) (_t5); \
  67213. + LOAD_ARGS_4
  67214. +#define ASM_ARGS_5 ASM_ARGS_4, "d" (_a5)
  67215. +#define LOAD_ARGS_6 \
  67216. + register int _a6 __asm__ ("D0Ar6") = (int) (_t6); \
  67217. + LOAD_ARGS_5
  67218. +#define ASM_ARGS_6 ASM_ARGS_5, "d" (_a6)
  67219. +
  67220. +#endif /* __ASSEMBLER__ */
  67221. +#endif /* _BITS_SYSCALLS_H */
  67222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h
  67223. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h 1970-01-01 01:00:00.000000000 +0100
  67224. +++ uClibc/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  67225. @@ -0,0 +1,46 @@
  67226. +/*
  67227. + * Track misc arch-specific features that aren't config options
  67228. + *
  67229. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  67230. + *
  67231. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67232. + */
  67233. +
  67234. +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  67235. +#define _BITS_UCLIBC_ARCH_FEATURES_H
  67236. +
  67237. +/* instruction used when calling abort() to kill yourself */
  67238. +/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
  67239. +#undef __UCLIBC_ABORT_INSTRUCTION__
  67240. +
  67241. +/* can your target use syscall6() for mmap ? */
  67242. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  67243. +
  67244. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  67245. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  67246. +
  67247. +/* does your target have a broken create_module() ? */
  67248. +#undef __UCLIBC_BROKEN_CREATE_MODULE__
  67249. +
  67250. +/* does your target have to worry about older [gs]etrlimit() ? */
  67251. +#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
  67252. +
  67253. +/* does your target have an asm .set ? */
  67254. +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
  67255. +
  67256. +/* define if target doesn't like .global */
  67257. +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
  67258. +
  67259. +/* define if target supports .weak */
  67260. +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
  67261. +
  67262. +/* define if target supports .weakext */
  67263. +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
  67264. +
  67265. +/* needed probably only for ppc64 */
  67266. +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
  67267. +
  67268. +/* define if target supports IEEE signed zero floats */
  67269. +#define __UCLIBC_HAVE_SIGNED_ZERO__
  67270. +
  67271. +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  67272. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/wordsize.h uClibc/libc/sysdeps/linux/metag/bits/wordsize.h
  67273. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/wordsize.h 1970-01-01 01:00:00.000000000 +0100
  67274. +++ uClibc/libc/sysdeps/linux/metag/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  67275. @@ -0,0 +1,19 @@
  67276. +/* Copyright (C) 1999 Free Software Foundation, Inc.
  67277. + This file is part of the GNU C Library.
  67278. +
  67279. + The GNU C Library is free software; you can redistribute it and/or
  67280. + modify it under the terms of the GNU Lesser General Public
  67281. + License as published by the Free Software Foundation; either
  67282. + version 2.1 of the License, or (at your option) any later version.
  67283. +
  67284. + The GNU C Library is distributed in the hope that it will be useful,
  67285. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67286. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67287. + Lesser General Public License for more details.
  67288. +
  67289. + You should have received a copy of the GNU Lesser General Public
  67290. + License along with the GNU C Library; if not, write to the Free
  67291. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67292. + 02111-1307 USA. */
  67293. +
  67294. +#define __WORDSIZE 32
  67295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/brk.c uClibc/libc/sysdeps/linux/metag/brk.c
  67296. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/brk.c 1970-01-01 01:00:00.000000000 +0100
  67297. +++ uClibc/libc/sysdeps/linux/metag/brk.c 2014-02-03 12:32:56.000000000 +0100
  67298. @@ -0,0 +1,38 @@
  67299. +/*
  67300. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67301. + *
  67302. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67303. + */
  67304. +
  67305. +#include <errno.h>
  67306. +#include <unistd.h>
  67307. +#include <sys/syscall.h>
  67308. +
  67309. +libc_hidden_proto(brk)
  67310. +
  67311. +/* This must be initialized data because commons can't have aliases. */
  67312. +void * __curbrk attribute_hidden = 0;
  67313. +
  67314. +int brk (void *addr)
  67315. +{
  67316. + void *newbrk;
  67317. +
  67318. + __asm__ __volatile__ ("MOV D1Re0,%2\n\t"
  67319. + "MOV D1Ar1,%1\n\t"
  67320. + "SWITCH #0x440001\n\t"
  67321. + "MOV %0,D0Re0"
  67322. + : "=r" (newbrk)
  67323. + : "r" (addr), "K" (__NR_brk)
  67324. + : "D0Re0", "D1Re0", "D1Ar1");
  67325. +
  67326. + __curbrk = newbrk;
  67327. +
  67328. + if (newbrk < addr)
  67329. + {
  67330. + __set_errno (ENOMEM);
  67331. + return -1;
  67332. + }
  67333. +
  67334. + return 0;
  67335. +}
  67336. +libc_hidden_def(brk)
  67337. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/clone.S uClibc/libc/sysdeps/linux/metag/clone.S
  67338. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/clone.S 1970-01-01 01:00:00.000000000 +0100
  67339. +++ uClibc/libc/sysdeps/linux/metag/clone.S 2014-02-03 12:32:56.000000000 +0100
  67340. @@ -0,0 +1,101 @@
  67341. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67342. +
  67343. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67344. +
  67345. +! clone() is even more special than fork() as it mucks with stacks
  67346. +! and invokes a function in the right context after its all over.
  67347. +
  67348. +#include <asm/errno.h>
  67349. +#include <asm/unistd.h>
  67350. +
  67351. +#define CLONE_VM 0x00000100
  67352. +#define CLONE_THREAD 0x00010000
  67353. +
  67354. +#ifdef __PIC__
  67355. +#define __CLONE_METAG_LOAD_TP ___metag_load_tp@PLT
  67356. +#else
  67357. +#define __CLONE_METAG_LOAD_TP ___metag_load_tp
  67358. +#endif
  67359. +
  67360. +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
  67361. + pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
  67362. +
  67363. + .text
  67364. + .global __clone
  67365. + .type __clone,function
  67366. +__clone:
  67367. + ! sanity check args
  67368. + MOV D0Re0, #-EINVAL
  67369. + CMP D1Ar1, #0
  67370. + BEQ ___error
  67371. + CMP D0Ar2, #0
  67372. + BEQ ___error
  67373. +
  67374. + ! save function pointer
  67375. + MOV D0FrT, D1Ar1
  67376. +
  67377. + ! do the system call
  67378. + MOV D1Ar1, D1Ar3
  67379. + MOV D1Ar3, D1Ar5
  67380. + MOV D1Ar5, D0Ar6
  67381. + MOV D0Ar6, D0Ar4
  67382. + GETD D0Ar4, [A0StP+#-4]
  67383. +
  67384. + ! new sp is already in D0Ar2
  67385. + MOV D1Re0, #__NR_clone
  67386. + SWITCH #0x440001
  67387. + CMP D0Re0,#0
  67388. + ! Error on -1
  67389. + BLT ___error
  67390. + ! If non-zero we are the parent
  67391. + MOVNE PC, D1RtP
  67392. + ! BRKPNT
  67393. +
  67394. + ! We are the child
  67395. +#ifdef RESET_PID
  67396. + SETL [A0StP++], D0FrT, D1RtP
  67397. + MOVT D0FrT, #HI(CLONE_THREAD)
  67398. + ADD D0FrT, D0FrT, #LO(CLONE_THREAD)
  67399. + ANDS D0FrT, D0FrT, D1Ar1
  67400. + BNZ 3f
  67401. + MOVT D0FrT, #HI(CLONE_VM)
  67402. + ADD D0FrT, D0FrT, #LO(CLONE_VM)
  67403. + ANDS D0FrT, D0FrT, D1Ar1
  67404. + BZ 1f
  67405. + MOV D1Ar1, #-1
  67406. + BA 2f
  67407. +1: MOV D1Re0, #__NR_getpid
  67408. + SWITCH #0x440001
  67409. + MOV D1Ar1, D0Re0
  67410. +2: CALLR D1RtP, __CLONE_METAG_LOAD_TP
  67411. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE
  67412. + SETD [D0Re0 + #PID], D1Ar1
  67413. + SETD [D0Re0 + #TID], D1Ar1
  67414. +3: GETL D0FrT, D1RtP, [--A0StP]
  67415. +#endif
  67416. + ! Rearrange the function arg and call address from registers
  67417. + MOV D0Ar2, D0FrT
  67418. + MOV D1Ar1, D0Ar6
  67419. + MOV D1RtP, PC
  67420. + ADD D1RtP, D1RtP, #8
  67421. + MOV PC, D0Ar2
  67422. +
  67423. + ! and we are done, passing the return value D0Re0 through D1Ar1
  67424. + MOV D1Ar1, D0Re0
  67425. +#ifdef __PIC__
  67426. + B _exit@PLT
  67427. +#else
  67428. + B _exit
  67429. +#endif
  67430. +
  67431. +___error:
  67432. + MOV D1Ar1, D0Re0
  67433. +#ifdef __PIC__
  67434. + B ___syscall_error@PLT
  67435. +#else
  67436. + B ___syscall_error
  67437. +#endif
  67438. + .size __clone, .-__clone
  67439. +
  67440. +.weak _clone
  67441. +_clone = __clone
  67442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crt1.S uClibc/libc/sysdeps/linux/metag/crt1.S
  67443. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crt1.S 1970-01-01 01:00:00.000000000 +0100
  67444. +++ uClibc/libc/sysdeps/linux/metag/crt1.S 2014-02-03 12:32:56.000000000 +0100
  67445. @@ -0,0 +1,75 @@
  67446. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67447. +
  67448. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67449. +
  67450. +
  67451. +#include <asm/unistd.h>
  67452. +
  67453. + .text
  67454. + .global __start
  67455. + .type __start,function
  67456. +__start:
  67457. + MOV D0FrT,A0StP
  67458. + MOV A0FrP,A0StP
  67459. +
  67460. + MOV A0.2,#0
  67461. + MOV A0.3,#0
  67462. +
  67463. + MOV A1.1,#0
  67464. + MOV A1.2,#0
  67465. + MOV A1.3,#0
  67466. +
  67467. + MOV D0.5,#0
  67468. + MOV D0.6,#0
  67469. + MOV D0.7,#0
  67470. +
  67471. + MOV D1.5,#0
  67472. + MOV D1.6,#0
  67473. + MOV D1.7,#0
  67474. +
  67475. + MOV D1Ar3,D0Ar2 ! argv
  67476. + MOV D0Ar2,D1Ar1 ! argc
  67477. + MOV D0Ar6,D0Ar4 ! rtld_fini
  67478. +
  67479. +#ifdef __PIC__
  67480. + ADDT A1LbP,CPC1,#HI(__GLOBAL_OFFSET_TABLE__)
  67481. + ADD A1LbP,A1LbP,#LO(__GLOBAL_OFFSET_TABLE__+4)
  67482. +
  67483. + MOV D1Ar1,A1LbP
  67484. + ADDT D1Ar1,D1Ar1,#HI(_main@GOTOFF)
  67485. + ADD D1Ar1,D1Ar1,#LO(_main@GOTOFF)
  67486. +
  67487. + MOV D0Ar4,A1LbP
  67488. + ADDT D0Ar4,D0Ar4,#HI(__init@GOTOFF)
  67489. + ADD D0Ar4,D0Ar4,#LO(__init@GOTOFF)
  67490. +
  67491. + MOV D1Ar5,A1LbP
  67492. + ADDT D1Ar5,D1Ar5,#HI(__fini@GOTOFF)
  67493. + ADD D1Ar5,D1Ar5,#LO(__fini@GOTOFF)
  67494. +#else
  67495. + MOVT D1Ar1,#HI(_main)
  67496. + ADD D1Ar1,D1Ar1,#LO(_main)
  67497. + MOVT D0Ar4,#HI(__init)
  67498. + ADD D0Ar4,D0Ar4,#LO(__init)
  67499. + MOVT D1Ar5,#HI(__fini)
  67500. + ADD D1Ar5,D1Ar5,#LO(__fini)
  67501. +#endif
  67502. +
  67503. + MOVT D1Re0,#0x80
  67504. +
  67505. + SETL [A0StP++],D0Re0,D1Re0 ! stack_end (8Mb)
  67506. +
  67507. + MOV D1Re0,#0
  67508. + MOV D0Re0,#0
  67509. +
  67510. +#ifdef __PIC__
  67511. + CALLR D1RtP, ___uClibc_main@PLT
  67512. +#else
  67513. + CALLR D1RtP, ___uClibc_main
  67514. +#endif
  67515. +
  67516. + MOV D1Re0,#__NR_exit
  67517. + MOV D1Ar1,#0x1
  67518. + SWITCH #0x440001 ! exit syscall
  67519. +
  67520. + .size __start,.-__start
  67521. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crti.S uClibc/libc/sysdeps/linux/metag/crti.S
  67522. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crti.S 1970-01-01 01:00:00.000000000 +0100
  67523. +++ uClibc/libc/sysdeps/linux/metag/crti.S 2014-02-03 12:32:56.000000000 +0100
  67524. @@ -0,0 +1,19 @@
  67525. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67526. +
  67527. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67528. +
  67529. + .section .init
  67530. + .global __init
  67531. + .type __init,function
  67532. +__init:
  67533. + MOV D0FrT, A0FrP
  67534. + ADD A0FrP, A0StP, #0
  67535. + SETL [A0StP++], D0.4, D1RtP
  67536. +
  67537. + .section .fini
  67538. + .global __fini
  67539. + .type __fini,function
  67540. +__fini:
  67541. + MOV D0FrT, A0FrP
  67542. + ADD A0FrP, A0StP, #0
  67543. + SETL [A0StP++], D0.4, D1RtP
  67544. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crtn.S uClibc/libc/sysdeps/linux/metag/crtn.S
  67545. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crtn.S 1970-01-01 01:00:00.000000000 +0100
  67546. +++ uClibc/libc/sysdeps/linux/metag/crtn.S 2014-02-03 12:32:56.000000000 +0100
  67547. @@ -0,0 +1,19 @@
  67548. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67549. +
  67550. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67551. +
  67552. + .section .init
  67553. + .global __init
  67554. + .type __init,function
  67555. + GETL D0.4, D1RtP, [A0FrP+#8++]
  67556. + SUB A0StP, A0FrP, #8
  67557. + MOV A0FrP, D0.4
  67558. + MOV PC, D1RtP
  67559. +
  67560. + .section .fini
  67561. + .global __fini
  67562. + .type __fini,function
  67563. + GETL D0.4, D1RtP, [A0FrP+#8++]
  67564. + SUB A0StP, A0FrP, #8
  67565. + MOV A0FrP, D0.4
  67566. + MOV PC, D1RtP
  67567. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/libc-metag_load_tp.S uClibc/libc/sysdeps/linux/metag/libc-metag_load_tp.S
  67568. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/libc-metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  67569. +++ uClibc/libc/sysdeps/linux/metag/libc-metag_load_tp.S 2014-02-03 12:32:56.000000000 +0100
  67570. @@ -0,0 +1,7 @@
  67571. +/*
  67572. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67573. + *
  67574. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67575. + */
  67576. +
  67577. +#include <ldso/ldso/metag/metag_load_tp.S>
  67578. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/_longjmp.S uClibc/libc/sysdeps/linux/metag/_longjmp.S
  67579. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/_longjmp.S 1970-01-01 01:00:00.000000000 +0100
  67580. +++ uClibc/libc/sysdeps/linux/metag/_longjmp.S 2014-02-03 12:32:56.000000000 +0100
  67581. @@ -0,0 +1,25 @@
  67582. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67583. +
  67584. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67585. +
  67586. +
  67587. + .text
  67588. + .global ___longjmp
  67589. + .type ___longjmp,function
  67590. +
  67591. +___longjmp:
  67592. + !! If val is 0, set it to 1
  67593. + CMP D0Ar2,#0
  67594. + ADDZ D0Ar2,D0Ar2,#1
  67595. +
  67596. + !! Restore A0/A1 regs
  67597. + MGETL A0.0,A0.1,[D1Ar1++]
  67598. + !! Restore D0/D1 regs
  67599. + MOV A0.3,D1Ar1
  67600. + MGETL D0FrT,D0.5,D0.6,D0.7,[A0.3++]
  67601. + !! Move 2nd argument to return value
  67602. + MOV D0Re0,D0Ar2
  67603. + MOV PC,D1RtP
  67604. + .size ___longjmp,.-___longjmp
  67605. +
  67606. +libc_hidden_def(__longjmp)
  67607. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile uClibc/libc/sysdeps/linux/metag/Makefile
  67608. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  67609. +++ uClibc/libc/sysdeps/linux/metag/Makefile 2014-02-03 12:32:56.000000000 +0100
  67610. @@ -0,0 +1,13 @@
  67611. +# Makefile for uClibc
  67612. +#
  67613. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  67614. +#
  67615. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67616. +#
  67617. +
  67618. +top_srcdir=../../../../
  67619. +top_builddir=../../../../
  67620. +all: objs
  67621. +include $(top_builddir)Rules.mak
  67622. +include Makefile.arch
  67623. +include $(top_srcdir)Makerules
  67624. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile.arch uClibc/libc/sysdeps/linux/metag/Makefile.arch
  67625. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  67626. +++ uClibc/libc/sysdeps/linux/metag/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  67627. @@ -0,0 +1,12 @@
  67628. +# Makefile for uClibc
  67629. +#
  67630. +# Copyright (C) 2013 Imagination Technologies Ltd.
  67631. +#
  67632. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67633. +#
  67634. +
  67635. +CSRC-y := brk.c syscall.c metag.c __syscall_error.c
  67636. +
  67637. +SSRC-y := _longjmp.S clone.S setjmp.S vfork.S
  67638. +
  67639. +SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-metag_load_tp.S
  67640. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/metag.c uClibc/libc/sysdeps/linux/metag/metag.c
  67641. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/metag.c 1970-01-01 01:00:00.000000000 +0100
  67642. +++ uClibc/libc/sysdeps/linux/metag/metag.c 2014-02-03 12:32:56.000000000 +0100
  67643. @@ -0,0 +1,11 @@
  67644. +/*
  67645. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67646. + *
  67647. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67648. + */
  67649. +
  67650. +#include <errno.h>
  67651. +#include <sys/syscall.h>
  67652. +
  67653. +_syscall2(int,metag_setglobalbit,char *,addr,int,mask)
  67654. +_syscall1(void,metag_set_fpu_flags,unsigned int,flags)
  67655. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/setjmp.S uClibc/libc/sysdeps/linux/metag/setjmp.S
  67656. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/setjmp.S 1970-01-01 01:00:00.000000000 +0100
  67657. +++ uClibc/libc/sysdeps/linux/metag/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  67658. @@ -0,0 +1,52 @@
  67659. +/*
  67660. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67661. + *
  67662. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67663. + */
  67664. +
  67665. +!!! setjmp and variants
  67666. + .text
  67667. +
  67668. +!! int _setjmp (jmp_buf __env)
  67669. +!! Store the calling environment in ENV, not saving the signal mask.
  67670. +!! Return 0. */
  67671. + .global __setjmp
  67672. + .type __setjmp,function
  67673. +__setjmp:
  67674. + MOV D0Ar2,#0
  67675. + B ___sigsetjmp1
  67676. + .size __setjmp,.-__setjmp
  67677. +
  67678. +!! int setjmp (jmp_buf __env)
  67679. +!! Store the calling environment in ENV, also saving the signal mask.
  67680. +!! Return 0. */
  67681. + .global _setjmp
  67682. + .type _setjmp,function
  67683. +_setjmp:
  67684. + MOV D0Ar2,#1
  67685. + !! fall through to __sigsetjmp
  67686. + .size _setjmp,.-_setjmp
  67687. +
  67688. +!! int __sigsetjmp (jmp_buf __env, int __savemask)
  67689. +!! Store the calling environment in ENV, also saving the
  67690. +!! signal mask if SAVEMASK is nonzero. Return 0.
  67691. +!! This is the internal name for `sigsetjmp'.
  67692. + .global ___sigsetjmp
  67693. + .type ___sigsetjmp,function
  67694. +___sigsetjmp:
  67695. +___sigsetjmp1:
  67696. + !! Save A0/A1 regs
  67697. + MSETL [D1Ar1++],A0.0,A0.1
  67698. + !! Use A0.3 as temp
  67699. + MOV A0.3,D1Ar1
  67700. + !! Rewind D1Ar1 that was modified above
  67701. + SUB D1Ar1,D1Ar1,#(2*8)
  67702. + !! Save D0/D1 regs
  67703. + MSETL [A0.3++],D0FrT,D0.5,D0.6,D0.7
  67704. + !! Tail call __sigjmp_save
  67705. +#ifdef __PIC__
  67706. + B ___sigjmp_save@PLT
  67707. +#else
  67708. + B ___sigjmp_save
  67709. +#endif
  67710. + .size ___sigsetjmp,.-___sigsetjmp
  67711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/io.h uClibc/libc/sysdeps/linux/metag/sys/io.h
  67712. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/io.h 1970-01-01 01:00:00.000000000 +0100
  67713. +++ uClibc/libc/sysdeps/linux/metag/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  67714. @@ -0,0 +1,48 @@
  67715. +/* Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
  67716. + This file is part of the GNU C Library.
  67717. +
  67718. + The GNU C Library is free software; you can redistribute it and/or
  67719. + modify it under the terms of the GNU Lesser General Public
  67720. + License as published by the Free Software Foundation; either
  67721. + version 2.1 of the License, or (at your option) any later version.
  67722. +
  67723. + The GNU C Library is distributed in the hope that it will be useful,
  67724. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67725. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67726. + Lesser General Public License for more details.
  67727. +
  67728. + You should have received a copy of the GNU Lesser General Public
  67729. + License along with the GNU C Library; if not, write to the Free
  67730. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67731. + 02111-1307 USA. */
  67732. +
  67733. +#ifndef _SYS_IO_H
  67734. +
  67735. +#define _SYS_IO_H 1
  67736. +#include <features.h>
  67737. +
  67738. +__BEGIN_DECLS
  67739. +
  67740. +/* If TURN_ON is TRUE, request for permission to do direct i/o on the
  67741. + port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  67742. + permission off for that range. This call requires root privileges. */
  67743. +extern int ioperm (unsigned long int __from, unsigned long int __num,
  67744. + int __turn_on) __THROW;
  67745. +
  67746. +/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  67747. + permission to access any I/O port is granted. This call requires
  67748. + root privileges. */
  67749. +extern int iopl (int __level) __THROW;
  67750. +
  67751. +/* The functions that actually perform reads and writes. */
  67752. +extern unsigned char inb (unsigned long int port) __THROW;
  67753. +extern unsigned short int inw (unsigned long int port) __THROW;
  67754. +extern unsigned long int inl (unsigned long int port) __THROW;
  67755. +
  67756. +extern void outb (unsigned char value, unsigned long int port) __THROW;
  67757. +extern void outw (unsigned short value, unsigned long int port) __THROW;
  67758. +extern void outl (unsigned long value, unsigned long int port) __THROW;
  67759. +
  67760. +__END_DECLS
  67761. +
  67762. +#endif /* _SYS_IO_H */
  67763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/procfs.h uClibc/libc/sysdeps/linux/metag/sys/procfs.h
  67764. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/procfs.h 1970-01-01 01:00:00.000000000 +0100
  67765. +++ uClibc/libc/sysdeps/linux/metag/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  67766. @@ -0,0 +1,121 @@
  67767. +/* Copyright (C) 1996, 1997, 1999, 2007 Free Software Foundation, Inc.
  67768. + This file is part of the GNU C Library.
  67769. +
  67770. + The GNU C Library is free software; you can redistribute it and/or
  67771. + modify it under the terms of the GNU Lesser General Public
  67772. + License as published by the Free Software Foundation; either
  67773. + version 2.1 of the License, or (at your option) any later version.
  67774. +
  67775. + The GNU C Library is distributed in the hope that it will be useful,
  67776. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67777. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67778. + Lesser General Public License for more details.
  67779. +
  67780. + You should have received a copy of the GNU Lesser General Public
  67781. + License along with the GNU C Library; if not, write to the Free
  67782. + Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  67783. + Boston, MA 02110-1301, USA. */
  67784. +
  67785. +#ifndef _SYS_PROCFS_H
  67786. +#define _SYS_PROCFS_H 1
  67787. +
  67788. +/* This is somewhat modelled after the file of the same name on SVR4
  67789. + systems. It provides a definition of the core file format for ELF
  67790. + used on Linux. It doesn't have anything to do with the /proc file
  67791. + system, even though Linux has one.
  67792. +
  67793. + Anyway, the whole purpose of this file is for GDB and GDB only.
  67794. + Don't read too much into it. Don't use it for anything other than
  67795. + GDB unless you know what you are doing. */
  67796. +
  67797. +#include <features.h>
  67798. +#include <sys/time.h>
  67799. +#include <sys/types.h>
  67800. +#include <sys/user.h>
  67801. +
  67802. +__BEGIN_DECLS
  67803. +
  67804. +/* Type for a general-purpose register. */
  67805. +typedef unsigned long elf_greg_t;
  67806. +
  67807. +#define ELF_NGREG 30
  67808. +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  67809. +
  67810. +/* Register set for the floating-point registers. */
  67811. +#define ELF_NFPREG 18
  67812. +typedef unsigned long elf_fpreg_t;
  67813. +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
  67814. +
  67815. +/* Signal info. */
  67816. +struct elf_siginfo
  67817. + {
  67818. + int si_signo; /* Signal number. */
  67819. + int si_code; /* Extra code. */
  67820. + int si_errno; /* Errno. */
  67821. + };
  67822. +
  67823. +/* Definitions to generate Intel SVR4-like core files. These mostly
  67824. + have the same names as the SVR4 types with "elf_" tacked on the
  67825. + front to prevent clashes with Linux definitions, and the typedef
  67826. + forms have been avoided. This is mostly like the SVR4 structure,
  67827. + but more Linuxy, with things that Linux does not support and which
  67828. + GDB doesn't really use excluded. */
  67829. +
  67830. +struct elf_prstatus
  67831. + {
  67832. + struct elf_siginfo pr_info; /* Info associated with signal. */
  67833. + short int pr_cursig; /* Current signal. */
  67834. + unsigned long int pr_sigpend; /* Set of pending signals. */
  67835. + unsigned long int pr_sighold; /* Set of held signals. */
  67836. + __pid_t pr_pid;
  67837. + __pid_t pr_ppid;
  67838. + __pid_t pr_pgrp;
  67839. + __pid_t pr_sid;
  67840. + struct timeval pr_utime; /* User time. */
  67841. + struct timeval pr_stime; /* System time. */
  67842. + struct timeval pr_cutime; /* Cumulative user time. */
  67843. + struct timeval pr_cstime; /* Cumulative system time. */
  67844. + elf_gregset_t pr_reg; /* GP registers. */
  67845. + int pr_fpvalid; /* True if math copro being used. */
  67846. + };
  67847. +
  67848. +
  67849. +#define ELF_PRARGSZ (80) /* Number of chars for args. */
  67850. +
  67851. +struct elf_prpsinfo
  67852. + {
  67853. + char pr_state; /* Numeric process state. */
  67854. + char pr_sname; /* Char for pr_state. */
  67855. + char pr_zomb; /* Zombie. */
  67856. + char pr_nice; /* Nice val. */
  67857. + unsigned long int pr_flag; /* Flags. */
  67858. + unsigned short int pr_uid;
  67859. + unsigned short int pr_gid;
  67860. + int pr_pid, pr_ppid, pr_pgrp, pr_sid;
  67861. + /* Lots missing */
  67862. + char pr_fname[16]; /* Filename of executable. */
  67863. + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
  67864. + };
  67865. +
  67866. +/* The rest of this file provides the types for emulation of the
  67867. + Solaris <proc_service.h> interfaces that should be implemented by
  67868. + users of libthread_db. */
  67869. +
  67870. +/* Addresses. */
  67871. +typedef void *psaddr_t;
  67872. +
  67873. +/* Register sets. Linux has different names. */
  67874. +typedef elf_gregset_t prgregset_t;
  67875. +typedef elf_fpregset_t prfpregset_t;
  67876. +
  67877. +/* We don't have any differences between processes and threads,
  67878. + therefore have only one PID type. */
  67879. +typedef __pid_t lwpid_t;
  67880. +
  67881. +/* Process status and info. In the end we do provide typedefs for them. */
  67882. +typedef struct elf_prstatus prstatus_t;
  67883. +typedef struct elf_prpsinfo prpsinfo_t;
  67884. +
  67885. +__END_DECLS
  67886. +
  67887. +#endif /* sys/procfs.h */
  67888. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/ucontext.h uClibc/libc/sysdeps/linux/metag/sys/ucontext.h
  67889. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100
  67890. +++ uClibc/libc/sysdeps/linux/metag/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  67891. @@ -0,0 +1,96 @@
  67892. +/* Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc.
  67893. + This file is part of the GNU C Library.
  67894. +
  67895. + The GNU C Library is free software; you can redistribute it and/or
  67896. + modify it under the terms of the GNU Lesser General Public
  67897. + License as published by the Free Software Foundation; either
  67898. + version 2.1 of the License, or (at your option) any later version.
  67899. +
  67900. + The GNU C Library is distributed in the hope that it will be useful,
  67901. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67902. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67903. + Lesser General Public License for more details.
  67904. +
  67905. + You should have received a copy of the GNU Lesser General Public
  67906. + License along with the GNU C Library; if not, write to the Free
  67907. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67908. + 02111-1307 USA. */
  67909. +
  67910. +/* Meta ABI compliant context switching support. */
  67911. +
  67912. +#ifndef _SYS_UCONTEXT_H
  67913. +#define _SYS_UCONTEXT_H 1
  67914. +
  67915. +#include <features.h>
  67916. +#include <signal.h>
  67917. +#include <sys/procfs.h>
  67918. +
  67919. +/* We need the signal context definitions even if they are not used
  67920. + included in <signal.h>. */
  67921. +#include <bits/sigcontext.h>
  67922. +
  67923. +typedef int greg_t;
  67924. +
  67925. +/* Number of general registers. */
  67926. +#define NGREG 18
  67927. +
  67928. +/* Container for all general registers. */
  67929. +typedef elf_gregset_t gregset_t;
  67930. +
  67931. +/* Number of each register is the `gregset_t' array. */
  67932. +enum
  67933. +{
  67934. + R0 = 0,
  67935. +#define R0 R0
  67936. + R1 = 1,
  67937. +#define R1 R1
  67938. + R2 = 2,
  67939. +#define R2 R2
  67940. + R3 = 3,
  67941. +#define R3 R3
  67942. + R4 = 4,
  67943. +#define R4 R4
  67944. + R5 = 5,
  67945. +#define R5 R5
  67946. + R6 = 6,
  67947. +#define R6 R6
  67948. + R7 = 7,
  67949. +#define R7 R7
  67950. + R8 = 8,
  67951. +#define R8 R8
  67952. + R9 = 9,
  67953. +#define R9 R9
  67954. + R10 = 10,
  67955. +#define R10 R10
  67956. + R11 = 11,
  67957. +#define R11 R11
  67958. + R12 = 12,
  67959. +#define R12 R12
  67960. + R13 = 13,
  67961. +#define R13 R13
  67962. + R14 = 14,
  67963. +#define R14 R14
  67964. + R15 = 15
  67965. +#define R15 R15
  67966. +};
  67967. +
  67968. +/* Structure to describe FPU registers. */
  67969. +typedef elf_fpregset_t fpregset_t;
  67970. +
  67971. +/* Context to describe whole processor state. This only describes
  67972. + the core registers; coprocessor registers get saved elsewhere
  67973. + (e.g. in uc_regspace, or somewhere unspecified on the stack
  67974. + during non-RT signal handlers). */
  67975. +typedef struct sigcontext mcontext_t;
  67976. +
  67977. +/* Userlevel context. */
  67978. +typedef struct ucontext
  67979. + {
  67980. + unsigned long uc_flags;
  67981. + struct ucontext *uc_link;
  67982. + stack_t uc_stack;
  67983. + mcontext_t uc_mcontext;
  67984. + __sigset_t uc_sigmask;
  67985. + } ucontext_t;
  67986. +
  67987. +#endif /* sys/ucontext.h */
  67988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/user.h uClibc/libc/sysdeps/linux/metag/sys/user.h
  67989. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  67990. +++ uClibc/libc/sysdeps/linux/metag/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  67991. @@ -0,0 +1,7 @@
  67992. +/*
  67993. + * This file is not needed, but in practice gdb might try to include it.
  67994. + *
  67995. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67996. + *
  67997. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67998. + */
  67999. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/syscall.c uClibc/libc/sysdeps/linux/metag/syscall.c
  68000. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/syscall.c 1970-01-01 01:00:00.000000000 +0100
  68001. +++ uClibc/libc/sysdeps/linux/metag/syscall.c 2014-02-03 12:32:56.000000000 +0100
  68002. @@ -0,0 +1,40 @@
  68003. +/* syscall for META/uClibc
  68004. + *
  68005. + * Copyright (C) 2013 Imagination Technologies
  68006. + *
  68007. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  68008. + */
  68009. +
  68010. +#include <features.h>
  68011. +#include <errno.h>
  68012. +#include <sys/types.h>
  68013. +#include <sys/syscall.h>
  68014. +
  68015. +long syscall(long sysnum,
  68016. + long arg1, long arg2, long arg3,
  68017. + long arg4, long arg5, long arg6)
  68018. +{
  68019. +
  68020. + register long __call __asm__ ("D1Re0") = sysnum;
  68021. + register long __res __asm__ ("D0Re0");
  68022. + register long __a __asm__ ("D1Ar1") = arg1;
  68023. + register long __b __asm__ ("D0Ar2") = arg2;
  68024. + register long __c __asm__ ("D1Ar3") = arg3;
  68025. + register long __d __asm__ ("D0Ar4") = arg4;
  68026. + register long __e __asm__ ("D1Ar5") = arg5;
  68027. + register long __f __asm__ ("D0Ar6") = arg6;
  68028. +
  68029. +
  68030. + __asm__ __volatile__ ("SWITCH #0x440001"
  68031. + : "=d" (__res)
  68032. + : "d" (__call), "d" (__a), "d" (__b),
  68033. + "d" (__c), "d" (__d), "d" (__e) , "d" (__f)
  68034. + : "memory");
  68035. +
  68036. + if(__res >= (unsigned long) -4095) {
  68037. + long err = __res;
  68038. + (*__errno_location()) = (-err);
  68039. + __res = (unsigned long) -1;
  68040. + }
  68041. + return (long) __res;
  68042. +}
  68043. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/__syscall_error.c uClibc/libc/sysdeps/linux/metag/__syscall_error.c
  68044. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  68045. +++ uClibc/libc/sysdeps/linux/metag/__syscall_error.c 2014-02-03 12:32:56.000000000 +0100
  68046. @@ -0,0 +1,18 @@
  68047. +/* Wrapper for setting errno.
  68048. + *
  68049. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  68050. + *
  68051. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  68052. + */
  68053. +
  68054. +#include <errno.h>
  68055. +#include <features.h>
  68056. +
  68057. +/* This routine is jumped to by all the syscall handlers, to stash
  68058. + * an error number into errno. */
  68059. +int __syscall_error(int err_no) attribute_hidden;
  68060. +int __syscall_error(int err_no)
  68061. +{
  68062. + __set_errno(-err_no);
  68063. + return -1;
  68064. +}
  68065. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sysdep.h uClibc/libc/sysdeps/linux/metag/sysdep.h
  68066. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  68067. +++ uClibc/libc/sysdeps/linux/metag/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  68068. @@ -0,0 +1,59 @@
  68069. +/*
  68070. + * Assembler macros for Meta.
  68071. + *
  68072. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  68073. + */
  68074. +
  68075. +#include <common/sysdep.h>
  68076. +
  68077. +#include <features.h>
  68078. +#include <libc-internal.h>
  68079. +
  68080. +#ifdef __ASSEMBLER__
  68081. +
  68082. +#ifdef SHARED
  68083. +#define PLTJMP(_x) _x##@PLT
  68084. +#else
  68085. +#define PLTJMP(_x) _x
  68086. +#endif
  68087. +
  68088. +#undef PSEUDO_END
  68089. +#define PSEUDO_END(name) \
  68090. + SYSCALL_ERROR_HANDLER \
  68091. + END (name)
  68092. +
  68093. +#if defined NOT_IN_libc
  68094. +# define SYSCALL_ERROR __local_syscall_error
  68095. +# ifdef RTLD_PRIVATE_ERRNO
  68096. +# define SYSCALL_ERROR_HANDLER \
  68097. +__local_syscall_error: \
  68098. + NEG D0Re0, D0Re0; \
  68099. + ADDT D1Re0, CPC1, #HI(_rtld_errno); \
  68100. + ADD D1Re0, D1Re0, #LO(_rtld_errno) + 4; \
  68101. + SETD [D1Re0], D0Re0; \
  68102. + NEG D0Re0, #0x1; \
  68103. + MOV PC, D1RtP;
  68104. +# else
  68105. +# define SYSCALL_ERROR_HANDLER \
  68106. +__local_syscall_error: \
  68107. + MOV D1Re0, D1RtP; \
  68108. + SETL [A0StP++], D0Re0, D1Re0; \
  68109. + CALLR D1RtP, PLTJMP(___errno_location); \
  68110. + GETD D1Re0, [A0StP+#-8]; \
  68111. + NEG D1Re0, D1Re0; \
  68112. + SETD [D0Re0], D1Re0; \
  68113. + NEG D0Re0, #0x1; \
  68114. + GETD D1RtP, [A0StP+#-4]; \
  68115. + SUB A0StP, A0StP, #0x8; \
  68116. + MOV PC, D1RtP;
  68117. +# endif
  68118. +#else
  68119. +# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  68120. +# define SYSCALL_ERROR ___syscall_error
  68121. +#endif
  68122. +
  68123. +#endif /* __ASSEMBLER __*/
  68124. +
  68125. +/* Pointer mangling is not yet supported for META. */
  68126. +#define PTR_MANGLE(var) (void) (var)
  68127. +#define PTR_DEMANGLE(var) (void) (var)
  68128. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/vfork.S uClibc/libc/sysdeps/linux/metag/vfork.S
  68129. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/vfork.S 1970-01-01 01:00:00.000000000 +0100
  68130. +++ uClibc/libc/sysdeps/linux/metag/vfork.S 2014-02-03 12:32:56.000000000 +0100
  68131. @@ -0,0 +1,67 @@
  68132. +! Copyright (C) 2013 Imagination Technologies Ltd.
  68133. +
  68134. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  68135. +
  68136. +#include <asm/unistd.h>
  68137. +
  68138. +#define _ERRNO_H
  68139. +#include <bits/errno.h>
  68140. +#include <sys/syscall.h>
  68141. +
  68142. +#ifndef SAVE_PID
  68143. +#define SAVE_PID
  68144. +#endif
  68145. +
  68146. +#ifndef RESTORE_PID
  68147. +#define RESTORE_PID
  68148. +#endif
  68149. +
  68150. +#ifdef __NR_vfork
  68151. +#define __VFORK_NR __NR_vfork
  68152. +#else
  68153. +#define __VFORK_NR __NR_fork
  68154. +#endif
  68155. +
  68156. +/* Clone the calling process, but without copying the whole address space.
  68157. + The calling process is suspended until the new process exits or is
  68158. + replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  68159. + and the process ID of the new process to the old process. */
  68160. +
  68161. + .balign 4
  68162. + .global ___vfork
  68163. + .hidden ___vfork
  68164. + .type ___vfork, @function
  68165. +___vfork:
  68166. +
  68167. + SAVE_PID
  68168. +
  68169. + MOV D1Ar1, #0x4111 /* CLONE_VM | CLONE_VFORK | SIGCHLD */
  68170. + MOV D0Ar2, #0
  68171. + MOV D1Ar3, #0
  68172. + MOV D0Ar4, #0
  68173. + MOV D1Ar5, #0
  68174. + MOV D0Ar6, #0
  68175. + MOV D1Re0, #__NR_clone
  68176. + SWITCH #0x440001
  68177. +
  68178. + RESTORE_PID
  68179. +
  68180. + MOVT D1Re0, #HI(-4096)
  68181. + ADD D1Re0, D1Re0, #LO(-4096)
  68182. + CMP D1Re0, D0Re0
  68183. + BCS error
  68184. +
  68185. + /* Syscall worked. Return to child/parent */
  68186. + MOV PC, D1RtP
  68187. +
  68188. +error:
  68189. + MOV D1Ar1, D0Re0
  68190. +#ifdef __PIC__
  68191. + B ___syscall_error@PLT
  68192. +#else
  68193. + B ___syscall_error
  68194. +#endif
  68195. + .size ___vfork,.-___vfork
  68196. +
  68197. +weak_alias(__vfork,vfork)
  68198. +libc_hidden_weak(vfork)
  68199. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/fcntl.h uClibc/libc/sysdeps/linux/microblaze/bits/fcntl.h
  68200. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  68201. +++ uClibc/libc/sysdeps/linux/microblaze/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  68202. @@ -13,9 +13,8 @@
  68203. Lesser General Public License for more details.
  68204. You should have received a copy of the GNU Lesser General Public
  68205. - License along with the GNU C Library; if not, write to the Free
  68206. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68207. - 02111-1307 USA. */
  68208. + License along with the GNU C Library; if not, see
  68209. + <http://www.gnu.org/licenses/>. */
  68210. #ifndef _FCNTL_H
  68211. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  68212. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/kernel_types.h uClibc/libc/sysdeps/linux/microblaze/bits/kernel_types.h
  68213. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  68214. +++ uClibc/libc/sysdeps/linux/microblaze/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  68215. @@ -44,6 +44,8 @@
  68216. typedef unsigned int __kernel_old_uid_t;
  68217. typedef unsigned int __kernel_old_gid_t;
  68218. typedef unsigned int __kernel_old_dev_t;
  68219. +typedef long __kernel_long_t;
  68220. +typedef unsigned long __kernel_ulong_t;
  68221. #ifdef __GNUC__
  68222. typedef long long __kernel_loff_t;
  68223. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/poll.h uClibc/libc/sysdeps/linux/microblaze/bits/poll.h
  68224. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  68225. +++ uClibc/libc/sysdeps/linux/microblaze/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  68226. @@ -12,9 +12,8 @@
  68227. Lesser General Public License for more details.
  68228. You should have received a copy of the GNU Lesser General Public
  68229. - License along with the GNU C Library; if not, write to the Free
  68230. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68231. - 02111-1307 USA. */
  68232. + License along with the GNU C Library; if not, see
  68233. + <http://www.gnu.org/licenses/>. */
  68234. #ifndef _SYS_POLL_H
  68235. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  68236. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/setjmp.h uClibc/libc/sysdeps/linux/microblaze/bits/setjmp.h
  68237. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  68238. +++ uClibc/libc/sysdeps/linux/microblaze/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  68239. @@ -19,7 +19,6 @@
  68240. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  68241. #endif
  68242. -#ifndef _ASM
  68243. typedef struct
  68244. {
  68245. /* Stack pointer. */
  68246. @@ -35,13 +34,5 @@
  68247. /* Callee-saved registers r18-r31. */
  68248. int __regs[14];
  68249. } __jmp_buf[1];
  68250. -#endif
  68251. -
  68252. -#define JB_SIZE (4 * 18)
  68253. -
  68254. -/* Test if longjmp to JMPBUF would unwind the frame
  68255. - containing a local variable at ADDRESS. */
  68256. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  68257. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  68258. #endif /* bits/setjmp.h */
  68259. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/stackinfo.h uClibc/libc/sysdeps/linux/microblaze/bits/stackinfo.h
  68260. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  68261. +++ uClibc/libc/sysdeps/linux/microblaze/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  68262. @@ -12,9 +12,8 @@
  68263. Lesser General Public License for more details.
  68264. You should have received a copy of the GNU Lesser General Public
  68265. - License along with the GNU C Library; if not, write to the Free
  68266. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68267. - 02111-1307 USA. */
  68268. + License along with the GNU C Library; if not, see
  68269. + <http://www.gnu.org/licenses/>. */
  68270. /* This file contains a bit of information about the stack allocation
  68271. of the processor. */
  68272. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
  68273. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  68274. +++ uClibc/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  68275. @@ -12,8 +12,8 @@
  68276. /* can your target use syscall6() for mmap ? */
  68277. #define __UCLIBC_MMAP_HAS_6_ARGS__
  68278. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  68279. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  68280. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  68281. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  68282. /* does your target have a broken create_module() ? */
  68283. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  68284. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_page.h uClibc/libc/sysdeps/linux/microblaze/bits/uClibc_page.h
  68285. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  68286. +++ uClibc/libc/sysdeps/linux/microblaze/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  68287. @@ -11,8 +11,8 @@
  68288. * Library General Public License for more details.
  68289. *
  68290. * You should have received a copy of the GNU Library General Public
  68291. - * License along with this library; if not, write to the Free
  68292. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  68293. + * License along with this library; if not, see
  68294. + * <http://www.gnu.org/licenses/>.
  68295. */
  68296. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  68297. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/wordsize.h uClibc/libc/sysdeps/linux/microblaze/bits/wordsize.h
  68298. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  68299. +++ uClibc/libc/sysdeps/linux/microblaze/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  68300. @@ -12,8 +12,7 @@
  68301. Lesser General Public License for more details.
  68302. You should have received a copy of the GNU Lesser General Public
  68303. - License along with the GNU C Library; if not, write to the Free
  68304. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68305. - 02111-1307 USA. */
  68306. + License along with the GNU C Library; if not, see
  68307. + <http://www.gnu.org/licenses/>. */
  68308. #define __WORDSIZE 32
  68309. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h
  68310. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  68311. +++ uClibc/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  68312. @@ -0,0 +1,6 @@
  68313. +/*
  68314. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  68315. + *
  68316. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  68317. + */
  68318. +#define JB_SIZE (4 * 18)
  68319. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h
  68320. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  68321. +++ uClibc/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  68322. @@ -0,0 +1,11 @@
  68323. +/*
  68324. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  68325. + *
  68326. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  68327. + */
  68328. +#include <setjmp.h>
  68329. +
  68330. +/* Test if longjmp to JMPBUF would unwind the frame
  68331. + containing a local variable at ADDRESS. */
  68332. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  68333. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  68334. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/__longjmp.S uClibc/libc/sysdeps/linux/microblaze/__longjmp.S
  68335. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  68336. +++ uClibc/libc/sysdeps/linux/microblaze/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  68337. @@ -12,10 +12,6 @@
  68338. * Written by Miles Bader <miles@gnu.org>
  68339. */
  68340. -#define _SETJMP_H
  68341. -#define _ASM
  68342. -#include <bits/setjmp.h>
  68343. -
  68344. #include <libc-symbols.h>
  68345. .text
  68346. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile uClibc/libc/sysdeps/linux/microblaze/Makefile
  68347. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile 2012-05-15 09:20:09.000000000 +0200
  68348. +++ uClibc/libc/sysdeps/linux/microblaze/Makefile 2014-02-03 12:32:56.000000000 +0100
  68349. @@ -13,8 +13,7 @@
  68350. # details.
  68351. #
  68352. # You should have received a copy of the GNU Library General Public License
  68353. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  68354. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  68355. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  68356. top_srcdir=../../../../
  68357. top_builddir=../../../../
  68358. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile.arch uClibc/libc/sysdeps/linux/microblaze/Makefile.arch
  68359. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  68360. +++ uClibc/libc/sysdeps/linux/microblaze/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  68361. @@ -5,8 +5,8 @@
  68362. #
  68363. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  68364. -CSRC := mmap.c clone.c fixdfsi.c
  68365. +CSRC-y := clone.c fixdfsi.c
  68366. -SSRC := setjmp.S __longjmp.S vfork.S
  68367. +SSRC-y := setjmp.S __longjmp.S vfork.S
  68368. ARCH_HEADERS := floatlib.h
  68369. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/mmap.c uClibc/libc/sysdeps/linux/microblaze/mmap.c
  68370. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/mmap.c 2012-05-15 09:20:09.000000000 +0200
  68371. +++ uClibc/libc/sysdeps/linux/microblaze/mmap.c 1970-01-01 01:00:00.000000000 +0100
  68372. @@ -1,16 +0,0 @@
  68373. -/* Use new style mmap for microblaze */
  68374. -/*
  68375. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  68376. - *
  68377. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  68378. - */
  68379. -
  68380. -#include <unistd.h>
  68381. -#include <errno.h>
  68382. -#include <sys/mman.h>
  68383. -#include <sys/syscall.h>
  68384. -
  68385. -
  68386. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  68387. - int, flags, int, fd, __off_t, offset)
  68388. -libc_hidden_def(mmap)
  68389. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/setjmp.S uClibc/libc/sysdeps/linux/microblaze/setjmp.S
  68390. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  68391. +++ uClibc/libc/sysdeps/linux/microblaze/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  68392. @@ -25,13 +25,8 @@
  68393. Lesser General Public License for more details.
  68394. You should have received a copy of the GNU Lesser General Public
  68395. - License along with the GNU C Library; if not, write to the Free
  68396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68397. - 02111-1307 USA. */
  68398. -
  68399. -#define _SETJMP_H
  68400. -#define _ASM
  68401. -#include <bits/setjmp.h>
  68402. + License along with the GNU C Library; if not, see
  68403. + <http://www.gnu.org/licenses/>. */
  68404. #include <libc-symbols.h>
  68405. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/procfs.h uClibc/libc/sysdeps/linux/microblaze/sys/procfs.h
  68406. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  68407. +++ uClibc/libc/sysdeps/linux/microblaze/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  68408. @@ -12,9 +12,8 @@
  68409. Lesser General Public License for more details.
  68410. You should have received a copy of the GNU Lesser General Public
  68411. - License along with the GNU C Library; if not, write to the Free
  68412. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68413. - 02111-1307 USA. */
  68414. + License along with the GNU C Library; if not, see
  68415. + <http://www.gnu.org/licenses/>. */
  68416. #ifndef _SYS_PROCFS_H
  68417. #define _SYS_PROCFS_H 1
  68418. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ptrace.h uClibc/libc/sysdeps/linux/microblaze/sys/ptrace.h
  68419. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  68420. +++ uClibc/libc/sysdeps/linux/microblaze/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  68421. @@ -13,9 +13,8 @@
  68422. Lesser General Public License for more details.
  68423. You should have received a copy of the GNU Lesser General Public
  68424. - License along with the GNU C Library; if not, write to the Free
  68425. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68426. - 02111-1307 USA. */
  68427. + License along with the GNU C Library; if not, see
  68428. + <http://www.gnu.org/licenses/>. */
  68429. #ifndef _SYS_PTRACE_H
  68430. #define _SYS_PTRACE_H 1
  68431. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ucontext.h uClibc/libc/sysdeps/linux/microblaze/sys/ucontext.h
  68432. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  68433. +++ uClibc/libc/sysdeps/linux/microblaze/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  68434. @@ -12,9 +12,8 @@
  68435. Lesser General Public License for more details.
  68436. You should have received a copy of the GNU Lesser General Public
  68437. - License along with the GNU C Library; if not, write to the Free
  68438. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68439. - 02111-1307 USA. */
  68440. + License along with the GNU C Library; if not, see
  68441. + <http://www.gnu.org/licenses/>. */
  68442. #ifndef _SYS_UCONTEXT_H
  68443. #define _SYS_UCONTEXT_H 1
  68444. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/user.h uClibc/libc/sysdeps/linux/microblaze/sys/user.h
  68445. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  68446. +++ uClibc/libc/sysdeps/linux/microblaze/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  68447. @@ -12,9 +12,8 @@
  68448. Lesser General Public License for more details.
  68449. You should have received a copy of the GNU Lesser General Public
  68450. - License along with the GNU C Library; if not, write to the Free
  68451. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68452. - 02111-1307 USA. */
  68453. + License along with the GNU C Library; if not, see
  68454. + <http://www.gnu.org/licenses/>. */
  68455. #ifndef _SYS_USER_H
  68456. #define _SYS_USER_H 1
  68457. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/vfork.S uClibc/libc/sysdeps/linux/microblaze/vfork.S
  68458. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/vfork.S 2012-05-15 09:20:09.000000000 +0200
  68459. +++ uClibc/libc/sysdeps/linux/microblaze/vfork.S 2014-02-03 12:32:56.000000000 +0100
  68460. @@ -13,21 +13,15 @@
  68461. * Microblaze port by John Williams
  68462. */
  68463. -#define _ERRNO_H 1
  68464. -#include <bits/errno.h>
  68465. -#define _SYSCALL_H
  68466. -#include <bits/sysnum.h>
  68467. -
  68468. -#include <libc-symbols.h>
  68469. +#include <sys/syscall.h>
  68470. /* Clone the calling process, but without copying the whole address space.
  68471. The calling process is suspended until the new process exits or is
  68472. replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  68473. and the process ID of the new process to the old process. */
  68474. -.global C_SYMBOL_NAME(errno)
  68475. -
  68476. .globl __vfork
  68477. + .hidden __vfork
  68478. .align 4
  68479. __vfork:
  68480. addi r12, r0, SYS_vfork
  68481. @@ -50,4 +44,4 @@
  68482. .size __vfork, .-__vfork
  68483. weak_alias(__vfork,vfork)
  68484. -libc_hidden_weak(vfork)
  68485. +libc_hidden_def(vfork)
  68486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/atomic.h uClibc/libc/sysdeps/linux/mips/bits/atomic.h
  68487. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  68488. +++ uClibc/libc/sysdeps/linux/mips/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  68489. @@ -13,9 +13,8 @@
  68490. Lesser General Public License for more details.
  68491. You should have received a copy of the GNU Lesser General Public
  68492. - License along with the GNU C Library; if not, write to the Free
  68493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68494. - 02111-1307 USA. */
  68495. + License along with the GNU C Library; if not, see
  68496. + <http://www.gnu.org/licenses/>. */
  68497. #ifndef _MIPS_BITS_ATOMIC_H
  68498. #define _MIPS_BITS_ATOMIC_H 1
  68499. @@ -136,22 +135,22 @@
  68500. /* For all "bool" routines, we return FALSE if exchange succesful. */
  68501. #define __arch_compare_and_exchange_bool_8_int(mem, new, old, rel, acq) \
  68502. -({ __typeof (*mem) __prev; int __cmp; \
  68503. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68504. __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
  68505. !__cmp; })
  68506. #define __arch_compare_and_exchange_bool_16_int(mem, new, old, rel, acq) \
  68507. -({ __typeof (*mem) __prev; int __cmp; \
  68508. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68509. __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
  68510. !__cmp; })
  68511. #define __arch_compare_and_exchange_bool_32_int(mem, new, old, rel, acq) \
  68512. -({ __typeof (*mem) __prev; int __cmp; \
  68513. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68514. __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
  68515. !__cmp; })
  68516. #define __arch_compare_and_exchange_bool_64_int(mem, new, old, rel, acq) \
  68517. -({ __typeof (*mem) __prev; int __cmp; \
  68518. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68519. __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
  68520. !__cmp; })
  68521. @@ -159,22 +158,22 @@
  68522. successful or not. */
  68523. #define __arch_compare_and_exchange_val_8_int(mem, new, old, rel, acq) \
  68524. -({ __typeof (*mem) __prev; int __cmp; \
  68525. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68526. __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
  68527. (__typeof (*mem))__prev; })
  68528. #define __arch_compare_and_exchange_val_16_int(mem, new, old, rel, acq) \
  68529. -({ __typeof (*mem) __prev; int __cmp; \
  68530. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68531. __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
  68532. (__typeof (*mem))__prev; })
  68533. #define __arch_compare_and_exchange_val_32_int(mem, new, old, rel, acq) \
  68534. -({ __typeof (*mem) __prev; int __cmp; \
  68535. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68536. __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
  68537. (__typeof (*mem))__prev; })
  68538. #define __arch_compare_and_exchange_val_64_int(mem, new, old, rel, acq) \
  68539. -({ __typeof (*mem) __prev; int __cmp; \
  68540. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  68541. __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
  68542. (__typeof (*mem))__prev; })
  68543. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dirent.h uClibc/libc/sysdeps/linux/mips/bits/dirent.h
  68544. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  68545. +++ uClibc/libc/sysdeps/linux/mips/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  68546. @@ -12,9 +12,8 @@
  68547. Lesser General Public License for more details.
  68548. You should have received a copy of the GNU Lesser General Public
  68549. - License along with the GNU C Library; if not, write to the Free
  68550. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68551. - 02111-1307 USA. */
  68552. + License along with the GNU C Library; if not, see
  68553. + <http://www.gnu.org/licenses/>. */
  68554. #ifndef _DIRENT_H
  68555. # error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  68556. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dlfcn.h uClibc/libc/sysdeps/linux/mips/bits/dlfcn.h
  68557. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  68558. +++ uClibc/libc/sysdeps/linux/mips/bits/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  68559. @@ -14,9 +14,8 @@
  68560. Lesser General Public License for more details.
  68561. You should have received a copy of the GNU Lesser General Public
  68562. - License along with the GNU C Library; if not, write to the Free
  68563. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68564. - 02111-1307 USA. */
  68565. + License along with the GNU C Library; if not, see
  68566. + <http://www.gnu.org/licenses/>. */
  68567. #ifndef _DLFCN_H
  68568. # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
  68569. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/eventfd.h uClibc/libc/sysdeps/linux/mips/bits/eventfd.h
  68570. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  68571. +++ uClibc/libc/sysdeps/linux/mips/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  68572. @@ -0,0 +1,31 @@
  68573. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  68574. + This file is part of the GNU C Library.
  68575. +
  68576. + The GNU C Library is free software; you can redistribute it and/or
  68577. + modify it under the terms of the GNU Lesser General Public
  68578. + License as published by the Free Software Foundation; either
  68579. + version 2.1 of the License, or (at your option) any later version.
  68580. +
  68581. + The GNU C Library is distributed in the hope that it will be useful,
  68582. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  68583. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68584. + Lesser General Public License for more details.
  68585. +
  68586. + You should have received a copy of the GNU Lesser General Public
  68587. + License along with the GNU C Library; if not, see
  68588. + <http://www.gnu.org/licenses/>. */
  68589. +
  68590. +#ifndef _SYS_EVENTFD_H
  68591. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  68592. +#endif
  68593. +
  68594. +/* Flags for eventfd. */
  68595. +enum
  68596. + {
  68597. + EFD_SEMAPHORE = 00000001,
  68598. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  68599. + EFD_CLOEXEC = 02000000,
  68600. +#define EFD_CLOEXEC EFD_CLOEXEC
  68601. + EFD_NONBLOCK = 00000200
  68602. +#define EFD_NONBLOCK EFD_NONBLOCK
  68603. + };
  68604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fcntl.h uClibc/libc/sysdeps/linux/mips/bits/fcntl.h
  68605. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  68606. +++ uClibc/libc/sysdeps/linux/mips/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  68607. @@ -14,9 +14,8 @@
  68608. Lesser General Public License for more details.
  68609. You should have received a copy of the GNU Lesser General Public
  68610. - License along with the GNU C Library; if not, write to the Free
  68611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68612. - 02111-1307 USA. */
  68613. + License along with the GNU C Library; if not, see
  68614. + <http://www.gnu.org/licenses/>. */
  68615. #ifndef _FCNTL_H
  68616. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  68617. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fenv.h uClibc/libc/sysdeps/linux/mips/bits/fenv.h
  68618. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  68619. +++ uClibc/libc/sysdeps/linux/mips/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  68620. @@ -12,9 +12,8 @@
  68621. Lesser General Public License for more details.
  68622. You should have received a copy of the GNU Lesser General Public
  68623. - License along with the GNU C Library; if not, write to the Free
  68624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68625. - 02111-1307 USA. */
  68626. + License along with the GNU C Library; if not, see
  68627. + <http://www.gnu.org/licenses/>. */
  68628. #ifndef _FENV_H
  68629. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  68630. @@ -69,9 +68,9 @@
  68631. fenv_t;
  68632. /* If the default argument is used we use this value. */
  68633. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  68634. +#define FE_DFL_ENV ((const fenv_t *) -1)
  68635. #ifdef __USE_GNU
  68636. /* Floating-point environment where none of the exception is masked. */
  68637. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  68638. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  68639. #endif
  68640. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ioctl-types.h uClibc/libc/sysdeps/linux/mips/bits/ioctl-types.h
  68641. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ioctl-types.h 2012-05-15 09:20:09.000000000 +0200
  68642. +++ uClibc/libc/sysdeps/linux/mips/bits/ioctl-types.h 2014-02-03 12:32:56.000000000 +0100
  68643. @@ -13,9 +13,8 @@
  68644. Lesser General Public License for more details.
  68645. You should have received a copy of the GNU Lesser General Public
  68646. - License along with the GNU C Library; if not, write to the Free
  68647. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68648. - 02111-1307 USA. */
  68649. + License along with the GNU C Library; if not, see
  68650. + <http://www.gnu.org/licenses/>. */
  68651. #ifndef _SYS_IOCTL_H
  68652. # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
  68653. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ipc.h uClibc/libc/sysdeps/linux/mips/bits/ipc.h
  68654. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  68655. +++ uClibc/libc/sysdeps/linux/mips/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  68656. @@ -12,9 +12,8 @@
  68657. Lesser General Public License for more details.
  68658. You should have received a copy of the GNU Lesser General Public
  68659. - License along with the GNU C Library; if not, write to the Free
  68660. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68661. - 02111-1307 USA. */
  68662. + License along with the GNU C Library; if not, see
  68663. + <http://www.gnu.org/licenses/>. */
  68664. #ifndef _SYS_IPC_H
  68665. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  68666. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_sigaction.h uClibc/libc/sysdeps/linux/mips/bits/kernel_sigaction.h
  68667. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  68668. +++ uClibc/libc/sysdeps/linux/mips/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  68669. @@ -24,12 +24,4 @@
  68670. #endif
  68671. };
  68672. -/* In uclibc, userspace struct sigaction is identical to
  68673. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  68674. - * See sigaction.h
  68675. - */
  68676. -
  68677. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  68678. - struct sigaction *, size_t) attribute_hidden;
  68679. -
  68680. #endif
  68681. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_types.h uClibc/libc/sysdeps/linux/mips/bits/kernel_types.h
  68682. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  68683. +++ uClibc/libc/sysdeps/linux/mips/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  68684. @@ -32,6 +32,8 @@
  68685. typedef __kernel_uid_t __kernel_old_uid_t;
  68686. typedef __kernel_gid_t __kernel_old_gid_t;
  68687. typedef __kernel_dev_t __kernel_old_dev_t;
  68688. +typedef long __kernel_long_t;
  68689. +typedef unsigned long __kernel_ulong_t;
  68690. typedef long long __kernel_loff_t;
  68691. #else
  68692. typedef unsigned int __kernel_dev_t;
  68693. @@ -68,6 +70,8 @@
  68694. typedef __kernel_uid_t __kernel_old_uid_t;
  68695. typedef __kernel_gid_t __kernel_old_gid_t;
  68696. typedef __kernel_dev_t __kernel_old_dev_t;
  68697. +typedef long __kernel_long_t;
  68698. +typedef unsigned long __kernel_ulong_t;
  68699. typedef long long __kernel_loff_t;
  68700. #endif
  68701. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mathdef.h uClibc/libc/sysdeps/linux/mips/bits/mathdef.h
  68702. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  68703. +++ uClibc/libc/sysdeps/linux/mips/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  68704. @@ -13,9 +13,8 @@
  68705. Lesser General Public License for more details.
  68706. You should have received a copy of the GNU Lesser General Public
  68707. - License along with the GNU C Library; if not, write to the Free
  68708. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68709. - 02111-1307 USA. */
  68710. + License along with the GNU C Library; if not, see
  68711. + <http://www.gnu.org/licenses/>. */
  68712. #if !defined _MATH_H && !defined _COMPLEX_H
  68713. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  68714. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mman.h uClibc/libc/sysdeps/linux/mips/bits/mman.h
  68715. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  68716. +++ uClibc/libc/sysdeps/linux/mips/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  68717. @@ -14,9 +14,8 @@
  68718. Lesser General Public License for more details.
  68719. You should have received a copy of the GNU Lesser General Public
  68720. - License along with the GNU C Library; if not, write to the Free
  68721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68722. - 02111-1307 USA. */
  68723. + License along with the GNU C Library; if not, see
  68724. + <http://www.gnu.org/licenses/>. */
  68725. #ifndef _SYS_MMAN_H
  68726. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  68727. @@ -66,7 +65,7 @@
  68728. # define MAP_LOCKED 0x8000 /* pages are locked */
  68729. # define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
  68730. # define MAP_NONBLOCK 0x20000 /* do not block on IO */
  68731. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  68732. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  68733. be uninitialized. */
  68734. #endif
  68735. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/msq.h uClibc/libc/sysdeps/linux/mips/bits/msq.h
  68736. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  68737. +++ uClibc/libc/sysdeps/linux/mips/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  68738. @@ -12,9 +12,8 @@
  68739. Lesser General Public License for more details.
  68740. You should have received a copy of the GNU Lesser General Public
  68741. - License along with the GNU C Library; if not, write to the Free
  68742. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68743. - 02111-1307 USA. */
  68744. + License along with the GNU C Library; if not, see
  68745. + <http://www.gnu.org/licenses/>. */
  68746. #ifndef _SYS_MSG_H
  68747. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  68748. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/poll.h uClibc/libc/sysdeps/linux/mips/bits/poll.h
  68749. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  68750. +++ uClibc/libc/sysdeps/linux/mips/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  68751. @@ -12,9 +12,8 @@
  68752. Lesser General Public License for more details.
  68753. You should have received a copy of the GNU Lesser General Public
  68754. - License along with the GNU C Library; if not, write to the Free
  68755. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68756. - 02111-1307 USA. */
  68757. + License along with the GNU C Library; if not, see
  68758. + <http://www.gnu.org/licenses/>. */
  68759. #ifndef _SYS_POLL_H
  68760. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  68761. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/resource.h uClibc/libc/sysdeps/linux/mips/bits/resource.h
  68762. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  68763. +++ uClibc/libc/sysdeps/linux/mips/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  68764. @@ -14,9 +14,8 @@
  68765. Lesser General Public License for more details.
  68766. You should have received a copy of the GNU Lesser General Public
  68767. - License along with the GNU C Library; if not, write to the Free
  68768. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68769. - 02111-1307 USA. */
  68770. + License along with the GNU C Library; if not, see
  68771. + <http://www.gnu.org/licenses/>. */
  68772. #ifndef _SYS_RESOURCE_H
  68773. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  68774. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sem.h uClibc/libc/sysdeps/linux/mips/bits/sem.h
  68775. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  68776. +++ uClibc/libc/sysdeps/linux/mips/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  68777. @@ -12,9 +12,8 @@
  68778. Lesser General Public License for more details.
  68779. You should have received a copy of the GNU Lesser General Public
  68780. - License along with the GNU C Library; if not, write to the Free
  68781. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68782. - 02111-1307 USA. */
  68783. + License along with the GNU C Library; if not, see
  68784. + <http://www.gnu.org/licenses/>. */
  68785. #ifndef _SYS_SEM_H
  68786. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  68787. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/setjmp.h uClibc/libc/sysdeps/linux/mips/bits/setjmp.h
  68788. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  68789. +++ uClibc/libc/sysdeps/linux/mips/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  68790. @@ -13,9 +13,8 @@
  68791. Lesser General Public License for more details.
  68792. You should have received a copy of the GNU Lesser General Public
  68793. - License along with the GNU C Library; if not, write to the Free
  68794. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68795. - 02111-1307 USA. */
  68796. + License along with the GNU C Library; if not, see
  68797. + <http://www.gnu.org/licenses/>. */
  68798. #ifndef _BITS_SETJMP_H
  68799. #define _BITS_SETJMP_H 1
  68800. @@ -26,13 +25,19 @@
  68801. #include <sgidefs.h>
  68802. +#if _MIPS_SIM == _MIPS_SIM_ABI32
  68803. +#define ptrsize void *
  68804. +#else
  68805. +#define ptrsize long long
  68806. +#endif
  68807. +
  68808. typedef struct
  68809. {
  68810. /* Program counter. */
  68811. - void * __pc;
  68812. + ptrsize __pc;
  68813. /* Stack pointer. */
  68814. - void * __sp;
  68815. + ptrsize __sp;
  68816. /* Callee-saved registers s0 through s7. */
  68817. #if _MIPS_SIM == _MIPS_SIM_ABI32
  68818. @@ -42,10 +47,10 @@
  68819. #endif
  68820. /* The frame pointer. */
  68821. - void * __fp;
  68822. + ptrsize __fp;
  68823. /* The global pointer. */
  68824. - void * __gp;
  68825. + ptrsize __gp;
  68826. /* Floating point status register. */
  68827. int __fpc_csr;
  68828. @@ -58,15 +63,4 @@
  68829. #endif /* N32 || O32 */
  68830. } __jmp_buf[1];
  68831. -#ifdef __USE_MISC
  68832. -/* Offset to the program counter in `jmp_buf'. */
  68833. -# define JB_PC 0
  68834. -#endif
  68835. -
  68836. -
  68837. -/* Test if longjmp to JMPBUF would unwind the frame
  68838. - containing a local variable at ADDRESS. */
  68839. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  68840. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  68841. -
  68842. #endif /* bits/setjmp.h */
  68843. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/shm.h uClibc/libc/sysdeps/linux/mips/bits/shm.h
  68844. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  68845. +++ uClibc/libc/sysdeps/linux/mips/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  68846. @@ -12,9 +12,8 @@
  68847. Lesser General Public License for more details.
  68848. You should have received a copy of the GNU Lesser General Public
  68849. - License along with the GNU C Library; if not, write to the Free
  68850. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68851. - 02111-1307 USA. */
  68852. + License along with the GNU C Library; if not, see
  68853. + <http://www.gnu.org/licenses/>. */
  68854. #ifndef _SYS_SHM_H
  68855. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  68856. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigaction.h uClibc/libc/sysdeps/linux/mips/bits/sigaction.h
  68857. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  68858. +++ uClibc/libc/sysdeps/linux/mips/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  68859. @@ -14,9 +14,8 @@
  68860. Lesser General Public License for more details.
  68861. You should have received a copy of the GNU Lesser General Public
  68862. - License along with the GNU C Library; if not, write to the Free
  68863. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68864. - 02111-1307 USA. */
  68865. + License along with the GNU C Library; if not, see
  68866. + <http://www.gnu.org/licenses/>. */
  68867. #ifndef _SIGNAL_H
  68868. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  68869. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontext.h uClibc/libc/sysdeps/linux/mips/bits/sigcontext.h
  68870. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  68871. +++ uClibc/libc/sysdeps/linux/mips/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  68872. @@ -12,9 +12,8 @@
  68873. Lesser General Public License for more details.
  68874. You should have received a copy of the GNU Lesser General Public
  68875. - License along with the GNU C Library; if not, write to the Free
  68876. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68877. - 02111-1307 USA. */
  68878. + License along with the GNU C Library; if not, see
  68879. + <http://www.gnu.org/licenses/>. */
  68880. #ifndef _BITS_SIGCONTEXT_H
  68881. #define _BITS_SIGCONTEXT_H 1
  68882. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/mips/bits/sigcontextinfo.h
  68883. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  68884. +++ uClibc/libc/sysdeps/linux/mips/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  68885. @@ -13,9 +13,8 @@
  68886. Lesser General Public License for more details.
  68887. You should have received a copy of the GNU Lesser General Public
  68888. - License along with the GNU C Library; if not, write to the Free
  68889. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68890. - 02111-1307 USA. */
  68891. + License along with the GNU C Library; if not, see
  68892. + <http://www.gnu.org/licenses/>. */
  68893. #include <sgidefs.h>
  68894. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/siginfo.h uClibc/libc/sysdeps/linux/mips/bits/siginfo.h
  68895. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  68896. +++ uClibc/libc/sysdeps/linux/mips/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  68897. @@ -14,9 +14,8 @@
  68898. Lesser General Public License for more details.
  68899. You should have received a copy of the GNU Lesser General Public
  68900. - License along with the GNU C Library; if not, write to the Free
  68901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68902. - 02111-1307 USA. */
  68903. + License along with the GNU C Library; if not, see
  68904. + <http://www.gnu.org/licenses/>. */
  68905. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  68906. && !defined __need_sigevent_t
  68907. @@ -265,8 +264,11 @@
  68908. /* Structure to transport application-defined values with signals. */
  68909. # define __SIGEV_MAX_SIZE 64
  68910. -# define __SIGEV_HEAD_SIZE (sizeof(long) + 2*sizeof(int))
  68911. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE - __SIGEV_HEAD_SIZE) / sizeof (int))
  68912. +# if __WORDSIZE == 64
  68913. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  68914. +# else
  68915. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  68916. +# endif
  68917. /* Forward declaration of the `pthread_attr_t' type. */
  68918. struct __pthread_attr_s;
  68919. @@ -282,6 +284,10 @@
  68920. {
  68921. int _pad[__SIGEV_PAD_SIZE];
  68922. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  68923. + thread to receive the signal. */
  68924. + __pid_t _tid;
  68925. +
  68926. struct
  68927. {
  68928. void (*_function) (sigval_t); /* Function to start. */
  68929. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/signum.h uClibc/libc/sysdeps/linux/mips/bits/signum.h
  68930. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  68931. +++ uClibc/libc/sysdeps/linux/mips/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  68932. @@ -13,9 +13,8 @@
  68933. Lesser General Public License for more details.
  68934. You should have received a copy of the GNU Lesser General Public
  68935. - License along with the GNU C Library; if not, write to the Free
  68936. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68937. - 02111-1307 USA. */
  68938. + License along with the GNU C Library; if not, see
  68939. + <http://www.gnu.org/licenses/>. */
  68940. #ifdef _SIGNAL_H
  68941. @@ -54,7 +53,20 @@
  68942. #define SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */
  68943. #define SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */
  68944. -/* Biggest signal number + 1 (including real-time signals). */
  68945. -#define _NSIG 129
  68946. +/* MIPS is special by having 128 signals.
  68947. + * All (?) other architectures have at most 64 signals.
  68948. + * Having 128 signals is problematic because signal nos are 1-based
  68949. + * and last signal number is then 128.
  68950. + * This plays havoc with WIFSIGNALED and WCOREDUMP in waitpid status word,
  68951. + * when process dies from signal 128.
  68952. + * Linux kernel 3.9 accepts signal 128, with awful results :/
  68953. + * It is being fixed.
  68954. + *
  68955. + * glibc (accidentally?) papers over this issue by declaring _NSIG to be 128,
  68956. + * not 129 (despite claiming that _NSIG is "biggest signal number + 1"
  68957. + * in the comment above that definition). We follow suit.
  68958. + * Note that this results in __SIGRTMAX == 127. It is intended.
  68959. + */
  68960. +#define _NSIG 128
  68961. #endif /* <signal.h> included. */
  68962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigstack.h uClibc/libc/sysdeps/linux/mips/bits/sigstack.h
  68963. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  68964. +++ uClibc/libc/sysdeps/linux/mips/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  68965. @@ -13,9 +13,8 @@
  68966. Lesser General Public License for more details.
  68967. You should have received a copy of the GNU Lesser General Public
  68968. - License along with the GNU C Library; if not, write to the Free
  68969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68970. - 02111-1307 USA. */
  68971. + License along with the GNU C Library; if not, see
  68972. + <http://www.gnu.org/licenses/>. */
  68973. #ifndef _SIGNAL_H
  68974. # error "Never include this file directly. Use <signal.h> instead"
  68975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket.h uClibc/libc/sysdeps/linux/mips/bits/socket.h
  68976. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  68977. +++ uClibc/libc/sysdeps/linux/mips/bits/socket.h 1970-01-01 01:00:00.000000000 +0100
  68978. @@ -1,369 +0,0 @@
  68979. -/* System-specific socket constants and types. Linux/MIPS version.
  68980. - Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006
  68981. - Free Software Foundation, Inc.
  68982. - This file is part of the GNU C Library.
  68983. -
  68984. - The GNU C Library is free software; you can redistribute it and/or
  68985. - modify it under the terms of the GNU Lesser General Public
  68986. - License as published by the Free Software Foundation; either
  68987. - version 2.1 of the License, or (at your option) any later version.
  68988. -
  68989. - The GNU C Library is distributed in the hope that it will be useful,
  68990. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  68991. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68992. - Lesser General Public License for more details.
  68993. -
  68994. - You should have received a copy of the GNU Lesser General Public
  68995. - License along with the GNU C Library; if not, write to the Free
  68996. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68997. - 02111-1307 USA. */
  68998. -
  68999. -#ifndef __BITS_SOCKET_H
  69000. -#define __BITS_SOCKET_H
  69001. -
  69002. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  69003. -# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  69004. -#endif
  69005. -
  69006. -#define __need_size_t
  69007. -#define __need_NULL
  69008. -#include <stddef.h>
  69009. -
  69010. -#include <limits.h>
  69011. -#include <sys/types.h>
  69012. -
  69013. -/* Type for length arguments in socket calls. */
  69014. -#ifndef __socklen_t_defined
  69015. -typedef __socklen_t socklen_t;
  69016. -# define __socklen_t_defined
  69017. -#endif
  69018. -
  69019. -/* Types of sockets. */
  69020. -enum __socket_type
  69021. -{
  69022. - SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams
  69023. - of fixed maximum length. */
  69024. -#define SOCK_DGRAM SOCK_DGRAM
  69025. - SOCK_STREAM = 2, /* Sequenced, reliable, connection-based
  69026. - byte streams. */
  69027. -#define SOCK_STREAM SOCK_STREAM
  69028. - SOCK_RAW = 3, /* Raw protocol interface. */
  69029. -#define SOCK_RAW SOCK_RAW
  69030. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  69031. -#define SOCK_RDM SOCK_RDM
  69032. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  69033. - datagrams of fixed maximum length. */
  69034. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  69035. - SOCK_DCCP = 6,
  69036. -#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
  69037. - SOCK_PACKET = 10, /* Linux specific way of getting packets
  69038. - at the dev level. For writing rarp and
  69039. - other similar things on the user level. */
  69040. -#define SOCK_PACKET SOCK_PACKET
  69041. - /* Flags to be ORed into the type parameter of socket and socketpair and
  69042. - used for the flags parameter of paccept. */
  69043. -
  69044. - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  69045. - new descriptor(s). */
  69046. -#define SOCK_CLOEXEC SOCK_CLOEXEC
  69047. - SOCK_NONBLOCK = 0200 /* Atomically mark descriptor(s) as
  69048. - non-blocking. */
  69049. -#define SOCK_NONBLOCK SOCK_NONBLOCK
  69050. -};
  69051. -
  69052. -/* Protocol families. */
  69053. -#define PF_UNSPEC 0 /* Unspecified. */
  69054. -#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
  69055. -#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
  69056. -#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
  69057. -#define PF_INET 2 /* IP protocol family. */
  69058. -#define PF_AX25 3 /* Amateur Radio AX.25. */
  69059. -#define PF_IPX 4 /* Novell Internet Protocol. */
  69060. -#define PF_APPLETALK 5 /* Appletalk DDP. */
  69061. -#define PF_NETROM 6 /* Amateur radio NetROM. */
  69062. -#define PF_BRIDGE 7 /* Multiprotocol bridge. */
  69063. -#define PF_ATMPVC 8 /* ATM PVCs. */
  69064. -#define PF_X25 9 /* Reserved for X.25 project. */
  69065. -#define PF_INET6 10 /* IP version 6. */
  69066. -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
  69067. -#define PF_DECnet 12 /* Reserved for DECnet project. */
  69068. -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
  69069. -#define PF_SECURITY 14 /* Security callback pseudo AF. */
  69070. -#define PF_KEY 15 /* PF_KEY key management API. */
  69071. -#define PF_NETLINK 16
  69072. -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
  69073. -#define PF_PACKET 17 /* Packet family. */
  69074. -#define PF_ASH 18 /* Ash. */
  69075. -#define PF_ECONET 19 /* Acorn Econet. */
  69076. -#define PF_ATMSVC 20 /* ATM SVCs. */
  69077. -#define PF_SNA 22 /* Linux SNA Project */
  69078. -#define PF_IRDA 23 /* IRDA sockets. */
  69079. -#define PF_PPPOX 24 /* PPPoX sockets. */
  69080. -#define PF_WANPIPE 25 /* Wanpipe API sockets. */
  69081. -#define PF_LLC 26 /* Linux LLC. */
  69082. -#define PF_CAN 29 /* Controller Area Network. */
  69083. -#define PF_TIPC 30 /* TIPC sockets. */
  69084. -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  69085. -#define PF_IUCV 32 /* IUCV sockets. */
  69086. -#define PF_RXRPC 33 /* RxRPC sockets. */
  69087. -#define PF_ISDN 34 /* mISDN sockets. */
  69088. -#define PF_PHONET 35 /* Phonet sockets. */
  69089. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  69090. -#define PF_CAIF 37 /* CAIF sockets. */
  69091. -#define PF_ALG 38 /* Algorithm sockets. */
  69092. -#define PF_MAX 39 /* For now.. */
  69093. -
  69094. -/* Address families. */
  69095. -#define AF_UNSPEC PF_UNSPEC
  69096. -#define AF_LOCAL PF_LOCAL
  69097. -#define AF_UNIX PF_UNIX
  69098. -#define AF_FILE PF_FILE
  69099. -#define AF_INET PF_INET
  69100. -#define AF_AX25 PF_AX25
  69101. -#define AF_IPX PF_IPX
  69102. -#define AF_APPLETALK PF_APPLETALK
  69103. -#define AF_NETROM PF_NETROM
  69104. -#define AF_BRIDGE PF_BRIDGE
  69105. -#define AF_ATMPVC PF_ATMPVC
  69106. -#define AF_X25 PF_X25
  69107. -#define AF_INET6 PF_INET6
  69108. -#define AF_ROSE PF_ROSE
  69109. -#define AF_DECnet PF_DECnet
  69110. -#define AF_NETBEUI PF_NETBEUI
  69111. -#define AF_SECURITY PF_SECURITY
  69112. -#define AF_KEY PF_KEY
  69113. -#define AF_NETLINK PF_NETLINK
  69114. -#define AF_ROUTE PF_ROUTE
  69115. -#define AF_PACKET PF_PACKET
  69116. -#define AF_ASH PF_ASH
  69117. -#define AF_ECONET PF_ECONET
  69118. -#define AF_ATMSVC PF_ATMSVC
  69119. -#define AF_SNA PF_SNA
  69120. -#define AF_IRDA PF_IRDA
  69121. -#define AF_PPPOX PF_PPPOX
  69122. -#define AF_WANPIPE PF_WANPIPE
  69123. -#define AF_LLC PF_LLC
  69124. -#define AF_CAN PF_CAN
  69125. -#define AF_TIPC PF_TIPC
  69126. -#define AF_BLUETOOTH PF_BLUETOOTH
  69127. -#define AF_IUCV PF_IUCV
  69128. -#define AF_RXRPC PF_RXRPC
  69129. -#define AF_ISDN PF_ISDN
  69130. -#define AF_PHONET PF_PHONET
  69131. -#define AF_IEEE802154 PF_IEEE802154
  69132. -#define AF_CAIF PF_CAIF
  69133. -#define AF_ALG PF_ALG
  69134. -#define AF_MAX PF_MAX
  69135. -
  69136. -/* Socket level values. Others are defined in the appropriate headers.
  69137. -
  69138. - XXX These definitions also should go into the appropriate headers as
  69139. - far as they are available. */
  69140. -#define SOL_RAW 255
  69141. -#define SOL_DECNET 261
  69142. -#define SOL_X25 262
  69143. -#define SOL_PACKET 263
  69144. -#define SOL_ATM 264 /* ATM layer (cell level). */
  69145. -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
  69146. -#define SOL_IRDA 266
  69147. -
  69148. -/* Maximum queue length specifiable by listen. */
  69149. -#define SOMAXCONN 128
  69150. -
  69151. -/* Get the definition of the macro to define the common sockaddr members. */
  69152. -#include <bits/sockaddr.h>
  69153. -
  69154. -/* Structure describing a generic socket address. */
  69155. -struct sockaddr
  69156. - {
  69157. - __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
  69158. - char sa_data[14]; /* Address data. */
  69159. - };
  69160. -
  69161. -
  69162. -/* Structure large enough to hold any socket address (with the historical
  69163. - exception of AF_UNIX). We reserve 128 bytes. */
  69164. -#define __ss_aligntype unsigned long int
  69165. -#define _SS_SIZE 128
  69166. -#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
  69167. -
  69168. -struct sockaddr_storage
  69169. - {
  69170. - __SOCKADDR_COMMON (ss_); /* Address family, etc. */
  69171. - __ss_aligntype __ss_align; /* Force desired alignment. */
  69172. - char __ss_padding[_SS_PADSIZE];
  69173. - };
  69174. -
  69175. -
  69176. -/* Bits in the FLAGS argument to `send', `recv', et al. */
  69177. -enum
  69178. - {
  69179. - MSG_OOB = 0x01, /* Process out-of-band data. */
  69180. -#define MSG_OOB MSG_OOB
  69181. - MSG_PEEK = 0x02, /* Peek at incoming messages. */
  69182. -#define MSG_PEEK MSG_PEEK
  69183. - MSG_DONTROUTE = 0x04, /* Don't use local routing. */
  69184. -#define MSG_DONTROUTE MSG_DONTROUTE
  69185. -#ifdef __USE_GNU
  69186. - /* DECnet uses a different name. */
  69187. - MSG_TRYHARD = MSG_DONTROUTE,
  69188. -# define MSG_TRYHARD MSG_DONTROUTE
  69189. -#endif
  69190. - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
  69191. -#define MSG_CTRUNC MSG_CTRUNC
  69192. - MSG_PROXY = 0x10, /* Supply or ask second address. */
  69193. -#define MSG_PROXY MSG_PROXY
  69194. - MSG_TRUNC = 0x20,
  69195. -#define MSG_TRUNC MSG_TRUNC
  69196. - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
  69197. -#define MSG_DONTWAIT MSG_DONTWAIT
  69198. - MSG_EOR = 0x80, /* End of record. */
  69199. -#define MSG_EOR MSG_EOR
  69200. - MSG_WAITALL = 0x100, /* Wait for a full request. */
  69201. -#define MSG_WAITALL MSG_WAITALL
  69202. - MSG_FIN = 0x200,
  69203. -#define MSG_FIN MSG_FIN
  69204. - MSG_SYN = 0x400,
  69205. -#define MSG_SYN MSG_SYN
  69206. - MSG_CONFIRM = 0x800, /* Confirm path validity. */
  69207. -#define MSG_CONFIRM MSG_CONFIRM
  69208. - MSG_RST = 0x1000,
  69209. -#define MSG_RST MSG_RST
  69210. - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
  69211. -#define MSG_ERRQUEUE MSG_ERRQUEUE
  69212. - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  69213. -#define MSG_NOSIGNAL MSG_NOSIGNAL
  69214. - MSG_MORE = 0x8000, /* Sender will send more. */
  69215. -#define MSG_MORE MSG_MORE
  69216. - MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
  69217. -#define MSG_WAITFORONE MSG_WAITFORONE
  69218. -
  69219. - MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
  69220. - descriptor received through
  69221. - SCM_RIGHTS. */
  69222. -#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
  69223. - };
  69224. -
  69225. -
  69226. -/* Structure describing messages sent by
  69227. - `sendmsg' and received by `recvmsg'. */
  69228. -/* Note: do not change these members to match glibc; these match the
  69229. - SuSv3 spec already (e.g. msg_iovlen/msg_controllen).
  69230. - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */
  69231. -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit
  69232. - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */
  69233. -struct msghdr
  69234. - {
  69235. - void *msg_name; /* Address to send to/receive from. */
  69236. - socklen_t msg_namelen; /* Length of address data. */
  69237. -
  69238. - struct iovec *msg_iov; /* Vector of data to send/receive into. */
  69239. -#if __WORDSIZE == 32
  69240. - int msg_iovlen; /* Number of elements in the vector. */
  69241. -#else
  69242. - size_t msg_iovlen; /* Number of elements in the vector. */
  69243. -#endif
  69244. -
  69245. - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
  69246. -#if __WORDSIZE == 32
  69247. - socklen_t msg_controllen; /* Ancillary data buffer length. */
  69248. -#else
  69249. - size_t msg_controllen; /* Ancillary data buffer length. */
  69250. -#endif
  69251. -
  69252. - int msg_flags; /* Flags on received message. */
  69253. - };
  69254. -
  69255. -/* Structure used for storage of ancillary data object information. */
  69256. -struct cmsghdr
  69257. - {
  69258. - size_t cmsg_len; /* Length of data in cmsg_data plus length
  69259. - of cmsghdr structure. */
  69260. - int cmsg_level; /* Originating protocol. */
  69261. - int cmsg_type; /* Protocol specific type. */
  69262. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  69263. - __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
  69264. -#endif
  69265. - };
  69266. -
  69267. -/* Ancillary data object manipulation macros. */
  69268. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  69269. -# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
  69270. -#else
  69271. -# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
  69272. -#endif
  69273. -#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  69274. -#define CMSG_FIRSTHDR(mhdr) \
  69275. - ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  69276. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  69277. -#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  69278. - & (size_t) ~(sizeof (size_t) - 1))
  69279. -#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  69280. - + CMSG_ALIGN (sizeof (struct cmsghdr)))
  69281. -#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
  69282. -
  69283. -extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
  69284. - struct cmsghdr *__cmsg) __THROW;
  69285. -libc_hidden_proto(__cmsg_nxthdr)
  69286. -#ifdef __USE_EXTERN_INLINES
  69287. -# ifndef _EXTERN_INLINE
  69288. -# define _EXTERN_INLINE extern __inline
  69289. -# endif
  69290. -_EXTERN_INLINE struct cmsghdr *
  69291. -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  69292. -{
  69293. - if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  69294. - /* The kernel header does this so there may be a reason. */
  69295. - return 0;
  69296. -
  69297. - __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  69298. - + CMSG_ALIGN (__cmsg->cmsg_len));
  69299. - if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
  69300. - + __mhdr->msg_controllen)
  69301. - || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  69302. - > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  69303. - /* No more entries. */
  69304. - return 0;
  69305. - return __cmsg;
  69306. -}
  69307. -#endif /* Use `extern inline'. */
  69308. -
  69309. -/* Socket level message types. This must match the definitions in
  69310. - <linux/socket.h>. */
  69311. -enum
  69312. - {
  69313. - SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  69314. -#define SCM_RIGHTS SCM_RIGHTS
  69315. -#ifdef __USE_BSD
  69316. - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  69317. -# define SCM_CREDENTIALS SCM_CREDENTIALS
  69318. -#endif
  69319. - };
  69320. -
  69321. -/* User visible structure for SCM_CREDENTIALS message */
  69322. -
  69323. -struct ucred
  69324. -{
  69325. - pid_t pid; /* PID of sending process. */
  69326. - uid_t uid; /* UID of sending process. */
  69327. - gid_t gid; /* GID of sending process. */
  69328. -};
  69329. -
  69330. -/* Get socket manipulation related informations from kernel headers. */
  69331. -#ifndef __GLIBC__
  69332. -#define __GLIBC__ 2
  69333. -#include <asm/socket.h>
  69334. -#undef __GLIBC__
  69335. -#else
  69336. -#include <asm/socket.h>
  69337. -#endif
  69338. -
  69339. -
  69340. -/* Structure used to manipulate the SO_LINGER option. */
  69341. -struct linger
  69342. - {
  69343. - int l_onoff; /* Nonzero to linger on close. */
  69344. - int l_linger; /* Time to linger. */
  69345. - };
  69346. -
  69347. -#endif /* bits/socket.h */
  69348. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket_type.h uClibc/libc/sysdeps/linux/mips/bits/socket_type.h
  69349. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  69350. +++ uClibc/libc/sysdeps/linux/mips/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  69351. @@ -0,0 +1,55 @@
  69352. +/* System-specific socket constants and types. Linux/MIPS version.
  69353. + Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006
  69354. + Free Software Foundation, Inc.
  69355. + This file is part of the GNU C Library.
  69356. +
  69357. + The GNU C Library is free software; you can redistribute it and/or
  69358. + modify it under the terms of the GNU Lesser General Public
  69359. + License as published by the Free Software Foundation; either
  69360. + version 2.1 of the License, or (at your option) any later version.
  69361. +
  69362. + The GNU C Library is distributed in the hope that it will be useful,
  69363. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69364. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69365. + Lesser General Public License for more details.
  69366. +
  69367. + You should have received a copy of the GNU Lesser General Public
  69368. + License along with the GNU C Library; if not, see
  69369. + <http://www.gnu.org/licenses/>. */
  69370. +
  69371. +#ifndef _SYS_SOCKET_H
  69372. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  69373. +#endif
  69374. +
  69375. +/* Types of sockets. */
  69376. +enum __socket_type
  69377. +{
  69378. + SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams
  69379. + of fixed maximum length. */
  69380. +#define SOCK_DGRAM SOCK_DGRAM
  69381. + SOCK_STREAM = 2, /* Sequenced, reliable, connection-based
  69382. + byte streams. */
  69383. +#define SOCK_STREAM SOCK_STREAM
  69384. + SOCK_RAW = 3, /* Raw protocol interface. */
  69385. +#define SOCK_RAW SOCK_RAW
  69386. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  69387. +#define SOCK_RDM SOCK_RDM
  69388. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  69389. + datagrams of fixed maximum length. */
  69390. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  69391. + SOCK_DCCP = 6,
  69392. +#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
  69393. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  69394. + at the dev level. For writing rarp and
  69395. + other similar things on the user level. */
  69396. +#define SOCK_PACKET SOCK_PACKET
  69397. +
  69398. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  69399. +
  69400. + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  69401. + new descriptor(s). */
  69402. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  69403. + SOCK_NONBLOCK = 00000200 /* Atomically mark descriptor(s) as
  69404. + non-blocking. */
  69405. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  69406. +};
  69407. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stackinfo.h uClibc/libc/sysdeps/linux/mips/bits/stackinfo.h
  69408. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  69409. +++ uClibc/libc/sysdeps/linux/mips/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  69410. @@ -12,9 +12,8 @@
  69411. Lesser General Public License for more details.
  69412. You should have received a copy of the GNU Lesser General Public
  69413. - License along with the GNU C Library; if not, write to the Free
  69414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69415. - 02111-1307 USA. */
  69416. + License along with the GNU C Library; if not, see
  69417. + <http://www.gnu.org/licenses/>. */
  69418. /* This file contains a bit of information about the stack allocation
  69419. of the processor. */
  69420. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/statfs.h uClibc/libc/sysdeps/linux/mips/bits/statfs.h
  69421. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  69422. +++ uClibc/libc/sysdeps/linux/mips/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  69423. @@ -12,9 +12,8 @@
  69424. Lesser General Public License for more details.
  69425. You should have received a copy of the GNU Lesser General Public
  69426. - License along with the GNU C Library; if not, write to the Free
  69427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69428. - 02111-1307 USA. */
  69429. + License along with the GNU C Library; if not, see
  69430. + <http://www.gnu.org/licenses/>. */
  69431. #ifndef _SYS_STATFS_H
  69432. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  69433. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stat.h uClibc/libc/sysdeps/linux/mips/bits/stat.h
  69434. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  69435. +++ uClibc/libc/sysdeps/linux/mips/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  69436. @@ -13,9 +13,8 @@
  69437. Lesser General Public License for more details.
  69438. You should have received a copy of the GNU Lesser General Public
  69439. - License along with the GNU C Library; if not, write to the Free
  69440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69441. - 02111-1307 USA. */
  69442. + License along with the GNU C Library; if not, see
  69443. + <http://www.gnu.org/licenses/>. */
  69444. #ifndef _SYS_STAT_H
  69445. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  69446. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/syscalls.h uClibc/libc/sysdeps/linux/mips/bits/syscalls.h
  69447. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  69448. +++ uClibc/libc/sysdeps/linux/mips/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  69449. @@ -29,7 +29,7 @@
  69450. } \
  69451. result_var; })
  69452. -#define INTERNAL_SYSCALL_DECL(err) long err
  69453. +#define INTERNAL_SYSCALL_DECL(err) long err attribute_unused
  69454. #define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
  69455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/termios.h uClibc/libc/sysdeps/linux/mips/bits/termios.h
  69456. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  69457. +++ uClibc/libc/sysdeps/linux/mips/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  69458. @@ -13,9 +13,8 @@
  69459. Lesser General Public License for more details.
  69460. You should have received a copy of the GNU Lesser General Public
  69461. - License along with the GNU C Library; if not, write to the Free
  69462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69463. - 02111-1307 USA. */
  69464. + License along with the GNU C Library; if not, see
  69465. + <http://www.gnu.org/licenses/>. */
  69466. #ifndef _TERMIOS_H
  69467. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  69468. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
  69469. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  69470. +++ uClibc/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  69471. @@ -4,6 +4,7 @@
  69472. #ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  69473. #define _BITS_UCLIBC_ARCH_FEATURES_H
  69474. +#include <sgidefs.h>
  69475. /* instruction used when calling abort() to kill yourself */
  69476. #define __UCLIBC_ABORT_INSTRUCTION__ "break 255"
  69477. @@ -11,8 +12,12 @@
  69478. /* can your target use syscall6() for mmap ? */
  69479. #define __UCLIBC_MMAP_HAS_6_ARGS__
  69480. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  69481. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  69482. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  69483. +#if _MIPS_SIM == _ABIO32
  69484. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  69485. +#else
  69486. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  69487. +#endif
  69488. /* does your target have a broken create_module() ? */
  69489. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  69490. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_page.h uClibc/libc/sysdeps/linux/mips/bits/uClibc_page.h
  69491. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  69492. +++ uClibc/libc/sysdeps/linux/mips/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  69493. @@ -11,8 +11,8 @@
  69494. * Library General Public License for more details.
  69495. *
  69496. * You should have received a copy of the GNU Library General Public
  69497. - * License along with this library; if not, write to the Free
  69498. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  69499. + * License along with this library; if not, see
  69500. + * <http://www.gnu.org/licenses/>.
  69501. */
  69502. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  69503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/wordsize.h uClibc/libc/sysdeps/linux/mips/bits/wordsize.h
  69504. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  69505. +++ uClibc/libc/sysdeps/linux/mips/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  69506. @@ -12,8 +12,7 @@
  69507. Lesser General Public License for more details.
  69508. You should have received a copy of the GNU Lesser General Public
  69509. - License along with the GNU C Library; if not, write to the Free
  69510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69511. - 02111-1307 USA. */
  69512. + License along with the GNU C Library; if not, see
  69513. + <http://www.gnu.org/licenses/>. */
  69514. #define __WORDSIZE _MIPS_SZPTR
  69515. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/brk.c uClibc/libc/sysdeps/linux/mips/brk.c
  69516. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/brk.c 2012-05-15 09:20:09.000000000 +0200
  69517. +++ uClibc/libc/sysdeps/linux/mips/brk.c 2014-02-03 12:32:56.000000000 +0100
  69518. @@ -13,9 +13,8 @@
  69519. Lesser General Public License for more details.
  69520. You should have received a copy of the GNU Lesser General Public
  69521. - License along with the GNU C Library; if not, write to the Free
  69522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69523. - 02111-1307 USA. */
  69524. + License along with the GNU C Library; if not, see
  69525. + <http://www.gnu.org/licenses/>. */
  69526. #include <errno.h>
  69527. #include <unistd.h>
  69528. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-_setjmp.S uClibc/libc/sysdeps/linux/mips/bsd-_setjmp.S
  69529. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  69530. +++ uClibc/libc/sysdeps/linux/mips/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  69531. @@ -13,9 +13,8 @@
  69532. Lesser General Public License for more details.
  69533. You should have received a copy of the GNU Lesser General Public
  69534. - License along with the GNU C Library; if not, write to the Free
  69535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69536. - 02111-1307 USA. */
  69537. + License along with the GNU C Library; if not, see
  69538. + <http://www.gnu.org/licenses/>. */
  69539. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  69540. We cannot do it in C because it must be a tail-call, so frame-unwinding
  69541. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-setjmp.S uClibc/libc/sysdeps/linux/mips/bsd-setjmp.S
  69542. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  69543. +++ uClibc/libc/sysdeps/linux/mips/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  69544. @@ -13,9 +13,8 @@
  69545. Lesser General Public License for more details.
  69546. You should have received a copy of the GNU Lesser General Public
  69547. - License along with the GNU C Library; if not, write to the Free
  69548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69549. - 02111-1307 USA. */
  69550. + License along with the GNU C Library; if not, see
  69551. + <http://www.gnu.org/licenses/>. */
  69552. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  69553. We cannot do it in C because it must be a tail-call, so frame-unwinding
  69554. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/cacheflush.c uClibc/libc/sysdeps/linux/mips/cacheflush.c
  69555. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  69556. +++ uClibc/libc/sysdeps/linux/mips/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  69557. @@ -12,19 +12,18 @@
  69558. Lesser General Public License for more details.
  69559. You should have received a copy of the GNU Lesser General Public
  69560. - License along with the uClibc Library; if not, write to the Free
  69561. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69562. - 02111-1307 USA. */
  69563. + License along with the uClibc Library; if not, see
  69564. + <http://www.gnu.org/licenses/>. */
  69565. -#include <errno.h>
  69566. -#include <unistd.h>
  69567. #include <sys/syscall.h>
  69568. #ifdef __NR_cacheflush
  69569. +# include <sys/cachectl.h>
  69570. _syscall3(int, cacheflush, void *, addr, const int, nbytes, const int, op)
  69571. -strong_alias(cacheflush, _flush_cache)
  69572. +strong_alias_untyped(cacheflush, _flush_cache)
  69573. #endif
  69574. #ifdef __NR_cachectl
  69575. +# include <sys/cachectl.h>
  69576. _syscall3(int, cachectl, void *, addr, const int, nbytes, const int, op)
  69577. #endif
  69578. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/clone.S uClibc/libc/sysdeps/linux/mips/clone.S
  69579. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/clone.S 2012-05-15 09:20:09.000000000 +0200
  69580. +++ uClibc/libc/sysdeps/linux/mips/clone.S 2014-02-03 12:32:56.000000000 +0100
  69581. @@ -13,9 +13,8 @@
  69582. Lesser General Public License for more details.
  69583. You should have received a copy of the GNU Lesser General Public
  69584. - License along with the GNU C Library; if not, write to the Free
  69585. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69586. - 02111-1307 USA. */
  69587. + License along with the GNU C Library; if not, see
  69588. + <http://www.gnu.org/licenses/>. */
  69589. /* clone() is even more special than fork() as it mucks with stacks
  69590. and invokes a function in the right context after its all over. */
  69591. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/crt1.S uClibc/libc/sysdeps/linux/mips/crt1.S
  69592. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/crt1.S 2012-05-15 09:20:09.000000000 +0200
  69593. +++ uClibc/libc/sysdeps/linux/mips/crt1.S 2014-02-03 12:32:56.000000000 +0100
  69594. @@ -31,9 +31,8 @@
  69595. Lesser General Public License for more details.
  69596. You should have received a copy of the GNU Lesser General Public
  69597. - License along with the GNU C Library; if not, write to the Free
  69598. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69599. - 02111-1307 USA. */
  69600. + License along with the GNU C Library; if not, see
  69601. + <http://www.gnu.org/licenses/>. */
  69602. #include <sys/regdef.h>
  69603. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/fpu_control.h uClibc/libc/sysdeps/linux/mips/fpu_control.h
  69604. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  69605. +++ uClibc/libc/sysdeps/linux/mips/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  69606. @@ -14,9 +14,8 @@
  69607. Lesser General Public License for more details.
  69608. You should have received a copy of the GNU Lesser General Public
  69609. - License along with the GNU C Library; if not, write to the Free
  69610. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69611. - 02111-1307 USA. */
  69612. + License along with the GNU C Library; if not, see
  69613. + <http://www.gnu.org/licenses/>. */
  69614. #ifndef _FPU_CONTROL_H
  69615. #define _FPU_CONTROL_H
  69616. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/getcontext.S uClibc/libc/sysdeps/linux/mips/getcontext.S
  69617. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  69618. +++ uClibc/libc/sysdeps/linux/mips/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  69619. @@ -0,0 +1,148 @@
  69620. +/* Save current context.
  69621. + Copyright (C) 2009 Free Software Foundation, Inc.
  69622. + This file is part of the GNU C Library.
  69623. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  69624. +
  69625. + The GNU C Library is free software; you can redistribute it and/or
  69626. + modify it under the terms of the GNU Lesser General Public
  69627. + License as published by the Free Software Foundation; either
  69628. + version 2.1 of the License, or (at your option) any later version.
  69629. +
  69630. + The GNU C Library is distributed in the hope that it will be useful,
  69631. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69632. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69633. + Lesser General Public License for more details.
  69634. +
  69635. + You should have received a copy of the GNU Lesser General Public
  69636. + License along with the GNU C Library. If not, see
  69637. + <http://www.gnu.org/licenses/>. */
  69638. +
  69639. +#include <sysdep.h>
  69640. +#include <sys/asm.h>
  69641. +#include <sys/fpregdef.h>
  69642. +#include <sys/regdef.h>
  69643. +
  69644. +#include "ucontext_i.h"
  69645. +
  69646. +/* int getcontext (ucontext_t *ucp) */
  69647. +
  69648. + .text
  69649. +LOCALSZ = 0
  69650. +MASK = 0x00000000
  69651. +#ifdef __PIC__
  69652. +LOCALSZ = 1 /* save gp */
  69653. +# if _MIPS_SIM != _ABIO32
  69654. +MASK = 0x10000000
  69655. +# endif
  69656. +#endif
  69657. +FRAMESZ = ((LOCALSZ * SZREG) + ALSZ) & ALMASK
  69658. +GPOFF = FRAMESZ - (1 * SZREG)
  69659. +
  69660. +NESTED (__getcontext, FRAMESZ, ra)
  69661. + .mask MASK, 0
  69662. + .fmask 0x00000000, 0
  69663. +
  69664. +#ifdef __PIC__
  69665. + SETUP_GP
  69666. +
  69667. + move a2, sp
  69668. +# define _SP a2
  69669. +
  69670. +# if _MIPS_SIM != _ABIO32
  69671. + move a3, gp
  69672. +# define _GP a3
  69673. +# endif
  69674. +
  69675. + PTR_ADDIU sp, -FRAMESZ
  69676. + SETUP_GP64 (GPOFF, __getcontext)
  69677. + SAVE_GP (GPOFF)
  69678. +
  69679. +#else /* ! __PIC__ */
  69680. +# define _SP sp
  69681. +# define _GP gp
  69682. +
  69683. +#endif /* ! __PIC__ */
  69684. +
  69685. +#ifdef PROF
  69686. + .set noat
  69687. + move AT, ra
  69688. + jal _mcount
  69689. + .set at
  69690. +#endif
  69691. +
  69692. + /* Store a magic flag. */
  69693. + li v1, 1
  69694. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  69695. +
  69696. + REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
  69697. + REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
  69698. + REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
  69699. + REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
  69700. + REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
  69701. + REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
  69702. + REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
  69703. + REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
  69704. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  69705. + REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
  69706. +#endif
  69707. + REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
  69708. + REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
  69709. + REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
  69710. + REG_S ra, MCONTEXT_PC(a0)
  69711. +
  69712. +#ifdef __mips_hard_float
  69713. +# if _MIPS_SIM == _ABI64
  69714. + s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  69715. + s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
  69716. + s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  69717. + s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
  69718. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  69719. + s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
  69720. + s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  69721. + s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
  69722. +
  69723. +# else /* _MIPS_SIM != _ABI64 */
  69724. + s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
  69725. + s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
  69726. + s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  69727. + s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  69728. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  69729. + s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  69730. +
  69731. +# endif /* _MIPS_SIM != _ABI64 */
  69732. +
  69733. + cfc1 v1, fcr31
  69734. + sw v1, MCONTEXT_FPC_CSR(a0)
  69735. +#endif /* __mips_hard_float */
  69736. +
  69737. +/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
  69738. + li a3, _NSIG8
  69739. + PTR_ADDU a2, a0, UCONTEXT_SIGMASK
  69740. + move a1, zero
  69741. + li a0, SIG_BLOCK
  69742. +
  69743. + li v0, SYS_ify (rt_sigprocmask)
  69744. + syscall
  69745. + bnez a3, 99f
  69746. +
  69747. +#ifdef __PIC__
  69748. + RESTORE_GP64
  69749. + PTR_ADDIU sp, FRAMESZ
  69750. +#endif
  69751. + move v0, zero
  69752. + jr ra
  69753. +
  69754. +99:
  69755. +#ifdef __PIC__
  69756. + PTR_LA t9, JUMPTARGET (__syscall_error)
  69757. + RESTORE_GP64
  69758. + PTR_ADDIU sp, FRAMESZ
  69759. + jr t9
  69760. +
  69761. +#else /* ! __PIC__ */
  69762. +
  69763. + j JUMPTARGET (__syscall_error)
  69764. +#endif /* ! __PIC__ */
  69765. +PSEUDO_END (__getcontext)
  69766. +
  69767. +weak_alias (__getcontext, getcontext)
  69768. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/mips/jmpbuf-unwind.h
  69769. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  69770. +++ uClibc/libc/sysdeps/linux/mips/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  69771. @@ -0,0 +1,22 @@
  69772. +/*
  69773. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  69774. + *
  69775. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69776. + */
  69777. +#include <setjmp.h>
  69778. +
  69779. +/* Test if longjmp to JMPBUF would unwind the frame
  69780. + containing a local variable at ADDRESS. */
  69781. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  69782. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  69783. +
  69784. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  69785. +#include <stdint.h>
  69786. +#include <unwind.h>
  69787. +
  69788. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  69789. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  69790. +
  69791. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  69792. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].__sp - (_adj))
  69793. +#endif
  69794. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/kernel_rt_sigframe.h uClibc/libc/sysdeps/linux/mips/kernel_rt_sigframe.h
  69795. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/kernel_rt_sigframe.h 1970-01-01 01:00:00.000000000 +0100
  69796. +++ uClibc/libc/sysdeps/linux/mips/kernel_rt_sigframe.h 2014-02-03 12:32:56.000000000 +0100
  69797. @@ -0,0 +1,10 @@
  69798. +/* Linux kernel RT signal frame. */
  69799. +typedef struct kernel_rt_sigframe
  69800. + {
  69801. + uint32_t rs_ass[4];
  69802. + uint32_t rs_code[2];
  69803. + siginfo_t rs_info;
  69804. + struct ucontext rs_uc;
  69805. + uint32_t rs_altcode[8] __attribute__ ((__aligned__ (1 << 7)));
  69806. + }
  69807. +kernel_rt_sigframe_t;
  69808. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/__longjmp.c uClibc/libc/sysdeps/linux/mips/__longjmp.c
  69809. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/__longjmp.c 2012-05-15 09:20:09.000000000 +0200
  69810. +++ uClibc/libc/sysdeps/linux/mips/__longjmp.c 2014-02-03 12:32:56.000000000 +0100
  69811. @@ -13,9 +13,8 @@
  69812. Lesser General Public License for more details.
  69813. You should have received a copy of the GNU Lesser General Public
  69814. - License along with the GNU C Library; if not, write to the Free
  69815. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69816. - 02111-1307 USA. */
  69817. + License along with the GNU C Library; if not, see
  69818. + <http://www.gnu.org/licenses/>. */
  69819. #include <features.h>
  69820. #include <setjmp.h>
  69821. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/makecontext.S uClibc/libc/sysdeps/linux/mips/makecontext.S
  69822. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/makecontext.S 1970-01-01 01:00:00.000000000 +0100
  69823. +++ uClibc/libc/sysdeps/linux/mips/makecontext.S 2014-02-03 12:32:56.000000000 +0100
  69824. @@ -0,0 +1,188 @@
  69825. +/* Modify saved context.
  69826. + Copyright (C) 2009 Free Software Foundation, Inc.
  69827. + This file is part of the GNU C Library.
  69828. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  69829. +
  69830. + The GNU C Library is free software; you can redistribute it and/or
  69831. + modify it under the terms of the GNU Lesser General Public
  69832. + License as published by the Free Software Foundation; either
  69833. + version 2.1 of the License, or (at your option) any later version.
  69834. +
  69835. + The GNU C Library is distributed in the hope that it will be useful,
  69836. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69837. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69838. + Lesser General Public License for more details.
  69839. +
  69840. + You should have received a copy of the GNU Lesser General Public
  69841. + License along with the GNU C Library. If not, see
  69842. + <http://www.gnu.org/licenses/>. */
  69843. +
  69844. +#include <sysdep.h>
  69845. +#include <sys/asm.h>
  69846. +#include <sys/fpregdef.h>
  69847. +#include <sys/regdef.h>
  69848. +
  69849. +#include "ucontext_i.h"
  69850. +
  69851. +/* int makecontext (ucontext_t *ucp, (void *func) (), int argc, ...) */
  69852. +
  69853. + .text
  69854. +LOCALSZ = 0
  69855. +ARGSZ = 0
  69856. +MASK = 0x00000000
  69857. +#ifdef __PIC__
  69858. +LOCALSZ = 1 /* save gp */
  69859. +#endif
  69860. +#if _MIPS_SIM != _ABIO32
  69861. +ARGSZ = 5 /* save a3-a7 */
  69862. +# ifdef __PIC__
  69863. +MASK = 0x10000000
  69864. +# endif
  69865. +#endif
  69866. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  69867. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  69868. +#if _MIPS_SIM != _ABIO32
  69869. +A3OFF = FRAMESZ - (5 * SZREG) /* callee-allocated */
  69870. +A4OFF = FRAMESZ - (4 * SZREG)
  69871. +A5OFF = FRAMESZ - (3 * SZREG)
  69872. +A6OFF = FRAMESZ - (2 * SZREG)
  69873. +A7OFF = FRAMESZ - (1 * SZREG)
  69874. +NARGREGS = 8
  69875. +#else
  69876. +A3OFF = FRAMESZ + (3 * SZREG) /* caller-allocated */
  69877. +NARGREGS = 4
  69878. +#endif
  69879. +
  69880. +NESTED (__makecontext, FRAMESZ, ra)
  69881. + .mask MASK, -(ARGSZ * SZREG)
  69882. + .fmask 0x00000000, 0
  69883. +
  69884. +98:
  69885. +#ifdef __PIC__
  69886. + SETUP_GP
  69887. +#endif
  69888. +
  69889. + PTR_ADDIU sp, -FRAMESZ
  69890. +
  69891. +#ifdef __PIC__
  69892. + SETUP_GP64 (GPOFF, __makecontext)
  69893. + SAVE_GP (GPOFF)
  69894. +#endif
  69895. +
  69896. +#ifdef PROF
  69897. + .set noat
  69898. + move AT, ra
  69899. + jal _mcount
  69900. + .set at
  69901. +#endif
  69902. +
  69903. + /* Store args to be passed. */
  69904. + REG_S a3, A3OFF(sp)
  69905. +#if _MIPS_SIM != _ABIO32
  69906. + REG_S a4, A4OFF(sp)
  69907. + REG_S a5, A5OFF(sp)
  69908. + REG_S a6, A6OFF(sp)
  69909. + REG_S a7, A7OFF(sp)
  69910. +#endif
  69911. +
  69912. + /* Store a magic flag. */
  69913. + li v1, 1
  69914. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  69915. +
  69916. + /* Set up the stack. */
  69917. + PTR_L t0, STACK_SP(a0)
  69918. + PTR_L t2, STACK_SIZE(a0)
  69919. + PTR_ADDIU t1, sp, A3OFF
  69920. + PTR_ADDU t0, t2
  69921. + and t0, ALMASK
  69922. + blez a2, 2f /* no arguments */
  69923. +
  69924. + /* Store register arguments. */
  69925. + PTR_ADDIU t2, a0, MCONTEXT_GREGS + 4 * SZREG
  69926. + move t3, zero
  69927. +0:
  69928. + addiu t3, 1
  69929. + REG_L v1, (t1)
  69930. + PTR_ADDIU t1, SZREG
  69931. + REG_S v1, (t2)
  69932. + PTR_ADDIU t2, SZREG
  69933. + bgeu t3, a2, 2f /* all done */
  69934. + bltu t3, NARGREGS, 0b /* next */
  69935. +
  69936. + /* Make room for stack arguments. */
  69937. + PTR_SUBU t2, a2, t3
  69938. + PTR_SLL t2, 3
  69939. + PTR_SUBU t0, t2
  69940. + and t0, ALMASK
  69941. +
  69942. + /* Store stack arguments. */
  69943. + move t2, t0
  69944. +1:
  69945. + addiu t3, 1
  69946. + REG_L v1, (t1)
  69947. + PTR_ADDIU t1, SZREG
  69948. + REG_S v1, (t2)
  69949. + PTR_ADDIU t2, SZREG
  69950. + bltu t3, a2, 1b /* next */
  69951. +
  69952. +2:
  69953. +#if _MIPS_SIM == _ABIO32
  69954. + /* Make room for a0-a3 storage. */
  69955. + PTR_ADDIU t0, -(NARGSAVE * SZREG)
  69956. +#endif
  69957. + PTR_L v1, UCONTEXT_LINK(a0)
  69958. +#ifdef __PIC__
  69959. + PTR_ADDIU t9, 99f - 98b
  69960. +#else
  69961. + PTR_LA t9, 99f
  69962. +#endif
  69963. + REG_S t0, (29 * SZREG + MCONTEXT_GREGS)(a0) /* sp */
  69964. + REG_S v1, (16 * SZREG + MCONTEXT_GREGS)(a0) /* s0 */
  69965. +#ifdef __PIC__
  69966. + REG_S gp, (17 * SZREG + MCONTEXT_GREGS)(a0) /* s1 */
  69967. +#endif
  69968. + REG_S t9, (31 * SZREG + MCONTEXT_GREGS)(a0) /* ra */
  69969. + REG_S a1, MCONTEXT_PC(a0)
  69970. +
  69971. +#ifdef __PIC__
  69972. + RESTORE_GP64
  69973. + PTR_ADDIU sp, FRAMESZ
  69974. +#endif
  69975. + jr ra
  69976. +
  69977. +99:
  69978. +#ifdef __PIC__
  69979. + move gp, s1
  69980. +#endif
  69981. + move a0, zero
  69982. + beqz s0, 0f
  69983. +
  69984. + /* setcontext (ucp) */
  69985. + move a0, s0
  69986. +#ifdef __PIC__
  69987. + PTR_LA t9, JUMPTARGET (__setcontext)
  69988. + jalr t9
  69989. +# if _MIPS_SIM == _ABIO32
  69990. + move gp, s1
  69991. +# endif
  69992. +#else
  69993. + jal JUMPTARGET (__setcontext)
  69994. +#endif
  69995. + move a0, v0
  69996. +
  69997. +0:
  69998. + /* exit (a0) */
  69999. +#ifdef __PIC__
  70000. + PTR_LA t9, HIDDEN_JUMPTARGET (exit)
  70001. + jalr t9
  70002. +#else
  70003. + jal HIDDEN_JUMPTARGET (exit)
  70004. +#endif
  70005. +
  70006. + /* You don't exist, you won't feel anything. */
  70007. +1:
  70008. + lb zero, (zero)
  70009. + b 1b
  70010. +PSEUDO_END (__makecontext)
  70011. +
  70012. +weak_alias (__makecontext, makecontext)
  70013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/Makefile.arch uClibc/libc/sysdeps/linux/mips/Makefile.arch
  70014. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  70015. +++ uClibc/libc/sysdeps/linux/mips/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  70016. @@ -5,20 +5,18 @@
  70017. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70018. #
  70019. -CSRC := \
  70020. - __longjmp.c brk.c setjmp_aux.c mmap.c \
  70021. - cacheflush.c pread_write.c sigaction.c sysmips.c _test_and_set.c \
  70022. - readahead.c
  70023. -
  70024. -SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
  70025. -
  70026. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  70027. -CSRC += posix_fadvise.c posix_fadvise64.c
  70028. -endif
  70029. -
  70030. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  70031. -SSRC += vfork.S clone.S
  70032. -endif
  70033. +CSRC-y := \
  70034. + __longjmp.c brk.c setjmp_aux.c \
  70035. + pread_write.c sigaction.c _test_and_set.c
  70036. +
  70037. +SSRC-y := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
  70038. +
  70039. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c sysmips.c
  70040. +CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise.c
  70041. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_LFS)$(UCLIBC_HAS_ADVANCED_REALTIME)),y) += posix_fadvise64.c
  70042. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  70043. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.S setcontext.S getcontext.S \
  70044. + swapcontext.S
  70045. ASFLAGS-syscall_error.S += -D_LIBC_REENTRANT
  70046. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/mmap.c uClibc/libc/sysdeps/linux/mips/mmap.c
  70047. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/mmap.c 2012-05-15 09:20:09.000000000 +0200
  70048. +++ uClibc/libc/sysdeps/linux/mips/mmap.c 1970-01-01 01:00:00.000000000 +0100
  70049. @@ -1,26 +0,0 @@
  70050. -/* Use new style mmap for mips */
  70051. -/*
  70052. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  70053. - *
  70054. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70055. - */
  70056. -
  70057. -#include <unistd.h>
  70058. -#include <errno.h>
  70059. -#include <sys/mman.h>
  70060. -#include <sys/syscall.h>
  70061. -
  70062. -
  70063. -#if 0
  70064. -/* For now, leave mmap using mmap1 since mmap2 seems
  70065. - * to have issues (i.e. it doesn't work 100% properly).
  70066. - */
  70067. -#ifdef __NR_mmap2
  70068. -# undef __NR_mmap
  70069. -# define __NR_mmap __NR_mmap2
  70070. -#endif
  70071. -#endif
  70072. -
  70073. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  70074. - int, flags, int, fd, __off_t, offset)
  70075. -libc_hidden_def(mmap)
  70076. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise64.c uClibc/libc/sysdeps/linux/mips/posix_fadvise64.c
  70077. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  70078. +++ uClibc/libc/sysdeps/linux/mips/posix_fadvise64.c 2014-02-03 12:32:56.000000000 +0100
  70079. @@ -8,36 +8,28 @@
  70080. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70081. */
  70082. -#include <features.h>
  70083. -#include <unistd.h>
  70084. -#include <errno.h>
  70085. -#include <endian.h>
  70086. -#include <stdint.h>
  70087. -#include <sys/types.h>
  70088. +#include <_lfs_64.h>
  70089. #include <sys/syscall.h>
  70090. -#include <fcntl.h>
  70091. +#include <bits/wordsize.h>
  70092. -#ifdef __UCLIBC_HAS_LFS__
  70093. +/* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  70094. +#if defined __NR_fadvise64 && __WORDSIZE == 32
  70095. +# include <fcntl.h>
  70096. +# include <endian.h>
  70097. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  70098. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice)
  70099. {
  70100. -/* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  70101. -#ifdef __NR_fadvise64
  70102. INTERNAL_SYSCALL_DECL(err);
  70103. -# if _MIPS_SIM == _MIPS_SIM_ABI32
  70104. +# if _MIPS_SIM == _ABIO32
  70105. int ret = INTERNAL_SYSCALL(fadvise64, err, 7, fd, 0,
  70106. - __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  70107. - __LONG_LONG_PAIR ((long) (len >> 32), (long) len),
  70108. - advice);
  70109. + __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  70110. + __LONG_LONG_PAIR ((long) (len >> 32), (long) len),
  70111. + advice);
  70112. # else /* N32 || N64 */
  70113. int ret = INTERNAL_SYSCALL(fadvise64, err, 4, fd, offset, len, advice);
  70114. # endif
  70115. if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  70116. return INTERNAL_SYSCALL_ERRNO (ret, err);
  70117. return 0;
  70118. -#else
  70119. - return ENOSYS;
  70120. -#endif
  70121. }
  70122. -
  70123. -#endif /* __UCLIBC_HAS_LFS__ */
  70124. +#endif
  70125. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise.c uClibc/libc/sysdeps/linux/mips/posix_fadvise.c
  70126. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  70127. +++ uClibc/libc/sysdeps/linux/mips/posix_fadvise.c 2014-02-03 12:32:56.000000000 +0100
  70128. @@ -8,19 +8,16 @@
  70129. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70130. */
  70131. -#include <features.h>
  70132. -#include <unistd.h>
  70133. -#include <errno.h>
  70134. -#include <endian.h>
  70135. -#include <stdint.h>
  70136. -#include <sys/types.h>
  70137. #include <sys/syscall.h>
  70138. -#include <fcntl.h>
  70139. -int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  70140. -{
  70141. /* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  70142. #ifdef __NR_fadvise64
  70143. +# include <fcntl.h>
  70144. +# include <endian.h>
  70145. +# include <bits/wordsize.h>
  70146. +
  70147. +int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  70148. +{
  70149. INTERNAL_SYSCALL_DECL(err);
  70150. # if _MIPS_SIM == _ABIO32
  70151. int ret = INTERNAL_SYSCALL(fadvise64, err, 7, fd, 0,
  70152. @@ -33,7 +30,9 @@
  70153. if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  70154. return INTERNAL_SYSCALL_ERRNO (ret, err);
  70155. return 0;
  70156. -#else
  70157. - return ENOSYS;
  70158. -#endif
  70159. }
  70160. +# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  70161. +strong_alias(posix_fadvise,posix_fadvise64)
  70162. +# endif
  70163. +
  70164. +#endif
  70165. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/pread_write.c uClibc/libc/sysdeps/linux/mips/pread_write.c
  70166. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  70167. +++ uClibc/libc/sysdeps/linux/mips/pread_write.c 2014-02-03 12:32:56.000000000 +0100
  70168. @@ -4,112 +4,28 @@
  70169. *
  70170. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70171. */
  70172. -/*
  70173. - * Based in part on the files
  70174. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  70175. - * ./sysdeps/unix/sysv/linux/pread.c,
  70176. - * sysdeps/posix/pread.c
  70177. - * sysdeps/posix/pwrite.c
  70178. - * from GNU libc 2.2.5, but reworked considerably...
  70179. - */
  70180. #include <sys/syscall.h>
  70181. #include <unistd.h>
  70182. -#include <stdint.h>
  70183. #include <endian.h>
  70184. #include <sgidefs.h>
  70185. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  70186. -# ifdef __NR_pread
  70187. -# error "__NR_pread and __NR_pread64 both defined???"
  70188. -# endif
  70189. -# define __NR_pread __NR_pread64
  70190. -#endif
  70191. -
  70192. -extern __typeof(pread) __libc_pread;
  70193. -extern __typeof(pwrite) __libc_pwrite;
  70194. -#ifdef __UCLIBC_HAS_LFS__
  70195. -extern __typeof(pread64) __libc_pread64;
  70196. -extern __typeof(pwrite64) __libc_pwrite64;
  70197. -#endif
  70198. -
  70199. -#include <bits/kernel_types.h>
  70200. -
  70201. -
  70202. -#ifdef __NR_pread
  70203. -
  70204. -# if _MIPS_SIM == _MIPS_SIM_ABI64
  70205. -# define __NR___libc_pread __NR_pread
  70206. -_syscall4(ssize_t, __libc_pread, int, fd, void *, buf, size_t, count, off_t, offset)
  70207. -weak_alias (__libc_pread, pread)
  70208. -# ifdef __UCLIBC_HAS_LFS__
  70209. -# define __NR___libc_pread64 __NR_pread
  70210. -_syscall4(ssize_t, __libc_pread64, int, fd, void *, buf, size_t, count, off64_t, offset)
  70211. -weak_alias (__libc_pread64, pread64)
  70212. -# endif /* __UCLIBC_HAS_LFS__ */
  70213. -# else /* O32 || N32 */
  70214. -# define __NR___syscall_pread __NR_pread
  70215. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  70216. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  70217. -
  70218. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  70219. -{
  70220. - return(__syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset>>31,offset)));
  70221. -}
  70222. -weak_alias(__libc_pread,pread)
  70223. -
  70224. -# ifdef __UCLIBC_HAS_LFS__
  70225. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  70226. -{
  70227. - uint32_t low = offset & 0xffffffff;
  70228. - uint32_t high = offset >> 32;
  70229. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low)));
  70230. -}
  70231. -weak_alias(__libc_pread64,pread64)
  70232. -# endif /* __UCLIBC_HAS_LFS__ */
  70233. -# endif /* O32 || N32 */
  70234. -
  70235. -#endif /* __NR_pread */
  70236. -
  70237. -/**********************************************************************/
  70238. -
  70239. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  70240. -# ifdef __NR_pwrite
  70241. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  70242. -# endif
  70243. -# define __NR_pwrite __NR_pwrite64
  70244. +/* We should generalize this for 32bit userlands w/64bit regs. This applies
  70245. + * to the x86_64 x32 and the mips n32 ABIs. */
  70246. +#if _MIPS_SIM == _MIPS_SIM_NABI32
  70247. +# define __NR___syscall_pread __NR_pread
  70248. +static _syscall4(ssize_t, __syscall_pread, int, fd, void *, buf, size_t, count, off_t, offset)
  70249. +# define MY_PREAD(fd, buf, count, offset) \
  70250. + __syscall_pread(fd, buf, count, offset)
  70251. +# define MY_PREAD64(fd, buf, count, offset) \
  70252. + __syscall_pread(fd, buf, count, offset)
  70253. +
  70254. +# define __NR___syscall_pwrite __NR_pwrite
  70255. +static _syscall4(ssize_t, __syscall_pwrite, int, fd, const void *, buf, size_t, count, off_t, offset)
  70256. +# define MY_PWRITE(fd, buf, count, offset) \
  70257. + __syscall_pwrite(fd, buf, count, offset)
  70258. +# define MY_PWRITE64(fd, buf, count, offset) \
  70259. + __syscall_pwrite(fd, buf, count, offset)
  70260. #endif
  70261. -#ifdef __NR_pwrite
  70262. -
  70263. -# if _MIPS_SIM == _MIPS_SIM_ABI64
  70264. -# define __NR___libc_pwrite __NR_pwrite
  70265. -_syscall4(ssize_t, __libc_pwrite, int, fd, const void *, buf, size_t, count, off_t, offset)
  70266. -weak_alias (__libc_pwrite, pwrite)
  70267. -# ifdef __UCLIBC_HAS_LFS__
  70268. -# define __NR___libc_pwrite64 __NR_pwrite
  70269. -_syscall4(ssize_t, __libc_pwrite64, int, fd, const void *, buf, size_t, count, off64_t, offset)
  70270. -weak_alias (__libc_pwrite64, pwrite64)
  70271. -# endif /* __UCLIBC_HAS_LFS__ */
  70272. -# else /* O32 || N32 */
  70273. -# define __NR___syscall_pwrite __NR_pwrite
  70274. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  70275. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  70276. -
  70277. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  70278. -{
  70279. - return(__syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset>>31,offset)));
  70280. -}
  70281. -weak_alias(__libc_pwrite,pwrite)
  70282. -
  70283. -# ifdef __UCLIBC_HAS_LFS__
  70284. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  70285. -{
  70286. - uint32_t low = offset & 0xffffffff;
  70287. - uint32_t high = offset >> 32;
  70288. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low)));
  70289. -}
  70290. -weak_alias(__libc_pwrite64,pwrite64)
  70291. -# endif /* __UCLIBC_HAS_LFS__ */
  70292. -# endif /* O32 || N32 */
  70293. -#endif /* __NR_pwrite */
  70294. +#include "../common/pread_write.c"
  70295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/readahead.c uClibc/libc/sysdeps/linux/mips/readahead.c
  70296. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/readahead.c 2012-05-15 09:20:09.000000000 +0200
  70297. +++ uClibc/libc/sysdeps/linux/mips/readahead.c 1970-01-01 01:00:00.000000000 +0100
  70298. @@ -1,41 +0,0 @@
  70299. -/* Provide kernel hint to read ahead.
  70300. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
  70301. - This file is part of the GNU C Library.
  70302. -
  70303. - The GNU C Library is free software; you can redistribute it and/or
  70304. - modify it under the terms of the GNU Lesser General Public
  70305. - License as published by the Free Software Foundation; either
  70306. - version 2.1 of the License, or (at your option) any later version.
  70307. -
  70308. - The GNU C Library is distributed in the hope that it will be useful,
  70309. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  70310. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  70311. - Lesser General Public License for more details.
  70312. -
  70313. - You should have received a copy of the GNU Lesser General Public
  70314. - License along with the GNU C Library; if not, write to the Free
  70315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70316. - 02111-1307 USA. */
  70317. -
  70318. -#include <errno.h>
  70319. -#include <fcntl.h>
  70320. -#include <sys/types.h>
  70321. -#include <sys/syscall.h>
  70322. -
  70323. -#ifdef __UCLIBC_HAS_LFS__
  70324. -#include <_lfs_64.h>
  70325. -# ifdef __NR_readahead
  70326. -
  70327. -ssize_t readahead(int fd, off64_t offset, size_t count)
  70328. -{
  70329. -# if _MIPS_SIM == _ABIO32
  70330. - return INLINE_SYSCALL (readahead, 5, fd, 0,
  70331. - __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) offset),
  70332. - count);
  70333. -# else /* N32 || N64 */
  70334. - return INLINE_SYSCALL (readahead, 3, fd, offset, count);
  70335. -# endif
  70336. -}
  70337. -
  70338. -# endif
  70339. -#endif
  70340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setcontext.S uClibc/libc/sysdeps/linux/mips/setcontext.S
  70341. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  70342. +++ uClibc/libc/sysdeps/linux/mips/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  70343. @@ -0,0 +1,191 @@
  70344. +/* Set current context.
  70345. + Copyright (C) 2009 Free Software Foundation, Inc.
  70346. + This file is part of the GNU C Library.
  70347. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  70348. +
  70349. + The GNU C Library is free software; you can redistribute it and/or
  70350. + modify it under the terms of the GNU Lesser General Public
  70351. + License as published by the Free Software Foundation; either
  70352. + version 2.1 of the License, or (at your option) any later version.
  70353. +
  70354. + The GNU C Library is distributed in the hope that it will be useful,
  70355. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  70356. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  70357. + Lesser General Public License for more details.
  70358. +
  70359. + You should have received a copy of the GNU Lesser General Public
  70360. + License along with the GNU C Library. If not, see
  70361. + <http://www.gnu.org/licenses/>. */
  70362. +
  70363. +#include <sysdep.h>
  70364. +#include <sys/asm.h>
  70365. +#include <sys/fpregdef.h>
  70366. +#include <sys/regdef.h>
  70367. +
  70368. +#include "ucontext_i.h"
  70369. +
  70370. +/* int setcontext (const ucontext_t *ucp) */
  70371. +
  70372. + .text
  70373. +LOCALSZ = 0
  70374. +ARGSZ = 0
  70375. +MASK = 0x00000000
  70376. +#ifdef __PIC__
  70377. +LOCALSZ = 1 /* save gp */
  70378. +#endif
  70379. +#if _MIPS_SIM != _ABIO32
  70380. +ARGSZ = 1 /* save a0 */
  70381. +# ifdef __PIC__
  70382. +MASK = 0x10000000
  70383. +# endif
  70384. +#endif
  70385. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  70386. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  70387. +#if _MIPS_SIM != _ABIO32
  70388. +A0OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
  70389. +#else
  70390. +A0OFF = FRAMESZ + (0 * SZREG) /* caller-allocated */
  70391. +#endif
  70392. +
  70393. +NESTED (__setcontext, FRAMESZ, ra)
  70394. + .mask MASK, -(ARGSZ * SZREG)
  70395. + .fmask 0x00000000, 0
  70396. +
  70397. +#ifdef __PIC__
  70398. + SETUP_GP
  70399. +#endif
  70400. +
  70401. + PTR_ADDIU sp, -FRAMESZ
  70402. +
  70403. +#ifdef __PIC__
  70404. + SETUP_GP64 (GPOFF, __setcontext)
  70405. + SAVE_GP (GPOFF)
  70406. +#endif
  70407. +
  70408. +#ifdef PROF
  70409. + .set noat
  70410. + move AT, ra
  70411. + jal _mcount
  70412. + .set at
  70413. +#endif
  70414. +
  70415. + /* Check for the magic flag. */
  70416. + li v0, 1
  70417. + REG_L v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  70418. + bne v0, v1, 98f
  70419. +
  70420. + REG_S a0, A0OFF(sp)
  70421. +
  70422. +/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
  70423. + li a3, _NSIG8
  70424. + move a2, zero
  70425. + PTR_ADDU a1, a0, UCONTEXT_SIGMASK
  70426. + li a0, SIG_SETMASK
  70427. +
  70428. + li v0, SYS_ify (rt_sigprocmask)
  70429. + syscall
  70430. + bnez a3, 99f
  70431. +
  70432. + REG_L v0, A0OFF(sp)
  70433. +
  70434. +#ifdef __mips_hard_float
  70435. +# if _MIPS_SIM == _ABI64
  70436. + l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70437. + l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
  70438. + l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70439. + l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
  70440. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70441. + l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
  70442. + l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70443. + l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
  70444. +
  70445. +# else /* _MIPS_SIM != _ABI64 */
  70446. + l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
  70447. + l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
  70448. + l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70449. + l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70450. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70451. + l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70452. +
  70453. +# endif /* _MIPS_SIM != _ABI64 */
  70454. +
  70455. + lw v1, MCONTEXT_FPC_CSR(v0)
  70456. + ctc1 v1, fcr31
  70457. +#endif /* __mips_hard_float */
  70458. +
  70459. + /* Note the contents of argument registers will be random
  70460. + unless makecontext() has been called. */
  70461. + REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
  70462. + REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
  70463. + REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
  70464. + REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
  70465. +#if _MIPS_SIM != _ABIO32
  70466. + REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
  70467. + REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
  70468. + REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
  70469. + REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
  70470. +#endif
  70471. +
  70472. + REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
  70473. + REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
  70474. + REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
  70475. + REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
  70476. + REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
  70477. + REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
  70478. + REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
  70479. + REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
  70480. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  70481. + REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
  70482. +#endif
  70483. + REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
  70484. + REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
  70485. + REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
  70486. + REG_L t9, MCONTEXT_PC(v0)
  70487. +
  70488. + move v0, zero
  70489. + jr t9
  70490. +
  70491. +98:
  70492. + /* This is a context obtained from a signal handler.
  70493. + Perform a full restore by pushing the context
  70494. + passed onto a simulated signal frame on the stack
  70495. + and call the signal return syscall as if a signal
  70496. + handler exited normally. */
  70497. + PTR_ADDIU sp, -((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
  70498. +
  70499. + /* Only ucontext is referred to from rt_sigreturn,
  70500. + copy it. */
  70501. + PTR_ADDIU t1, sp, RT_SIGFRAME_UCONTEXT
  70502. + li t3, ((UCONTEXT_SIZE + SZREG - 1) / SZREG) - 1
  70503. +0:
  70504. + REG_L t2, (a0)
  70505. + PTR_ADDIU a0, SZREG
  70506. + REG_S t2, (t1)
  70507. + PTR_ADDIU t1, SZREG
  70508. + .set noreorder
  70509. + bgtz t3, 0b
  70510. + addiu t3, -1
  70511. + .set reorder
  70512. +
  70513. +/* rt_sigreturn () -- no arguments, sp points to struct rt_sigframe. */
  70514. + li v0, SYS_ify (rt_sigreturn)
  70515. + syscall
  70516. +
  70517. + /* Restore the stack and fall through to the error
  70518. + path. Successful rt_sigreturn never returns to
  70519. + its calling place. */
  70520. + PTR_ADDIU sp, ((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
  70521. +99:
  70522. +#ifdef __PIC__
  70523. + PTR_LA t9, JUMPTARGET (__syscall_error)
  70524. + RESTORE_GP64
  70525. + PTR_ADDIU sp, FRAMESZ
  70526. + jr t9
  70527. +
  70528. +#else /* ! __PIC__ */
  70529. +
  70530. + j JUMPTARGET (__syscall_error)
  70531. +#endif /* ! __PIC__ */
  70532. +PSEUDO_END (__setcontext)
  70533. +
  70534. +weak_alias (__setcontext, setcontext)
  70535. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp_aux.c uClibc/libc/sysdeps/linux/mips/setjmp_aux.c
  70536. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp_aux.c 2012-05-15 09:20:09.000000000 +0200
  70537. +++ uClibc/libc/sysdeps/linux/mips/setjmp_aux.c 2014-02-03 12:32:56.000000000 +0100
  70538. @@ -13,9 +13,8 @@
  70539. Lesser General Public License for more details.
  70540. You should have received a copy of the GNU Lesser General Public
  70541. - License along with the GNU C Library; if not, write to the Free
  70542. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70543. - 02111-1307 USA. */
  70544. + License along with the GNU C Library; if not, see
  70545. + <http://www.gnu.org/licenses/>. */
  70546. #include <features.h>
  70547. #include <setjmp.h>
  70548. @@ -27,11 +26,9 @@
  70549. pointer. We do things this way because it's difficult to reliably
  70550. access them in C. */
  70551. -extern int __sigjmp_save (sigjmp_buf, int);
  70552. -
  70553. int
  70554. #if _MIPS_SIM == _MIPS_SIM_ABI64
  70555. -__sigsetjmp_aux (jmp_buf env, int savemask, long sp, long fp)
  70556. +__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp, long long gp)
  70557. #else /* O32 || N32 */
  70558. __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
  70559. #endif /* O32 || N32 */
  70560. @@ -65,14 +62,14 @@
  70561. #endif
  70562. /* .. and the stack pointer; */
  70563. - env[0].__jmpbuf[0].__sp = (void *) sp;
  70564. + env[0].__jmpbuf[0].__sp = (ptrsize) sp;
  70565. /* .. and the FP; it'll be in s8. */
  70566. - env[0].__jmpbuf[0].__fp = (void *) fp;
  70567. + env[0].__jmpbuf[0].__fp = (ptrsize) fp;
  70568. /* .. and the GP; */
  70569. #if _MIPS_SIM == _MIPS_SIM_ABI64
  70570. - __asm__ __volatile__ ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
  70571. + env[0].__jmpbuf[0].__gp = (ptrsize) gp;
  70572. #else
  70573. __asm__ __volatile__ ("sw $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
  70574. #endif
  70575. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp.S uClibc/libc/sysdeps/linux/mips/setjmp.S
  70576. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  70577. +++ uClibc/libc/sysdeps/linux/mips/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  70578. @@ -12,9 +12,8 @@
  70579. Lesser General Public License for more details.
  70580. You should have received a copy of the GNU Lesser General Public
  70581. - License along with the GNU C Library; if not, write to the Free
  70582. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70583. - 02111-1307 USA. */
  70584. + License along with the GNU C Library; if not, see
  70585. + <http://www.gnu.org/licenses/>. */
  70586. #include <sys/regdef.h>
  70587. #include <sys/asm.h>
  70588. @@ -53,6 +52,7 @@
  70589. PTR_LA t9, __sigsetjmp_aux
  70590. #if _MIPS_SIM != _MIPS_SIM_ABI32
  70591. .cpreturn
  70592. + move a4, gp
  70593. #endif
  70594. jr t9
  70595. #else
  70596. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sgidefs.h uClibc/libc/sysdeps/linux/mips/sgidefs.h
  70597. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sgidefs.h 2012-05-15 09:20:09.000000000 +0200
  70598. +++ uClibc/libc/sysdeps/linux/mips/sgidefs.h 2014-02-03 12:32:56.000000000 +0100
  70599. @@ -13,9 +13,8 @@
  70600. Lesser General Public License for more details.
  70601. You should have received a copy of the GNU Lesser General Public
  70602. - License along with the GNU C Library; if not, write to the Free
  70603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70604. - 02111-1307 USA. */
  70605. + License along with the GNU C Library; if not, see
  70606. + <http://www.gnu.org/licenses/>. */
  70607. #ifndef _SGIDEFS_H
  70608. #define _SGIDEFS_H 1
  70609. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sigaction.c uClibc/libc/sysdeps/linux/mips/sigaction.c
  70610. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  70611. +++ uClibc/libc/sysdeps/linux/mips/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  70612. @@ -13,8 +13,7 @@
  70613. You should have received a copy of the GNU Library General Public
  70614. License along with the GNU C Library; see the file COPYING.LIB. If not,
  70615. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  70616. - Boston, MA 02111-1307, USA.
  70617. + see <http://www.gnu.org/licenses/>.
  70618. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  70619. */
  70620. @@ -27,9 +26,6 @@
  70621. #define SA_RESTORER 0x04000000
  70622. -extern __typeof(sigaction) __libc_sigaction;
  70623. -
  70624. -
  70625. #ifdef __NR_rt_sigaction
  70626. # if _MIPS_SIM != _ABIO32
  70627. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/swapcontext.S uClibc/libc/sysdeps/linux/mips/swapcontext.S
  70628. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  70629. +++ uClibc/libc/sysdeps/linux/mips/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  70630. @@ -0,0 +1,211 @@
  70631. +/* Save and set current context.
  70632. + Copyright (C) 2009 Free Software Foundation, Inc.
  70633. + This file is part of the GNU C Library.
  70634. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  70635. +
  70636. + The GNU C Library is free software; you can redistribute it and/or
  70637. + modify it under the terms of the GNU Lesser General Public
  70638. + License as published by the Free Software Foundation; either
  70639. + version 2.1 of the License, or (at your option) any later version.
  70640. +
  70641. + The GNU C Library is distributed in the hope that it will be useful,
  70642. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  70643. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  70644. + Lesser General Public License for more details.
  70645. +
  70646. + You should have received a copy of the GNU Lesser General Public
  70647. + License along with the GNU C Library. If not, see
  70648. + <http://www.gnu.org/licenses/>. */
  70649. +
  70650. +#include <sysdep.h>
  70651. +#include <sys/asm.h>
  70652. +#include <sys/fpregdef.h>
  70653. +#include <sys/regdef.h>
  70654. +
  70655. +#include "ucontext_i.h"
  70656. +
  70657. +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
  70658. +
  70659. + .text
  70660. +LOCALSZ = 0
  70661. +ARGSZ = 0
  70662. +MASK = 0x00000000
  70663. +#ifdef __PIC__
  70664. +LOCALSZ = 1 /* save gp */
  70665. +#endif
  70666. +#if _MIPS_SIM != _ABIO32
  70667. +ARGSZ = 1 /* save a1 */
  70668. +# ifdef __PIC__
  70669. +MASK = 0x10000000
  70670. +# endif
  70671. +#endif
  70672. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  70673. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  70674. +#if _MIPS_SIM != _ABIO32
  70675. +A1OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
  70676. +#else
  70677. +A1OFF = FRAMESZ + (1 * SZREG) /* caller-allocated */
  70678. +#endif
  70679. +
  70680. +NESTED (__swapcontext, FRAMESZ, ra)
  70681. + .mask MASK, -(ARGSZ * SZREG)
  70682. + .fmask 0x00000000, 0
  70683. +
  70684. +#ifdef __PIC__
  70685. + SETUP_GP
  70686. +
  70687. + move a2, sp
  70688. +# define _SP a2
  70689. +
  70690. +# if _MIPS_SIM != _ABIO32
  70691. + move a3, gp
  70692. +# define _GP a3
  70693. +# endif
  70694. +
  70695. + PTR_ADDIU sp, -FRAMESZ
  70696. + SETUP_GP64 (GPOFF, __swapcontext)
  70697. + SAVE_GP (GPOFF)
  70698. +
  70699. +#else /* ! __PIC__ */
  70700. +# define _SP sp
  70701. +# define _GP gp
  70702. +
  70703. +#endif /* ! __PIC__ */
  70704. +
  70705. +#ifdef PROF
  70706. + .set noat
  70707. + move AT, ra
  70708. + jal _mcount
  70709. + .set at
  70710. +#endif
  70711. +
  70712. + /* Store a magic flag. */
  70713. + li v1, 1
  70714. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  70715. +
  70716. + REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
  70717. + REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
  70718. + REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
  70719. + REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
  70720. + REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
  70721. + REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
  70722. + REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
  70723. + REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
  70724. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  70725. + REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
  70726. +#endif
  70727. + REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
  70728. + REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
  70729. + REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
  70730. + REG_S ra, MCONTEXT_PC(a0)
  70731. +
  70732. +#ifdef __mips_hard_float
  70733. +# if _MIPS_SIM == _ABI64
  70734. + s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  70735. + s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
  70736. + s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  70737. + s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
  70738. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  70739. + s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
  70740. + s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  70741. + s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
  70742. +
  70743. +# else /* _MIPS_SIM != _ABI64 */
  70744. + s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
  70745. + s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
  70746. + s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  70747. + s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  70748. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  70749. + s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  70750. +
  70751. +# endif /* _MIPS_SIM != _ABI64 */
  70752. +
  70753. + cfc1 v1, fcr31
  70754. + sw v1, MCONTEXT_FPC_CSR(a0)
  70755. +#endif /* __mips_hard_float */
  70756. +
  70757. + REG_S a1, A1OFF(sp)
  70758. +
  70759. +/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
  70760. + li a3, _NSIG8
  70761. + PTR_ADDU a2, a0, UCONTEXT_SIGMASK
  70762. + PTR_ADDU a1, a1, UCONTEXT_SIGMASK
  70763. + li a0, SIG_SETMASK
  70764. +
  70765. + li v0, SYS_ify (rt_sigprocmask)
  70766. + syscall
  70767. + bnez a3, 99f
  70768. +
  70769. + REG_L v0, A1OFF(sp)
  70770. +
  70771. +#ifdef __mips_hard_float
  70772. +# if _MIPS_SIM == _ABI64
  70773. + l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70774. + l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
  70775. + l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70776. + l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
  70777. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70778. + l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
  70779. + l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70780. + l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
  70781. +
  70782. +# else /* _MIPS_SIM != _ABI64 */
  70783. + l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
  70784. + l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
  70785. + l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70786. + l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70787. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70788. + l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70789. +
  70790. +# endif /* _MIPS_SIM != _ABI64 */
  70791. +
  70792. + lw v1, MCONTEXT_FPC_CSR(v0)
  70793. + ctc1 v1, fcr31
  70794. +#endif /* __mips_hard_float */
  70795. +
  70796. + /* Note the contents of argument registers will be random
  70797. + unless makecontext() has been called. */
  70798. + REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
  70799. + REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
  70800. + REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
  70801. + REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
  70802. +#if _MIPS_SIM != _ABIO32
  70803. + REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
  70804. + REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
  70805. + REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
  70806. + REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
  70807. +#endif
  70808. +
  70809. + REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
  70810. + REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
  70811. + REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
  70812. + REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
  70813. + REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
  70814. + REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
  70815. + REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
  70816. + REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
  70817. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  70818. + REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
  70819. +#endif
  70820. + REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
  70821. + REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
  70822. + REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
  70823. + REG_L t9, MCONTEXT_PC(v0)
  70824. +
  70825. + move v0, zero
  70826. + jr t9
  70827. +
  70828. +99:
  70829. +#ifdef __PIC__
  70830. + PTR_LA t9, JUMPTARGET (__syscall_error)
  70831. + RESTORE_GP64
  70832. + PTR_ADDIU sp, FRAMESZ
  70833. + jr t9
  70834. +
  70835. +#else /* ! __PIC__ */
  70836. +
  70837. + j JUMPTARGET (__syscall_error)
  70838. +#endif /* ! __PIC__ */
  70839. +PSEUDO_END (__swapcontext)
  70840. +
  70841. +weak_alias (__swapcontext, swapcontext)
  70842. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/asm.h uClibc/libc/sysdeps/linux/mips/sys/asm.h
  70843. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/asm.h 2012-05-15 09:20:09.000000000 +0200
  70844. +++ uClibc/libc/sysdeps/linux/mips/sys/asm.h 2014-02-03 12:32:56.000000000 +0100
  70845. @@ -13,9 +13,8 @@
  70846. Lesser General Public License for more details.
  70847. You should have received a copy of the GNU Lesser General Public
  70848. - License along with the GNU C Library; if not, write to the Free
  70849. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70850. - 02111-1307 USA. */
  70851. + License along with the GNU C Library; if not, see
  70852. + <http://www.gnu.org/licenses/>. */
  70853. #ifndef _SYS_ASM_H
  70854. #define _SYS_ASM_H
  70855. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/cachectl.h uClibc/libc/sysdeps/linux/mips/sys/cachectl.h
  70856. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/cachectl.h 2012-05-15 09:20:09.000000000 +0200
  70857. +++ uClibc/libc/sysdeps/linux/mips/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  70858. @@ -12,9 +12,8 @@
  70859. Lesser General Public License for more details.
  70860. You should have received a copy of the GNU Lesser General Public
  70861. - License along with the GNU C Library; if not, write to the Free
  70862. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70863. - 02111-1307 USA. */
  70864. + License along with the GNU C Library; if not, see
  70865. + <http://www.gnu.org/licenses/>. */
  70866. #ifndef _SYS_CACHECTL_H
  70867. #define _SYS_CACHECTL_H 1
  70868. @@ -29,13 +28,15 @@
  70869. __BEGIN_DECLS
  70870. #ifdef __USE_MISC
  70871. -extern int cachectl (void *addr, __const int nbytes, __const int op) __THROW;
  70872. +extern int cachectl (void *addr, const int nbytes, const int op) __THROW;
  70873. +#endif
  70874. +#if 0
  70875. +extern int __cachectl (void *addr, const int nbytes, const int op) __THROW;
  70876. #endif
  70877. -extern int __cachectl (void *addr, __const int nbytes, __const int op) __THROW;
  70878. #ifdef __USE_MISC
  70879. -extern int cacheflush (void *addr, __const int nbytes, __const int op) __THROW;
  70880. +extern int cacheflush (void *addr, const int nbytes, const int op) __THROW;
  70881. #endif
  70882. -extern int _flush_cache (char *addr, __const int nbytes, __const int op) __THROW;
  70883. +extern int _flush_cache (char *addr, const int nbytes, const int op) __THROW;
  70884. __END_DECLS
  70885. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/fpregdef.h uClibc/libc/sysdeps/linux/mips/sys/fpregdef.h
  70886. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/fpregdef.h 2012-05-15 09:20:09.000000000 +0200
  70887. +++ uClibc/libc/sysdeps/linux/mips/sys/fpregdef.h 2014-02-03 12:32:56.000000000 +0100
  70888. @@ -12,9 +12,8 @@
  70889. Lesser General Public License for more details.
  70890. You should have received a copy of the GNU Lesser General Public
  70891. - License along with the GNU C Library; if not, write to the Free
  70892. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70893. - 02111-1307 USA. */
  70894. + License along with the GNU C Library; if not, see
  70895. + <http://www.gnu.org/licenses/>. */
  70896. #ifndef _SYS_FPREGDEF_H
  70897. #define _SYS_FPREGDEF_H
  70898. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/procfs.h uClibc/libc/sysdeps/linux/mips/sys/procfs.h
  70899. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  70900. +++ uClibc/libc/sysdeps/linux/mips/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  70901. @@ -12,9 +12,8 @@
  70902. Lesser General Public License for more details.
  70903. You should have received a copy of the GNU Lesser General Public
  70904. - License along with the GNU C Library; if not, write to the Free
  70905. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70906. - 02111-1307 USA. */
  70907. + License along with the GNU C Library; if not, see
  70908. + <http://www.gnu.org/licenses/>. */
  70909. #ifndef _SYS_PROCFS_H
  70910. #define _SYS_PROCFS_H 1
  70911. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/regdef.h uClibc/libc/sysdeps/linux/mips/sys/regdef.h
  70912. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/regdef.h 2012-05-15 09:20:09.000000000 +0200
  70913. +++ uClibc/libc/sysdeps/linux/mips/sys/regdef.h 2014-02-03 12:32:56.000000000 +0100
  70914. @@ -13,9 +13,8 @@
  70915. Lesser General Public License for more details.
  70916. You should have received a copy of the GNU Lesser General Public
  70917. - License along with the GNU C Library; if not, write to the Free
  70918. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70919. - 02111-1307 USA. */
  70920. + License along with the GNU C Library; if not, see
  70921. + <http://www.gnu.org/licenses/>. */
  70922. #ifndef _SYS_REGDEF_H
  70923. #define _SYS_REGDEF_H
  70924. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/sysmips.h uClibc/libc/sysdeps/linux/mips/sys/sysmips.h
  70925. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/sysmips.h 2012-05-15 09:20:09.000000000 +0200
  70926. +++ uClibc/libc/sysdeps/linux/mips/sys/sysmips.h 2014-02-03 12:32:56.000000000 +0100
  70927. @@ -12,9 +12,8 @@
  70928. Lesser General Public License for more details.
  70929. You should have received a copy of the GNU Lesser General Public
  70930. - License along with the GNU C Library; if not, write to the Free
  70931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70932. - 02111-1307 USA. */
  70933. + License along with the GNU C Library; if not, see
  70934. + <http://www.gnu.org/licenses/>. */
  70935. #ifndef _SYS_SYSMIPS_H
  70936. #define _SYS_SYSMIPS_H 1
  70937. @@ -36,8 +35,8 @@
  70938. __BEGIN_DECLS
  70939. -extern int sysmips (__const int cmd, __const long arg1,
  70940. - __const int arg2, __const int arg3) __THROW;
  70941. +extern int sysmips (const int cmd, const long arg1,
  70942. + const int arg2, const int arg3) __THROW;
  70943. __END_DECLS
  70944. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/tas.h uClibc/libc/sysdeps/linux/mips/sys/tas.h
  70945. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/tas.h 2012-05-15 09:20:09.000000000 +0200
  70946. +++ uClibc/libc/sysdeps/linux/mips/sys/tas.h 2014-02-03 12:32:56.000000000 +0100
  70947. @@ -13,9 +13,8 @@
  70948. Lesser General Public License for more details.
  70949. You should have received a copy of the GNU Lesser General Public
  70950. - License along with the GNU C Library; if not, write to the Free
  70951. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70952. - 02111-1307 USA. */
  70953. + License along with the GNU C Library; if not, see
  70954. + <http://www.gnu.org/licenses/>. */
  70955. #ifndef _SYS_TAS_H
  70956. #define _SYS_TAS_H 1
  70957. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/ucontext.h uClibc/libc/sysdeps/linux/mips/sys/ucontext.h
  70958. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  70959. +++ uClibc/libc/sysdeps/linux/mips/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  70960. @@ -12,9 +12,8 @@
  70961. Lesser General Public License for more details.
  70962. You should have received a copy of the GNU Lesser General Public
  70963. - License along with the GNU C Library; if not, write to the Free
  70964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70965. - 02111-1307 USA. */
  70966. + License along with the GNU C Library; if not, see
  70967. + <http://www.gnu.org/licenses/>. */
  70968. /* Don't rely on this, the interface is currently messed up and may need to
  70969. be broken to be fixed. */
  70970. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/user.h uClibc/libc/sysdeps/linux/mips/sys/user.h
  70971. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  70972. +++ uClibc/libc/sysdeps/linux/mips/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  70973. @@ -12,9 +12,8 @@
  70974. Lesser General Public License for more details.
  70975. You should have received a copy of the GNU Lesser General Public
  70976. - License along with the GNU C Library; if not, write to the Free
  70977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70978. - 02111-1307 USA. */
  70979. + License along with the GNU C Library; if not, see
  70980. + <http://www.gnu.org/licenses/>. */
  70981. #ifndef _SYS_USER_H
  70982. #define _SYS_USER_H 1
  70983. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall_error.S uClibc/libc/sysdeps/linux/mips/syscall_error.S
  70984. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall_error.S 2012-05-15 09:20:09.000000000 +0200
  70985. +++ uClibc/libc/sysdeps/linux/mips/syscall_error.S 2014-02-03 12:32:56.000000000 +0100
  70986. @@ -14,9 +14,8 @@
  70987. Lesser General Public License for more details.
  70988. You should have received a copy of the GNU Lesser General Public
  70989. - License along with the GNU C Library; if not, write to the Free
  70990. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70991. - 02111-1307 USA. */
  70992. + License along with the GNU C Library; if not, see
  70993. + <http://www.gnu.org/licenses/>. */
  70994. #include <sys/asm.h>
  70995. #include <sysdep.h>
  70996. @@ -43,7 +42,7 @@
  70997. #ifdef __PIC__
  70998. SAVE_GP(GPOFF)
  70999. #endif
  71000. - REG_S v0, V0OFF(sp)
  71001. + REG_S a0, V0OFF(sp)
  71002. REG_S ra, RAOFF(sp)
  71003. /* Find our per-thread errno address */
  71004. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall.S uClibc/libc/sysdeps/linux/mips/syscall.S
  71005. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall.S 2012-05-15 09:20:09.000000000 +0200
  71006. +++ uClibc/libc/sysdeps/linux/mips/syscall.S 2014-02-03 12:32:56.000000000 +0100
  71007. @@ -12,9 +12,8 @@
  71008. Lesser General Public License for more details.
  71009. You should have received a copy of the GNU Lesser General Public
  71010. - License along with the GNU C Library; if not, write to the Free
  71011. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71012. - 02111-1307 USA. */
  71013. + License along with the GNU C Library; if not, see
  71014. + <http://www.gnu.org/licenses/>. */
  71015. #include <features.h>
  71016. #include <sys/asm.h>
  71017. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sysdep.h uClibc/libc/sysdeps/linux/mips/sysdep.h
  71018. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  71019. +++ uClibc/libc/sysdeps/linux/mips/sysdep.h 2014-02-15 14:18:15.000000000 +0100
  71020. @@ -14,9 +14,8 @@
  71021. Lesser General Public License for more details.
  71022. You should have received a copy of the GNU Lesser General Public
  71023. - License along with the GNU C Library; if not, write to the Free
  71024. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71025. - 02111-1307 USA. */
  71026. + License along with the GNU C Library; if not, see
  71027. + <http://www.gnu.org/licenses/>. */
  71028. #ifndef _LINUX_MIPS_SYSDEP_H
  71029. #define _LINUX_MIPS_SYSDEP_H 1
  71030. @@ -78,8 +77,6 @@
  71031. #undef PSEUDO_END_ERRVAL
  71032. #define PSEUDO_END_ERRVAL(sym) .end sym; .size sym,.-sym
  71033. -#define ret_ERRVAL ret
  71034. -
  71035. #define r0 v0
  71036. #define r1 v1
  71037. /* The mips move insn is d,s. */
  71038. @@ -133,258 +130,6 @@
  71039. #else /* ! __ASSEMBLER__ */
  71040. -/* Define a macro which expands into the inline wrapper code for a system
  71041. - call. */
  71042. -#undef INLINE_SYSCALL
  71043. -#define INLINE_SYSCALL(name, nr, args...) \
  71044. - ({ INTERNAL_SYSCALL_DECL(err); \
  71045. - long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
  71046. - if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
  71047. - { \
  71048. - __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
  71049. - result_var = -1L; \
  71050. - } \
  71051. - result_var; })
  71052. -
  71053. -#undef INTERNAL_SYSCALL_DECL
  71054. -#define INTERNAL_SYSCALL_DECL(err) long err
  71055. -
  71056. -#undef INTERNAL_SYSCALL_ERROR_P
  71057. -#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
  71058. -
  71059. -#undef INTERNAL_SYSCALL_ERRNO
  71060. -#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
  71061. -
  71062. -#undef INTERNAL_SYSCALL
  71063. -#define INTERNAL_SYSCALL(name, err, nr, args...) \
  71064. - internal_syscall##nr (, "li\t$2, %2\t\t\t# " #name "\n\t", \
  71065. - "i" (SYS_ify (name)), err, args)
  71066. -
  71067. -#undef INTERNAL_SYSCALL_NCS
  71068. -#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
  71069. - internal_syscall##nr (= number, , "r" (__v0), err, args)
  71070. -#undef internal_syscall0
  71071. -#define internal_syscall0(ncs_init, cs_init, input, err, dummy...) \
  71072. -({ \
  71073. - long _sys_result; \
  71074. - \
  71075. - { \
  71076. - register long __v0 __asm__("$2") ncs_init; \
  71077. - register long __a3 __asm__("$7"); \
  71078. - __asm__ __volatile__ ( \
  71079. - ".set\tnoreorder\n\t" \
  71080. - cs_init \
  71081. - "syscall\n\t" \
  71082. - ".set reorder" \
  71083. - : "=r" (__v0), "=r" (__a3) \
  71084. - : input \
  71085. - : __SYSCALL_CLOBBERS); \
  71086. - err = __a3; \
  71087. - _sys_result = __v0; \
  71088. - } \
  71089. - _sys_result; \
  71090. -})
  71091. -
  71092. -#undef internal_syscall1
  71093. -#define internal_syscall1(ncs_init, cs_init, input, err, arg1) \
  71094. -({ \
  71095. - long _sys_result; \
  71096. - \
  71097. - { \
  71098. - register long __v0 __asm__("$2") ncs_init; \
  71099. - register long __a0 __asm__("$4") = (long) arg1; \
  71100. - register long __a3 __asm__("$7"); \
  71101. - __asm__ __volatile__ ( \
  71102. - ".set\tnoreorder\n\t" \
  71103. - cs_init \
  71104. - "syscall\n\t" \
  71105. - ".set reorder" \
  71106. - : "=r" (__v0), "=r" (__a3) \
  71107. - : input, "r" (__a0) \
  71108. - : __SYSCALL_CLOBBERS); \
  71109. - err = __a3; \
  71110. - _sys_result = __v0; \
  71111. - } \
  71112. - _sys_result; \
  71113. -})
  71114. -
  71115. -#undef internal_syscall2
  71116. -#define internal_syscall2(ncs_init, cs_init, input, err, arg1, arg2) \
  71117. -({ \
  71118. - long _sys_result; \
  71119. - \
  71120. - { \
  71121. - register long __v0 __asm__("$2") ncs_init; \
  71122. - register long __a0 __asm__("$4") = (long) arg1; \
  71123. - register long __a1 __asm__("$5") = (long) arg2; \
  71124. - register long __a3 __asm__("$7"); \
  71125. - __asm__ __volatile__ ( \
  71126. - ".set\tnoreorder\n\t" \
  71127. - cs_init \
  71128. - "syscall\n\t" \
  71129. - ".set\treorder" \
  71130. - : "=r" (__v0), "=r" (__a3) \
  71131. - : input, "r" (__a0), "r" (__a1) \
  71132. - : __SYSCALL_CLOBBERS); \
  71133. - err = __a3; \
  71134. - _sys_result = __v0; \
  71135. - } \
  71136. - _sys_result; \
  71137. -})
  71138. -
  71139. -#undef internal_syscall3
  71140. -#define internal_syscall3(ncs_init, cs_init, input, err, arg1, arg2, arg3)\
  71141. -({ \
  71142. - long _sys_result; \
  71143. - \
  71144. - { \
  71145. - register long __v0 __asm__("$2") ncs_init; \
  71146. - register long __a0 __asm__("$4") = (long) arg1; \
  71147. - register long __a1 __asm__("$5") = (long) arg2; \
  71148. - register long __a2 __asm__("$6") = (long) arg3; \
  71149. - register long __a3 __asm__("$7"); \
  71150. - __asm__ __volatile__ ( \
  71151. - ".set\tnoreorder\n\t" \
  71152. - cs_init \
  71153. - "syscall\n\t" \
  71154. - ".set\treorder" \
  71155. - : "=r" (__v0), "=r" (__a3) \
  71156. - : input, "r" (__a0), "r" (__a1), "r" (__a2) \
  71157. - : __SYSCALL_CLOBBERS); \
  71158. - err = __a3; \
  71159. - _sys_result = __v0; \
  71160. - } \
  71161. - _sys_result; \
  71162. -})
  71163. -
  71164. -#undef internal_syscall4
  71165. -#define internal_syscall4(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4)\
  71166. -({ \
  71167. - long _sys_result; \
  71168. - \
  71169. - { \
  71170. - register long __v0 __asm__("$2") ncs_init; \
  71171. - register long __a0 __asm__("$4") = (long) arg1; \
  71172. - register long __a1 __asm__("$5") = (long) arg2; \
  71173. - register long __a2 __asm__("$6") = (long) arg3; \
  71174. - register long __a3 __asm__("$7") = (long) arg4; \
  71175. - __asm__ __volatile__ ( \
  71176. - ".set\tnoreorder\n\t" \
  71177. - cs_init \
  71178. - "syscall\n\t" \
  71179. - ".set\treorder" \
  71180. - : "=r" (__v0), "+r" (__a3) \
  71181. - : input, "r" (__a0), "r" (__a1), "r" (__a2) \
  71182. - : __SYSCALL_CLOBBERS); \
  71183. - err = __a3; \
  71184. - _sys_result = __v0; \
  71185. - } \
  71186. - _sys_result; \
  71187. -})
  71188. -
  71189. -/* We need to use a frame pointer for the functions in which we
  71190. - adjust $sp around the syscall, or debug information and unwind
  71191. - information will be $sp relative and thus wrong during the syscall. As
  71192. - of GCC 3.4.3, this is sufficient. */
  71193. -#define FORCE_FRAME_POINTER alloca (4)
  71194. -
  71195. -#undef internal_syscall5
  71196. -#define internal_syscall5(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5)\
  71197. -({ \
  71198. - long _sys_result; \
  71199. - \
  71200. - FORCE_FRAME_POINTER; \
  71201. - { \
  71202. - register long __v0 __asm__("$2") ncs_init; \
  71203. - register long __a0 __asm__("$4") = (long) arg1; \
  71204. - register long __a1 __asm__("$5") = (long) arg2; \
  71205. - register long __a2 __asm__("$6") = (long) arg3; \
  71206. - register long __a3 __asm__("$7") = (long) arg4; \
  71207. - __asm__ __volatile__ ( \
  71208. - ".set\tnoreorder\n\t" \
  71209. - "subu\t$29, 32\n\t" \
  71210. - "sw\t%6, 16($29)\n\t" \
  71211. - cs_init \
  71212. - "syscall\n\t" \
  71213. - "addiu\t$29, 32\n\t" \
  71214. - ".set\treorder" \
  71215. - : "=r" (__v0), "+r" (__a3) \
  71216. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  71217. - "r" ((long)arg5) \
  71218. - : __SYSCALL_CLOBBERS); \
  71219. - err = __a3; \
  71220. - _sys_result = __v0; \
  71221. - } \
  71222. - _sys_result; \
  71223. -})
  71224. -
  71225. -#undef internal_syscall6
  71226. -#define internal_syscall6(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6)\
  71227. -({ \
  71228. - long _sys_result; \
  71229. - \
  71230. - FORCE_FRAME_POINTER; \
  71231. - { \
  71232. - register long __v0 __asm__("$2") ncs_init; \
  71233. - register long __a0 __asm__("$4") = (long) arg1; \
  71234. - register long __a1 __asm__("$5") = (long) arg2; \
  71235. - register long __a2 __asm__("$6") = (long) arg3; \
  71236. - register long __a3 __asm__("$7") = (long) arg4; \
  71237. - __asm__ __volatile__ ( \
  71238. - ".set\tnoreorder\n\t" \
  71239. - "subu\t$29, 32\n\t" \
  71240. - "sw\t%6, 16($29)\n\t" \
  71241. - "sw\t%7, 20($29)\n\t" \
  71242. - cs_init \
  71243. - "syscall\n\t" \
  71244. - "addiu\t$29, 32\n\t" \
  71245. - ".set\treorder" \
  71246. - : "=r" (__v0), "+r" (__a3) \
  71247. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  71248. - "r" ((long)arg5), "r" ((long)arg6) \
  71249. - : __SYSCALL_CLOBBERS); \
  71250. - err = __a3; \
  71251. - _sys_result = __v0; \
  71252. - } \
  71253. - _sys_result; \
  71254. -})
  71255. -
  71256. -#undef internal_syscall7
  71257. -#define internal_syscall7(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
  71258. -({ \
  71259. - long _sys_result; \
  71260. - \
  71261. - FORCE_FRAME_POINTER; \
  71262. - { \
  71263. - register long __v0 __asm__("$2") ncs_init; \
  71264. - register long __a0 __asm__("$4") = (long) arg1; \
  71265. - register long __a1 __asm__("$5") = (long) arg2; \
  71266. - register long __a2 __asm__("$6") = (long) arg3; \
  71267. - register long __a3 __asm__("$7") = (long) arg4; \
  71268. - __asm__ __volatile__ ( \
  71269. - ".set\tnoreorder\n\t" \
  71270. - "subu\t$29, 32\n\t" \
  71271. - "sw\t%6, 16($29)\n\t" \
  71272. - "sw\t%7, 20($29)\n\t" \
  71273. - "sw\t%8, 24($29)\n\t" \
  71274. - cs_init \
  71275. - "syscall\n\t" \
  71276. - "addiu\t$29, 32\n\t" \
  71277. - ".set\treorder" \
  71278. - : "=r" (__v0), "+r" (__a3) \
  71279. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  71280. - "r" ((long)arg5), "r" ((long)arg6), "r" ((long)arg7) \
  71281. - : __SYSCALL_CLOBBERS); \
  71282. - err = __a3; \
  71283. - _sys_result = __v0; \
  71284. - } \
  71285. - _sys_result; \
  71286. -})
  71287. -
  71288. -#undef __SYSCALL_CLOBBERS
  71289. -#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
  71290. - "$14", "$15", "$24", "$25", "memory"
  71291. -
  71292. /* Pointer mangling is not yet supported for MIPS. */
  71293. #define PTR_MANGLE(var) (void) (var)
  71294. #define PTR_DEMANGLE(var) (void) (var)
  71295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/_test_and_set.c uClibc/libc/sysdeps/linux/mips/_test_and_set.c
  71296. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/_test_and_set.c 2012-05-15 09:20:09.000000000 +0200
  71297. +++ uClibc/libc/sysdeps/linux/mips/_test_and_set.c 2014-02-03 12:32:56.000000000 +0100
  71298. @@ -13,9 +13,8 @@
  71299. Lesser General Public License for more details.
  71300. You should have received a copy of the GNU Lesser General Public
  71301. - License along with the GNU C Library; if not, write to the Free
  71302. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71303. - 02111-1307 USA. */
  71304. + License along with the GNU C Library; if not, see
  71305. + <http://www.gnu.org/licenses/>. */
  71306. /* Define the real-function versions of all inline functions
  71307. defined in sys/tas.h */
  71308. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/ucontext_i.sym uClibc/libc/sysdeps/linux/mips/ucontext_i.sym
  71309. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  71310. +++ uClibc/libc/sysdeps/linux/mips/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  71311. @@ -0,0 +1,52 @@
  71312. +#include <inttypes.h>
  71313. +#include <signal.h>
  71314. +#include <stddef.h>
  71315. +#include <sys/ucontext.h>
  71316. +
  71317. +#include <kernel_rt_sigframe.h>
  71318. +
  71319. +-- Constants used by the rt_sigprocmask call.
  71320. +
  71321. +SIG_BLOCK
  71322. +SIG_SETMASK
  71323. +
  71324. +_NSIG8 (_NSIG / 8)
  71325. +
  71326. +-- Offsets of the fields in the kernel rt_sigframe_t structure.
  71327. +#define rt_sigframe(member) offsetof (kernel_rt_sigframe_t, member)
  71328. +
  71329. +RT_SIGFRAME_UCONTEXT rt_sigframe (rs_uc)
  71330. +
  71331. +RT_SIGFRAME_SIZE sizeof (kernel_rt_sigframe_t)
  71332. +
  71333. +-- Offsets of the fields in the ucontext_t structure.
  71334. +#define ucontext(member) offsetof (ucontext_t, member)
  71335. +#define stack(member) ucontext (uc_stack.member)
  71336. +#define mcontext(member) ucontext (uc_mcontext.member)
  71337. +
  71338. +UCONTEXT_FLAGS ucontext (uc_flags)
  71339. +UCONTEXT_LINK ucontext (uc_link)
  71340. +UCONTEXT_STACK ucontext (uc_stack)
  71341. +UCONTEXT_MCONTEXT ucontext (uc_mcontext)
  71342. +UCONTEXT_SIGMASK ucontext (uc_sigmask)
  71343. +
  71344. +STACK_SP stack (ss_sp)
  71345. +STACK_SIZE stack (ss_size)
  71346. +STACK_FLAGS stack (ss_flags)
  71347. +
  71348. +MCONTEXT_GREGS mcontext (gregs)
  71349. +MCONTEXT_FPREGS mcontext (fpregs)
  71350. +MCONTEXT_MDHI mcontext (mdhi)
  71351. +MCONTEXT_HI1 mcontext (hi1)
  71352. +MCONTEXT_HI2 mcontext (hi2)
  71353. +MCONTEXT_HI3 mcontext (hi3)
  71354. +MCONTEXT_MDLO mcontext (mdlo)
  71355. +MCONTEXT_LO1 mcontext (lo1)
  71356. +MCONTEXT_LO2 mcontext (lo2)
  71357. +MCONTEXT_LO3 mcontext (lo3)
  71358. +MCONTEXT_PC mcontext (pc)
  71359. +MCONTEXT_FPC_CSR mcontext (fpc_csr)
  71360. +MCONTEXT_USED_MATH mcontext (used_math)
  71361. +MCONTEXT_DSP mcontext (dsp)
  71362. +
  71363. +UCONTEXT_SIZE sizeof (ucontext_t)
  71364. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/vfork.S uClibc/libc/sysdeps/linux/mips/vfork.S
  71365. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  71366. +++ uClibc/libc/sysdeps/linux/mips/vfork.S 2014-02-03 12:32:56.000000000 +0100
  71367. @@ -12,12 +12,12 @@
  71368. Lesser General Public License for more details.
  71369. You should have received a copy of the GNU Lesser General Public
  71370. - License along with the GNU C Library; if not, write to the Free
  71371. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71372. - 02111-1307 USA. */
  71373. + License along with the GNU C Library; if not, see
  71374. + <http://www.gnu.org/licenses/>. */
  71375. /* vfork() is just a special case of clone(). */
  71376. +#include <sys/syscall.h>
  71377. #include <sys/asm.h>
  71378. #include <sysdep.h>
  71379. @@ -34,6 +34,7 @@
  71380. /* int vfork() */
  71381. .text
  71382. + .hidden __vfork
  71383. LOCALSZ= 1
  71384. FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
  71385. GPOFF= FRAMESZ-(1*SZREG)
  71386. @@ -84,6 +85,7 @@
  71387. /* Something bad happened -- no child created. */
  71388. L(error):
  71389. + move a0, v0
  71390. #ifdef __PIC__
  71391. PTR_LA t9, __syscall_error
  71392. RESTORE_GP64
  71393. @@ -95,6 +97,6 @@
  71394. END(__vfork)
  71395. weak_alias(__vfork,vfork)
  71396. -libc_hidden_weak(vfork)
  71397. +libc_hidden_def(vfork)
  71398. #endif
  71399. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/fcntl.h uClibc/libc/sysdeps/linux/nios/bits/fcntl.h
  71400. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  71401. +++ uClibc/libc/sysdeps/linux/nios/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  71402. @@ -14,8 +14,7 @@
  71403. You should have received a copy of the GNU Library General Public
  71404. License along with the GNU C Library; see the file COPYING.LIB. If not,
  71405. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  71406. - Boston, MA 02111-1307, USA. */
  71407. + see <http://www.gnu.org/licenses/>. */
  71408. #ifndef _FCNTL_H
  71409. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  71410. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/mathdef.h uClibc/libc/sysdeps/linux/nios/bits/mathdef.h
  71411. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  71412. +++ uClibc/libc/sysdeps/linux/nios/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  71413. @@ -12,9 +12,8 @@
  71414. Lesser General Public License for more details.
  71415. You should have received a copy of the GNU Lesser General Public
  71416. - License along with the GNU C Library; if not, write to the Free
  71417. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71418. - 02111-1307 USA. */
  71419. + License along with the GNU C Library; if not, see
  71420. + <http://www.gnu.org/licenses/>. */
  71421. #if !defined _MATH_H && !defined _COMPLEX_H
  71422. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  71423. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/setjmp.h uClibc/libc/sysdeps/linux/nios/bits/setjmp.h
  71424. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  71425. +++ uClibc/libc/sysdeps/linux/nios/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  71426. @@ -12,9 +12,8 @@
  71427. Lesser General Public License for more details.
  71428. You should have received a copy of the GNU Lesser General Public
  71429. - License along with the GNU C Library; if not, write to the Free
  71430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71431. - 02111-1307 USA. */
  71432. + License along with the GNU C Library; if not, see
  71433. + <http://www.gnu.org/licenses/>. */
  71434. /* Define the machine-dependent type `jmp_buf'. Nios version. */
  71435. #ifndef _BITS_SETJMP_H
  71436. @@ -24,8 +23,6 @@
  71437. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  71438. #endif
  71439. -#ifndef _ASM
  71440. -
  71441. #include <signal.h>
  71442. typedef struct
  71443. @@ -44,33 +41,4 @@
  71444. } __jmp_buf[1];
  71445. -/* Test if longjmp to JMPBUF would unwind the frame
  71446. - containing a local variable at ADDRESS. */
  71447. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71448. - ((void *) (address) < (void *) (jmpbuf)->__sp)
  71449. -
  71450. -#else /* _ASM */
  71451. -
  71452. -#define jmpbuf_l0 0x00
  71453. -#define jmpbuf_l1 0x01
  71454. -#define jmpbuf_l2 0x02
  71455. -#define jmpbuf_l3 0x03
  71456. -#define jmpbuf_l4 0x04
  71457. -#define jmpbuf_l5 0x05
  71458. -#define jmpbuf_l6 0x06
  71459. -#define jmpbuf_l7 0x07
  71460. -
  71461. -#define jmpbuf_i0 0x08
  71462. -#define jmpbuf_i1 0x09
  71463. -#define jmpbuf_i2 0x0a
  71464. -#define jmpbuf_i3 0x0b
  71465. -#define jmpbuf_i4 0x0c
  71466. -#define jmpbuf_i5 0x0d
  71467. -
  71468. -#define jmpbuf_sp 0x0e
  71469. -#define jmpbuf_jmpret 0x0f
  71470. -#define jmpbuf_callersret 0x10
  71471. -
  71472. -#endif /* _ASM */
  71473. -
  71474. #endif /* bits/setjmp.h */
  71475. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/nios/bits/sigcontextinfo.h
  71476. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  71477. +++ uClibc/libc/sysdeps/linux/nios/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  71478. @@ -13,9 +13,8 @@
  71479. Lesser General Public License for more details.
  71480. You should have received a copy of the GNU Lesser General Public
  71481. - License along with the GNU C Library; if not, write to the Free
  71482. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71483. - 02111-1307 USA. */
  71484. + License along with the GNU C Library; if not, see
  71485. + <http://www.gnu.org/licenses/>. */
  71486. #define SIGCONTEXT struct sigcontext *
  71487. #define SIGCONTEXT_EXTRA_ARGS
  71488. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stackinfo.h uClibc/libc/sysdeps/linux/nios/bits/stackinfo.h
  71489. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  71490. +++ uClibc/libc/sysdeps/linux/nios/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  71491. @@ -12,9 +12,8 @@
  71492. Lesser General Public License for more details.
  71493. You should have received a copy of the GNU Lesser General Public
  71494. - License along with the GNU C Library; if not, write to the Free
  71495. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71496. - 02111-1307 USA. */
  71497. + License along with the GNU C Library; if not, see
  71498. + <http://www.gnu.org/licenses/>. */
  71499. /* This file contains a bit of information about the stack allocation
  71500. of the processor. */
  71501. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stat.h uClibc/libc/sysdeps/linux/nios/bits/stat.h
  71502. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  71503. +++ uClibc/libc/sysdeps/linux/nios/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  71504. @@ -12,9 +12,8 @@
  71505. Lesser General Public License for more details.
  71506. You should have received a copy of the GNU Lesser General Public
  71507. - License along with the GNU C Library; if not, write to the Free
  71508. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71509. - 02111-1307 USA. */
  71510. + License along with the GNU C Library; if not, see
  71511. + <http://www.gnu.org/licenses/>. */
  71512. #ifndef _SYS_STAT_H
  71513. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  71514. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
  71515. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  71516. +++ uClibc/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  71517. @@ -12,8 +12,8 @@
  71518. /* can your target use syscall6() for mmap ? */
  71519. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  71520. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  71521. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  71522. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  71523. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  71524. /* does your target have a broken create_module() ? */
  71525. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  71526. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/wordsize.h uClibc/libc/sysdeps/linux/nios/bits/wordsize.h
  71527. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  71528. +++ uClibc/libc/sysdeps/linux/nios/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  71529. @@ -12,8 +12,7 @@
  71530. Lesser General Public License for more details.
  71531. You should have received a copy of the GNU Lesser General Public
  71532. - License along with the GNU C Library; if not, write to the Free
  71533. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71534. - 02111-1307 USA. */
  71535. + License along with the GNU C Library; if not, see
  71536. + <http://www.gnu.org/licenses/>. */
  71537. #define __WORDSIZE 32
  71538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/brk.c uClibc/libc/sysdeps/linux/nios/brk.c
  71539. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/brk.c 2012-05-15 09:20:09.000000000 +0200
  71540. +++ uClibc/libc/sysdeps/linux/nios/brk.c 2014-02-03 12:32:56.000000000 +0100
  71541. @@ -13,9 +13,8 @@
  71542. Lesser General Public License for more details.
  71543. You should have received a copy of the GNU Lesser General Public
  71544. - License along with the GNU C Library; if not, write to the Free
  71545. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71546. - 02111-1307 USA. */
  71547. + License along with the GNU C Library; if not, see
  71548. + <http://www.gnu.org/licenses/>. */
  71549. #include <unistd.h>
  71550. #include <sys/syscall.h>
  71551. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/clone.S uClibc/libc/sysdeps/linux/nios/clone.S
  71552. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/clone.S 2012-05-15 09:20:09.000000000 +0200
  71553. +++ uClibc/libc/sysdeps/linux/nios/clone.S 2014-02-03 12:32:56.000000000 +0100
  71554. @@ -13,9 +13,8 @@
  71555. Lesser General Public License for more details.
  71556. You should have received a copy of the GNU Lesser General Public
  71557. - License along with the GNU C Library; if not, write to the Free
  71558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71559. - 02111-1307 USA. */
  71560. + License along with the GNU C Library; if not, see
  71561. + <http://www.gnu.org/licenses/>. */
  71562. /* clone() is even more special than fork() as it mucks with stacks
  71563. and invokes a function in the right context after its all over. */
  71564. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/crt1.S uClibc/libc/sysdeps/linux/nios/crt1.S
  71565. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/crt1.S 2012-05-15 09:20:09.000000000 +0200
  71566. +++ uClibc/libc/sysdeps/linux/nios/crt1.S 2014-02-03 12:32:56.000000000 +0100
  71567. @@ -14,8 +14,7 @@
  71568. You should have received a copy of the GNU Library General Public
  71569. License along with the GNU C Library; see the file COPYING.LIB. If
  71570. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  71571. -Cambridge, MA 02139, USA. */
  71572. +not, see <http://www.gnu.org/licenses/>. */
  71573. #include <features.h>
  71574. #include <asm/unistd.h>
  71575. @@ -29,9 +28,6 @@
  71576. .weak _fini
  71577. .type main,@function
  71578. .type __uClibc_main,@function
  71579. - .type __h_errno_location, @function
  71580. - .type _stdio_init, @function
  71581. - .type _stdio_term, @function
  71582. .text
  71583. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/fpu_control.h uClibc/libc/sysdeps/linux/nios/fpu_control.h
  71584. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  71585. +++ uClibc/libc/sysdeps/linux/nios/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  71586. @@ -13,9 +13,8 @@
  71587. Lesser General Public License for more details.
  71588. You should have received a copy of the GNU Lesser General Public
  71589. - License along with the GNU C Library; if not, write to the Free
  71590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71591. - 02111-1307 USA. */
  71592. + License along with the GNU C Library; if not, see
  71593. + <http://www.gnu.org/licenses/>. */
  71594. #ifndef _FPU_CONTROL_H
  71595. #define _FPU_CONTROL_H
  71596. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/nios/jmpbuf-offsets.h
  71597. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  71598. +++ uClibc/libc/sysdeps/linux/nios/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  71599. @@ -0,0 +1,25 @@
  71600. +/*
  71601. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  71602. + *
  71603. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71604. + */
  71605. +
  71606. +#define jmpbuf_l0 0x00
  71607. +#define jmpbuf_l1 0x01
  71608. +#define jmpbuf_l2 0x02
  71609. +#define jmpbuf_l3 0x03
  71610. +#define jmpbuf_l4 0x04
  71611. +#define jmpbuf_l5 0x05
  71612. +#define jmpbuf_l6 0x06
  71613. +#define jmpbuf_l7 0x07
  71614. +
  71615. +#define jmpbuf_i0 0x08
  71616. +#define jmpbuf_i1 0x09
  71617. +#define jmpbuf_i2 0x0a
  71618. +#define jmpbuf_i3 0x0b
  71619. +#define jmpbuf_i4 0x0c
  71620. +#define jmpbuf_i5 0x0d
  71621. +
  71622. +#define jmpbuf_sp 0x0e
  71623. +#define jmpbuf_jmpret 0x0f
  71624. +#define jmpbuf_callersret 0x10
  71625. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/nios/jmpbuf-unwind.h
  71626. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  71627. +++ uClibc/libc/sysdeps/linux/nios/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  71628. @@ -0,0 +1,11 @@
  71629. +/*
  71630. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  71631. + *
  71632. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71633. + */
  71634. +#include <setjmp.h>
  71635. +
  71636. +/* Test if longjmp to JMPBUF would unwind the frame
  71637. + containing a local variable at ADDRESS. */
  71638. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71639. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  71640. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/__longjmp.S uClibc/libc/sysdeps/linux/nios/__longjmp.S
  71641. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  71642. +++ uClibc/libc/sysdeps/linux/nios/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  71643. @@ -13,14 +13,9 @@
  71644. You should have received a copy of the GNU Library General Public
  71645. License along with the GNU C Library; see the file COPYING.LIB. If not,
  71646. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  71647. - Boston, MA 02111-1307, USA. */
  71648. -
  71649. -#include <features.h>
  71650. -#define _ASM
  71651. -#define _SETJMP_H
  71652. -#include <bits/setjmp.h>
  71653. + see <http://www.gnu.org/licenses/>. */
  71654. +#include <jmpbuf-offsets.h>
  71655. ;----------------------------------------
  71656. ; Name: __longjmp
  71657. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/Makefile.arch uClibc/libc/sysdeps/linux/nios/Makefile.arch
  71658. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  71659. +++ uClibc/libc/sysdeps/linux/nios/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  71660. @@ -5,8 +5,8 @@
  71661. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71662. #
  71663. -CSRC := brk.c crtbegin.c crtend.c
  71664. +CSRC-y := brk.c crtbegin.c crtend.c
  71665. -SSRC := \
  71666. +SSRC-y := \
  71667. __longjmp.S bsd-_setjmp.S bsd-setjmp.S setjmp.S \
  71668. clone.S vfork.S
  71669. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/setjmp.S uClibc/libc/sysdeps/linux/nios/setjmp.S
  71670. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71671. +++ uClibc/libc/sysdeps/linux/nios/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71672. @@ -13,13 +13,9 @@
  71673. You should have received a copy of the GNU Library General Public
  71674. License along with the GNU C Library; see the file COPYING.LIB. If not,
  71675. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  71676. - Boston, MA 02111-1307, USA. */
  71677. + see <http://www.gnu.org/licenses/>. */
  71678. -#include <features.h>
  71679. -#define _ASM
  71680. -#define _SETJMP_H
  71681. -#include <bits/setjmp.h>
  71682. +#include <jmpbuf-offsets.h>
  71683. #include "NM_Macros.S"
  71684. ;----------------------------------------
  71685. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/procfs.h uClibc/libc/sysdeps/linux/nios/sys/procfs.h
  71686. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  71687. +++ uClibc/libc/sysdeps/linux/nios/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  71688. @@ -12,9 +12,8 @@
  71689. Lesser General Public License for more details.
  71690. You should have received a copy of the GNU Lesser General Public
  71691. - License along with the GNU C Library; if not, write to the Free
  71692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71693. - 02111-1307 USA. */
  71694. + License along with the GNU C Library; if not, see
  71695. + <http://www.gnu.org/licenses/>. */
  71696. #ifndef _SYS_PROCFS_H
  71697. #define _SYS_PROCFS_H 1
  71698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/ucontext.h uClibc/libc/sysdeps/linux/nios/sys/ucontext.h
  71699. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  71700. +++ uClibc/libc/sysdeps/linux/nios/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  71701. @@ -12,9 +12,8 @@
  71702. Lesser General Public License for more details.
  71703. You should have received a copy of the GNU Lesser General Public
  71704. - License along with the GNU C Library; if not, write to the Free
  71705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71706. - 02111-1307 USA. */
  71707. + License along with the GNU C Library; if not, see
  71708. + <http://www.gnu.org/licenses/>. */
  71709. #ifndef _SYS_UCONTEXT_H
  71710. #define _SYS_UCONTEXT_H 1
  71711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/vfork.S uClibc/libc/sysdeps/linux/nios/vfork.S
  71712. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/vfork.S 2012-05-15 09:20:09.000000000 +0200
  71713. +++ uClibc/libc/sysdeps/linux/nios/vfork.S 2014-02-03 12:32:56.000000000 +0100
  71714. @@ -10,9 +10,6 @@
  71715. * Written by Wentao Xu <wentao@microtronix.com>
  71716. */
  71717. -#include <features.h>
  71718. -
  71719. -#include <bits/errno.h>
  71720. #include <sys/syscall.h>
  71721. #include "NM_Macros.S"
  71722. @@ -51,4 +48,4 @@
  71723. .size __vfork,.-__vfork
  71724. weak_alias(__vfork,vfork)
  71725. -libc_hidden_weak(vfork)
  71726. +libc_hidden_def(vfork)
  71727. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/fcntl.h uClibc/libc/sysdeps/linux/nios2/bits/fcntl.h
  71728. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  71729. +++ uClibc/libc/sysdeps/linux/nios2/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  71730. @@ -13,9 +13,8 @@
  71731. Lesser General Public License for more details.
  71732. You should have received a copy of the GNU Lesser General Public
  71733. - License along with the GNU C Library; if not, write to the Free
  71734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71735. - 02111-1307 USA. */
  71736. + License along with the GNU C Library; if not, see
  71737. + <http://www.gnu.org/licenses/>. */
  71738. #ifndef _FCNTL_H
  71739. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  71740. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/kernel_types.h uClibc/libc/sysdeps/linux/nios2/bits/kernel_types.h
  71741. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  71742. +++ uClibc/libc/sysdeps/linux/nios2/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  71743. @@ -31,6 +31,8 @@
  71744. typedef unsigned short __kernel_old_uid_t;
  71745. typedef unsigned short __kernel_old_gid_t;
  71746. typedef unsigned short __kernel_old_dev_t;
  71747. +typedef long __kernel_long_t;
  71748. +typedef unsigned long __kernel_ulong_t;
  71749. typedef long long __kernel_loff_t;
  71750. typedef struct {
  71751. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/mathdef.h uClibc/libc/sysdeps/linux/nios2/bits/mathdef.h
  71752. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  71753. +++ uClibc/libc/sysdeps/linux/nios2/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  71754. @@ -12,9 +12,8 @@
  71755. Lesser General Public License for more details.
  71756. You should have received a copy of the GNU Lesser General Public
  71757. - License along with the GNU C Library; if not, write to the Free
  71758. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71759. - 02111-1307 USA. */
  71760. + License along with the GNU C Library; if not, see
  71761. + <http://www.gnu.org/licenses/>. */
  71762. #if !defined _MATH_H && !defined _COMPLEX_H
  71763. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  71764. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/setjmp.h uClibc/libc/sysdeps/linux/nios2/bits/setjmp.h
  71765. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  71766. +++ uClibc/libc/sysdeps/linux/nios2/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  71767. @@ -13,9 +13,8 @@
  71768. Lesser General Public License for more details.
  71769. You should have received a copy of the GNU Lesser General Public
  71770. - License along with the GNU C Library; if not, write to the Free
  71771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71772. - 02111-1307 USA. */
  71773. + License along with the GNU C Library; if not, see
  71774. + <http://www.gnu.org/licenses/>. */
  71775. #ifndef _BITS_SETJMP_H
  71776. #define _BITS_SETJMP_H 1
  71777. @@ -24,7 +23,6 @@
  71778. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  71779. #endif
  71780. -#ifndef _ASM
  71781. typedef struct
  71782. {
  71783. /* Callee-saved registers r16 through r23. */
  71784. @@ -43,30 +41,9 @@
  71785. unsigned long __gp;
  71786. /* floating point regs, if any */
  71787. -#if defined __HAVE_FPU__
  71788. +#ifdef __UCLIBC_HAS_FPU__
  71789. unsigned long __fpregs[64];
  71790. #endif
  71791. } __jmp_buf[1];
  71792. -#endif
  71793. -
  71794. -#define JB_REGS 0
  71795. -#define JB_PC 32
  71796. -#define JB_SP 36
  71797. -#define JB_FP 40
  71798. -#define JB_GP 44
  71799. -#define JB_FPREGS 48
  71800. -
  71801. -#if defined __HAVE_FPU__
  71802. -# define JB_SIZE 304
  71803. -#else
  71804. -# define JB_SIZE 48
  71805. -#endif
  71806. -
  71807. -
  71808. -/* Test if longjmp to JMPBUF would unwind the frame
  71809. - containing a local variable at ADDRESS. */
  71810. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71811. - ((void *) (address) < (void*)(jmpbuf)->__sp)
  71812. -
  71813. #endif /* bits/setjmp.h */
  71814. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h
  71815. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  71816. +++ uClibc/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  71817. @@ -13,9 +13,8 @@
  71818. Lesser General Public License for more details.
  71819. You should have received a copy of the GNU Lesser General Public
  71820. - License along with the GNU C Library; if not, write to the Free
  71821. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71822. - 02111-1307 USA. */
  71823. + License along with the GNU C Library; if not, see
  71824. + <http://www.gnu.org/licenses/>. */
  71825. #define SIGCONTEXT struct sigcontext *
  71826. #define SIGCONTEXT_EXTRA_ARGS
  71827. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stackinfo.h uClibc/libc/sysdeps/linux/nios2/bits/stackinfo.h
  71828. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  71829. +++ uClibc/libc/sysdeps/linux/nios2/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  71830. @@ -12,9 +12,8 @@
  71831. Lesser General Public License for more details.
  71832. You should have received a copy of the GNU Lesser General Public
  71833. - License along with the GNU C Library; if not, write to the Free
  71834. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71835. - 02111-1307 USA. */
  71836. + License along with the GNU C Library; if not, see
  71837. + <http://www.gnu.org/licenses/>. */
  71838. /* This file contains a bit of information about the stack allocation
  71839. of the processor. */
  71840. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stat.h uClibc/libc/sysdeps/linux/nios2/bits/stat.h
  71841. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  71842. +++ uClibc/libc/sysdeps/linux/nios2/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  71843. @@ -12,9 +12,8 @@
  71844. Lesser General Public License for more details.
  71845. You should have received a copy of the GNU Lesser General Public
  71846. - License along with the GNU C Library; if not, write to the Free
  71847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71848. - 02111-1307 USA. */
  71849. + License along with the GNU C Library; if not, see
  71850. + <http://www.gnu.org/licenses/>. */
  71851. #ifndef _SYS_STAT_H
  71852. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  71853. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
  71854. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  71855. +++ uClibc/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  71856. @@ -12,8 +12,8 @@
  71857. /* can your target use syscall6() for mmap ? */
  71858. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  71859. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  71860. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  71861. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  71862. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  71863. /* does your target have a broken create_module() ? */
  71864. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  71865. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_page.h uClibc/libc/sysdeps/linux/nios2/bits/uClibc_page.h
  71866. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  71867. +++ uClibc/libc/sysdeps/linux/nios2/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  71868. @@ -1,29 +0,0 @@
  71869. -/* Copyright (C) 2004 Erik Andersen
  71870. - *
  71871. - * This library is free software; you can redistribute it and/or
  71872. - * modify it under the terms of the GNU Lesser General Public
  71873. - * License as published by the Free Software Foundation; either
  71874. - * version 2.1 of the License, or (at your option) any later version.
  71875. - *
  71876. - * The GNU C Library is distributed in the hope that it will be useful,
  71877. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  71878. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  71879. - * Lesser General Public License for more details.
  71880. - *
  71881. - * You should have received a copy of the GNU Lesser General Public
  71882. - * License along with the GNU C Library; if not, write to the Free
  71883. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71884. - * 02111-1307 USA.
  71885. - */
  71886. -
  71887. -/* Supply an architecture specific value for PAGE_SIZE and friends. */
  71888. -
  71889. -#ifndef _UCLIBC_PAGE_H
  71890. -#define _UCLIBC_PAGE_H
  71891. -
  71892. -/* PAGE_SHIFT determines the page size -- in this case 4096 */
  71893. -#define PAGE_SHIFT (12)
  71894. -#define PAGE_SIZE (1UL << PAGE_SHIFT)
  71895. -#define PAGE_MASK (~(PAGE_SIZE-1))
  71896. -
  71897. -#endif /* _UCLIBC_PAGE_H */
  71898. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/wordsize.h uClibc/libc/sysdeps/linux/nios2/bits/wordsize.h
  71899. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  71900. +++ uClibc/libc/sysdeps/linux/nios2/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  71901. @@ -12,8 +12,7 @@
  71902. Lesser General Public License for more details.
  71903. You should have received a copy of the GNU Lesser General Public
  71904. - License along with the GNU C Library; if not, write to the Free
  71905. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71906. - 02111-1307 USA. */
  71907. + License along with the GNU C Library; if not, see
  71908. + <http://www.gnu.org/licenses/>. */
  71909. #define __WORDSIZE 32
  71910. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/brk.c uClibc/libc/sysdeps/linux/nios2/brk.c
  71911. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/brk.c 2012-05-15 09:20:09.000000000 +0200
  71912. +++ uClibc/libc/sysdeps/linux/nios2/brk.c 2014-02-03 12:32:56.000000000 +0100
  71913. @@ -13,9 +13,8 @@
  71914. Lesser General Public License for more details.
  71915. You should have received a copy of the GNU Lesser General Public
  71916. - License along with the GNU C Library; if not, write to the Free
  71917. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71918. - 02111-1307 USA. */
  71919. + License along with the GNU C Library; if not, see
  71920. + <http://www.gnu.org/licenses/>. */
  71921. #include <unistd.h>
  71922. #include <sys/syscall.h>
  71923. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-_setjmp.S uClibc/libc/sysdeps/linux/nios2/bsd-_setjmp.S
  71924. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71925. +++ uClibc/libc/sysdeps/linux/nios2/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71926. @@ -11,9 +11,8 @@
  71927. *
  71928. */
  71929. -#define _ASM
  71930. -#define _SETJMP_H
  71931. -#include <bits/setjmp.h>
  71932. +#include <features.h>
  71933. +#include <jmpbuf-offsets.h>
  71934. .globl _setjmp
  71935. .type _setjmp,@function
  71936. @@ -34,7 +33,7 @@
  71937. stw fp, JB_FP(r4)
  71938. stw gp, JB_GP(r4)
  71939. -#if defined(__HAVE_FPU__)
  71940. +#ifdef __UCLIBC_HAS_FPU__
  71941. SAVE_FPU r4 JB_FPREGS
  71942. #endif
  71943. stw r0, JB_SIZE(r4) /* signal mask is not saved */
  71944. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-setjmp.S uClibc/libc/sysdeps/linux/nios2/bsd-setjmp.S
  71945. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71946. +++ uClibc/libc/sysdeps/linux/nios2/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71947. @@ -12,9 +12,8 @@
  71948. */
  71949. -#define _ASM
  71950. -#define _SETJMP_H
  71951. -#include <bits/setjmp.h>
  71952. +#include <features.h>
  71953. +#include <jmpbuf-offsets.h>
  71954. .globl setjmp
  71955. .type setjmp,@function
  71956. @@ -35,7 +34,7 @@
  71957. stw fp, JB_FP(r4)
  71958. stw gp, JB_GP(r4)
  71959. -#if defined(__HAVE_FPU__)
  71960. +#ifdef __UCLIBC_HAS_FPU__
  71961. SAVE_FPU r4 JB_FPREGS
  71962. #endif
  71963. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/crt1.S uClibc/libc/sysdeps/linux/nios2/crt1.S
  71964. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/crt1.S 2012-05-15 09:20:09.000000000 +0200
  71965. +++ uClibc/libc/sysdeps/linux/nios2/crt1.S 2014-02-03 12:32:56.000000000 +0100
  71966. @@ -25,9 +25,6 @@
  71967. #endif
  71968. .type main,@function
  71969. .type __uClibc_main,@function
  71970. - .type __h_errno_location, @function
  71971. - .type _stdio_init, @function
  71972. - .type _stdio_term, @function
  71973. .text
  71974. .balign 4
  71975. _start:
  71976. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/fpu_control.h uClibc/libc/sysdeps/linux/nios2/fpu_control.h
  71977. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  71978. +++ uClibc/libc/sysdeps/linux/nios2/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  71979. @@ -13,9 +13,8 @@
  71980. Lesser General Public License for more details.
  71981. You should have received a copy of the GNU Lesser General Public
  71982. - License along with the GNU C Library; if not, write to the Free
  71983. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71984. - 02111-1307 USA. */
  71985. + License along with the GNU C Library; if not, see
  71986. + <http://www.gnu.org/licenses/>. */
  71987. #ifndef _FPU_CONTROL_H
  71988. #define _FPU_CONTROL_H
  71989. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/nios2/jmpbuf-offsets.h
  71990. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  71991. +++ uClibc/libc/sysdeps/linux/nios2/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  71992. @@ -0,0 +1,20 @@
  71993. +/*
  71994. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  71995. + *
  71996. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71997. + */
  71998. +
  71999. +#include <features.h>
  72000. +
  72001. +#define JB_REGS 0
  72002. +#define JB_PC 32
  72003. +#define JB_SP 36
  72004. +#define JB_FP 40
  72005. +#define JB_GP 44
  72006. +#define JB_FPREGS 48
  72007. +
  72008. +#ifdef __UCLIBC_HAS_FPU__
  72009. +# define JB_SIZE 304
  72010. +#else
  72011. +# define JB_SIZE 48
  72012. +#endif
  72013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/nios2/jmpbuf-unwind.h
  72014. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  72015. +++ uClibc/libc/sysdeps/linux/nios2/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  72016. @@ -0,0 +1,11 @@
  72017. +/*
  72018. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72019. + *
  72020. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72021. + */
  72022. +#include <setjmp.h>
  72023. +
  72024. +/* Test if longjmp to JMPBUF would unwind the frame
  72025. + containing a local variable at ADDRESS. */
  72026. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72027. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  72028. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/__longjmp.S uClibc/libc/sysdeps/linux/nios2/__longjmp.S
  72029. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  72030. +++ uClibc/libc/sysdeps/linux/nios2/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  72031. @@ -12,9 +12,7 @@
  72032. */
  72033. #include <features.h>
  72034. -#define _ASM
  72035. -#define _SETJMP_H
  72036. -#include <bits/setjmp.h>
  72037. +#include <jmpbuf-offsets.h>
  72038. .globl __longjmp
  72039. .type __longjmp,@function
  72040. @@ -39,7 +37,7 @@
  72041. ldw gp, JB_GP(r4)
  72042. ldw sp, JB_SP(r4)
  72043. -#if defined(__HAVE_FPU__)
  72044. +#ifdef __UCLIBC_HAS_FPU__
  72045. RESTORE_FPU r4 JB_FPREGS
  72046. #endif
  72047. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/Makefile.arch uClibc/libc/sysdeps/linux/nios2/Makefile.arch
  72048. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  72049. +++ uClibc/libc/sysdeps/linux/nios2/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  72050. @@ -5,8 +5,8 @@
  72051. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72052. #
  72053. -CSRC := brk.c syscall.c
  72054. +CSRC-y := brk.c syscall.c
  72055. -SSRC := \
  72056. +SSRC-y := \
  72057. __longjmp.S bsd-_setjmp.S bsd-setjmp.S setjmp.S \
  72058. vfork.S clone.S
  72059. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/setjmp.S uClibc/libc/sysdeps/linux/nios2/setjmp.S
  72060. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  72061. +++ uClibc/libc/sysdeps/linux/nios2/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  72062. @@ -12,9 +12,7 @@
  72063. */
  72064. #include <features.h>
  72065. -#define _ASM
  72066. -#define _SETJMP_H
  72067. -#include <bits/setjmp.h>
  72068. +#include <jmpbuf-offsets.h>
  72069. .globl __sigsetjmp
  72070. .type __sigsetjmp,@function
  72071. @@ -35,7 +33,7 @@
  72072. stw fp, JB_FP(r4)
  72073. stw gp, JB_GP(r4)
  72074. -#if defined(__HAVE_FPU__)
  72075. +#ifdef __UCLIBC_HAS_FPU__
  72076. SAVE_FPU r4 JB_FPREGS
  72077. #endif
  72078. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/procfs.h uClibc/libc/sysdeps/linux/nios2/sys/procfs.h
  72079. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  72080. +++ uClibc/libc/sysdeps/linux/nios2/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  72081. @@ -12,9 +12,8 @@
  72082. Lesser General Public License for more details.
  72083. You should have received a copy of the GNU Lesser General Public
  72084. - License along with the GNU C Library; if not, write to the Free
  72085. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72086. - 02111-1307 USA. */
  72087. + License along with the GNU C Library; if not, see
  72088. + <http://www.gnu.org/licenses/>. */
  72089. #ifndef _SYS_PROCFS_H
  72090. #define _SYS_PROCFS_H 1
  72091. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/ucontext.h uClibc/libc/sysdeps/linux/nios2/sys/ucontext.h
  72092. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  72093. +++ uClibc/libc/sysdeps/linux/nios2/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  72094. @@ -12,9 +12,8 @@
  72095. Lesser General Public License for more details.
  72096. You should have received a copy of the GNU Lesser General Public
  72097. - License along with the GNU C Library; if not, write to the Free
  72098. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72099. - 02111-1307 USA. */
  72100. + License along with the GNU C Library; if not, see
  72101. + <http://www.gnu.org/licenses/>. */
  72102. #ifndef _SYS_UCONTEXT_H
  72103. #define _SYS_UCONTEXT_H 1
  72104. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/syscall.c uClibc/libc/sysdeps/linux/nios2/syscall.c
  72105. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/syscall.c 2012-05-15 09:20:09.000000000 +0200
  72106. +++ uClibc/libc/sysdeps/linux/nios2/syscall.c 2014-02-03 12:32:56.000000000 +0100
  72107. @@ -14,8 +14,8 @@
  72108. * for more details.
  72109. *
  72110. * You should have received a copy of the GNU Library General Public License
  72111. - * along with this program; if not, write to the Free Software Foundation,
  72112. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  72113. + * along with this program; see the file COPYING.LIB. If not, see
  72114. + * <http://www.gnu.org/licenses/>.
  72115. */
  72116. #include <features.h>
  72117. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/vfork.S uClibc/libc/sysdeps/linux/nios2/vfork.S
  72118. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/vfork.S 2012-05-15 09:20:09.000000000 +0200
  72119. +++ uClibc/libc/sysdeps/linux/nios2/vfork.S 2014-02-03 12:32:56.000000000 +0100
  72120. @@ -10,11 +10,7 @@
  72121. * Written by Wentao Xu <wentao@microtronix.com>
  72122. */
  72123. -#include <features.h>
  72124. -
  72125. -#define _ERRNO_H
  72126. -#include <bits/errno.h>
  72127. -#include <asm/unistd.h>
  72128. +#include <sys/syscall.h>
  72129. #ifndef __NR_vfork
  72130. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  72131. @@ -53,4 +49,4 @@
  72132. .size __vfork,.-__vfork
  72133. weak_alias(__vfork,vfork)
  72134. -libc_hidden_weak(vfork)
  72135. +libc_hidden_def(vfork)
  72136. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/atomic.h uClibc/libc/sysdeps/linux/powerpc/bits/atomic.h
  72137. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  72138. +++ uClibc/libc/sysdeps/linux/powerpc/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  72139. @@ -14,9 +14,8 @@
  72140. Lesser General Public License for more details.
  72141. You should have received a copy of the GNU Lesser General Public
  72142. - License along with the GNU C Library; if not, write to the Free
  72143. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72144. - 02111-1307 USA. */
  72145. + License along with the GNU C Library; if not, see
  72146. + <http://www.gnu.org/licenses/>. */
  72147. #include <bits/wordsize.h>
  72148. @@ -37,9 +36,8 @@
  72149. Lesser General Public License for more details.
  72150. You should have received a copy of the GNU Lesser General Public
  72151. - License along with the GNU C Library; if not, write to the Free
  72152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72153. - 02111-1307 USA. */
  72154. + License along with the GNU C Library; if not, see
  72155. + <http://www.gnu.org/licenses/>. */
  72156. /* The 32-bit exchange_bool is different on powerpc64 because the subf
  72157. does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
  72158. @@ -260,9 +258,8 @@
  72159. Lesser General Public License for more details.
  72160. You should have received a copy of the GNU Lesser General Public
  72161. - License along with the GNU C Library; if not, write to the Free
  72162. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72163. - 02111-1307 USA. */
  72164. + License along with the GNU C Library; if not, see
  72165. + <http://www.gnu.org/licenses/>. */
  72166. /*
  72167. * The 32-bit exchange_bool is different on powerpc64 because the subf
  72168. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/endian.h uClibc/libc/sysdeps/linux/powerpc/bits/endian.h
  72169. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/endian.h 2012-05-15 09:20:09.000000000 +0200
  72170. +++ uClibc/libc/sysdeps/linux/powerpc/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  72171. @@ -12,9 +12,8 @@
  72172. Lesser General Public License for more details.
  72173. You should have received a copy of the GNU Lesser General Public
  72174. - License along with the GNU C Library; if not, write to the Free
  72175. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72176. - 02111-1307 USA. */
  72177. + License along with the GNU C Library; if not, see
  72178. + <http://www.gnu.org/licenses/>. */
  72179. /* PowerPC can be little or big endian. Hopefully gcc will know... */
  72180. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fcntl.h uClibc/libc/sysdeps/linux/powerpc/bits/fcntl.h
  72181. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  72182. +++ uClibc/libc/sysdeps/linux/powerpc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  72183. @@ -14,9 +14,8 @@
  72184. Lesser General Public License for more details.
  72185. You should have received a copy of the GNU Lesser General Public
  72186. - License along with the GNU C Library; if not, write to the Free
  72187. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72188. - 02111-1307 USA. */
  72189. + License along with the GNU C Library; if not, see
  72190. + <http://www.gnu.org/licenses/>. */
  72191. #ifndef _FCNTL_H
  72192. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  72193. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenv.h uClibc/libc/sysdeps/linux/powerpc/bits/fenv.h
  72194. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  72195. +++ uClibc/libc/sysdeps/linux/powerpc/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  72196. @@ -12,9 +12,8 @@
  72197. Lesser General Public License for more details.
  72198. You should have received a copy of the GNU Lesser General Public
  72199. - License along with the GNU C Library; if not, write to the Free
  72200. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72201. - 02111-1307 USA. */
  72202. + License along with the GNU C Library; if not, see
  72203. + <http://www.gnu.org/licenses/>. */
  72204. #ifndef _FENV_H
  72205. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  72206. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenvinline.h uClibc/libc/sysdeps/linux/powerpc/bits/fenvinline.h
  72207. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenvinline.h 2012-05-15 09:20:09.000000000 +0200
  72208. +++ uClibc/libc/sysdeps/linux/powerpc/bits/fenvinline.h 2014-02-03 12:32:56.000000000 +0100
  72209. @@ -14,9 +14,8 @@
  72210. Lesser General Public License for more details.
  72211. You should have received a copy of the GNU Lesser General Public
  72212. - License along with the GNU C Library; if not, write to the Free
  72213. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72214. - 02111-1307 USA. */
  72215. + License along with the GNU C Library; if not, see
  72216. + <http://www.gnu.org/licenses/>. */
  72217. #include <features.h>
  72218. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/ipc.h uClibc/libc/sysdeps/linux/powerpc/bits/ipc.h
  72219. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  72220. +++ uClibc/libc/sysdeps/linux/powerpc/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  72221. @@ -12,9 +12,8 @@
  72222. Lesser General Public License for more details.
  72223. You should have received a copy of the GNU Lesser General Public
  72224. - License along with the GNU C Library; if not, write to the Free
  72225. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72226. - 02111-1307 USA. */
  72227. + License along with the GNU C Library; if not, see
  72228. + <http://www.gnu.org/licenses/>. */
  72229. #ifndef _SYS_IPC_H
  72230. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  72231. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/kernel_types.h uClibc/libc/sysdeps/linux/powerpc/bits/kernel_types.h
  72232. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  72233. +++ uClibc/libc/sysdeps/linux/powerpc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  72234. @@ -36,6 +36,8 @@
  72235. typedef unsigned int __kernel_old_uid_t;
  72236. typedef unsigned int __kernel_old_gid_t;
  72237. typedef __kernel_dev_t __kernel_old_dev_t;
  72238. +typedef long __kernel_long_t;
  72239. +typedef unsigned long __kernel_ulong_t;
  72240. #else
  72241. typedef unsigned int __kernel_dev_t;
  72242. typedef unsigned int __kernel_ino_t;
  72243. @@ -61,6 +63,8 @@
  72244. typedef unsigned int __kernel_old_uid_t;
  72245. typedef unsigned int __kernel_old_gid_t;
  72246. typedef __kernel_dev_t __kernel_old_dev_t;
  72247. +typedef long __kernel_long_t;
  72248. +typedef unsigned long __kernel_ulong_t;
  72249. typedef long long __kernel_loff_t;
  72250. #endif
  72251. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/local_lim.h uClibc/libc/sysdeps/linux/powerpc/bits/local_lim.h
  72252. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  72253. +++ uClibc/libc/sysdeps/linux/powerpc/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  72254. @@ -0,0 +1,101 @@
  72255. +/* Minimum guaranteed maximum values for system limits. Linux/PPC version.
  72256. + Copyright (C) 1993-1998,2000,2002-2004,2006,2008
  72257. + Free Software Foundation, Inc.
  72258. + This file is part of the GNU C Library.
  72259. +
  72260. + The GNU C Library is free software; you can redistribute it and/or
  72261. + modify it under the terms of the GNU Lesser General Public License as
  72262. + published by the Free Software Foundation; either version 2.1 of the
  72263. + License, or (at your option) any later version.
  72264. +
  72265. + The GNU C Library is distributed in the hope that it will be useful,
  72266. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  72267. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  72268. + Lesser General Public License for more details.
  72269. +
  72270. + You should have received a copy of the GNU Lesser General Public
  72271. + License along with the GNU C Library; see the file COPYING.LIB. If
  72272. + not, see <http://www.gnu.org/licenses/>. */
  72273. +
  72274. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  72275. + and defines LINK_MAX although filesystems have different maxima. A
  72276. + similar thing is true for OPEN_MAX: the limit can be changed at
  72277. + runtime and therefore the macro must not be defined. Remove this
  72278. + after including the header if necessary. */
  72279. +#ifndef NR_OPEN
  72280. +# define __undef_NR_OPEN
  72281. +#endif
  72282. +#ifndef LINK_MAX
  72283. +# define __undef_LINK_MAX
  72284. +#endif
  72285. +#ifndef OPEN_MAX
  72286. +# define __undef_OPEN_MAX
  72287. +#endif
  72288. +#ifndef ARG_MAX
  72289. +# define __undef_ARG_MAX
  72290. +#endif
  72291. +
  72292. +/* The kernel sources contain a file with all the needed information. */
  72293. +#include <linux/limits.h>
  72294. +
  72295. +/* Have to remove NR_OPEN? */
  72296. +#ifdef __undef_NR_OPEN
  72297. +# undef NR_OPEN
  72298. +# undef __undef_NR_OPEN
  72299. +#endif
  72300. +/* Have to remove LINK_MAX? */
  72301. +#ifdef __undef_LINK_MAX
  72302. +# undef LINK_MAX
  72303. +# undef __undef_LINK_MAX
  72304. +#endif
  72305. +/* Have to remove OPEN_MAX? */
  72306. +#ifdef __undef_OPEN_MAX
  72307. +# undef OPEN_MAX
  72308. +# undef __undef_OPEN_MAX
  72309. +#endif
  72310. +/* Have to remove ARG_MAX? */
  72311. +#ifdef __undef_ARG_MAX
  72312. +# undef ARG_MAX
  72313. +# undef __undef_ARG_MAX
  72314. +#endif
  72315. +
  72316. +/* The number of data keys per process. */
  72317. +#define _POSIX_THREAD_KEYS_MAX 128
  72318. +/* This is the value this implementation supports. */
  72319. +#define PTHREAD_KEYS_MAX 1024
  72320. +
  72321. +/* Controlling the iterations of destructors for thread-specific data. */
  72322. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  72323. +/* Number of iterations this implementation does. */
  72324. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  72325. +
  72326. +/* The number of threads per process. */
  72327. +#define _POSIX_THREAD_THREADS_MAX 64
  72328. +/* We have no predefined limit on the number of threads. */
  72329. +#undef PTHREAD_THREADS_MAX
  72330. +
  72331. +/* Maximum amount by which a process can descrease its asynchronous I/O
  72332. + priority level. */
  72333. +#define AIO_PRIO_DELTA_MAX 20
  72334. +
  72335. +/* Minimum size for a thread. At least two pages for systems with 64k
  72336. + pages. */
  72337. +#define PTHREAD_STACK_MIN 131072
  72338. +
  72339. +/* Maximum number of timer expiration overruns. */
  72340. +#define DELAYTIMER_MAX 2147483647
  72341. +
  72342. +/* Maximum tty name length. */
  72343. +#define TTY_NAME_MAX 32
  72344. +
  72345. +/* Maximum login name length. This is arbitrary. */
  72346. +#define LOGIN_NAME_MAX 256
  72347. +
  72348. +/* Maximum host name length. */
  72349. +#define HOST_NAME_MAX 64
  72350. +
  72351. +/* Maximum message queue priority level. */
  72352. +#define MQ_PRIO_MAX 32768
  72353. +
  72354. +/* Maximum value the semaphore can have. */
  72355. +#define SEM_VALUE_MAX (2147483647)
  72356. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathdef.h uClibc/libc/sysdeps/linux/powerpc/bits/mathdef.h
  72357. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  72358. +++ uClibc/libc/sysdeps/linux/powerpc/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  72359. @@ -13,9 +13,8 @@
  72360. Lesser General Public License for more details.
  72361. You should have received a copy of the GNU Lesser General Public
  72362. - License along with the GNU C Library; if not, write to the Free
  72363. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72364. - 02111-1307 USA. */
  72365. + License along with the GNU C Library; if not, see
  72366. + <http://www.gnu.org/licenses/>. */
  72367. #include <features.h>
  72368. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathinline.h uClibc/libc/sysdeps/linux/powerpc/bits/mathinline.h
  72369. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  72370. +++ uClibc/libc/sysdeps/linux/powerpc/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  72371. @@ -14,9 +14,8 @@
  72372. Lesser General Public License for more details.
  72373. You should have received a copy of the GNU Lesser General Public
  72374. - License along with the GNU C Library; if not, write to the Free
  72375. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72376. - 02111-1307 USA. */
  72377. + License along with the GNU C Library; if not, see
  72378. + <http://www.gnu.org/licenses/>. */
  72379. #include <features.h>
  72380. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mman.h uClibc/libc/sysdeps/linux/powerpc/bits/mman.h
  72381. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  72382. +++ uClibc/libc/sysdeps/linux/powerpc/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  72383. @@ -13,9 +13,8 @@
  72384. Lesser General Public License for more details.
  72385. You should have received a copy of the GNU Lesser General Public
  72386. - License along with the GNU C Library; if not, write to the Free
  72387. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72388. - 02111-1307 USA. */
  72389. + License along with the GNU C Library; if not, see
  72390. + <http://www.gnu.org/licenses/>. */
  72391. #ifndef _SYS_MMAN_H
  72392. # error "Never use <bits/mman.h> directly; iclude <sys/mman.h> instead."
  72393. @@ -63,7 +62,7 @@
  72394. # define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
  72395. # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
  72396. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  72397. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  72398. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  72399. be uninitialized. */
  72400. #endif
  72401. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/msq.h uClibc/libc/sysdeps/linux/powerpc/bits/msq.h
  72402. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  72403. +++ uClibc/libc/sysdeps/linux/powerpc/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  72404. @@ -12,9 +12,8 @@
  72405. Lesser General Public License for more details.
  72406. You should have received a copy of the GNU Lesser General Public
  72407. - License along with the GNU C Library; if not, write to the Free
  72408. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72409. - 02111-1307 USA. */
  72410. + License along with the GNU C Library; if not, see
  72411. + <http://www.gnu.org/licenses/>. */
  72412. #ifndef _SYS_MSG_H
  72413. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  72414. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sem.h uClibc/libc/sysdeps/linux/powerpc/bits/sem.h
  72415. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  72416. +++ uClibc/libc/sysdeps/linux/powerpc/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  72417. @@ -13,9 +13,8 @@
  72418. Lesser General Public License for more details.
  72419. You should have received a copy of the GNU Lesser General Public
  72420. - License along with the GNU C Library; if not, write to the Free
  72421. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72422. - 02111-1307 USA. */
  72423. + License along with the GNU C Library; if not, see
  72424. + <http://www.gnu.org/licenses/>. */
  72425. #ifndef _SYS_SEM_H
  72426. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  72427. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/setjmp.h uClibc/libc/sysdeps/linux/powerpc/bits/setjmp.h
  72428. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  72429. +++ uClibc/libc/sysdeps/linux/powerpc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  72430. @@ -1,4 +1,5 @@
  72431. -/* Copyright (C) 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
  72432. +/* Copyright (C) 1997,1998,2000,2003,2004,2005,2006
  72433. + Free Software Foundation, Inc.
  72434. This file is part of the GNU C Library.
  72435. The GNU C Library is free software; you can redistribute it and/or
  72436. @@ -12,9 +13,8 @@
  72437. Lesser General Public License for more details.
  72438. You should have received a copy of the GNU Lesser General Public
  72439. - License along with the GNU C Library; if not, write to the Free
  72440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72441. - 02111-1307 USA. */
  72442. + License along with the GNU C Library; if not, see
  72443. + <http://www.gnu.org/licenses/>. */
  72444. /* Define the machine-dependent type `jmp_buf'. PowerPC version. */
  72445. #ifndef _BITS_SETJMP_H
  72446. @@ -31,30 +31,6 @@
  72447. #include <bits/wordsize.h>
  72448. -#if defined __USE_MISC || defined _ASM
  72449. -# define JB_GPR1 0 /* Also known as the stack pointer */
  72450. -# define JB_GPR2 1
  72451. -# define JB_LR 2 /* The address we will return to */
  72452. -# if __WORDSIZE == 64
  72453. -# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
  72454. -# define JB_CR 21 /* Condition code registers with the VRSAVE at */
  72455. - /* offset 172 (low half of the double word. */
  72456. -# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72457. -# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
  72458. -# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
  72459. - /* 168 (high half of the double word). */
  72460. -# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
  72461. -# else
  72462. -# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
  72463. -# define JB_CR 21 /* Condition code registers. */
  72464. -# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72465. -# define JB_SIZE ((64 + (12 * 4)) * 4)
  72466. -# define JB_VRSAVE 62
  72467. -# define JB_VRS 64
  72468. -# endif
  72469. -#endif
  72470. -
  72471. -
  72472. /* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
  72473. the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
  72474. correctly on 32 bit. It also insists that vecregs are only gauranteed
  72475. @@ -62,19 +38,12 @@
  72476. We have to version the code because members like int __mask_was_saved
  72477. in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
  72478. cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
  72479. -#ifndef _ASM
  72480. -# if __WORDSIZE == 64
  72481. +#if __WORDSIZE == 64
  72482. typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
  72483. -# else
  72484. +#else
  72485. /* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
  72486. aligned buffer as per the ABI it is just added for performance reasons. */
  72487. typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
  72488. -# endif
  72489. #endif
  72490. -/* Test if longjmp to JMPBUF would unwind the frame
  72491. - containing a local variable at ADDRESS. */
  72492. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72493. - ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
  72494. -
  72495. -#endif /* bits/setjmp.h */
  72496. +#endif /* bits/setjmp.h */
  72497. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/shm.h uClibc/libc/sysdeps/linux/powerpc/bits/shm.h
  72498. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  72499. +++ uClibc/libc/sysdeps/linux/powerpc/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  72500. @@ -13,9 +13,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_SHM_H
  72509. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  72510. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h
  72511. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  72512. +++ uClibc/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  72513. @@ -12,9 +12,8 @@
  72514. Lesser General Public License for more details.
  72515. You should have received a copy of the GNU Lesser General Public
  72516. - License along with the GNU C Library; if not, write to the Free
  72517. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72518. - 02111-1307 USA. */
  72519. + License along with the GNU C Library; if not, see
  72520. + <http://www.gnu.org/licenses/>. */
  72521. #include <signal.h>
  72522. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stackinfo.h uClibc/libc/sysdeps/linux/powerpc/bits/stackinfo.h
  72523. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  72524. +++ uClibc/libc/sysdeps/linux/powerpc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  72525. @@ -12,9 +12,8 @@
  72526. Lesser General Public License for more details.
  72527. You should have received a copy of the GNU Lesser General Public
  72528. - License along with the GNU C Library; if not, write to the Free
  72529. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72530. - 02111-1307 USA. */
  72531. + License along with the GNU C Library; if not, see
  72532. + <http://www.gnu.org/licenses/>. */
  72533. /* This file contains a bit of information about the stack allocation
  72534. of the processor. */
  72535. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stat.h uClibc/libc/sysdeps/linux/powerpc/bits/stat.h
  72536. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  72537. +++ uClibc/libc/sysdeps/linux/powerpc/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  72538. @@ -13,9 +13,8 @@
  72539. Lesser General Public License for more details.
  72540. You should have received a copy of the GNU Lesser General Public
  72541. - License along with the GNU C Library; if not, write to the Free
  72542. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72543. - 02111-1307 USA. */
  72544. + License along with the GNU C Library; if not, see
  72545. + <http://www.gnu.org/licenses/>. */
  72546. #ifndef _SYS_STAT_H
  72547. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  72548. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/syscalls.h uClibc/libc/sysdeps/linux/powerpc/bits/syscalls.h
  72549. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  72550. +++ uClibc/libc/sysdeps/linux/powerpc/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  72551. @@ -12,9 +12,8 @@
  72552. Lesser General Public License for more details.
  72553. You should have received a copy of the GNU Lesser General Public
  72554. - License along with the GNU C Library; if not, write to the Free
  72555. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72556. - 02111-1307 USA. */
  72557. + License along with the GNU C Library; if not, see
  72558. + <http://www.gnu.org/licenses/>. */
  72559. #ifndef _BITS_SYSCALLS_H
  72560. #define _BITS_SYSCALLS_H
  72561. @@ -168,7 +167,7 @@
  72562. }) \
  72563. )
  72564. # define INTERNAL_SYSCALL_ERROR_P(val, err) \
  72565. - ((void) (val), __builtin_expect ((err) & (1 << 28), 0))
  72566. + ((void) (val), unlikely ((err) & (1 << 28)))
  72567. # define INTERNAL_SYSCALL_ERRNO(val, err) (val)
  72568. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/termios.h uClibc/libc/sysdeps/linux/powerpc/bits/termios.h
  72569. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  72570. +++ uClibc/libc/sysdeps/linux/powerpc/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  72571. @@ -12,9 +12,8 @@
  72572. Lesser General Public License for more details.
  72573. You should have received a copy of the GNU Lesser General Public
  72574. - License along with the GNU C Library; if not, write to the Free
  72575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72576. - 02111-1307 USA. */
  72577. + License along with the GNU C Library; if not, see
  72578. + <http://www.gnu.org/licenses/>. */
  72579. #ifndef _TERMIOS_H
  72580. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  72581. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
  72582. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  72583. +++ uClibc/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  72584. @@ -11,8 +11,8 @@
  72585. /* can your target use syscall6() for mmap ? */
  72586. #define __UCLIBC_MMAP_HAS_6_ARGS__
  72587. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  72588. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  72589. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  72590. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  72591. /* does your target have a broken create_module() ? */
  72592. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  72593. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/brk.S uClibc/libc/sysdeps/linux/powerpc/brk.S
  72594. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/brk.S 2012-05-15 09:20:09.000000000 +0200
  72595. +++ uClibc/libc/sysdeps/linux/powerpc/brk.S 2014-02-03 12:32:56.000000000 +0100
  72596. @@ -13,9 +13,8 @@
  72597. Lesser General Public License for more details.
  72598. You should have received a copy of the GNU Lesser General Public
  72599. - License along with the GNU C Library; if not, write to the Free
  72600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72601. - 02111-1307 USA. */
  72602. + License along with the GNU C Library; if not, see
  72603. + <http://www.gnu.org/licenses/>. */
  72604. #include <features.h>
  72605. #include "ppc_asm.h"
  72606. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-_setjmp.S uClibc/libc/sysdeps/linux/powerpc/bsd-_setjmp.S
  72607. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  72608. +++ uClibc/libc/sysdeps/linux/powerpc/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  72609. @@ -13,9 +13,8 @@
  72610. Lesser General Public License for more details.
  72611. You should have received a copy of the GNU Lesser General Public
  72612. - License along with the GNU C Library; if not, write to the Free
  72613. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72614. - 02111-1307 USA. */
  72615. + License along with the GNU C Library; if not, see
  72616. + <http://www.gnu.org/licenses/>. */
  72617. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  72618. We cannot do it in C because it must be a tail-call, so frame-unwinding
  72619. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-setjmp.S uClibc/libc/sysdeps/linux/powerpc/bsd-setjmp.S
  72620. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  72621. +++ uClibc/libc/sysdeps/linux/powerpc/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  72622. @@ -13,9 +13,8 @@
  72623. Lesser General Public License for more details.
  72624. You should have received a copy of the GNU Lesser General Public
  72625. - License along with the GNU C Library; if not, write to the Free
  72626. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72627. - 02111-1307 USA. */
  72628. + License along with the GNU C Library; if not, see
  72629. + <http://www.gnu.org/licenses/>. */
  72630. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  72631. We cannot do it in C because it must be a tail-call, so frame-unwinding
  72632. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/clone.S uClibc/libc/sysdeps/linux/powerpc/clone.S
  72633. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/clone.S 2012-05-15 09:20:09.000000000 +0200
  72634. +++ uClibc/libc/sysdeps/linux/powerpc/clone.S 2014-02-03 12:32:56.000000000 +0100
  72635. @@ -13,9 +13,8 @@
  72636. Lesser General Public License for more details.
  72637. You should have received a copy of the GNU Lesser General Public
  72638. - License along with the GNU C Library; if not, write to the Free
  72639. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72640. - 02111-1307 USA. */
  72641. + License along with the GNU C Library; if not, see
  72642. + <http://www.gnu.org/licenses/>. */
  72643. #include <features.h>
  72644. #define _ERRNO_H 1
  72645. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/crt1.S uClibc/libc/sysdeps/linux/powerpc/crt1.S
  72646. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/crt1.S 2012-05-15 09:20:09.000000000 +0200
  72647. +++ uClibc/libc/sysdeps/linux/powerpc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  72648. @@ -12,8 +12,8 @@
  72649. * for more details.
  72650. *
  72651. * You should have received a copy of the GNU Library General Public License
  72652. - * along with this program; if not, write to the Free Software Foundation,
  72653. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  72654. + * along with this program; see the file COPYING.LIB. If not, see
  72655. + * <http://www.gnu.org/licenses/>.
  72656. */
  72657. #include <features.h>
  72658. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fenv.h uClibc/libc/sysdeps/linux/powerpc/fenv.h
  72659. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fenv.h 2012-05-15 09:20:09.000000000 +0200
  72660. +++ uClibc/libc/sysdeps/linux/powerpc/fenv.h 2014-02-03 12:32:56.000000000 +0100
  72661. @@ -12,9 +12,8 @@
  72662. Lesser General Public License for more details.
  72663. You should have received a copy of the GNU Lesser General Public
  72664. - License along with the GNU C Library; if not, write to the Free
  72665. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72666. - 02111-1307 USA. */
  72667. + License along with the GNU C Library; if not, see
  72668. + <http://www.gnu.org/licenses/>. */
  72669. /*
  72670. * ISO C99 7.6: Floating-point environment <fenv.h>
  72671. @@ -73,7 +72,7 @@
  72672. /* Set complete status for exceptions indicated by EXCEPTS according to
  72673. the representation in the object pointed to by FLAGP. */
  72674. -extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
  72675. +extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW;
  72676. /* Determine which of subset of the exceptions specified by EXCEPTS are
  72677. currently set. */
  72678. @@ -102,12 +101,12 @@
  72679. /* Establish the floating-point environment represented by the object
  72680. pointed to by ENVP. */
  72681. -extern int fesetenv (__const fenv_t *__envp) __THROW;
  72682. +extern int fesetenv (const fenv_t *__envp) __THROW;
  72683. /* Save current exceptions in temporary storage, install environment
  72684. represented by object pointed to by ENVP and raise exceptions
  72685. according to saved exceptions. */
  72686. -extern int feupdateenv (__const fenv_t *__envp) __THROW;
  72687. +extern int feupdateenv (const fenv_t *__envp) __THROW;
  72688. /* Include optimization. */
  72689. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fpu_control.h uClibc/libc/sysdeps/linux/powerpc/fpu_control.h
  72690. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  72691. +++ uClibc/libc/sysdeps/linux/powerpc/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  72692. @@ -14,9 +14,8 @@
  72693. Lesser General Public License for more details.
  72694. You should have received a copy of the GNU Lesser General Public
  72695. - License along with the GNU C Library; if not, write to the Free
  72696. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72697. - 02111-1307 USA. */
  72698. + License along with the GNU C Library; if not, see
  72699. + <http://www.gnu.org/licenses/>. */
  72700. #ifndef _FPU_CONTROL_H
  72701. #define _FPU_CONTROL_H
  72702. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ioctl.c uClibc/libc/sysdeps/linux/powerpc/ioctl.c
  72703. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ioctl.c 2012-05-15 09:20:09.000000000 +0200
  72704. +++ uClibc/libc/sysdeps/linux/powerpc/ioctl.c 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. #include <stdarg.h>
  72714. #include <termios.h>
  72715. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h
  72716. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  72717. +++ uClibc/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  72718. @@ -0,0 +1,40 @@
  72719. +/* Private macros for accessing __jmp_buf contents. PowerPC version.
  72720. + Copyright (C) 2006 Free Software Foundation, Inc.
  72721. + This file is part of the GNU C Library.
  72722. +
  72723. + The GNU C Library is free software; you can redistribute it and/or
  72724. + modify it under the terms of the GNU Lesser General Public
  72725. + License as published by the Free Software Foundation; either
  72726. + version 2.1 of the License, or (at your option) any later version.
  72727. +
  72728. + The GNU C Library is distributed in the hope that it will be useful,
  72729. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  72730. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  72731. + Lesser General Public License for more details.
  72732. +
  72733. + You should have received a copy of the GNU Lesser General Public
  72734. + License along with the GNU C Library; if not, see
  72735. + <http://www.gnu.org/licenses/>. */
  72736. +
  72737. +#include <bits/wordsize.h>
  72738. +
  72739. +#define JB_GPR1 0 /* Also known as the stack pointer */
  72740. +#define JB_GPR2 1
  72741. +#define JB_LR 2 /* The address we will return to */
  72742. +#if __WORDSIZE == 64
  72743. +# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
  72744. +# define JB_CR 21 /* Condition code registers with the VRSAVE at */
  72745. + /* offset 172 (low half of the double word. */
  72746. +# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72747. +# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
  72748. +# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
  72749. + /* 168 (high half of the double word). */
  72750. +# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
  72751. +#else
  72752. +# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
  72753. +# define JB_CR 21 /* Condition code registers. */
  72754. +# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72755. +# define JB_SIZE ((64 + (12 * 4)) * 4)
  72756. +# define JB_VRSAVE 62
  72757. +# define JB_VRS 64
  72758. +#endif
  72759. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h
  72760. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  72761. +++ uClibc/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  72762. @@ -0,0 +1,23 @@
  72763. +/*
  72764. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72765. + *
  72766. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72767. + */
  72768. +#include <setjmp.h>
  72769. +#include <jmpbuf-offsets.h>
  72770. +
  72771. +/* Test if longjmp to JMPBUF would unwind the frame
  72772. + containing a local variable at ADDRESS. */
  72773. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72774. + ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
  72775. +
  72776. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72777. +#include <stdint.h>
  72778. +#include <unwind.h>
  72779. +
  72780. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  72781. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  72782. +
  72783. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  72784. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_GPR1] - (_adj))
  72785. +#endif
  72786. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/__longjmp.S uClibc/libc/sysdeps/linux/powerpc/__longjmp.S
  72787. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  72788. +++ uClibc/libc/sysdeps/linux/powerpc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  72789. @@ -15,15 +15,12 @@
  72790. Lesser General Public License for more details.
  72791. You should have received a copy of the GNU Lesser General Public
  72792. - License along with the GNU C Library; if not, write to the Free
  72793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72794. - 02111-1307 USA. */
  72795. + License along with the GNU C Library; if not, see
  72796. + <http://www.gnu.org/licenses/>. */
  72797. #include <features.h>
  72798. #include "ppc_asm.h"
  72799. -#define _ASM
  72800. -#define _SETJMP_H
  72801. -#include <bits/setjmp.h>
  72802. +#include <jmpbuf-offsets.h>
  72803. #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  72804. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/Makefile.arch uClibc/libc/sysdeps/linux/powerpc/Makefile.arch
  72805. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  72806. +++ uClibc/libc/sysdeps/linux/powerpc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  72807. @@ -5,18 +5,13 @@
  72808. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72809. #
  72810. -CSRC := __syscall_error.c pread_write.c ioctl.c
  72811. +CSRC-y := __syscall_error.c ioctl.c
  72812. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  72813. -CSRC += posix_fadvise.c posix_fadvise64.c
  72814. -endif
  72815. -
  72816. -SSRC := \
  72817. +SSRC-y := \
  72818. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \
  72819. __uClibc_syscall.S syscall.S
  72820. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  72821. -SSRC += clone.S vfork.S
  72822. -endif
  72823. +
  72824. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += clone.S vfork.S
  72825. ifeq ($(CONFIG_E500),y)
  72826. ARCH_HEADERS := fenv.h
  72827. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise64.c uClibc/libc/sysdeps/linux/powerpc/posix_fadvise64.c
  72828. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  72829. +++ uClibc/libc/sysdeps/linux/powerpc/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  72830. @@ -1,69 +0,0 @@
  72831. -/* vi: set sw=4 ts=4: */
  72832. -/*
  72833. - * posix_fadvise64() for uClibc
  72834. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  72835. - *
  72836. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72837. - *
  72838. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72839. - */
  72840. -
  72841. -#include <features.h>
  72842. -#include <unistd.h>
  72843. -#include <errno.h>
  72844. -#include <endian.h>
  72845. -#include <stdint.h>
  72846. -#include <sys/types.h>
  72847. -#include <sys/syscall.h>
  72848. -#include <fcntl.h>
  72849. -
  72850. -#ifdef __UCLIBC_HAS_LFS__
  72851. -#ifdef __NR_fadvise64_64
  72852. -
  72853. -/* 64 bit implementation is cake ... or more like pie ... */
  72854. -#if __WORDSIZE == 64
  72855. -
  72856. -#define __NR_posix_fadvise64 __NR_fadvise64_64
  72857. -
  72858. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72859. -{
  72860. - if (len != (off_t) len)
  72861. - return EOVERFLOW;
  72862. - INTERNAL_SYSCALL_DECL (err);
  72863. - int ret = INTERNAL_SYSCALL (posix_fadvise64, err, 6, fd, 0,
  72864. - __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  72865. - (off_t) len, advise);
  72866. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  72867. - return 0;
  72868. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72869. -}
  72870. -
  72871. -/* 32 bit implementation is kind of a pita */
  72872. -#elif __WORDSIZE == 32
  72873. -
  72874. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72875. -{
  72876. - INTERNAL_SYSCALL_DECL (err);
  72877. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
  72878. - __LONG_LONG_PAIR((long) (offset >> 32), (long) offset ),
  72879. - __LONG_LONG_PAIR((long) (len >> 32), (long) len));
  72880. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  72881. - return 0;
  72882. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72883. -}
  72884. -
  72885. -#else
  72886. -#error your machine is neither 32 bit or 64 bit ... it must be magical
  72887. -#endif
  72888. -
  72889. -#elif !defined __NR_fadvise64
  72890. -/* This is declared as a strong alias in posix_fadvise.c if __NR_fadvise64
  72891. - * is defined.
  72892. - */
  72893. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72894. -{
  72895. -#warning This is not correct as far as SUSv3 is concerned.
  72896. - return ENOSYS;
  72897. -}
  72898. -#endif /* __NR_fadvise64_64 */
  72899. -#endif /* __UCLIBC_HAS_LFS__ */
  72900. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise.c uClibc/libc/sysdeps/linux/powerpc/posix_fadvise.c
  72901. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  72902. +++ uClibc/libc/sysdeps/linux/powerpc/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  72903. @@ -1,36 +0,0 @@
  72904. -/* vi: set sw=4 ts=4: */
  72905. -/*
  72906. - * posix_fadvise() for uClibc
  72907. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  72908. - *
  72909. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72910. - *
  72911. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72912. - */
  72913. -
  72914. -#include <sys/syscall.h>
  72915. -#include <fcntl.h>
  72916. -
  72917. -#ifdef __NR_fadvise64
  72918. -#define __NR_posix_fadvise __NR_fadvise64
  72919. -int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  72920. -{
  72921. - INTERNAL_SYSCALL_DECL(err);
  72922. - int ret = (int) (INTERNAL_SYSCALL(posix_fadvise, err, 6, fd, 0,
  72923. - __LONG_LONG_PAIR (offset >> 31, offset), len, advice));
  72924. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  72925. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72926. - return 0;
  72927. -}
  72928. -
  72929. -#if defined __UCLIBC_HAS_LFS__ && (!defined __NR_fadvise64_64 || !defined _syscall6)
  72930. -strong_alias(posix_fadvise,posix_fadvise64)
  72931. -#endif
  72932. -
  72933. -#else
  72934. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  72935. -{
  72936. -#warning This is not correct as far as SUSv3 is concerned.
  72937. - return ENOSYS;
  72938. -}
  72939. -#endif
  72940. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h uClibc/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h
  72941. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  72942. +++ uClibc/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  72943. @@ -13,9 +13,8 @@
  72944. Lesser General Public License for more details.
  72945. You should have received a copy of the GNU Lesser General Public
  72946. - License along with the GNU C Library; if not, write to the Free
  72947. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  72948. - 02110-1301 USA. */
  72949. + License along with the GNU C Library; if not, see
  72950. + <http://www.gnu.org/licenses/>. */
  72951. #ifdef __ASSEMBLER__
  72952. @@ -133,6 +132,7 @@
  72953. #define PSEUDO_RET_ERRVAL \
  72954. blr
  72955. +#undef ret_ERRVAL
  72956. #define ret_ERRVAL PSEUDO_RET_ERRVAL
  72957. #undef PSEUDO_END_ERRVAL
  72958. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h uClibc/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h
  72959. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  72960. +++ uClibc/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  72961. @@ -13,9 +13,8 @@
  72962. Lesser General Public License for more details.
  72963. You should have received a copy of the GNU Lesser General Public
  72964. - License along with the GNU C Library; if not, write to the Free
  72965. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  72966. - 02110-1301 USA. */
  72967. + License along with the GNU C Library; if not, see
  72968. + <http://www.gnu.org/licenses/>. */
  72969. #ifdef __ELF__
  72970. @@ -228,6 +227,7 @@
  72971. #define PSEUDO_RET_ERRVAL \
  72972. blr
  72973. +#undef ret_ERRVAL
  72974. #define ret_ERRVAL PSEUDO_RET_ERRVAL
  72975. #undef PSEUDO_END_ERRVAL
  72976. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ppc_asm.h uClibc/libc/sysdeps/linux/powerpc/ppc_asm.h
  72977. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ppc_asm.h 2012-05-15 09:20:09.000000000 +0200
  72978. +++ uClibc/libc/sysdeps/linux/powerpc/ppc_asm.h 2014-02-03 12:32:56.000000000 +0100
  72979. @@ -12,9 +12,8 @@
  72980. Lesser General Public License for more details.
  72981. You should have received a copy of the GNU Lesser General Public
  72982. - License along with the GNU C Library; if not, write to the Free
  72983. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72984. - 02111-1307 USA. */
  72985. + License along with the GNU C Library; if not, see
  72986. + <http://www.gnu.org/licenses/>. */
  72987. #ifdef __ASSEMBLER__
  72988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/pread_write.c uClibc/libc/sysdeps/linux/powerpc/pread_write.c
  72989. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  72990. +++ uClibc/libc/sysdeps/linux/powerpc/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  72991. @@ -1,183 +0,0 @@
  72992. -/* vi: set sw=4 ts=4:
  72993. - *
  72994. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72995. - *
  72996. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72997. - */
  72998. -/* Based in part on the files
  72999. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  73000. - * ./sysdeps/unix/sysv/linux/pread.c,
  73001. - * sysdeps/posix/pread.c
  73002. - * sysdeps/posix/pwrite.c
  73003. - * from GNU libc 2.2.5, but reworked considerably...
  73004. - */
  73005. -
  73006. -#include <sys/syscall.h>
  73007. -#include <unistd.h>
  73008. -#include <endian.h>
  73009. -
  73010. -#ifndef __UCLIBC_HAS_LFS__
  73011. -# define off64_t off_t
  73012. -#endif
  73013. -
  73014. -#ifdef __NR_pread
  73015. -extern __typeof(pread) __libc_pread;
  73016. -# define __NR___syscall_pread __NR_pread
  73017. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd,
  73018. - void *, buf, size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  73019. -
  73020. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  73021. -{
  73022. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset)));
  73023. -}
  73024. -weak_alias(__libc_pread,pread)
  73025. -
  73026. -# ifdef __UCLIBC_HAS_LFS__
  73027. -extern __typeof(pread64) __libc_pread64;
  73028. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  73029. -{
  73030. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 32, offset)));
  73031. -}
  73032. -weak_alias(__libc_pread64,pread64)
  73033. -# endif /* __UCLIBC_HAS_LFS__ */
  73034. -#endif /* __NR_pread */
  73035. -
  73036. -
  73037. -#ifdef __NR_pwrite
  73038. -extern __typeof(pwrite) __libc_pwrite;
  73039. -# define __NR___syscall_pwrite __NR_pwrite
  73040. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd,
  73041. - const void *, buf, size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  73042. -
  73043. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  73044. -{
  73045. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset)));
  73046. -}
  73047. -weak_alias(__libc_pwrite,pwrite)
  73048. -
  73049. -# ifdef __UCLIBC_HAS_LFS__
  73050. -extern __typeof(pwrite64) __libc_pwrite64;
  73051. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  73052. -{
  73053. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 32, offset)));
  73054. -}
  73055. -weak_alias(__libc_pwrite64,pwrite64)
  73056. -# endif /* __UCLIBC_HAS_LFS__ */
  73057. -#endif /* __NR_pwrite */
  73058. -
  73059. -
  73060. -
  73061. -#if ! defined __NR_pread || ! defined __NR_pwrite
  73062. -
  73063. -static ssize_t __fake_pread_write(int fd, void *buf,
  73064. - size_t count, off_t offset, int do_pwrite)
  73065. -{
  73066. - int save_errno;
  73067. - ssize_t result;
  73068. - off_t old_offset;
  73069. -
  73070. - /* Since we must not change the file pointer preserve the
  73071. - * value so that we can restore it later. */
  73072. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  73073. - return -1;
  73074. -
  73075. - /* Set to wanted position. */
  73076. - if (lseek (fd, offset, SEEK_SET) == (off_t) -1)
  73077. - return -1;
  73078. -
  73079. - if (do_pwrite == 1) {
  73080. - /* Write the data. */
  73081. - result = write(fd, buf, count);
  73082. - } else {
  73083. - /* Read the data. */
  73084. - result = read(fd, buf, count);
  73085. - }
  73086. -
  73087. - /* Now we have to restore the position. If this fails we
  73088. - * have to return this as an error. */
  73089. - save_errno = errno;
  73090. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  73091. - {
  73092. - if (result == -1)
  73093. - __set_errno(save_errno);
  73094. - return -1;
  73095. - }
  73096. - __set_errno(save_errno);
  73097. - return(result);
  73098. -}
  73099. -
  73100. -# ifdef __UCLIBC_HAS_LFS__
  73101. -
  73102. -static ssize_t __fake_pread_write64(int fd, void *buf,
  73103. - size_t count, off64_t offset, int do_pwrite)
  73104. -{
  73105. - int save_errno;
  73106. - ssize_t result;
  73107. - off64_t old_offset;
  73108. -
  73109. - /* Since we must not change the file pointer preserve the
  73110. - * value so that we can restore it later. */
  73111. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  73112. - return -1;
  73113. -
  73114. - /* Set to wanted position. */
  73115. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  73116. - return -1;
  73117. -
  73118. - if (do_pwrite == 1) {
  73119. - /* Write the data. */
  73120. - result = write(fd, buf, count);
  73121. - } else {
  73122. - /* Read the data. */
  73123. - result = read(fd, buf, count);
  73124. - }
  73125. -
  73126. - /* Now we have to restore the position. */
  73127. - save_errno = errno;
  73128. - if (lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) {
  73129. - if (result == -1)
  73130. - __set_errno (save_errno);
  73131. - return -1;
  73132. - }
  73133. - __set_errno (save_errno);
  73134. - return result;
  73135. -}
  73136. -# endif /* __UCLIBC_HAS_LFS__ */
  73137. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  73138. -
  73139. -#ifndef __NR_pread
  73140. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset);
  73141. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  73142. -{
  73143. - return(__fake_pread_write(fd, buf, count, offset, 0));
  73144. -}
  73145. -weak_alias(__libc_pread,pread)
  73146. -
  73147. -# ifdef __UCLIBC_HAS_LFS__
  73148. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset);
  73149. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  73150. -{
  73151. - return(__fake_pread_write64(fd, buf, count, offset, 0));
  73152. -}
  73153. -weak_alias(__libc_pread64,pread64)
  73154. -# endif /* __UCLIBC_HAS_LFS__ */
  73155. -#endif /* ! __NR_pread */
  73156. -
  73157. -
  73158. -#ifndef __NR_pwrite
  73159. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset);
  73160. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  73161. -{
  73162. - return(__fake_pread_write(fd, (void*)buf, count, offset, 1));
  73163. -}
  73164. -weak_alias(__libc_pwrite,pwrite)
  73165. -
  73166. -# ifdef __UCLIBC_HAS_LFS__
  73167. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset);
  73168. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  73169. -{
  73170. - return(__fake_pread_write64(fd, (void*)buf, count, offset, 1));
  73171. -}
  73172. -weak_alias(__libc_pwrite64,pwrite64)
  73173. -# endif /* __UCLIBC_HAS_LFS__ */
  73174. -#endif /* ! __NR_pwrite */
  73175. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/setjmp.S uClibc/libc/sysdeps/linux/powerpc/setjmp.S
  73176. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  73177. +++ uClibc/libc/sysdeps/linux/powerpc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  73178. @@ -15,15 +15,12 @@
  73179. Lesser General Public License for more details.
  73180. You should have received a copy of the GNU Lesser General Public
  73181. - License along with the GNU C Library; if not, write to the Free
  73182. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73183. - 02111-1307 USA. */
  73184. + License along with the GNU C Library; if not, see
  73185. + <http://www.gnu.org/licenses/>. */
  73186. #include <features.h>
  73187. #include "ppc_asm.h"
  73188. -#define _ASM
  73189. -#define _SETJMP_H
  73190. -#include <bits/setjmp.h>
  73191. +#include <jmpbuf-offsets.h>
  73192. #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  73193. #define FP(x...) x
  73194. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/procfs.h uClibc/libc/sysdeps/linux/powerpc/sys/procfs.h
  73195. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  73196. +++ uClibc/libc/sysdeps/linux/powerpc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  73197. @@ -12,9 +12,8 @@
  73198. Lesser General Public License for more details.
  73199. You should have received a copy of the GNU Lesser General Public
  73200. - License along with the GNU C Library; if not, write to the Free
  73201. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73202. - 02111-1307 USA. */
  73203. + License along with the GNU C Library; if not, see
  73204. + <http://www.gnu.org/licenses/>. */
  73205. #ifndef _SYS_PROCFS_H
  73206. #define _SYS_PROCFS_H 1
  73207. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ptrace.h uClibc/libc/sysdeps/linux/powerpc/sys/ptrace.h
  73208. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  73209. +++ uClibc/libc/sysdeps/linux/powerpc/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  73210. @@ -13,9 +13,8 @@
  73211. Lesser General Public License for more details.
  73212. You should have received a copy of the GNU Lesser General Public
  73213. - License along with the GNU C Library; if not, write to the Free
  73214. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73215. - 02111-1307 USA. */
  73216. + License along with the GNU C Library; if not, see
  73217. + <http://www.gnu.org/licenses/>. */
  73218. #ifndef _SYS_PTRACE_H
  73219. #define _SYS_PTRACE_H 1
  73220. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ucontext.h uClibc/libc/sysdeps/linux/powerpc/sys/ucontext.h
  73221. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  73222. +++ uClibc/libc/sysdeps/linux/powerpc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  73223. @@ -12,9 +12,8 @@
  73224. Lesser General Public License for more details.
  73225. You should have received a copy of the GNU Lesser General Public
  73226. - License along with the GNU C Library; if not, write to the Free
  73227. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73228. - 02111-1307 USA. */
  73229. + License along with the GNU C Library; if not, see
  73230. + <http://www.gnu.org/licenses/>. */
  73231. #ifndef _SYS_UCONTEXT_H
  73232. #define _SYS_UCONTEXT_H 1
  73233. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/user.h uClibc/libc/sysdeps/linux/powerpc/sys/user.h
  73234. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  73235. +++ uClibc/libc/sysdeps/linux/powerpc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  73236. @@ -12,9 +12,8 @@
  73237. Lesser General Public License for more details.
  73238. You should have received a copy of the GNU Lesser General Public
  73239. - License along with the GNU C Library; if not, write to the Free
  73240. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73241. - 02111-1307 USA. */
  73242. + License along with the GNU C Library; if not, see
  73243. + <http://www.gnu.org/licenses/>. */
  73244. #ifndef _SYS_USER_H
  73245. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/syscall.S uClibc/libc/sysdeps/linux/powerpc/syscall.S
  73246. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/syscall.S 2012-05-15 09:20:09.000000000 +0200
  73247. +++ uClibc/libc/sysdeps/linux/powerpc/syscall.S 2014-02-03 12:32:56.000000000 +0100
  73248. @@ -12,9 +12,8 @@
  73249. Lesser General Public License for more details.
  73250. You should have received a copy of the GNU Lesser General Public
  73251. - License along with the GNU C Library; if not, write to the Free
  73252. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73253. - 02111-1307 USA. */
  73254. + License along with the GNU C Library; if not, see
  73255. + <http://www.gnu.org/licenses/>. */
  73256. #include <features.h>
  73257. @@ -30,6 +29,7 @@
  73258. mr 5,6
  73259. mr 6,7
  73260. mr 7,8
  73261. + mr 8,9
  73262. sc
  73263. bnslr;
  73264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sysdep.h uClibc/libc/sysdeps/linux/powerpc/sysdep.h
  73265. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  73266. +++ uClibc/libc/sysdeps/linux/powerpc/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  73267. @@ -12,9 +12,8 @@
  73268. Lesser General Public License for more details.
  73269. You should have received a copy of the GNU Lesser General Public
  73270. - License along with the GNU C Library; if not, write to the Free
  73271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73272. - 02111-1307 USA. */
  73273. + License along with the GNU C Library; if not, see
  73274. + <http://www.gnu.org/licenses/>. */
  73275. #include <common/sysdep.h>
  73276. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/vfork.S uClibc/libc/sysdeps/linux/powerpc/vfork.S
  73277. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/vfork.S 2012-05-15 09:20:09.000000000 +0200
  73278. +++ uClibc/libc/sysdeps/linux/powerpc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  73279. @@ -27,4 +27,4 @@
  73280. .size __vfork,.-__vfork
  73281. weak_alias(__vfork,vfork)
  73282. -libc_hidden_weak(vfork)
  73283. +libc_hidden_def(vfork)
  73284. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/README uClibc/libc/sysdeps/linux/README
  73285. --- uClibc-0.9.33.2/libc/sysdeps/linux/README 2012-05-15 09:20:09.000000000 +0200
  73286. +++ uClibc/libc/sysdeps/linux/README 2014-02-03 12:32:56.000000000 +0100
  73287. @@ -4,4 +4,7 @@
  73288. to add that support.
  73289. All stuff that is not at all dependent on a particular Linux architecture
  73290. -goes in the 'common' directory.
  73291. +goes in the 'common' directory. However, for new architectures which are
  73292. +using the generic syscalls in the Linux Kernel, the 'common-generic'
  73293. +directory should be used instead as they all use identical interfaces for
  73294. +the system calls.
  73295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/atomic.h uClibc/libc/sysdeps/linux/sh/bits/atomic.h
  73296. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  73297. +++ uClibc/libc/sysdeps/linux/sh/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  73298. @@ -13,9 +13,8 @@
  73299. Lesser General Public License for more details.
  73300. You should have received a copy of the GNU Lesser General Public
  73301. - License along with the GNU C Library; if not, write to the Free
  73302. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73303. - 02111-1307 USA. */
  73304. + License along with the GNU C Library; if not, see
  73305. + <http://www.gnu.org/licenses/>. */
  73306. #include <stdint.h>
  73307. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fcntl.h uClibc/libc/sysdeps/linux/sh/bits/fcntl.h
  73308. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  73309. +++ uClibc/libc/sysdeps/linux/sh/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  73310. @@ -14,9 +14,8 @@
  73311. Lesser General Public License for more details.
  73312. You should have received a copy of the GNU Lesser General Public
  73313. - License along with the GNU C Library; if not, write to the Free
  73314. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73315. - 02111-1307 USA. */
  73316. + License along with the GNU C Library; if not, see
  73317. + <http://www.gnu.org/licenses/>. */
  73318. #ifndef _FCNTL_H
  73319. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  73320. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fenv.h uClibc/libc/sysdeps/linux/sh/bits/fenv.h
  73321. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  73322. +++ uClibc/libc/sysdeps/linux/sh/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  73323. @@ -12,9 +12,8 @@
  73324. Lesser General Public License for more details.
  73325. You should have received a copy of the GNU Lesser General Public
  73326. - License along with the GNU C Library; if not, write to the Free
  73327. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73328. - 02111-1307 USA. */
  73329. + License along with the GNU C Library; if not, see
  73330. + <http://www.gnu.org/licenses/>. */
  73331. #ifndef _FENV_H
  73332. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  73333. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/huge_val.h uClibc/libc/sysdeps/linux/sh/bits/huge_val.h
  73334. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  73335. +++ uClibc/libc/sysdeps/linux/sh/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  73336. @@ -16,9 +16,8 @@
  73337. Lesser General Public License for more details.
  73338. You should have received a copy of the GNU Lesser General Public
  73339. - License along with the GNU C Library; if not, write to the Free
  73340. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73341. - 02111-1307 USA. */
  73342. + License along with the GNU C Library; if not, see
  73343. + <http://www.gnu.org/licenses/>. */
  73344. #ifndef _MATH_H
  73345. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  73346. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/kernel_types.h uClibc/libc/sysdeps/linux/sh/bits/kernel_types.h
  73347. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  73348. +++ uClibc/libc/sysdeps/linux/sh/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  73349. @@ -32,6 +32,8 @@
  73350. typedef unsigned short __kernel_old_uid_t;
  73351. typedef unsigned short __kernel_old_gid_t;
  73352. typedef __kernel_dev_t __kernel_old_dev_t;
  73353. +typedef long __kernel_long_t;
  73354. +typedef unsigned long __kernel_ulong_t;
  73355. typedef long long __kernel_loff_t;
  73356. typedef struct {
  73357. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/mathdef.h uClibc/libc/sysdeps/linux/sh/bits/mathdef.h
  73358. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  73359. +++ uClibc/libc/sysdeps/linux/sh/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  73360. @@ -12,9 +12,8 @@
  73361. Lesser General Public License for more details.
  73362. You should have received a copy of the GNU Lesser General Public
  73363. - License along with the GNU C Library; if not, write to the Free
  73364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73365. - 02111-1307 USA. */
  73366. + License along with the GNU C Library; if not, see
  73367. + <http://www.gnu.org/licenses/>. */
  73368. #if !defined _MATH_H && !defined _COMPLEX_H
  73369. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  73370. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/setjmp.h uClibc/libc/sysdeps/linux/sh/bits/setjmp.h
  73371. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  73372. +++ uClibc/libc/sysdeps/linux/sh/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  73373. @@ -1,4 +1,4 @@
  73374. -/* Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc.
  73375. +/* Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
  73376. This file is part of the GNU C Library.
  73377. The GNU C Library is free software; you can redistribute it and/or
  73378. @@ -12,19 +12,17 @@
  73379. Lesser General Public License for more details.
  73380. You should have received a copy of the GNU Lesser General Public
  73381. - License along with the GNU C Library; if not, write to the Free
  73382. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73383. - 02111-1307 USA. */
  73384. + License along with the GNU C Library; if not, see
  73385. + <http://www.gnu.org/licenses/>. */
  73386. /* Define the machine-dependent type `jmp_buf'. SH version. */
  73387. #ifndef _BITS_SETJMP_H
  73388. -#define _BITS_SETJMP_H 1
  73389. +#define _BITS_SETJMP_H 1
  73390. #if !defined _SETJMP_H && !defined _PTHREAD_H
  73391. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  73392. #endif
  73393. -#ifndef _ASM
  73394. typedef struct
  73395. {
  73396. /* Callee-saved registers r8 through r15. */
  73397. @@ -42,15 +40,5 @@
  73398. /* Callee-saved floating point registers fr12 through fr15. */
  73399. int __fpregs[4];
  73400. } __jmp_buf[1];
  73401. -#endif
  73402. -
  73403. -#if defined __USE_MISC || defined _ASM
  73404. -# define JB_SIZE (4 * 15)
  73405. -#endif
  73406. -
  73407. -/* Test if longjmp to JMPBUF would unwind the frame
  73408. - containing a local variable at ADDRESS. */
  73409. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  73410. - ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
  73411. -#endif /* bits/setjmp.h */
  73412. +#endif /* bits/setjmp.h */
  73413. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/shm.h uClibc/libc/sysdeps/linux/sh/bits/shm.h
  73414. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  73415. +++ uClibc/libc/sysdeps/linux/sh/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  73416. @@ -12,9 +12,8 @@
  73417. Lesser General Public License for more details.
  73418. You should have received a copy of the GNU Lesser General Public
  73419. - License along with the GNU C Library; if not, write to the Free
  73420. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73421. - 02111-1307 USA. */
  73422. + License along with the GNU C Library; if not, see
  73423. + <http://www.gnu.org/licenses/>. */
  73424. #ifndef _SYS_SHM_H
  73425. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  73426. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/sh/bits/sigcontextinfo.h
  73427. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  73428. +++ uClibc/libc/sysdeps/linux/sh/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  73429. @@ -13,9 +13,8 @@
  73430. Lesser General Public License for more details.
  73431. You should have received a copy of the GNU Lesser General Public
  73432. - License along with the GNU C Library; if not, write to the Free
  73433. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73434. - 02111-1307 USA. */
  73435. + License along with the GNU C Library; if not, see
  73436. + <http://www.gnu.org/licenses/>. */
  73437. #define SIGCONTEXT int _a2, int _a3, int _a4, struct sigcontext
  73438. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/stackinfo.h uClibc/libc/sysdeps/linux/sh/bits/stackinfo.h
  73439. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  73440. +++ uClibc/libc/sysdeps/linux/sh/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  73441. @@ -12,9 +12,8 @@
  73442. Lesser General Public License for more details.
  73443. You should have received a copy of the GNU Lesser General Public
  73444. - License along with the GNU C Library; if not, write to the Free
  73445. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73446. - 02111-1307 USA. */
  73447. + License along with the GNU C Library; if not, see
  73448. + <http://www.gnu.org/licenses/>. */
  73449. /* This file contains a bit of information about the stack allocation
  73450. of the processor. */
  73451. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
  73452. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  73453. +++ uClibc/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  73454. @@ -15,8 +15,8 @@
  73455. /* can your target use syscall6() for mmap ? */
  73456. #define __UCLIBC_MMAP_HAS_6_ARGS__
  73457. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  73458. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  73459. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  73460. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  73461. /* does your target have a broken create_module() ? */
  73462. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  73463. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/wordsize.h uClibc/libc/sysdeps/linux/sh/bits/wordsize.h
  73464. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  73465. +++ uClibc/libc/sysdeps/linux/sh/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  73466. @@ -12,8 +12,7 @@
  73467. Lesser General Public License for more details.
  73468. You should have received a copy of the GNU Lesser General Public
  73469. - License along with the GNU C Library; if not, write to the Free
  73470. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73471. - 02111-1307 USA. */
  73472. + License along with the GNU C Library; if not, see
  73473. + <http://www.gnu.org/licenses/>. */
  73474. #define __WORDSIZE 32
  73475. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/cacheflush.c uClibc/libc/sysdeps/linux/sh/cacheflush.c
  73476. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  73477. +++ uClibc/libc/sysdeps/linux/sh/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  73478. @@ -6,10 +6,9 @@
  73479. *
  73480. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  73481. */
  73482. -#include <errno.h>
  73483. -#include <unistd.h>
  73484. #include <sys/syscall.h>
  73485. #ifdef __NR_cacheflush
  73486. -_syscall3(int, cacheflush, char *, addr, int, nbytes, int, op)
  73487. +int cacheflush(void *addr, const int nbytes, int op);
  73488. +_syscall3(int, cacheflush, void *, addr, const int, nbytes, const int, op)
  73489. #endif
  73490. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/clone.S uClibc/libc/sysdeps/linux/sh/clone.S
  73491. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/clone.S 2012-05-15 09:20:09.000000000 +0200
  73492. +++ uClibc/libc/sysdeps/linux/sh/clone.S 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. /* clone() is even more special than fork() as it mucks with stacks
  73502. and invokes a function in the right context after its all over. */
  73503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/crt1.S uClibc/libc/sysdeps/linux/sh/crt1.S
  73504. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/crt1.S 2012-05-15 09:20:09.000000000 +0200
  73505. +++ uClibc/libc/sysdeps/linux/sh/crt1.S 2014-02-03 12:32:56.000000000 +0100
  73506. @@ -14,8 +14,7 @@
  73507. details.
  73508. You should have received a copy of the GNU Library General Public License
  73509. - along with this program; if not, write to the Free Software Foundation, Inc.,
  73510. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  73511. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  73512. */
  73513. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/___fpscr_values.S uClibc/libc/sysdeps/linux/sh/___fpscr_values.S
  73514. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/___fpscr_values.S 2012-05-15 09:20:09.000000000 +0200
  73515. +++ uClibc/libc/sysdeps/linux/sh/___fpscr_values.S 2014-02-03 12:32:56.000000000 +0100
  73516. @@ -14,8 +14,7 @@
  73517. details.
  73518. You should have received a copy of the GNU Library General Public License
  73519. - along with this program; if not, write to the Free Software Foundation, Inc.,
  73520. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  73521. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  73522. */
  73523. #include <features.h>
  73524. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/fpu_control.h uClibc/libc/sysdeps/linux/sh/fpu_control.h
  73525. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  73526. +++ uClibc/libc/sysdeps/linux/sh/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  73527. @@ -13,9 +13,8 @@
  73528. Lesser General Public License for more details.
  73529. You should have received a copy of the GNU Lesser General Public
  73530. - License along with the GNU C Library; if not, write to the Free
  73531. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73532. - 02111-1307 USA. */
  73533. + License along with the GNU C Library; if not, see
  73534. + <http://www.gnu.org/licenses/>. */
  73535. #ifndef _FPU_CONTROL_H
  73536. #define _FPU_CONTROL_H
  73537. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/sh/jmpbuf-offsets.h
  73538. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  73539. +++ uClibc/libc/sysdeps/linux/sh/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  73540. @@ -0,0 +1,19 @@
  73541. +/* Private macros for accessing __jmp_buf contents. SH version.
  73542. + Copyright (C) 2006 Free Software Foundation, Inc.
  73543. + This file is part of the GNU C Library.
  73544. +
  73545. + The GNU C Library is free software; you can redistribute it and/or
  73546. + modify it under the terms of the GNU Lesser General Public
  73547. + License as published by the Free Software Foundation; either
  73548. + version 2.1 of the License, or (at your option) any later version.
  73549. +
  73550. + The GNU C Library is distributed in the hope that it will be useful,
  73551. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  73552. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  73553. + Lesser General Public License for more details.
  73554. +
  73555. + You should have received a copy of the GNU Lesser General Public
  73556. + License along with the GNU C Library; if not, see
  73557. + <http://www.gnu.org/licenses/>. */
  73558. +
  73559. +#define JB_SIZE (4 * 15)
  73560. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/sh/jmpbuf-unwind.h
  73561. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  73562. +++ uClibc/libc/sysdeps/linux/sh/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  73563. @@ -0,0 +1,22 @@
  73564. +/*
  73565. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  73566. + *
  73567. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  73568. + */
  73569. +#include <setjmp.h>
  73570. +
  73571. +/* Test if longjmp to JMPBUF would unwind the frame
  73572. + containing a local variable at ADDRESS. */
  73573. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  73574. + ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
  73575. +
  73576. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73577. +#include <stdint.h>
  73578. +#include <unwind.h>
  73579. +
  73580. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  73581. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  73582. +
  73583. +#define _JMPBUF_UNWINDS_ADJ(jmpbuf, address, adj) \
  73584. + ((uintptr_t) (address) - (adj) < (uintptr_t) (jmpbuf)[0].__regs[7] - (adj))
  73585. +#endif
  73586. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/__longjmp.S uClibc/libc/sysdeps/linux/sh/__longjmp.S
  73587. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  73588. +++ uClibc/libc/sysdeps/linux/sh/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  73589. @@ -14,12 +14,8 @@
  73590. You should have received a copy of the GNU Library General Public
  73591. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73592. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73593. - Boston, MA 02111-1307, USA. */
  73594. + see <http://www.gnu.org/licenses/>. */
  73595. -#define _SETJMP_H
  73596. -#define _ASM
  73597. -#include <bits/setjmp.h>
  73598. #include <features.h>
  73599. /* __longjmp(jmpbuf, val) */
  73600. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/Makefile.arch uClibc/libc/sysdeps/linux/sh/Makefile.arch
  73601. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  73602. +++ uClibc/libc/sysdeps/linux/sh/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  73603. @@ -6,7 +6,10 @@
  73604. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  73605. #
  73606. -CSRC := \
  73607. - mmap.c pipe.c __init_brk.c brk.c sbrk.c pread_write.c cacheflush.c
  73608. +CSRC-y := \
  73609. + pipe.c __init_brk.c brk.c sbrk.c pread_write.c
  73610. -SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S clone.S
  73611. +SSRC-y := setjmp.S __longjmp.S ___fpscr_values.S
  73612. +
  73613. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c
  73614. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += clone.S vfork.S
  73615. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/mmap.c uClibc/libc/sysdeps/linux/sh/mmap.c
  73616. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/mmap.c 2012-05-15 09:20:09.000000000 +0200
  73617. +++ uClibc/libc/sysdeps/linux/sh/mmap.c 1970-01-01 01:00:00.000000000 +0100
  73618. @@ -1,34 +0,0 @@
  73619. -/* Copyright (C) 2001 Hewlett-Packard
  73620. -
  73621. - This program is free software; you can redistribute it and/or modify it under
  73622. - the terms of the GNU Library General Public License as published by the Free
  73623. - Software Foundation; either version 2 of the License, or (at your option) any
  73624. - later version.
  73625. -
  73626. - This program is distributed in the hope that it will be useful, but WITHOUT
  73627. - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  73628. - FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
  73629. - details.
  73630. -
  73631. - You should have received a copy of the GNU Library General Public License
  73632. - along with this program; if not, write to the Free Software Foundation, Inc.,
  73633. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  73634. -
  73635. - Derived in part from the Linux-8086 C library, the GNU C Library, and several
  73636. - other sundry sources. Files within this library are copyright by their
  73637. - respective copyright holders.
  73638. -*/
  73639. -
  73640. -#include <unistd.h>
  73641. -#include <errno.h>
  73642. -#include <sys/mman.h>
  73643. -
  73644. -
  73645. -#ifdef HIOS
  73646. -# define __SH_SYSCALL6_TRAPA 0x2E
  73647. -#endif
  73648. -
  73649. -#include <sys/syscall.h>
  73650. -
  73651. -_syscall6(__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, offset)
  73652. -libc_hidden_def(mmap)
  73653. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/pread_write.c uClibc/libc/sysdeps/linux/sh/pread_write.c
  73654. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  73655. +++ uClibc/libc/sysdeps/linux/sh/pread_write.c 2014-02-03 12:32:56.000000000 +0100
  73656. @@ -4,122 +4,8 @@
  73657. *
  73658. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  73659. */
  73660. -/*
  73661. - * Based in part on the files
  73662. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  73663. - * ./sysdeps/unix/sysv/linux/pread.c,
  73664. - * sysdeps/posix/pread.c
  73665. - * sysdeps/posix/pwrite.c
  73666. - * from GNU libc 2.2.5, but reworked considerably...
  73667. - */
  73668. -
  73669. -#include <sys/syscall.h>
  73670. -#include <unistd.h>
  73671. -#include <stdint.h>
  73672. -#include <endian.h>
  73673. -
  73674. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73675. -#include <sysdep-cancel.h>
  73676. -#else
  73677. -#define SINGLE_THREAD_P 1
  73678. -#endif
  73679. -
  73680. -
  73681. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  73682. -# ifdef __NR_pread
  73683. -# error "__NR_pread and __NR_pread64 both defined???"
  73684. -# endif
  73685. -# define __NR_pread __NR_pread64
  73686. -#endif
  73687. -
  73688. -#ifdef __NR_pread
  73689. -extern __typeof(pread) __libc_pread;
  73690. -# define __NR___syscall_pread __NR_pread
  73691. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  73692. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  73693. -
  73694. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  73695. -{
  73696. - if (SINGLE_THREAD_P)
  73697. - return(__syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset)));
  73698. -
  73699. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73700. - int oldtype = LIBC_CANCEL_ASYNC ();
  73701. - ssize_t result = __syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  73702. - LIBC_CANCEL_RESET (oldtype);
  73703. - return result;
  73704. -#endif
  73705. -}
  73706. -weak_alias(__libc_pread,pread)
  73707. -
  73708. -# ifdef __UCLIBC_HAS_LFS__
  73709. -extern __typeof(pread64) __libc_pread64;
  73710. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  73711. -{
  73712. - uint32_t low = offset & 0xffffffff;
  73713. - uint32_t high = offset >> 32;
  73714. -
  73715. - if (SINGLE_THREAD_P)
  73716. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73717. -
  73718. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73719. - int oldtype = LIBC_CANCEL_ASYNC ();
  73720. - ssize_t result = __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73721. - LIBC_CANCEL_RESET (oldtype);
  73722. - return result;
  73723. -#endif
  73724. -}
  73725. -weak_alias(__libc_pread64,pread64)
  73726. -# endif /* __UCLIBC_HAS_LFS__ */
  73727. -#endif /* __NR_pread */
  73728. -
  73729. -/**********************************************************************/
  73730. -
  73731. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  73732. -# ifdef __NR_pwrite
  73733. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  73734. -# endif
  73735. -# define __NR_pwrite __NR_pwrite64
  73736. -#endif
  73737. -
  73738. -#ifdef __NR_pwrite
  73739. -extern __typeof(pwrite) __libc_pwrite;
  73740. -# define __NR___syscall_pwrite __NR_pwrite
  73741. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  73742. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  73743. -
  73744. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  73745. -{
  73746. - if (SINGLE_THREAD_P)
  73747. - return __syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  73748. -
  73749. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73750. - int oldtype = LIBC_CANCEL_ASYNC ();
  73751. - ssize_t result = __syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  73752. - LIBC_CANCEL_RESET (oldtype);
  73753. - return result;
  73754. -#endif
  73755. -
  73756. -}
  73757. -weak_alias(__libc_pwrite,pwrite)
  73758. -
  73759. -# ifdef __UCLIBC_HAS_LFS__
  73760. -extern __typeof(pwrite64) __libc_pwrite64;
  73761. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  73762. -{
  73763. - uint32_t low = offset & 0xffffffff;
  73764. - uint32_t high = offset >> 32;
  73765. -
  73766. - if (SINGLE_THREAD_P)
  73767. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73768. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73769. - int oldtype = LIBC_CANCEL_ASYNC ();
  73770. - ssize_t result = __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73771. - LIBC_CANCEL_RESET (oldtype);
  73772. - return result;
  73773. -#endif
  73774. -}
  73775. -weak_alias(__libc_pwrite64,pwrite64)
  73776. -# endif /* __UCLIBC_HAS_LFS__ */
  73777. -#endif /* __NR_pwrite */
  73778. +/* SuperH doesn't have this alignment issue. It just decided to copy
  73779. + * the syscall interface from another arch for no good reason. */
  73780. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  73781. +#include "../common/pread_write.c"
  73782. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/setjmp.S uClibc/libc/sysdeps/linux/sh/setjmp.S
  73783. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  73784. +++ uClibc/libc/sysdeps/linux/sh/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  73785. @@ -14,13 +14,10 @@
  73786. You should have received a copy of the GNU Library General Public
  73787. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73788. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73789. - Boston, MA 02111-1307, USA. */
  73790. + see <http://www.gnu.org/licenses/>. */
  73791. #include <features.h>
  73792. -#define _SETJMP_H
  73793. -#define _ASM
  73794. -#include <bits/setjmp.h>
  73795. +#include <jmpbuf-offsets.h>
  73796. .text
  73797. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/io.h uClibc/libc/sysdeps/linux/sh/sys/io.h
  73798. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  73799. +++ uClibc/libc/sysdeps/linux/sh/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  73800. @@ -12,9 +12,8 @@
  73801. Lesser General Public License for more details.
  73802. You should have received a copy of the GNU Lesser General Public
  73803. - License along with the GNU C Library; if not, write to the Free
  73804. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73805. - 02111-1307 USA. */
  73806. + License along with the GNU C Library; if not, see
  73807. + <http://www.gnu.org/licenses/>. */
  73808. #ifndef _SYS_IO_H
  73809. @@ -23,17 +22,18 @@
  73810. __BEGIN_DECLS
  73811. +#if defined __UCLIBC_LINUX_SPECIFIC__
  73812. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  73813. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  73814. permission off for that range. This call requires root privileges. */
  73815. extern int ioperm (unsigned long int __from, unsigned long int __num,
  73816. int __turn_on) __THROW;
  73817. -libc_hidden_proto(ioperm)
  73818. /* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  73819. permission to access any I/O port is granted. This call requires
  73820. root privileges. */
  73821. extern int iopl (int __level) __THROW;
  73822. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  73823. /* The functions that actually perform reads and writes. */
  73824. extern unsigned char inb (unsigned long int port) __THROW;
  73825. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/procfs.h uClibc/libc/sysdeps/linux/sh/sys/procfs.h
  73826. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  73827. +++ uClibc/libc/sysdeps/linux/sh/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  73828. @@ -12,9 +12,8 @@
  73829. Lesser General Public License for more details.
  73830. You should have received a copy of the GNU Lesser General Public
  73831. - License along with the GNU C Library; if not, write to the Free
  73832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73833. - 02111-1307 USA. */
  73834. + License along with the GNU C Library; if not, see
  73835. + <http://www.gnu.org/licenses/>. */
  73836. #ifndef _SYS_PROCFS_H
  73837. #define _SYS_PROCFS_H 1
  73838. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/ucontext.h uClibc/libc/sysdeps/linux/sh/sys/ucontext.h
  73839. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  73840. +++ uClibc/libc/sysdeps/linux/sh/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  73841. @@ -12,9 +12,8 @@
  73842. Lesser General Public License for more details.
  73843. You should have received a copy of the GNU Lesser General Public
  73844. - License along with the GNU C Library; if not, write to the Free
  73845. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73846. - 02111-1307 USA. */
  73847. + License along with the GNU C Library; if not, see
  73848. + <http://www.gnu.org/licenses/>. */
  73849. /* Where is System V/SH ABI? */
  73850. @@ -32,10 +31,10 @@
  73851. typedef int greg_t;
  73852. /* Number of general registers. */
  73853. -#define NFPREG 16
  73854. +#define NGREG 16
  73855. /* Container for all general registers. */
  73856. -typedef greg_t gregset_t[NFPREG];
  73857. +typedef greg_t gregset_t[NGREG];
  73858. #ifdef __USE_GNU
  73859. /* Number of each register is the `gregset_t' array. */
  73860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/user.h uClibc/libc/sysdeps/linux/sh/sys/user.h
  73861. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  73862. +++ uClibc/libc/sysdeps/linux/sh/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  73863. @@ -12,9 +12,8 @@
  73864. Lesser General Public License for more details.
  73865. You should have received a copy of the GNU Lesser General Public
  73866. - License along with the GNU C Library; if not, write to the Free
  73867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73868. - 02111-1307 USA. */
  73869. + License along with the GNU C Library; if not, see
  73870. + <http://www.gnu.org/licenses/>. */
  73871. #ifndef _SYS_USER_H
  73872. #define _SYS_USER_H 1
  73873. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sysdep.h uClibc/libc/sysdeps/linux/sh/sysdep.h
  73874. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  73875. +++ uClibc/libc/sysdeps/linux/sh/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  73876. @@ -13,14 +13,12 @@
  73877. Lesser General Public License for more details.
  73878. You should have received a copy of the GNU Lesser General Public
  73879. - License along with the GNU C Library; if not, write to the Free
  73880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73881. - 02111-1307 USA. */
  73882. + License along with the GNU C Library; if not, see
  73883. + <http://www.gnu.org/licenses/>. */
  73884. #include <common/sysdep.h>
  73885. #include <features.h>
  73886. -#include <libc-internal.h>
  73887. #ifdef __ASSEMBLER__
  73888. @@ -143,8 +141,6 @@
  73889. #define PSEUDO_END_ERRVAL(name) \
  73890. END (name)
  73891. -#define ret_ERRVAL ret
  73892. -
  73893. #ifndef __PIC__
  73894. # define SYSCALL_ERROR_HANDLER \
  73895. mov.l 0f,r1; \
  73896. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/vfork.S uClibc/libc/sysdeps/linux/sh/vfork.S
  73897. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  73898. +++ uClibc/libc/sysdeps/linux/sh/vfork.S 2014-02-03 12:32:56.000000000 +0100
  73899. @@ -12,19 +12,16 @@
  73900. details.
  73901. You should have received a copy of the GNU Library General Public License
  73902. - along with this program; if not, write to the Free Software Foundation, Inc.,
  73903. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  73904. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  73905. Derived in part from the Linux-8086 C library, the GNU C Library, and several
  73906. other sundry sources. Files within this library are copyright by their
  73907. respective copyright holders.
  73908. */
  73909. -#include <features.h>
  73910. #include <sys/syscall.h>
  73911. #define _ERRNO_H
  73912. #include <bits/errno.h>
  73913. -#include <bits/sysnum.h>
  73914. /* Clone the calling process, but without copying the whole address space.
  73915. The calling process is suspended until the new process exits or is
  73916. @@ -109,6 +106,6 @@
  73917. .size __vfork, .-__vfork
  73918. weak_alias(__vfork,vfork)
  73919. -libc_hidden_weak(vfork)
  73920. +libc_hidden_def(vfork)
  73921. #include "syscall_error.S"
  73922. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/fcntl.h uClibc/libc/sysdeps/linux/sh64/bits/fcntl.h
  73923. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  73924. +++ uClibc/libc/sysdeps/linux/sh64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  73925. @@ -13,9 +13,8 @@
  73926. Lesser General Public License for more details.
  73927. You should have received a copy of the GNU Lesser General Public
  73928. - License along with the GNU C Library; if not, write to the Free
  73929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73930. - 02111-1307 USA. */
  73931. + License along with the GNU C Library; if not, see
  73932. + <http://www.gnu.org/licenses/>. */
  73933. #ifndef _FCNTL_H
  73934. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  73935. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/kernel_types.h uClibc/libc/sysdeps/linux/sh64/bits/kernel_types.h
  73936. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  73937. +++ uClibc/libc/sysdeps/linux/sh64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  73938. @@ -43,6 +43,8 @@
  73939. typedef unsigned short __kernel_old_uid_t;
  73940. typedef unsigned short __kernel_old_gid_t;
  73941. typedef __kernel_dev_t __kernel_old_dev_t;
  73942. +typedef long __kernel_long_t;
  73943. +typedef unsigned long __kernel_ulong_t;
  73944. typedef long long __kernel_loff_t;
  73945. typedef struct {
  73946. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/setjmp.h uClibc/libc/sysdeps/linux/sh64/bits/setjmp.h
  73947. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  73948. +++ uClibc/libc/sysdeps/linux/sh64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  73949. @@ -12,9 +12,8 @@
  73950. Lesser General Public License for more details.
  73951. You should have received a copy of the GNU Lesser General Public
  73952. - License along with the GNU C Library; if not, write to the Free
  73953. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73954. - 02111-1307 USA. */
  73955. + License along with the GNU C Library; if not, see
  73956. + <http://www.gnu.org/licenses/>. */
  73957. /* Define the machine-dependent type `jmp_buf'. SH-5 version. */
  73958. #ifndef _BITS_SETJMP_H
  73959. @@ -33,8 +32,6 @@
  73960. #define __SETJMP_TRG(x) (__SETJMP_NUM_INT+__SETJMP_NUM_DBL+(x))
  73961. #define __SETJMP_LR (__SETJMP_NUM_INT+__SETJMP_NUM_DBL+__SETJMP_NUM_TRG)
  73962. -
  73963. -#ifndef _ASM
  73964. typedef struct
  73965. {
  73966. /* Callee-saved registers. */
  73967. @@ -45,6 +42,5 @@
  73968. unsigned long long __trgs[__SETJMP_NUM_TRG]; /* traget registers */
  73969. unsigned long long __lr; /* linkage register */
  73970. } __jmp_buf[1];
  73971. -#endif
  73972. #endif /* bits/setjmp.h */
  73973. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/shm.h uClibc/libc/sysdeps/linux/sh64/bits/shm.h
  73974. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  73975. +++ uClibc/libc/sysdeps/linux/sh64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  73976. @@ -12,9 +12,8 @@
  73977. Lesser General Public License for more details.
  73978. You should have received a copy of the GNU Lesser General Public
  73979. - License along with the GNU C Library; if not, write to the Free
  73980. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73981. - 02111-1307 USA. */
  73982. + License along with the GNU C Library; if not, see
  73983. + <http://www.gnu.org/licenses/>. */
  73984. #ifndef _SYS_SHM_H
  73985. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  73986. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/stackinfo.h uClibc/libc/sysdeps/linux/sh64/bits/stackinfo.h
  73987. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  73988. +++ uClibc/libc/sysdeps/linux/sh64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  73989. @@ -12,9 +12,8 @@
  73990. Lesser General Public License for more details.
  73991. You should have received a copy of the GNU Lesser General Public
  73992. - License along with the GNU C Library; if not, write to the Free
  73993. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73994. - 02111-1307 USA. */
  73995. + License along with the GNU C Library; if not, see
  73996. + <http://www.gnu.org/licenses/>. */
  73997. /* This file contains a bit of information about the stack allocation
  73998. of the processor. */
  73999. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
  74000. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  74001. +++ uClibc/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  74002. @@ -11,8 +11,8 @@
  74003. /* can your target use syscall6() for mmap ? */
  74004. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  74005. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  74006. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  74007. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  74008. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  74009. /* does your target have a broken create_module() ? */
  74010. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  74011. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/crt1.S uClibc/libc/sysdeps/linux/sh64/crt1.S
  74012. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  74013. +++ uClibc/libc/sysdeps/linux/sh64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  74014. @@ -16,8 +16,7 @@
  74015. You should have received a copy of the GNU Library General Public
  74016. License along with the GNU C Library; see the file COPYING.LIB. If not,
  74017. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  74018. - Boston, MA 02111-1307, USA. */
  74019. + see <http://www.gnu.org/licenses/>. */
  74020. /* This is the canonical entry point, usually the first thing in the text
  74021. segment.
  74022. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/__longjmp.S uClibc/libc/sysdeps/linux/sh64/__longjmp.S
  74023. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  74024. +++ uClibc/libc/sysdeps/linux/sh64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  74025. @@ -14,8 +14,7 @@
  74026. You should have received a copy of the GNU Library General Public
  74027. License along with the GNU C Library; see the file COPYING.LIB. If not,
  74028. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  74029. - Boston, MA 02111-1307, USA. */
  74030. + see <http://www.gnu.org/licenses/>. */
  74031. #define _SETJMP_H
  74032. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/Makefile.arch uClibc/libc/sysdeps/linux/sh64/Makefile.arch
  74033. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  74034. +++ uClibc/libc/sysdeps/linux/sh64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  74035. @@ -5,6 +5,6 @@
  74036. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  74037. #
  74038. -CSRC := __init_brk.c brk.c sbrk.c syscall.c
  74039. +CSRC-y := __init_brk.c brk.c sbrk.c syscall.c
  74040. -SSRC := setjmp.S __longjmp.S
  74041. +SSRC-y := setjmp.S __longjmp.S
  74042. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/setjmp.S uClibc/libc/sysdeps/linux/sh64/setjmp.S
  74043. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  74044. +++ uClibc/libc/sysdeps/linux/sh64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  74045. @@ -14,8 +14,7 @@
  74046. You should have received a copy of the GNU Library General Public
  74047. License along with the GNU C Library; see the file COPYING.LIB. If not,
  74048. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  74049. - Boston, MA 02111-1307, USA. */
  74050. + see <http://www.gnu.org/licenses/>. */
  74051. #define _SETJMP_H
  74052. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/procfs.h uClibc/libc/sysdeps/linux/sh64/sys/procfs.h
  74053. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  74054. +++ uClibc/libc/sysdeps/linux/sh64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  74055. @@ -12,9 +12,8 @@
  74056. Lesser General Public License for more details.
  74057. You should have received a copy of the GNU Lesser General Public
  74058. - License along with the GNU C Library; if not, write to the Free
  74059. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74060. - 02111-1307 USA. */
  74061. + License along with the GNU C Library; if not, see
  74062. + <http://www.gnu.org/licenses/>. */
  74063. #ifndef _SYS_PROCFS_H
  74064. #define _SYS_PROCFS_H 1
  74065. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/ucontext.h uClibc/libc/sysdeps/linux/sh64/sys/ucontext.h
  74066. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  74067. +++ uClibc/libc/sysdeps/linux/sh64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  74068. @@ -13,8 +13,7 @@
  74069. You should have received a copy of the GNU Library General Public
  74070. License along with the GNU C Library; see the file COPYING.LIB. If not,
  74071. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  74072. - Boston, MA 02111-1307, USA. */
  74073. + see <http://www.gnu.org/licenses/>. */
  74074. /* Where is System V/SH ABI? */
  74075. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/atomic.h uClibc/libc/sysdeps/linux/sparc/bits/atomic.h
  74076. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  74077. +++ uClibc/libc/sysdeps/linux/sparc/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  74078. @@ -14,9 +14,8 @@
  74079. Lesser General Public License for more details.
  74080. You should have received a copy of the GNU Lesser General Public
  74081. - License along with the GNU C Library; if not, write to the Free
  74082. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74083. - 02111-1307 USA. */
  74084. + License along with the GNU C Library; if not, see
  74085. + <http://www.gnu.org/licenses/>. */
  74086. #ifndef _BITS_ATOMIC_H
  74087. #define _BITS_ATOMIC_H 1
  74088. @@ -290,11 +289,11 @@
  74089. __typeof (*(mem)) __acev_wval = (newval); \
  74090. do \
  74091. __acev_wret = *__acev_wmemp; \
  74092. - while (__builtin_expect \
  74093. + while (unlikely \
  74094. (__v9_compare_and_exchange_val_32_acq (__acev_wmemp,\
  74095. __acev_wval, \
  74096. __acev_wret) \
  74097. - != __acev_wret, 0)); \
  74098. + != __acev_wret)); \
  74099. } \
  74100. else \
  74101. __acev_wret = __v7_exchange_acq (mem, newval); \
  74102. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/eventfd.h uClibc/libc/sysdeps/linux/sparc/bits/eventfd.h
  74103. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  74104. +++ uClibc/libc/sysdeps/linux/sparc/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  74105. @@ -0,0 +1,31 @@
  74106. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  74107. + This file is part of the GNU C Library.
  74108. +
  74109. + The GNU C Library is free software; you can redistribute it and/or
  74110. + modify it under the terms of the GNU Lesser General Public
  74111. + License as published by the Free Software Foundation; either
  74112. + version 2.1 of the License, or (at your option) any later version.
  74113. +
  74114. + The GNU C Library is distributed in the hope that it will be useful,
  74115. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  74116. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74117. + Lesser General Public License for more details.
  74118. +
  74119. + You should have received a copy of the GNU Lesser General Public
  74120. + License along with the GNU C Library; if not, see
  74121. + <http://www.gnu.org/licenses/>. */
  74122. +
  74123. +#ifndef _SYS_EVENTFD_H
  74124. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  74125. +#endif
  74126. +
  74127. +/* Flags for eventfd. */
  74128. +enum
  74129. + {
  74130. + EFD_SEMAPHORE = 1,
  74131. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  74132. + EFD_CLOEXEC = 0x400000,
  74133. +#define EFD_CLOEXEC EFD_CLOEXEC
  74134. + EFD_NONBLOCK = 0x004000
  74135. +#define EFD_NONBLOCK EFD_NONBLOCK
  74136. + };
  74137. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fcntl.h uClibc/libc/sysdeps/linux/sparc/bits/fcntl.h
  74138. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  74139. +++ uClibc/libc/sysdeps/linux/sparc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  74140. @@ -14,9 +14,8 @@
  74141. Lesser General Public License for more details.
  74142. You should have received a copy of the GNU Lesser General Public
  74143. - License along with the GNU C Library; if not, write to the Free
  74144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74145. - 02111-1307 USA. */
  74146. + License along with the GNU C Library; if not, see
  74147. + <http://www.gnu.org/licenses/>. */
  74148. #ifndef _FCNTL_H
  74149. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  74150. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fenv.h uClibc/libc/sysdeps/linux/sparc/bits/fenv.h
  74151. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  74152. +++ uClibc/libc/sysdeps/linux/sparc/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  74153. @@ -12,9 +12,8 @@
  74154. Lesser General Public License for more details.
  74155. You should have received a copy of the GNU Lesser General Public
  74156. - License along with the GNU C Library; if not, write to the Free
  74157. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74158. - 02111-1307 USA. */
  74159. + License along with the GNU C Library; if not, see
  74160. + <http://www.gnu.org/licenses/>. */
  74161. #ifndef _FENV_H
  74162. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  74163. @@ -68,11 +67,11 @@
  74164. typedef unsigned long int fenv_t;
  74165. /* If the default argument is used we use this value. */
  74166. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  74167. +#define FE_DFL_ENV ((const fenv_t *) -1)
  74168. #ifdef __USE_GNU
  74169. /* Floating-point environment where none of the exception is masked. */
  74170. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  74171. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  74172. #endif
  74173. /* For internal use only: access the fp state register. */
  74174. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/huge_vall.h uClibc/libc/sysdeps/linux/sparc/bits/huge_vall.h
  74175. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  74176. +++ uClibc/libc/sysdeps/linux/sparc/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  74177. @@ -0,0 +1,48 @@
  74178. +/* `HUGE_VALL' constant for IEEE 754 machines (where it is infinity).
  74179. + Used by <stdlib.h> and <math.h> functions for overflow.
  74180. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  74181. + Free Software Foundation, Inc.
  74182. + This file is part of the GNU C Library.
  74183. +
  74184. + The GNU C Library is free software; you can redistribute it and/or
  74185. + modify it under the terms of the GNU Lesser General Public
  74186. + License as published by the Free Software Foundation; either
  74187. + version 2.1 of the License, or (at your option) any later version.
  74188. +
  74189. + The GNU C Library is distributed in the hope that it will be useful,
  74190. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  74191. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74192. + Lesser General Public License for more details.
  74193. +
  74194. + You should have received a copy of the GNU Lesser General Public
  74195. + License along with the GNU C Library; if not, see
  74196. + <http://www.gnu.org/licenses/>. */
  74197. +
  74198. +#ifndef _MATH_H
  74199. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  74200. +#endif
  74201. +
  74202. +#if __GNUC_PREREQ(3,3)
  74203. +# define HUGE_VALL (__builtin_huge_vall())
  74204. +#else
  74205. +# include <bits/wordsize.h>
  74206. +# if __WORDSIZE == 32
  74207. +# define HUGE_VALL ((long double) HUGE_VAL)
  74208. +# elif __GNUC_PREREQ(2,96)
  74209. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  74210. +# elif defined __GNUC__
  74211. +
  74212. +# define HUGE_VALL \
  74213. + (__extension__ \
  74214. + ((union { struct { unsigned long __h, __l; } __i; long double __d; }) \
  74215. + { __i: { __h: 0x7fff000000000000UL, __l: 0 } }).__d)
  74216. +
  74217. +# else /* not GCC */
  74218. +
  74219. +typedef union { unsigned char __c[16]; long double __d; } __huge_vall_t;
  74220. +# define __HUGE_VALL_bytes { 0x7f, 0xff, 0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
  74221. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  74222. +# define HUGE_VALL (__huge_vall.__d)
  74223. +
  74224. +# endif /* GCC. */
  74225. +#endif /* GCC 3.3. */
  74226. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ioctls.h uClibc/libc/sysdeps/linux/sparc/bits/ioctls.h
  74227. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  74228. +++ uClibc/libc/sysdeps/linux/sparc/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  74229. @@ -12,9 +12,8 @@
  74230. Lesser General Public License for more details.
  74231. You should have received a copy of the GNU Lesser General Public
  74232. - License along with the GNU C Library; if not, write to the Free
  74233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74234. - 02111-1307 USA. */
  74235. + License along with the GNU C Library; if not, see
  74236. + <http://www.gnu.org/licenses/>. */
  74237. #ifndef _SYS_IOCTL_H
  74238. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  74239. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ipc.h uClibc/libc/sysdeps/linux/sparc/bits/ipc.h
  74240. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  74241. +++ uClibc/libc/sysdeps/linux/sparc/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  74242. @@ -12,9 +12,8 @@
  74243. Lesser General Public License for more details.
  74244. You should have received a copy of the GNU Lesser General Public
  74245. - License along with the GNU C Library; if not, write to the Free
  74246. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74247. - 02111-1307 USA. */
  74248. + License along with the GNU C Library; if not, see
  74249. + <http://www.gnu.org/licenses/>. */
  74250. #ifndef _SYS_IPC_H
  74251. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  74252. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/kernel_types.h uClibc/libc/sysdeps/linux/sparc/bits/kernel_types.h
  74253. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  74254. +++ uClibc/libc/sysdeps/linux/sparc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  74255. @@ -32,6 +32,8 @@
  74256. typedef __kernel_uid_t __kernel_old_uid_t;
  74257. typedef __kernel_gid_t __kernel_old_gid_t;
  74258. typedef __kernel_dev_t __kernel_old_dev_t;
  74259. +typedef long __kernel_long_t;
  74260. +typedef unsigned long __kernel_ulong_t;
  74261. typedef __kernel_uid_t __kernel_uid32_t;
  74262. typedef __kernel_gid_t __kernel_gid32_t;
  74263. typedef int __kernel_suseconds_t;
  74264. @@ -62,6 +64,8 @@
  74265. typedef unsigned short __kernel_old_uid_t;
  74266. typedef unsigned short __kernel_old_gid_t;
  74267. typedef __kernel_dev_t __kernel_old_dev_t;
  74268. +typedef long __kernel_long_t;
  74269. +typedef unsigned long __kernel_ulong_t;
  74270. typedef long long __kernel_loff_t;
  74271. #endif
  74272. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/local_lim.h uClibc/libc/sysdeps/linux/sparc/bits/local_lim.h
  74273. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  74274. +++ uClibc/libc/sysdeps/linux/sparc/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  74275. @@ -0,0 +1,99 @@
  74276. +/* Minimum guaranteed maximum values for system limits. Linux/SPARC version.
  74277. + Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc.
  74278. + This file is part of the GNU C Library.
  74279. +
  74280. + The GNU C Library is free software; you can redistribute it and/or
  74281. + modify it under the terms of the GNU Library General Public License as
  74282. + published by the Free Software Foundation; either version 2 of the
  74283. + License, or (at your option) any later version.
  74284. +
  74285. + The GNU C Library is distributed in the hope that it will be useful,
  74286. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  74287. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74288. + Library General Public License for more details.
  74289. +
  74290. + You should have received a copy of the GNU Library General Public
  74291. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  74292. + see <http://www.gnu.org/licenses/>. */
  74293. +
  74294. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  74295. + and defines LINK_MAX although filesystems have different maxima. A
  74296. + similar thing is true for OPEN_MAX: the limit can be changed at
  74297. + runtime and therefore the macro must not be defined. Remove this
  74298. + after including the header if necessary. */
  74299. +#ifndef NR_OPEN
  74300. +# define __undef_NR_OPEN
  74301. +#endif
  74302. +#ifndef LINK_MAX
  74303. +# define __undef_LINK_MAX
  74304. +#endif
  74305. +#ifndef OPEN_MAX
  74306. +# define __undef_OPEN_MAX
  74307. +#endif
  74308. +#ifndef ARG_MAX
  74309. +# define __undef_ARG_MAX
  74310. +#endif
  74311. +
  74312. +/* The kernel sources contain a file with all the needed information. */
  74313. +#include <linux/limits.h>
  74314. +
  74315. +/* Have to remove NR_OPEN? */
  74316. +#ifdef __undef_NR_OPEN
  74317. +# undef NR_OPEN
  74318. +# undef __undef_NR_OPEN
  74319. +#endif
  74320. +/* Have to remove LINK_MAX? */
  74321. +#ifdef __undef_LINK_MAX
  74322. +# undef LINK_MAX
  74323. +# undef __undef_LINK_MAX
  74324. +#endif
  74325. +/* Have to remove OPEN_MAX? */
  74326. +#ifdef __undef_OPEN_MAX
  74327. +# undef OPEN_MAX
  74328. +# undef __undef_OPEN_MAX
  74329. +#endif
  74330. +/* Have to remove ARG_MAX? */
  74331. +#ifdef __undef_ARG_MAX
  74332. +# undef ARG_MAX
  74333. +# undef __undef_ARG_MAX
  74334. +#endif
  74335. +
  74336. +/* The number of data keys per process. */
  74337. +#define _POSIX_THREAD_KEYS_MAX 128
  74338. +/* This is the value this implementation supports. */
  74339. +#define PTHREAD_KEYS_MAX 1024
  74340. +
  74341. +/* Controlling the iterations of destructors for thread-specific data. */
  74342. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  74343. +/* Number of iterations this implementation does. */
  74344. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  74345. +
  74346. +/* The number of threads per process. */
  74347. +#define _POSIX_THREAD_THREADS_MAX 64
  74348. +/* We have no predefined limit on the number of threads. */
  74349. +#undef PTHREAD_THREADS_MAX
  74350. +
  74351. +/* Maximum amount by which a process can descrease its asynchronous I/O
  74352. + priority level. */
  74353. +#define AIO_PRIO_DELTA_MAX 20
  74354. +
  74355. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  74356. +#define PTHREAD_STACK_MIN 24576
  74357. +
  74358. +/* Maximum number of timer expiration overruns. */
  74359. +#define DELAYTIMER_MAX 2147483647
  74360. +
  74361. +/* Maximum tty name length. */
  74362. +#define TTY_NAME_MAX 32
  74363. +
  74364. +/* Maximum login name length. This is arbitrary. */
  74365. +#define LOGIN_NAME_MAX 256
  74366. +
  74367. +/* Maximum host name length. */
  74368. +#define HOST_NAME_MAX 64
  74369. +
  74370. +/* Maximum message queue priority level. */
  74371. +#define MQ_PRIO_MAX 32768
  74372. +
  74373. +/* Maximum value the semaphore can have. */
  74374. +#define SEM_VALUE_MAX (2147483647)
  74375. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathdef.h uClibc/libc/sysdeps/linux/sparc/bits/mathdef.h
  74376. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  74377. +++ uClibc/libc/sysdeps/linux/sparc/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  74378. @@ -13,9 +13,8 @@
  74379. Lesser General Public License for more details.
  74380. You should have received a copy of the GNU Lesser General Public
  74381. - License along with the GNU C Library; if not, write to the Free
  74382. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74383. - 02111-1307 USA. */
  74384. + License along with the GNU C Library; if not, see
  74385. + <http://www.gnu.org/licenses/>. */
  74386. #if !defined _MATH_H && !defined _COMPLEX_H
  74387. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  74388. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathinline.h uClibc/libc/sysdeps/linux/sparc/bits/mathinline.h
  74389. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  74390. +++ uClibc/libc/sysdeps/linux/sparc/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  74391. @@ -15,9 +15,8 @@
  74392. Lesser General Public License for more details.
  74393. You should have received a copy of the GNU Lesser General Public
  74394. - License along with the GNU C Library; if not, write to the Free
  74395. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74396. - 02111-1307 USA. */
  74397. + License along with the GNU C Library; if not, see
  74398. + <http://www.gnu.org/licenses/>. */
  74399. #ifndef _MATH_H
  74400. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  74401. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mman.h uClibc/libc/sysdeps/linux/sparc/bits/mman.h
  74402. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  74403. +++ uClibc/libc/sysdeps/linux/sparc/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  74404. @@ -13,9 +13,8 @@
  74405. Lesser General Public License for more details.
  74406. You should have received a copy of the GNU Lesser General Public
  74407. - License along with the GNU C Library; if not, write to the Free
  74408. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74409. - 02111-1307 USA. */
  74410. + License along with the GNU C Library; if not, see
  74411. + <http://www.gnu.org/licenses/>. */
  74412. #ifndef _SYS_MMAN_H
  74413. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  74414. @@ -65,7 +64,7 @@
  74415. # define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */
  74416. # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */
  74417. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  74418. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  74419. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  74420. be uninitialized. */
  74421. #endif
  74422. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/msq.h uClibc/libc/sysdeps/linux/sparc/bits/msq.h
  74423. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  74424. +++ uClibc/libc/sysdeps/linux/sparc/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  74425. @@ -12,9 +12,8 @@
  74426. Lesser General Public License for more details.
  74427. You should have received a copy of the GNU Lesser General Public
  74428. - License along with the GNU C Library; if not, write to the Free
  74429. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74430. - 02111-1307 USA. */
  74431. + License along with the GNU C Library; if not, see
  74432. + <http://www.gnu.org/licenses/>. */
  74433. #ifndef _SYS_MSG_H
  74434. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  74435. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/poll.h uClibc/libc/sysdeps/linux/sparc/bits/poll.h
  74436. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  74437. +++ uClibc/libc/sysdeps/linux/sparc/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  74438. @@ -12,9 +12,8 @@
  74439. Lesser General Public License for more details.
  74440. You should have received a copy of the GNU Lesser General Public
  74441. - License along with the GNU C Library; if not, write to the Free
  74442. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74443. - 02111-1307 USA. */
  74444. + License along with the GNU C Library; if not, see
  74445. + <http://www.gnu.org/licenses/>. */
  74446. #ifndef _SYS_POLL_H
  74447. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  74448. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/resource.h uClibc/libc/sysdeps/linux/sparc/bits/resource.h
  74449. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  74450. +++ uClibc/libc/sysdeps/linux/sparc/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  74451. @@ -14,9 +14,8 @@
  74452. Lesser General Public License for more details.
  74453. You should have received a copy of the GNU Lesser General Public
  74454. - License along with the GNU C Library; if not, write to the Free
  74455. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74456. - 02111-1307 USA. */
  74457. + License along with the GNU C Library; if not, see
  74458. + <http://www.gnu.org/licenses/>. */
  74459. #ifndef _SYS_RESOURCE_H
  74460. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  74461. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sem.h uClibc/libc/sysdeps/linux/sparc/bits/sem.h
  74462. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  74463. +++ uClibc/libc/sysdeps/linux/sparc/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  74464. @@ -12,9 +12,8 @@
  74465. Lesser General Public License for more details.
  74466. You should have received a copy of the GNU Lesser General Public
  74467. - License along with the GNU C Library; if not, write to the Free
  74468. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74469. - 02111-1307 USA. */
  74470. + License along with the GNU C Library; if not, see
  74471. + <http://www.gnu.org/licenses/>. */
  74472. #ifndef _SYS_SEM_H
  74473. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  74474. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/setjmp.h uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h
  74475. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  74476. +++ uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  74477. @@ -1,4 +1,5 @@
  74478. -/* Copyright (C) 1997,1999,2000,2003 Free Software Foundation, Inc.
  74479. +/* Copyright (C) 1997, 1999, 2000, 2003, 2005, 2006
  74480. + Free Software Foundation, Inc.
  74481. This file is part of the GNU C Library.
  74482. The GNU C Library is free software; you can redistribute it and/or
  74483. @@ -12,9 +13,8 @@
  74484. Lesser General Public License for more details.
  74485. You should have received a copy of the GNU Lesser General Public
  74486. - License along with the GNU C Library; if not, write to the Free
  74487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74488. - 02111-1307 USA. */
  74489. + License along with the GNU C Library; if not, see
  74490. + <http://www.gnu.org/licenses/>. */
  74491. #ifndef _BITS_SETJMP_H
  74492. #define _BITS_SETJMP_H 1
  74493. @@ -27,7 +27,6 @@
  74494. #if 0 /*__WORDSIZE == 64*/
  74495. -#ifndef _ASM
  74496. typedef struct __sparc64_jmp_buf
  74497. {
  74498. struct __sparc64_jmp_buf *uc_link;
  74499. @@ -55,30 +54,8 @@
  74500. } mc_fpregs;
  74501. } uc_mcontext;
  74502. } __jmp_buf[1];
  74503. -#endif
  74504. -
  74505. -/* Test if longjmp to JMPBUF would unwind the frame
  74506. - containing a local variable at ADDRESS. */
  74507. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  74508. - ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp)
  74509. -
  74510. #else
  74511. -
  74512. -#if defined __USE_MISC || defined _ASM
  74513. -# define JB_SP 0
  74514. -# define JB_FP 1
  74515. -# define JB_PC 2
  74516. -#endif
  74517. -
  74518. -#ifndef _ASM
  74519. typedef int __jmp_buf[3];
  74520. #endif
  74521. -/* Test if longjmp to JMPBUF would unwind the frame
  74522. - containing a local variable at ADDRESS. */
  74523. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  74524. - ((int) (address) < (jmpbuf)[JB_SP])
  74525. -
  74526. -#endif
  74527. -
  74528. #endif /* bits/setjmp.h */
  74529. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/shm.h uClibc/libc/sysdeps/linux/sparc/bits/shm.h
  74530. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  74531. +++ uClibc/libc/sysdeps/linux/sparc/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  74532. @@ -13,9 +13,8 @@
  74533. Lesser General Public License for more details.
  74534. You should have received a copy of the GNU Lesser General Public
  74535. - License along with the GNU C Library; if not, write to the Free
  74536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74537. - 02111-1307 USA. */
  74538. + License along with the GNU C Library; if not, see
  74539. + <http://www.gnu.org/licenses/>. */
  74540. #ifndef _SYS_SHM_H
  74541. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  74542. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigaction.h uClibc/libc/sysdeps/linux/sparc/bits/sigaction.h
  74543. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  74544. +++ uClibc/libc/sysdeps/linux/sparc/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  74545. @@ -13,9 +13,8 @@
  74546. Lesser General Public License for more details.
  74547. You should have received a copy of the GNU Lesser General Public
  74548. - License along with the GNU C Library; if not, write to the Free
  74549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74550. - 02111-1307 USA. */
  74551. + License along with the GNU C Library; if not, see
  74552. + <http://www.gnu.org/licenses/>. */
  74553. #ifndef _SIGNAL_H
  74554. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  74555. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontext.h uClibc/libc/sysdeps/linux/sparc/bits/sigcontext.h
  74556. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  74557. +++ uClibc/libc/sysdeps/linux/sparc/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  74558. @@ -12,9 +12,8 @@
  74559. Lesser General Public License for more details.
  74560. You should have received a copy of the GNU Lesser General Public
  74561. - License along with the GNU C Library; if not, write to the Free
  74562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74563. - 02111-1307 USA. */
  74564. + License along with the GNU C Library; if not, see
  74565. + <http://www.gnu.org/licenses/>. */
  74566. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  74567. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  74568. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h
  74569. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  74570. +++ uClibc/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  74571. @@ -13,9 +13,8 @@
  74572. Lesser General Public License for more details.
  74573. You should have received a copy of the GNU Lesser General Public
  74574. - License along with the GNU C Library; if not, write to the Free
  74575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74576. - 02111-1307 USA. */
  74577. + License along with the GNU C Library; if not, see
  74578. + <http://www.gnu.org/licenses/>. */
  74579. #define SIGCONTEXT struct sigcontext *
  74580. #define SIGCONTEXT_EXTRA_ARGS
  74581. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/siginfo.h uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h
  74582. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  74583. +++ uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  74584. @@ -13,9 +13,8 @@
  74585. Lesser General Public License for more details.
  74586. You should have received a copy of the GNU Lesser General Public
  74587. - License along with the GNU C Library; if not, write to the Free
  74588. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74589. - 02111-1307 USA. */
  74590. + License along with the GNU C Library; if not, see
  74591. + <http://www.gnu.org/licenses/>. */
  74592. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  74593. && !defined __need_sigevent_t
  74594. @@ -289,6 +288,10 @@
  74595. {
  74596. int _pad[__SIGEV_PAD_SIZE];
  74597. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  74598. + thread to receive the signal. */
  74599. + __pid_t _tid;
  74600. +
  74601. struct
  74602. {
  74603. void (*_function) (sigval_t); /* Function to start. */
  74604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/signum.h uClibc/libc/sysdeps/linux/sparc/bits/signum.h
  74605. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  74606. +++ uClibc/libc/sysdeps/linux/sparc/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  74607. @@ -13,9 +13,8 @@
  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. + License along with the GNU C Library; if not, see
  74614. + <http://www.gnu.org/licenses/>. */
  74615. #ifdef _SIGNAL_H
  74616. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigstack.h uClibc/libc/sysdeps/linux/sparc/bits/sigstack.h
  74617. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  74618. +++ uClibc/libc/sysdeps/linux/sparc/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  74619. @@ -13,9 +13,8 @@
  74620. Lesser General Public License for more details.
  74621. You should have received a copy of the GNU Lesser General Public
  74622. - License along with the GNU C Library; if not, write to the Free
  74623. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74624. - 02111-1307 USA. */
  74625. + License along with the GNU C Library; if not, see
  74626. + <http://www.gnu.org/licenses/>. */
  74627. #ifndef _SIGNAL_H
  74628. # error "Never include this file directly. Use <signal.h> instead"
  74629. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket.h uClibc/libc/sysdeps/linux/sparc/bits/socket.h
  74630. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  74631. +++ uClibc/libc/sysdeps/linux/sparc/bits/socket.h 1970-01-01 01:00:00.000000000 +0100
  74632. @@ -1,376 +0,0 @@
  74633. -/* System-specific socket constants and types. Linux version.
  74634. - Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  74635. - This file is part of the GNU C Library.
  74636. -
  74637. - The GNU C Library is free software; you can redistribute it and/or
  74638. - modify it under the terms of the GNU Lesser General Public
  74639. - License as published by the Free Software Foundation; either
  74640. - version 2.1 of the License, or (at your option) any later version.
  74641. -
  74642. - The GNU C Library is distributed in the hope that it will be useful,
  74643. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  74644. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74645. - Lesser General Public License for more details.
  74646. -
  74647. - You should have received a copy of the GNU Lesser General Public
  74648. - License along with the GNU C Library; if not, write to the Free
  74649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74650. - 02111-1307 USA. */
  74651. -
  74652. -#ifndef __BITS_SOCKET_H
  74653. -#define __BITS_SOCKET_H
  74654. -
  74655. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  74656. -# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  74657. -#endif
  74658. -
  74659. -#define __need_size_t
  74660. -#define __need_NULL
  74661. -#include <stddef.h>
  74662. -
  74663. -#include <limits.h>
  74664. -#include <sys/types.h>
  74665. -
  74666. -/* Type for length arguments in socket calls. */
  74667. -#ifndef __socklen_t_defined
  74668. -typedef __socklen_t socklen_t;
  74669. -# define __socklen_t_defined
  74670. -#endif
  74671. -
  74672. -/* Types of sockets. */
  74673. -enum __socket_type
  74674. -{
  74675. - SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  74676. - byte streams. */
  74677. -#define SOCK_STREAM SOCK_STREAM
  74678. - SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  74679. - of fixed maximum length. */
  74680. -#define SOCK_DGRAM SOCK_DGRAM
  74681. - SOCK_RAW = 3, /* Raw protocol interface. */
  74682. -#define SOCK_RAW SOCK_RAW
  74683. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  74684. -#define SOCK_RDM SOCK_RDM
  74685. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  74686. - datagrams of fixed maximum length. */
  74687. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  74688. - SOCK_PACKET = 10 /* Linux specific way of getting packets
  74689. - at the dev level. For writing rarp and
  74690. - other similar things on the user level. */
  74691. -#define SOCK_PACKET SOCK_PACKET
  74692. -};
  74693. -
  74694. -/* Protocol families. */
  74695. -#define PF_UNSPEC 0 /* Unspecified. */
  74696. -#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
  74697. -#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
  74698. -#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
  74699. -#define PF_INET 2 /* IP protocol family. */
  74700. -#define PF_AX25 3 /* Amateur Radio AX.25. */
  74701. -#define PF_IPX 4 /* Novell Internet Protocol. */
  74702. -#define PF_APPLETALK 5 /* Appletalk DDP. */
  74703. -#define PF_NETROM 6 /* Amateur radio NetROM. */
  74704. -#define PF_BRIDGE 7 /* Multiprotocol bridge. */
  74705. -#define PF_ATMPVC 8 /* ATM PVCs. */
  74706. -#define PF_X25 9 /* Reserved for X.25 project. */
  74707. -#define PF_INET6 10 /* IP version 6. */
  74708. -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
  74709. -#define PF_DECnet 12 /* Reserved for DECnet project. */
  74710. -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
  74711. -#define PF_SECURITY 14 /* Security callback pseudo AF. */
  74712. -#define PF_KEY 15 /* PF_KEY key management API. */
  74713. -#define PF_NETLINK 16
  74714. -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
  74715. -#define PF_PACKET 17 /* Packet family. */
  74716. -#define PF_ASH 18 /* Ash. */
  74717. -#define PF_ECONET 19 /* Acorn Econet. */
  74718. -#define PF_ATMSVC 20 /* ATM SVCs. */
  74719. -#define PF_SNA 22 /* Linux SNA Project */
  74720. -#define PF_IRDA 23 /* IRDA sockets. */
  74721. -#define PF_PPPOX 24 /* PPPoX sockets. */
  74722. -#define PF_WANPIPE 25 /* Wanpipe API sockets. */
  74723. -#define PF_LLC 26 /* Linux LLC. */
  74724. -#define PF_CAN 29 /* Controller Area Network. */
  74725. -#define PF_TIPC 30 /* TIPC sockets. */
  74726. -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  74727. -#define PF_IUCV 32 /* IUCV sockets. */
  74728. -#define PF_RXRPC 33 /* RxRPC sockets. */
  74729. -#define PF_ISDN 34 /* mISDN sockets. */
  74730. -#define PF_PHONET 35 /* Phonet sockets. */
  74731. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  74732. -#define PF_CAIF 37 /* CAIF sockets. */
  74733. -#define PF_ALG 38 /* Algorithm sockets. */
  74734. -#define PF_MAX 39 /* For now.. */
  74735. -
  74736. -/* Address families. */
  74737. -#define AF_UNSPEC PF_UNSPEC
  74738. -#define AF_LOCAL PF_LOCAL
  74739. -#define AF_UNIX PF_UNIX
  74740. -#define AF_FILE PF_FILE
  74741. -#define AF_INET PF_INET
  74742. -#define AF_AX25 PF_AX25
  74743. -#define AF_IPX PF_IPX
  74744. -#define AF_APPLETALK PF_APPLETALK
  74745. -#define AF_NETROM PF_NETROM
  74746. -#define AF_BRIDGE PF_BRIDGE
  74747. -#define AF_ATMPVC PF_ATMPVC
  74748. -#define AF_X25 PF_X25
  74749. -#define AF_INET6 PF_INET6
  74750. -#define AF_ROSE PF_ROSE
  74751. -#define AF_DECnet PF_DECnet
  74752. -#define AF_NETBEUI PF_NETBEUI
  74753. -#define AF_SECURITY PF_SECURITY
  74754. -#define AF_KEY PF_KEY
  74755. -#define AF_NETLINK PF_NETLINK
  74756. -#define AF_ROUTE PF_ROUTE
  74757. -#define AF_PACKET PF_PACKET
  74758. -#define AF_ASH PF_ASH
  74759. -#define AF_ECONET PF_ECONET
  74760. -#define AF_ATMSVC PF_ATMSVC
  74761. -#define AF_SNA PF_SNA
  74762. -#define AF_IRDA PF_IRDA
  74763. -#define AF_PPPOX PF_PPPOX
  74764. -#define AF_WANPIPE PF_WANPIPE
  74765. -#define AF_LLC PF_LLC
  74766. -#define AF_CAN PF_CAN
  74767. -#define AF_TIPC PF_TIPC
  74768. -#define AF_BLUETOOTH PF_BLUETOOTH
  74769. -#define AF_IUCV PF_IUCV
  74770. -#define AF_RXRPC PF_RXRPC
  74771. -#define AF_ISDN PF_ISDN
  74772. -#define AF_PHONET PF_PHONET
  74773. -#define AF_IEEE802154 PF_IEEE802154
  74774. -#define AF_CAIF PF_CAIF
  74775. -#define AF_ALG PF_ALG
  74776. -#define AF_MAX PF_MAX
  74777. -
  74778. -/* Socket level values. Others are defined in the appropriate headers.
  74779. -
  74780. - XXX These definitions also should go into the appropriate headers as
  74781. - far as they are available. */
  74782. -#define SOL_RAW 255
  74783. -#define SOL_DECNET 261
  74784. -#define SOL_X25 262
  74785. -#define SOL_PACKET 263
  74786. -#define SOL_ATM 264 /* ATM layer (cell level). */
  74787. -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
  74788. -#define SOL_IRDA 266
  74789. -
  74790. -/* Maximum queue length specifiable by listen. */
  74791. -#define SOMAXCONN 128
  74792. -
  74793. -/* Get the definition of the macro to define the common sockaddr members. */
  74794. -#include <bits/sockaddr.h>
  74795. -
  74796. -/* Structure describing a generic socket address. */
  74797. -struct sockaddr
  74798. - {
  74799. - __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
  74800. - char sa_data[14]; /* Address data. */
  74801. - };
  74802. -
  74803. -
  74804. -/* Structure large enough to hold any socket address (with the historical
  74805. - exception of AF_UNIX). We reserve 128 bytes. */
  74806. -#if ULONG_MAX > 0xffffffff
  74807. -# define __ss_aligntype __uint64_t
  74808. -#else
  74809. -# define __ss_aligntype __uint32_t
  74810. -#endif
  74811. -#define _SS_SIZE 128
  74812. -#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
  74813. -
  74814. -struct sockaddr_storage
  74815. - {
  74816. - __SOCKADDR_COMMON (ss_); /* Address family, etc. */
  74817. - __ss_aligntype __ss_align; /* Force desired alignment. */
  74818. - char __ss_padding[_SS_PADSIZE];
  74819. - };
  74820. -
  74821. -
  74822. -/* Bits in the FLAGS argument to `send', `recv', et al. */
  74823. -enum
  74824. - {
  74825. - MSG_OOB = 0x01, /* Process out-of-band data. */
  74826. -#define MSG_OOB MSG_OOB
  74827. - MSG_PEEK = 0x02, /* Peek at incoming messages. */
  74828. -#define MSG_PEEK MSG_PEEK
  74829. - MSG_DONTROUTE = 0x04, /* Don't use local routing. */
  74830. -#define MSG_DONTROUTE MSG_DONTROUTE
  74831. -#ifdef __USE_GNU
  74832. - /* DECnet uses a different name. */
  74833. - MSG_TRYHARD = MSG_DONTROUTE,
  74834. -# define MSG_TRYHARD MSG_DONTROUTE
  74835. -#endif
  74836. - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
  74837. -#define MSG_CTRUNC MSG_CTRUNC
  74838. - MSG_PROXY = 0x10, /* Supply or ask second address. */
  74839. -#define MSG_PROXY MSG_PROXY
  74840. - MSG_TRUNC = 0x20,
  74841. -#define MSG_TRUNC MSG_TRUNC
  74842. - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
  74843. -#define MSG_DONTWAIT MSG_DONTWAIT
  74844. - MSG_EOR = 0x80, /* End of record. */
  74845. -#define MSG_EOR MSG_EOR
  74846. - MSG_WAITALL = 0x100, /* Wait for a full request. */
  74847. -#define MSG_WAITALL MSG_WAITALL
  74848. - MSG_FIN = 0x200,
  74849. -#define MSG_FIN MSG_FIN
  74850. - MSG_SYN = 0x400,
  74851. -#define MSG_SYN MSG_SYN
  74852. - MSG_CONFIRM = 0x800, /* Confirm path validity. */
  74853. -#define MSG_CONFIRM MSG_CONFIRM
  74854. - MSG_RST = 0x1000,
  74855. -#define MSG_RST MSG_RST
  74856. - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
  74857. -#define MSG_ERRQUEUE MSG_ERRQUEUE
  74858. - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  74859. -#define MSG_NOSIGNAL MSG_NOSIGNAL
  74860. - MSG_MORE = 0x8000 /* Sender will send more. */
  74861. -#define MSG_MORE MSG_MORE
  74862. - };
  74863. -
  74864. -
  74865. -/* Structure describing messages sent by
  74866. - `sendmsg' and received by `recvmsg'. */
  74867. -/* Note: do not change these members to match glibc; these match the
  74868. - SuSv3 spec already (e.g. msg_iovlen/msg_controllen).
  74869. - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */
  74870. -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit
  74871. - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */
  74872. -struct msghdr
  74873. - {
  74874. - void *msg_name; /* Address to send to/receive from. */
  74875. - socklen_t msg_namelen; /* Length of address data. */
  74876. -
  74877. - struct iovec *msg_iov; /* Vector of data to send/receive into. */
  74878. -#if __WORDSIZE == 32
  74879. - int msg_iovlen; /* Number of elements in the vector. */
  74880. -#else
  74881. - size_t msg_iovlen; /* Number of elements in the vector. */
  74882. -#endif
  74883. -
  74884. - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
  74885. -#if __WORDSIZE == 32
  74886. - socklen_t msg_controllen; /* Ancillary data buffer length. */
  74887. -#else
  74888. - size_t msg_controllen; /* Ancillary data buffer length. */
  74889. -#endif
  74890. -
  74891. - int msg_flags; /* Flags on received message. */
  74892. - };
  74893. -
  74894. -/* Structure used for storage of ancillary data object information. */
  74895. -struct cmsghdr
  74896. - {
  74897. - size_t cmsg_len; /* Length of data in cmsg_data plus length
  74898. - of cmsghdr structure. */
  74899. - int cmsg_level; /* Originating protocol. */
  74900. - int cmsg_type; /* Protocol specific type. */
  74901. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  74902. - __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
  74903. -#endif
  74904. - };
  74905. -
  74906. -/* Ancillary data object manipulation macros. */
  74907. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  74908. -# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
  74909. -#else
  74910. -# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
  74911. -#endif
  74912. -#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  74913. -#define CMSG_FIRSTHDR(mhdr) \
  74914. - ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  74915. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  74916. -#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  74917. - & (size_t) ~(sizeof (size_t) - 1))
  74918. -#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  74919. - + CMSG_ALIGN (sizeof (struct cmsghdr)))
  74920. -#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
  74921. -
  74922. -extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
  74923. - struct cmsghdr *__cmsg) __THROW;
  74924. -libc_hidden_proto(__cmsg_nxthdr)
  74925. -#ifdef __USE_EXTERN_INLINES
  74926. -# ifndef _EXTERN_INLINE
  74927. -# define _EXTERN_INLINE extern __inline
  74928. -# endif
  74929. -_EXTERN_INLINE struct cmsghdr *
  74930. -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  74931. -{
  74932. - if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  74933. - /* The kernel header does this so there may be a reason. */
  74934. - return 0;
  74935. -
  74936. - __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  74937. - + CMSG_ALIGN (__cmsg->cmsg_len));
  74938. - if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
  74939. - + __mhdr->msg_controllen)
  74940. - || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  74941. - > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  74942. - /* No more entries. */
  74943. - return 0;
  74944. - return __cmsg;
  74945. -}
  74946. -#endif /* Use `extern inline'. */
  74947. -
  74948. -/* Socket level message types. This must match the definitions in
  74949. - <linux/socket.h>. */
  74950. -enum
  74951. - {
  74952. - SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  74953. -#define SCM_RIGHTS SCM_RIGHTS
  74954. -#ifdef __USE_BSD
  74955. - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  74956. -# define SCM_CREDENTIALS SCM_CREDENTIALS
  74957. -#endif
  74958. - };
  74959. -
  74960. -/* User visible structure for SCM_CREDENTIALS message */
  74961. -
  74962. -struct ucred
  74963. -{
  74964. - pid_t pid; /* PID of sending process. */
  74965. - uid_t uid; /* UID of sending process. */
  74966. - gid_t gid; /* GID of sending process. */
  74967. -};
  74968. -
  74969. -/* Get socket manipulation related informations from kernel headers. */
  74970. -#ifndef __GLIBC__
  74971. -#define __GLIBC__ 2
  74972. -#include <asm/socket.h>
  74973. -#undef __GLIBC__
  74974. -#else
  74975. -#include <asm/socket.h>
  74976. -#endif
  74977. -
  74978. -
  74979. -/* Structure used to manipulate the SO_LINGER option. */
  74980. -struct linger
  74981. - {
  74982. - int l_onoff; /* Nonzero to linger on close. */
  74983. - int l_linger; /* Time to linger. */
  74984. - };
  74985. -
  74986. -/* Prefer socketcall over all these for sparc32,
  74987. - since it only has socketcall */
  74988. -#ifndef __arch64__
  74989. - #undef __NR_accept
  74990. - #undef __NR_bind
  74991. - #undef __NR_connect
  74992. - #undef __NR_getpeername
  74993. - #undef __NR_getsockname
  74994. - #undef __NR_getsockopt
  74995. - #undef __NR_listen
  74996. - #undef __NR_recv
  74997. - #undef __NR_recvfrom
  74998. - #undef __NR_recvmsg
  74999. - #undef __NR_send
  75000. - #undef __NR_sendmsg
  75001. - #undef __NR_sendto
  75002. - #undef __NR_setsockopt
  75003. - #undef __NR_shutdown
  75004. - #undef __NR_socket
  75005. - #undef __NR_socketpair
  75006. -#endif
  75007. -
  75008. -#endif /* bits/socket.h */
  75009. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket_type.h uClibc/libc/sysdeps/linux/sparc/bits/socket_type.h
  75010. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  75011. +++ uClibc/libc/sysdeps/linux/sparc/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  75012. @@ -0,0 +1,54 @@
  75013. +/* System-specific socket constants and types. Linux version.
  75014. + Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  75015. + This file is part of the GNU C Library.
  75016. +
  75017. + The GNU C Library is free software; you can redistribute it and/or
  75018. + modify it under the terms of the GNU Lesser General Public
  75019. + License as published by the Free Software Foundation; either
  75020. + version 2.1 of the License, or (at your option) any later version.
  75021. +
  75022. + The GNU C Library is distributed in the hope that it will be useful,
  75023. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  75024. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  75025. + Lesser General Public License for more details.
  75026. +
  75027. + You should have received a copy of the GNU Lesser General Public
  75028. + License along with the GNU C Library; if not, see
  75029. + <http://www.gnu.org/licenses/>. */
  75030. +
  75031. +#ifndef _SYS_SOCKET_H
  75032. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  75033. +#endif
  75034. +
  75035. +/* Types of sockets. */
  75036. +enum __socket_type
  75037. +{
  75038. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  75039. + byte streams. */
  75040. +#define SOCK_STREAM SOCK_STREAM
  75041. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  75042. + of fixed maximum length. */
  75043. +#define SOCK_DGRAM SOCK_DGRAM
  75044. + SOCK_RAW = 3, /* Raw protocol interface. */
  75045. +#define SOCK_RAW SOCK_RAW
  75046. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  75047. +#define SOCK_RDM SOCK_RDM
  75048. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  75049. + datagrams of fixed maximum length. */
  75050. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  75051. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  75052. +#define SOCK_DCCP SOCK_DCCP
  75053. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  75054. + at the dev level. For writing rarp and
  75055. + other similar things on the user level. */
  75056. +#define SOCK_PACKET SOCK_PACKET
  75057. +
  75058. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  75059. +
  75060. + SOCK_CLOEXEC = 0x400000, /* Atomically set close-on-exec flag for the
  75061. + new descriptor(s). */
  75062. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  75063. + SOCK_NONBLOCK = 0x004000 /* Atomically mark descriptor(s) as
  75064. + non-blocking. */
  75065. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  75066. +};
  75067. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stackinfo.h uClibc/libc/sysdeps/linux/sparc/bits/stackinfo.h
  75068. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  75069. +++ uClibc/libc/sysdeps/linux/sparc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  75070. @@ -12,9 +12,8 @@
  75071. Lesser General Public License for more details.
  75072. You should have received a copy of the GNU Lesser General Public
  75073. - License along with the GNU C Library; if not, write to the Free
  75074. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75075. - 02111-1307 USA. */
  75076. + License along with the GNU C Library; if not, see
  75077. + <http://www.gnu.org/licenses/>. */
  75078. /* This file contains a bit of information about the stack allocation
  75079. of the processor. */
  75080. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stat.h uClibc/libc/sysdeps/linux/sparc/bits/stat.h
  75081. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  75082. +++ uClibc/libc/sysdeps/linux/sparc/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  75083. @@ -12,9 +12,8 @@
  75084. Lesser General Public License for more details.
  75085. You should have received a copy of the GNU Lesser General Public
  75086. - License along with the GNU C Library; if not, write to the Free
  75087. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75088. - 02111-1307 USA. */
  75089. + License along with the GNU C Library; if not, see
  75090. + <http://www.gnu.org/licenses/>. */
  75091. #ifndef _SYS_STAT_H
  75092. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  75093. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/termios.h uClibc/libc/sysdeps/linux/sparc/bits/termios.h
  75094. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  75095. +++ uClibc/libc/sysdeps/linux/sparc/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  75096. @@ -14,9 +14,8 @@
  75097. Lesser General Public License for more details.
  75098. You should have received a copy of the GNU Lesser General Public
  75099. - License along with the GNU C Library; if not, write to the Free
  75100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75101. - 02111-1307 USA. */
  75102. + License along with the GNU C Library; if not, see
  75103. + <http://www.gnu.org/licenses/>. */
  75104. #ifndef _TERMIOS_H
  75105. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  75106. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/typesizes.h uClibc/libc/sysdeps/linux/sparc/bits/typesizes.h
  75107. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  75108. +++ uClibc/libc/sysdeps/linux/sparc/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  75109. @@ -13,9 +13,8 @@
  75110. Lesser General Public License for more details.
  75111. You should have received a copy of the GNU Lesser General Public
  75112. - License along with the GNU C Library; if not, write to the Free
  75113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75114. - 02111-1307 USA. */
  75115. + License along with the GNU C Library; if not, see
  75116. + <http://www.gnu.org/licenses/>. */
  75117. #ifndef _BITS_TYPES_H
  75118. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  75119. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
  75120. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  75121. +++ uClibc/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  75122. @@ -11,8 +11,8 @@
  75123. /* can your target use syscall6() for mmap ? */
  75124. #define __UCLIBC_MMAP_HAS_6_ARGS__
  75125. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  75126. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  75127. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  75128. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  75129. /* does your target have a broken create_module() ? */
  75130. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  75131. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/brk.c uClibc/libc/sysdeps/linux/sparc/brk.c
  75132. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/brk.c 2012-05-15 09:20:09.000000000 +0200
  75133. +++ uClibc/libc/sysdeps/linux/sparc/brk.c 2014-02-03 12:32:56.000000000 +0100
  75134. @@ -13,9 +13,8 @@
  75135. Lesser General Public License for more details.
  75136. You should have received a copy of the GNU Lesser General Public
  75137. - License along with the GNU C Library; if not, write to the Free
  75138. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75139. - 02111-1307 USA. */
  75140. + License along with the GNU C Library; if not, see
  75141. + <http://www.gnu.org/licenses/>. */
  75142. #include <errno.h>
  75143. #include <unistd.h>
  75144. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/clone.S uClibc/libc/sysdeps/linux/sparc/clone.S
  75145. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/clone.S 2012-05-15 09:20:09.000000000 +0200
  75146. +++ uClibc/libc/sysdeps/linux/sparc/clone.S 2014-02-03 12:32:56.000000000 +0100
  75147. @@ -14,9 +14,8 @@
  75148. Lesser General Public License for more details.
  75149. You should have received a copy of the GNU Lesser General Public
  75150. - License along with the GNU C Library; if not, write to the Free
  75151. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75152. - 02111-1307 USA. */
  75153. + License along with the GNU C Library; if not, see
  75154. + <http://www.gnu.org/licenses/>. */
  75155. /* clone() is even more special than fork() as it mucks with stacks
  75156. and invokes a function in the right context after its all over. */
  75157. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/crt1.S uClibc/libc/sysdeps/linux/sparc/crt1.S
  75158. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/crt1.S 2012-05-15 09:20:09.000000000 +0200
  75159. +++ uClibc/libc/sysdeps/linux/sparc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  75160. @@ -31,9 +31,8 @@
  75161. Lesser General Public License for more details.
  75162. You should have received a copy of the GNU Lesser General Public
  75163. - License along with the GNU C Library; if not, write to the Free
  75164. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75165. - 02111-1307 USA. */
  75166. + License along with the GNU C Library; if not, see
  75167. + <http://www.gnu.org/licenses/>. */
  75168. /* Originally based on glibc's sysdeps/sparc/sparc{32,64}/elf/start.S */
  75169. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fork.S uClibc/libc/sysdeps/linux/sparc/fork.S
  75170. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fork.S 2012-05-15 09:20:09.000000000 +0200
  75171. +++ uClibc/libc/sysdeps/linux/sparc/fork.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. /* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */
  75181. @@ -23,11 +22,14 @@
  75182. #include <sys/syscall.h>
  75183. .text
  75184. -.global __libc_fork
  75185. -.type __libc_fork,%function
  75186. +.global fork
  75187. +#ifdef __UCLIBC_HAS_THREADS__
  75188. +.weak fork
  75189. +#endif
  75190. +.type fork,%function
  75191. .align 4
  75192. -__libc_fork:
  75193. +fork:
  75194. mov __NR_fork, %g1
  75195. ta 0x10
  75196. bcc,a 9000f
  75197. @@ -44,6 +46,8 @@
  75198. retl
  75199. and %o0, %o1, %o0
  75200. -.size __libc_fork,.-__libc_fork
  75201. -weak_alias(__libc_fork,fork)
  75202. -libc_hidden_weak(fork)
  75203. +.size fork,.-fork
  75204. +#ifdef __UCLIBC_HAS_THREADS__
  75205. +strong_alias(fork,__libc_fork)
  75206. +#endif
  75207. +libc_hidden_def(fork)
  75208. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fpu_control.h uClibc/libc/sysdeps/linux/sparc/fpu_control.h
  75209. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  75210. +++ uClibc/libc/sysdeps/linux/sparc/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  75211. @@ -14,9 +14,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 _FPU_CONTROL_H
  75220. #define _FPU_CONTROL_H 1
  75221. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/sparc/jmpbuf-offsets.h
  75222. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  75223. +++ uClibc/libc/sysdeps/linux/sparc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  75224. @@ -0,0 +1,29 @@
  75225. +/* Private macros for accessing __jmp_buf contents. SPARC version.
  75226. + Copyright (C) 2006 Free Software Foundation, Inc.
  75227. + This file is part of the GNU C Library.
  75228. +
  75229. + The GNU C Library is free software; you can redistribute it and/or
  75230. + modify it under the terms of the GNU Lesser General Public
  75231. + License as published by the Free Software Foundation; either
  75232. + version 2.1 of the License, or (at your option) any later version.
  75233. +
  75234. + The GNU C Library is distributed in the hope that it will be useful,
  75235. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  75236. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  75237. + Lesser General Public License for more details.
  75238. +
  75239. + You should have received a copy of the GNU Lesser General Public
  75240. + License along with the GNU C Library; if not, see
  75241. + <http://www.gnu.org/licenses/>. */
  75242. +
  75243. +#include <bits/wordsize.h>
  75244. +
  75245. +#if __WORDSIZE == 64
  75246. +#define O_mask_was_saved 512
  75247. +#define O_gregs 32
  75248. +#define O_g1 (O_gregs + 4*8)
  75249. +#else
  75250. +#define JB_SP 0
  75251. +#define JB_FP 1
  75252. +#define JB_PC 2
  75253. +#endif
  75254. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/sparc/jmpbuf-unwind.h
  75255. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  75256. +++ uClibc/libc/sysdeps/linux/sparc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  75257. @@ -0,0 +1,31 @@
  75258. +/*
  75259. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  75260. + *
  75261. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75262. + */
  75263. +#include <setjmp.h>
  75264. +#include <jmpbuf-offsets.h>
  75265. +
  75266. +#if __WORDSIZE == 64
  75267. +
  75268. +/* Test if longjmp to JMPBUF would unwind the frame
  75269. + containing a local variable at ADDRESS. */
  75270. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75271. + ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp)
  75272. +
  75273. +#else
  75274. +
  75275. +/* Test if longjmp to JMPBUF would unwind the frame
  75276. + containing a local variable at ADDRESS. */
  75277. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75278. + ((int) (address) < (jmpbuf)[JB_SP])
  75279. +
  75280. +#endif
  75281. +
  75282. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  75283. +#if defined(__arch64__)
  75284. +#include "sparc64/jmpbuf-unwind.h"
  75285. +#else
  75286. +#include "sparc32/jmpbuf-unwind.h"
  75287. +#endif
  75288. +#endif
  75289. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/__longjmp.S uClibc/libc/sysdeps/linux/sparc/__longjmp.S
  75290. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  75291. +++ uClibc/libc/sysdeps/linux/sparc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  75292. @@ -12,16 +12,11 @@
  75293. Lesser General Public License for more details.
  75294. You should have received a copy of the GNU Lesser General Public
  75295. - License along with the GNU C Library; if not, write to the Free
  75296. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75297. - 02111-1307 USA. */
  75298. + License along with the GNU C Library; if not, see
  75299. + <http://www.gnu.org/licenses/>. */
  75300. -#include <features.h>
  75301. -#include <sys/syscall.h>
  75302. +#include <jmpbuf-offsets.h>
  75303. -#define _ASM 1
  75304. -#define _SETJMP_H
  75305. -#include <bits/setjmp.h>
  75306. #define ENV(base,reg) [%base + (reg * 4)]
  75307. #define ST_FLUSH_WINDOWS 3
  75308. #define RW_FP [%fp + 0x48]
  75309. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/Makefile.arch uClibc/libc/sysdeps/linux/sparc/Makefile.arch
  75310. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  75311. +++ uClibc/libc/sysdeps/linux/sparc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  75312. @@ -5,25 +5,23 @@
  75313. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75314. #
  75315. -CSRC := brk.c __syscall_error.c sigaction.c
  75316. +CSRC-y := brk.c __syscall_error.c sigaction.c
  75317. -SSRC := \
  75318. +SSRC-y := \
  75319. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  75320. syscall.S urem.S udiv.S umul.S sdiv.S rem.S pipe.S
  75321. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  75322. -SSRC += fork.S vfork.S clone.S
  75323. -endif
  75324. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += fork.S vfork.S clone.S
  75325. # check weather __LONG_DOUBLE_128__ is defined (long double support)
  75326. 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)
  75327. ifeq ($(UCLIBC_SPARC_HAS_LONG_DOUBLE),y)
  75328. -CSRC += $(foreach f, \
  75329. +CSRC-y += $(addprefix soft-fp/, \
  75330. q_div.c q_fle.c q_mul.c q_qtoll.c q_stoq.c \
  75331. mp_clz_tab.c q_dtoq.c q_flt.c q_neg.c q_qtos.c q_sub.c \
  75332. q_add.c q_feq.c q_fne.c q_qtod.c q_qtou.c q_ulltoq.c \
  75333. q_cmp.c q_fge.c q_itoq.c q_qtoull.c q_util.c \
  75334. - q_cmpe.c q_fgt.c q_lltoq.c q_qtoi.c q_sqrt.c q_utoq.c, soft-fp/$(f))
  75335. + q_cmpe.c q_fgt.c q_lltoq.c q_qtoi.c q_sqrt.c q_utoq.c)
  75336. else
  75337. -CSRC += qp_ops.c
  75338. +CSRC-y += qp_ops.c
  75339. endif
  75340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/pipe.S uClibc/libc/sysdeps/linux/sparc/pipe.S
  75341. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/pipe.S 2012-05-15 09:20:09.000000000 +0200
  75342. +++ uClibc/libc/sysdeps/linux/sparc/pipe.S 2014-02-03 12:32:56.000000000 +0100
  75343. @@ -13,10 +13,9 @@
  75344. Lesser General Public License for more details.
  75345. You should have received a copy of the GNU Lesser General Public
  75346. - License along with the GNU C Library; if not, write to the Free
  75347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75348. - 02111-1307 USA.
  75349. -
  75350. + License along with the GNU C Library; if not, see
  75351. + <http://www.gnu.org/licenses/>.
  75352. +
  75353. Ported to uClibc by:
  75354. Austin Foxley, Ceton Corporation <austinf@cetoncorp.com>
  75355. */
  75356. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/setjmp.S uClibc/libc/sysdeps/linux/sparc/setjmp.S
  75357. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  75358. +++ uClibc/libc/sysdeps/linux/sparc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  75359. @@ -12,15 +12,11 @@
  75360. Lesser General Public License for more details.
  75361. You should have received a copy of the GNU Lesser General Public
  75362. - License along with the GNU C Library; if not, write to the Free
  75363. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75364. - 02111-1307 USA. */
  75365. + License along with the GNU C Library; if not, see
  75366. + <http://www.gnu.org/licenses/>. */
  75367. -#include <sys/syscall.h>
  75368. +#include <jmpbuf-offsets.h>
  75369. -#define _ASM 1
  75370. -#define _SETJMP_H
  75371. -#include <bits/setjmp.h>
  75372. #define ST_FLUSH_WINDOWS 3
  75373. .global _setjmp
  75374. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sigaction.c uClibc/libc/sysdeps/linux/sparc/sigaction.c
  75375. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  75376. +++ uClibc/libc/sysdeps/linux/sparc/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  75377. @@ -14,9 +14,8 @@
  75378. Lesser General Public License for more details.
  75379. You should have received a copy of the GNU Lesser General Public
  75380. - License along with the GNU C Library; if not, write to the Free
  75381. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75382. - 02111-1307 USA.
  75383. + License along with the GNU C Library; if not, see
  75384. + <http://www.gnu.org/licenses/>.
  75385. Ported to uClibc from glibc: 090520:
  75386. Jan Buchholz, KIP, Uni Heidelberg <jan.buchholz@kip.uni-heidelberg.de>
  75387. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/double.h uClibc/libc/sysdeps/linux/sparc/soft-fp/double.h
  75388. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/double.h 2012-05-15 09:20:09.000000000 +0200
  75389. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/double.h 2014-02-03 12:32:56.000000000 +0100
  75390. @@ -27,9 +27,8 @@
  75391. Lesser General Public License for more details.
  75392. You should have received a copy of the GNU Lesser General Public
  75393. - License along with the GNU C Library; if not, write to the Free
  75394. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75395. - MA 02110-1301, USA. */
  75396. + License along with the GNU C Library; if not, see
  75397. + <http://www.gnu.org/licenses/>. */
  75398. #if _FP_W_TYPE_SIZE < 32
  75399. #error "Here's a nickel kid. Go buy yourself a real computer."
  75400. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/extended.h uClibc/libc/sysdeps/linux/sparc/soft-fp/extended.h
  75401. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/extended.h 2012-05-15 09:20:09.000000000 +0200
  75402. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/extended.h 2014-02-03 12:32:56.000000000 +0100
  75403. @@ -24,9 +24,8 @@
  75404. Lesser General Public License for more details.
  75405. You should have received a copy of the GNU Lesser General Public
  75406. - License along with the GNU C Library; if not, write to the Free
  75407. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75408. - MA 02110-1301, USA. */
  75409. + License along with the GNU C Library; if not, see
  75410. + <http://www.gnu.org/licenses/>. */
  75411. #if _FP_W_TYPE_SIZE < 32
  75412. #error "Here's a nickel, kid. Go buy yourself a real computer."
  75413. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/longlong.h uClibc/libc/sysdeps/linux/sparc/soft-fp/longlong.h
  75414. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/longlong.h 2012-05-15 09:20:09.000000000 +0200
  75415. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/longlong.h 2014-02-03 12:32:56.000000000 +0100
  75416. @@ -15,9 +15,8 @@
  75417. Lesser General Public License for more details.
  75418. You should have received a copy of the GNU Lesser General Public
  75419. - License along with the GNU C Library; if not, write to the Free
  75420. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75421. - 02111-1307 USA. */
  75422. + License along with the GNU C Library; if not, see
  75423. + <http://www.gnu.org/licenses/>. */
  75424. /* You have to define the following before including this file:
  75425. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c uClibc/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c
  75426. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c 2012-05-15 09:20:09.000000000 +0200
  75427. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c 2014-02-03 12:32:56.000000000 +0100
  75428. @@ -14,9 +14,8 @@
  75429. Lesser General Public License for more details.
  75430. You should have received a copy of the GNU Lesser General Public
  75431. - License along with the GNU C Library; if not, write to the Free
  75432. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75433. - 02111-1307 USA. */
  75434. + License along with the GNU C Library; if not, see
  75435. + <http://www.gnu.org/licenses/>. */
  75436. #if 0
  75437. #include <gmp.h>
  75438. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-1.h uClibc/libc/sysdeps/linux/sparc/soft-fp/op-1.h
  75439. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-1.h 2012-05-15 09:20:09.000000000 +0200
  75440. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/op-1.h 2014-02-03 12:32:56.000000000 +0100
  75441. @@ -27,9 +27,8 @@
  75442. Lesser General Public License for more details.
  75443. You should have received a copy of the GNU Lesser General Public
  75444. - License along with the GNU C Library; if not, write to the Free
  75445. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75446. - MA 02110-1301, USA. */
  75447. + License along with the GNU C Library; if not, see
  75448. + <http://www.gnu.org/licenses/>. */
  75449. #define _FP_FRAC_DECL_1(X) _FP_W_TYPE X##_f
  75450. #define _FP_FRAC_COPY_1(D,S) (D##_f = S##_f)
  75451. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-2.h uClibc/libc/sysdeps/linux/sparc/soft-fp/op-2.h
  75452. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-2.h 2012-05-15 09:20:09.000000000 +0200
  75453. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/op-2.h 2014-02-03 12:32:56.000000000 +0100
  75454. @@ -27,9 +27,8 @@
  75455. Lesser General Public License for more details.
  75456. You should have received a copy of the GNU Lesser General Public
  75457. - License along with the GNU C Library; if not, write to the Free
  75458. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75459. - MA 02110-1301, USA. */
  75460. + License along with the GNU C Library; if not, see
  75461. + <http://www.gnu.org/licenses/>. */
  75462. #define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0, X##_f1
  75463. #define _FP_FRAC_COPY_2(D,S) (D##_f0 = S##_f0, D##_f1 = S##_f1)
  75464. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-4.h uClibc/libc/sysdeps/linux/sparc/soft-fp/op-4.h
  75465. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-4.h 2012-05-15 09:20:09.000000000 +0200
  75466. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/op-4.h 2014-02-03 12:32:56.000000000 +0100
  75467. @@ -27,9 +27,8 @@
  75468. Lesser General Public License for more details.
  75469. You should have received a copy of the GNU Lesser General Public
  75470. - License along with the GNU C Library; if not, write to the Free
  75471. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75472. - MA 02110-1301, USA. */
  75473. + License along with the GNU C Library; if not, see
  75474. + <http://www.gnu.org/licenses/>. */
  75475. #define _FP_FRAC_DECL_4(X) _FP_W_TYPE X##_f[4]
  75476. #define _FP_FRAC_COPY_4(D,S) \
  75477. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-8.h uClibc/libc/sysdeps/linux/sparc/soft-fp/op-8.h
  75478. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-8.h 2012-05-15 09:20:09.000000000 +0200
  75479. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/op-8.h 2014-02-03 12:32:56.000000000 +0100
  75480. @@ -26,9 +26,8 @@
  75481. Lesser General Public License for more details.
  75482. You should have received a copy of the GNU Lesser General Public
  75483. - License along with the GNU C Library; if not, write to the Free
  75484. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75485. - MA 02110-1301, USA. */
  75486. + License along with the GNU C Library; if not, see
  75487. + <http://www.gnu.org/licenses/>. */
  75488. /* We need just a few things from here for op-4, if we ever need some
  75489. other macros, they can be added. */
  75490. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-common.h uClibc/libc/sysdeps/linux/sparc/soft-fp/op-common.h
  75491. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-common.h 2012-05-15 09:20:09.000000000 +0200
  75492. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/op-common.h 2014-02-03 12:32:56.000000000 +0100
  75493. @@ -26,9 +26,8 @@
  75494. Lesser General Public License for more details.
  75495. You should have received a copy of the GNU Lesser General Public
  75496. - License along with the GNU C Library; if not, write to the Free
  75497. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75498. - MA 02110-1301, USA. */
  75499. + License along with the GNU C Library; if not, see
  75500. + <http://www.gnu.org/licenses/>. */
  75501. #define _FP_DECL(wc, X) \
  75502. _FP_I_TYPE X##_c __attribute__((unused)), X##_s, X##_e; \
  75503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_add.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_add.c
  75504. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_add.c 2012-05-15 09:20:09.000000000 +0200
  75505. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_add.c 2014-02-03 12:32:56.000000000 +0100
  75506. @@ -16,9 +16,8 @@
  75507. Lesser General Public License for more details.
  75508. You should have received a copy of the GNU Lesser General Public
  75509. - License along with the GNU C Library; if not, write to the Free
  75510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75511. - 02111-1307 USA. */
  75512. + License along with the GNU C Library; if not, see
  75513. + <http://www.gnu.org/licenses/>. */
  75514. #include "soft-fp.h"
  75515. #include "quad.h"
  75516. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c
  75517. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c 2012-05-15 09:20:09.000000000 +0200
  75518. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c 2014-02-03 12:32:56.000000000 +0100
  75519. @@ -16,9 +16,8 @@
  75520. Lesser General Public License for more details.
  75521. You should have received a copy of the GNU Lesser General Public
  75522. - License along with the GNU C Library; if not, write to the Free
  75523. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75524. - 02111-1307 USA. */
  75525. + License along with the GNU C Library; if not, see
  75526. + <http://www.gnu.org/licenses/>. */
  75527. #include "soft-fp.h"
  75528. #include "quad.h"
  75529. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c
  75530. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c 2012-05-15 09:20:09.000000000 +0200
  75531. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c 2014-02-03 12:32:56.000000000 +0100
  75532. @@ -17,9 +17,8 @@
  75533. Lesser General Public License for more details.
  75534. You should have received a copy of the GNU Lesser General Public
  75535. - License along with the GNU C Library; if not, write to the Free
  75536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75537. - 02111-1307 USA. */
  75538. + License along with the GNU C Library; if not, see
  75539. + <http://www.gnu.org/licenses/>. */
  75540. #include "soft-fp.h"
  75541. #include "quad.h"
  75542. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_div.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_div.c
  75543. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_div.c 2012-05-15 09:20:09.000000000 +0200
  75544. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_div.c 2014-02-03 12:32:56.000000000 +0100
  75545. @@ -16,9 +16,8 @@
  75546. Lesser General Public License for more details.
  75547. You should have received a copy of the GNU Lesser General Public
  75548. - License along with the GNU C Library; if not, write to the Free
  75549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75550. - 02111-1307 USA. */
  75551. + License along with the GNU C Library; if not, see
  75552. + <http://www.gnu.org/licenses/>. */
  75553. #include "soft-fp.h"
  75554. #include "quad.h"
  75555. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c
  75556. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c 2012-05-15 09:20:09.000000000 +0200
  75557. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c 2014-02-03 12:32:56.000000000 +0100
  75558. @@ -16,9 +16,8 @@
  75559. Lesser General Public License for more details.
  75560. You should have received a copy of the GNU Lesser General Public
  75561. - License along with the GNU C Library; if not, write to the Free
  75562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75563. - 02111-1307 USA. */
  75564. + License along with the GNU C Library; if not, see
  75565. + <http://www.gnu.org/licenses/>. */
  75566. #include "soft-fp.h"
  75567. #include "double.h"
  75568. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_feq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_feq.c
  75569. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_feq.c 2012-05-15 09:20:09.000000000 +0200
  75570. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_feq.c 2014-02-03 12:32:56.000000000 +0100
  75571. @@ -16,9 +16,8 @@
  75572. Lesser General Public License for more details.
  75573. You should have received a copy of the GNU Lesser General Public
  75574. - License along with the GNU C Library; if not, write to the Free
  75575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75576. - 02111-1307 USA. */
  75577. + License along with the GNU C Library; if not, see
  75578. + <http://www.gnu.org/licenses/>. */
  75579. #include "soft-fp.h"
  75580. #include "quad.h"
  75581. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fge.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fge.c
  75582. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fge.c 2012-05-15 09:20:09.000000000 +0200
  75583. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fge.c 2014-02-03 12:32:56.000000000 +0100
  75584. @@ -16,9 +16,8 @@
  75585. Lesser General Public License for more details.
  75586. You should have received a copy of the GNU Lesser General Public
  75587. - License along with the GNU C Library; if not, write to the Free
  75588. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75589. - 02111-1307 USA. */
  75590. + License along with the GNU C Library; if not, see
  75591. + <http://www.gnu.org/licenses/>. */
  75592. #include "soft-fp.h"
  75593. #include "quad.h"
  75594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c
  75595. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c 2012-05-15 09:20:09.000000000 +0200
  75596. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c 2014-02-03 12:32:56.000000000 +0100
  75597. @@ -16,9 +16,8 @@
  75598. Lesser General Public License for more details.
  75599. You should have received a copy of the GNU Lesser General Public
  75600. - License along with the GNU C Library; if not, write to the Free
  75601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75602. - 02111-1307 USA. */
  75603. + License along with the GNU C Library; if not, see
  75604. + <http://www.gnu.org/licenses/>. */
  75605. #include "soft-fp.h"
  75606. #include "quad.h"
  75607. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fle.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fle.c
  75608. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fle.c 2012-05-15 09:20:09.000000000 +0200
  75609. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fle.c 2014-02-03 12:32:56.000000000 +0100
  75610. @@ -16,9 +16,8 @@
  75611. Lesser General Public License for more details.
  75612. You should have received a copy of the GNU Lesser General Public
  75613. - License along with the GNU C Library; if not, write to the Free
  75614. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75615. - 02111-1307 USA. */
  75616. + License along with the GNU C Library; if not, see
  75617. + <http://www.gnu.org/licenses/>. */
  75618. #include "soft-fp.h"
  75619. #include "quad.h"
  75620. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_flt.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_flt.c
  75621. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_flt.c 2012-05-15 09:20:09.000000000 +0200
  75622. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_flt.c 2014-02-03 12:32:56.000000000 +0100
  75623. @@ -16,9 +16,8 @@
  75624. Lesser General Public License for more details.
  75625. You should have received a copy of the GNU Lesser General Public
  75626. - License along with the GNU C Library; if not, write to the Free
  75627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75628. - 02111-1307 USA. */
  75629. + License along with the GNU C Library; if not, see
  75630. + <http://www.gnu.org/licenses/>. */
  75631. #include "soft-fp.h"
  75632. #include "quad.h"
  75633. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fne.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fne.c
  75634. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fne.c 2012-05-15 09:20:09.000000000 +0200
  75635. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_fne.c 2014-02-03 12:32:56.000000000 +0100
  75636. @@ -16,9 +16,8 @@
  75637. Lesser General Public License for more details.
  75638. You should have received a copy of the GNU Lesser General Public
  75639. - License along with the GNU C Library; if not, write to the Free
  75640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75641. - 02111-1307 USA. */
  75642. + License along with the GNU C Library; if not, see
  75643. + <http://www.gnu.org/licenses/>. */
  75644. #include "soft-fp.h"
  75645. #include "quad.h"
  75646. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c
  75647. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c 2012-05-15 09:20:09.000000000 +0200
  75648. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c 2014-02-03 12:32:56.000000000 +0100
  75649. @@ -16,9 +16,8 @@
  75650. Lesser General Public License for more details.
  75651. You should have received a copy of the GNU Lesser General Public
  75652. - License along with the GNU C Library; if not, write to the Free
  75653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75654. - 02111-1307 USA. */
  75655. + License along with the GNU C Library; if not, see
  75656. + <http://www.gnu.org/licenses/>. */
  75657. #include "soft-fp.h"
  75658. #include "quad.h"
  75659. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c
  75660. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c 2012-05-15 09:20:09.000000000 +0200
  75661. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c 2014-02-03 12:32:56.000000000 +0100
  75662. @@ -16,9 +16,8 @@
  75663. Lesser General Public License for more details.
  75664. You should have received a copy of the GNU Lesser General Public
  75665. - License along with the GNU C Library; if not, write to the Free
  75666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75667. - 02111-1307 USA. */
  75668. + License along with the GNU C Library; if not, see
  75669. + <http://www.gnu.org/licenses/>. */
  75670. #include "soft-fp.h"
  75671. #include "quad.h"
  75672. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_mul.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_mul.c
  75673. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_mul.c 2012-05-15 09:20:09.000000000 +0200
  75674. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_mul.c 2014-02-03 12:32:56.000000000 +0100
  75675. @@ -16,9 +16,8 @@
  75676. Lesser General Public License for more details.
  75677. You should have received a copy of the GNU Lesser General Public
  75678. - License along with the GNU C Library; if not, write to the Free
  75679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75680. - 02111-1307 USA. */
  75681. + License along with the GNU C Library; if not, see
  75682. + <http://www.gnu.org/licenses/>. */
  75683. #include "soft-fp.h"
  75684. #include "quad.h"
  75685. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_neg.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_neg.c
  75686. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_neg.c 2012-05-15 09:20:09.000000000 +0200
  75687. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_neg.c 2014-02-03 12:32:56.000000000 +0100
  75688. @@ -16,9 +16,8 @@
  75689. Lesser General Public License for more details.
  75690. You should have received a copy of the GNU Lesser General Public
  75691. - License along with the GNU C Library; if not, write to the Free
  75692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75693. - 02111-1307 USA. */
  75694. + License along with the GNU C Library; if not, see
  75695. + <http://www.gnu.org/licenses/>. */
  75696. #include "soft-fp.h"
  75697. #include "quad.h"
  75698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c
  75699. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c 2012-05-15 09:20:09.000000000 +0200
  75700. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c 2014-02-03 12:32:56.000000000 +0100
  75701. @@ -16,9 +16,8 @@
  75702. Lesser General Public License for more details.
  75703. You should have received a copy of the GNU Lesser General Public
  75704. - License along with the GNU C Library; if not, write to the Free
  75705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75706. - 02111-1307 USA. */
  75707. + License along with the GNU C Library; if not, see
  75708. + <http://www.gnu.org/licenses/>. */
  75709. #include "soft-fp.h"
  75710. #include "double.h"
  75711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c
  75712. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c 2012-05-15 09:20:09.000000000 +0200
  75713. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c 2014-02-03 12:32:56.000000000 +0100
  75714. @@ -16,9 +16,8 @@
  75715. Lesser General Public License for more details.
  75716. You should have received a copy of the GNU Lesser General Public
  75717. - License along with the GNU C Library; if not, write to the Free
  75718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75719. - 02111-1307 USA. */
  75720. + License along with the GNU C Library; if not, see
  75721. + <http://www.gnu.org/licenses/>. */
  75722. #define FP_ROUNDMODE FP_RND_ZERO
  75723. #include "soft-fp.h"
  75724. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c
  75725. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c 2012-05-15 09:20:09.000000000 +0200
  75726. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c 2014-02-03 12:32:56.000000000 +0100
  75727. @@ -16,9 +16,8 @@
  75728. Lesser General Public License for more details.
  75729. You should have received a copy of the GNU Lesser General Public
  75730. - License along with the GNU C Library; if not, write to the Free
  75731. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75732. - 02111-1307 USA. */
  75733. + License along with the GNU C Library; if not, see
  75734. + <http://www.gnu.org/licenses/>. */
  75735. #define FP_ROUNDMODE FP_RND_ZERO
  75736. #include "soft-fp.h"
  75737. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c
  75738. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c 2012-05-15 09:20:09.000000000 +0200
  75739. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c 2014-02-03 12:32:56.000000000 +0100
  75740. @@ -16,9 +16,8 @@
  75741. Lesser General Public License for more details.
  75742. You should have received a copy of the GNU Lesser General Public
  75743. - License along with the GNU C Library; if not, write to the Free
  75744. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75745. - 02111-1307 USA. */
  75746. + License along with the GNU C Library; if not, see
  75747. + <http://www.gnu.org/licenses/>. */
  75748. #include "soft-fp.h"
  75749. #include "single.h"
  75750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c
  75751. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c 2012-05-15 09:20:09.000000000 +0200
  75752. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c 2014-02-03 12:32:56.000000000 +0100
  75753. @@ -16,9 +16,8 @@
  75754. Lesser General Public License for more details.
  75755. You should have received a copy of the GNU Lesser General Public
  75756. - License along with the GNU C Library; if not, write to the Free
  75757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75758. - 02111-1307 USA. */
  75759. + License along with the GNU C Library; if not, see
  75760. + <http://www.gnu.org/licenses/>. */
  75761. #define FP_ROUNDMODE FP_RND_ZERO
  75762. #include "soft-fp.h"
  75763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c
  75764. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c 2012-05-15 09:20:09.000000000 +0200
  75765. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c 2014-02-03 12:32:56.000000000 +0100
  75766. @@ -16,9 +16,8 @@
  75767. Lesser General Public License for more details.
  75768. You should have received a copy of the GNU Lesser General Public
  75769. - License along with the GNU C Library; if not, write to the Free
  75770. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75771. - 02111-1307 USA. */
  75772. + License along with the GNU C Library; if not, see
  75773. + <http://www.gnu.org/licenses/>. */
  75774. #define FP_ROUNDMODE FP_RND_ZERO
  75775. #include "soft-fp.h"
  75776. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c
  75777. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c 2012-05-15 09:20:09.000000000 +0200
  75778. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c 2014-02-03 12:32:56.000000000 +0100
  75779. @@ -16,9 +16,8 @@
  75780. Lesser General Public License for more details.
  75781. You should have received a copy of the GNU Lesser General Public
  75782. - License along with the GNU C Library; if not, write to the Free
  75783. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75784. - 02111-1307 USA. */
  75785. + License along with the GNU C Library; if not, see
  75786. + <http://www.gnu.org/licenses/>. */
  75787. #include "soft-fp.h"
  75788. #include "quad.h"
  75789. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c
  75790. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c 2012-05-15 09:20:09.000000000 +0200
  75791. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c 2014-02-03 12:32:56.000000000 +0100
  75792. @@ -16,9 +16,8 @@
  75793. Lesser General Public License for more details.
  75794. You should have received a copy of the GNU Lesser General Public
  75795. - License along with the GNU C Library; if not, write to the Free
  75796. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75797. - 02111-1307 USA. */
  75798. + License along with the GNU C Library; if not, see
  75799. + <http://www.gnu.org/licenses/>. */
  75800. #include "soft-fp.h"
  75801. #include "single.h"
  75802. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sub.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_sub.c
  75803. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sub.c 2012-05-15 09:20:09.000000000 +0200
  75804. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_sub.c 2014-02-03 12:32:56.000000000 +0100
  75805. @@ -16,9 +16,8 @@
  75806. Lesser General Public License for more details.
  75807. You should have received a copy of the GNU Lesser General Public
  75808. - License along with the GNU C Library; if not, write to the Free
  75809. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75810. - 02111-1307 USA. */
  75811. + License along with the GNU C Library; if not, see
  75812. + <http://www.gnu.org/licenses/>. */
  75813. #include "soft-fp.h"
  75814. #include "quad.h"
  75815. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/quad.h uClibc/libc/sysdeps/linux/sparc/soft-fp/quad.h
  75816. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/quad.h 2012-05-15 09:20:09.000000000 +0200
  75817. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/quad.h 2014-02-03 12:32:56.000000000 +0100
  75818. @@ -27,9 +27,8 @@
  75819. Lesser General Public License for more details.
  75820. You should have received a copy of the GNU Lesser General Public
  75821. - License along with the GNU C Library; if not, write to the Free
  75822. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75823. - MA 02110-1301, USA. */
  75824. + License along with the GNU C Library; if not, see
  75825. + <http://www.gnu.org/licenses/>. */
  75826. #if _FP_W_TYPE_SIZE < 32
  75827. #error "Here's a nickel, kid. Go buy yourself a real computer."
  75828. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c
  75829. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c 2012-05-15 09:20:09.000000000 +0200
  75830. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c 2014-02-03 12:32:56.000000000 +0100
  75831. @@ -16,9 +16,8 @@
  75832. Lesser General Public License for more details.
  75833. You should have received a copy of the GNU Lesser General Public
  75834. - License along with the GNU C Library; if not, write to the Free
  75835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75836. - 02111-1307 USA. */
  75837. + License along with the GNU C Library; if not, see
  75838. + <http://www.gnu.org/licenses/>. */
  75839. #include "soft-fp.h"
  75840. #include "quad.h"
  75841. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_util.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_util.c
  75842. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_util.c 2012-05-15 09:20:09.000000000 +0200
  75843. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_util.c 2014-02-03 12:32:56.000000000 +0100
  75844. @@ -16,9 +16,8 @@
  75845. Lesser General Public License for more details.
  75846. You should have received a copy of the GNU Lesser General Public
  75847. - License along with the GNU C Library; if not, write to the Free
  75848. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75849. - 02111-1307 USA. */
  75850. + License along with the GNU C Library; if not, see
  75851. + <http://www.gnu.org/licenses/>. */
  75852. #include "soft-fp.h"
  75853. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c uClibc/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c
  75854. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c 2012-05-15 09:20:09.000000000 +0200
  75855. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c 2014-02-03 12:32:56.000000000 +0100
  75856. @@ -16,9 +16,8 @@
  75857. Lesser General Public License for more details.
  75858. You should have received a copy of the GNU Lesser General Public
  75859. - License along with the GNU C Library; if not, write to the Free
  75860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75861. - 02111-1307 USA. */
  75862. + License along with the GNU C Library; if not, see
  75863. + <http://www.gnu.org/licenses/>. */
  75864. #include "soft-fp.h"
  75865. #include "quad.h"
  75866. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h uClibc/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h
  75867. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h 2012-05-15 09:20:09.000000000 +0200
  75868. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h 2014-02-03 12:32:56.000000000 +0100
  75869. @@ -17,9 +17,8 @@
  75870. Lesser General Public License for more details.
  75871. You should have received a copy of the GNU Lesser General Public
  75872. - License along with the GNU C Library; if not, write to the Free
  75873. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75874. - 02111-1307 USA. */
  75875. + License along with the GNU C Library; if not, see
  75876. + <http://www.gnu.org/licenses/>. */
  75877. #include <fpu_control.h>
  75878. #include <stdlib.h>
  75879. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/single.h uClibc/libc/sysdeps/linux/sparc/soft-fp/single.h
  75880. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/single.h 2012-05-15 09:20:09.000000000 +0200
  75881. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/single.h 2014-02-03 12:32:56.000000000 +0100
  75882. @@ -27,9 +27,8 @@
  75883. Lesser General Public License for more details.
  75884. You should have received a copy of the GNU Lesser General Public
  75885. - License along with the GNU C Library; if not, write to the Free
  75886. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75887. - MA 02110-1301, USA. */
  75888. + License along with the GNU C Library; if not, see
  75889. + <http://www.gnu.org/licenses/>. */
  75890. #if _FP_W_TYPE_SIZE < 32
  75891. #error "Here's a nickel kid. Go buy yourself a real computer."
  75892. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h uClibc/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h
  75893. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h 2012-05-15 09:20:09.000000000 +0200
  75894. +++ uClibc/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h 2014-02-03 12:32:56.000000000 +0100
  75895. @@ -27,9 +27,8 @@
  75896. Lesser General Public License for more details.
  75897. You should have received a copy of the GNU Lesser General Public
  75898. - License along with the GNU C Library; if not, write to the Free
  75899. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75900. - MA 02110-1301, USA. */
  75901. + License along with the GNU C Library; if not, see
  75902. + <http://www.gnu.org/licenses/>. */
  75903. #ifndef SOFT_FP_H
  75904. #define SOFT_FP_H
  75905. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sparcv9/clone.S uClibc/libc/sysdeps/linux/sparc/sparcv9/clone.S
  75906. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sparcv9/clone.S 2012-05-15 09:20:09.000000000 +0200
  75907. +++ uClibc/libc/sysdeps/linux/sparc/sparcv9/clone.S 2014-02-03 12:32:56.000000000 +0100
  75908. @@ -13,9 +13,8 @@
  75909. Lesser General Public License for more details.
  75910. You should have received a copy of the GNU Lesser General Public
  75911. - License along with the GNU C Library; if not, write to the Free
  75912. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75913. - 02111-1307 USA. */
  75914. + License along with the GNU C Library; if not, see
  75915. + <http://www.gnu.org/licenses/>. */
  75916. /* clone() is even more special than fork() as it mucks with stacks
  75917. and invokes a function in the right context after its all over. */
  75918. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/procfs.h uClibc/libc/sysdeps/linux/sparc/sys/procfs.h
  75919. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  75920. +++ uClibc/libc/sysdeps/linux/sparc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  75921. @@ -12,9 +12,8 @@
  75922. Lesser General Public License for more details.
  75923. You should have received a copy of the GNU Lesser General Public
  75924. - License along with the GNU C Library; if not, write to the Free
  75925. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75926. - 02111-1307 USA. */
  75927. + License along with the GNU C Library; if not, see
  75928. + <http://www.gnu.org/licenses/>. */
  75929. #ifndef _SYS_PROCFS_H
  75930. #define _SYS_PROCFS_H 1
  75931. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ptrace.h uClibc/libc/sysdeps/linux/sparc/sys/ptrace.h
  75932. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  75933. +++ uClibc/libc/sysdeps/linux/sparc/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  75934. @@ -13,9 +13,8 @@
  75935. Lesser General Public License for more details.
  75936. You should have received a copy of the GNU Lesser General Public
  75937. - License along with the GNU C Library; if not, write to the Free
  75938. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75939. - 02111-1307 USA. */
  75940. + License along with the GNU C Library; if not, see
  75941. + <http://www.gnu.org/licenses/>. */
  75942. #ifndef _SYS_PTRACE_H
  75943. #define _SYS_PTRACE_H 1
  75944. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ucontext.h uClibc/libc/sysdeps/linux/sparc/sys/ucontext.h
  75945. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  75946. +++ uClibc/libc/sysdeps/linux/sparc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  75947. @@ -12,9 +12,8 @@
  75948. Lesser General Public License for more details.
  75949. You should have received a copy of the GNU Lesser General Public
  75950. - License along with the GNU C Library; if not, write to the Free
  75951. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75952. - 02111-1307 USA. */
  75953. + License along with the GNU C Library; if not, see
  75954. + <http://www.gnu.org/licenses/>. */
  75955. #ifndef _SYS_UCONTEXT_H
  75956. #define _SYS_UCONTEXT_H 1
  75957. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/user.h uClibc/libc/sysdeps/linux/sparc/sys/user.h
  75958. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  75959. +++ uClibc/libc/sysdeps/linux/sparc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  75960. @@ -12,9 +12,8 @@
  75961. Lesser General Public License for more details.
  75962. You should have received a copy of the GNU Lesser General Public
  75963. - License along with the GNU C Library; if not, write to the Free
  75964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75965. - 02111-1307 USA. */
  75966. + License along with the GNU C Library; if not, see
  75967. + <http://www.gnu.org/licenses/>. */
  75968. #ifndef _SYS_USER_H
  75969. #define _SYS_USER_H 1
  75970. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/syscall.S uClibc/libc/sysdeps/linux/sparc/syscall.S
  75971. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/syscall.S 2012-05-15 09:20:09.000000000 +0200
  75972. +++ uClibc/libc/sysdeps/linux/sparc/syscall.S 2014-02-03 12:32:56.000000000 +0100
  75973. @@ -12,9 +12,8 @@
  75974. Lesser General Public License for more details.
  75975. You should have received a copy of the GNU Lesser General Public
  75976. - License along with the GNU C Library; if not, write to the Free
  75977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75978. - 02111-1307 USA. */
  75979. + License along with the GNU C Library; if not, see
  75980. + <http://www.gnu.org/licenses/>. */
  75981. #include <features.h>
  75982. #include <sys/syscall.h>
  75983. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/vfork.S uClibc/libc/sysdeps/linux/sparc/vfork.S
  75984. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/vfork.S 2012-05-15 09:20:09.000000000 +0200
  75985. +++ uClibc/libc/sysdeps/linux/sparc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  75986. @@ -13,9 +13,8 @@
  75987. Lesser General Public License for more details.
  75988. You should have received a copy of the GNU Lesser General Public
  75989. - License along with the GNU C Library; if not, write to the Free
  75990. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75991. - 02111-1307 USA. */
  75992. + License along with the GNU C Library; if not, see
  75993. + <http://www.gnu.org/licenses/>. */
  75994. /* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */
  75995. @@ -52,4 +51,4 @@
  75996. .size __vfork,.-__vfork
  75997. weak_alias(__vfork,vfork)
  75998. -libc_hidden_weak(vfork)
  75999. +libc_hidden_def(vfork)
  76000. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/fcntl.h uClibc/libc/sysdeps/linux/v850/bits/fcntl.h
  76001. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  76002. +++ uClibc/libc/sysdeps/linux/v850/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  76003. @@ -13,9 +13,8 @@
  76004. Lesser General Public License for more details.
  76005. You should have received a copy of the GNU Lesser General Public
  76006. - License along with the GNU C Library; if not, write to the Free
  76007. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76008. - 02111-1307 USA. */
  76009. + License along with the GNU C Library; if not, see
  76010. + <http://www.gnu.org/licenses/>. */
  76011. #ifndef _FCNTL_H
  76012. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  76013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/kernel_types.h uClibc/libc/sysdeps/linux/v850/bits/kernel_types.h
  76014. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  76015. +++ uClibc/libc/sysdeps/linux/v850/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  76016. @@ -41,6 +41,8 @@
  76017. typedef unsigned short __kernel_old_uid_t;
  76018. typedef unsigned short __kernel_old_gid_t;
  76019. typedef __kernel_dev_t __kernel_old_dev_t;
  76020. +typedef long __kernel_long_t;
  76021. +typedef unsigned long __kernel_ulong_t;
  76022. typedef struct {
  76023. #ifdef __USE_ALL
  76024. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/poll.h uClibc/libc/sysdeps/linux/v850/bits/poll.h
  76025. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  76026. +++ uClibc/libc/sysdeps/linux/v850/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  76027. @@ -12,9 +12,8 @@
  76028. Lesser General Public License for more details.
  76029. You should have received a copy of the GNU Lesser General Public
  76030. - License along with the GNU C Library; if not, write to the Free
  76031. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76032. - 02111-1307 USA. */
  76033. + License along with the GNU C Library; if not, see
  76034. + <http://www.gnu.org/licenses/>. */
  76035. #ifndef _SYS_POLL_H
  76036. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  76037. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/setjmp.h uClibc/libc/sysdeps/linux/v850/bits/setjmp.h
  76038. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  76039. +++ uClibc/libc/sysdeps/linux/v850/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  76040. @@ -18,7 +18,6 @@
  76041. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  76042. #endif
  76043. -#ifndef _ASM
  76044. typedef struct
  76045. {
  76046. /* Stack pointer. */
  76047. @@ -30,13 +29,5 @@
  76048. /* Callee-saved registers r2 and r20-r29. */
  76049. int __regs[11];
  76050. } __jmp_buf[1];
  76051. -#endif
  76052. -
  76053. -#define JB_SIZE (4 * 13)
  76054. -
  76055. -/* Test if longjmp to JMPBUF would unwind the frame
  76056. - containing a local variable at ADDRESS. */
  76057. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  76058. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  76059. #endif /* bits/setjmp.h */
  76060. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
  76061. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  76062. +++ uClibc/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  76063. @@ -10,10 +10,10 @@
  76064. #undef __UCLIBC_ABORT_INSTRUCTION__
  76065. /* can your target use syscall6() for mmap ? */
  76066. -#undef __UCLIBC_MMAP_HAS_6_ARGS__
  76067. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  76068. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  76069. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  76070. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  76071. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  76072. /* does your target have a broken create_module() ? */
  76073. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  76074. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/wordsize.h uClibc/libc/sysdeps/linux/v850/bits/wordsize.h
  76075. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  76076. +++ uClibc/libc/sysdeps/linux/v850/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  76077. @@ -12,8 +12,7 @@
  76078. Lesser General Public License for more details.
  76079. You should have received a copy of the GNU Lesser General Public
  76080. - License along with the GNU C Library; if not, write to the Free
  76081. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76082. - 02111-1307 USA. */
  76083. + License along with the GNU C Library; if not, see
  76084. + <http://www.gnu.org/licenses/>. */
  76085. #define __WORDSIZE 32
  76086. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/v850/jmpbuf-offsets.h
  76087. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  76088. +++ uClibc/libc/sysdeps/linux/v850/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  76089. @@ -0,0 +1,6 @@
  76090. +/*
  76091. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76092. + *
  76093. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76094. + */
  76095. +#define JB_SIZE (4 * 13)
  76096. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/v850/jmpbuf-unwind.h
  76097. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  76098. +++ uClibc/libc/sysdeps/linux/v850/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  76099. @@ -0,0 +1,11 @@
  76100. +/*
  76101. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76102. + *
  76103. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76104. + */
  76105. +#include <setjmp.h>
  76106. +
  76107. +/* Test if longjmp to JMPBUF would unwind the frame
  76108. + containing a local variable at ADDRESS. */
  76109. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  76110. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  76111. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/__longjmp.S uClibc/libc/sysdeps/linux/v850/__longjmp.S
  76112. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  76113. +++ uClibc/libc/sysdeps/linux/v850/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  76114. @@ -11,11 +11,6 @@
  76115. * Written by Miles Bader <miles@gnu.org>
  76116. */
  76117. -#include <features.h>
  76118. -#define _SETJMP_H
  76119. -#define _ASM
  76120. -#include <bits/setjmp.h>
  76121. -
  76122. #include <clinkage.h>
  76123. .text
  76124. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/Makefile uClibc/libc/sysdeps/linux/v850/Makefile
  76125. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/Makefile 2012-05-15 09:20:09.000000000 +0200
  76126. +++ uClibc/libc/sysdeps/linux/v850/Makefile 2014-02-03 12:32:56.000000000 +0100
  76127. @@ -20,7 +20,7 @@
  76128. SSRC := setjmp.S __longjmp.S vfork.S
  76129. SOBJ := $(patsubst %.S,%.o, $(SSRC))
  76130. -CSRC := mmap.c syscall.c clone.c
  76131. +CSRC := syscall.c clone.c
  76132. COBJ := $(patsubst %.c,%.o, $(CSRC))
  76133. OBJS := $(SOBJ) $(COBJ)
  76134. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/mmap.c uClibc/libc/sysdeps/linux/v850/mmap.c
  76135. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/mmap.c 2012-05-15 09:20:09.000000000 +0200
  76136. +++ uClibc/libc/sysdeps/linux/v850/mmap.c 1970-01-01 01:00:00.000000000 +0100
  76137. @@ -1,16 +0,0 @@
  76138. -/* Use new style mmap for v850 */
  76139. -/*
  76140. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76141. - *
  76142. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76143. - */
  76144. -
  76145. -#include <unistd.h>
  76146. -#include <errno.h>
  76147. -#include <sys/mman.h>
  76148. -#include <sys/syscall.h>
  76149. -
  76150. -
  76151. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  76152. - int, flags, int, fd, __off_t, offset)
  76153. -libc_hidden_def(mmap)
  76154. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/setjmp.S uClibc/libc/sysdeps/linux/v850/setjmp.S
  76155. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76156. +++ uClibc/libc/sysdeps/linux/v850/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76157. @@ -11,10 +11,6 @@
  76158. * Written by Miles Bader <miles@gnu.org>
  76159. */
  76160. -#define _SETJMP_H
  76161. -#define _ASM
  76162. -#include <bits/setjmp.h>
  76163. -
  76164. #include <clinkage.h>
  76165. .text
  76166. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/procfs.h uClibc/libc/sysdeps/linux/v850/sys/procfs.h
  76167. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  76168. +++ uClibc/libc/sysdeps/linux/v850/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  76169. @@ -12,9 +12,8 @@
  76170. Lesser General Public License for more details.
  76171. You should have received a copy of the GNU Lesser General Public
  76172. - License along with the GNU C Library; if not, write to the Free
  76173. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76174. - 02111-1307 USA. */
  76175. + License along with the GNU C Library; if not, see
  76176. + <http://www.gnu.org/licenses/>. */
  76177. #ifndef _SYS_PROCFS_H
  76178. #define _SYS_PROCFS_H 1
  76179. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ptrace.h uClibc/libc/sysdeps/linux/v850/sys/ptrace.h
  76180. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  76181. +++ uClibc/libc/sysdeps/linux/v850/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  76182. @@ -13,9 +13,8 @@
  76183. Lesser General Public License for more details.
  76184. You should have received a copy of the GNU Lesser General Public
  76185. - License along with the GNU C Library; if not, write to the Free
  76186. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76187. - 02111-1307 USA. */
  76188. + License along with the GNU C Library; if not, see
  76189. + <http://www.gnu.org/licenses/>. */
  76190. #ifndef _SYS_PTRACE_H
  76191. #define _SYS_PTRACE_H 1
  76192. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ucontext.h uClibc/libc/sysdeps/linux/v850/sys/ucontext.h
  76193. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  76194. +++ uClibc/libc/sysdeps/linux/v850/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  76195. @@ -12,9 +12,8 @@
  76196. Lesser General Public License for more details.
  76197. You should have received a copy of the GNU Lesser General Public
  76198. - License along with the GNU C Library; if not, write to the Free
  76199. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76200. - 02111-1307 USA. */
  76201. + License along with the GNU C Library; if not, see
  76202. + <http://www.gnu.org/licenses/>. */
  76203. #ifndef _SYS_UCONTEXT_H
  76204. #define _SYS_UCONTEXT_H 1
  76205. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/vfork.S uClibc/libc/sysdeps/linux/v850/vfork.S
  76206. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/vfork.S 2012-05-15 09:20:09.000000000 +0200
  76207. +++ uClibc/libc/sysdeps/linux/v850/vfork.S 2014-02-03 12:32:56.000000000 +0100
  76208. @@ -11,12 +11,7 @@
  76209. * Written by Miles Bader <miles@gnu.org>
  76210. */
  76211. -#include <features.h>
  76212. -#define _ERRNO_H 1
  76213. -#include <bits/errno.h>
  76214. -#define _SYSCALL_H
  76215. -#include <bits/sysnum.h>
  76216. -
  76217. +#include <sys/syscall.h>
  76218. #include <clinkage.h>
  76219. /* Clone the calling process, but without copying the whole address space.
  76220. @@ -24,8 +19,7 @@
  76221. replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  76222. and the process ID of the new process to the old process. */
  76223. -.global C_SYMBOL_NAME(errno)
  76224. -
  76225. +/* this should be made hidden */
  76226. C_ENTRY (__vfork):
  76227. addi SYS_vfork, r0, r12
  76228. trap 0
  76229. @@ -39,4 +33,4 @@
  76230. jmp [lp] /* error return */
  76231. C_END(__vfork)
  76232. weak_alias(__vfork,vfork)
  76233. -libc_hidden_weak(vfork)
  76234. +libc_hidden_def(vfork)
  76235. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/fcntl.h uClibc/libc/sysdeps/linux/vax/bits/fcntl.h
  76236. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  76237. +++ uClibc/libc/sysdeps/linux/vax/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  76238. @@ -14,8 +14,7 @@
  76239. You should have received a copy of the GNU Library General Public
  76240. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76241. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76242. - Boston, MA 02111-1307, USA. */
  76243. + see <http://www.gnu.org/licenses/>. */
  76244. #ifndef _FCNTL_H
  76245. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  76246. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/huge_val.h uClibc/libc/sysdeps/linux/vax/bits/huge_val.h
  76247. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/huge_val.h 1970-01-01 01:00:00.000000000 +0100
  76248. +++ uClibc/libc/sysdeps/linux/vax/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  76249. @@ -0,0 +1,25 @@
  76250. +/* `HUGE_VAL' constant for Vaxen.
  76251. + Used by <stdlib.h> and <math.h> functions for overflow.
  76252. + Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
  76253. + This file is part of the GNU C Library.
  76254. +
  76255. + The GNU C Library is free software; you can redistribute it and/or
  76256. + modify it under the terms of the GNU Lesser General Public
  76257. + License as published by the Free Software Foundation; either
  76258. + version 2.1 of the License, or (at your option) any later version.
  76259. +
  76260. + The GNU C Library is distributed in the hope that it will be useful,
  76261. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76262. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76263. + Lesser General Public License for more details.
  76264. +
  76265. + You should have received a copy of the GNU Lesser General Public
  76266. + License along with the GNU C Library; if not, see
  76267. + <http://www.gnu.org/licenses/>. */
  76268. +
  76269. +#ifndef _MATH_H
  76270. +# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  76271. +#endif
  76272. +
  76273. +
  76274. +#define HUGE_VAL 1.70141182460469227e38
  76275. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/ipc.h uClibc/libc/sysdeps/linux/vax/bits/ipc.h
  76276. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  76277. +++ uClibc/libc/sysdeps/linux/vax/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  76278. @@ -13,8 +13,7 @@
  76279. You should have received a copy of the GNU Library General Public
  76280. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76281. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76282. - Boston, MA 02111-1307, USA. */
  76283. + see <http://www.gnu.org/licenses/>. */
  76284. #ifndef _SYS_IPC_H
  76285. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  76286. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/machine-gmon.h uClibc/libc/sysdeps/linux/vax/bits/machine-gmon.h
  76287. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/machine-gmon.h 2012-05-15 09:20:09.000000000 +0200
  76288. +++ uClibc/libc/sysdeps/linux/vax/bits/machine-gmon.h 1970-01-01 01:00:00.000000000 +0100
  76289. @@ -1,41 +0,0 @@
  76290. -/* i386-specific implementation of profiling support.
  76291. - Copyright (C) 1997, 2002 Free Software Foundation, Inc.
  76292. - This file is part of the GNU C Library.
  76293. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
  76294. -
  76295. - The GNU C Library is free software; you can redistribute it and/or
  76296. - modify it under the terms of the GNU Lesser General Public
  76297. - License as published by the Free Software Foundation; either
  76298. - version 2.1 of the License, or (at your option) any later version.
  76299. -
  76300. - The GNU C Library is distributed in the hope that it will be useful,
  76301. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  76302. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76303. - Lesser General Public License for more details.
  76304. -
  76305. - You should have received a copy of the GNU Lesser General Public
  76306. - License along with the GNU C Library; if not, write to the Free
  76307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76308. - 02111-1307 USA. */
  76309. -
  76310. -#include <sysdep.h>
  76311. -
  76312. -/* We need a special version of the `mcount' function since for ix86 it
  76313. - must not clobber any register. This has several reasons:
  76314. - - there is a bug in gcc as of version 2.7.2.2 which prohibits the
  76315. - use of profiling together with nested functions
  76316. - - the ELF `fixup' function uses GCC's regparm feature
  76317. - - some (future) systems might want to pass parameters in registers. */
  76318. -
  76319. -/* We must not pollute the global namespace. */
  76320. -#define mcount_internal __mcount_internal
  76321. -
  76322. -extern void mcount_internal (u_long frompc, u_long selfpc);
  76323. -
  76324. -#define _MCOUNT_DECL(frompc, selfpc) \
  76325. -void __attribute__ (( regparm (2) )) mcount_internal (u_long frompc, u_long selfpc)
  76326. -
  76327. -
  76328. -/* Define MCOUNT as empty since we have the implementation in another
  76329. - file. */
  76330. -#define MCOUNT
  76331. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sem.h uClibc/libc/sysdeps/linux/vax/bits/sem.h
  76332. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  76333. +++ uClibc/libc/sysdeps/linux/vax/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  76334. @@ -13,8 +13,7 @@
  76335. You should have received a copy of the GNU Library General Public
  76336. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76337. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76338. - Boston, MA 02111-1307, USA. */
  76339. + see <http://www.gnu.org/licenses/>. */
  76340. #ifndef _SYS_SEM_H
  76341. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  76342. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/setjmp.h uClibc/libc/sysdeps/linux/vax/bits/setjmp.h
  76343. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  76344. +++ uClibc/libc/sysdeps/linux/vax/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  76345. @@ -6,14 +6,8 @@
  76346. /* we want to save enough that we can use this to fool RET,
  76347. * So we basically save all of the CALLS stack frame. Plus regs. */
  76348. -#ifndef _ASM
  76349. typedef int __jmp_buf[16];
  76350. -#endif
  76351. -/* Test if longjmp to JMPBUF would unwind the frame
  76352. - containing a local variable at ADDRESS. */
  76353. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  76354. - ((void *) (address) < (void *) (jmpbuf[4]))
  76355. /*
  76356. jmp_buf layout. jmp_buf[0]
  76357. void *__cond; The condition handler
  76358. @@ -34,4 +28,3 @@
  76359. void *__rA; regs, r0->r11.
  76360. void *__rB; regs, r0->r11.
  76361. */
  76362. -
  76363. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/shm.h uClibc/libc/sysdeps/linux/vax/bits/shm.h
  76364. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  76365. +++ uClibc/libc/sysdeps/linux/vax/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  76366. @@ -13,8 +13,7 @@
  76367. You should have received a copy of the GNU Library General Public
  76368. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76369. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76370. - Boston, MA 02111-1307, USA. */
  76371. + see <http://www.gnu.org/licenses/>. */
  76372. #ifndef _SYS_SHM_H
  76373. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  76374. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sigcontext.h uClibc/libc/sysdeps/linux/vax/bits/sigcontext.h
  76375. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  76376. +++ uClibc/libc/sysdeps/linux/vax/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  76377. @@ -13,8 +13,7 @@
  76378. You should have received a copy of the GNU Library General Public
  76379. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76380. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76381. - Boston, MA 02111-1307, USA. */
  76382. + see <http://www.gnu.org/licenses/>. */
  76383. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  76384. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  76385. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/statfs.h uClibc/libc/sysdeps/linux/vax/bits/statfs.h
  76386. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  76387. +++ uClibc/libc/sysdeps/linux/vax/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100
  76388. @@ -1,61 +0,0 @@
  76389. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  76390. - This file is part of the GNU C Library.
  76391. -
  76392. - The GNU C Library is free software; you can redistribute it and/or
  76393. - modify it under the terms of the GNU Library General Public License as
  76394. - published by the Free Software Foundation; either version 2 of the
  76395. - License, or (at your option) any later version.
  76396. -
  76397. - The GNU C Library is distributed in the hope that it will be useful,
  76398. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  76399. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76400. - Library General Public License for more details.
  76401. -
  76402. - You should have received a copy of the GNU Library General Public
  76403. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  76404. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76405. - Boston, MA 02111-1307, USA. */
  76406. -
  76407. -#ifndef _SYS_STATFS_H
  76408. -# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  76409. -#endif
  76410. -
  76411. -#include <bits/types.h> /* for __fsid_t and __fsblkcnt_t*/
  76412. -
  76413. -struct statfs
  76414. - {
  76415. - int f_type;
  76416. - int f_bsize;
  76417. -#ifndef __USE_FILE_OFFSET64
  76418. - __fsblkcnt_t f_blocks;
  76419. - __fsblkcnt_t f_bfree;
  76420. - __fsblkcnt_t f_bavail;
  76421. - __fsfilcnt_t f_files;
  76422. - __fsfilcnt_t f_ffree;
  76423. -#else
  76424. - __fsblkcnt64_t f_blocks;
  76425. - __fsblkcnt64_t f_bfree;
  76426. - __fsblkcnt64_t f_bavail;
  76427. - __fsfilcnt64_t f_files;
  76428. - __fsfilcnt64_t f_ffree;
  76429. -#endif
  76430. - __fsid_t f_fsid;
  76431. - int f_namelen;
  76432. - int f_spare[6];
  76433. - };
  76434. -
  76435. -#ifdef __USE_LARGEFILE64
  76436. -struct statfs64
  76437. - {
  76438. - int f_type;
  76439. - int f_bsize;
  76440. - __fsblkcnt64_t f_blocks;
  76441. - __fsblkcnt64_t f_bfree;
  76442. - __fsblkcnt64_t f_bavail;
  76443. - __fsfilcnt64_t f_files;
  76444. - __fsfilcnt64_t f_ffree;
  76445. - __fsid_t f_fsid;
  76446. - int f_namelen;
  76447. - int f_spare[6];
  76448. - };
  76449. -#endif
  76450. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h
  76451. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  76452. +++ uClibc/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  76453. @@ -11,8 +11,8 @@
  76454. /* can your target use syscall6() for mmap ? */
  76455. #define __UCLIBC_MMAP_HAS_6_ARGS__
  76456. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  76457. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  76458. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  76459. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  76460. /* does your target have a broken create_module() ? */
  76461. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  76462. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/wordsize.h uClibc/libc/sysdeps/linux/vax/bits/wordsize.h
  76463. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  76464. +++ uClibc/libc/sysdeps/linux/vax/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  76465. @@ -13,7 +13,6 @@
  76466. You should have received a copy of the GNU Library General Public
  76467. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76468. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76469. - Boston, MA 02111-1307, USA. */
  76470. + see <http://www.gnu.org/licenses/>. */
  76471. #define __WORDSIZE 32
  76472. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/brk.c uClibc/libc/sysdeps/linux/vax/brk.c
  76473. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/brk.c 2012-05-15 09:20:09.000000000 +0200
  76474. +++ uClibc/libc/sysdeps/linux/vax/brk.c 2014-02-03 12:32:56.000000000 +0100
  76475. @@ -13,9 +13,8 @@
  76476. Lesser General Public License for more details.
  76477. You should have received a copy of the GNU Lesser General Public
  76478. - License along with the GNU C Library; if not, write to the Free
  76479. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76480. - 02111-1307 USA. */
  76481. + License along with the GNU C Library; if not, see
  76482. + <http://www.gnu.org/licenses/>. */
  76483. #include <errno.h>
  76484. #include <unistd.h>
  76485. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/clone.S uClibc/libc/sysdeps/linux/vax/clone.S
  76486. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/clone.S 2012-05-15 09:20:09.000000000 +0200
  76487. +++ uClibc/libc/sysdeps/linux/vax/clone.S 2014-02-03 12:32:56.000000000 +0100
  76488. @@ -12,8 +12,7 @@
  76489. You should have received a copy of the GNU Library General Public
  76490. License along with the GNU C Library; see the file COPYING.LIB. If not,
  76491. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  76492. - Boston, MA 02111-1307, USA. */
  76493. + see <http://www.gnu.org/licenses/>. */
  76494. /* clone() is even more special than fork() as it mucks with stacks
  76495. and invokes a function in the right context after its all over. */
  76496. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/vax/jmpbuf-unwind.h
  76497. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  76498. +++ uClibc/libc/sysdeps/linux/vax/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  76499. @@ -0,0 +1,11 @@
  76500. +/*
  76501. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76502. + *
  76503. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76504. + */
  76505. +#include <setjmp.h>
  76506. +
  76507. +/* Test if longjmp to JMPBUF would unwind the frame
  76508. + containing a local variable at ADDRESS. */
  76509. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  76510. + ((void *) (address) < (void *) (jmpbuf[4]))
  76511. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/Makefile.arch uClibc/libc/sysdeps/linux/vax/Makefile.arch
  76512. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  76513. +++ uClibc/libc/sysdeps/linux/vax/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  76514. @@ -6,5 +6,5 @@
  76515. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76516. #
  76517. -CSRC := brk.c mmap.c
  76518. -SSRC := __longjmp.S setjmp.S _setjmp.S clone.S
  76519. +CSRC-y := brk.c
  76520. +SSRC-y := __longjmp.S setjmp.S _setjmp.S clone.S
  76521. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/mmap.c uClibc/libc/sysdeps/linux/vax/mmap.c
  76522. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/mmap.c 2012-05-15 09:20:09.000000000 +0200
  76523. +++ uClibc/libc/sysdeps/linux/vax/mmap.c 1970-01-01 01:00:00.000000000 +0100
  76524. @@ -1,10 +0,0 @@
  76525. -
  76526. -#include <unistd.h>
  76527. -#include <sys/mman.h>
  76528. -#include <errno.h>
  76529. -#include <sys/syscall.h>
  76530. -
  76531. -_syscall6 (void *, mmap, void *, start, size_t, length, int, prot, int, flags,
  76532. - int, fd, off_t, offset)
  76533. -libc_hidden_def(mmap)
  76534. -
  76535. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/procfs.h uClibc/libc/sysdeps/linux/vax/sys/procfs.h
  76536. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  76537. +++ uClibc/libc/sysdeps/linux/vax/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  76538. @@ -12,9 +12,8 @@
  76539. Lesser General Public License for more details.
  76540. You should have received a copy of the GNU Lesser General Public
  76541. - License along with the GNU C Library; if not, write to the Free
  76542. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76543. - 02111-1307 USA. */
  76544. + License along with the GNU C Library; if not, see
  76545. + <http://www.gnu.org/licenses/>. */
  76546. #ifndef _SYS_PROCFS_H
  76547. #define _SYS_PROCFS_H 1
  76548. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/ucontext.h uClibc/libc/sysdeps/linux/vax/sys/ucontext.h
  76549. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  76550. +++ uClibc/libc/sysdeps/linux/vax/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  76551. @@ -12,9 +12,8 @@
  76552. Lesser General Public License for more details.
  76553. You should have received a copy of the GNU Lesser General Public
  76554. - License along with the GNU C Library; if not, write to the Free
  76555. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76556. - 02111-1307 USA. */
  76557. + License along with the GNU C Library; if not, see
  76558. + <http://www.gnu.org/licenses/>. */
  76559. /* Don't rely on this, the interface is currently messed up and may need to
  76560. be broken to be fixed. */
  76561. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/atomic.h uClibc/libc/sysdeps/linux/x86_64/bits/atomic.h
  76562. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  76563. +++ uClibc/libc/sysdeps/linux/x86_64/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  76564. @@ -13,9 +13,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 <stdint.h>
  76573. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/byteswap.h uClibc/libc/sysdeps/linux/x86_64/bits/byteswap.h
  76574. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  76575. +++ uClibc/libc/sysdeps/linux/x86_64/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  76576. @@ -13,9 +13,8 @@
  76577. Lesser General Public License for more details.
  76578. You should have received a copy of the GNU Lesser General Public
  76579. - License along with the GNU C Library; if not, write to the Free
  76580. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76581. - 02111-1307 USA. */
  76582. + License along with the GNU C Library; if not, see
  76583. + <http://www.gnu.org/licenses/>. */
  76584. #ifndef _ASM_BITS_BYTESWAP_H
  76585. #define _ASM_BITS_BYTESWAP_H 1
  76586. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/environments.h uClibc/libc/sysdeps/linux/x86_64/bits/environments.h
  76587. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/environments.h 2012-05-15 09:20:09.000000000 +0200
  76588. +++ uClibc/libc/sysdeps/linux/x86_64/bits/environments.h 2014-02-03 12:32:56.000000000 +0100
  76589. @@ -12,9 +12,8 @@
  76590. Lesser General Public License for more details.
  76591. You should have received a copy of the GNU Lesser General Public
  76592. - License along with the GNU C Library; if not, write to the Free
  76593. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76594. - 02111-1307 USA. */
  76595. + License along with the GNU C Library; if not, see
  76596. + <http://www.gnu.org/licenses/>. */
  76597. #ifndef _UNISTD_H
  76598. # error "Never include this file directly. Use <unistd.h> instead"
  76599. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fcntl.h uClibc/libc/sysdeps/linux/x86_64/bits/fcntl.h
  76600. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  76601. +++ uClibc/libc/sysdeps/linux/x86_64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  76602. @@ -13,9 +13,8 @@
  76603. Lesser General Public License for more details.
  76604. You should have received a copy of the GNU Lesser General Public
  76605. - License along with the GNU C Library; if not, write to the Free
  76606. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76607. - 02111-1307 USA. */
  76608. + License along with the GNU C Library; if not, see
  76609. + <http://www.gnu.org/licenses/>. */
  76610. #ifndef _FCNTL_H
  76611. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  76612. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fenv.h uClibc/libc/sysdeps/linux/x86_64/bits/fenv.h
  76613. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  76614. +++ uClibc/libc/sysdeps/linux/x86_64/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  76615. @@ -12,9 +12,8 @@
  76616. Lesser General Public License for more details.
  76617. You should have received a copy of the GNU Lesser General Public
  76618. - License along with the GNU C Library; if not, write to the Free
  76619. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76620. - 02111-1307 USA. */
  76621. + License along with the GNU C Library; if not, see
  76622. + <http://www.gnu.org/licenses/>. */
  76623. #ifndef _FENV_H
  76624. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  76625. @@ -89,9 +88,9 @@
  76626. fenv_t;
  76627. /* If the default argument is used we use this value. */
  76628. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  76629. +#define FE_DFL_ENV ((const fenv_t *) -1)
  76630. #ifdef __USE_GNU
  76631. /* Floating-point environment where none of the exception is masked. */
  76632. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  76633. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  76634. #endif
  76635. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/kernel_types.h uClibc/libc/sysdeps/linux/x86_64/bits/kernel_types.h
  76636. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  76637. +++ uClibc/libc/sysdeps/linux/x86_64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  76638. @@ -40,6 +40,8 @@
  76639. typedef unsigned short __kernel_old_uid_t;
  76640. typedef unsigned short __kernel_old_gid_t;
  76641. typedef __kernel_dev_t __kernel_old_dev_t;
  76642. +typedef long __kernel_long_t;
  76643. +typedef unsigned long __kernel_ulong_t;
  76644. typedef long long __kernel_loff_t;
  76645. typedef struct {
  76646. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathdef.h uClibc/libc/sysdeps/linux/x86_64/bits/mathdef.h
  76647. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  76648. +++ uClibc/libc/sysdeps/linux/x86_64/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  76649. @@ -12,9 +12,8 @@
  76650. Lesser General Public License for more details.
  76651. You should have received a copy of the GNU Lesser General Public
  76652. - License along with the GNU C Library; if not, write to the Free
  76653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76654. - 02111-1307 USA. */
  76655. + License along with the GNU C Library; if not, see
  76656. + <http://www.gnu.org/licenses/>. */
  76657. #if !defined _MATH_H && !defined _COMPLEX_H
  76658. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  76659. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathinline.h uClibc/libc/sysdeps/linux/x86_64/bits/mathinline.h
  76660. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  76661. +++ uClibc/libc/sysdeps/linux/x86_64/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  76662. @@ -14,9 +14,8 @@
  76663. Lesser General Public License for more details.
  76664. You should have received a copy of the GNU Lesser General Public
  76665. - License along with the GNU C Library; if not, write to the Free
  76666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76667. - 02111-1307 USA. */
  76668. + License along with the GNU C Library; if not, see
  76669. + <http://www.gnu.org/licenses/>. */
  76670. #ifndef _MATH_H
  76671. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  76672. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/msq.h uClibc/libc/sysdeps/linux/x86_64/bits/msq.h
  76673. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  76674. +++ uClibc/libc/sysdeps/linux/x86_64/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  76675. @@ -12,9 +12,8 @@
  76676. Lesser General Public License for more details.
  76677. You should have received a copy of the GNU Lesser General Public
  76678. - License along with the GNU C Library; if not, write to the Free
  76679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76680. - 02111-1307 USA. */
  76681. + License along with the GNU C Library; if not, see
  76682. + <http://www.gnu.org/licenses/>. */
  76683. #ifndef _SYS_MSG_H
  76684. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  76685. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sem.h uClibc/libc/sysdeps/linux/x86_64/bits/sem.h
  76686. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  76687. +++ uClibc/libc/sysdeps/linux/x86_64/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  76688. @@ -12,9 +12,8 @@
  76689. Lesser General Public License for more details.
  76690. You should have received a copy of the GNU Lesser General Public
  76691. - License along with the GNU C Library; if not, write to the Free
  76692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76693. - 02111-1307 USA. */
  76694. + License along with the GNU C Library; if not, see
  76695. + <http://www.gnu.org/licenses/>. */
  76696. #ifndef _SYS_SEM_H
  76697. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  76698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/setjmp.h uClibc/libc/sysdeps/linux/x86_64/bits/setjmp.h
  76699. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  76700. +++ uClibc/libc/sysdeps/linux/x86_64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  76701. @@ -1,4 +1,4 @@
  76702. -/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
  76703. +/* Copyright (C) 2001,2002,2003,2005,2006 Free Software Foundation, Inc.
  76704. This file is part of the GNU C Library.
  76705. The GNU C Library is free software; you can redistribute it and/or
  76706. @@ -12,13 +12,12 @@
  76707. Lesser General Public License for more details.
  76708. You should have received a copy of the GNU Lesser General Public
  76709. - License along with the GNU C Library; if not, write to the Free
  76710. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76711. - 02111-1307 USA. */
  76712. + License along with the GNU C Library; if not, see
  76713. + <http://www.gnu.org/licenses/>. */
  76714. /* Define the machine-dependent type `jmp_buf'. x86-64 version. */
  76715. #ifndef _BITS_SETJMP_H
  76716. -#define _BITS_SETJMP_H 1
  76717. +#define _BITS_SETJMP_H 1
  76718. #if !defined _SETJMP_H && !defined _PTHREAD_H
  76719. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  76720. @@ -27,52 +26,9 @@
  76721. #include <bits/wordsize.h>
  76722. #if __WORDSIZE == 64
  76723. -
  76724. -/* We only need to save callee-saved registers plus stackpointer and
  76725. - program counter. */
  76726. -# if defined __USE_MISC || defined _ASM
  76727. -# define JB_RBX 0
  76728. -# define JB_RBP 1
  76729. -# define JB_R12 2
  76730. -# define JB_R13 3
  76731. -# define JB_R14 4
  76732. -# define JB_R15 5
  76733. -# define JB_RSP 6
  76734. -# define JB_PC 7
  76735. -# define JB_SIZE (8*8)
  76736. -# endif
  76737. -
  76738. -#else
  76739. -
  76740. -# if defined __USE_MISC || defined _ASM
  76741. -# define JB_BX 0
  76742. -# define JB_SI 1
  76743. -# define JB_DI 2
  76744. -# define JB_BP 3
  76745. -# define JB_SP 4
  76746. -# define JB_PC 5
  76747. -# define JB_SIZE 24
  76748. -# endif
  76749. -
  76750. -#endif
  76751. -
  76752. -#ifndef _ASM
  76753. -
  76754. -# if __WORDSIZE == 64
  76755. typedef long int __jmp_buf[8];
  76756. -# else
  76757. +#else
  76758. typedef int __jmp_buf[6];
  76759. -# endif
  76760. -
  76761. -/* Test if longjmp to JMPBUF would unwind the frame
  76762. - containing a local variable at ADDRESS. */
  76763. -# if __WORDSIZE == 64
  76764. -# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76765. - ((void *) (address) < (void *) (jmpbuf)[JB_RSP])
  76766. -# else
  76767. -# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76768. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  76769. -# endif
  76770. #endif
  76771. -#endif /* bits/setjmp.h */
  76772. +#endif /* bits/setjmp.h */
  76773. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/shm.h uClibc/libc/sysdeps/linux/x86_64/bits/shm.h
  76774. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  76775. +++ uClibc/libc/sysdeps/linux/x86_64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  76776. @@ -13,9 +13,8 @@
  76777. Lesser General Public License for more details.
  76778. You should have received a copy of the GNU Lesser General Public
  76779. - License along with the GNU C Library; if not, write to the Free
  76780. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76781. - 02111-1307 USA. */
  76782. + License along with the GNU C Library; if not, see
  76783. + <http://www.gnu.org/licenses/>. */
  76784. #ifndef _SYS_SHM_H
  76785. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  76786. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontext.h uClibc/libc/sysdeps/linux/x86_64/bits/sigcontext.h
  76787. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  76788. +++ uClibc/libc/sysdeps/linux/x86_64/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  76789. @@ -12,9 +12,8 @@
  76790. Lesser General Public License for more details.
  76791. You should have received a copy of the GNU Lesser General Public
  76792. - License along with the GNU C Library; if not, write to the Free
  76793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76794. - 02111-1307 USA. */
  76795. + License along with the GNU C Library; if not, see
  76796. + <http://www.gnu.org/licenses/>. */
  76797. #ifndef _BITS_SIGCONTEXT_H
  76798. #define _BITS_SIGCONTEXT_H 1
  76799. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h
  76800. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  76801. +++ uClibc/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  76802. @@ -12,9 +12,8 @@
  76803. Lesser General Public License for more details.
  76804. You should have received a copy of the GNU Lesser General Public
  76805. - License along with the GNU C Library; if not, write to the Free
  76806. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76807. - 02111-1307 USA. */
  76808. + License along with the GNU C Library; if not, see
  76809. + <http://www.gnu.org/licenses/>. */
  76810. #define SIGCONTEXT siginfo_t *_si, struct ucontext *
  76811. #define SIGCONTEXT_EXTRA_ARGS _si,
  76812. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stackinfo.h uClibc/libc/sysdeps/linux/x86_64/bits/stackinfo.h
  76813. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  76814. +++ uClibc/libc/sysdeps/linux/x86_64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  76815. @@ -12,9 +12,8 @@
  76816. Lesser General Public License for more details.
  76817. You should have received a copy of the GNU Lesser General Public
  76818. - License along with the GNU C Library; if not, write to the Free
  76819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76820. - 02111-1307 USA. */
  76821. + License along with the GNU C Library; if not, see
  76822. + <http://www.gnu.org/licenses/>. */
  76823. /* This file contains a bit of information about the stack allocation
  76824. of the processor. */
  76825. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stat.h uClibc/libc/sysdeps/linux/x86_64/bits/stat.h
  76826. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  76827. +++ uClibc/libc/sysdeps/linux/x86_64/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  76828. @@ -12,9 +12,8 @@
  76829. Lesser General Public License for more details.
  76830. You should have received a copy of the GNU Lesser General Public
  76831. - License along with the GNU C Library; if not, write to the Free
  76832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76833. - 02111-1307 USA. */
  76834. + License along with the GNU C Library; if not, see
  76835. + <http://www.gnu.org/licenses/>. */
  76836. #ifndef _SYS_STAT_H
  76837. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  76838. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h
  76839. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  76840. +++ uClibc/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  76841. @@ -11,8 +11,8 @@
  76842. /* can your target use syscall6() for mmap ? */
  76843. #define __UCLIBC_MMAP_HAS_6_ARGS__
  76844. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  76845. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  76846. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  76847. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  76848. /* does your target have a broken create_module() ? */
  76849. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  76850. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/brk.c uClibc/libc/sysdeps/linux/x86_64/brk.c
  76851. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/brk.c 2012-05-15 09:20:09.000000000 +0200
  76852. +++ uClibc/libc/sysdeps/linux/x86_64/brk.c 2014-02-03 12:32:56.000000000 +0100
  76853. @@ -13,9 +13,8 @@
  76854. Lesser General Public License for more details.
  76855. You should have received a copy of the GNU Lesser General Public
  76856. - License along with the GNU C Library; if not, write to the Free
  76857. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76858. - 02111-1307 USA. */
  76859. + License along with the GNU C Library; if not, see
  76860. + <http://www.gnu.org/licenses/>. */
  76861. #include <errno.h>
  76862. #include <unistd.h>
  76863. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-_setjmp.S uClibc/libc/sysdeps/linux/x86_64/bsd-_setjmp.S
  76864. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76865. +++ uClibc/libc/sysdeps/linux/x86_64/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76866. @@ -13,9 +13,8 @@
  76867. Lesser General Public License for more details.
  76868. You should have received a copy of the GNU Lesser General Public
  76869. - License along with the GNU C Library; if not, write to the Free
  76870. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76871. - 02111-1307 USA. */
  76872. + License along with the GNU C Library; if not, see
  76873. + <http://www.gnu.org/licenses/>. */
  76874. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  76875. We cannot do it in C because it must be a tail-call, so frame-unwinding
  76876. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-setjmp.S uClibc/libc/sysdeps/linux/x86_64/bsd-setjmp.S
  76877. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76878. +++ uClibc/libc/sysdeps/linux/x86_64/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76879. @@ -13,14 +13,8 @@
  76880. Lesser General Public License for more details.
  76881. You should have received a copy of the GNU Lesser General Public
  76882. - License along with the GNU C Library; if not, write to the Free
  76883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76884. - 02111-1307 USA. */
  76885. -
  76886. -#define _ASM
  76887. -#define _SETJMP_H
  76888. -#include <bits/setjmp.h>
  76889. -#include <sysdep.h>
  76890. + License along with the GNU C Library; if not, see
  76891. + <http://www.gnu.org/licenses/>. */
  76892. .global setjmp
  76893. .type setjmp,%function
  76894. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/clone.S uClibc/libc/sysdeps/linux/x86_64/clone.S
  76895. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/clone.S 2012-05-15 09:20:09.000000000 +0200
  76896. +++ uClibc/libc/sysdeps/linux/x86_64/clone.S 2014-02-03 12:32:56.000000000 +0100
  76897. @@ -12,9 +12,8 @@
  76898. Lesser General Public License for more details.
  76899. You should have received a copy of the GNU Lesser General Public
  76900. - License along with the GNU C Library; if not, write to the Free
  76901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76902. - 02111-1307 USA. */
  76903. + License along with the GNU C Library; if not, see
  76904. + <http://www.gnu.org/licenses/>. */
  76905. /* clone() is even more special than fork() as it mucks with stacks
  76906. and invokes a function in the right context after its all over. */
  76907. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/crt1.S uClibc/libc/sysdeps/linux/x86_64/crt1.S
  76908. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  76909. +++ uClibc/libc/sysdeps/linux/x86_64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  76910. @@ -31,9 +31,8 @@
  76911. Lesser General Public License for more details.
  76912. You should have received a copy of the GNU Lesser General Public
  76913. - License along with the GNU C Library; if not, write to the Free
  76914. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76915. - 02111-1307 USA. */
  76916. + License along with the GNU C Library; if not, see
  76917. + <http://www.gnu.org/licenses/>. */
  76918. /* Originally based on glibc's sysdeps/x86_64/elf/start.S */
  76919. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/fpu_control.h uClibc/libc/sysdeps/linux/x86_64/fpu_control.h
  76920. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  76921. +++ uClibc/libc/sysdeps/linux/x86_64/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  76922. @@ -14,9 +14,8 @@
  76923. Lesser General Public License for more details.
  76924. You should have received a copy of the GNU Lesser General Public
  76925. - License along with the GNU C Library; if not, write to the Free
  76926. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76927. - 02111-1307 USA. */
  76928. + License along with the GNU C Library; if not, see
  76929. + <http://www.gnu.org/licenses/>. */
  76930. #ifndef _FPU_CONTROL_H
  76931. #define _FPU_CONTROL_H 1
  76932. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/getcontext.S uClibc/libc/sysdeps/linux/x86_64/getcontext.S
  76933. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  76934. +++ uClibc/libc/sysdeps/linux/x86_64/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  76935. @@ -0,0 +1,88 @@
  76936. +/* Save current context.
  76937. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  76938. + This file is part of the GNU C Library.
  76939. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76940. +
  76941. + The GNU C Library is free software; you can redistribute it and/or
  76942. + modify it under the terms of the GNU Lesser General Public
  76943. + License as published by the Free Software Foundation; either
  76944. + version 2.1 of the License, or (at your option) any later version.
  76945. +
  76946. + The GNU C Library is distributed in the hope that it will be useful,
  76947. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76948. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76949. + Lesser General Public License for more details.
  76950. +
  76951. + You should have received a copy of the GNU Lesser General Public
  76952. + License along with the GNU C Library; if not, see
  76953. + <http://www.gnu.org/licenses/>. */
  76954. +
  76955. +#include <sysdep.h>
  76956. +
  76957. +#include "ucontext_i.h"
  76958. +
  76959. +/* int __getcontext (ucontext_t *ucp)
  76960. +
  76961. + Saves the machine context in UCP such that when it is activated,
  76962. + it appears as if __getcontext() returned again.
  76963. +
  76964. + This implementation is intended to be used for *synchronous* context
  76965. + switches only. Therefore, it does not have to save anything
  76966. + other than the PRESERVED state. */
  76967. +
  76968. +
  76969. +ENTRY(__getcontext)
  76970. + /* Save the preserved registers, the registers used for passing
  76971. + args, and the return address. */
  76972. + movq %rbx, oRBX(%rdi)
  76973. + movq %rbp, oRBP(%rdi)
  76974. + movq %r12, oR12(%rdi)
  76975. + movq %r13, oR13(%rdi)
  76976. + movq %r14, oR14(%rdi)
  76977. + movq %r15, oR15(%rdi)
  76978. +
  76979. + movq %rdi, oRDI(%rdi)
  76980. + movq %rsi, oRSI(%rdi)
  76981. + movq %rdx, oRDX(%rdi)
  76982. + movq %rcx, oRCX(%rdi)
  76983. + movq %r8, oR8(%rdi)
  76984. + movq %r9, oR9(%rdi)
  76985. +
  76986. + movq (%rsp), %rcx
  76987. + movq %rcx, oRIP(%rdi)
  76988. + leaq 8(%rsp), %rcx /* Exclude the return address. */
  76989. + movq %rcx, oRSP(%rdi)
  76990. +
  76991. + /* We have separate floating-point register content memory on the
  76992. + stack. We use the __fpregs_mem block in the context. Set the
  76993. + links up correctly. */
  76994. +
  76995. + leaq oFPREGSMEM(%rdi), %rcx
  76996. + movq %rcx, oFPREGS(%rdi)
  76997. + /* Save the floating-point environment. */
  76998. + fnstenv (%rcx)
  76999. + fldenv (%rcx)
  77000. + stmxcsr oMXCSR(%rdi)
  77001. +
  77002. + /* Save the current signal mask with
  77003. + rt_sigprocmask (SIG_BLOCK, NULL, set,_NSIG/8). */
  77004. + leaq oSIGMASK(%rdi), %rdx
  77005. + xorl %esi,%esi
  77006. +#if SIG_BLOCK == 0
  77007. + xorl %edi, %edi
  77008. +#else
  77009. + movl $SIG_BLOCK, %edi
  77010. +#endif
  77011. + movl $_NSIG8,%r10d
  77012. + movl $__NR_rt_sigprocmask, %eax
  77013. + syscall
  77014. + cmpq $-4095, %rax /* Check %rax for error. */
  77015. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  77016. +
  77017. + /* All done, return 0 for success. */
  77018. + xorl %eax, %eax
  77019. +L(pseudo_end):
  77020. + ret
  77021. +PSEUDO_END(__getcontext)
  77022. +
  77023. +weak_alias (__getcontext, getcontext)
  77024. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h
  77025. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  77026. +++ uClibc/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  77027. @@ -0,0 +1,45 @@
  77028. +/* Private macros for accessing __jmp_buf contents. x86-64 version.
  77029. + Copyright (C) 2006 Free Software Foundation, Inc.
  77030. + This file is part of the GNU C Library.
  77031. +
  77032. + The GNU C Library is free software; you can redistribute it and/or
  77033. + modify it under the terms of the GNU Lesser General Public
  77034. + License as published by the Free Software Foundation; either
  77035. + version 2.1 of the License, or (at your option) any later version.
  77036. +
  77037. + The GNU C Library is distributed in the hope that it will be useful,
  77038. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77039. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77040. + Lesser General Public License for more details.
  77041. +
  77042. + You should have received a copy of the GNU Lesser General Public
  77043. + License along with the GNU C Library; if not, see
  77044. + <http://www.gnu.org/licenses/>. */
  77045. +
  77046. +#include <bits/wordsize.h>
  77047. +
  77048. +#if __WORDSIZE == 64
  77049. +
  77050. +/* We only need to save callee-saved registers plus stackpointer and
  77051. + program counter. */
  77052. +# define JB_RBX 0
  77053. +# define JB_RBP 1
  77054. +# define JB_R12 2
  77055. +# define JB_R13 3
  77056. +# define JB_R14 4
  77057. +# define JB_R15 5
  77058. +# define JB_RSP 6
  77059. +# define JB_PC 7
  77060. +# define JB_SIZE (8*8)
  77061. +
  77062. +#else
  77063. +
  77064. +# define JB_BX 0
  77065. +# define JB_SI 1
  77066. +# define JB_DI 2
  77067. +# define JB_BP 3
  77068. +# define JB_SP 4
  77069. +# define JB_PC 5
  77070. +# define JB_SIZE 24
  77071. +
  77072. +#endif
  77073. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h
  77074. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  77075. +++ uClibc/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  77076. @@ -0,0 +1,28 @@
  77077. +/*
  77078. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  77079. + *
  77080. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77081. + */
  77082. +#include <setjmp.h>
  77083. +#include <jmpbuf-offsets.h>
  77084. +
  77085. +/* Test if longjmp to JMPBUF would unwind the frame
  77086. + containing a local variable at ADDRESS. */
  77087. +#if __WORDSIZE == 64
  77088. +# define _JMPBUF_UNWINDS(jmpbuf, address) \
  77089. + ((void *) (address) < (void *) (jmpbuf)[JB_RSP])
  77090. +#else
  77091. +# define _JMPBUF_UNWINDS(jmpbuf, address) \
  77092. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  77093. +#endif
  77094. +
  77095. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  77096. +#include <stdint.h>
  77097. +#include <unwind.h>
  77098. +
  77099. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  77100. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  77101. +
  77102. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  77103. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_RSP] - (_adj))
  77104. +#endif
  77105. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__longjmp.S uClibc/libc/sysdeps/linux/x86_64/__longjmp.S
  77106. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  77107. +++ uClibc/libc/sysdeps/linux/x86_64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  77108. @@ -12,14 +12,10 @@
  77109. Lesser General Public License for more details.
  77110. You should have received a copy of the GNU Lesser General Public
  77111. - License along with the GNU C Library; if not, write to the Free
  77112. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77113. - 02111-1307 USA. */
  77114. + License along with the GNU C Library; if not, see
  77115. + <http://www.gnu.org/licenses/>. */
  77116. -#include <features.h>
  77117. -#define _ASM
  77118. -#define _SETJMP_H
  77119. -#include <bits/setjmp.h>
  77120. +#include <jmpbuf-offsets.h>
  77121. /* Jump to the position specified by ENV, causing the
  77122. setjmp call there to return VAL, or 1 if VAL is 0.
  77123. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/makecontext.c uClibc/libc/sysdeps/linux/x86_64/makecontext.c
  77124. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/makecontext.c 1970-01-01 01:00:00.000000000 +0100
  77125. +++ uClibc/libc/sysdeps/linux/x86_64/makecontext.c 2014-02-03 12:32:56.000000000 +0100
  77126. @@ -0,0 +1,121 @@
  77127. +/* Create new context.
  77128. + Copyright (C) 2002, 2004, 2005, 2008 Free Software Foundation, Inc.
  77129. + This file is part of the GNU C Library.
  77130. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  77131. +
  77132. + The GNU C Library is free software; you can redistribute it and/or
  77133. + modify it under the terms of the GNU Lesser General Public
  77134. + License as published by the Free Software Foundation; either
  77135. + version 2.1 of the License, or (at your option) any later version.
  77136. +
  77137. + The GNU C Library is distributed in the hope that it will be useful,
  77138. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77139. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77140. + Lesser General Public License for more details.
  77141. +
  77142. + You should have received a copy of the GNU Lesser General Public
  77143. + License along with the GNU C Library; if not, see
  77144. + <http://www.gnu.org/licenses/>. */
  77145. +
  77146. +#include <sysdep.h>
  77147. +#include <stdarg.h>
  77148. +#include <stdint.h>
  77149. +#include <ucontext.h>
  77150. +
  77151. +#include "ucontext_i.h"
  77152. +
  77153. +/* This implementation can handle any ARGC value but only
  77154. + normal integer parameters.
  77155. + makecontext sets up a stack and the registers for the
  77156. + user context. The stack looks like this:
  77157. + +-----------------------+
  77158. + | next context |
  77159. + +-----------------------+
  77160. + | parameter 7-n |
  77161. + +-----------------------+
  77162. + | trampoline address |
  77163. + %rsp -> +-----------------------+
  77164. +
  77165. + The registers are set up like this:
  77166. + %rdi,%rsi,%rdx,%rcx,%r8,%r9: parameter 1 to 6
  77167. + %rbx : address of next context
  77168. + %rsp : stack pointer.
  77169. +*/
  77170. +
  77171. +/* XXX: This implementation currently only handles integer arguments.
  77172. + To handle long int and pointer arguments the va_arg arguments needs
  77173. + to be changed to long and also the stdlib/tst-setcontext.c file needs
  77174. + to be changed to pass long arguments to makecontext. */
  77175. +
  77176. +
  77177. +void
  77178. +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
  77179. +{
  77180. + extern void __start_context (void);
  77181. + greg_t *sp;
  77182. + unsigned int idx_uc_link;
  77183. + va_list ap;
  77184. + int i;
  77185. +
  77186. + /* Generate room on stack for parameter if needed and uc_link. */
  77187. + sp = (greg_t *) ((uintptr_t) ucp->uc_stack.ss_sp
  77188. + + ucp->uc_stack.ss_size);
  77189. + sp -= (argc > 6 ? argc - 6 : 0) + 1;
  77190. + /* Align stack and make space for trampoline address. */
  77191. + sp = (greg_t *) ((((uintptr_t) sp) & -16L) - 8);
  77192. +
  77193. + idx_uc_link = (argc > 6 ? argc - 6 : 0) + 1;
  77194. +
  77195. + /* Setup context ucp. */
  77196. + /* Address to jump to. */
  77197. + ucp->uc_mcontext.gregs[REG_RIP] = (uintptr_t) func;
  77198. + /* Setup rbx.*/
  77199. + ucp->uc_mcontext.gregs[REG_RBX] = (uintptr_t) &sp[idx_uc_link];
  77200. + ucp->uc_mcontext.gregs[REG_RSP] = (uintptr_t) sp;
  77201. +
  77202. + /* Setup stack. */
  77203. + sp[0] = (uintptr_t) &__start_context;
  77204. + sp[idx_uc_link] = (uintptr_t) ucp->uc_link;
  77205. +
  77206. + va_start (ap, argc);
  77207. + /* Handle arguments.
  77208. +
  77209. + The standard says the parameters must all be int values. This is
  77210. + an historic accident and would be done differently today. For
  77211. + x86-64 all integer values are passed as 64-bit values and
  77212. + therefore extending the API to copy 64-bit values instead of
  77213. + 32-bit ints makes sense. It does not break existing
  77214. + functionality and it does not violate the standard which says
  77215. + that passing non-int values means undefined behavior. */
  77216. + for (i = 0; i < argc; ++i)
  77217. + switch (i)
  77218. + {
  77219. + case 0:
  77220. + ucp->uc_mcontext.gregs[REG_RDI] = va_arg (ap, greg_t);
  77221. + break;
  77222. + case 1:
  77223. + ucp->uc_mcontext.gregs[REG_RSI] = va_arg (ap, greg_t);
  77224. + break;
  77225. + case 2:
  77226. + ucp->uc_mcontext.gregs[REG_RDX] = va_arg (ap, greg_t);
  77227. + break;
  77228. + case 3:
  77229. + ucp->uc_mcontext.gregs[REG_RCX] = va_arg (ap, greg_t);
  77230. + break;
  77231. + case 4:
  77232. + ucp->uc_mcontext.gregs[REG_R8] = va_arg (ap, greg_t);
  77233. + break;
  77234. + case 5:
  77235. + ucp->uc_mcontext.gregs[REG_R9] = va_arg (ap, greg_t);
  77236. + break;
  77237. + default:
  77238. + /* Put value on stack. */
  77239. + sp[i - 5] = va_arg (ap, greg_t);
  77240. + break;
  77241. + }
  77242. + va_end (ap);
  77243. +
  77244. +}
  77245. +
  77246. +
  77247. +weak_alias (__makecontext, makecontext)
  77248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/Makefile.arch uClibc/libc/sysdeps/linux/x86_64/Makefile.arch
  77249. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  77250. +++ uClibc/libc/sysdeps/linux/x86_64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  77251. @@ -5,18 +5,15 @@
  77252. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77253. #
  77254. -CSRC := brk.c __syscall_error.c sigaction.c mmap.c
  77255. +CSRC-y := brk.c __syscall_error.c sigaction.c
  77256. -SSRC := \
  77257. +SSRC-y := \
  77258. __longjmp.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S
  77259. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  77260. -SSRC += vfork.S clone.S
  77261. -endif
  77262. -
  77263. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  77264. +ARCH_OBJ_FILTEROUT-$(UCLIBC_LINUX_SPECIFIC) := sched_getcpu.c
  77265. ifeq ($(UCLIBC_LINUX_SPECIFIC),y)
  77266. -ARCH_OBJ_FILTEROUT = sched_getcpu.c
  77267. -ifeq ($(UCLIBC_HAS_TLS),y)
  77268. -SSRC += sched_getcpu.S
  77269. -endif
  77270. +SSRC-$(UCLIBC_HAS_TLS) += sched_getcpu.S
  77271. endif
  77272. +CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
  77273. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += setcontext.S getcontext.S swapcontext.S __start_context.S
  77274. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/mmap.c uClibc/libc/sysdeps/linux/x86_64/mmap.c
  77275. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/mmap.c 2012-05-15 09:20:09.000000000 +0200
  77276. +++ uClibc/libc/sysdeps/linux/x86_64/mmap.c 1970-01-01 01:00:00.000000000 +0100
  77277. @@ -1,19 +0,0 @@
  77278. -/* vi: set sw=4 ts=4: */
  77279. -/*
  77280. - * mmap() for uClibc/x86_64
  77281. - *
  77282. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  77283. - * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
  77284. - *
  77285. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77286. - */
  77287. -
  77288. -#include <errno.h>
  77289. -#include <unistd.h>
  77290. -#include <sys/mman.h>
  77291. -#include <sys/syscall.h>
  77292. -
  77293. -
  77294. -_syscall6(void *, mmap, void *, start, size_t, length, int, prot,
  77295. - int, flags, int, fd, off_t, offset)
  77296. -libc_hidden_def(mmap)
  77297. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sched_getcpu.S uClibc/libc/sysdeps/linux/x86_64/sched_getcpu.S
  77298. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sched_getcpu.S 2012-05-15 09:20:09.000000000 +0200
  77299. +++ uClibc/libc/sysdeps/linux/x86_64/sched_getcpu.S 2014-02-03 12:32:56.000000000 +0100
  77300. @@ -12,9 +12,8 @@
  77301. Lesser General Public License for more details.
  77302. You should have received a copy of the GNU Lesser General Public
  77303. - License along with the GNU C Library; if not, write to the Free
  77304. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77305. - 02111-1307 USA. */
  77306. + License along with the GNU C Library; if not, see
  77307. + <http://www.gnu.org/licenses/>. */
  77308. #include <sysdep.h>
  77309. #include <tls.h>
  77310. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setcontext.S uClibc/libc/sysdeps/linux/x86_64/setcontext.S
  77311. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  77312. +++ uClibc/libc/sysdeps/linux/x86_64/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  77313. @@ -0,0 +1,103 @@
  77314. +/* Install given context.
  77315. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  77316. + This file is part of the GNU C Library.
  77317. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  77318. +
  77319. + The GNU C Library is free software; you can redistribute it and/or
  77320. + modify it under the terms of the GNU Lesser General Public
  77321. + License as published by the Free Software Foundation; either
  77322. + version 2.1 of the License, or (at your option) any later version.
  77323. +
  77324. + The GNU C Library is distributed in the hope that it will be useful,
  77325. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77326. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77327. + Lesser General Public License for more details.
  77328. +
  77329. + You should have received a copy of the GNU Lesser General Public
  77330. + License along with the GNU C Library; if not, see
  77331. + <http://www.gnu.org/licenses/>. */
  77332. +
  77333. +#include <sysdep.h>
  77334. +
  77335. +#include "ucontext_i.h"
  77336. +
  77337. +
  77338. +/* int __setcontext (const ucontext_t *ucp)
  77339. +
  77340. + Restores the machine context in UCP and thereby resumes execution
  77341. + in that context.
  77342. +
  77343. + This implementation is intended to be used for *synchronous* context
  77344. + switches only. Therefore, it does not have to restore anything
  77345. + other than the PRESERVED state. */
  77346. +
  77347. +ENTRY(__setcontext)
  77348. + /* Save argument since syscall will destroy it. */
  77349. + pushq %rdi
  77350. + cfi_adjust_cfa_offset(8)
  77351. +
  77352. + /* Set the signal mask with
  77353. + rt_sigprocmask (SIG_SETMASK, mask, NULL, _NSIG/8). */
  77354. + leaq oSIGMASK(%rdi), %rsi
  77355. + xorl %edx, %edx
  77356. + movl $SIG_SETMASK, %edi
  77357. + movl $_NSIG8,%r10d
  77358. + movl $__NR_rt_sigprocmask, %eax
  77359. + syscall
  77360. + popq %rdi /* Reload %rdi, adjust stack. */
  77361. + cfi_adjust_cfa_offset(-8)
  77362. + cmpq $-4095, %rax /* Check %rax for error. */
  77363. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  77364. +
  77365. + /* Restore the floating-point context. Not the registers, only the
  77366. + rest. */
  77367. + movq oFPREGS(%rdi), %rcx
  77368. + fldenv (%rcx)
  77369. + ldmxcsr oMXCSR(%rdi)
  77370. +
  77371. +
  77372. + /* Load the new stack pointer, the preserved registers and
  77373. + registers used for passing args. */
  77374. + cfi_def_cfa(%rdi, 0)
  77375. + cfi_offset(%rbx,oRBX)
  77376. + cfi_offset(%rbp,oRBP)
  77377. + cfi_offset(%r12,oR12)
  77378. + cfi_offset(%r13,oR13)
  77379. + cfi_offset(%r14,oR14)
  77380. + cfi_offset(%r15,oR15)
  77381. + cfi_offset(%rsp,oRSP)
  77382. + cfi_offset(%rip,oRIP)
  77383. +
  77384. + movq oRSP(%rdi), %rsp
  77385. + movq oRBX(%rdi), %rbx
  77386. + movq oRBP(%rdi), %rbp
  77387. + movq oR12(%rdi), %r12
  77388. + movq oR13(%rdi), %r13
  77389. + movq oR14(%rdi), %r14
  77390. + movq oR15(%rdi), %r15
  77391. +
  77392. + /* The following ret should return to the address set with
  77393. + getcontext. Therefore push the address on the stack. */
  77394. + movq oRIP(%rdi), %rcx
  77395. + pushq %rcx
  77396. +
  77397. + movq oRSI(%rdi), %rsi
  77398. + movq oRDX(%rdi), %rdx
  77399. + movq oRCX(%rdi), %rcx
  77400. + movq oR8(%rdi), %r8
  77401. + movq oR9(%rdi), %r9
  77402. +
  77403. + /* Setup finally %rdi. */
  77404. + movq oRDI(%rdi), %rdi
  77405. +
  77406. + /* End FDE here, we fall into another context. */
  77407. + cfi_endproc
  77408. + cfi_startproc
  77409. +
  77410. + /* Clear rax to indicate success. */
  77411. + xorl %eax, %eax
  77412. +L(pseudo_end):
  77413. + ret
  77414. +PSEUDO_END(__setcontext)
  77415. +
  77416. +weak_alias (__setcontext, setcontext)
  77417. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setjmp.S uClibc/libc/sysdeps/linux/x86_64/setjmp.S
  77418. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  77419. +++ uClibc/libc/sysdeps/linux/x86_64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  77420. @@ -13,14 +13,10 @@
  77421. Lesser General Public License for more details.
  77422. You should have received a copy of the GNU Lesser General Public
  77423. - License along with the GNU C Library; if not, write to the Free
  77424. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77425. - 02111-1307 USA. */
  77426. + License along with the GNU C Library; if not, see
  77427. + <http://www.gnu.org/licenses/>. */
  77428. -#define _ASM
  77429. -#define _SETJMP_H
  77430. -#include <bits/setjmp.h>
  77431. -#include <sysdep.h>
  77432. +#include <jmpbuf-offsets.h>
  77433. .global __sigsetjmp
  77434. .type __sigsetjmp,%function
  77435. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sigaction.c uClibc/libc/sysdeps/linux/x86_64/sigaction.c
  77436. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  77437. +++ uClibc/libc/sysdeps/linux/x86_64/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  77438. @@ -13,9 +13,8 @@
  77439. Lesser General Public License for more details.
  77440. You should have received a copy of the GNU Lesser General Public
  77441. - License along with the GNU C Library; if not, write to the Free
  77442. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77443. - 02111-1307 USA. */
  77444. + License along with the GNU C Library; if not, see
  77445. + <http://www.gnu.org/licenses/>. */
  77446. #include <errno.h>
  77447. @@ -30,9 +29,6 @@
  77448. /* We do not globally define the SA_RESTORER flag so do it here. */
  77449. #define SA_RESTORER 0x04000000
  77450. -extern __typeof(sigaction) __libc_sigaction;
  77451. -
  77452. -
  77453. #ifdef __NR_rt_sigaction
  77454. /* Using the hidden attribute here does not change the code but it
  77455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__start_context.S uClibc/libc/sysdeps/linux/x86_64/__start_context.S
  77456. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__start_context.S 1970-01-01 01:00:00.000000000 +0100
  77457. +++ uClibc/libc/sysdeps/linux/x86_64/__start_context.S 2014-02-03 12:32:56.000000000 +0100
  77458. @@ -0,0 +1,49 @@
  77459. +/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
  77460. + This file is part of the GNU C Library.
  77461. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  77462. +
  77463. + The GNU C Library is free software; you can redistribute it and/or
  77464. + modify it under the terms of the GNU Lesser General Public
  77465. + License as published by the Free Software Foundation; either
  77466. + version 2.1 of the License, or (at your option) any later version.
  77467. +
  77468. + The GNU C Library is distributed in the hope that it will be useful,
  77469. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77470. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77471. + Lesser General Public License for more details.
  77472. +
  77473. + You should have received a copy of the GNU Lesser General Public
  77474. + License along with the GNU C Library; if not, see
  77475. + <http://www.gnu.org/licenses/>. */
  77476. +
  77477. +#include <sysdep.h>
  77478. +
  77479. +/* This is the helper code which gets called if a function which is
  77480. + registered with 'makecontext' returns. In this case we have to
  77481. + install the context listed in the uc_link element of the context
  77482. + 'makecontext' manipulated at the time of the 'makecontext' call.
  77483. + If the pointer is NULL the process must terminate. */
  77484. +
  77485. +
  77486. +ENTRY(__start_context)
  77487. + /* This removes the parameters passed to the function given to
  77488. + 'makecontext' from the stack. RBX contains the address
  77489. + on the stack pointer for the next context. */
  77490. + movq %rbx, %rsp
  77491. +
  77492. + popq %rdi /* This is the next context. */
  77493. + cfi_adjust_cfa_offset(-8)
  77494. + testq %rdi, %rdi
  77495. + je 2f /* If it is zero exit. */
  77496. +
  77497. + call JUMPTARGET(__setcontext)
  77498. + /* If this returns (which can happen if the syscall fails) we'll
  77499. + exit the program with the return error value (-1). */
  77500. + movq %rax,%rdi
  77501. +
  77502. +2:
  77503. + call HIDDEN_JUMPTARGET(exit)
  77504. + /* The 'exit' call should never return. In case it does cause
  77505. + the process to terminate. */
  77506. + hlt
  77507. +END(__start_context)
  77508. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/swapcontext.S uClibc/libc/sysdeps/linux/x86_64/swapcontext.S
  77509. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  77510. +++ uClibc/libc/sysdeps/linux/x86_64/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  77511. @@ -0,0 +1,121 @@
  77512. +/* Save current context and install the given one.
  77513. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  77514. + This file is part of the GNU C Library.
  77515. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  77516. +
  77517. + The GNU C Library is free software; you can redistribute it and/or
  77518. + modify it under the terms of the GNU Lesser General Public
  77519. + License as published by the Free Software Foundation; either
  77520. + version 2.1 of the License, or (at your option) any later version.
  77521. +
  77522. + The GNU C Library is distributed in the hope that it will be useful,
  77523. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77524. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77525. + Lesser General Public License for more details.
  77526. +
  77527. + You should have received a copy of the GNU Lesser General Public
  77528. + License along with the GNU C Library; if not, see
  77529. + <http://www.gnu.org/licenses/>. */
  77530. +
  77531. +#include <sysdep.h>
  77532. +
  77533. +#include "ucontext_i.h"
  77534. +
  77535. +
  77536. +/* int __swapcontext (ucontext_t *oucp, const ucontext_t *ucp);
  77537. +
  77538. + Saves the machine context in oucp such that when it is activated,
  77539. + it appears as if __swapcontextt() returned again, restores the
  77540. + machine context in ucp and thereby resumes execution in that
  77541. + context.
  77542. +
  77543. + This implementation is intended to be used for *synchronous* context
  77544. + switches only. Therefore, it does not have to save anything
  77545. + other than the PRESERVED state. */
  77546. +
  77547. +ENTRY(__swapcontext)
  77548. + /* Save the preserved registers, the registers used for passing args,
  77549. + and the return address. */
  77550. + movq %rbx, oRBX(%rdi)
  77551. + movq %rbp, oRBP(%rdi)
  77552. + movq %r12, oR12(%rdi)
  77553. + movq %r13, oR13(%rdi)
  77554. + movq %r14, oR14(%rdi)
  77555. + movq %r15, oR15(%rdi)
  77556. +
  77557. + movq %rdi, oRDI(%rdi)
  77558. + movq %rsi, oRSI(%rdi)
  77559. + movq %rdx, oRDX(%rdi)
  77560. + movq %rcx, oRCX(%rdi)
  77561. + movq %r8, oR8(%rdi)
  77562. + movq %r9, oR9(%rdi)
  77563. +
  77564. + movq (%rsp), %rcx
  77565. + movq %rcx, oRIP(%rdi)
  77566. + leaq 8(%rsp), %rcx /* Exclude the return address. */
  77567. + movq %rcx, oRSP(%rdi)
  77568. +
  77569. + /* We have separate floating-point register content memory on the
  77570. + stack. We use the __fpregs_mem block in the context. Set the
  77571. + links up correctly. */
  77572. + leaq oFPREGSMEM(%rdi), %rcx
  77573. + movq %rcx, oFPREGS(%rdi)
  77574. + /* Save the floating-point environment. */
  77575. + fnstenv (%rcx)
  77576. + stmxcsr oMXCSR(%rdi)
  77577. +
  77578. +
  77579. + /* The syscall destroys some registers, save them. */
  77580. + movq %rsi, %r12
  77581. +
  77582. + /* Save the current signal mask and install the new one with
  77583. + rt_sigprocmask (SIG_BLOCK, newset, oldset,_NSIG/8). */
  77584. + leaq oSIGMASK(%rdi), %rdx
  77585. + leaq oSIGMASK(%rsi), %rsi
  77586. + movl $SIG_SETMASK, %edi
  77587. + movl $_NSIG8,%r10d
  77588. + movl $__NR_rt_sigprocmask, %eax
  77589. + syscall
  77590. + cmpq $-4095, %rax /* Check %rax for error. */
  77591. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  77592. +
  77593. + /* Restore destroyed registers. */
  77594. + movq %r12, %rsi
  77595. +
  77596. + /* Restore the floating-point context. Not the registers, only the
  77597. + rest. */
  77598. + movq oFPREGS(%rsi), %rcx
  77599. + fldenv (%rcx)
  77600. + ldmxcsr oMXCSR(%rsi)
  77601. +
  77602. + /* Load the new stack pointer and the preserved registers. */
  77603. + movq oRSP(%rsi), %rsp
  77604. + movq oRBX(%rsi), %rbx
  77605. + movq oRBP(%rsi), %rbp
  77606. + movq oR12(%rsi), %r12
  77607. + movq oR13(%rsi), %r13
  77608. + movq oR14(%rsi), %r14
  77609. + movq oR15(%rsi), %r15
  77610. +
  77611. + /* The following ret should return to the address set with
  77612. + getcontext. Therefore push the address on the stack. */
  77613. + movq oRIP(%rsi), %rcx
  77614. + pushq %rcx
  77615. +
  77616. + /* Setup registers used for passing args. */
  77617. + movq oRDI(%rsi), %rdi
  77618. + movq oRDX(%rsi), %rdx
  77619. + movq oRCX(%rsi), %rcx
  77620. + movq oR8(%rsi), %r8
  77621. + movq oR9(%rsi), %r9
  77622. +
  77623. + /* Setup finally %rsi. */
  77624. + movq oRSI(%rsi), %rsi
  77625. +
  77626. + /* Clear rax to indicate success. */
  77627. + xorl %eax, %eax
  77628. +L(pseudo_end):
  77629. + ret
  77630. +PSEUDO_END(__swapcontext)
  77631. +
  77632. +weak_alias (__swapcontext, swapcontext)
  77633. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/debugreg.h uClibc/libc/sysdeps/linux/x86_64/sys/debugreg.h
  77634. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/debugreg.h 2012-05-15 09:20:09.000000000 +0200
  77635. +++ uClibc/libc/sysdeps/linux/x86_64/sys/debugreg.h 2014-02-03 12:32:56.000000000 +0100
  77636. @@ -12,9 +12,8 @@
  77637. Lesser General Public License for more details.
  77638. You should have received a copy of the GNU Lesser General Public
  77639. - License along with the GNU C Library; if not, write to the Free
  77640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77641. - 02111-1307 USA. */
  77642. + License along with the GNU C Library; if not, see
  77643. + <http://www.gnu.org/licenses/>. */
  77644. #ifndef _SYS_DEBUGREG_H
  77645. #define _SYS_DEBUGREG_H 1
  77646. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/io.h uClibc/libc/sysdeps/linux/x86_64/sys/io.h
  77647. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  77648. +++ uClibc/libc/sysdeps/linux/x86_64/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  77649. @@ -12,9 +12,8 @@
  77650. Lesser General Public License for more details.
  77651. You should have received a copy of the GNU Lesser General Public
  77652. - License along with the GNU C Library; if not, write to the Free
  77653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77654. - 02111-1307 USA. */
  77655. + License along with the GNU C Library; if not, see
  77656. + <http://www.gnu.org/licenses/>. */
  77657. #ifndef _SYS_IO_H
  77658. #define _SYS_IO_H 1
  77659. @@ -23,6 +22,7 @@
  77660. __BEGIN_DECLS
  77661. +#if defined __UCLIBC_LINUX_SPECIFIC__
  77662. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  77663. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  77664. permission off for that range. This call requires root privileges.
  77665. @@ -32,12 +32,12 @@
  77666. E.g., Linux/Alpha for Alpha PCs supports this. */
  77667. extern int ioperm (unsigned long int __from, unsigned long int __num,
  77668. int __turn_on) __THROW;
  77669. -libc_hidden_proto(ioperm)
  77670. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  77671. access any I/O port is granted. This call requires root
  77672. privileges. */
  77673. extern int iopl (int __level) __THROW;
  77674. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  77675. #if defined __GNUC__ && __GNUC__ >= 2
  77676. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/perm.h uClibc/libc/sysdeps/linux/x86_64/sys/perm.h
  77677. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/perm.h 2012-05-15 09:20:09.000000000 +0200
  77678. +++ uClibc/libc/sysdeps/linux/x86_64/sys/perm.h 2014-02-03 12:32:56.000000000 +0100
  77679. @@ -12,9 +12,8 @@
  77680. Lesser General Public License for more details.
  77681. You should have received a copy of the GNU Lesser General Public
  77682. - License along with the GNU C Library; if not, write to the Free
  77683. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77684. - 02111-1307 USA. */
  77685. + License along with the GNU C Library; if not, see
  77686. + <http://www.gnu.org/licenses/>. */
  77687. #ifndef _SYS_PERM_H
  77688. @@ -26,7 +25,6 @@
  77689. /* Set port input/output permissions. */
  77690. extern int ioperm (unsigned long int __from, unsigned long int __num,
  77691. int __turn_on) __THROW;
  77692. -libc_hidden_proto(ioperm)
  77693. /* Change I/O privilege level. */
  77694. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/procfs.h uClibc/libc/sysdeps/linux/x86_64/sys/procfs.h
  77695. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  77696. +++ uClibc/libc/sysdeps/linux/x86_64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  77697. @@ -12,9 +12,8 @@
  77698. Lesser General Public License for more details.
  77699. You should have received a copy of the GNU Lesser General Public
  77700. - License along with the GNU C Library; if not, write to the Free
  77701. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77702. - 02111-1307 USA. */
  77703. + License along with the GNU C Library; if not, see
  77704. + <http://www.gnu.org/licenses/>. */
  77705. #ifndef _SYS_PROCFS_H
  77706. #define _SYS_PROCFS_H 1
  77707. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/reg.h uClibc/libc/sysdeps/linux/x86_64/sys/reg.h
  77708. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  77709. +++ uClibc/libc/sysdeps/linux/x86_64/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  77710. @@ -12,9 +12,8 @@
  77711. Lesser General Public License for more details.
  77712. You should have received a copy of the GNU Lesser General Public
  77713. - License along with the GNU C Library; if not, write to the Free
  77714. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77715. - 02111-1307 USA. */
  77716. + License along with the GNU C Library; if not, see
  77717. + <http://www.gnu.org/licenses/>. */
  77718. #ifndef _SYS_REG_H
  77719. #define _SYS_REG_H 1
  77720. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/ucontext.h uClibc/libc/sysdeps/linux/x86_64/sys/ucontext.h
  77721. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  77722. +++ uClibc/libc/sysdeps/linux/x86_64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  77723. @@ -12,9 +12,8 @@
  77724. Lesser General Public License for more details.
  77725. You should have received a copy of the GNU Lesser General Public
  77726. - License along with the GNU C Library; if not, write to the Free
  77727. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77728. - 02111-1307 USA. */
  77729. + License along with the GNU C Library; if not, see
  77730. + <http://www.gnu.org/licenses/>. */
  77731. #ifndef _SYS_UCONTEXT_H
  77732. #define _SYS_UCONTEXT_H 1
  77733. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/user.h uClibc/libc/sysdeps/linux/x86_64/sys/user.h
  77734. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  77735. +++ uClibc/libc/sysdeps/linux/x86_64/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  77736. @@ -12,9 +12,8 @@
  77737. Lesser General Public License for more details.
  77738. You should have received a copy of the GNU Lesser General Public
  77739. - License along with the GNU C Library; if not, write to the Free
  77740. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77741. - 02111-1307 USA. */
  77742. + License along with the GNU C Library; if not, see
  77743. + <http://www.gnu.org/licenses/>. */
  77744. #ifndef _SYS_USER_H
  77745. #define _SYS_USER_H 1
  77746. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/syscall.S uClibc/libc/sysdeps/linux/x86_64/syscall.S
  77747. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/syscall.S 2012-05-15 09:20:09.000000000 +0200
  77748. +++ uClibc/libc/sysdeps/linux/x86_64/syscall.S 2014-02-03 12:32:56.000000000 +0100
  77749. @@ -12,9 +12,8 @@
  77750. Lesser General Public License for more details.
  77751. You should have received a copy of the GNU Lesser General Public
  77752. - License along with the GNU C Library; if not, write to the Free
  77753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77754. - 02111-1307 USA. */
  77755. + License along with the GNU C Library; if not, see
  77756. + <http://www.gnu.org/licenses/>. */
  77757. /* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
  77758. more information about the value -4095 used below. */
  77759. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sysdep.h uClibc/libc/sysdeps/linux/x86_64/sysdep.h
  77760. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  77761. +++ uClibc/libc/sysdeps/linux/x86_64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  77762. @@ -12,9 +12,8 @@
  77763. Lesser General Public License for more details.
  77764. You should have received a copy of the GNU Lesser General Public
  77765. - License along with the GNU C Library; if not, write to the Free
  77766. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77767. - 02111-1307 USA. */
  77768. + License along with the GNU C Library; if not, see
  77769. + <http://www.gnu.org/licenses/>. */
  77770. #ifndef _LINUX_X86_64_SYSDEP_H
  77771. #define _LINUX_X86_64_SYSDEP_H 1
  77772. @@ -183,8 +182,6 @@
  77773. # define PSEUDO_END_ERRVAL(name) \
  77774. END (name)
  77775. -# define ret_ERRVAL ret
  77776. -
  77777. # ifndef __PIC__
  77778. # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  77779. # elif defined(RTLD_PRIVATE_ERRNO)
  77780. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/ucontext_i.sym uClibc/libc/sysdeps/linux/x86_64/ucontext_i.sym
  77781. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  77782. +++ uClibc/libc/sysdeps/linux/x86_64/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  77783. @@ -0,0 +1,37 @@
  77784. +#include <stddef.h>
  77785. +#include <signal.h>
  77786. +#include <sys/ucontext.h>
  77787. +
  77788. +--
  77789. +
  77790. +SIG_BLOCK
  77791. +SIG_SETMASK
  77792. +
  77793. +_NSIG8 (_NSIG / 8)
  77794. +
  77795. +#define ucontext(member) offsetof (ucontext_t, member)
  77796. +#define mcontext(member) ucontext (uc_mcontext.member)
  77797. +#define mreg(reg) mcontext (gregs[REG_##reg])
  77798. +
  77799. +oRBP mreg (RBP)
  77800. +oRSP mreg (RSP)
  77801. +oRBX mreg (RBX)
  77802. +oR8 mreg (R8)
  77803. +oR9 mreg (R9)
  77804. +oR10 mreg (R10)
  77805. +oR11 mreg (R11)
  77806. +oR12 mreg (R12)
  77807. +oR13 mreg (R13)
  77808. +oR14 mreg (R14)
  77809. +oR15 mreg (R15)
  77810. +oRDI mreg (RDI)
  77811. +oRSI mreg (RSI)
  77812. +oRDX mreg (RDX)
  77813. +oRAX mreg (RAX)
  77814. +oRCX mreg (RCX)
  77815. +oRIP mreg (RIP)
  77816. +oEFL mreg (EFL)
  77817. +oFPREGS mcontext (fpregs)
  77818. +oSIGMASK ucontext (uc_sigmask)
  77819. +oFPREGSMEM ucontext (__fpregs_mem)
  77820. +oMXCSR ucontext (__fpregs_mem.mxcsr)
  77821. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/vfork.S uClibc/libc/sysdeps/linux/x86_64/vfork.S
  77822. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  77823. +++ uClibc/libc/sysdeps/linux/x86_64/vfork.S 2014-02-03 12:32:56.000000000 +0100
  77824. @@ -12,9 +12,8 @@
  77825. Lesser General Public License for more details.
  77826. You should have received a copy of the GNU Lesser General Public
  77827. - License along with the GNU C Library; if not, write to the Free
  77828. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77829. - 02111-1307 USA. */
  77830. + License along with the GNU C Library; if not, see
  77831. + <http://www.gnu.org/licenses/>. */
  77832. #include <sys/syscall.h>
  77833. @@ -63,4 +62,4 @@
  77834. .size __vfork,.-__vfork
  77835. weak_alias(__vfork,vfork)
  77836. -libc_hidden_weak(vfork)
  77837. +libc_hidden_def(vfork)
  77838. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/atomic.h uClibc/libc/sysdeps/linux/xtensa/bits/atomic.h
  77839. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/atomic.h 1970-01-01 01:00:00.000000000 +0100
  77840. +++ uClibc/libc/sysdeps/linux/xtensa/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  77841. @@ -0,0 +1,232 @@
  77842. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  77843. + This file is part of the GNU C Library.
  77844. +
  77845. + The GNU C Library is free software; you can redistribute it and/or
  77846. + modify it under the terms of the GNU Lesser General Public
  77847. + License as published by the Free Software Foundation; either
  77848. + version 2.1 of the License, or (at your option) any later version.
  77849. +
  77850. + The GNU C Library is distributed in the hope that it will be useful,
  77851. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77852. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77853. + Lesser General Public License for more details.
  77854. +
  77855. + You should have received a copy of the GNU Lesser General Public
  77856. + License along with the GNU C Library; if not, see
  77857. + <http://www.gnu.org/licenses/>. */
  77858. +
  77859. +#ifndef _BITS_ATOMIC_H
  77860. +#define _BITS_ATOMIC_H 1
  77861. +
  77862. +#include <inttypes.h>
  77863. +
  77864. +typedef int32_t atomic32_t;
  77865. +typedef uint32_t uatomic32_t;
  77866. +typedef int_fast32_t atomic_fast32_t;
  77867. +typedef uint_fast32_t uatomic_fast32_t;
  77868. +
  77869. +typedef int64_t atomic64_t;
  77870. +typedef uint64_t uatomic64_t;
  77871. +typedef int_fast64_t atomic_fast64_t;
  77872. +typedef uint_fast64_t uatomic_fast64_t;
  77873. +
  77874. +typedef intptr_t atomicptr_t;
  77875. +typedef uintptr_t uatomicptr_t;
  77876. +typedef intmax_t atomic_max_t;
  77877. +typedef uintmax_t uatomic_max_t;
  77878. +
  77879. +
  77880. +/* Xtensa has only a 32-bit form of a store-conditional instruction. */
  77881. +
  77882. +#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
  77883. + (abort (), 0)
  77884. +
  77885. +#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
  77886. + (abort (), 0)
  77887. +
  77888. +#define __arch_compare_and_exchange_bool_8_rel(mem, newval, oldval) \
  77889. + (abort (), 0)
  77890. +
  77891. +#define __arch_compare_and_exchange_bool_16_rel(mem, newval, oldval) \
  77892. + (abort (), 0)
  77893. +
  77894. +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
  77895. + Return the old *MEM value. */
  77896. +
  77897. +#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  77898. + ({__typeof__(*(mem)) __tmp, __value; \
  77899. + __asm__ __volatile__( \
  77900. + "1: l32i %1, %2, 0 \n" \
  77901. + " bne %1, %4, 2f \n" \
  77902. + " wsr %1, SCOMPARE1 \n" \
  77903. + " mov %0, %1 \n" \
  77904. + " mov %1, %3 \n" \
  77905. + " s32c1i %1, %2, 0 \n" \
  77906. + " bne %0, %1, 1b \n" \
  77907. + "2: \n" \
  77908. + : "=&a" (__value), "=&a" (__tmp) \
  77909. + : "a" (mem), "a" (newval), "a" (oldval) \
  77910. + : "memory" ); \
  77911. + __tmp; \
  77912. + })
  77913. +
  77914. +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
  77915. + Return zero if *MEM was changed or non-zero if no exchange happened. */
  77916. +
  77917. +#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
  77918. + ({__typeof__(*(mem)) __tmp, __value; \
  77919. + __asm__ __volatile__( \
  77920. + "1: l32i %0, %2, 0 \n" \
  77921. + " sub %1, %4, %0 \n" \
  77922. + " bnez %1, 2f \n" \
  77923. + " wsr %0, SCOMPARE1 \n" \
  77924. + " mov %1, %3 \n" \
  77925. + " s32c1i %1, %2, 0 \n" \
  77926. + " bne %0, %1, 1b \n" \
  77927. + " movi %1, 0 \n" \
  77928. + "2: \n" \
  77929. + : "=&a" (__value), "=&a" (__tmp) \
  77930. + : "a" (mem), "a" (newval), "a" (oldval) \
  77931. + : "memory" ); \
  77932. + __tmp != 0; \
  77933. + })
  77934. +
  77935. +/* Store NEWVALUE in *MEM and return the old value. */
  77936. +
  77937. +#define __arch_exchange_32_acq(mem, newval) \
  77938. + ({__typeof__(*(mem)) __tmp, __value; \
  77939. + __asm__ __volatile__( \
  77940. + "1: l32i %0, %2, 0 \n" \
  77941. + " wsr %0, SCOMPARE1 \n" \
  77942. + " mov %1, %3 \n" \
  77943. + " s32c1i %1, %2, 0 \n" \
  77944. + " bne %0, %1, 1b \n" \
  77945. + : "=&a" (__value), "=&a" (__tmp) \
  77946. + : "a" (mem), "a" (newval) \
  77947. + : "memory" ); \
  77948. + __tmp; \
  77949. + })
  77950. +
  77951. +/* Add VALUE to *MEM and return the old value of *MEM. */
  77952. +
  77953. +#define __arch_atomic_exchange_and_add_32(mem, value) \
  77954. + ({__typeof__(*(mem)) __tmp, __value; \
  77955. + __asm__ __volatile__( \
  77956. + "1: l32i %0, %2, 0 \n" \
  77957. + " wsr %0, SCOMPARE1 \n" \
  77958. + " add %1, %0, %3 \n" \
  77959. + " s32c1i %1, %2, 0 \n" \
  77960. + " bne %0, %1, 1b \n" \
  77961. + : "=&a" (__value), "=&a" (__tmp) \
  77962. + : "a" (mem), "a" (value) \
  77963. + : "memory" ); \
  77964. + __tmp; \
  77965. + })
  77966. +
  77967. +/* Subtract VALUE from *MEM and return the old value of *MEM. */
  77968. +
  77969. +#define __arch_atomic_exchange_and_sub_32(mem, value) \
  77970. + ({__typeof__(*(mem)) __tmp, __value; \
  77971. + __asm__ __volatile__( \
  77972. + "1: l32i %0, %2, 0 \n" \
  77973. + " wsr %0, SCOMPARE1 \n" \
  77974. + " sub %1, %0, %3 \n" \
  77975. + " s32c1i %1, %2, 0 \n" \
  77976. + " bne %0, %1, 1b \n" \
  77977. + : "=&a" (__value), "=&a" (__tmp) \
  77978. + : "a" (mem), "a" (value) \
  77979. + : "memory" ); \
  77980. + __tmp; \
  77981. + })
  77982. +
  77983. +/* Decrement *MEM if it is > 0, and return the old value. */
  77984. +
  77985. +#define __arch_atomic_decrement_if_positive_32(mem) \
  77986. + ({__typeof__(*(mem)) __tmp, __value; \
  77987. + __asm__ __volatile__( \
  77988. + "1: l32i %0, %2, 0 \n" \
  77989. + " blti %0, 1, 2f \n" \
  77990. + " wsr %0, SCOMPARE1 \n" \
  77991. + " addi %1, %0, -1 \n" \
  77992. + " s32c1i %1, %2, 0 \n" \
  77993. + " bne %0, %1, 1b \n" \
  77994. + "2: \n" \
  77995. + : "=&a" (__value), "=&a" (__tmp) \
  77996. + : "a" (mem) \
  77997. + : "memory" ); \
  77998. + __value; \
  77999. + })
  78000. +
  78001. +
  78002. +/* These are the preferred public interfaces: */
  78003. +
  78004. +#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
  78005. + ({ \
  78006. + if (sizeof (*mem) != 4) \
  78007. + abort(); \
  78008. + __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \
  78009. + })
  78010. +
  78011. +#define atomic_exchange_acq(mem, newval) \
  78012. + ({ \
  78013. + if (sizeof(*(mem)) != 4) \
  78014. + abort(); \
  78015. + __arch_exchange_32_acq(mem, newval); \
  78016. + })
  78017. +
  78018. +#define atomic_exchange_and_add(mem, newval) \
  78019. + ({ \
  78020. + if (sizeof(*(mem)) != 4) \
  78021. + abort(); \
  78022. + __arch_atomic_exchange_and_add_32(mem, newval); \
  78023. + })
  78024. +
  78025. +#define atomic_exchange_and_sub(mem, newval) \
  78026. + ({ \
  78027. + if (sizeof(*(mem)) != 4) \
  78028. + abort(); \
  78029. + __arch_atomic_exchange_and_sub_32(mem, newval); \
  78030. + })
  78031. +
  78032. +#define atomic_decrement_if_positive(mem) \
  78033. + ({ \
  78034. + if (sizeof(*(mem)) != 4) \
  78035. + abort(); \
  78036. + __arch_atomic_decrement_if_positive_32(mem); \
  78037. + })
  78038. +
  78039. +
  78040. +# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
  78041. + (abort (), 0)
  78042. +
  78043. +# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
  78044. + (abort (), (__typeof (*mem)) 0)
  78045. +
  78046. +# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
  78047. + (abort (), 0)
  78048. +
  78049. +# define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
  78050. + (abort (), (__typeof (*mem)) 0)
  78051. +
  78052. +# define __arch_atomic_exchange_64_acq(mem, value) \
  78053. + ({ abort (); (*mem) = (value); })
  78054. +
  78055. +# define __arch_atomic_exchange_64_rel(mem, value) \
  78056. + ({ abort (); (*mem) = (value); })
  78057. +
  78058. +# define __arch_atomic_exchange_and_add_64(mem, value) \
  78059. + ({ abort (); (*mem) = (value); })
  78060. +
  78061. +# define __arch_atomic_increment_val_64(mem) \
  78062. + ({ abort (); (*mem)++; })
  78063. +
  78064. +# define __arch_atomic_decrement_val_64(mem) \
  78065. + ({ abort (); (*mem)--; })
  78066. +
  78067. +# define __arch_atomic_decrement_if_positive_64(mem) \
  78068. + ({ abort (); (*mem)--; })
  78069. +
  78070. +
  78071. +
  78072. +#endif /* _BITS_ATOMIC_H */
  78073. +
  78074. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/fcntl.h uClibc/libc/sysdeps/linux/xtensa/bits/fcntl.h
  78075. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  78076. +++ uClibc/libc/sysdeps/linux/xtensa/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  78077. @@ -14,9 +14,8 @@
  78078. Lesser General Public License for more details.
  78079. You should have received a copy of the GNU Lesser General Public
  78080. - License along with the GNU C Library; if not, write to the Free
  78081. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78082. - Boston, MA 02110-1301, USA. */
  78083. + License along with the GNU C Library; if not, see
  78084. + <http://www.gnu.org/licenses/>. */
  78085. #ifndef _FCNTL_H
  78086. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  78087. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/ipc.h uClibc/libc/sysdeps/linux/xtensa/bits/ipc.h
  78088. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  78089. +++ uClibc/libc/sysdeps/linux/xtensa/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  78090. @@ -12,9 +12,8 @@
  78091. Lesser General Public License for more details.
  78092. You should have received a copy of the GNU Lesser General Public
  78093. - License along with the GNU C Library; if not, write to the Free
  78094. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78095. - Boston, MA 02110-1301, USA. */
  78096. + License along with the GNU C Library; if not, see
  78097. + <http://www.gnu.org/licenses/>. */
  78098. #ifndef _SYS_IPC_H
  78099. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  78100. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/kernel_types.h uClibc/libc/sysdeps/linux/xtensa/bits/kernel_types.h
  78101. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  78102. +++ uClibc/libc/sysdeps/linux/xtensa/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  78103. @@ -33,6 +33,8 @@
  78104. typedef unsigned short __kernel_old_uid_t;
  78105. typedef unsigned short __kernel_old_gid_t;
  78106. typedef unsigned short __kernel_old_dev_t;
  78107. +typedef long __kernel_long_t;
  78108. +typedef unsigned long __kernel_ulong_t;
  78109. typedef long long __kernel_loff_t;
  78110. /* Beginning in 2.6 kernels, which is the first version that includes the
  78111. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mathdef.h uClibc/libc/sysdeps/linux/xtensa/bits/mathdef.h
  78112. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  78113. +++ uClibc/libc/sysdeps/linux/xtensa/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  78114. @@ -13,9 +13,8 @@
  78115. Lesser General Public License for more details.
  78116. You should have received a copy of the GNU Lesser General Public
  78117. - License along with the GNU C Library; if not, write to the Free
  78118. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78119. - Boston, MA 02110-1301, USA. */
  78120. + License along with the GNU C Library; if not, see
  78121. + <http://www.gnu.org/licenses/>. */
  78122. #if !defined _MATH_H && !defined _COMPLEX_H
  78123. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  78124. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mman.h uClibc/libc/sysdeps/linux/xtensa/bits/mman.h
  78125. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  78126. +++ uClibc/libc/sysdeps/linux/xtensa/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  78127. @@ -13,9 +13,8 @@
  78128. Lesser General Public License for more details.
  78129. You should have received a copy of the GNU Lesser General Public
  78130. - License along with the GNU C Library; if not, write to the Free
  78131. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78132. - Boston, MA 02110-1301, USA. */
  78133. + License along with the GNU C Library; if not, see
  78134. + <http://www.gnu.org/licenses/>. */
  78135. #ifndef _SYS_MMAN_H
  78136. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  78137. @@ -64,7 +63,7 @@
  78138. # define MAP_NORESERVE 0x0400 /* Don't check for reservations. */
  78139. # define MAP_POPULATE 0x10000 /* Populate (prefault) pagetables. */
  78140. # define MAP_NONBLOCK 0x20000 /* Do not block on IO. */
  78141. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  78142. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  78143. be uninitialized. */
  78144. #endif
  78145. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/msq.h uClibc/libc/sysdeps/linux/xtensa/bits/msq.h
  78146. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  78147. +++ uClibc/libc/sysdeps/linux/xtensa/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  78148. @@ -12,9 +12,8 @@
  78149. Lesser General Public License for more details.
  78150. You should have received a copy of the GNU Lesser General Public
  78151. - License along with the GNU C Library; if not, write to the Free
  78152. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78153. - Boston, MA 02110-1301, USA. */
  78154. + License along with the GNU C Library; if not, see
  78155. + <http://www.gnu.org/licenses/>. */
  78156. #ifndef _SYS_MSG_H
  78157. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  78158. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/setjmp.h uClibc/libc/sysdeps/linux/xtensa/bits/setjmp.h
  78159. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  78160. +++ uClibc/libc/sysdeps/linux/xtensa/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  78161. @@ -12,9 +12,8 @@
  78162. Lesser General Public License for more details.
  78163. You should have received a copy of the GNU Lesser General Public
  78164. - License along with the GNU C Library; if not, write to the Free
  78165. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78166. - Boston, MA 02110-1301, USA. */
  78167. + License along with the GNU C Library; if not, see
  78168. + <http://www.gnu.org/licenses/>. */
  78169. /* Define the machine-dependent type `jmp_buf'. Xtensa version. */
  78170. #ifndef _BITS_SETJMP_H
  78171. @@ -30,17 +29,6 @@
  78172. subsequent alloca in proc moves $sp), and the return address within
  78173. proc. Everything else is saved on the stack in the normal save areas. */
  78174. -#ifndef _ASM
  78175. typedef int __jmp_buf[17];
  78176. -#endif
  78177. -
  78178. -#define JB_SP 1
  78179. -#define JB_PC 16
  78180. -
  78181. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  78182. - variable at ADDRESS. */
  78183. -
  78184. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  78185. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  78186. #endif /* bits/setjmp.h */
  78187. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/shm.h uClibc/libc/sysdeps/linux/xtensa/bits/shm.h
  78188. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  78189. +++ uClibc/libc/sysdeps/linux/xtensa/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  78190. @@ -13,9 +13,8 @@
  78191. Lesser General Public License for more details.
  78192. You should have received a copy of the GNU Lesser General Public
  78193. - License along with the GNU C Library; if not, write to the Free
  78194. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78195. - Boston, MA 02110-1301, USA. */
  78196. + License along with the GNU C Library; if not, see
  78197. + <http://www.gnu.org/licenses/>. */
  78198. #ifndef _SYS_SHM_H
  78199. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  78200. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontext.h uClibc/libc/sysdeps/linux/xtensa/bits/sigcontext.h
  78201. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontext.h 1970-01-01 01:00:00.000000000 +0100
  78202. +++ uClibc/libc/sysdeps/linux/xtensa/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  78203. @@ -0,0 +1,40 @@
  78204. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  78205. + This file is part of the GNU C Library.
  78206. +
  78207. + The GNU C Library is free software; you can redistribute it and/or
  78208. + modify it under the terms of the GNU Lesser General Public
  78209. + License as published by the Free Software Foundation; either
  78210. + version 2.1 of the License, or (at your option) any later version.
  78211. +
  78212. + The GNU C Library is distributed in the hope that it will be useful,
  78213. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  78214. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  78215. + Lesser General Public License for more details.
  78216. +
  78217. + You should have received a copy of the GNU Lesser General Public
  78218. + License along with the GNU C Library; if not, see
  78219. + <http://www.gnu.org/licenses/>. */
  78220. +
  78221. +#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  78222. +# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  78223. +#endif
  78224. +
  78225. +#ifndef _BITS_SIGCONTEXT_H
  78226. +#define _BITS_SIGCONTEXT_H 1
  78227. +
  78228. +struct sigcontext
  78229. +{
  78230. + unsigned long sc_pc;
  78231. + unsigned long sc_ps;
  78232. + unsigned long sc_lbeg;
  78233. + unsigned long sc_lend;
  78234. + unsigned long sc_lcount;
  78235. + unsigned long sc_sar;
  78236. + unsigned long sc_acclo;
  78237. + unsigned long sc_acchi;
  78238. + unsigned long sc_a[16];
  78239. + void *sc_xtregs;
  78240. +};
  78241. +
  78242. +#endif /* _BITS_SIGCONTEXT_H */
  78243. +
  78244. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h uClibc/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h
  78245. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  78246. +++ uClibc/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  78247. @@ -12,9 +12,8 @@
  78248. Lesser General Public License for more details.
  78249. You should have received a copy of the GNU Lesser General Public
  78250. - License along with the GNU C Library; if not, write to the Free
  78251. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78252. - Boston, MA 02110-1301, USA. */
  78253. + License along with the GNU C Library; if not, see
  78254. + <http://www.gnu.org/licenses/>. */
  78255. /* Also see register-dump.h, where we spill live registers to the
  78256. stack so that we can trace the stack backward. */
  78257. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stackinfo.h uClibc/libc/sysdeps/linux/xtensa/bits/stackinfo.h
  78258. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  78259. +++ uClibc/libc/sysdeps/linux/xtensa/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  78260. @@ -12,9 +12,8 @@
  78261. Lesser General Public License for more details.
  78262. You should have received a copy of the GNU Lesser General Public
  78263. - License along with the GNU C Library; if not, write to the Free
  78264. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78265. - Boston, MA 02110-1301, USA. */
  78266. + License along with the GNU C Library; if not, see
  78267. + <http://www.gnu.org/licenses/>. */
  78268. /* This file contains a bit of information about the stack allocation
  78269. of the processor. */
  78270. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stat.h uClibc/libc/sysdeps/linux/xtensa/bits/stat.h
  78271. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  78272. +++ uClibc/libc/sysdeps/linux/xtensa/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  78273. @@ -12,9 +12,8 @@
  78274. Lesser General Public License for more details.
  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. + License along with the GNU C Library; if not, see
  78280. + <http://www.gnu.org/licenses/>. */
  78281. #ifndef _SYS_STAT_H
  78282. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  78283. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h uClibc/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h
  78284. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  78285. +++ uClibc/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  78286. @@ -11,8 +11,8 @@
  78287. /* can your target use syscall6() for mmap ? */
  78288. #define __UCLIBC_MMAP_HAS_6_ARGS__
  78289. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  78290. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  78291. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  78292. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  78293. /* does your target have a broken create_module() ? */
  78294. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  78295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_page.h uClibc/libc/sysdeps/linux/xtensa/bits/uClibc_page.h
  78296. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  78297. +++ uClibc/libc/sysdeps/linux/xtensa/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  78298. @@ -1,31 +0,0 @@
  78299. -/* Copyright (C) 2004 Erik Andersen
  78300. - *
  78301. - * This library is free software; you can redistribute it and/or
  78302. - * modify it under the terms of the GNU Lesser General Public
  78303. - * License as published by the Free Software Foundation; either
  78304. - * version 2.1 of the License, or (at your option) any later version.
  78305. - *
  78306. - * The GNU C Library is distributed in the hope that it will be useful,
  78307. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  78308. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  78309. - * Lesser General Public License for more details.
  78310. - *
  78311. - * You should have received a copy of the GNU Lesser General Public
  78312. - * License along with the GNU C Library; if not, write to the Free
  78313. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78314. - * 02111-1307 USA.
  78315. - */
  78316. -
  78317. -/* Supply an architecture specific value for PAGE_SIZE and friends. */
  78318. -
  78319. -#ifndef _UCLIBC_PAGE_H
  78320. -#define _UCLIBC_PAGE_H
  78321. -
  78322. -#include <bits/xtensa-config.h>
  78323. -
  78324. -/* PAGE_SHIFT determines the page size -- in this case 4096 */
  78325. -#define PAGE_SHIFT XCHAL_MMU_MIN_PTE_PAGE_SIZE
  78326. -#define PAGE_SIZE (1UL << PAGE_SHIFT)
  78327. -#define PAGE_MASK (~(PAGE_SIZE-1))
  78328. -
  78329. -#endif /* _UCLIBC_PAGE_H */
  78330. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/wordsize.h uClibc/libc/sysdeps/linux/xtensa/bits/wordsize.h
  78331. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  78332. +++ uClibc/libc/sysdeps/linux/xtensa/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  78333. @@ -12,8 +12,7 @@
  78334. Lesser General Public License for more details.
  78335. You should have received a copy of the GNU Lesser General Public
  78336. - License along with the GNU C Library; if not, write to the Free
  78337. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78338. - 02111-1307 USA. */
  78339. + License along with the GNU C Library; if not, see
  78340. + <http://www.gnu.org/licenses/>. */
  78341. #define __WORDSIZE 32
  78342. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/xtensa-config.h uClibc/libc/sysdeps/linux/xtensa/bits/xtensa-config.h
  78343. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/xtensa-config.h 2012-05-15 09:20:09.000000000 +0200
  78344. +++ uClibc/libc/sysdeps/linux/xtensa/bits/xtensa-config.h 2014-02-03 12:32:56.000000000 +0100
  78345. @@ -14,9 +14,8 @@
  78346. Lesser General Public License for more details.
  78347. You should have received a copy of the GNU Lesser General Public
  78348. - License along with the GNU C Library; if not, write to the Free
  78349. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78350. - Boston, MA 02110-1301, USA. */
  78351. + License along with the GNU C Library; if not, see
  78352. + <http://www.gnu.org/licenses/>. */
  78353. #ifndef XTENSA_CONFIG_H
  78354. #define XTENSA_CONFIG_H
  78355. @@ -44,10 +43,4 @@
  78356. #undef XCHAL_NUM_AREGS
  78357. #define XCHAL_NUM_AREGS 64
  78358. -/* Set a default page size. This is currently needed when bootstrapping
  78359. - the runtime linker. See comments in dl-machine.h where this is used. */
  78360. -
  78361. -#undef XCHAL_MMU_MIN_PTE_PAGE_SIZE
  78362. -#define XCHAL_MMU_MIN_PTE_PAGE_SIZE 12
  78363. -
  78364. #endif /* !XTENSA_CONFIG_H */
  78365. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/brk.c uClibc/libc/sysdeps/linux/xtensa/brk.c
  78366. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/brk.c 2012-05-15 09:20:09.000000000 +0200
  78367. +++ uClibc/libc/sysdeps/linux/xtensa/brk.c 2014-02-03 12:32:56.000000000 +0100
  78368. @@ -13,9 +13,8 @@
  78369. Lesser General Public License for more details.
  78370. You should have received a copy of the GNU Lesser General Public
  78371. - License along with the GNU C Library; if not, write to the Free
  78372. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78373. - Boston, MA 02110-1301, USA. */
  78374. + License along with the GNU C Library; if not, see
  78375. + <http://www.gnu.org/licenses/>. */
  78376. #include <errno.h>
  78377. #include <unistd.h>
  78378. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/clone.S uClibc/libc/sysdeps/linux/xtensa/clone.S
  78379. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/clone.S 2012-05-15 09:20:09.000000000 +0200
  78380. +++ uClibc/libc/sysdeps/linux/xtensa/clone.S 2014-02-03 12:32:56.000000000 +0100
  78381. @@ -11,9 +11,8 @@
  78382. Lesser General Public License for more details.
  78383. You should have received a copy of the GNU Lesser General Public
  78384. - License along with the GNU C Library; if not, write to the Free
  78385. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78386. - Boston, MA 02110-1301, USA. */
  78387. + License along with the GNU C Library; if not, see
  78388. + <http://www.gnu.org/licenses/>. */
  78389. /* clone is even more special than fork as it mucks with stacks
  78390. and invokes a function in the right context after it's all over. */
  78391. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/crt1.S uClibc/libc/sysdeps/linux/xtensa/crt1.S
  78392. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/crt1.S 2012-05-15 09:20:09.000000000 +0200
  78393. +++ uClibc/libc/sysdeps/linux/xtensa/crt1.S 2014-02-03 12:32:56.000000000 +0100
  78394. @@ -30,9 +30,8 @@
  78395. Lesser General Public License for more details.
  78396. You should have received a copy of the GNU Lesser General Public
  78397. - License along with the GNU C Library; if not, write to the Free
  78398. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78399. - Boston, MA 02110-1301, USA. */
  78400. + License along with the GNU C Library; if not, see
  78401. + <http://www.gnu.org/licenses/>. */
  78402. #include <features.h>
  78403. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/fork.c uClibc/libc/sysdeps/linux/xtensa/fork.c
  78404. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/fork.c 2012-05-15 09:20:09.000000000 +0200
  78405. +++ uClibc/libc/sysdeps/linux/xtensa/fork.c 2014-02-03 12:32:56.000000000 +0100
  78406. @@ -7,19 +7,19 @@
  78407. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  78408. */
  78409. -#include <unistd.h>
  78410. -#include <sys/syscall.h>
  78411. -#define _SIGNAL_H
  78412. -#include <bits/signum.h>
  78413. /* Xtensa doesn't provide a 'fork' system call, so we use 'clone'. */
  78414. +#include <sys/syscall.h>
  78415. -extern __typeof(fork) __libc_fork;
  78416. +#if defined __NR_clone && defined __ARCH_USE_MMU__
  78417. +# include <unistd.h>
  78418. +# include <signal.h>
  78419. +# include <cancel.h>
  78420. -libc_hidden_proto(fork)
  78421. -pid_t __libc_fork(void)
  78422. +pid_t fork(void)
  78423. {
  78424. return (pid_t) INLINE_SYSCALL(clone, 2, SIGCHLD, 0);
  78425. }
  78426. -weak_alias(__libc_fork, fork)
  78427. -libc_hidden_weak(fork)
  78428. +lt_strong_alias(fork)
  78429. +lt_libc_hidden(fork)
  78430. +#endif
  78431. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h uClibc/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h
  78432. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  78433. +++ uClibc/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  78434. @@ -0,0 +1,20 @@
  78435. +/* Private macros for accessing __jmp_buf contents. Xtensa version.
  78436. + Copyright (C) 2006 Free Software Foundation, Inc.
  78437. + This file is part of the GNU C Library.
  78438. +
  78439. + The GNU C Library is free software; you can redistribute it and/or
  78440. + modify it under the terms of the GNU Lesser General Public
  78441. + License as published by the Free Software Foundation; either
  78442. + version 2.1 of the License, or (at your option) any later version.
  78443. +
  78444. + The GNU C Library is distributed in the hope that it will be useful,
  78445. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  78446. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  78447. + Lesser General Public License for more details.
  78448. +
  78449. + You should have received a copy of the GNU Lesser General Public
  78450. + License along with the GNU C Library; if not, see
  78451. + <http://www.gnu.org/licenses/>. */
  78452. +
  78453. +#define JB_SP 1
  78454. +#define JB_PC 16
  78455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h uClibc/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h
  78456. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  78457. +++ uClibc/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  78458. @@ -0,0 +1,25 @@
  78459. +/* Copyright (C) 1997, 1998, 2007 Free Software Foundation, Inc.
  78460. + This file is part of the GNU C Library.
  78461. +
  78462. + The GNU C Library is free software; you can redistribute it and/or
  78463. + modify it under the terms of the GNU Lesser General Public
  78464. + License as published by the Free Software Foundation; either
  78465. + version 2.1 of the License, or (at your option) any later version.
  78466. +
  78467. + The GNU C Library is distributed in the hope that it will be useful,
  78468. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  78469. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  78470. + Lesser General Public License for more details.
  78471. +
  78472. + You should have received a copy of the GNU Lesser General Public
  78473. + License along with the GNU C Library; if not, see
  78474. + <http://www.gnu.org/licenses/>. */
  78475. +
  78476. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  78477. + variable at ADDRESS. */
  78478. +
  78479. +#include <setjmp.h>
  78480. +#include <jmpbuf-offsets.h>
  78481. +
  78482. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  78483. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  78484. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/__longjmp.S uClibc/libc/sysdeps/linux/xtensa/__longjmp.S
  78485. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  78486. +++ uClibc/libc/sysdeps/linux/xtensa/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  78487. @@ -14,9 +14,8 @@
  78488. Lesser General Public License for more details.
  78489. You should have received a copy of the GNU Lesser General Public
  78490. - License along with the GNU C Library; if not, write to the Free
  78491. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78492. - Boston, MA 02110-1301, USA. */
  78493. + License along with the GNU C Library; if not, see
  78494. + <http://www.gnu.org/licenses/>. */
  78495. /* This implementation relies heavily on the Xtensa register window
  78496. mechanism. Setjmp flushes all the windows except its own to the
  78497. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/Makefile.arch uClibc/libc/sysdeps/linux/xtensa/Makefile.arch
  78498. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  78499. +++ uClibc/libc/sysdeps/linux/xtensa/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  78500. @@ -5,11 +5,7 @@
  78501. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  78502. #
  78503. -CSRC := brk.c fork.c pread_write.c sigaction.c __syscall_error.c
  78504. +CSRC-y := brk.c fork.c sigaction.c __syscall_error.c
  78505. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  78506. - CSRC += posix_fadvise.c posix_fadvise64.c
  78507. -endif
  78508. -
  78509. -SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S \
  78510. +SSRC-y := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S \
  78511. sigrestorer.S syscall.S mmap.S windowspill.S __longjmp.S vfork.S
  78512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/mmap.S uClibc/libc/sysdeps/linux/xtensa/mmap.S
  78513. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/mmap.S 2012-05-15 09:20:09.000000000 +0200
  78514. +++ uClibc/libc/sysdeps/linux/xtensa/mmap.S 2014-02-03 12:32:56.000000000 +0100
  78515. @@ -12,9 +12,8 @@
  78516. Lesser General Public License for more details.
  78517. You should have received a copy of the GNU Lesser General Public
  78518. - License along with the GNU C Library; if not, write to the Free
  78519. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78520. - Boston, MA 02110-1301, USA. */
  78521. + License along with the GNU C Library; if not, see
  78522. + <http://www.gnu.org/licenses/>. */
  78523. #include "sysdep.h"
  78524. #include <sys/syscall.h>
  78525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise64.c uClibc/libc/sysdeps/linux/xtensa/posix_fadvise64.c
  78526. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  78527. +++ uClibc/libc/sysdeps/linux/xtensa/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  78528. @@ -1,39 +0,0 @@
  78529. -/* vi: set sw=4 ts=4: */
  78530. -/*
  78531. - * posix_fadvise64() for Xtensa uClibc
  78532. - *
  78533. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  78534. - * Copyright (C) 2007 Tensilica Inc.
  78535. - *
  78536. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  78537. - */
  78538. -
  78539. -#include <features.h>
  78540. -#include <unistd.h>
  78541. -#include <errno.h>
  78542. -#include <endian.h>
  78543. -#include <stdint.h>
  78544. -#include <sys/types.h>
  78545. -#include <sys/syscall.h>
  78546. -#include <fcntl.h>
  78547. -
  78548. -#ifdef __UCLIBC_HAS_LFS__
  78549. -
  78550. -int posix_fadvise64 (int fd, __off64_t offset, __off64_t len, int advice)
  78551. -{
  78552. -#ifdef __NR_fadvise64_64
  78553. - INTERNAL_SYSCALL_DECL (err);
  78554. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  78555. - __LONG_LONG_PAIR ((long) (offset >> 32),
  78556. - (long) offset),
  78557. - __LONG_LONG_PAIR ((long) (len >> 32),
  78558. - (long) len));
  78559. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  78560. - return 0;
  78561. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  78562. -#else
  78563. - return ENOSYS;
  78564. -#endif
  78565. -}
  78566. -
  78567. -#endif /* __UCLIBC_HAS_LFS__ */
  78568. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise.c uClibc/libc/sysdeps/linux/xtensa/posix_fadvise.c
  78569. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  78570. +++ uClibc/libc/sysdeps/linux/xtensa/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  78571. @@ -1,29 +0,0 @@
  78572. -/* vi: set sw=4 ts=4: */
  78573. -/*
  78574. - * posix_fadvise() for Xtensa uClibc
  78575. - *
  78576. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  78577. - * Copyright (C) 2007 Tensilica Inc.
  78578. - *
  78579. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  78580. - */
  78581. -
  78582. -#include <sys/syscall.h>
  78583. -#include <fcntl.h>
  78584. -
  78585. -int posix_fadvise (int fd, off_t offset, off_t len, int advice)
  78586. -{
  78587. -#ifdef __NR_fadvise64_64
  78588. - INTERNAL_SYSCALL_DECL (err);
  78589. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  78590. - __LONG_LONG_PAIR ((long) (offset >> 31),
  78591. - (long) offset),
  78592. - __LONG_LONG_PAIR ((long) (len >> 31),
  78593. - (long) len));
  78594. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  78595. - return 0;
  78596. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  78597. -#else
  78598. - return ENOSYS;
  78599. -#endif
  78600. -}
  78601. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/pread_write.c uClibc/libc/sysdeps/linux/xtensa/pread_write.c
  78602. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  78603. +++ uClibc/libc/sysdeps/linux/xtensa/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  78604. @@ -1,189 +0,0 @@
  78605. -/* vi: set sw=4 ts=4: */
  78606. -/*
  78607. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  78608. - *
  78609. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  78610. - */
  78611. -/*
  78612. - * Based in part on the files
  78613. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  78614. - * ./sysdeps/unix/sysv/linux/pread.c,
  78615. - * sysdeps/posix/pread.c
  78616. - * sysdeps/posix/pwrite.c
  78617. - * from GNU libc 2.2.5, but reworked considerably...
  78618. - */
  78619. -
  78620. -#include <sys/syscall.h>
  78621. -#include <unistd.h>
  78622. -#include <stdint.h>
  78623. -#include <endian.h>
  78624. -
  78625. -extern __typeof(pread) __libc_pread;
  78626. -extern __typeof(pwrite) __libc_pwrite;
  78627. -#ifdef __UCLIBC_HAS_LFS__
  78628. -extern __typeof(pread64) __libc_pread64;
  78629. -extern __typeof(pwrite64) __libc_pwrite64;
  78630. -#endif
  78631. -
  78632. -#include <bits/kernel_types.h>
  78633. -
  78634. -#ifdef __NR_pread
  78635. -
  78636. -# define __NR___syscall_pread __NR_pread
  78637. -/* On Xtensa, 64-bit values are aligned in even/odd register pairs. */
  78638. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  78639. - size_t, count, int, pad, off_t, offset_hi, off_t, offset_lo)
  78640. -
  78641. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  78642. -{
  78643. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset));
  78644. -}
  78645. -weak_alias(__libc_pread,pread)
  78646. -
  78647. -# ifdef __UCLIBC_HAS_LFS__
  78648. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  78649. -{
  78650. - uint32_t low = offset & 0xffffffff;
  78651. - uint32_t high = offset >> 32;
  78652. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(high, low));
  78653. -}
  78654. -weak_alias(__libc_pread64,pread64)
  78655. -# endif /* __UCLIBC_HAS_LFS__ */
  78656. -
  78657. -#endif /* __NR_pread */
  78658. -
  78659. -#ifdef __NR_pwrite
  78660. -
  78661. -# define __NR___syscall_pwrite __NR_pwrite
  78662. -/* On Xtensa, 64-bit values are aligned in even/odd register pairs. */
  78663. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  78664. - size_t, count, int, pad, off_t, offset_hi, off_t, offset_lo)
  78665. -
  78666. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  78667. -{
  78668. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset));
  78669. -}
  78670. -weak_alias(__libc_pwrite,pwrite)
  78671. -
  78672. -# ifdef __UCLIBC_HAS_LFS__
  78673. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  78674. -{
  78675. - uint32_t low = offset & 0xffffffff;
  78676. - uint32_t high = offset >> 32;
  78677. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(high, low));
  78678. -}
  78679. -weak_alias(__libc_pwrite64,pwrite64)
  78680. -# endif /* __UCLIBC_HAS_LFS__ */
  78681. -#endif /* __NR_pwrite */
  78682. -
  78683. -#if ! defined __NR_pread || ! defined __NR_pwrite
  78684. -
  78685. -static ssize_t __fake_pread_write(int fd, void *buf,
  78686. - size_t count, off_t offset, int do_pwrite)
  78687. -{
  78688. - int save_errno;
  78689. - ssize_t result;
  78690. - off_t old_offset;
  78691. -
  78692. - /* Since we must not change the file pointer preserve the
  78693. - * value so that we can restore it later. */
  78694. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  78695. - return -1;
  78696. -
  78697. - /* Set to wanted position. */
  78698. - if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
  78699. - return -1;
  78700. -
  78701. - if (do_pwrite == 1) {
  78702. - /* Write the data. */
  78703. - result = write(fd, buf, count);
  78704. - } else {
  78705. - /* Read the data. */
  78706. - result = read(fd, buf, count);
  78707. - }
  78708. -
  78709. - /* Now we have to restore the position. If this fails we
  78710. - * have to return this as an error. */
  78711. - save_errno = errno;
  78712. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  78713. - {
  78714. - if (result == -1)
  78715. - __set_errno(save_errno);
  78716. - return -1;
  78717. - }
  78718. - __set_errno(save_errno);
  78719. - return(result);
  78720. -}
  78721. -
  78722. -# ifdef __UCLIBC_HAS_LFS__
  78723. -
  78724. -static ssize_t __fake_pread_write64(int fd, void *buf,
  78725. - size_t count, off64_t offset, int do_pwrite)
  78726. -{
  78727. - int save_errno;
  78728. - ssize_t result;
  78729. - off64_t old_offset;
  78730. -
  78731. - /* Since we must not change the file pointer preserve the
  78732. - * value so that we can restore it later. */
  78733. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  78734. - return -1;
  78735. -
  78736. - /* Set to wanted position. */
  78737. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  78738. - return -1;
  78739. -
  78740. - if (do_pwrite == 1) {
  78741. - /* Write the data. */
  78742. - result = write(fd, buf, count);
  78743. - } else {
  78744. - /* Read the data. */
  78745. - result = read(fd, buf, count);
  78746. - }
  78747. -
  78748. - /* Now we have to restore the position. */
  78749. - save_errno = errno;
  78750. - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) {
  78751. - if (result == -1)
  78752. - __set_errno (save_errno);
  78753. - return -1;
  78754. - }
  78755. - __set_errno (save_errno);
  78756. - return result;
  78757. -}
  78758. -# endif /* __UCLIBC_HAS_LFS__ */
  78759. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  78760. -
  78761. -#ifndef __NR_pread
  78762. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  78763. -{
  78764. - return __fake_pread_write(fd, buf, count, offset, 0);
  78765. -}
  78766. -weak_alias(__libc_pread,pread)
  78767. -
  78768. -# ifdef __UCLIBC_HAS_LFS__
  78769. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  78770. -{
  78771. - return __fake_pread_write64(fd, buf, count, offset, 0);
  78772. -}
  78773. -weak_alias(__libc_pread64,pread64)
  78774. -# endif /* __UCLIBC_HAS_LFS__ */
  78775. -#endif /* ! __NR_pread */
  78776. -
  78777. -#ifndef __NR_pwrite
  78778. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  78779. -{
  78780. - /* we won't actually be modifying the buffer,
  78781. - *just cast it to get rid of warnings */
  78782. - return __fake_pread_write(fd, (void*)buf, count, offset, 1);
  78783. -}
  78784. -weak_alias(__libc_pwrite,pwrite)
  78785. -
  78786. -# ifdef __UCLIBC_HAS_LFS__
  78787. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  78788. -{
  78789. - return __fake_pread_write64(fd, (void*)buf, count, offset, 1);
  78790. -}
  78791. -weak_alias(__libc_pwrite64,pwrite64)
  78792. -# endif /* __UCLIBC_HAS_LFS__ */
  78793. -#endif /* ! __NR_pwrite */
  78794. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/setjmp.S uClibc/libc/sysdeps/linux/xtensa/setjmp.S
  78795. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  78796. +++ uClibc/libc/sysdeps/linux/xtensa/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  78797. @@ -13,9 +13,8 @@
  78798. Lesser General Public License for more details.
  78799. You should have received a copy of the GNU Lesser General Public
  78800. - License along with the GNU C Library; if not, write to the Free
  78801. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78802. - Boston, MA 02110-1301, USA. */
  78803. + License along with the GNU C Library; if not, see
  78804. + <http://www.gnu.org/licenses/>. */
  78805. /* This implementation relies heavily on the Xtensa register window
  78806. mechanism. Setjmp flushes all the windows except its own to the
  78807. @@ -25,24 +24,52 @@
  78808. then sets things up so that it will return to the right place,
  78809. using a window underflow to automatically restore the registers.
  78810. - Note that it would probably be sufficient to only copy the
  78811. - registers from setjmp's caller into jmp_buf. However, we also copy
  78812. - the save area located at the stack pointer of setjmp's caller.
  78813. - This save area will typically remain intact until the longjmp call.
  78814. - The one exception is when there is an intervening alloca in
  78815. - setjmp's caller. This is certainly an unusual situation and is
  78816. - likely to cause problems in any case (the storage allocated on the
  78817. - stack cannot be safely accessed following the longjmp). As bad as
  78818. - it is, on most systems this situation would not necessarily lead to
  78819. - a catastrophic failure. If we did not preserve the extra save area
  78820. - on Xtensa, however, it would. When setjmp's caller returns after a
  78821. - longjmp, there will be a window underflow; an invalid return
  78822. - address or stack pointer in the save area will almost certainly
  78823. - lead to a crash. Keeping a copy of the extra save area in the
  78824. - jmp_buf avoids this with only a small additional cost. If setjmp
  78825. - and longjmp are ever time-critical, this could be removed. */
  78826. + Note that we also save the area located just below the stack pointer
  78827. + of the caller. This save area could get overwritten by alloca
  78828. + following the call to setjmp. The alloca moves the stack pointer
  78829. + to allocate memory on the stack. This newly allocated memory
  78830. + includes(!) the original save area (alloca copies the save area
  78831. + before it moves that stack pointer).
  78832. +
  78833. +
  78834. + previous caller SP -> |------------------------------| <-----+
  78835. + | caller-2 registers a0-a3 | | p
  78836. + |------------------------------| | o
  78837. + | caller registers a4-a8/a12 | | i
  78838. + |------------------------------| | n
  78839. + | caller local stack | | t
  78840. + caller SP -> |------------------------------| <-+ | s
  78841. + | caller-1 registers a0-a3 | -:---+
  78842. + callee (setjmp) SP -> |==============================| |
  78843. + | caller registers a0-a3 | --+
  78844. + |------------------------------|
  78845. +
  78846. + In case of an alloca, registers a0-a3 of the previous caller (caller-1)
  78847. + are copied (*), and the original location get likely overwritten.
  78848. +
  78849. + previous caller SP -> |------------------------------| <-----+
  78850. + | caller-2 registers a0-a3 | | p
  78851. + |------------------------------| | o
  78852. + | caller registers a4-a8/a12 | | i
  78853. + |------------------------------| | n
  78854. + | caller local stack | | t
  78855. + caller SP before alloca-> |------------------------------| | s
  78856. + | alloca area (overwrites old | |
  78857. + | copy of caller-1 registers) | |
  78858. + caller SP after alloca -> |------------------------------| <-+ |
  78859. + | caller-1 registers a0-a3 (*) | -:---+
  78860. + callee (setjmp) SP -> |==============================| |
  78861. + | caller registers a0-a3 | --+
  78862. + |------------------------------|
  78863. +
  78864. + So, when longcall returns to the original caller SP, it also needs
  78865. + to restore the save area below the SP.
  78866. +
  78867. + */
  78868. #include "sysdep.h"
  78869. +
  78870. +/* NOTE: The ENTRY macro must allocate exactly 16 bytes (entry a1, 16) */
  78871. /* int setjmp (a2 = jmp_buf env) */
  78872. @@ -57,8 +84,7 @@
  78873. j 1f
  78874. END (setjmp)
  78875. -/* int __sigsetjmp (a2 = jmp_buf env,
  78876. - a3 = int savemask) */
  78877. +/* int __sigsetjmp (a2 = jmp_buf env, a3 = int savemask) */
  78878. ENTRY (__sigsetjmp)
  78879. 1:
  78880. @@ -66,61 +92,56 @@
  78881. movi a4, __window_spill
  78882. callx4 a4
  78883. - /* Preserve the second argument (savemask) in a15. The selection
  78884. - of a15 is arbitrary, except it's otherwise unused. There is no
  78885. - risk of triggering a window overflow since we just returned
  78886. - from __window_spill(). */
  78887. - mov a15, a3
  78888. -
  78889. - /* Copy the register save area at (sp - 16). */
  78890. - addi a5, a1, -16
  78891. - l32i a3, a5, 0
  78892. - l32i a4, a5, 4
  78893. - s32i a3, a2, 0
  78894. - s32i a4, a2, 4
  78895. - l32i a3, a5, 8
  78896. - l32i a4, a5, 12
  78897. - s32i a3, a2, 8
  78898. - s32i a4, a2, 12
  78899. -
  78900. - /* Copy 0-8 words from the register overflow area. */
  78901. - extui a3, a0, 30, 2
  78902. - blti a3, 2, .Lendsj
  78903. - l32i a7, a1, 4
  78904. - slli a4, a3, 4
  78905. - sub a5, a7, a4
  78906. - addi a6, a2, 16
  78907. - addi a7, a7, -16 /* a7 = end of register overflow area */
  78908. + /* Copy the caller register a0-a3 at (sp - 16) to jmpbuf. */
  78909. + addi a7, a1, -16
  78910. + l32i a4, a7, 0
  78911. + l32i a5, a7, 4
  78912. + s32i a4, a2, 0
  78913. + s32i a5, a2, 4
  78914. + l32i a4, a7, 8
  78915. + l32i a5, a7, 12
  78916. + s32i a4, a2, 8
  78917. + s32i a5, a2, 12
  78918. +
  78919. + /* Copy the caller registers a4-a8/a12 from the overflow area. */
  78920. + /* Note that entry moved the SP by 16B, so SP of caller-1 is at 4(sp) */
  78921. + extui a7, a0, 30, 2
  78922. + blti a7, 2, .Lendsj
  78923. + l32i a8, a1, 4 /* a8: SP of 'caller-1' */
  78924. + slli a4, a7, 4
  78925. + sub a6, a8, a4
  78926. + addi a5, a2, 16
  78927. + addi a8, a8, -16 /* a8: end of register overflow area */
  78928. .Lsjloop:
  78929. - l32i a3, a5, 0
  78930. - l32i a4, a5, 4
  78931. - s32i a3, a6, 0
  78932. - s32i a4, a6, 4
  78933. - l32i a3, a5, 8
  78934. - l32i a4, a5, 12
  78935. - s32i a3, a6, 8
  78936. - s32i a4, a6, 12
  78937. - addi a5, a5, 16
  78938. + l32i a7, a6, 0
  78939. + l32i a4, a6, 4
  78940. + s32i a7, a5, 0
  78941. + s32i a4, a5, 4
  78942. + l32i a7, a6, 8
  78943. + l32i a4, a6, 12
  78944. + s32i a7, a5, 8
  78945. + s32i a4, a5, 12
  78946. + addi a5, a6, 16
  78947. addi a6, a6, 16
  78948. - blt a5, a7, .Lsjloop
  78949. + blt a6, a8, .Lsjloop
  78950. .Lendsj:
  78951. - /* Copy the register save area at sp. */
  78952. - l32i a3, a1, 0
  78953. - l32i a4, a1, 4
  78954. - s32i a3, a2, 48
  78955. - s32i a4, a2, 52
  78956. - l32i a3, a1, 8
  78957. - l32i a4, a1, 12
  78958. - s32i a3, a2, 56
  78959. - s32i a4, a2, 60
  78960. + /* Copy previous caller registers (this is assuming 'entry a1,16') */
  78961. + l32i a4, a1, 0
  78962. + l32i a5, a1, 4
  78963. + s32i a4, a2, 48
  78964. + s32i a5, a2, 52
  78965. + l32i a4, a1, 8
  78966. + l32i a5, a1, 12
  78967. + s32i a4, a2, 56
  78968. + s32i a5, a2, 60
  78969. /* Save the return address, including the window size bits. */
  78970. s32i a0, a2, 64
  78971. - /* a2 still addresses jmp_buf. a15 contains savemask. */
  78972. + /* a2 still points to jmp_buf. a3 contains savemask. */
  78973. mov a6, a2
  78974. - mov a7, a15
  78975. + mov a7, a3
  78976. movi a3, __sigjmp_save
  78977. callx4 a3
  78978. mov a2, a6
  78979. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/procfs.h uClibc/libc/sysdeps/linux/xtensa/sys/procfs.h
  78980. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  78981. +++ uClibc/libc/sysdeps/linux/xtensa/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  78982. @@ -12,9 +12,8 @@
  78983. Lesser General Public License for more details.
  78984. You should have received a copy of the GNU Lesser General Public
  78985. - License along with the GNU C Library; if not, write to the Free
  78986. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78987. - Boston, MA 02110-1301, USA. */
  78988. + License along with the GNU C Library; if not, see
  78989. + <http://www.gnu.org/licenses/>. */
  78990. #ifndef _SYS_PROCFS_H
  78991. #define _SYS_PROCFS_H 1
  78992. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ptrace.h uClibc/libc/sysdeps/linux/xtensa/sys/ptrace.h
  78993. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  78994. +++ uClibc/libc/sysdeps/linux/xtensa/sys/ptrace.h 1970-01-01 01:00:00.000000000 +0100
  78995. @@ -1,156 +0,0 @@
  78996. -/* `ptrace' debugger support interface. Linux version.
  78997. - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007
  78998. - Free Software Foundation, Inc.
  78999. - This file is part of the GNU C Library.
  79000. -
  79001. - The GNU C Library is free software; you can redistribute it and/or
  79002. - modify it under the terms of the GNU Lesser General Public
  79003. - License as published by the Free Software Foundation; either
  79004. - version 2.1 of the License, or (at your option) any later version.
  79005. -
  79006. - The GNU C Library is distributed in the hope that it will be useful,
  79007. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  79008. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  79009. - Lesser General Public License for more details.
  79010. -
  79011. - You should have received a copy of the GNU Lesser General Public
  79012. - License along with the GNU C Library; if not, write to the Free
  79013. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79014. - Boston, MA 02110-1301, USA. */
  79015. -
  79016. -#ifndef _SYS_PTRACE_H
  79017. -#define _SYS_PTRACE_H 1
  79018. -
  79019. -#include <features.h>
  79020. -
  79021. -/* Kludge away careless namespace pollution from the kernel. */
  79022. -
  79023. -#undef PTRACE_GETREGS
  79024. -#undef PTRACE_SETREGS
  79025. -#undef PTRACE_GETFPREGS
  79026. -#undef PTRACE_SETFPREGS
  79027. -#undef PTRACE_GETFPREGSIZE
  79028. -
  79029. -
  79030. -__BEGIN_DECLS
  79031. -
  79032. -/* Type of the REQUEST argument to `ptrace.' */
  79033. -enum __ptrace_request
  79034. -{
  79035. - /* Indicate that the process making this request should be traced.
  79036. - All signals received by this process can be intercepted by its
  79037. - parent, and its parent can use the other `ptrace' requests. */
  79038. - PTRACE_TRACEME = 0,
  79039. -#define PT_TRACE_ME PTRACE_TRACEME
  79040. -
  79041. - /* Return the word in the process's text space at address ADDR. */
  79042. - PTRACE_PEEKTEXT = 1,
  79043. -#define PT_READ_I PTRACE_PEEKTEXT
  79044. -
  79045. - /* Return the word in the process's data space at address ADDR. */
  79046. - PTRACE_PEEKDATA = 2,
  79047. -#define PT_READ_D PTRACE_PEEKDATA
  79048. -
  79049. - /* Return the word in the process's user area at offset ADDR. */
  79050. - PTRACE_PEEKUSER = 3,
  79051. -#define PT_READ_U PTRACE_PEEKUSER
  79052. -
  79053. - /* Write the word DATA into the process's text space at address ADDR. */
  79054. - PTRACE_POKETEXT = 4,
  79055. -#define PT_WRITE_I PTRACE_POKETEXT
  79056. -
  79057. - /* Write the word DATA into the process's data space at address ADDR. */
  79058. - PTRACE_POKEDATA = 5,
  79059. -#define PT_WRITE_D PTRACE_POKEDATA
  79060. -
  79061. - /* Write the word DATA into the process's user area at offset ADDR. */
  79062. - PTRACE_POKEUSER = 6,
  79063. -#define PT_WRITE_U PTRACE_POKEUSER
  79064. -
  79065. - /* Continue the process. */
  79066. - PTRACE_CONT = 7,
  79067. -#define PT_CONTINUE PTRACE_CONT
  79068. -
  79069. - /* Kill the process. */
  79070. - PTRACE_KILL = 8,
  79071. -#define PT_KILL PTRACE_KILL
  79072. -
  79073. - /* Single step the process.
  79074. - This is not supported on all machines. */
  79075. - PTRACE_SINGLESTEP = 9,
  79076. -#define PT_STEP PTRACE_SINGLESTEP
  79077. -
  79078. - /* Get all general purpose registers used by a processes.
  79079. - This is not supported on all machines. */
  79080. - PTRACE_GETREGS = 12,
  79081. -#define PT_GETREGS PTRACE_GETREGS
  79082. -
  79083. - /* Set all general purpose registers used by a processes.
  79084. - This is not supported on all machines. */
  79085. - PTRACE_SETREGS = 13,
  79086. -#define PT_SETREGS PTRACE_SETREGS
  79087. -
  79088. - /* Get all floating point registers used by a processes.
  79089. - This is not supported on all machines. */
  79090. - PTRACE_GETFPREGS = 14,
  79091. -#define PT_GETFPREGS PTRACE_GETFPREGS
  79092. -
  79093. - /* Set all floating point registers used by a processes.
  79094. - This is not supported on all machines. */
  79095. - PTRACE_SETFPREGS = 15,
  79096. -#define PT_SETFPREGS PTRACE_SETFPREGS
  79097. -
  79098. - /* Attach to a process that is already running. */
  79099. - PTRACE_ATTACH = 16,
  79100. -#define PT_ATTACH PTRACE_ATTACH
  79101. -
  79102. - /* Detach from a process attached to with PTRACE_ATTACH. */
  79103. - PTRACE_DETACH = 17,
  79104. -#define PT_DETACH PTRACE_DETACH
  79105. -
  79106. - /* Get size required for the buffer holding the floating point registers.
  79107. - This is not supported on all machines. */
  79108. - PTRACE_GETFPREGSIZE = 18,
  79109. -#define PT_GETFPREGSIZE PTRACE_GETFPREGSIZE
  79110. -
  79111. - /* Continue and stop at the next (return from) syscall. */
  79112. - PTRACE_SYSCALL = 24
  79113. -#define PT_SYSCALL PTRACE_SYSCALL
  79114. -};
  79115. -
  79116. -/* Options set using PTRACE_SETOPTIONS. */
  79117. -enum __ptrace_setoptions {
  79118. - PTRACE_O_TRACESYSGOOD = 0x00000001,
  79119. - PTRACE_O_TRACEFORK = 0x00000002,
  79120. - PTRACE_O_TRACEVFORK = 0x00000004,
  79121. - PTRACE_O_TRACECLONE = 0x00000008,
  79122. - PTRACE_O_TRACEEXEC = 0x00000010,
  79123. - PTRACE_O_TRACEVFORKDONE = 0x00000020,
  79124. - PTRACE_O_TRACEEXIT = 0x00000040,
  79125. - PTRACE_O_MASK = 0x0000007f
  79126. -};
  79127. -
  79128. -/* Wait extended result codes for the above trace options. */
  79129. -enum __ptrace_eventcodes {
  79130. - PTRACE_EVENT_FORK = 1,
  79131. - PTRACE_EVENT_VFORK = 2,
  79132. - PTRACE_EVENT_CLONE = 3,
  79133. - PTRACE_EVENT_EXEC = 4,
  79134. - PTRACE_EVENT_VFORK_DONE = 5,
  79135. - PTRACE_EVENT_EXIT = 6
  79136. -};
  79137. -
  79138. -/* Perform process tracing functions. REQUEST is one of the values
  79139. - above, and determines the action to be taken.
  79140. - For all requests except PTRACE_TRACEME, PID specifies the process to be
  79141. - traced.
  79142. -
  79143. - PID and the other arguments described above for the various requests should
  79144. - appear (those that are used for the particular request) as:
  79145. - pid_t PID, void *ADDR, int DATA, void *ADDR2
  79146. - after REQUEST. */
  79147. -extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
  79148. -
  79149. -__END_DECLS
  79150. -
  79151. -#endif /* _SYS_PTRACE_H */
  79152. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ucontext.h uClibc/libc/sysdeps/linux/xtensa/sys/ucontext.h
  79153. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  79154. +++ uClibc/libc/sysdeps/linux/xtensa/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  79155. @@ -12,9 +12,8 @@
  79156. Lesser General Public License for more details.
  79157. You should have received a copy of the GNU Lesser General Public
  79158. - License along with the GNU C Library; if not, write to the Free
  79159. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79160. - Boston, MA 02110-1301, USA. */
  79161. + License along with the GNU C Library; if not, see
  79162. + <http://www.gnu.org/licenses/>. */
  79163. #ifndef _SYS_UCONTEXT_H
  79164. #define _SYS_UCONTEXT_H 1
  79165. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/user.h uClibc/libc/sysdeps/linux/xtensa/sys/user.h
  79166. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  79167. +++ uClibc/libc/sysdeps/linux/xtensa/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  79168. @@ -0,0 +1,20 @@
  79169. +/*
  79170. + * include/asm-xtensa/user.h
  79171. + *
  79172. + * Xtensa Processor version.
  79173. + *
  79174. + * This file is subject to the terms and conditions of the GNU General Public
  79175. + * License. See the file "COPYING" in the main directory of this archive
  79176. + * for more details.
  79177. + *
  79178. + * Copyright (C) 2001 - 2005 Tensilica Inc.
  79179. + */
  79180. +
  79181. +#ifndef _XTENSA_USER_H
  79182. +#define _XTENSA_USER_H
  79183. +
  79184. +/* This file usually defines a 'struct user' structure. However, it it only
  79185. + * used for a.out file, which are not supported on Xtensa.
  79186. + */
  79187. +
  79188. +#endif /* _XTENSA_USER_H */
  79189. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/syscall.S uClibc/libc/sysdeps/linux/xtensa/syscall.S
  79190. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/syscall.S 2012-05-15 09:20:09.000000000 +0200
  79191. +++ uClibc/libc/sysdeps/linux/xtensa/syscall.S 2014-02-03 12:32:56.000000000 +0100
  79192. @@ -12,9 +12,8 @@
  79193. Lesser General Public License for more details.
  79194. You should have received a copy of the GNU Lesser General Public
  79195. - License along with the GNU C Library; if not, write to the Free
  79196. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79197. - Boston, MA 02110-1301, USA. */
  79198. + License along with the GNU C Library; if not, see
  79199. + <http://www.gnu.org/licenses/>. */
  79200. #include "sysdep.h"
  79201. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sysdep.h uClibc/libc/sysdeps/linux/xtensa/sysdep.h
  79202. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  79203. +++ uClibc/libc/sysdeps/linux/xtensa/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  79204. @@ -13,9 +13,10 @@
  79205. Lesser General Public License for more details.
  79206. You should have received a copy of the GNU Lesser General Public
  79207. - License along with the GNU C Library; if not, write to the Free
  79208. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79209. - Boston, MA 02110-1301, USA. */
  79210. + License along with the GNU C Library; if not, see
  79211. + <http://www.gnu.org/licenses/>. */
  79212. +
  79213. +#include <sys/syscall.h>
  79214. #ifdef __ASSEMBLER__
  79215. @@ -38,6 +39,16 @@
  79216. entry sp, FRAMESIZE; \
  79217. CALL_MCOUNT
  79218. +#define HIDDEN_ENTRY(name) \
  79219. + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
  79220. + .hidden C_SYMBOL_NAME(name); \
  79221. + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name), @function); \
  79222. + .align ALIGNARG(2); \
  79223. + LITERAL_POSITION; \
  79224. + C_LABEL(name) \
  79225. + entry sp, FRAMESIZE; \
  79226. + CALL_MCOUNT
  79227. +
  79228. #undef END
  79229. #define END(name) ASM_SIZE_DIRECTIVE(name)
  79230. @@ -112,6 +123,7 @@
  79231. #define PSEUDO_END_ERRVAL(name) \
  79232. END (name)
  79233. +#undef ret_ERRVAL
  79234. #define ret_ERRVAL retw
  79235. #if defined RTLD_PRIVATE_ERRNO
  79236. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/vfork.S uClibc/libc/sysdeps/linux/xtensa/vfork.S
  79237. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/vfork.S 2012-05-15 09:20:09.000000000 +0200
  79238. +++ uClibc/libc/sysdeps/linux/xtensa/vfork.S 2014-02-03 12:32:56.000000000 +0100
  79239. @@ -12,9 +12,8 @@
  79240. Lesser General Public License for more details.
  79241. You should have received a copy of the GNU Lesser General Public
  79242. - License along with the GNU C Library; if not, write to the Free
  79243. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79244. - Boston, MA 02110-1301, USA. */
  79245. + License along with the GNU C Library; if not, see
  79246. + <http://www.gnu.org/licenses/>. */
  79247. #include "sysdep.h"
  79248. #include <sys/syscall.h>
  79249. @@ -49,7 +48,7 @@
  79250. /* pid_t vfork(void);
  79251. Implemented as __clone_syscall(CLONE_VFORK | CLONE_VM | SIGCHLD, 0) */
  79252. -ENTRY (__vfork)
  79253. +HIDDEN_ENTRY (__vfork)
  79254. movi a6, .Ljumptable
  79255. extui a2, a0, 30, 2 /* call-size: call4/8/12 = 1/2/3 */
  79256. @@ -165,6 +164,5 @@
  79257. .Lpseudo_end:
  79258. retw
  79259. -libc_hidden_def (__vfork)
  79260. -
  79261. weak_alias (__vfork, vfork)
  79262. +libc_hidden_def(vfork)
  79263. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/windowspill.S uClibc/libc/sysdeps/linux/xtensa/windowspill.S
  79264. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/windowspill.S 2012-05-15 09:20:09.000000000 +0200
  79265. +++ uClibc/libc/sysdeps/linux/xtensa/windowspill.S 2014-02-03 12:32:56.000000000 +0100
  79266. @@ -13,9 +13,8 @@
  79267. Lesser General Public License for more details.
  79268. You should have received a copy of the GNU Lesser General Public
  79269. - License along with the GNU C Library; if not, write to the Free
  79270. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  79271. - Boston, MA 02110-1301, USA. */
  79272. + License along with the GNU C Library; if not, see
  79273. + <http://www.gnu.org/licenses/>. */
  79274. #include <bits/xtensa-config.h>
  79275. diff -Nur uClibc-0.9.33.2/libc/termios/cfmakeraw.c uClibc/libc/termios/cfmakeraw.c
  79276. --- uClibc-0.9.33.2/libc/termios/cfmakeraw.c 2012-05-15 09:20:09.000000000 +0200
  79277. +++ uClibc/libc/termios/cfmakeraw.c 2014-02-03 12:32:56.000000000 +0100
  79278. @@ -12,9 +12,8 @@
  79279. Lesser General Public License for more details.
  79280. You should have received a copy of the GNU Lesser General Public
  79281. - License along with the GNU C Library; if not, write to the Free
  79282. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79283. - 02111-1307 USA. */
  79284. + License along with the GNU C Library; if not, see
  79285. + <http://www.gnu.org/licenses/>. */
  79286. #include <termios.h>
  79287. diff -Nur uClibc-0.9.33.2/libc/termios/cfsetspeed.c uClibc/libc/termios/cfsetspeed.c
  79288. --- uClibc-0.9.33.2/libc/termios/cfsetspeed.c 2012-05-15 09:20:09.000000000 +0200
  79289. +++ uClibc/libc/termios/cfsetspeed.c 2014-02-03 12:32:56.000000000 +0100
  79290. @@ -12,9 +12,8 @@
  79291. Lesser General Public License for more details.
  79292. You should have received a copy of the GNU Lesser General Public
  79293. - License along with the GNU C Library; if not, write to the Free
  79294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79295. - 02111-1307 USA. */
  79296. + License along with the GNU C Library; if not, see
  79297. + <http://www.gnu.org/licenses/>. */
  79298. #include <termios.h>
  79299. #include <errno.h>
  79300. diff -Nur uClibc-0.9.33.2/libc/termios/isatty.c uClibc/libc/termios/isatty.c
  79301. --- uClibc-0.9.33.2/libc/termios/isatty.c 2012-05-15 09:20:09.000000000 +0200
  79302. +++ uClibc/libc/termios/isatty.c 2014-02-03 12:32:56.000000000 +0100
  79303. @@ -12,9 +12,8 @@
  79304. Lesser General Public License for more details.
  79305. You should have received a copy of the GNU Lesser General Public
  79306. - License along with the GNU C Library; if not, write to the Free
  79307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79308. - 02111-1307 USA. */
  79309. + License along with the GNU C Library; if not, see
  79310. + <http://www.gnu.org/licenses/>. */
  79311. #include <unistd.h>
  79312. #include <termios.h>
  79313. diff -Nur uClibc-0.9.33.2/libc/termios/kernel_termios.h uClibc/libc/termios/kernel_termios.h
  79314. --- uClibc-0.9.33.2/libc/termios/kernel_termios.h 2012-05-15 09:20:09.000000000 +0200
  79315. +++ uClibc/libc/termios/kernel_termios.h 2014-02-03 12:32:56.000000000 +0100
  79316. @@ -12,9 +12,8 @@
  79317. Lesser General Public License for more details.
  79318. You should have received a copy of the GNU Lesser General Public
  79319. - License along with the GNU C Library; if not, write to the Free
  79320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79321. - 02111-1307 USA. */
  79322. + License along with the GNU C Library; if not, see
  79323. + <http://www.gnu.org/licenses/>. */
  79324. #ifndef _KERNEL_TERMIOS_H
  79325. #define _KERNEL_TERMIOS_H 1
  79326. diff -Nur uClibc-0.9.33.2/libc/termios/speed.c uClibc/libc/termios/speed.c
  79327. --- uClibc-0.9.33.2/libc/termios/speed.c 2012-05-15 09:20:09.000000000 +0200
  79328. +++ uClibc/libc/termios/speed.c 2014-02-03 12:32:56.000000000 +0100
  79329. @@ -14,9 +14,8 @@
  79330. Lesser General Public License for more details.
  79331. You should have received a copy of the GNU Lesser General Public
  79332. - License along with the GNU C Library; if not, write to the Free
  79333. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79334. - 02111-1307 USA. */
  79335. + License along with the GNU C Library; if not, see
  79336. + <http://www.gnu.org/licenses/>. */
  79337. #include <stddef.h>
  79338. #include <errno.h>
  79339. diff -Nur uClibc-0.9.33.2/libc/termios/tcdrain.c uClibc/libc/termios/tcdrain.c
  79340. --- uClibc-0.9.33.2/libc/termios/tcdrain.c 2012-05-15 09:20:09.000000000 +0200
  79341. +++ uClibc/libc/termios/tcdrain.c 2014-02-03 12:32:56.000000000 +0100
  79342. @@ -12,9 +12,8 @@
  79343. Lesser General Public License for more details.
  79344. You should have received a copy of the GNU Lesser General Public
  79345. - License along with the GNU C Library; if not, write to the Free
  79346. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79347. - 02111-1307 USA. */
  79348. + License along with the GNU C Library; if not, see
  79349. + <http://www.gnu.org/licenses/>. */
  79350. #include <errno.h>
  79351. #include <termios.h>
  79352. diff -Nur uClibc-0.9.33.2/libc/termios/tcflow.c uClibc/libc/termios/tcflow.c
  79353. --- uClibc-0.9.33.2/libc/termios/tcflow.c 2012-05-15 09:20:09.000000000 +0200
  79354. +++ uClibc/libc/termios/tcflow.c 2014-02-03 12:32:56.000000000 +0100
  79355. @@ -13,9 +13,8 @@
  79356. Lesser General Public License for more details.
  79357. You should have received a copy of the GNU Lesser General Public
  79358. - License along with the GNU C Library; if not, write to the Free
  79359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79360. - 02111-1307 USA. */
  79361. + License along with the GNU C Library; if not, see
  79362. + <http://www.gnu.org/licenses/>. */
  79363. #include <errno.h>
  79364. #include <termios.h>
  79365. diff -Nur uClibc-0.9.33.2/libc/termios/tcflush.c uClibc/libc/termios/tcflush.c
  79366. --- uClibc-0.9.33.2/libc/termios/tcflush.c 2012-05-15 09:20:09.000000000 +0200
  79367. +++ uClibc/libc/termios/tcflush.c 2014-02-03 12:32:56.000000000 +0100
  79368. @@ -13,9 +13,8 @@
  79369. Lesser General Public License for more details.
  79370. You should have received a copy of the GNU Lesser General Public
  79371. - License along with the GNU C Library; if not, write to the Free
  79372. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79373. - 02111-1307 USA. */
  79374. + License along with the GNU C Library; if not, see
  79375. + <http://www.gnu.org/licenses/>. */
  79376. #include <errno.h>
  79377. #include <termios.h>
  79378. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetattr.c uClibc/libc/termios/tcgetattr.c
  79379. --- uClibc-0.9.33.2/libc/termios/tcgetattr.c 2012-05-15 09:20:09.000000000 +0200
  79380. +++ uClibc/libc/termios/tcgetattr.c 2014-02-03 12:32:56.000000000 +0100
  79381. @@ -12,9 +12,8 @@
  79382. Lesser General Public License for more details.
  79383. You should have received a copy of the GNU Lesser General Public
  79384. - License along with the GNU C Library; if not, write to the Free
  79385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79386. - 02111-1307 USA. */
  79387. + License along with the GNU C Library; if not, see
  79388. + <http://www.gnu.org/licenses/>. */
  79389. #include <features.h>
  79390. #include <string.h>
  79391. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetpgrp.c uClibc/libc/termios/tcgetpgrp.c
  79392. --- uClibc-0.9.33.2/libc/termios/tcgetpgrp.c 2012-05-15 09:20:09.000000000 +0200
  79393. +++ uClibc/libc/termios/tcgetpgrp.c 2014-02-03 12:32:56.000000000 +0100
  79394. @@ -12,9 +12,8 @@
  79395. Lesser General Public License for more details.
  79396. You should have received a copy of the GNU Lesser General Public
  79397. - License along with the GNU C Library; if not, write to the Free
  79398. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79399. - 02111-1307 USA. */
  79400. + License along with the GNU C Library; if not, see
  79401. + <http://www.gnu.org/licenses/>. */
  79402. #include <sys/ioctl.h>
  79403. #include <errno.h>
  79404. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetsid.c uClibc/libc/termios/tcgetsid.c
  79405. --- uClibc-0.9.33.2/libc/termios/tcgetsid.c 2012-05-15 09:20:09.000000000 +0200
  79406. +++ uClibc/libc/termios/tcgetsid.c 2014-02-03 12:32:56.000000000 +0100
  79407. @@ -12,9 +12,8 @@
  79408. Lesser General Public License for more details.
  79409. You should have received a copy of the GNU Lesser General Public
  79410. - License along with the GNU C Library; if not, write to the Free
  79411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79412. - 02111-1307 USA. */
  79413. + License along with the GNU C Library; if not, see
  79414. + <http://www.gnu.org/licenses/>. */
  79415. #include <errno.h>
  79416. #include <termios.h>
  79417. diff -Nur uClibc-0.9.33.2/libc/termios/tcsendbrk.c uClibc/libc/termios/tcsendbrk.c
  79418. --- uClibc-0.9.33.2/libc/termios/tcsendbrk.c 2012-05-15 09:20:09.000000000 +0200
  79419. +++ uClibc/libc/termios/tcsendbrk.c 2014-02-03 12:32:56.000000000 +0100
  79420. @@ -13,9 +13,8 @@
  79421. Lesser General Public License for more details.
  79422. You should have received a copy of the GNU Lesser General Public
  79423. - License along with the GNU C Library; if not, write to the Free
  79424. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79425. - 02111-1307 USA. */
  79426. + License along with the GNU C Library; if not, see
  79427. + <http://www.gnu.org/licenses/>. */
  79428. #include <errno.h>
  79429. #include <stddef.h>
  79430. diff -Nur uClibc-0.9.33.2/libc/termios/tcsetattr.c uClibc/libc/termios/tcsetattr.c
  79431. --- uClibc-0.9.33.2/libc/termios/tcsetattr.c 2012-05-15 09:20:09.000000000 +0200
  79432. +++ uClibc/libc/termios/tcsetattr.c 2014-02-03 12:32:56.000000000 +0100
  79433. @@ -12,9 +12,8 @@
  79434. Lesser General Public License for more details.
  79435. You should have received a copy of the GNU Lesser General Public
  79436. - License along with the GNU C Library; if not, write to the Free
  79437. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79438. - 02111-1307 USA. */
  79439. + License along with the GNU C Library; if not, see
  79440. + <http://www.gnu.org/licenses/>. */
  79441. #include <errno.h>
  79442. #include <string.h>
  79443. diff -Nur uClibc-0.9.33.2/libc/termios/tcsetpgrp.c uClibc/libc/termios/tcsetpgrp.c
  79444. --- uClibc-0.9.33.2/libc/termios/tcsetpgrp.c 2012-05-15 09:20:09.000000000 +0200
  79445. +++ uClibc/libc/termios/tcsetpgrp.c 2014-02-03 12:32:56.000000000 +0100
  79446. @@ -12,9 +12,8 @@
  79447. Lesser General Public License for more details.
  79448. You should have received a copy of the GNU Lesser General Public
  79449. - License along with the GNU C Library; if not, write to the Free
  79450. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79451. - 02111-1307 USA. */
  79452. + License along with the GNU C Library; if not, see
  79453. + <http://www.gnu.org/licenses/>. */
  79454. #include <sys/types.h>
  79455. #include <sys/ioctl.h>
  79456. diff -Nur uClibc-0.9.33.2/libc/unistd/confstr.c uClibc/libc/unistd/confstr.c
  79457. --- uClibc-0.9.33.2/libc/unistd/confstr.c 2012-05-15 09:20:09.000000000 +0200
  79458. +++ uClibc/libc/unistd/confstr.c 2014-02-03 12:32:56.000000000 +0100
  79459. @@ -13,9 +13,8 @@
  79460. Lesser General Public License for more details.
  79461. You should have received a copy of the GNU Lesser General Public
  79462. - License along with the GNU C Library; if not, write to the Free
  79463. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79464. - 02111-1307 USA. */
  79465. + License along with the GNU C Library; if not, see
  79466. + <http://www.gnu.org/licenses/>. */
  79467. #include <stddef.h>
  79468. #include <errno.h>
  79469. diff -Nur uClibc-0.9.33.2/libc/unistd/daemon.c uClibc/libc/unistd/daemon.c
  79470. --- uClibc-0.9.33.2/libc/unistd/daemon.c 2012-05-15 09:20:09.000000000 +0200
  79471. +++ uClibc/libc/unistd/daemon.c 2014-02-03 12:32:56.000000000 +0100
  79472. @@ -118,7 +118,7 @@
  79473. {
  79474. struct STAT st;
  79475. - if ((fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1
  79476. + if ((fd = open_not_cancel_2(_PATH_DEVNULL, O_RDWR)) != -1
  79477. && (__builtin_expect (FSTAT (fd, &st), 0) == 0))
  79478. {
  79479. if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0) {
  79480. diff -Nur uClibc-0.9.33.2/libc/unistd/exec.c uClibc/libc/unistd/exec.c
  79481. --- uClibc-0.9.33.2/libc/unistd/exec.c 2012-05-15 09:20:09.000000000 +0200
  79482. +++ uClibc/libc/unistd/exec.c 2014-02-03 12:32:56.000000000 +0100
  79483. @@ -32,6 +32,8 @@
  79484. /**********************************************************************/
  79485. #define EXEC_FUNC_COMMON 0
  79486. #define EXEC_FUNC_EXECVP 1
  79487. +#define EXEC_FUNC_EXECVPE 2
  79488. +
  79489. #if defined(__ARCH_USE_MMU__)
  79490. /* We have an MMU, so use alloca() to grab space for buffers and arg lists. */
  79491. @@ -58,6 +60,7 @@
  79492. * execle(a) -> execve(-)
  79493. * execv(-) -> execve(-)
  79494. * execvp(a) -> execve(-)
  79495. + * execvpe(a) -> execve(-)
  79496. */
  79497. # define EXEC_ALLOC_SIZE(VAR) /* nothing to do */
  79498. @@ -68,7 +71,7 @@
  79499. # ifdef L___exec_alloc
  79500. -void attribute_hidden *__exec_alloc(size_t size, int func)
  79501. +void *__exec_alloc(size_t size, int func)
  79502. {
  79503. static void *common_cache, *execvp_cache;
  79504. static size_t common_size, execvp_size;
  79505. @@ -135,7 +138,7 @@
  79506. /**********************************************************************/
  79507. #ifdef L_execv
  79508. -int execv(__const char *path, char *__const argv[])
  79509. +int execv(const char *path, char *const argv[])
  79510. {
  79511. return execve(path, argv, __environ);
  79512. }
  79513. @@ -219,15 +222,18 @@
  79514. #endif
  79515. /**********************************************************************/
  79516. -#ifdef L_execvp
  79517. +#if defined (L_execvp) || defined(L_execvpe)
  79518. /* Use a default path that matches glibc behavior, since SUSv3 says
  79519. * this is implementation-defined. The default is current working dir,
  79520. * /bin, and then /usr/bin. */
  79521. static const char default_path[] = ":/bin:/usr/bin";
  79522. -
  79523. +#if defined (L_execvp)
  79524. int execvp(const char *path, char *const argv[])
  79525. +#elif defined (L_execvpe)
  79526. +int execvpe(const char *path, char *const argv[], char *const envp[])
  79527. +#endif
  79528. {
  79529. char *buf = NULL;
  79530. char *p;
  79531. @@ -245,7 +251,11 @@
  79532. }
  79533. if (strchr(path, '/')) {
  79534. +#if defined (L_execvp)
  79535. execve(path, argv, __environ);
  79536. +#elif defined (L_execvpe)
  79537. + execve(path, argv, envp);
  79538. +#endif
  79539. if (errno == ENOEXEC) {
  79540. char **nargv;
  79541. EXEC_ALLOC_SIZE(size2) /* Do NOT add a semicolon! */
  79542. @@ -254,11 +264,19 @@
  79543. /* Need the dimension - 1. We omit counting the trailing
  79544. * NULL but we actually omit the first entry. */
  79545. for (n=0 ; argv[n] ; n++) {}
  79546. +#if defined (L_execvp)
  79547. nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVP);
  79548. +#elif defined (L_execvpe)
  79549. + nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVPE);
  79550. +#endif
  79551. nargv[0] = argv[0];
  79552. nargv[1] = (char *)path;
  79553. memcpy(nargv+2, argv+1, n*sizeof(char *));
  79554. +#if defined (L_execvp)
  79555. execve("/bin/sh", nargv, __environ);
  79556. +#elif defined (L_execvpe)
  79557. + execve("/bin/sh", nargv, envp);
  79558. +#endif
  79559. EXEC_FREE(nargv, size2);
  79560. }
  79561. } else {
  79562. @@ -277,8 +295,11 @@
  79563. return -1;
  79564. }
  79565. len = (FILENAME_MAX - 1) - plen;
  79566. -
  79567. +#if defined (L_execvp)
  79568. buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVP);
  79569. +#elif defined (L_execvpe)
  79570. + buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVPE);
  79571. +#endif
  79572. {
  79573. int seen_small = 0;
  79574. s0 = buf + len;
  79575. @@ -300,8 +321,11 @@
  79576. s[plen-1] = '/';
  79577. }
  79578. +#if defined (L_execvp)
  79579. execve(s, argv, __environ);
  79580. -
  79581. +#elif defined (L_execvpe)
  79582. + execve(s, argv, envp);
  79583. +#endif
  79584. seen_small = 1;
  79585. if (errno == ENOEXEC) {
  79586. @@ -325,7 +349,11 @@
  79587. return -1;
  79588. }
  79589. +#if defined (L_execvp)
  79590. libc_hidden_def(execvp)
  79591. -
  79592. +#elif defined (L_execvpe)
  79593. +libc_hidden_def(execvpe)
  79594. #endif
  79595. +
  79596. +#endif /* #if defined (L_execvp) || defined(L_execvpe) */
  79597. /**********************************************************************/
  79598. diff -Nur uClibc-0.9.33.2/libc/unistd/execvpe.c uClibc/libc/unistd/execvpe.c
  79599. --- uClibc-0.9.33.2/libc/unistd/execvpe.c 1970-01-01 01:00:00.000000000 +0100
  79600. +++ uClibc/libc/unistd/execvpe.c 2014-02-03 12:32:56.000000000 +0100
  79601. @@ -0,0 +1,7 @@
  79602. +/* Copyright (C) 2011-2013 Hennning Heinold <heinold@inf.fu-berlin.de>
  79603. + *
  79604. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  79605. + */
  79606. +
  79607. +#define L_execvpe
  79608. +#include "exec.c"
  79609. diff -Nur uClibc-0.9.33.2/libc/unistd/fpathconf.c uClibc/libc/unistd/fpathconf.c
  79610. --- uClibc-0.9.33.2/libc/unistd/fpathconf.c 2012-05-15 09:20:09.000000000 +0200
  79611. +++ uClibc/libc/unistd/fpathconf.c 2014-02-03 12:32:56.000000000 +0100
  79612. @@ -13,9 +13,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 <errno.h>
  79621. #include <unistd.h>
  79622. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt.c uClibc/libc/unistd/getopt.c
  79623. --- uClibc-0.9.33.2/libc/unistd/getopt.c 2012-05-15 09:20:09.000000000 +0200
  79624. +++ uClibc/libc/unistd/getopt.c 2014-02-03 12:32:56.000000000 +0100
  79625. @@ -17,9 +17,8 @@
  79626. Lesser General Public License for more details.
  79627. You should have received a copy of the GNU Lesser General Public
  79628. - License along with the GNU C Library; if not, write to the Free
  79629. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79630. - 02111-1307 USA. */
  79631. + License along with the GNU C Library; if not, see
  79632. + <http://www.gnu.org/licenses/>. */
  79633. /*
  79634. * Modified for uClibc by Manuel Novoa III on 1/5/01.
  79635. @@ -36,9 +35,6 @@
  79636. # include <config.h>
  79637. #endif
  79638. -#define __FORCE_GLIBC
  79639. -#include <features.h>
  79640. -
  79641. #include <stdio.h>
  79642. /* Comment out all this code if we are using the GNU C Library, and are not
  79643. @@ -62,7 +58,7 @@
  79644. /* This needs to come after some library #include
  79645. to get __GNU_LIBRARY__ defined. */
  79646. -#ifdef __GNU_LIBRARY__
  79647. +#if defined __GNU_LIBRARY__ || defined __UCLIBC__
  79648. /* Don't include stdlib.h for non-GNU C libraries because some of them
  79649. contain conflicting prototypes for getopt. */
  79650. # include <stdlib.h>
  79651. @@ -75,22 +71,12 @@
  79652. # include <unixlib.h>
  79653. #endif
  79654. -#if !defined __UCLIBC__ && !defined __UCLIBC_HAS_GETTEXT_AWARENESS__
  79655. #ifdef _LIBC
  79656. # include <libintl.h>
  79657. #else
  79658. # include "gettext.h"
  79659. # define _(msgid) gettext (msgid)
  79660. #endif
  79661. -#else
  79662. -#ifdef __UCLIBC_MJN3_ONLY__
  79663. -#warning TODO: Enable gettext awareness.
  79664. -#endif /* __UCLIBC_MJN3_ONLY__ */
  79665. -
  79666. -#undef _
  79667. -#define _(X) X
  79668. -
  79669. -#endif
  79670. /* Treat '-W foo' the same as the long option '--foo',
  79671. * disabled for the moment since it costs about 2k... */
  79672. @@ -161,7 +147,7 @@
  79673. static struct _getopt_data getopt_data;
  79674. -#ifndef __GNU_LIBRARY__
  79675. +#if !defined __GNU_LIBRARY__ && !defined __UCLIBC__
  79676. /* Avoid depending on library functions or files
  79677. whose names are inconsistent. */
  79678. @@ -235,7 +221,7 @@
  79679. d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
  79680. else
  79681. {
  79682. - memset (__mempcpy (new_str, __getopt_nonoption_flags,
  79683. + memset (mempcpy (new_str, __getopt_nonoption_flags,
  79684. d->__nonoption_flags_max_len),
  79685. '\0', top + 1 - d->__nonoption_flags_max_len);
  79686. d->__nonoption_flags_max_len = top + 1;
  79687. @@ -341,7 +327,7 @@
  79688. if (__getopt_nonoption_flags == NULL)
  79689. d->__nonoption_flags_max_len = -1;
  79690. else
  79691. - memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
  79692. + memset (mempcpy (__getopt_nonoption_flags, orig_str, len),
  79693. '\0', d->__nonoption_flags_max_len - len);
  79694. }
  79695. }
  79696. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt_int.h uClibc/libc/unistd/getopt_int.h
  79697. --- uClibc-0.9.33.2/libc/unistd/getopt_int.h 2012-05-15 09:20:09.000000000 +0200
  79698. +++ uClibc/libc/unistd/getopt_int.h 2014-02-03 12:32:56.000000000 +0100
  79699. @@ -14,9 +14,8 @@
  79700. Lesser General Public License for more details.
  79701. You should have received a copy of the GNU Lesser General Public
  79702. - License along with the GNU C Library; if not, write to the Free
  79703. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79704. - 02111-1307 USA. */
  79705. + License along with the GNU C Library; if not, see
  79706. + <http://www.gnu.org/licenses/>. */
  79707. #ifndef _GETOPT_INT_H
  79708. #define _GETOPT_INT_H 1
  79709. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt-susv3.c uClibc/libc/unistd/getopt-susv3.c
  79710. --- uClibc-0.9.33.2/libc/unistd/getopt-susv3.c 2012-05-15 09:20:09.000000000 +0200
  79711. +++ uClibc/libc/unistd/getopt-susv3.c 2014-02-03 12:32:56.000000000 +0100
  79712. @@ -22,14 +22,7 @@
  79713. #include <string.h>
  79714. #include <stdio.h>
  79715. #include <getopt.h>
  79716. -
  79717. -
  79718. -#ifdef __UCLIBC_MJN3_ONLY__
  79719. -#warning TODO: Enable gettext awareness.
  79720. -#endif /* __UCLIBC_MJN3_ONLY__ */
  79721. -
  79722. -#undef _
  79723. -#define _(X) X
  79724. +#include <libintl.h>
  79725. #ifdef __BCC__
  79726. static const char missing[] = "option requires an argument";
  79727. diff -Nur uClibc-0.9.33.2/libc/unistd/getpass.c uClibc/libc/unistd/getpass.c
  79728. --- uClibc-0.9.33.2/libc/unistd/getpass.c 2012-05-15 09:20:09.000000000 +0200
  79729. +++ uClibc/libc/unistd/getpass.c 2014-02-03 12:32:56.000000000 +0100
  79730. @@ -12,9 +12,8 @@
  79731. Lesser General Public License for more details.
  79732. You should have received a copy of the GNU Lesser General Public
  79733. - License along with the GNU C Library; if not, write to the Free
  79734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79735. - 02111-1307 USA. */
  79736. + License along with the GNU C Library; if not, see
  79737. + <http://www.gnu.org/licenses/>. */
  79738. #include <stdio.h>
  79739. #include <string.h>
  79740. diff -Nur uClibc-0.9.33.2/libc/unistd/getsubopt.c uClibc/libc/unistd/getsubopt.c
  79741. --- uClibc-0.9.33.2/libc/unistd/getsubopt.c 2012-05-15 09:20:09.000000000 +0200
  79742. +++ uClibc/libc/unistd/getsubopt.c 2014-02-03 12:32:56.000000000 +0100
  79743. @@ -14,9 +14,8 @@
  79744. Lesser General Public License for more details.
  79745. You should have received a copy of the GNU Lesser General Public
  79746. - License along with the GNU C Library; if not, write to the Free
  79747. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79748. - 02111-1307 USA. */
  79749. + License along with the GNU C Library; if not, see
  79750. + <http://www.gnu.org/licenses/>. */
  79751. #include <stdlib.h>
  79752. #include <string.h>
  79753. diff -Nur uClibc-0.9.33.2/libc/unistd/Makefile.in uClibc/libc/unistd/Makefile.in
  79754. --- uClibc-0.9.33.2/libc/unistd/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  79755. +++ uClibc/libc/unistd/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  79756. @@ -10,39 +10,21 @@
  79757. UNISTD_DIR := $(top_srcdir)libc/unistd
  79758. UNISTD_OUT := $(top_builddir)libc/unistd
  79759. -CSRC := $(notdir $(wildcard $(UNISTD_DIR)/*.c))
  79760. -# multi source
  79761. -CSRC := $(filter-out exec.c,$(CSRC))
  79762. -
  79763. -ifeq ($(ARCH_USE_MMU),y)
  79764. -CSRC := $(filter-out __exec_alloc.c,$(CSRC))
  79765. -endif
  79766. -
  79767. -ifeq ($(UCLIBC_HAS_GNU_GETOPT),y)
  79768. -CSRC := $(filter-out getopt-susv3.c getopt_long-simple.c,$(CSRC))
  79769. -else
  79770. -CSRC := $(filter-out getopt.c,$(CSRC))
  79771. -ifneq ($(UCLIBC_HAS_GETOPT_LONG),y)
  79772. -CSRC := $(filter-out getopt_long-simple.c,$(CSRC))
  79773. -endif
  79774. -endif
  79775. -
  79776. -ifeq ($(UCLIBC_HAS_GNU_GETSUBOPT),y)
  79777. -CSRC := $(filter-out getsubopt-susv3.c,$(CSRC))
  79778. -else
  79779. -CSRC := $(filter-out getsubopt.c,$(CSRC))
  79780. -endif
  79781. -
  79782. -ifneq ($(UCLIBC_SUSV3_LEGACY),y)
  79783. -CSRC := $(filter-out ualarm.c usleep.c,$(CSRC))
  79784. -endif
  79785. -
  79786. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  79787. -CSRC := $(filter-out sleep.c,$(CSRC))
  79788. -endif
  79789. +CSRC-y := $(notdir $(wildcard $(UNISTD_DIR)/*.c))
  79790. +OMIT-y := exec.c # multi source
  79791. +OMIT-$(ARCH_USE_MMU) += __exec_alloc.c
  79792. +OMIT-$(if $(UCLIBC_SUSV3_LEGACY),,y) += ualarm.c usleep.c
  79793. +#OMIT-$(UCLIBC_HAS_THREADS_NATIVE) += sleep.c
  79794. +
  79795. +# XXX: GNU_GETOPT comes with getopt_long unconditionally, which is wrong
  79796. +GO_LONG := $(if $(UCLIBC_HAS_GNU_GETOPT),getopt_long-simple.c)
  79797. +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETOPT),getopt-susv3.c $(GO_LONG),getopt.c)
  79798. +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),getsubopt-susv3.c,getsubopt.c)
  79799. -UNISTD_SRC := $(patsubst %.c,$(UNISTD_DIR)/%.c,$(CSRC))
  79800. -UNISTD_OBJ := $(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC))
  79801. +CSRC-y := $(filter-out $(OMIT-y),$(CSRC-y))
  79802. +
  79803. +UNISTD_SRC := $(patsubst %.c,$(UNISTD_DIR)/%.c,$(CSRC-y))
  79804. +UNISTD_OBJ := $(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC-y))
  79805. libc-y += $(UNISTD_OBJ)
  79806. diff -Nur uClibc-0.9.33.2/libc/unistd/pathconf.c uClibc/libc/unistd/pathconf.c
  79807. --- uClibc-0.9.33.2/libc/unistd/pathconf.c 2012-05-15 09:20:09.000000000 +0200
  79808. +++ uClibc/libc/unistd/pathconf.c 2014-02-03 12:32:56.000000000 +0100
  79809. @@ -13,9 +13,8 @@
  79810. Lesser General Public License for more details.
  79811. You should have received a copy of the GNU Lesser General Public
  79812. - License along with the GNU C Library; if not, write to the Free
  79813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79814. - 02111-1307 USA. */
  79815. + License along with the GNU C Library; if not, see
  79816. + <http://www.gnu.org/licenses/>. */
  79817. /* pathconf -- adjusted for busybox */
  79818. diff -Nur uClibc-0.9.33.2/libc/unistd/sleep.c uClibc/libc/unistd/sleep.c
  79819. --- uClibc-0.9.33.2/libc/unistd/sleep.c 2012-05-15 09:20:09.000000000 +0200
  79820. +++ uClibc/libc/unistd/sleep.c 2014-02-03 12:32:56.000000000 +0100
  79821. @@ -15,8 +15,7 @@
  79822. You should have received a copy of the GNU Library General Public
  79823. License along with the GNU C Library; see the file COPYING.LIB. If not,
  79824. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  79825. - Boston, MA 02111-1307, USA. */
  79826. + see <http://www.gnu.org/licenses/>. */
  79827. #include <errno.h>
  79828. #include <time.h>
  79829. @@ -99,6 +98,7 @@
  79830. /* This is not necessary but some buggy programs depend on this. */
  79831. if (seconds == 0) {
  79832. # ifdef CANCELLATION_P
  79833. + int cancelhandling;
  79834. CANCELLATION_P (THREAD_SELF);
  79835. # endif
  79836. return 0;
  79837. diff -Nur uClibc-0.9.33.2/libc/unistd/sysconf.c uClibc/libc/unistd/sysconf.c
  79838. --- uClibc-0.9.33.2/libc/unistd/sysconf.c 2012-05-15 09:20:09.000000000 +0200
  79839. +++ uClibc/libc/unistd/sysconf.c 2014-02-03 12:32:56.000000000 +0100
  79840. @@ -14,11 +14,11 @@
  79841. You should have received a copy of the GNU Library General Public
  79842. License along with the GNU C Library; see the file COPYING.LIB. If not,
  79843. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  79844. - Boston, MA 02111-1307, USA. */
  79845. + see <http://www.gnu.org/licenses/>. */
  79846. #define _XOPEN_SOURCE 500
  79847. #include <features.h>
  79848. +#include <ctype.h>
  79849. #include <errno.h>
  79850. #include <limits.h>
  79851. #include <grp.h>
  79852. @@ -981,20 +981,9 @@
  79853. #endif
  79854. case _SC_MONOTONIC_CLOCK:
  79855. -#ifdef __NR_clock_getres
  79856. - /* Check using the clock_getres system call. */
  79857. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  79858. - {
  79859. - struct timespec ts;
  79860. - INTERNAL_SYSCALL_DECL (err);
  79861. - int r;
  79862. - r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
  79863. - return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : _POSIX_VERSION;
  79864. - }
  79865. -# elif defined __UCLIBC_HAS_REALTIME__
  79866. +#if defined __UCLIBC_HAS_REALTIME__ && defined __NR_clock_getres
  79867. if (clock_getres(CLOCK_MONOTONIC, NULL) >= 0)
  79868. return _POSIX_VERSION;
  79869. -# endif
  79870. #endif
  79871. RETURN_NEG_1;
  79872. diff -Nur uClibc-0.9.33.2/libcrypt/crypt.c uClibc/libcrypt/crypt.c
  79873. --- uClibc-0.9.33.2/libcrypt/crypt.c 2012-05-15 09:20:09.000000000 +0200
  79874. +++ uClibc/libcrypt/crypt.c 2014-02-03 12:32:56.000000000 +0100
  79875. @@ -5,7 +5,6 @@
  79876. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  79877. */
  79878. -#define __FORCE_GLIBC
  79879. #include <unistd.h>
  79880. #include <crypt.h>
  79881. #include "libcrypt.h"
  79882. diff -Nur uClibc-0.9.33.2/libcrypt/crypt_stub.c uClibc/libcrypt/crypt_stub.c
  79883. --- uClibc-0.9.33.2/libcrypt/crypt_stub.c 2012-05-15 09:20:09.000000000 +0200
  79884. +++ uClibc/libcrypt/crypt_stub.c 2014-02-03 12:32:56.000000000 +0100
  79885. @@ -5,7 +5,6 @@
  79886. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  79887. */
  79888. -#define __FORCE_GLIBC
  79889. #include <crypt.h>
  79890. #include <unistd.h>
  79891. #include "libcrypt.h"
  79892. diff -Nur uClibc-0.9.33.2/libcrypt/des.c uClibc/libcrypt/des.c
  79893. --- uClibc-0.9.33.2/libcrypt/des.c 2012-05-15 09:20:09.000000000 +0200
  79894. +++ uClibc/libcrypt/des.c 2014-02-03 12:32:56.000000000 +0100
  79895. @@ -56,7 +56,6 @@
  79896. * alignment).
  79897. */
  79898. -#define __FORCE_GLIBC
  79899. #include <sys/cdefs.h>
  79900. #include <sys/types.h>
  79901. #include <sys/param.h>
  79902. diff -Nur uClibc-0.9.33.2/libcrypt/sha256.c uClibc/libcrypt/sha256.c
  79903. --- uClibc-0.9.33.2/libcrypt/sha256.c 2012-05-15 09:20:09.000000000 +0200
  79904. +++ uClibc/libcrypt/sha256.c 2014-02-03 12:32:56.000000000 +0100
  79905. @@ -14,9 +14,8 @@
  79906. Lesser General Public License for more details.
  79907. You should have received a copy of the GNU Lesser General Public
  79908. - License along with the GNU C Library; if not, write to the Free
  79909. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79910. - 02111-1307 USA. */
  79911. + License along with the GNU C Library; if not, see
  79912. + <http://www.gnu.org/licenses/>. */
  79913. /* Written by Ulrich Drepper <drepper@redhat.com>, 2007. */
  79914. diff -Nur uClibc-0.9.33.2/libcrypt/sha256-crypt.c uClibc/libcrypt/sha256-crypt.c
  79915. --- uClibc-0.9.33.2/libcrypt/sha256-crypt.c 2012-05-15 09:20:09.000000000 +0200
  79916. +++ uClibc/libcrypt/sha256-crypt.c 2014-02-03 12:32:56.000000000 +0100
  79917. @@ -14,9 +14,8 @@
  79918. Lesser General Public License for more details.
  79919. You should have received a copy of the GNU Lesser General Public
  79920. - License along with the GNU C Library; if not, write to the Free
  79921. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79922. - 02111-1307 USA. */
  79923. + License along with the GNU C Library; if not, see
  79924. + <http://www.gnu.org/licenses/>. */
  79925. #include <assert.h>
  79926. #include <errno.h>
  79927. diff -Nur uClibc-0.9.33.2/libcrypt/sha256.h uClibc/libcrypt/sha256.h
  79928. --- uClibc-0.9.33.2/libcrypt/sha256.h 2012-05-15 09:20:09.000000000 +0200
  79929. +++ uClibc/libcrypt/sha256.h 2014-02-03 12:32:56.000000000 +0100
  79930. @@ -14,9 +14,8 @@
  79931. Lesser General Public License for more details.
  79932. You should have received a copy of the GNU Lesser General Public
  79933. - License along with the GNU C Library; if not, write to the Free
  79934. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79935. - 02111-1307 USA. */
  79936. + License along with the GNU C Library; if not, see
  79937. + <http://www.gnu.org/licenses/>. */
  79938. #ifndef _SHA256_H
  79939. #define _SHA256_H 1
  79940. diff -Nur uClibc-0.9.33.2/libcrypt/sha512.c uClibc/libcrypt/sha512.c
  79941. --- uClibc-0.9.33.2/libcrypt/sha512.c 2012-05-15 09:20:09.000000000 +0200
  79942. +++ uClibc/libcrypt/sha512.c 2014-02-03 12:32:56.000000000 +0100
  79943. @@ -14,9 +14,8 @@
  79944. Lesser General Public License for more details.
  79945. You should have received a copy of the GNU Lesser General Public
  79946. - License along with the GNU C Library; if not, write to the Free
  79947. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79948. - 02111-1307 USA. */
  79949. + License along with the GNU C Library; if not, see
  79950. + <http://www.gnu.org/licenses/>. */
  79951. /* Written by Ulrich Drepper <drepper@redhat.com>, 2007. */
  79952. diff -Nur uClibc-0.9.33.2/libcrypt/sha512-crypt.c uClibc/libcrypt/sha512-crypt.c
  79953. --- uClibc-0.9.33.2/libcrypt/sha512-crypt.c 2012-05-15 09:20:09.000000000 +0200
  79954. +++ uClibc/libcrypt/sha512-crypt.c 2014-02-03 12:32:56.000000000 +0100
  79955. @@ -14,9 +14,8 @@
  79956. Lesser General Public License for more details.
  79957. You should have received a copy of the GNU Lesser General Public
  79958. - License along with the GNU C Library; if not, write to the Free
  79959. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79960. - 02111-1307 USA. */
  79961. + License along with the GNU C Library; if not, see
  79962. + <http://www.gnu.org/licenses/>. */
  79963. #include <assert.h>
  79964. #include <errno.h>
  79965. diff -Nur uClibc-0.9.33.2/libcrypt/sha512.h uClibc/libcrypt/sha512.h
  79966. --- uClibc-0.9.33.2/libcrypt/sha512.h 2012-05-15 09:20:09.000000000 +0200
  79967. +++ uClibc/libcrypt/sha512.h 2014-02-03 12:32:56.000000000 +0100
  79968. @@ -14,9 +14,8 @@
  79969. Lesser General Public License for more details.
  79970. You should have received a copy of the GNU Lesser General Public
  79971. - License along with the GNU C Library; if not, write to the Free
  79972. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79973. - 02111-1307 USA. */
  79974. + License along with the GNU C Library; if not, see
  79975. + <http://www.gnu.org/licenses/>. */
  79976. #ifndef _SHA512_H
  79977. #define _SHA512_H 1
  79978. diff -Nur uClibc-0.9.33.2/libm/carg.c uClibc/libm/carg.c
  79979. --- uClibc-0.9.33.2/libm/carg.c 2012-05-15 09:20:09.000000000 +0200
  79980. +++ uClibc/libm/carg.c 2014-02-03 12:32:56.000000000 +0100
  79981. @@ -14,9 +14,8 @@
  79982. Lesser General Public License for more details.
  79983. You should have received a copy of the GNU Lesser General Public
  79984. - License along with the GNU C Library; if not, write to the Free
  79985. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79986. - 02111-1307 USA. */
  79987. + License along with the GNU C Library; if not, see
  79988. + <http://www.gnu.org/licenses/>. */
  79989. #include <complex.h>
  79990. #include <math.h>
  79991. diff -Nur uClibc-0.9.33.2/libm/e_acos.c uClibc/libm/e_acos.c
  79992. --- uClibc-0.9.33.2/libm/e_acos.c 2012-05-15 09:20:09.000000000 +0200
  79993. +++ uClibc/libm/e_acos.c 2014-02-03 12:32:56.000000000 +0100
  79994. @@ -52,7 +52,7 @@
  79995. qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
  79996. qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
  79997. -double attribute_hidden __ieee754_acos(double x)
  79998. +double __ieee754_acos(double x)
  79999. {
  80000. double z,p,q,r,w,s,c,df;
  80001. int32_t hx,ix;
  80002. diff -Nur uClibc-0.9.33.2/libm/e_acosh.c uClibc/libm/e_acosh.c
  80003. --- uClibc-0.9.33.2/libm/e_acosh.c 2012-05-15 09:20:09.000000000 +0200
  80004. +++ uClibc/libm/e_acosh.c 2014-02-03 12:32:56.000000000 +0100
  80005. @@ -30,7 +30,7 @@
  80006. one = 1.0,
  80007. ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */
  80008. -double attribute_hidden __ieee754_acosh(double x)
  80009. +double __ieee754_acosh(double x)
  80010. {
  80011. double t;
  80012. int32_t hx;
  80013. diff -Nur uClibc-0.9.33.2/libm/e_asin.c uClibc/libm/e_asin.c
  80014. --- uClibc-0.9.33.2/libm/e_asin.c 2012-05-15 09:20:09.000000000 +0200
  80015. +++ uClibc/libm/e_asin.c 2014-02-03 12:32:56.000000000 +0100
  80016. @@ -60,7 +60,7 @@
  80017. qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
  80018. qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
  80019. -double attribute_hidden __ieee754_asin(double x)
  80020. +double __ieee754_asin(double x)
  80021. {
  80022. double t=0.0,w,p,q,c,r,s;
  80023. int32_t hx,ix;
  80024. diff -Nur uClibc-0.9.33.2/libm/e_atan2.c uClibc/libm/e_atan2.c
  80025. --- uClibc-0.9.33.2/libm/e_atan2.c 2012-05-15 09:20:09.000000000 +0200
  80026. +++ uClibc/libm/e_atan2.c 2014-02-03 12:32:56.000000000 +0100
  80027. @@ -47,7 +47,7 @@
  80028. pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
  80029. pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
  80030. -double attribute_hidden __ieee754_atan2(double y, double x)
  80031. +double __ieee754_atan2(double y, double x)
  80032. {
  80033. double z;
  80034. int32_t k,m,hx,hy,ix,iy;
  80035. diff -Nur uClibc-0.9.33.2/libm/e_atanh.c uClibc/libm/e_atanh.c
  80036. --- uClibc-0.9.33.2/libm/e_atanh.c 2012-05-15 09:20:09.000000000 +0200
  80037. +++ uClibc/libm/e_atanh.c 2014-02-03 12:32:56.000000000 +0100
  80038. @@ -34,7 +34,7 @@
  80039. static const double zero = 0.0;
  80040. -double attribute_hidden __ieee754_atanh(double x)
  80041. +double __ieee754_atanh(double x)
  80042. {
  80043. double t;
  80044. int32_t hx,ix;
  80045. diff -Nur uClibc-0.9.33.2/libm/e_cosh.c uClibc/libm/e_cosh.c
  80046. --- uClibc-0.9.33.2/libm/e_cosh.c 2012-05-15 09:20:09.000000000 +0200
  80047. +++ uClibc/libm/e_cosh.c 2014-02-03 12:32:56.000000000 +0100
  80048. @@ -35,7 +35,7 @@
  80049. static const double one = 1.0, half=0.5, huge = 1.0e300;
  80050. -double attribute_hidden __ieee754_cosh(double x)
  80051. +double __ieee754_cosh(double x)
  80052. {
  80053. double t,w;
  80054. int32_t ix;
  80055. diff -Nur uClibc-0.9.33.2/libm/e_exp.c uClibc/libm/e_exp.c
  80056. --- uClibc-0.9.33.2/libm/e_exp.c 2012-05-15 09:20:09.000000000 +0200
  80057. +++ uClibc/libm/e_exp.c 2014-02-03 12:32:56.000000000 +0100
  80058. @@ -93,7 +93,7 @@
  80059. P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
  80060. P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
  80061. -double attribute_hidden __ieee754_exp(double x) /* default IEEE double exp */
  80062. +double __ieee754_exp(double x) /* default IEEE double exp */
  80063. {
  80064. double y;
  80065. double hi = 0.0;
  80066. diff -Nur uClibc-0.9.33.2/libm/e_fmod.c uClibc/libm/e_fmod.c
  80067. --- uClibc-0.9.33.2/libm/e_fmod.c 2012-05-15 09:20:09.000000000 +0200
  80068. +++ uClibc/libm/e_fmod.c 2014-02-03 12:32:56.000000000 +0100
  80069. @@ -20,7 +20,7 @@
  80070. static const double one = 1.0, Zero[] = {0.0, -0.0,};
  80071. -double attribute_hidden __ieee754_fmod(double x, double y)
  80072. +double __ieee754_fmod(double x, double y)
  80073. {
  80074. int32_t n,hx,hy,hz,ix,iy,sx,i;
  80075. u_int32_t lx,ly,lz;
  80076. diff -Nur uClibc-0.9.33.2/libm/e_hypot.c uClibc/libm/e_hypot.c
  80077. --- uClibc-0.9.33.2/libm/e_hypot.c 2012-05-15 09:20:09.000000000 +0200
  80078. +++ uClibc/libm/e_hypot.c 2014-02-03 12:32:56.000000000 +0100
  80079. @@ -44,9 +44,9 @@
  80080. #include "math.h"
  80081. #include "math_private.h"
  80082. -double attribute_hidden __ieee754_hypot(double x, double y)
  80083. +double __ieee754_hypot(double x, double y)
  80084. {
  80085. - double a=x,b=y,t1,t2,y1,y2,w;
  80086. + double a=x,b=y,t1,t2,_y1,y2,w;
  80087. int32_t j,k,ha,hb;
  80088. GET_HIGH_WORD(ha,x);
  80089. @@ -100,13 +100,13 @@
  80090. w = __ieee754_sqrt(t1*t1-(b*(-b)-t2*(a+t1)));
  80091. } else {
  80092. a = a+a;
  80093. - y1 = 0;
  80094. - SET_HIGH_WORD(y1,hb);
  80095. - y2 = b - y1;
  80096. + _y1 = 0;
  80097. + SET_HIGH_WORD(_y1,hb);
  80098. + y2 = b - _y1;
  80099. t1 = 0;
  80100. SET_HIGH_WORD(t1,ha+0x00100000);
  80101. t2 = a - t1;
  80102. - w = __ieee754_sqrt(t1*y1-(w*(-w)-(t1*y2+t2*b)));
  80103. + w = __ieee754_sqrt(t1*_y1-(w*(-w)-(t1*y2+t2*b)));
  80104. }
  80105. if(k!=0) {
  80106. u_int32_t high;
  80107. diff -Nur uClibc-0.9.33.2/libm/e_j0.c uClibc/libm/e_j0.c
  80108. --- uClibc-0.9.33.2/libm/e_j0.c 2012-05-15 09:20:09.000000000 +0200
  80109. +++ uClibc/libm/e_j0.c 2014-02-03 12:32:56.000000000 +0100
  80110. @@ -76,7 +76,7 @@
  80111. static const double zero = 0.0;
  80112. -double attribute_hidden __ieee754_j0(double x)
  80113. +double __ieee754_j0(double x)
  80114. {
  80115. double z, s,c,ss,cc,r,u,v;
  80116. int32_t hx,ix;
  80117. @@ -153,7 +153,7 @@
  80118. v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
  80119. v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */
  80120. -double attribute_hidden __ieee754_y0(double x)
  80121. +double __ieee754_y0(double x)
  80122. {
  80123. double z, s,c,ss,cc,u,v;
  80124. int32_t hx,ix,lx;
  80125. diff -Nur uClibc-0.9.33.2/libm/e_j1.c uClibc/libm/e_j1.c
  80126. --- uClibc-0.9.33.2/libm/e_j1.c 2012-05-15 09:20:09.000000000 +0200
  80127. +++ uClibc/libm/e_j1.c 2014-02-03 12:32:56.000000000 +0100
  80128. @@ -77,7 +77,7 @@
  80129. static const double zero = 0.0;
  80130. -double attribute_hidden __ieee754_j1(double x)
  80131. +double __ieee754_j1(double x)
  80132. {
  80133. double z, s,c,ss,cc,r,u,v,y;
  80134. int32_t hx,ix;
  80135. @@ -150,7 +150,7 @@
  80136. 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
  80137. };
  80138. -double attribute_hidden __ieee754_y1(double x)
  80139. +double __ieee754_y1(double x)
  80140. {
  80141. double z, s,c,ss,cc,u,v;
  80142. int32_t hx,ix,lx;
  80143. diff -Nur uClibc-0.9.33.2/libm/e_jn.c uClibc/libm/e_jn.c
  80144. --- uClibc-0.9.33.2/libm/e_jn.c 2012-05-15 09:20:09.000000000 +0200
  80145. +++ uClibc/libm/e_jn.c 2014-02-03 12:32:56.000000000 +0100
  80146. @@ -45,7 +45,7 @@
  80147. static const double zero = 0.00000000000000000000e+00;
  80148. -double attribute_hidden __ieee754_jn(int n, double x)
  80149. +double __ieee754_jn(int n, double x)
  80150. {
  80151. int32_t i,hx,ix,lx, sgn;
  80152. double a, b, temp=0, di;
  80153. @@ -217,7 +217,7 @@
  80154. strong_alias(__ieee754_jn, jn)
  80155. #endif
  80156. -double attribute_hidden __ieee754_yn(int n, double x)
  80157. +double __ieee754_yn(int n, double x)
  80158. {
  80159. int32_t i,hx,ix,lx;
  80160. int32_t sign;
  80161. diff -Nur uClibc-0.9.33.2/libm/e_lgamma_r.c uClibc/libm/e_lgamma_r.c
  80162. --- uClibc-0.9.33.2/libm/e_lgamma_r.c 2012-05-15 09:20:09.000000000 +0200
  80163. +++ uClibc/libm/e_lgamma_r.c 2014-02-03 12:32:56.000000000 +0100
  80164. @@ -197,7 +197,7 @@
  80165. return -y;
  80166. }
  80167. -double attribute_hidden __ieee754_lgamma_r(double x, int *signgamp)
  80168. +double __ieee754_lgamma_r(double x, int *signgamp)
  80169. {
  80170. double t,y,z,nadj=0,p,p1,p2,p3,q,r,w;
  80171. int i,hx,lx,ix;
  80172. @@ -314,11 +314,12 @@
  80173. #else
  80174. strong_alias(__ieee754_lgamma_r, lgamma_r)
  80175. #endif
  80176. +libm_hidden_def(lgamma_r)
  80177. /* __ieee754_lgamma(x)
  80178. * Return the logarithm of the Gamma function of x.
  80179. */
  80180. -double attribute_hidden __ieee754_lgamma(double x)
  80181. +double __ieee754_lgamma(double x)
  80182. {
  80183. return __ieee754_lgamma_r(x, &signgam);
  80184. }
  80185. @@ -358,6 +359,7 @@
  80186. strong_alias(__ieee754_lgamma_r, gamma_r)
  80187. strong_alias(__ieee754_lgamma, gamma)
  80188. #endif
  80189. +libm_hidden_def(gamma)
  80190. /* double tgamma(double x)
  80191. diff -Nur uClibc-0.9.33.2/libm/e_log10.c uClibc/libm/e_log10.c
  80192. --- uClibc-0.9.33.2/libm/e_log10.c 2012-05-15 09:20:09.000000000 +0200
  80193. +++ uClibc/libm/e_log10.c 2014-02-03 12:32:56.000000000 +0100
  80194. @@ -53,7 +53,7 @@
  80195. static const double zero = 0.0;
  80196. -double attribute_hidden __ieee754_log10(double x)
  80197. +double __ieee754_log10(double x)
  80198. {
  80199. double y,z;
  80200. int32_t i,k,hx;
  80201. diff -Nur uClibc-0.9.33.2/libm/e_log2.c uClibc/libm/e_log2.c
  80202. --- uClibc-0.9.33.2/libm/e_log2.c 2012-05-15 09:20:09.000000000 +0200
  80203. +++ uClibc/libm/e_log2.c 2014-02-03 12:32:56.000000000 +0100
  80204. @@ -116,3 +116,4 @@
  80205. }
  80206. }
  80207. strong_alias(__ieee754_log2,log2)
  80208. +libm_hidden_def(log2)
  80209. diff -Nur uClibc-0.9.33.2/libm/e_log.c uClibc/libm/e_log.c
  80210. --- uClibc-0.9.33.2/libm/e_log.c 2012-05-15 09:20:09.000000000 +0200
  80211. +++ uClibc/libm/e_log.c 2014-02-03 12:32:56.000000000 +0100
  80212. @@ -77,7 +77,7 @@
  80213. static const double zero = 0.0;
  80214. -double attribute_hidden __ieee754_log(double x)
  80215. +double __ieee754_log(double x)
  80216. {
  80217. double hfsq,f,s,z,R,w,t1,t2,dk;
  80218. int32_t k,hx,i,j;
  80219. diff -Nur uClibc-0.9.33.2/libm/e_pow.c uClibc/libm/e_pow.c
  80220. --- uClibc-0.9.33.2/libm/e_pow.c 2012-05-15 09:20:09.000000000 +0200
  80221. +++ uClibc/libm/e_pow.c 2014-02-03 12:32:56.000000000 +0100
  80222. @@ -91,10 +91,10 @@
  80223. ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
  80224. ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
  80225. -double attribute_hidden __ieee754_pow(double x, double y)
  80226. +double __ieee754_pow(double x, double y)
  80227. {
  80228. double z,ax,z_h,z_l,p_h,p_l;
  80229. - double y1,t1,t2,r,s,t,u,v,w;
  80230. + double _y1,t1,t2,r,s,t,u,v,w;
  80231. int32_t i,j,k,yisint,n;
  80232. int32_t hx,hy,ix,iy;
  80233. u_int32_t lx,ly;
  80234. @@ -249,10 +249,10 @@
  80235. s = -one;/* (-ve)**(odd int) */
  80236. /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
  80237. - y1 = y;
  80238. - SET_LOW_WORD(y1,0);
  80239. - p_l = (y-y1)*t1+y*t2;
  80240. - p_h = y1*t1;
  80241. + _y1 = y;
  80242. + SET_LOW_WORD(_y1,0);
  80243. + p_l = (y-_y1)*t1+y*t2;
  80244. + p_h = _y1*t1;
  80245. z = p_l+p_h;
  80246. EXTRACT_WORDS(j,i,z);
  80247. if (j>=0x40900000) { /* z >= 1024 */
  80248. diff -Nur uClibc-0.9.33.2/libm/e_remainder.c uClibc/libm/e_remainder.c
  80249. --- uClibc-0.9.33.2/libm/e_remainder.c 2012-05-15 09:20:09.000000000 +0200
  80250. +++ uClibc/libm/e_remainder.c 2014-02-03 12:32:56.000000000 +0100
  80251. @@ -23,7 +23,7 @@
  80252. static const double zero = 0.0;
  80253. -double attribute_hidden __ieee754_remainder(double x, double p)
  80254. +double __ieee754_remainder(double x, double p)
  80255. {
  80256. int32_t hx,hp;
  80257. u_int32_t sx,lx,lp;
  80258. diff -Nur uClibc-0.9.33.2/libm/e_rem_pio2.c uClibc/libm/e_rem_pio2.c
  80259. --- uClibc-0.9.33.2/libm/e_rem_pio2.c 2012-05-15 09:20:09.000000000 +0200
  80260. +++ uClibc/libm/e_rem_pio2.c 2014-02-03 12:32:56.000000000 +0100
  80261. @@ -66,7 +66,7 @@
  80262. pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
  80263. pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
  80264. -int32_t attribute_hidden __ieee754_rem_pio2(double x, double *y)
  80265. +int32_t __ieee754_rem_pio2(double x, double *y)
  80266. {
  80267. double z=0.0,w,t,r,fn;
  80268. double tx[3];
  80269. diff -Nur uClibc-0.9.33.2/libm/e_scalb.c uClibc/libm/e_scalb.c
  80270. --- uClibc-0.9.33.2/libm/e_scalb.c 2012-05-15 09:20:09.000000000 +0200
  80271. +++ uClibc/libm/e_scalb.c 2014-02-03 12:32:56.000000000 +0100
  80272. @@ -19,7 +19,7 @@
  80273. #include "math_private.h"
  80274. #include <errno.h>
  80275. -double attribute_hidden __ieee754_scalb(double x, double fn)
  80276. +double __ieee754_scalb(double x, double fn)
  80277. {
  80278. if (isnan(x)||isnan(fn)) return x*fn;
  80279. if (!isfinite(fn)) {
  80280. @@ -55,5 +55,6 @@
  80281. #else
  80282. strong_alias(__ieee754_scalb, scalb)
  80283. #endif
  80284. +libm_hidden_def(scalb)
  80285. #endif /* UCLIBC_SUSV3_LEGACY */
  80286. diff -Nur uClibc-0.9.33.2/libm/e_sinh.c uClibc/libm/e_sinh.c
  80287. --- uClibc-0.9.33.2/libm/e_sinh.c 2012-05-15 09:20:09.000000000 +0200
  80288. +++ uClibc/libm/e_sinh.c 2014-02-03 12:32:56.000000000 +0100
  80289. @@ -32,7 +32,7 @@
  80290. static const double one = 1.0, shuge = 1.0e307;
  80291. -double attribute_hidden __ieee754_sinh(double x)
  80292. +double __ieee754_sinh(double x)
  80293. {
  80294. double t,w,h;
  80295. int32_t ix,jx;
  80296. diff -Nur uClibc-0.9.33.2/libm/e_sqrt.c uClibc/libm/e_sqrt.c
  80297. --- uClibc-0.9.33.2/libm/e_sqrt.c 2012-05-15 09:20:09.000000000 +0200
  80298. +++ uClibc/libm/e_sqrt.c 2014-02-03 12:32:56.000000000 +0100
  80299. @@ -84,7 +84,7 @@
  80300. static const double one = 1.0, tiny = 1.0e-300;
  80301. -double attribute_hidden __ieee754_sqrt(double x)
  80302. +double __ieee754_sqrt(double x)
  80303. {
  80304. double z;
  80305. int32_t sign = (int)0x80000000;
  80306. diff -Nur uClibc-0.9.33.2/libm/i386/fclrexcpt.c uClibc/libm/i386/fclrexcpt.c
  80307. --- uClibc-0.9.33.2/libm/i386/fclrexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80308. +++ uClibc/libm/i386/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80309. @@ -14,9 +14,8 @@
  80310. Lesser General Public License for more details.
  80311. You should have received a copy of the GNU Lesser General Public
  80312. - License along with the GNU C Library; if not, write to the Free
  80313. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80314. - 02111-1307 USA. */
  80315. + License along with the GNU C Library; if not, see
  80316. + <http://www.gnu.org/licenses/>. */
  80317. #include <fenv.h>
  80318. #include <unistd.h>
  80319. diff -Nur uClibc-0.9.33.2/libm/i386/fedisblxcpt.c uClibc/libm/i386/fedisblxcpt.c
  80320. --- uClibc-0.9.33.2/libm/i386/fedisblxcpt.c 2012-05-15 09:20:09.000000000 +0200
  80321. +++ uClibc/libm/i386/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80322. @@ -14,9 +14,8 @@
  80323. Lesser General Public License for more details.
  80324. You should have received a copy of the GNU Lesser General Public
  80325. - License along with the GNU C Library; if not, write to the Free
  80326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80327. - 02111-1307 USA. */
  80328. + License along with the GNU C Library; if not, see
  80329. + <http://www.gnu.org/licenses/>. */
  80330. #include <fenv.h>
  80331. #include <unistd.h>
  80332. diff -Nur uClibc-0.9.33.2/libm/i386/feenablxcpt.c uClibc/libm/i386/feenablxcpt.c
  80333. --- uClibc-0.9.33.2/libm/i386/feenablxcpt.c 2012-05-15 09:20:09.000000000 +0200
  80334. +++ uClibc/libm/i386/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80335. @@ -14,9 +14,8 @@
  80336. Lesser General Public License for more details.
  80337. You should have received a copy of the GNU Lesser General Public
  80338. - License along with the GNU C Library; if not, write to the Free
  80339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80340. - 02111-1307 USA. */
  80341. + License along with the GNU C Library; if not, see
  80342. + <http://www.gnu.org/licenses/>. */
  80343. #include <fenv.h>
  80344. #include <unistd.h>
  80345. diff -Nur uClibc-0.9.33.2/libm/i386/fegetenv.c uClibc/libm/i386/fegetenv.c
  80346. --- uClibc-0.9.33.2/libm/i386/fegetenv.c 2012-05-15 09:20:09.000000000 +0200
  80347. +++ uClibc/libm/i386/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  80348. @@ -14,9 +14,8 @@
  80349. Lesser General Public License for more details.
  80350. You should have received a copy of the GNU Lesser General Public
  80351. - License along with the GNU C Library; if not, write to the Free
  80352. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80353. - 02111-1307 USA. */
  80354. + License along with the GNU C Library; if not, see
  80355. + <http://www.gnu.org/licenses/>. */
  80356. #include <fenv.h>
  80357. diff -Nur uClibc-0.9.33.2/libm/i386/fegetexcept.c uClibc/libm/i386/fegetexcept.c
  80358. --- uClibc-0.9.33.2/libm/i386/fegetexcept.c 2012-05-15 09:20:09.000000000 +0200
  80359. +++ uClibc/libm/i386/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  80360. @@ -14,9 +14,8 @@
  80361. Lesser General Public License for more details.
  80362. You should have received a copy of the GNU Lesser General Public
  80363. - License along with the GNU C Library; if not, write to the Free
  80364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80365. - 02111-1307 USA. */
  80366. + License along with the GNU C Library; if not, see
  80367. + <http://www.gnu.org/licenses/>. */
  80368. #include <fenv.h>
  80369. diff -Nur uClibc-0.9.33.2/libm/i386/fegetround.c uClibc/libm/i386/fegetround.c
  80370. --- uClibc-0.9.33.2/libm/i386/fegetround.c 2012-05-15 09:20:09.000000000 +0200
  80371. +++ uClibc/libm/i386/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  80372. @@ -14,9 +14,8 @@
  80373. Lesser General Public License for more details.
  80374. You should have received a copy of the GNU Lesser General Public
  80375. - License along with the GNU C Library; if not, write to the Free
  80376. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80377. - 02111-1307 USA. */
  80378. + License along with the GNU C Library; if not, see
  80379. + <http://www.gnu.org/licenses/>. */
  80380. #include <fenv.h>
  80381. diff -Nur uClibc-0.9.33.2/libm/i386/feholdexcpt.c uClibc/libm/i386/feholdexcpt.c
  80382. --- uClibc-0.9.33.2/libm/i386/feholdexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80383. +++ uClibc/libm/i386/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80384. @@ -15,9 +15,8 @@
  80385. Lesser General Public License for more details.
  80386. You should have received a copy of the GNU Lesser General Public
  80387. - License along with the GNU C Library; if not, write to the Free
  80388. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80389. - 02111-1307 USA. */
  80390. + License along with the GNU C Library; if not, see
  80391. + <http://www.gnu.org/licenses/>. */
  80392. #include <fenv.h>
  80393. #include <unistd.h>
  80394. diff -Nur uClibc-0.9.33.2/libm/i386/fesetenv.c uClibc/libm/i386/fesetenv.c
  80395. --- uClibc-0.9.33.2/libm/i386/fesetenv.c 2012-05-15 09:20:09.000000000 +0200
  80396. +++ uClibc/libm/i386/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  80397. @@ -14,9 +14,8 @@
  80398. Lesser General Public License for more details.
  80399. You should have received a copy of the GNU Lesser General Public
  80400. - License along with the GNU C Library; if not, write to the Free
  80401. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80402. - 02111-1307 USA. */
  80403. + License along with the GNU C Library; if not, see
  80404. + <http://www.gnu.org/licenses/>. */
  80405. #include <fenv.h>
  80406. #include <assert.h>
  80407. diff -Nur uClibc-0.9.33.2/libm/i386/fesetround.c uClibc/libm/i386/fesetround.c
  80408. --- uClibc-0.9.33.2/libm/i386/fesetround.c 2012-05-15 09:20:09.000000000 +0200
  80409. +++ uClibc/libm/i386/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  80410. @@ -14,9 +14,8 @@
  80411. Lesser General Public License for more details.
  80412. You should have received a copy of the GNU Lesser General Public
  80413. - License along with the GNU C Library; if not, write to the Free
  80414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80415. - 02111-1307 USA. */
  80416. + License along with the GNU C Library; if not, see
  80417. + <http://www.gnu.org/licenses/>. */
  80418. #include <fenv.h>
  80419. #include <unistd.h>
  80420. diff -Nur uClibc-0.9.33.2/libm/i386/feupdateenv.c uClibc/libm/i386/feupdateenv.c
  80421. --- uClibc-0.9.33.2/libm/i386/feupdateenv.c 2012-05-15 09:20:09.000000000 +0200
  80422. +++ uClibc/libm/i386/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  80423. @@ -14,9 +14,8 @@
  80424. Lesser General Public License for more details.
  80425. You should have received a copy of the GNU Lesser General Public
  80426. - License along with the GNU C Library; if not, write to the Free
  80427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80428. - 02111-1307 USA. */
  80429. + License along with the GNU C Library; if not, see
  80430. + <http://www.gnu.org/licenses/>. */
  80431. #include <fenv.h>
  80432. #include <unistd.h>
  80433. diff -Nur uClibc-0.9.33.2/libm/i386/fgetexcptflg.c uClibc/libm/i386/fgetexcptflg.c
  80434. --- uClibc-0.9.33.2/libm/i386/fgetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  80435. +++ uClibc/libm/i386/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80436. @@ -14,9 +14,8 @@
  80437. Lesser General Public License for more details.
  80438. You should have received a copy of the GNU Lesser General Public
  80439. - License along with the GNU C Library; if not, write to the Free
  80440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80441. - 02111-1307 USA. */
  80442. + License along with the GNU C Library; if not, see
  80443. + <http://www.gnu.org/licenses/>. */
  80444. #include <fenv.h>
  80445. diff -Nur uClibc-0.9.33.2/libm/i386/fraiseexcpt.c uClibc/libm/i386/fraiseexcpt.c
  80446. --- uClibc-0.9.33.2/libm/i386/fraiseexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80447. +++ uClibc/libm/i386/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80448. @@ -14,9 +14,8 @@
  80449. Lesser General Public License for more details.
  80450. You should have received a copy of the GNU Lesser General Public
  80451. - License along with the GNU C Library; if not, write to the Free
  80452. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80453. - 02111-1307 USA. */
  80454. + License along with the GNU C Library; if not, see
  80455. + <http://www.gnu.org/licenses/>. */
  80456. #include <fenv.h>
  80457. #include <math.h>
  80458. diff -Nur uClibc-0.9.33.2/libm/i386/fsetexcptflg.c uClibc/libm/i386/fsetexcptflg.c
  80459. --- uClibc-0.9.33.2/libm/i386/fsetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  80460. +++ uClibc/libm/i386/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80461. @@ -14,9 +14,8 @@
  80462. Lesser General Public License for more details.
  80463. You should have received a copy of the GNU Lesser General Public
  80464. - License along with the GNU C Library; if not, write to the Free
  80465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80466. - 02111-1307 USA. */
  80467. + License along with the GNU C Library; if not, see
  80468. + <http://www.gnu.org/licenses/>. */
  80469. #include <fenv.h>
  80470. #include <math.h>
  80471. diff -Nur uClibc-0.9.33.2/libm/i386/ftestexcept.c uClibc/libm/i386/ftestexcept.c
  80472. --- uClibc-0.9.33.2/libm/i386/ftestexcept.c 2012-05-15 09:20:09.000000000 +0200
  80473. +++ uClibc/libm/i386/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  80474. @@ -14,9 +14,8 @@
  80475. Lesser General Public License for more details.
  80476. You should have received a copy of the GNU Lesser General Public
  80477. - License along with the GNU C Library; if not, write to the Free
  80478. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80479. - 02111-1307 USA. */
  80480. + License along with the GNU C Library; if not, see
  80481. + <http://www.gnu.org/licenses/>. */
  80482. #include <fenv.h>
  80483. #include <unistd.h>
  80484. diff -Nur uClibc-0.9.33.2/libm/k_cos.c uClibc/libm/k_cos.c
  80485. --- uClibc-0.9.33.2/libm/k_cos.c 2012-05-15 09:20:09.000000000 +0200
  80486. +++ uClibc/libm/k_cos.c 2014-02-03 12:32:56.000000000 +0100
  80487. @@ -56,7 +56,7 @@
  80488. C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
  80489. C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
  80490. -double attribute_hidden __kernel_cos(double x, double y)
  80491. +double __kernel_cos(double x, double y)
  80492. {
  80493. double a,hz,z,r,qx;
  80494. int32_t ix;
  80495. diff -Nur uClibc-0.9.33.2/libm/k_rem_pio2.c uClibc/libm/k_rem_pio2.c
  80496. --- uClibc-0.9.33.2/libm/k_rem_pio2.c 2012-05-15 09:20:09.000000000 +0200
  80497. +++ uClibc/libm/k_rem_pio2.c 2014-02-03 12:32:56.000000000 +0100
  80498. @@ -147,7 +147,7 @@
  80499. two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
  80500. twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
  80501. -int attribute_hidden __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2)
  80502. +int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2)
  80503. {
  80504. int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
  80505. double z,fw,f[20],fq[20],q[20];
  80506. diff -Nur uClibc-0.9.33.2/libm/k_sin.c uClibc/libm/k_sin.c
  80507. --- uClibc-0.9.33.2/libm/k_sin.c 2012-05-15 09:20:09.000000000 +0200
  80508. +++ uClibc/libm/k_sin.c 2014-02-03 12:32:56.000000000 +0100
  80509. @@ -49,7 +49,7 @@
  80510. S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
  80511. S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
  80512. -double attribute_hidden __kernel_sin(double x, double y, int iy)
  80513. +double __kernel_sin(double x, double y, int iy)
  80514. {
  80515. double z,r,v;
  80516. int32_t ix;
  80517. diff -Nur uClibc-0.9.33.2/libm/k_standard.c uClibc/libm/k_standard.c
  80518. --- uClibc-0.9.33.2/libm/k_standard.c 2012-05-15 09:20:09.000000000 +0200
  80519. +++ uClibc/libm/k_standard.c 2014-02-03 12:32:56.000000000 +0100
  80520. @@ -598,6 +598,7 @@
  80521. errno = EDOM;
  80522. }
  80523. break;
  80524. +# ifdef __UCLIBC_SUSV3_LEGACY__
  80525. case 32:
  80526. case 132:
  80527. /* scalb overflow; SVID also returns +-HUGE_VAL */
  80528. @@ -622,6 +623,7 @@
  80529. errno = ERANGE;
  80530. }
  80531. break;
  80532. +# endif
  80533. case 34:
  80534. case 134:
  80535. /* j0(|x|>X_TLOSS) */
  80536. diff -Nur uClibc-0.9.33.2/libm/k_tan.c uClibc/libm/k_tan.c
  80537. --- uClibc-0.9.33.2/libm/k_tan.c 2012-05-15 09:20:09.000000000 +0200
  80538. +++ uClibc/libm/k_tan.c 2014-02-03 12:32:56.000000000 +0100
  80539. @@ -66,7 +66,7 @@
  80540. 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */
  80541. };
  80542. -double attribute_hidden __kernel_tan(double x, double y, int iy)
  80543. +double __kernel_tan(double x, double y, int iy)
  80544. {
  80545. double z,r,v,w,s;
  80546. int32_t ix,hx;
  80547. diff -Nur uClibc-0.9.33.2/libm/metag/fclrexcpt.c uClibc/libm/metag/fclrexcpt.c
  80548. --- uClibc-0.9.33.2/libm/metag/fclrexcpt.c 1970-01-01 01:00:00.000000000 +0100
  80549. +++ uClibc/libm/metag/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80550. @@ -0,0 +1,44 @@
  80551. +/* Clear given exceptions in current floating-point environment.
  80552. + Copyright (C) 2013 Imagination Technologies Ltd.
  80553. + This file is part of the GNU C Library.
  80554. +
  80555. + The GNU C Library is free software; you can redistribute it and/or
  80556. + modify it under the terms of the GNU Lesser General Public
  80557. + License as published by the Free Software Foundation; either
  80558. + version 2.1 of the License, or (at your option) any later version.
  80559. +
  80560. + The GNU C Library is distributed in the hope that it will be useful,
  80561. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80562. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80563. + Lesser General Public License for more details.
  80564. +
  80565. + You should have received a copy of the GNU Lesser General Public
  80566. + License along with the GNU C Library; if not, write to the Free
  80567. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80568. + 02111-1307 USA. */
  80569. +
  80570. +#include <fenv.h>
  80571. +#include <unistd.h>
  80572. +
  80573. +#include "internal.h"
  80574. +
  80575. +int
  80576. +feclearexcept (int excepts)
  80577. +{
  80578. + unsigned int temp;
  80579. +
  80580. + /* Get the current exceptions. */
  80581. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80582. +
  80583. + /* Mask out unsupported bits/exceptions. */
  80584. + excepts &= FE_ALL_EXCEPT;
  80585. +
  80586. + excepts <<= 16;
  80587. +
  80588. + temp &= ~excepts;
  80589. +
  80590. + metag_set_fpu_flags(temp);
  80591. +
  80592. + /* Success. */
  80593. + return 0;
  80594. +}
  80595. diff -Nur uClibc-0.9.33.2/libm/metag/fedisblxcpt.c uClibc/libm/metag/fedisblxcpt.c
  80596. --- uClibc-0.9.33.2/libm/metag/fedisblxcpt.c 1970-01-01 01:00:00.000000000 +0100
  80597. +++ uClibc/libm/metag/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80598. @@ -0,0 +1,40 @@
  80599. +/* Disable floating-point exceptions.
  80600. + Copyright (C) 2013 Imagination Technologies Ltd.
  80601. + This file is part of the GNU C Library.
  80602. +
  80603. + The GNU C Library is free software; you can redistribute it and/or
  80604. + modify it under the terms of the GNU Lesser General Public
  80605. + License as published by the Free Software Foundation; either
  80606. + version 2.1 of the License, or (at your option) any later version.
  80607. +
  80608. + The GNU C Library is distributed in the hope that it will be useful,
  80609. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80610. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80611. + Lesser General Public License for more details.
  80612. +
  80613. + You should have received a copy of the GNU Lesser General Public
  80614. + License along with the GNU C Library; if not, write to the Free
  80615. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80616. + 02111-1307 USA. */
  80617. +
  80618. +#include <fenv.h>
  80619. +#include <unistd.h>
  80620. +
  80621. +#include "internal.h"
  80622. +
  80623. +int
  80624. +fedisableexcept (int excepts)
  80625. +{
  80626. + unsigned int old_exc;
  80627. +
  80628. + /* Get the current control word. */
  80629. + __asm__ ("MOV %0,TXDEFR" : "=r" (old_exc));
  80630. +
  80631. + old_exc &= FE_ALL_EXCEPT;
  80632. +
  80633. + excepts = old_exc & ~excepts;
  80634. +
  80635. + metag_set_fpu_flags(excepts);
  80636. +
  80637. + return old_exc;
  80638. +}
  80639. diff -Nur uClibc-0.9.33.2/libm/metag/feenablxcpt.c uClibc/libm/metag/feenablxcpt.c
  80640. --- uClibc-0.9.33.2/libm/metag/feenablxcpt.c 1970-01-01 01:00:00.000000000 +0100
  80641. +++ uClibc/libm/metag/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80642. @@ -0,0 +1,40 @@
  80643. +/* Enable floating-point exceptions.
  80644. + Copyright (C) 2013 Imagination Technologies Ltd.
  80645. + This file is part of the GNU C Library.
  80646. +
  80647. + The GNU C Library is free software; you can redistribute it and/or
  80648. + modify it under the terms of the GNU Lesser General Public
  80649. + License as published by the Free Software Foundation; either
  80650. + version 2.1 of the License, or (at your option) any later version.
  80651. +
  80652. + The GNU C Library is distributed in the hope that it will be useful,
  80653. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80654. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80655. + Lesser General Public License for more details.
  80656. +
  80657. + You should have received a copy of the GNU Lesser General Public
  80658. + License along with the GNU C Library; if not, write to the Free
  80659. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80660. + 02111-1307 USA. */
  80661. +
  80662. +#include <fenv.h>
  80663. +#include <unistd.h>
  80664. +
  80665. +#include "internal.h"
  80666. +
  80667. +int
  80668. +feenableexcept (int excepts)
  80669. +{
  80670. + unsigned int old_exc;
  80671. +
  80672. + /* Get the current control word. */
  80673. + __asm__ ("MOV %0,TXDEFR" : "=r" (old_exc));
  80674. +
  80675. + old_exc &= FE_ALL_EXCEPT;
  80676. +
  80677. + excepts |= old_exc;
  80678. +
  80679. + metag_set_fpu_flags(excepts);
  80680. +
  80681. + return old_exc;
  80682. +}
  80683. diff -Nur uClibc-0.9.33.2/libm/metag/fegetenv.c uClibc/libm/metag/fegetenv.c
  80684. --- uClibc-0.9.33.2/libm/metag/fegetenv.c 1970-01-01 01:00:00.000000000 +0100
  80685. +++ uClibc/libm/metag/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  80686. @@ -0,0 +1,36 @@
  80687. +/* Store current floating-point environment.
  80688. + Copyright (C) 2013 Imagination Technologies Ltd.
  80689. + This file is part of the GNU C Library.
  80690. +
  80691. + The GNU C Library is free software; you can redistribute it and/or
  80692. + modify it under the terms of the GNU Lesser General Public
  80693. + License as published by the Free Software Foundation; either
  80694. + version 2.1 of the License, or (at your option) any later version.
  80695. +
  80696. + The GNU C Library is distributed in the hope that it will be useful,
  80697. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80698. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80699. + Lesser General Public License for more details.
  80700. +
  80701. + You should have received a copy of the GNU Lesser General Public
  80702. + License along with the GNU C Library; if not, write to the Free
  80703. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80704. + 02111-1307 USA. */
  80705. +
  80706. +#include <fenv.h>
  80707. +
  80708. +int
  80709. +fegetenv (fenv_t *envp)
  80710. +{
  80711. + unsigned int txdefr;
  80712. + unsigned int txmode;
  80713. +
  80714. + __asm__ ("MOV %0,TXDEFR" : "=r" (txdefr));
  80715. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80716. +
  80717. + envp->txdefr = txdefr;
  80718. + envp->txmode = txmode;
  80719. +
  80720. + /* Success. */
  80721. + return 0;
  80722. +}
  80723. diff -Nur uClibc-0.9.33.2/libm/metag/fegetexcept.c uClibc/libm/metag/fegetexcept.c
  80724. --- uClibc-0.9.33.2/libm/metag/fegetexcept.c 1970-01-01 01:00:00.000000000 +0100
  80725. +++ uClibc/libm/metag/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  80726. @@ -0,0 +1,31 @@
  80727. +/* Get enabled floating-point exceptions.
  80728. + Copyright (C) 2013 Imagination Technologies Ltd.
  80729. + This file is part of the GNU C Library.
  80730. +
  80731. + The GNU C Library is free software; you can redistribute it and/or
  80732. + modify it under the terms of the GNU Lesser General Public
  80733. + License as published by the Free Software Foundation; either
  80734. + version 2.1 of the License, or (at your option) any later version.
  80735. +
  80736. + The GNU C Library is distributed in the hope that it will be useful,
  80737. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80738. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80739. + Lesser General Public License for more details.
  80740. +
  80741. + You should have received a copy of the GNU Lesser General Public
  80742. + License along with the GNU C Library; if not, write to the Free
  80743. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80744. + 02111-1307 USA. */
  80745. +
  80746. +#include <fenv.h>
  80747. +
  80748. +int
  80749. +fegetexcept (void)
  80750. +{
  80751. + unsigned int exc;
  80752. +
  80753. + /* Get the current control word. */
  80754. + __asm__ ("MOV %0,TXDEFR" : "=r" (exc));
  80755. +
  80756. + return exc & FE_ALL_EXCEPT;
  80757. +}
  80758. diff -Nur uClibc-0.9.33.2/libm/metag/fegetround.c uClibc/libm/metag/fegetround.c
  80759. --- uClibc-0.9.33.2/libm/metag/fegetround.c 1970-01-01 01:00:00.000000000 +0100
  80760. +++ uClibc/libm/metag/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  80761. @@ -0,0 +1,30 @@
  80762. +/* Return current rounding direction.
  80763. + Copyright (C) 2013 Imagination Technologies Ltd.
  80764. + This file is part of the GNU C Library.
  80765. +
  80766. + The GNU C Library is free software; you can redistribute it and/or
  80767. + modify it under the terms of the GNU Lesser General Public
  80768. + License as published by the Free Software Foundation; either
  80769. + version 2.1 of the License, or (at your option) any later version.
  80770. +
  80771. + The GNU C Library is distributed in the hope that it will be useful,
  80772. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80773. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80774. + Lesser General Public License for more details.
  80775. +
  80776. + You should have received a copy of the GNU Lesser General Public
  80777. + License along with the GNU C Library; if not, write to the Free
  80778. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80779. + 02111-1307 USA. */
  80780. +
  80781. +#include <fenv.h>
  80782. +
  80783. +int
  80784. +fegetround (void)
  80785. +{
  80786. + unsigned int txmode;
  80787. +
  80788. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80789. +
  80790. + return (txmode >> 16) & 0x3;
  80791. +}
  80792. diff -Nur uClibc-0.9.33.2/libm/metag/feholdexcpt.c uClibc/libm/metag/feholdexcpt.c
  80793. --- uClibc-0.9.33.2/libm/metag/feholdexcpt.c 1970-01-01 01:00:00.000000000 +0100
  80794. +++ uClibc/libm/metag/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80795. @@ -0,0 +1,41 @@
  80796. +/* Store current floating-point environment and clear exceptions.
  80797. + Copyright (C) 2013 Imagination Technologies Ltd.
  80798. + Free Software Foundation, Inc.
  80799. + This file is part of the GNU C Library.
  80800. +
  80801. + The GNU C Library is free software; you can redistribute it and/or
  80802. + modify it under the terms of the GNU Lesser General Public
  80803. + License as published by the Free Software Foundation; either
  80804. + version 2.1 of the License, or (at your option) any later version.
  80805. +
  80806. + The GNU C Library is distributed in the hope that it will be useful,
  80807. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80808. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80809. + Lesser General Public License for more details.
  80810. +
  80811. + You should have received a copy of the GNU Lesser General Public
  80812. + License along with the GNU C Library; if not, write to the Free
  80813. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80814. + 02111-1307 USA. */
  80815. +
  80816. +#include <fenv.h>
  80817. +#include <unistd.h>
  80818. +
  80819. +#include "internal.h"
  80820. +
  80821. +int
  80822. +feholdexcept (fenv_t *envp)
  80823. +{
  80824. + unsigned int txdefr;
  80825. + unsigned int txmode;
  80826. +
  80827. + __asm__ ("MOV %0,TXDEFR" : "=r" (txdefr));
  80828. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80829. +
  80830. + envp->txdefr = txdefr;
  80831. + envp->txmode = txmode;
  80832. +
  80833. + metag_set_fpu_flags(0);
  80834. +
  80835. + return 0;
  80836. +}
  80837. diff -Nur uClibc-0.9.33.2/libm/metag/fesetenv.c uClibc/libm/metag/fesetenv.c
  80838. --- uClibc-0.9.33.2/libm/metag/fesetenv.c 1970-01-01 01:00:00.000000000 +0100
  80839. +++ uClibc/libm/metag/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  80840. @@ -0,0 +1,60 @@
  80841. +/* Install given floating-point environment.
  80842. + Copyright (C) 2013 Imagination Technologies Ltd.
  80843. + This file is part of the GNU C Library.
  80844. +
  80845. + The GNU C Library is free software; you can redistribute it and/or
  80846. + modify it under the terms of the GNU Lesser General Public
  80847. + License as published by the Free Software Foundation; either
  80848. + version 2.1 of the License, or (at your option) any later version.
  80849. +
  80850. + The GNU C Library is distributed in the hope that it will be useful,
  80851. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80852. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80853. + Lesser General Public License for more details.
  80854. +
  80855. + You should have received a copy of the GNU Lesser General Public
  80856. + License along with the GNU C Library; if not, write to the Free
  80857. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80858. + 02111-1307 USA. */
  80859. +
  80860. +#include <fenv.h>
  80861. +#include <assert.h>
  80862. +
  80863. +#include "internal.h"
  80864. +
  80865. +libm_hidden_proto(fesetenv)
  80866. +
  80867. +int
  80868. +fesetenv (const fenv_t *envp)
  80869. +{
  80870. + unsigned int exc;
  80871. + unsigned int txmode;
  80872. +
  80873. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80874. +
  80875. + /* Clear rounding mode bits (round to nearest). */
  80876. + txmode &= ~(0x3 << 16);
  80877. +
  80878. + if (envp == FE_DFL_ENV)
  80879. + {
  80880. + exc = 0;
  80881. + }
  80882. + else if (envp == FE_NOMASK_ENV)
  80883. + {
  80884. + exc = 0x1f;
  80885. + }
  80886. + else
  80887. + {
  80888. + exc = envp->txdefr & (FE_ALL_EXCEPT | (FE_ALL_EXCEPT << 16));
  80889. + /* Write rounding mode and guard bit. */
  80890. + txmode |= (0x1 << 18 ) | (envp->txmode & (0x3 << 16));
  80891. + }
  80892. +
  80893. + __asm__ ("MOV TXMODE,%0" : : "r" (txmode));
  80894. +
  80895. + metag_set_fpu_flags(exc);
  80896. +
  80897. + /* Success. */
  80898. + return 0;
  80899. +}
  80900. +libm_hidden_def(fesetenv)
  80901. diff -Nur uClibc-0.9.33.2/libm/metag/fesetround.c uClibc/libm/metag/fesetround.c
  80902. --- uClibc-0.9.33.2/libm/metag/fesetround.c 1970-01-01 01:00:00.000000000 +0100
  80903. +++ uClibc/libm/metag/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  80904. @@ -0,0 +1,41 @@
  80905. +/* Set current rounding direction.
  80906. + Copyright (C) 2013 Imagination Technologies Ltd.
  80907. + This file is part of the GNU C Library.
  80908. +
  80909. + The GNU C Library is free software; you can redistribute it and/or
  80910. + modify it under the terms of the GNU Lesser General Public
  80911. + License as published by the Free Software Foundation; either
  80912. + version 2.1 of the License, or (at your option) any later version.
  80913. +
  80914. + The GNU C Library is distributed in the hope that it will be useful,
  80915. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80916. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80917. + Lesser General Public License for more details.
  80918. +
  80919. + You should have received a copy of the GNU Lesser General Public
  80920. + License along with the GNU C Library; if not, write to the Free
  80921. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80922. + 02111-1307 USA. */
  80923. +
  80924. +#include <fenv.h>
  80925. +#include <unistd.h>
  80926. +
  80927. +int
  80928. +fesetround (int round)
  80929. +{
  80930. + unsigned int txmode;
  80931. +
  80932. + if ((round & ~0x3) != 0)
  80933. + /* ROUND is no valid rounding mode. */
  80934. + return 1;
  80935. +
  80936. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80937. +
  80938. + txmode &= ~(0x3 << 16);
  80939. + /* Write rounding mode and guard bit. */
  80940. + txmode |= (0x1 << 18 ) | (round << 16);
  80941. +
  80942. + __asm__ ("MOV TXMODE,%0" : : "r" (txmode));
  80943. +
  80944. + return 0;
  80945. +}
  80946. diff -Nur uClibc-0.9.33.2/libm/metag/feupdateenv.c uClibc/libm/metag/feupdateenv.c
  80947. --- uClibc-0.9.33.2/libm/metag/feupdateenv.c 1970-01-01 01:00:00.000000000 +0100
  80948. +++ uClibc/libm/metag/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  80949. @@ -0,0 +1,45 @@
  80950. +/* Install given floating-point environment and raise exceptions.
  80951. + Copyright (C) 2013 Imagination Technologies Ltd.
  80952. + This file is part of the GNU C Library.
  80953. +
  80954. + The GNU C Library is free software; you can redistribute it and/or
  80955. + modify it under the terms of the GNU Lesser General Public
  80956. + License as published by the Free Software Foundation; either
  80957. + version 2.1 of the License, or (at your option) any later version.
  80958. +
  80959. + The GNU C Library is distributed in the hope that it will be useful,
  80960. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80961. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80962. + Lesser General Public License for more details.
  80963. +
  80964. + You should have received a copy of the GNU Lesser General Public
  80965. + License along with the GNU C Library; if not, write to the Free
  80966. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80967. + 02111-1307 USA. */
  80968. +
  80969. +#include <fenv.h>
  80970. +#include <unistd.h>
  80971. +
  80972. +libm_hidden_proto(fesetenv)
  80973. +libm_hidden_proto(feraiseexcept)
  80974. +
  80975. +int
  80976. +feupdateenv (const fenv_t *envp)
  80977. +{
  80978. + unsigned int temp;
  80979. +
  80980. + /* Save current exceptions. */
  80981. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80982. +
  80983. + temp >>= 16;
  80984. + temp &= FE_ALL_EXCEPT;
  80985. +
  80986. + /* Install new environment. */
  80987. + fesetenv (envp);
  80988. +
  80989. + /* Raise the saved exception. */
  80990. + feraiseexcept ((int) temp);
  80991. +
  80992. + /* Success. */
  80993. + return 0;
  80994. +}
  80995. diff -Nur uClibc-0.9.33.2/libm/metag/fgetexcptflg.c uClibc/libm/metag/fgetexcptflg.c
  80996. --- uClibc-0.9.33.2/libm/metag/fgetexcptflg.c 1970-01-01 01:00:00.000000000 +0100
  80997. +++ uClibc/libm/metag/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80998. @@ -0,0 +1,34 @@
  80999. +/* Store current representation for exceptions.
  81000. + Copyright (C) 2013 Imagination Technologies Ltd.
  81001. + This file is part of the GNU C Library.
  81002. +
  81003. + The GNU C Library is free software; you can redistribute it and/or
  81004. + modify it under the terms of the GNU Lesser General Public
  81005. + License as published by the Free Software Foundation; either
  81006. + version 2.1 of the License, or (at your option) any later version.
  81007. +
  81008. + The GNU C Library is distributed in the hope that it will be useful,
  81009. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  81010. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  81011. + Lesser General Public License for more details.
  81012. +
  81013. + You should have received a copy of the GNU Lesser General Public
  81014. + License along with the GNU C Library; if not, write to the Free
  81015. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81016. + 02111-1307 USA. */
  81017. +
  81018. +#include <fenv.h>
  81019. +
  81020. +int
  81021. +fegetexceptflag (fexcept_t *flagp, int excepts)
  81022. +{
  81023. + unsigned int temp;
  81024. +
  81025. + /* Get the current exceptions. */
  81026. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  81027. +
  81028. + *flagp = temp & excepts & FE_ALL_EXCEPT;
  81029. +
  81030. + /* Success. */
  81031. + return 0;
  81032. +}
  81033. diff -Nur uClibc-0.9.33.2/libm/metag/fraiseexcpt.c uClibc/libm/metag/fraiseexcpt.c
  81034. --- uClibc-0.9.33.2/libm/metag/fraiseexcpt.c 1970-01-01 01:00:00.000000000 +0100
  81035. +++ uClibc/libm/metag/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  81036. @@ -0,0 +1,92 @@
  81037. +/* Raise given exceptions.
  81038. + Copyright (C) 2013 Imagination Technologies Ltd.
  81039. + This file is part of the GNU C Library.
  81040. +
  81041. + The GNU C Library is free software; you can redistribute it and/or
  81042. + modify it under the terms of the GNU Lesser General Public
  81043. + License as published by the Free Software Foundation; either
  81044. + version 2.1 of the License, or (at your option) any later version.
  81045. +
  81046. + The GNU C Library is distributed in the hope that it will be useful,
  81047. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  81048. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  81049. + Lesser General Public License for more details.
  81050. +
  81051. + You should have received a copy of the GNU Lesser General Public
  81052. + License along with the GNU C Library; if not, write to the Free
  81053. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81054. + 02111-1307 USA. */
  81055. +
  81056. +#include <fenv.h>
  81057. +#include <math.h>
  81058. +
  81059. +libm_hidden_proto(feraiseexcept)
  81060. +
  81061. +int
  81062. +feraiseexcept (int excepts)
  81063. +{
  81064. + /* Raise exceptions represented by EXPECTS. But we must raise only
  81065. + one signal at a time. It is important that if the overflow/underflow
  81066. + exception and the inexact exception are given at the same time,
  81067. + the overflow/underflow exception follows the inexact exception. */
  81068. +
  81069. + /* First: invalid exception. */
  81070. + if ((FE_INVALID & excepts) != 0)
  81071. + {
  81072. + /* Reciprocal square root of a negative number is invalid. */
  81073. + __asm__ volatile(
  81074. + "F MOV FX.0,#0xc000 ! -2\n"
  81075. + "F RSQ FX.1,FX.0\n"
  81076. + );
  81077. + }
  81078. +
  81079. + /* Next: division by zero. */
  81080. + if ((FE_DIVBYZERO & excepts) != 0)
  81081. + {
  81082. + __asm__ volatile(
  81083. + "F MOV FX.0,#0\n"
  81084. + "F RCP FX.1,FX.0\n"
  81085. + );
  81086. + }
  81087. +
  81088. + /* Next: overflow. */
  81089. + if ((FE_OVERFLOW & excepts) != 0)
  81090. + {
  81091. + /* Adding a large number in single precision can cause overflow. */
  81092. + __asm__ volatile(
  81093. + " MOVT D0.0,#0x7f7f\n"
  81094. + " ADD D0.0,D0.0,#0xffff\n"
  81095. + "F MOV FX.0,D0.0\n"
  81096. + "F ADD FX.1,FX.0,FX.0\n"
  81097. + );
  81098. + }
  81099. +
  81100. + /* Next: underflow. */
  81101. + if ((FE_UNDERFLOW & excepts) != 0)
  81102. + {
  81103. + /* Multiplying a small value by 0.5 will cause an underflow. */
  81104. + __asm__ volatile(
  81105. + " MOV D0.0,#1\n"
  81106. + "F MOV FX.0,D0.0\n"
  81107. + " MOVT D0.0,#0x3f00\n"
  81108. + "F MOV FX.1,D0.0\n"
  81109. + "F MUL FX.2,FX.1,FX.0\n"
  81110. + );
  81111. + }
  81112. +
  81113. + /* Last: inexact. */
  81114. + if ((FE_INEXACT & excepts) != 0)
  81115. + {
  81116. + /* Converting a small single precision value to half precision
  81117. + can cause an inexact exception. */
  81118. + __asm__ volatile(
  81119. + " MOV D0.0,#0x0001\n"
  81120. + "F MOV FX.0,D0.0\n"
  81121. + "F FTOH FX.1,FX.0\n"
  81122. + );
  81123. + }
  81124. +
  81125. + /* Success. */
  81126. + return 0;
  81127. +}
  81128. +libm_hidden_def(feraiseexcept)
  81129. diff -Nur uClibc-0.9.33.2/libm/metag/fsetexcptflg.c uClibc/libm/metag/fsetexcptflg.c
  81130. --- uClibc-0.9.33.2/libm/metag/fsetexcptflg.c 1970-01-01 01:00:00.000000000 +0100
  81131. +++ uClibc/libm/metag/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  81132. @@ -0,0 +1,44 @@
  81133. +/* Set floating-point environment exception handling.
  81134. + Copyright (C) 2013 Imagination Technologies Ltd.
  81135. + This file is part of the GNU C Library.
  81136. +
  81137. + The GNU C Library is free software; you can redistribute it and/or
  81138. + modify it under the terms of the GNU Lesser General Public
  81139. + License as published by the Free Software Foundation; either
  81140. + version 2.1 of the License, or (at your option) any later version.
  81141. +
  81142. + The GNU C Library is distributed in the hope that it will be useful,
  81143. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  81144. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  81145. + Lesser General Public License for more details.
  81146. +
  81147. + You should have received a copy of the GNU Lesser General Public
  81148. + License along with the GNU C Library; if not, write to the Free
  81149. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81150. + 02111-1307 USA. */
  81151. +
  81152. +#include <fenv.h>
  81153. +#include <math.h>
  81154. +#include <unistd.h>
  81155. +
  81156. +#include "internal.h"
  81157. +
  81158. +int
  81159. +fesetexceptflag (const fexcept_t *flagp, int excepts)
  81160. +{
  81161. + unsigned int temp;
  81162. +
  81163. + /* Get the current exceptions. */
  81164. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  81165. +
  81166. + excepts &= FE_ALL_EXCEPT;
  81167. + excepts <<= 16;
  81168. +
  81169. + temp &= ~excepts;
  81170. + temp |= *flagp & excepts;
  81171. +
  81172. + metag_set_fpu_flags(temp);
  81173. +
  81174. + /* Success. */
  81175. + return 0;
  81176. +}
  81177. diff -Nur uClibc-0.9.33.2/libm/metag/ftestexcept.c uClibc/libm/metag/ftestexcept.c
  81178. --- uClibc-0.9.33.2/libm/metag/ftestexcept.c 1970-01-01 01:00:00.000000000 +0100
  81179. +++ uClibc/libm/metag/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  81180. @@ -0,0 +1,32 @@
  81181. +/* Test exception in current environment.
  81182. + Copyright (C) 2013 Imagination Technologies Ltd.
  81183. + This file is part of the GNU C Library.
  81184. +
  81185. + The GNU C Library is free software; you can redistribute it and/or
  81186. + modify it under the terms of the GNU Lesser General Public
  81187. + License as published by the Free Software Foundation; either
  81188. + version 2.1 of the License, or (at your option) any later version.
  81189. +
  81190. + The GNU C Library is distributed in the hope that it will be useful,
  81191. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  81192. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  81193. + Lesser General Public License for more details.
  81194. +
  81195. + You should have received a copy of the GNU Lesser General Public
  81196. + License along with the GNU C Library; if not, write to the Free
  81197. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81198. + 02111-1307 USA. */
  81199. +
  81200. +#include <fenv.h>
  81201. +#include <unistd.h>
  81202. +
  81203. +int
  81204. +fetestexcept (int excepts)
  81205. +{
  81206. + unsigned int temp;
  81207. +
  81208. + /* Get the current exceptions. */
  81209. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  81210. +
  81211. + return (temp >> 16) & excepts & FE_ALL_EXCEPT;
  81212. +}
  81213. diff -Nur uClibc-0.9.33.2/libm/metag/internal.h uClibc/libm/metag/internal.h
  81214. --- uClibc-0.9.33.2/libm/metag/internal.h 1970-01-01 01:00:00.000000000 +0100
  81215. +++ uClibc/libm/metag/internal.h 2014-02-03 12:32:56.000000000 +0100
  81216. @@ -0,0 +1,7 @@
  81217. +/*
  81218. + * Copyright (C) 2013 Imagination Technologies Ltd.
  81219. + *
  81220. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  81221. + */
  81222. +
  81223. +void metag_set_fpu_flags(unsigned int flags);
  81224. diff -Nur uClibc-0.9.33.2/libm/metag/Makefile.arch uClibc/libm/metag/Makefile.arch
  81225. --- uClibc-0.9.33.2/libm/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  81226. +++ uClibc/libm/metag/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  81227. @@ -0,0 +1,23 @@
  81228. +# Makefile for uClibc
  81229. +#
  81230. +# Copyright (c) 2013 Imagination Technologies Ltd.
  81231. +#
  81232. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  81233. +#
  81234. +
  81235. +ifeq ($(UCLIBC_HAS_FENV),y)
  81236. +ifeq ($(CONFIG_META_2_1),y)
  81237. +libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
  81238. +libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
  81239. +CFLAGS-libm += -Wa,-mfpu=metac21
  81240. +endif
  81241. +endif
  81242. +
  81243. +libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
  81244. +
  81245. +ifeq ($(DOPIC),y)
  81246. +libm-a-y+=$(libm_ARCH_OBJS:.o=.os)
  81247. +else
  81248. +libm-a-y+=$(libm_ARCH_OBJS)
  81249. +endif
  81250. +libm-so-y+=$(libm_ARCH_OBJS:.o=.os)
  81251. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fclrexcpt.c uClibc/libm/powerpc/e500/fpu/fclrexcpt.c
  81252. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fclrexcpt.c 2012-05-15 09:20:09.000000000 +0200
  81253. +++ uClibc/libm/powerpc/e500/fpu/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  81254. @@ -13,9 +13,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 "fenv_libc.h"
  81263. #undef feclearexcept
  81264. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fedisblxcpt.c uClibc/libm/powerpc/e500/fpu/fedisblxcpt.c
  81265. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fedisblxcpt.c 2012-05-15 09:20:09.000000000 +0200
  81266. +++ uClibc/libm/powerpc/e500/fpu/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  81267. @@ -14,9 +14,8 @@
  81268. Lesser General Public License for more details.
  81269. You should have received a copy of the GNU Lesser General Public
  81270. - License along with the GNU C Library; if not, write to the Free
  81271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81272. - 02111-1307 USA. */
  81273. + License along with the GNU C Library; if not, see
  81274. + <http://www.gnu.org/licenses/>. */
  81275. #include "fenv_libc.h"
  81276. #include <syscall.h>
  81277. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feenablxcpt.c uClibc/libm/powerpc/e500/fpu/feenablxcpt.c
  81278. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feenablxcpt.c 2012-05-15 09:20:09.000000000 +0200
  81279. +++ uClibc/libm/powerpc/e500/fpu/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  81280. @@ -14,9 +14,8 @@
  81281. Lesser General Public License for more details.
  81282. You should have received a copy of the GNU Lesser General Public
  81283. - License along with the GNU C Library; if not, write to the Free
  81284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81285. - 02111-1307 USA. */
  81286. + License along with the GNU C Library; if not, see
  81287. + <http://www.gnu.org/licenses/>. */
  81288. #include "fenv_libc.h"
  81289. #include <syscall.h>
  81290. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetenv.c uClibc/libm/powerpc/e500/fpu/fegetenv.c
  81291. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetenv.c 2012-05-15 09:20:09.000000000 +0200
  81292. +++ uClibc/libm/powerpc/e500/fpu/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  81293. @@ -14,9 +14,8 @@
  81294. Lesser General Public License for more details.
  81295. You should have received a copy of the GNU Lesser General Public
  81296. - License along with the GNU C Library; if not, write to the Free
  81297. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81298. - 02111-1307 USA. */
  81299. + License along with the GNU C Library; if not, see
  81300. + <http://www.gnu.org/licenses/>. */
  81301. #include "fenv_libc.h"
  81302. #include <syscall.h>
  81303. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetexcept.c uClibc/libm/powerpc/e500/fpu/fegetexcept.c
  81304. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetexcept.c 2012-05-15 09:20:09.000000000 +0200
  81305. +++ uClibc/libm/powerpc/e500/fpu/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  81306. @@ -14,9 +14,8 @@
  81307. Lesser General Public License for more details.
  81308. You should have received a copy of the GNU Lesser General Public
  81309. - License along with the GNU C Library; if not, write to the Free
  81310. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81311. - 02111-1307 USA. */
  81312. + License along with the GNU C Library; if not, see
  81313. + <http://www.gnu.org/licenses/>. */
  81314. #include "fenv_libc.h"
  81315. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetround.c uClibc/libm/powerpc/e500/fpu/fegetround.c
  81316. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetround.c 2012-05-15 09:20:09.000000000 +0200
  81317. +++ uClibc/libm/powerpc/e500/fpu/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  81318. @@ -14,9 +14,8 @@
  81319. Lesser General Public License for more details.
  81320. You should have received a copy of the GNU Lesser General Public
  81321. - License along with the GNU C Library; if not, write to the Free
  81322. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81323. - 02111-1307 USA. */
  81324. + License along with the GNU C Library; if not, see
  81325. + <http://www.gnu.org/licenses/>. */
  81326. #include "fenv_libc.h"
  81327. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feholdexcpt.c uClibc/libm/powerpc/e500/fpu/feholdexcpt.c
  81328. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feholdexcpt.c 2012-05-15 09:20:09.000000000 +0200
  81329. +++ uClibc/libm/powerpc/e500/fpu/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  81330. @@ -14,9 +14,8 @@
  81331. Lesser General Public License for more details.
  81332. You should have received a copy of the GNU Lesser General Public
  81333. - License along with the GNU C Library; if not, write to the Free
  81334. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81335. - 02111-1307 USA. */
  81336. + License along with the GNU C Library; if not, see
  81337. + <http://www.gnu.org/licenses/>. */
  81338. #include "fenv_libc.h"
  81339. #include <syscall.h>
  81340. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fe_nomask.c uClibc/libm/powerpc/e500/fpu/fe_nomask.c
  81341. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fe_nomask.c 2012-05-15 09:20:09.000000000 +0200
  81342. +++ uClibc/libm/powerpc/e500/fpu/fe_nomask.c 2014-02-03 12:32:56.000000000 +0100
  81343. @@ -13,9 +13,8 @@
  81344. Lesser General Public License for more details.
  81345. You should have received a copy of the GNU Lesser General Public
  81346. - License along with the GNU C Library; if not, write to the Free
  81347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81348. - 02111-1307 USA. */
  81349. + License along with the GNU C Library; if not, see
  81350. + <http://www.gnu.org/licenses/>. */
  81351. #include <fenv.h>
  81352. #include <errno.h>
  81353. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_const.c uClibc/libm/powerpc/e500/fpu/fenv_const.c
  81354. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_const.c 2012-05-15 09:20:09.000000000 +0200
  81355. +++ uClibc/libm/powerpc/e500/fpu/fenv_const.c 2014-02-03 12:32:56.000000000 +0100
  81356. @@ -14,9 +14,8 @@
  81357. Lesser General Public License for more details.
  81358. You should have received a copy of the GNU Lesser General Public
  81359. - License along with the GNU C Library; if not, write to the Free
  81360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81361. - 02111-1307 USA. */
  81362. + License along with the GNU C Library; if not, see
  81363. + <http://www.gnu.org/licenses/>. */
  81364. /* If the default argument is used we use this value. */
  81365. const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
  81366. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_libc.h uClibc/libm/powerpc/e500/fpu/fenv_libc.h
  81367. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_libc.h 2012-05-15 09:20:09.000000000 +0200
  81368. +++ uClibc/libm/powerpc/e500/fpu/fenv_libc.h 2014-02-03 12:32:56.000000000 +0100
  81369. @@ -14,9 +14,8 @@
  81370. Lesser General Public License for more details.
  81371. You should have received a copy of the GNU Lesser General Public
  81372. - License along with the GNU C Library; if not, write to the Free
  81373. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81374. - 02111-1307 USA. */
  81375. + License along with the GNU C Library; if not, see
  81376. + <http://www.gnu.org/licenses/>. */
  81377. #ifndef _FENV_LIBC_H
  81378. #define _FENV_LIBC_H 1
  81379. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetenv.c uClibc/libm/powerpc/e500/fpu/fesetenv.c
  81380. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetenv.c 2012-05-15 09:20:09.000000000 +0200
  81381. +++ uClibc/libm/powerpc/e500/fpu/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  81382. @@ -13,9 +13,8 @@
  81383. Lesser General Public License for more details.
  81384. You should have received a copy of the GNU Lesser General Public
  81385. - License along with the GNU C Library; if not, write to the Free
  81386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81387. - 02111-1307 USA. */
  81388. + License along with the GNU C Library; if not, see
  81389. + <http://www.gnu.org/licenses/>. */
  81390. #include "fenv_libc.h"
  81391. #include <syscall.h>
  81392. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetround.c uClibc/libm/powerpc/e500/fpu/fesetround.c
  81393. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetround.c 2012-05-15 09:20:09.000000000 +0200
  81394. +++ uClibc/libm/powerpc/e500/fpu/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  81395. @@ -14,9 +14,8 @@
  81396. Lesser General Public License for more details.
  81397. You should have received a copy of the GNU Lesser General Public
  81398. - License along with the GNU C Library; if not, write to the Free
  81399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81400. - 02111-1307 USA. */
  81401. + License along with the GNU C Library; if not, see
  81402. + <http://www.gnu.org/licenses/>. */
  81403. #include "fenv_libc.h"
  81404. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feupdateenv.c uClibc/libm/powerpc/e500/fpu/feupdateenv.c
  81405. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feupdateenv.c 2012-05-15 09:20:09.000000000 +0200
  81406. +++ uClibc/libm/powerpc/e500/fpu/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  81407. @@ -14,9 +14,8 @@
  81408. Lesser General Public License for more details.
  81409. You should have received a copy of the GNU Lesser General Public
  81410. - License along with the GNU C Library; if not, write to the Free
  81411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81412. - 02111-1307 USA. */
  81413. + License along with the GNU C Library; if not, see
  81414. + <http://www.gnu.org/licenses/>. */
  81415. #include "fenv_libc.h"
  81416. #include <syscall.h>
  81417. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fgetexcptflg.c uClibc/libm/powerpc/e500/fpu/fgetexcptflg.c
  81418. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fgetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  81419. +++ uClibc/libm/powerpc/e500/fpu/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  81420. @@ -14,9 +14,8 @@
  81421. Lesser General Public License for more details.
  81422. You should have received a copy of the GNU Lesser General Public
  81423. - License along with the GNU C Library; if not, write to the Free
  81424. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81425. - 02111-1307 USA. */
  81426. + License along with the GNU C Library; if not, see
  81427. + <http://www.gnu.org/licenses/>. */
  81428. #include "fenv_libc.h"
  81429. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fraiseexcpt.c uClibc/libm/powerpc/e500/fpu/fraiseexcpt.c
  81430. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fraiseexcpt.c 2012-05-15 09:20:09.000000000 +0200
  81431. +++ uClibc/libm/powerpc/e500/fpu/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  81432. @@ -14,9 +14,8 @@
  81433. Lesser General Public License for more details.
  81434. You should have received a copy of the GNU Lesser General Public
  81435. - License along with the GNU C Library; if not, write to the Free
  81436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81437. - 02111-1307 USA. */
  81438. + License along with the GNU C Library; if not, see
  81439. + <http://www.gnu.org/licenses/>. */
  81440. #include "fenv_libc.h"
  81441. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fsetexcptflg.c uClibc/libm/powerpc/e500/fpu/fsetexcptflg.c
  81442. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fsetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  81443. +++ uClibc/libm/powerpc/e500/fpu/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  81444. @@ -13,9 +13,8 @@
  81445. Lesser General Public License for more details.
  81446. You should have received a copy of the GNU Lesser General Public
  81447. - License along with the GNU C Library; if not, write to the Free
  81448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81449. - 02111-1307 USA. */
  81450. + License along with the GNU C Library; if not, see
  81451. + <http://www.gnu.org/licenses/>. */
  81452. #include "fenv_libc.h"
  81453. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/ftestexcept.c uClibc/libm/powerpc/e500/fpu/ftestexcept.c
  81454. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/ftestexcept.c 2012-05-15 09:20:09.000000000 +0200
  81455. +++ uClibc/libm/powerpc/e500/fpu/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  81456. @@ -14,9 +14,8 @@
  81457. Lesser General Public License for more details.
  81458. You should have received a copy of the GNU Lesser General Public
  81459. - License along with the GNU C Library; if not, write to the Free
  81460. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81461. - 02111-1307 USA. */
  81462. + License along with the GNU C Library; if not, see
  81463. + <http://www.gnu.org/licenses/>. */
  81464. #include "fenv_libc.h"
  81465. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/spe-raise.c uClibc/libm/powerpc/e500/spe-raise.c
  81466. --- uClibc-0.9.33.2/libm/powerpc/e500/spe-raise.c 2012-05-15 09:20:09.000000000 +0200
  81467. +++ uClibc/libm/powerpc/e500/spe-raise.c 2014-02-03 12:32:56.000000000 +0100
  81468. @@ -13,9 +13,8 @@
  81469. Lesser General Public License for more details.
  81470. You should have received a copy of the GNU Lesser General Public
  81471. - License along with the GNU C Library; if not, write to the Free
  81472. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81473. - 02111-1307 USA. */
  81474. + License along with the GNU C Library; if not, see
  81475. + <http://www.gnu.org/licenses/>. */
  81476. #include "fpu/fenv_libc.h"
  81477. diff -Nur uClibc-0.9.33.2/libm/s_ceil.c uClibc/libm/s_ceil.c
  81478. --- uClibc-0.9.33.2/libm/s_ceil.c 2012-05-15 09:20:09.000000000 +0200
  81479. +++ uClibc/libm/s_ceil.c 2014-02-03 12:32:56.000000000 +0100
  81480. @@ -28,35 +28,35 @@
  81481. double ceil(double x)
  81482. {
  81483. - int32_t i0,i1,j0;
  81484. + int32_t i0,i1,_j0;
  81485. u_int32_t i,j;
  81486. EXTRACT_WORDS(i0,i1,x);
  81487. - j0 = ((i0>>20)&0x7ff)-0x3ff;
  81488. - if(j0<20) {
  81489. - if(j0<0) { /* raise inexact if x != 0 */
  81490. + _j0 = ((i0>>20)&0x7ff)-0x3ff;
  81491. + if(_j0<20) {
  81492. + if(_j0<0) { /* raise inexact if x != 0 */
  81493. if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
  81494. if(i0<0) {i0=0x80000000;i1=0;}
  81495. else if((i0|i1)!=0) { i0=0x3ff00000;i1=0;}
  81496. }
  81497. } else {
  81498. - i = (0x000fffff)>>j0;
  81499. + i = (0x000fffff)>>_j0;
  81500. if(((i0&i)|i1)==0) return x; /* x is integral */
  81501. if(huge+x>0.0) { /* raise inexact flag */
  81502. - if(i0>0) i0 += (0x00100000)>>j0;
  81503. + if(i0>0) i0 += (0x00100000)>>_j0;
  81504. i0 &= (~i); i1=0;
  81505. }
  81506. }
  81507. - } else if (j0>51) {
  81508. - if(j0==0x400) return x+x; /* inf or NaN */
  81509. + } else if (_j0>51) {
  81510. + if(_j0==0x400) return x+x; /* inf or NaN */
  81511. else return x; /* x is integral */
  81512. } else {
  81513. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81514. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81515. if((i1&i)==0) return x; /* x is integral */
  81516. if(huge+x>0.0) { /* raise inexact flag */
  81517. if(i0>0) {
  81518. - if(j0==20) i0+=1;
  81519. + if(_j0==20) i0+=1;
  81520. else {
  81521. - j = i1 + (1<<(52-j0));
  81522. + j = i1 + (1<<(52-_j0));
  81523. if(j<i1) i0+=1; /* got a carry */
  81524. i1 = j;
  81525. }
  81526. diff -Nur uClibc-0.9.33.2/libm/s_floor.c uClibc/libm/s_floor.c
  81527. --- uClibc-0.9.33.2/libm/s_floor.c 2012-05-15 09:20:09.000000000 +0200
  81528. +++ uClibc/libm/s_floor.c 2014-02-03 12:32:56.000000000 +0100
  81529. @@ -28,36 +28,36 @@
  81530. double floor(double x)
  81531. {
  81532. - int32_t i0,i1,j0;
  81533. + int32_t i0,i1,_j0;
  81534. u_int32_t i,j;
  81535. EXTRACT_WORDS(i0,i1,x);
  81536. - j0 = ((i0>>20)&0x7ff)-0x3ff;
  81537. - if(j0<20) {
  81538. - if(j0<0) { /* raise inexact if x != 0 */
  81539. + _j0 = ((i0>>20)&0x7ff)-0x3ff;
  81540. + if(_j0<20) {
  81541. + if(_j0<0) { /* raise inexact if x != 0 */
  81542. if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
  81543. if(i0>=0) {i0=i1=0;}
  81544. else if(((i0&0x7fffffff)|i1)!=0)
  81545. { i0=0xbff00000;i1=0;}
  81546. }
  81547. } else {
  81548. - i = (0x000fffff)>>j0;
  81549. + i = (0x000fffff)>>_j0;
  81550. if(((i0&i)|i1)==0) return x; /* x is integral */
  81551. if(huge+x>0.0) { /* raise inexact flag */
  81552. - if(i0<0) i0 += (0x00100000)>>j0;
  81553. + if(i0<0) i0 += (0x00100000)>>_j0;
  81554. i0 &= (~i); i1=0;
  81555. }
  81556. }
  81557. - } else if (j0>51) {
  81558. - if(j0==0x400) return x+x; /* inf or NaN */
  81559. + } else if (_j0>51) {
  81560. + if(_j0==0x400) return x+x; /* inf or NaN */
  81561. else return x; /* x is integral */
  81562. } else {
  81563. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81564. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81565. if((i1&i)==0) return x; /* x is integral */
  81566. if(huge+x>0.0) { /* raise inexact flag */
  81567. if(i0<0) {
  81568. - if(j0==20) i0+=1;
  81569. + if(_j0==20) i0+=1;
  81570. else {
  81571. - j = i1+(1<<(52-j0));
  81572. + j = i1+(1<<(52-_j0));
  81573. if(j<i1) i0 +=1 ; /* got a carry */
  81574. i1=j;
  81575. }
  81576. diff -Nur uClibc-0.9.33.2/libm/s_fma.c uClibc/libm/s_fma.c
  81577. --- uClibc-0.9.33.2/libm/s_fma.c 2012-05-15 09:20:09.000000000 +0200
  81578. +++ uClibc/libm/s_fma.c 2014-02-03 12:32:56.000000000 +0100
  81579. @@ -14,9 +14,8 @@
  81580. Lesser General Public License for more details.
  81581. You should have received a copy of the GNU Lesser General Public
  81582. - License along with the GNU C Library; if not, write to the Free
  81583. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81584. - 02111-1307 USA. */
  81585. + License along with the GNU C Library; if not, see
  81586. + <http://www.gnu.org/licenses/>. */
  81587. #include <math.h>
  81588. diff -Nur uClibc-0.9.33.2/libm/s_fpclassify.c uClibc/libm/s_fpclassify.c
  81589. --- uClibc-0.9.33.2/libm/s_fpclassify.c 2012-05-15 09:20:09.000000000 +0200
  81590. +++ uClibc/libm/s_fpclassify.c 2014-02-03 12:32:56.000000000 +0100
  81591. @@ -14,9 +14,8 @@
  81592. Lesser General Public License for more details.
  81593. You should have received a copy of the GNU Lesser General Public
  81594. - License along with the GNU C Library; if not, write to the Free
  81595. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81596. - 02111-1307 USA. */
  81597. + License along with the GNU C Library; if not, see
  81598. + <http://www.gnu.org/licenses/>. */
  81599. #include <math.h>
  81600. diff -Nur uClibc-0.9.33.2/libm/s_fpclassifyf.c uClibc/libm/s_fpclassifyf.c
  81601. --- uClibc-0.9.33.2/libm/s_fpclassifyf.c 2012-05-15 09:20:09.000000000 +0200
  81602. +++ uClibc/libm/s_fpclassifyf.c 2014-02-03 12:32:56.000000000 +0100
  81603. @@ -14,9 +14,8 @@
  81604. Lesser General Public License for more details.
  81605. You should have received a copy of the GNU Lesser General Public
  81606. - License along with the GNU C Library; if not, write to the Free
  81607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81608. - 02111-1307 USA. */
  81609. + License along with the GNU C Library; if not, see
  81610. + <http://www.gnu.org/licenses/>. */
  81611. #include <math.h>
  81612. #include "math_private.h"
  81613. diff -Nur uClibc-0.9.33.2/libm/s_llrint.c uClibc/libm/s_llrint.c
  81614. --- uClibc-0.9.33.2/libm/s_llrint.c 2012-05-15 09:20:09.000000000 +0200
  81615. +++ uClibc/libm/s_llrint.c 2014-02-03 12:32:56.000000000 +0100
  81616. @@ -15,9 +15,8 @@
  81617. Lesser General Public License for more details.
  81618. You should have received a copy of the GNU Lesser General Public
  81619. - License along with the GNU C Library; if not, write to the Free
  81620. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81621. - 02111-1307 USA. */
  81622. + License along with the GNU C Library; if not, see
  81623. + <http://www.gnu.org/licenses/>. */
  81624. #include <features.h>
  81625. /* Prevent math.h from defining a colliding inline */
  81626. @@ -34,7 +33,7 @@
  81627. long long int
  81628. llrint (double x)
  81629. {
  81630. - int32_t j0;
  81631. + int32_t _j0;
  81632. u_int32_t i1, i0;
  81633. long long int result;
  81634. volatile double w;
  81635. @@ -42,39 +41,39 @@
  81636. int sx;
  81637. EXTRACT_WORDS (i0, i1, x);
  81638. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81639. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81640. sx = i0 >> 31;
  81641. i0 &= 0xfffff;
  81642. i0 |= 0x100000;
  81643. - if (j0 < 20)
  81644. + if (_j0 < 20)
  81645. {
  81646. w = two52[sx] + x;
  81647. t = w - two52[sx];
  81648. EXTRACT_WORDS (i0, i1, t);
  81649. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81650. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81651. i0 &= 0xfffff;
  81652. i0 |= 0x100000;
  81653. - result = (j0 < 0 ? 0 : i0 >> (20 - j0));
  81654. + result = (_j0 < 0 ? 0 : i0 >> (20 - _j0));
  81655. }
  81656. - else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  81657. + else if (_j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  81658. {
  81659. - if (j0 >= 52)
  81660. - result = (((long long int) i0 << 32) | i1) << (j0 - 52);
  81661. + if (_j0 >= 52)
  81662. + result = (((long long int) i0 << 32) | i1) << (_j0 - 52);
  81663. else
  81664. {
  81665. w = two52[sx] + x;
  81666. t = w - two52[sx];
  81667. EXTRACT_WORDS (i0, i1, t);
  81668. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81669. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81670. i0 &= 0xfffff;
  81671. i0 |= 0x100000;
  81672. - if (j0 == 20)
  81673. + if (_j0 == 20)
  81674. result = (long long int) i0;
  81675. else
  81676. - result = ((long long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
  81677. + result = ((long long int) i0 << (_j0 - 20)) | (i1 >> (52 - _j0));
  81678. }
  81679. }
  81680. else
  81681. diff -Nur uClibc-0.9.33.2/libm/s_llround.c uClibc/libm/s_llround.c
  81682. --- uClibc-0.9.33.2/libm/s_llround.c 2012-05-15 09:20:09.000000000 +0200
  81683. +++ uClibc/libm/s_llround.c 2014-02-03 12:32:56.000000000 +0100
  81684. @@ -14,9 +14,8 @@
  81685. Lesser General Public License for more details.
  81686. You should have received a copy of the GNU Lesser General Public
  81687. - License along with the GNU C Library; if not, write to the Free
  81688. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81689. - 02111-1307 USA. */
  81690. + License along with the GNU C Library; if not, see
  81691. + <http://www.gnu.org/licenses/>. */
  81692. #include <math.h>
  81693. #include "math_private.h"
  81694. @@ -24,42 +23,42 @@
  81695. long long int
  81696. llround (double x)
  81697. {
  81698. - int32_t j0;
  81699. + int32_t _j0;
  81700. u_int32_t i1, i0;
  81701. long long int result;
  81702. int sign;
  81703. EXTRACT_WORDS (i0, i1, x);
  81704. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81705. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81706. sign = (i0 & 0x80000000) != 0 ? -1 : 1;
  81707. i0 &= 0xfffff;
  81708. i0 |= 0x100000;
  81709. - if (j0 < 20)
  81710. + if (_j0 < 20)
  81711. {
  81712. - if (j0 < 0)
  81713. - return j0 < -1 ? 0 : sign;
  81714. + if (_j0 < 0)
  81715. + return _j0 < -1 ? 0 : sign;
  81716. else
  81717. {
  81718. - i0 += 0x80000 >> j0;
  81719. + i0 += 0x80000 >> _j0;
  81720. - result = i0 >> (20 - j0);
  81721. + result = i0 >> (20 - _j0);
  81722. }
  81723. }
  81724. - else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  81725. + else if (_j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  81726. {
  81727. - if (j0 >= 52)
  81728. - result = (((long long int) i0 << 32) | i1) << (j0 - 52);
  81729. + if (_j0 >= 52)
  81730. + result = (((long long int) i0 << 32) | i1) << (_j0 - 52);
  81731. else
  81732. {
  81733. - u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
  81734. + u_int32_t j = i1 + (0x80000000 >> (_j0 - 20));
  81735. if (j < i1)
  81736. ++i0;
  81737. - if (j0 == 20)
  81738. + if (_j0 == 20)
  81739. result = (long long int) i0;
  81740. else
  81741. - result = ((long long int) i0 << (j0 - 20)) | (j >> (52 - j0));
  81742. + result = ((long long int) i0 << (_j0 - 20)) | (j >> (52 - _j0));
  81743. }
  81744. }
  81745. else
  81746. diff -Nur uClibc-0.9.33.2/libm/s_lrint.c uClibc/libm/s_lrint.c
  81747. --- uClibc-0.9.33.2/libm/s_lrint.c 2012-05-15 09:20:09.000000000 +0200
  81748. +++ uClibc/libm/s_lrint.c 2014-02-03 12:32:56.000000000 +0100
  81749. @@ -15,9 +15,8 @@
  81750. Lesser General Public License for more details.
  81751. You should have received a copy of the GNU Lesser General Public
  81752. - License along with the GNU C Library; if not, write to the Free
  81753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81754. - 02111-1307 USA. */
  81755. + License along with the GNU C Library; if not, see
  81756. + <http://www.gnu.org/licenses/>. */
  81757. #include <features.h>
  81758. /* Prevent math.h from defining a colliding inline */
  81759. @@ -35,7 +34,7 @@
  81760. long int
  81761. lrint (double x)
  81762. {
  81763. - int32_t j0;
  81764. + int32_t _j0;
  81765. u_int32_t i0,i1;
  81766. volatile double w;
  81767. double t;
  81768. @@ -43,44 +42,44 @@
  81769. int sx;
  81770. EXTRACT_WORDS (i0, i1, x);
  81771. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81772. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81773. sx = i0 >> 31;
  81774. i0 &= 0xfffff;
  81775. i0 |= 0x100000;
  81776. - if (j0 < 20)
  81777. + if (_j0 < 20)
  81778. {
  81779. - if (j0 < -1)
  81780. + if (_j0 < -1)
  81781. return 0;
  81782. else
  81783. {
  81784. w = two52[sx] + x;
  81785. t = w - two52[sx];
  81786. EXTRACT_WORDS (i0, i1, t);
  81787. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81788. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81789. i0 &= 0xfffff;
  81790. i0 |= 0x100000;
  81791. - result = i0 >> (20 - j0);
  81792. + result = i0 >> (20 - _j0);
  81793. }
  81794. }
  81795. - else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81796. + else if (_j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81797. {
  81798. - if (j0 >= 52)
  81799. - result = ((long int) i0 << (j0 - 20)) | (i1 << (j0 - 52));
  81800. + if (_j0 >= 52)
  81801. + result = ((long int) i0 << (_j0 - 20)) | (i1 << (_j0 - 52));
  81802. else
  81803. {
  81804. w = two52[sx] + x;
  81805. t = w - two52[sx];
  81806. EXTRACT_WORDS (i0, i1, t);
  81807. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81808. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81809. i0 &= 0xfffff;
  81810. i0 |= 0x100000;
  81811. - if (j0 == 20)
  81812. + if (_j0 == 20)
  81813. result = (long int) i0;
  81814. else
  81815. - result = ((long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
  81816. + result = ((long int) i0 << (_j0 - 20)) | (i1 >> (52 - _j0));
  81817. }
  81818. }
  81819. else
  81820. diff -Nur uClibc-0.9.33.2/libm/s_lround.c uClibc/libm/s_lround.c
  81821. --- uClibc-0.9.33.2/libm/s_lround.c 2012-05-15 09:20:09.000000000 +0200
  81822. +++ uClibc/libm/s_lround.c 2014-02-03 12:32:56.000000000 +0100
  81823. @@ -14,9 +14,8 @@
  81824. Lesser General Public License for more details.
  81825. You should have received a copy of the GNU Lesser General Public
  81826. - License along with the GNU C Library; if not, write to the Free
  81827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81828. - 02111-1307 USA. */
  81829. + License along with the GNU C Library; if not, see
  81830. + <http://www.gnu.org/licenses/>. */
  81831. #include <math.h>
  81832. #include "math_private.h"
  81833. @@ -24,42 +23,42 @@
  81834. long int
  81835. lround (double x)
  81836. {
  81837. - int32_t j0;
  81838. + int32_t _j0;
  81839. u_int32_t i1, i0;
  81840. long int result;
  81841. int sign;
  81842. EXTRACT_WORDS (i0, i1, x);
  81843. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81844. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81845. sign = (i0 & 0x80000000) != 0 ? -1 : 1;
  81846. i0 &= 0xfffff;
  81847. i0 |= 0x100000;
  81848. - if (j0 < 20)
  81849. + if (_j0 < 20)
  81850. {
  81851. - if (j0 < 0)
  81852. - return j0 < -1 ? 0 : sign;
  81853. + if (_j0 < 0)
  81854. + return _j0 < -1 ? 0 : sign;
  81855. else
  81856. {
  81857. - i0 += 0x80000 >> j0;
  81858. + i0 += 0x80000 >> _j0;
  81859. - result = i0 >> (20 - j0);
  81860. + result = i0 >> (20 - _j0);
  81861. }
  81862. }
  81863. - else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81864. + else if (_j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81865. {
  81866. - if (j0 >= 52)
  81867. - result = ((long int) i0 << (j0 - 20)) | (i1 << (j0 - 52));
  81868. + if (_j0 >= 52)
  81869. + result = ((long int) i0 << (_j0 - 20)) | (i1 << (_j0 - 52));
  81870. else
  81871. {
  81872. - u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
  81873. + u_int32_t j = i1 + (0x80000000 >> (_j0 - 20));
  81874. if (j < i1)
  81875. ++i0;
  81876. - if (j0 == 20)
  81877. + if (_j0 == 20)
  81878. result = (long int) i0;
  81879. else
  81880. - result = ((long int) i0 << (j0 - 20)) | (j >> (52 - j0));
  81881. + result = ((long int) i0 << (_j0 - 20)) | (j >> (52 - _j0));
  81882. }
  81883. }
  81884. else
  81885. diff -Nur uClibc-0.9.33.2/libm/s_modf.c uClibc/libm/s_modf.c
  81886. --- uClibc-0.9.33.2/libm/s_modf.c 2012-05-15 09:20:09.000000000 +0200
  81887. +++ uClibc/libm/s_modf.c 2014-02-03 12:32:56.000000000 +0100
  81888. @@ -26,16 +26,16 @@
  81889. double modf(double x, double *iptr)
  81890. {
  81891. - int32_t i0,i1,j0;
  81892. + int32_t i0,i1,_j0;
  81893. u_int32_t i;
  81894. EXTRACT_WORDS(i0,i1,x);
  81895. - j0 = ((i0>>20)&0x7ff)-0x3ff; /* exponent of x */
  81896. - if(j0<20) { /* integer part in high x */
  81897. - if(j0<0) { /* |x|<1 */
  81898. + _j0 = ((i0>>20)&0x7ff)-0x3ff; /* exponent of x */
  81899. + if(_j0<20) { /* integer part in high x */
  81900. + if(_j0<0) { /* |x|<1 */
  81901. INSERT_WORDS(*iptr,i0&0x80000000,0); /* *iptr = +-0 */
  81902. return x;
  81903. } else {
  81904. - i = (0x000fffff)>>j0;
  81905. + i = (0x000fffff)>>_j0;
  81906. if(((i0&i)|i1)==0) { /* x is integral */
  81907. *iptr = x;
  81908. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81909. @@ -45,15 +45,15 @@
  81910. return x - *iptr;
  81911. }
  81912. }
  81913. - } else if (j0>51) { /* no fraction part */
  81914. + } else if (_j0>51) { /* no fraction part */
  81915. *iptr = x*one;
  81916. /* We must handle NaNs separately. */
  81917. - if (j0 == 0x400 && ((i0 & 0xfffff) | i1))
  81918. + if (_j0 == 0x400 && ((i0 & 0xfffff) | i1))
  81919. return x*one;
  81920. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81921. return x;
  81922. } else { /* fraction part in low x */
  81923. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81924. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81925. if((i1&i)==0) { /* x is integral */
  81926. *iptr = x;
  81927. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81928. diff -Nur uClibc-0.9.33.2/libm/s_rint.c uClibc/libm/s_rint.c
  81929. --- uClibc-0.9.33.2/libm/s_rint.c 2012-05-15 09:20:09.000000000 +0200
  81930. +++ uClibc/libm/s_rint.c 2014-02-03 12:32:56.000000000 +0100
  81931. @@ -30,7 +30,7 @@
  81932. double rint(double x)
  81933. {
  81934. - int32_t i0, j0, sx;
  81935. + int32_t i0, _j0, sx;
  81936. u_int32_t i,i1;
  81937. double t;
  81938. /* We use w = x + 2^52; t = w - 2^52; trick to round x to integer.
  81939. @@ -43,11 +43,11 @@
  81940. EXTRACT_WORDS(i0,i1,x);
  81941. /* Unbiased exponent */
  81942. - j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff;
  81943. + _j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff;
  81944. - if (j0 > 51) {
  81945. + if (_j0 > 51) {
  81946. //Why bother? Just returning x works too
  81947. - //if (j0 == 0x400) /* inf or NaN */
  81948. + //if (_j0 == 0x400) /* inf or NaN */
  81949. // return x+x;
  81950. return x; /* x is integral */
  81951. }
  81952. @@ -55,8 +55,8 @@
  81953. /* Sign */
  81954. sx = ((u_int32_t)i0) >> 31;
  81955. - if (j0<20) {
  81956. - if (j0<0) { /* |x| < 1 */
  81957. + if (_j0<20) {
  81958. + if (_j0<0) { /* |x| < 1 */
  81959. if (((i0&0x7fffffff)|i1)==0) return x;
  81960. i1 |= (i0&0x0fffff);
  81961. i0 &= 0xfffe0000;
  81962. @@ -68,19 +68,19 @@
  81963. SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
  81964. return t;
  81965. } else {
  81966. - i = (0x000fffff)>>j0;
  81967. + i = (0x000fffff)>>_j0;
  81968. if (((i0&i)|i1)==0) return x; /* x is integral */
  81969. i>>=1;
  81970. if (((i0&i)|i1)!=0) {
  81971. - if (j0==19) i1 = 0x40000000;
  81972. - else i0 = (i0&(~i))|((0x20000)>>j0);
  81973. + if (_j0==19) i1 = 0x40000000;
  81974. + else i0 = (i0&(~i))|((0x20000)>>_j0);
  81975. }
  81976. }
  81977. } else {
  81978. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81979. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81980. if ((i1&i)==0) return x; /* x is integral */
  81981. i>>=1;
  81982. - if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
  81983. + if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(_j0-20));
  81984. }
  81985. INSERT_WORDS(x,i0,i1);
  81986. w = TWO52[sx]+x;
  81987. diff -Nur uClibc-0.9.33.2/libm/s_round.c uClibc/libm/s_round.c
  81988. --- uClibc-0.9.33.2/libm/s_round.c 2012-05-15 09:20:09.000000000 +0200
  81989. +++ uClibc/libm/s_round.c 2014-02-03 12:32:56.000000000 +0100
  81990. @@ -14,9 +14,8 @@
  81991. Lesser General Public License for more details.
  81992. You should have received a copy of the GNU Lesser General Public
  81993. - License along with the GNU C Library; if not, write to the Free
  81994. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81995. - 02111-1307 USA. */
  81996. + License along with the GNU C Library; if not, see
  81997. + <http://www.gnu.org/licenses/>. */
  81998. #include <math.h>
  81999. #include "math_private.h"
  82000. @@ -26,41 +25,41 @@
  82001. double
  82002. round (double x)
  82003. {
  82004. - int32_t i0, j0;
  82005. + int32_t i0, _j0;
  82006. u_int32_t i1;
  82007. EXTRACT_WORDS (i0, i1, x);
  82008. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  82009. - if (j0 < 20)
  82010. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  82011. + if (_j0 < 20)
  82012. {
  82013. - if (j0 < 0)
  82014. + if (_j0 < 0)
  82015. {
  82016. if (huge + x > 0.0)
  82017. {
  82018. i0 &= 0x80000000;
  82019. - if (j0 == -1)
  82020. + if (_j0 == -1)
  82021. i0 |= 0x3ff00000;
  82022. i1 = 0;
  82023. }
  82024. }
  82025. else
  82026. {
  82027. - u_int32_t i = 0x000fffff >> j0;
  82028. + u_int32_t i = 0x000fffff >> _j0;
  82029. if (((i0 & i) | i1) == 0)
  82030. /* X is integral. */
  82031. return x;
  82032. if (huge + x > 0.0)
  82033. {
  82034. /* Raise inexact if x != 0. */
  82035. - i0 += 0x00080000 >> j0;
  82036. + i0 += 0x00080000 >> _j0;
  82037. i0 &= ~i;
  82038. i1 = 0;
  82039. }
  82040. }
  82041. }
  82042. - else if (j0 > 51)
  82043. + else if (_j0 > 51)
  82044. {
  82045. - if (j0 == 0x400)
  82046. + if (_j0 == 0x400)
  82047. /* Inf or NaN. */
  82048. return x + x;
  82049. else
  82050. @@ -68,7 +67,7 @@
  82051. }
  82052. else
  82053. {
  82054. - u_int32_t i = 0xffffffff >> (j0 - 20);
  82055. + u_int32_t i = 0xffffffff >> (_j0 - 20);
  82056. if ((i1 & i) == 0)
  82057. /* X is integral. */
  82058. return x;
  82059. @@ -76,7 +75,7 @@
  82060. if (huge + x > 0.0)
  82061. {
  82062. /* Raise inexact if x != 0. */
  82063. - u_int32_t j = i1 + (1 << (51 - j0));
  82064. + u_int32_t j = i1 + (1 << (51 - _j0));
  82065. if (j < i1)
  82066. i0 += 1;
  82067. i1 = j;
  82068. diff -Nur uClibc-0.9.33.2/libm/s_scalbn.c uClibc/libm/s_scalbn.c
  82069. --- uClibc-0.9.33.2/libm/s_scalbn.c 2012-05-15 09:20:09.000000000 +0200
  82070. +++ uClibc/libm/s_scalbn.c 2014-02-03 12:32:56.000000000 +0100
  82071. @@ -62,12 +62,7 @@
  82072. libm_hidden_def(scalbln)
  82073. #if LONG_MAX == INT_MAX
  82074. -/* strong_alias(scalbln, scalbn) - "error: conflicting types for 'scalbn'"
  82075. - * because it tries to declare "typeof(scalbln) scalbn;"
  82076. - * which tries to give "long" parameter to scalbn.
  82077. - * Doing it by hand:
  82078. - */
  82079. -__typeof(scalbn) scalbn __attribute__((alias("scalbln")));
  82080. +strong_alias_untyped(scalbln,scalbn)
  82081. #else
  82082. double scalbn(double x, int n)
  82083. {
  82084. diff -Nur uClibc-0.9.33.2/libm/s_signbit.c uClibc/libm/s_signbit.c
  82085. --- uClibc-0.9.33.2/libm/s_signbit.c 2012-05-15 09:20:09.000000000 +0200
  82086. +++ uClibc/libm/s_signbit.c 2014-02-03 12:32:56.000000000 +0100
  82087. @@ -14,9 +14,8 @@
  82088. Lesser General Public License for more details.
  82089. You should have received a copy of the GNU Lesser General Public
  82090. - License along with the GNU C Library; if not, write to the Free
  82091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82092. - 02111-1307 USA. */
  82093. + License along with the GNU C Library; if not, see
  82094. + <http://www.gnu.org/licenses/>. */
  82095. #include <features.h>
  82096. /* Prevent math.h from defining a colliding inline */
  82097. diff -Nur uClibc-0.9.33.2/libm/s_signbitf.c uClibc/libm/s_signbitf.c
  82098. --- uClibc-0.9.33.2/libm/s_signbitf.c 2012-05-15 09:20:09.000000000 +0200
  82099. +++ uClibc/libm/s_signbitf.c 2014-02-03 12:32:56.000000000 +0100
  82100. @@ -14,9 +14,8 @@
  82101. Lesser General Public License for more details.
  82102. You should have received a copy of the GNU Lesser General Public
  82103. - License along with the GNU C Library; if not, write to the Free
  82104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82105. - 02111-1307 USA. */
  82106. + License along with the GNU C Library; if not, see
  82107. + <http://www.gnu.org/licenses/>. */
  82108. #include <features.h>
  82109. /* Prevent math.h from defining a colliding inline */
  82110. diff -Nur uClibc-0.9.33.2/libm/s_significand.c uClibc/libm/s_significand.c
  82111. --- uClibc-0.9.33.2/libm/s_significand.c 2012-05-15 09:20:09.000000000 +0200
  82112. +++ uClibc/libm/s_significand.c 2014-02-03 12:32:56.000000000 +0100
  82113. @@ -22,3 +22,4 @@
  82114. {
  82115. return __ieee754_scalb(x,(double) -ilogb(x));
  82116. }
  82117. +libm_hidden_def(significand)
  82118. diff -Nur uClibc-0.9.33.2/libm/s_trunc.c uClibc/libm/s_trunc.c
  82119. --- uClibc-0.9.33.2/libm/s_trunc.c 2012-05-15 09:20:09.000000000 +0200
  82120. +++ uClibc/libm/s_trunc.c 2014-02-03 12:32:56.000000000 +0100
  82121. @@ -14,9 +14,8 @@
  82122. Lesser General Public License for more details.
  82123. You should have received a copy of the GNU Lesser General Public
  82124. - License along with the GNU C Library; if not, write to the Free
  82125. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82126. - 02111-1307 USA. */
  82127. + License along with the GNU C Library; if not, see
  82128. + <http://www.gnu.org/licenses/>. */
  82129. #include <math.h>
  82130. #include "math_private.h"
  82131. @@ -24,30 +23,30 @@
  82132. double
  82133. trunc (double x)
  82134. {
  82135. - int32_t i0, j0;
  82136. + int32_t i0, _j0;
  82137. u_int32_t i1;
  82138. int sx;
  82139. EXTRACT_WORDS (i0, i1, x);
  82140. sx = i0 & 0x80000000;
  82141. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  82142. - if (j0 < 20)
  82143. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  82144. + if (_j0 < 20)
  82145. {
  82146. - if (j0 < 0)
  82147. + if (_j0 < 0)
  82148. /* The magnitude of the number is < 1 so the result is +-0. */
  82149. INSERT_WORDS (x, sx, 0);
  82150. else
  82151. - INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> j0)), 0);
  82152. + INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> _j0)), 0);
  82153. }
  82154. - else if (j0 > 51)
  82155. + else if (_j0 > 51)
  82156. {
  82157. - if (j0 == 0x400)
  82158. + if (_j0 == 0x400)
  82159. /* x is inf or NaN. */
  82160. return x + x;
  82161. }
  82162. else
  82163. {
  82164. - INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (j0 - 20)));
  82165. + INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (_j0 - 20)));
  82166. }
  82167. return x;
  82168. diff -Nur uClibc-0.9.33.2/libnsl/nsl.c uClibc/libnsl/nsl.c
  82169. --- uClibc-0.9.33.2/libnsl/nsl.c 2012-05-15 09:20:09.000000000 +0200
  82170. +++ uClibc/libnsl/nsl.c 2014-02-03 12:32:56.000000000 +0100
  82171. @@ -7,8 +7,6 @@
  82172. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  82173. */
  82174. -#include <features.h>
  82175. -
  82176. void __stub2(void);
  82177. void __stub2(void)
  82178. {
  82179. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/alloca_cutoff.c uClibc/libpthread/linuxthreads/alloca_cutoff.c
  82180. --- uClibc-0.9.33.2/libpthread/linuxthreads/alloca_cutoff.c 2012-05-15 09:20:09.000000000 +0200
  82181. +++ uClibc/libpthread/linuxthreads/alloca_cutoff.c 2014-02-03 12:32:56.000000000 +0100
  82182. @@ -13,9 +13,8 @@
  82183. Lesser General Public License for more details.
  82184. You should have received a copy of the GNU Lesser General Public
  82185. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82186. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82187. - Boston, MA 02111-1307, USA. */
  82188. + License along with the GNU C Library; see the file COPYING.LIB. If
  82189. + not, see <http://www.gnu.org/licenses/>. */
  82190. #include <alloca.h>
  82191. #include <stdlib.h>
  82192. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/attr.c uClibc/libpthread/linuxthreads/attr.c
  82193. --- uClibc-0.9.33.2/libpthread/linuxthreads/attr.c 2012-05-15 09:20:09.000000000 +0200
  82194. +++ uClibc/libpthread/linuxthreads/attr.c 2014-02-03 12:32:56.000000000 +0100
  82195. @@ -361,7 +361,7 @@
  82196. attr->__scope = PTHREAD_SCOPE_SYSTEM;
  82197. #ifdef _STACK_GROWS_DOWN
  82198. -# ifdef USE_TLS
  82199. +# ifdef __UCLIBC_HAS_TLS__
  82200. attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr
  82201. - descr->p_guardsize;
  82202. # else
  82203. @@ -369,7 +369,7 @@
  82204. - descr->p_guardsize;
  82205. # endif
  82206. #else
  82207. -# ifdef USE_TLS
  82208. +# ifdef __UCLIBC_HAS_TLS__
  82209. attr->__stacksize = (char *)descr->p_guardaddr - descr->p_stackaddr;
  82210. # else
  82211. attr->__stacksize = (char *)descr->p_guardaddr - (char *)descr;
  82212. @@ -385,7 +385,7 @@
  82213. otherwise the range of the stack area cannot be computed. */
  82214. attr->__stacksize += attr->__guardsize;
  82215. #endif
  82216. -#ifdef USE_TLS
  82217. +#ifdef __UCLIBC_HAS_TLS__
  82218. attr->__stackaddr = descr->p_stackaddr;
  82219. #else
  82220. # ifndef _STACK_GROWS_UP
  82221. @@ -395,7 +395,7 @@
  82222. # endif
  82223. #endif
  82224. -#ifdef USE_TLS
  82225. +#ifdef __UCLIBC_HAS_TLS__
  82226. if (attr->__stackaddr == NULL)
  82227. #else
  82228. if (descr == &__pthread_initial_thread)
  82229. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/barrier.c uClibc/libpthread/linuxthreads/barrier.c
  82230. --- uClibc-0.9.33.2/libpthread/linuxthreads/barrier.c 2012-05-15 09:20:09.000000000 +0200
  82231. +++ uClibc/libpthread/linuxthreads/barrier.c 2014-02-03 12:32:56.000000000 +0100
  82232. @@ -14,9 +14,8 @@
  82233. Lesser General Public License for more details.
  82234. You should have received a copy of the GNU Lesser General Public
  82235. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82236. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82237. - Boston, MA 02111-1307, USA. */
  82238. + License along with the GNU C Library; see the file COPYING.LIB. If
  82239. + not, see <http://www.gnu.org/licenses/>. */
  82240. #include <errno.h>
  82241. #include "pthread.h"
  82242. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/cancel.c uClibc/libpthread/linuxthreads/cancel.c
  82243. --- uClibc-0.9.33.2/libpthread/linuxthreads/cancel.c 2012-05-15 09:20:09.000000000 +0200
  82244. +++ uClibc/libpthread/linuxthreads/cancel.c 2014-02-03 12:32:56.000000000 +0100
  82245. @@ -15,7 +15,6 @@
  82246. /* Thread cancellation */
  82247. #include <errno.h>
  82248. -#include <libc-internal.h>
  82249. #include "pthread.h"
  82250. #include "internals.h"
  82251. #include "spinlock.h"
  82252. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/.cvsignore uClibc/libpthread/linuxthreads/.cvsignore
  82253. --- uClibc-0.9.33.2/libpthread/linuxthreads/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  82254. +++ uClibc/libpthread/linuxthreads/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  82255. @@ -1,3 +0,0 @@
  82256. -.cvsignore
  82257. -*.os
  82258. -Makefile.in
  82259. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/descr.h uClibc/libpthread/linuxthreads/descr.h
  82260. --- uClibc-0.9.33.2/libpthread/linuxthreads/descr.h 2012-05-15 09:20:09.000000000 +0200
  82261. +++ uClibc/libpthread/linuxthreads/descr.h 2014-02-03 12:32:56.000000000 +0100
  82262. @@ -23,7 +23,7 @@
  82263. #include <stdint.h>
  82264. #include <sys/types.h>
  82265. #include <hp-timing.h>
  82266. -#ifdef USE_TLS
  82267. +#ifdef __UCLIBC_HAS_TLS__
  82268. #include <tls.h>
  82269. #endif
  82270. #include "uClibc-glue.h"
  82271. @@ -112,7 +112,7 @@
  82272. struct _pthread_descr_struct
  82273. {
  82274. -#if !defined USE_TLS || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
  82275. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
  82276. /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */
  82277. union
  82278. {
  82279. @@ -157,7 +157,7 @@
  82280. char p_sigwaiting; /* true if a sigwait() is in progress */
  82281. struct pthread_start_args p_start_args; /* arguments for thread creation */
  82282. void ** p_specific[PTHREAD_KEY_1STLEVEL_SIZE]; /* thread-specific data */
  82283. -#if !(USE_TLS && HAVE___THREAD)
  82284. +#ifndef __UCLIBC_HAS_TLS__
  82285. void * p_libc_specific[_LIBC_TSD_KEY_N]; /* thread-specific data for libc */
  82286. int * p_errnop; /* pointer to used errno variable */
  82287. int p_errno; /* error returned by last system call */
  82288. @@ -185,7 +185,7 @@
  82289. #if HP_TIMING_AVAIL
  82290. hp_timing_t p_cpuclock_offset; /* Initial CPU clock for thread. */
  82291. #endif
  82292. -#ifdef USE_TLS
  82293. +#ifdef __UCLIBC_HAS_TLS__
  82294. char *p_stackaddr; /* Stack address. */
  82295. #endif
  82296. size_t p_alloca_cutoff; /* Maximum size which should be allocated
  82297. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/errno.c uClibc/libpthread/linuxthreads/errno.c
  82298. --- uClibc-0.9.33.2/libpthread/linuxthreads/errno.c 2012-05-15 09:20:09.000000000 +0200
  82299. +++ uClibc/libpthread/linuxthreads/errno.c 2014-02-03 12:32:56.000000000 +0100
  82300. @@ -20,7 +20,7 @@
  82301. #include "pthread.h"
  82302. #include "internals.h"
  82303. -#if !USE_TLS || !HAVE___THREAD
  82304. +#ifndef __UCLIBC_HAS_TLS__
  82305. /* The definition in libc is sufficient if we use TLS. */
  82306. int *
  82307. __errno_location (void)
  82308. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/events.c uClibc/libpthread/linuxthreads/events.c
  82309. --- uClibc-0.9.33.2/libpthread/linuxthreads/events.c 2012-05-15 09:20:09.000000000 +0200
  82310. +++ uClibc/libpthread/linuxthreads/events.c 2014-02-03 12:32:56.000000000 +0100
  82311. @@ -13,9 +13,8 @@
  82312. Lesser General Public License for more details.
  82313. You should have received a copy of the GNU Lesser General Public
  82314. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82315. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82316. - Boston, MA 02111-1307, USA. */
  82317. + License along with the GNU C Library; see the file COPYING.LIB. If
  82318. + not, see <http://www.gnu.org/licenses/>. */
  82319. /* The functions contained here do nothing, they just return. */
  82320. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/forward.c uClibc/libpthread/linuxthreads/forward.c
  82321. --- uClibc-0.9.33.2/libpthread/linuxthreads/forward.c 2012-05-15 09:20:09.000000000 +0200
  82322. +++ uClibc/libpthread/linuxthreads/forward.c 2014-02-03 12:32:56.000000000 +0100
  82323. @@ -13,9 +13,8 @@
  82324. Lesser General Public License for more details.
  82325. You should have received a copy of the GNU Lesser General Public
  82326. - License along with the GNU C Library; if not, write to the Free
  82327. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82328. - 02111-1307 USA. */
  82329. + License along with the GNU C Library; if not, see
  82330. + <http://www.gnu.org/licenses/>. */
  82331. #include <features.h>
  82332. #include <stdlib.h>
  82333. @@ -26,7 +25,7 @@
  82334. #include "internals.h"
  82335. /* Pointers to the libc functions. */
  82336. -struct pthread_functions __libc_pthread_functions attribute_hidden;
  82337. +struct pthread_functions __libc_pthread_functions;
  82338. # define FORWARD2(name, rettype, decl, params, defaction) \
  82339. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/internals.h uClibc/libpthread/linuxthreads/internals.h
  82340. --- uClibc-0.9.33.2/libpthread/linuxthreads/internals.h 2012-05-15 09:20:09.000000000 +0200
  82341. +++ uClibc/libpthread/linuxthreads/internals.h 2014-02-03 12:32:56.000000000 +0100
  82342. @@ -30,7 +30,7 @@
  82343. #include <bits/sigcontextinfo.h>
  82344. #include <bits/pthreadtypes.h>
  82345. -#ifdef USE_TLS
  82346. +#ifdef __UCLIBC_HAS_TLS__
  82347. #include <tls.h>
  82348. #endif
  82349. #include "descr.h"
  82350. @@ -200,19 +200,17 @@
  82351. /* The page size we can get from the system. This should likely not be
  82352. changed by the machine file but, you never know. */
  82353. -#ifndef PAGE_SIZE
  82354. -#define PAGE_SIZE (sysconf (_SC_PAGE_SIZE))
  82355. -#endif
  82356. +#define __PAGE_SIZE (sysconf (_SC_PAGESIZE))
  82357. -/* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
  82358. +/* The initial size of the thread stack. Must be a multiple of __PAGE_SIZE. */
  82359. #ifndef INITIAL_STACK_SIZE
  82360. -#define INITIAL_STACK_SIZE (4 * PAGE_SIZE)
  82361. +#define INITIAL_STACK_SIZE (4 * __PAGE_SIZE)
  82362. #endif
  82363. /* Size of the thread manager stack. The "- 32" avoids wasting space
  82364. with some malloc() implementations. */
  82365. #ifndef THREAD_MANAGER_STACK_SIZE
  82366. -#define THREAD_MANAGER_STACK_SIZE (2 * PAGE_SIZE - 32)
  82367. +#define THREAD_MANAGER_STACK_SIZE (2 * __PAGE_SIZE - 32)
  82368. #endif
  82369. /* The base of the "array" of thread stacks. The array will grow down from
  82370. @@ -285,7 +283,7 @@
  82371. extern void __pthread_perform_cleanup (char *currentframe);
  82372. extern void __pthread_init_max_stacksize (void);
  82373. extern int __pthread_initialize_manager (void);
  82374. -extern void __pthread_message (const char * fmt, ...);
  82375. +extern void __pthread_message (const char * fmt, ...) attribute_hidden;
  82376. extern int __pthread_manager (void *reqfd);
  82377. extern int __pthread_manager_event (void *reqfd);
  82378. extern void __pthread_manager_sighandler (int sig);
  82379. @@ -347,7 +345,7 @@
  82380. int *__kind);
  82381. extern void __pthread_kill_other_threads_np (void);
  82382. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  82383. - __const pthread_mutexattr_t *__mutex_attr);
  82384. + const pthread_mutexattr_t *__mutex_attr);
  82385. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  82386. extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
  82387. extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
  82388. @@ -393,14 +391,14 @@
  82389. extern void __pthread_sigsuspend (const sigset_t *mask) attribute_hidden;
  82390. extern int __pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  82391. - __const struct timespec *__restrict
  82392. + const struct timespec *__restrict
  82393. __abstime);
  82394. extern int __pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  82395. - __const struct timespec *__restrict
  82396. + const struct timespec *__restrict
  82397. __abstime);
  82398. extern int __pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr);
  82399. -extern int __pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  82400. +extern int __pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  82401. __restrict __attr,
  82402. int *__restrict __pshared);
  82403. @@ -440,10 +438,12 @@
  82404. extern void __pthread_initialize (void);
  82405. /* TSD. */
  82406. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  82407. extern int __pthread_internal_tsd_set (int key, const void * pointer);
  82408. extern void * __pthread_internal_tsd_get (int key);
  82409. extern void ** __attribute__ ((__const__))
  82410. __pthread_internal_tsd_address (int key);
  82411. +#endif
  82412. /* Sighandler wrappers. */
  82413. extern void __pthread_sighandler(int signo, SIGCONTEXT ctx);
  82414. @@ -508,8 +508,6 @@
  82415. # define LIBC_CANCEL_HANDLED() /* Nothing. */
  82416. #endif
  82417. -extern int * __libc_pthread_init (const struct pthread_functions *functions);
  82418. -
  82419. #if !defined NOT_IN_libc && !defined FLOATING_STACKS
  82420. # ifdef SHARED
  82421. # define thread_self() \
  82422. @@ -520,7 +518,7 @@
  82423. # endif
  82424. #endif
  82425. -#ifndef USE_TLS
  82426. +#ifndef __UCLIBC_HAS_TLS__
  82427. # define __manager_thread (&__pthread_manager_thread)
  82428. #else
  82429. # define __manager_thread __pthread_manager_threadp
  82430. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/libc-cancellation.c uClibc/libpthread/linuxthreads/libc-cancellation.c
  82431. --- uClibc-0.9.33.2/libpthread/linuxthreads/libc-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  82432. +++ uClibc/libpthread/linuxthreads/libc-cancellation.c 2014-02-03 12:32:56.000000000 +0100
  82433. @@ -13,9 +13,8 @@
  82434. Lesser General Public License for more details.
  82435. You should have received a copy of the GNU Lesser General Public
  82436. - License along with the GNU C Library; if not, write to the Free
  82437. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82438. - 02111-1307 USA. */
  82439. + License along with the GNU C Library; if not, see
  82440. + <http://www.gnu.org/licenses/>. */
  82441. #include <errno.h>
  82442. #include <rpc/rpc.h>
  82443. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/libc_pthread_init.c uClibc/libpthread/linuxthreads/libc_pthread_init.c
  82444. --- uClibc-0.9.33.2/libpthread/linuxthreads/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  82445. +++ uClibc/libpthread/linuxthreads/libc_pthread_init.c 2014-02-03 12:32:56.000000000 +0100
  82446. @@ -13,14 +13,13 @@
  82447. Lesser General Public License for more details.
  82448. You should have received a copy of the GNU Lesser General Public
  82449. - License along with the GNU C Library; if not, write to the Free
  82450. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82451. - 02111-1307 USA. */
  82452. + License along with the GNU C Library; if not, see
  82453. + <http://www.gnu.org/licenses/>. */
  82454. #include <locale.h>
  82455. #include <stdlib.h>
  82456. #include <string.h>
  82457. -#ifdef USE_TLS
  82458. +#ifdef __UCLIBC_HAS_TLS__
  82459. #include <tls.h>
  82460. #endif
  82461. #include "internals.h"
  82462. @@ -31,8 +30,7 @@
  82463. int *
  82464. -__libc_pthread_init (functions)
  82465. - const struct pthread_functions *functions;
  82466. +__libc_pthread_init(const struct pthread_functions *functions)
  82467. {
  82468. #ifdef SHARED
  82469. /* We copy the content of the variable pointed to by the FUNCTIONS
  82470. @@ -42,7 +40,7 @@
  82471. sizeof (__libc_pthread_functions));
  82472. #endif
  82473. -#if !(USE_TLS && HAVE___THREAD)
  82474. +#ifndef __UCLIBC_HAS_TLS__
  82475. /* Initialize thread-locale current locale to point to the global one.
  82476. With __thread support, the variable's initializer takes care of this. */
  82477. __uselocale (LC_GLOBAL_LOCALE);
  82478. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/lockfile.c uClibc/libpthread/linuxthreads/lockfile.c
  82479. --- uClibc-0.9.33.2/libpthread/linuxthreads/lockfile.c 2012-05-15 09:20:09.000000000 +0200
  82480. +++ uClibc/libpthread/linuxthreads/lockfile.c 2014-02-03 12:32:56.000000000 +0100
  82481. @@ -13,9 +13,8 @@
  82482. Lesser General Public License for more details.
  82483. You should have received a copy of the GNU Lesser General Public
  82484. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82485. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82486. - Boston, MA 02111-1307, USA. */
  82487. + License along with the GNU C Library; see the file COPYING.LIB. If
  82488. + not, see <http://www.gnu.org/licenses/>. */
  82489. #include <bits/libc-lock.h>
  82490. #include <stdio.h>
  82491. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/manager.c uClibc/libpthread/linuxthreads/manager.c
  82492. --- uClibc-0.9.33.2/libpthread/linuxthreads/manager.c 2012-05-15 09:20:09.000000000 +0200
  82493. +++ uClibc/libpthread/linuxthreads/manager.c 2014-02-03 12:32:56.000000000 +0100
  82494. @@ -126,7 +126,7 @@
  82495. #ifdef INIT_THREAD_SELF
  82496. INIT_THREAD_SELF(self, 1);
  82497. #endif
  82498. -#if !(USE_TLS && HAVE___THREAD)
  82499. +#ifndef __UCLIBC_HAS_TLS__
  82500. /* Set the error variable. */
  82501. self->p_errnop = &self->p_errno;
  82502. self->p_h_errnop = &self->p_h_errno;
  82503. @@ -289,7 +289,7 @@
  82504. __sched_setscheduler(THREAD_GETMEM(self, p_pid),
  82505. SCHED_OTHER, &default_params);
  82506. }
  82507. -#if !(USE_TLS && HAVE___THREAD)
  82508. +#ifndef __UCLIBC_HAS_TLS__
  82509. /* Initialize thread-locale current locale to point to the global one.
  82510. With __thread support, the variable's initializer takes care of this. */
  82511. __uselocale (LC_GLOBAL_LOCALE);
  82512. @@ -333,7 +333,7 @@
  82513. pthread_start_thread (arg);
  82514. }
  82515. -#if defined USE_TLS && !FLOATING_STACKS
  82516. +#if defined __UCLIBC_HAS_TLS__ && !FLOATING_STACKS
  82517. # error "TLS can only work with floating stacks"
  82518. #endif
  82519. @@ -351,7 +351,7 @@
  82520. char * guardaddr;
  82521. size_t stacksize, guardsize;
  82522. -#ifdef USE_TLS
  82523. +#ifdef __UCLIBC_HAS_TLS__
  82524. /* TLS cannot work with fixed thread descriptor addresses. */
  82525. assert (default_new_thread == NULL);
  82526. #endif
  82527. @@ -360,7 +360,7 @@
  82528. {
  82529. #ifdef _STACK_GROWS_UP
  82530. /* The user provided a stack. */
  82531. -# ifdef USE_TLS
  82532. +# ifdef __UCLIBC_HAS_TLS__
  82533. /* This value is not needed. */
  82534. new_thread = (pthread_descr) attr->__stackaddr;
  82535. new_thread_bottom = (char *) new_thread;
  82536. @@ -381,7 +381,7 @@
  82537. addresses, stackaddr would be the lowest address in the stack
  82538. segment, so that it is consistently close to the initial sp
  82539. value. */
  82540. -# ifdef USE_TLS
  82541. +# ifdef __UCLIBC_HAS_TLS__
  82542. new_thread = (pthread_descr) attr->__stackaddr;
  82543. # else
  82544. new_thread =
  82545. @@ -394,7 +394,7 @@
  82546. #ifndef THREAD_SELF
  82547. __pthread_nonstandard_stacks = 1;
  82548. #endif
  82549. -#ifndef USE_TLS
  82550. +#ifndef __UCLIBC_HAS_TLS__
  82551. /* Clear the thread data structure. */
  82552. memset (new_thread, '\0', sizeof (*new_thread));
  82553. #endif
  82554. @@ -438,7 +438,7 @@
  82555. mprotect (guardaddr, guardsize, PROT_NONE);
  82556. new_thread_bottom = (char *) map_addr;
  82557. -# ifdef USE_TLS
  82558. +# ifdef __UCLIBC_HAS_TLS__
  82559. new_thread = ((pthread_descr) (new_thread_bottom + stacksize
  82560. + guardsize));
  82561. # else
  82562. @@ -451,7 +451,7 @@
  82563. mprotect (guardaddr, guardsize, PROT_NONE);
  82564. new_thread_bottom = (char *) map_addr + guardsize;
  82565. -# ifdef USE_TLS
  82566. +# ifdef __UCLIBC_HAS_TLS__
  82567. new_thread = ((pthread_descr) (new_thread_bottom + stacksize));
  82568. # else
  82569. new_thread = ((pthread_descr) (new_thread_bottom + stacksize)) - 1;
  82570. @@ -462,7 +462,7 @@
  82571. mprotect (guardaddr, guardsize, PROT_NONE);
  82572. new_thread = (pthread_descr) map_addr;
  82573. -# ifdef USE_TLS
  82574. +# ifdef __UCLIBC_HAS_TLS__
  82575. new_thread_bottom = (char *) new_thread;
  82576. # else
  82577. new_thread_bottom = (char *) (new_thread + 1);
  82578. @@ -597,7 +597,7 @@
  82579. int pagesize = __getpagesize();
  82580. int saved_errno = 0;
  82581. -#ifdef USE_TLS
  82582. +#ifdef __UCLIBC_HAS_TLS__
  82583. new_thread = _dl_allocate_tls (NULL);
  82584. if (new_thread == NULL)
  82585. return EAGAIN;
  82586. @@ -621,7 +621,7 @@
  82587. {
  82588. if (sseg >= PTHREAD_THREADS_MAX)
  82589. {
  82590. -#ifdef USE_TLS
  82591. +#ifdef __UCLIBC_HAS_TLS__
  82592. # if defined(TLS_DTV_AT_TP)
  82593. new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
  82594. # endif
  82595. @@ -635,7 +635,7 @@
  82596. pagesize, &stack_addr, &new_thread_bottom,
  82597. &guardaddr, &guardsize, &stksize) == 0)
  82598. {
  82599. -#ifdef USE_TLS
  82600. +#ifdef __UCLIBC_HAS_TLS__
  82601. new_thread->p_stackaddr = stack_addr;
  82602. #else
  82603. new_thread = (pthread_descr) stack_addr;
  82604. @@ -657,18 +657,18 @@
  82605. new_thread_id = sseg + pthread_threads_counter;
  82606. /* Initialize the thread descriptor. Elements which have to be
  82607. initialized to zero already have this value. */
  82608. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  82609. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82610. new_thread->p_header.data.tcb = new_thread;
  82611. new_thread->p_header.data.self = new_thread;
  82612. #endif
  82613. -#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
  82614. +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82615. new_thread->p_multiple_threads = 1;
  82616. #endif
  82617. new_thread->p_tid = new_thread_id;
  82618. new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
  82619. new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
  82620. new_thread->p_canceltype = PTHREAD_CANCEL_DEFERRED;
  82621. -#if !(USE_TLS && HAVE___THREAD)
  82622. +#ifndef __UCLIBC_HAS_TLS__
  82623. new_thread->p_errnop = &new_thread->p_errno;
  82624. new_thread->p_h_errnop = &new_thread->p_h_errno;
  82625. new_thread->p_resp = &new_thread->p_res;
  82626. @@ -807,7 +807,7 @@
  82627. munmap((caddr_t)new_thread_bottom,
  82628. 2 * stacksize + new_thread->p_guardsize);
  82629. #elif defined _STACK_GROWS_UP
  82630. -# ifdef USE_TLS
  82631. +# ifdef __UCLIBC_HAS_TLS__
  82632. size_t stacksize = guardaddr - stack_addr;
  82633. munmap(stack_addr, stacksize + guardsize);
  82634. # else
  82635. @@ -815,7 +815,7 @@
  82636. munmap(new_thread, stacksize + guardsize);
  82637. # endif
  82638. #else
  82639. -# ifdef USE_TLS
  82640. +# ifdef __UCLIBC_HAS_TLS__
  82641. size_t stacksize = stack_addr - new_thread_bottom;
  82642. # else
  82643. size_t stacksize = (char *)(new_thread+1) - new_thread_bottom;
  82644. @@ -823,7 +823,7 @@
  82645. munmap(new_thread_bottom - guardsize, guardsize + stacksize);
  82646. #endif
  82647. }
  82648. -#ifdef USE_TLS
  82649. +#ifdef __UCLIBC_HAS_TLS__
  82650. # if defined(TLS_DTV_AT_TP)
  82651. new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
  82652. # endif
  82653. @@ -890,7 +890,7 @@
  82654. /* Free the stack and thread descriptor area */
  82655. char *guardaddr = th->p_guardaddr;
  82656. #ifdef _STACK_GROWS_UP
  82657. -# ifdef USE_TLS
  82658. +# ifdef __UCLIBC_HAS_TLS__
  82659. size_t stacksize = guardaddr - th->p_stackaddr;
  82660. guardaddr = th->p_stackaddr;
  82661. # else
  82662. @@ -900,7 +900,7 @@
  82663. #else
  82664. /* Guardaddr is always set, even if guardsize is 0. This allows
  82665. us to compute everything else. */
  82666. -# ifdef USE_TLS
  82667. +# ifdef __UCLIBC_HAS_TLS__
  82668. size_t stacksize = th->p_stackaddr - guardaddr - guardsize;
  82669. # else
  82670. size_t stacksize = (char *)(th+1) - guardaddr - guardsize;
  82671. @@ -916,7 +916,7 @@
  82672. }
  82673. -#ifdef USE_TLS
  82674. +#ifdef __UCLIBC_HAS_TLS__
  82675. # if defined(TLS_DTV_AT_TP)
  82676. th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE);
  82677. # endif
  82678. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptcleanup.c uClibc/libpthread/linuxthreads/ptcleanup.c
  82679. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptcleanup.c 2012-05-15 09:20:09.000000000 +0200
  82680. +++ uClibc/libpthread/linuxthreads/ptcleanup.c 2014-02-03 12:32:56.000000000 +0100
  82681. @@ -20,8 +20,8 @@
  82682. #include <setjmp.h>
  82683. #include "pthread.h"
  82684. #include "internals.h"
  82685. -#ifndef NO_PTR_DEMANGLE
  82686. #include <jmpbuf-unwind.h>
  82687. +#ifndef NO_PTR_DEMANGLE
  82688. #define __JMPBUF_UNWINDS(a,b,c) _JMPBUF_UNWINDS(a,b,c)
  82689. #else
  82690. #define __JMPBUF_UNWINDS(a,b,c) _JMPBUF_UNWINDS(a,b)
  82691. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_gettime.c uClibc/libpthread/linuxthreads/ptclock_gettime.c
  82692. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  82693. +++ uClibc/libpthread/linuxthreads/ptclock_gettime.c 2014-02-03 12:32:56.000000000 +0100
  82694. @@ -12,13 +12,11 @@
  82695. Lesser General Public License for more details.
  82696. You should have received a copy of the GNU Lesser General Public
  82697. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82698. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82699. - Boston, MA 02111-1307, USA. */
  82700. + License along with the GNU C Library; see the file COPYING.LIB. If
  82701. + not, see <http://www.gnu.org/licenses/>. */
  82702. #include <errno.h>
  82703. #include <time.h>
  82704. -#include <libc-internal.h>
  82705. #include "internals.h"
  82706. #include "spinlock.h"
  82707. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_settime.c uClibc/libpthread/linuxthreads/ptclock_settime.c
  82708. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_settime.c 2012-05-15 09:20:09.000000000 +0200
  82709. +++ uClibc/libpthread/linuxthreads/ptclock_settime.c 2014-02-03 12:32:56.000000000 +0100
  82710. @@ -12,13 +12,11 @@
  82711. Lesser General Public License for more details.
  82712. You should have received a copy of the GNU Lesser General Public
  82713. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82714. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82715. - Boston, MA 02111-1307, USA. */
  82716. + License along with the GNU C Library; see the file COPYING.LIB. If
  82717. + not, see <http://www.gnu.org/licenses/>. */
  82718. #include <errno.h>
  82719. #include <time.h>
  82720. -#include <libc-internal.h>
  82721. #include "internals.h"
  82722. #include "spinlock.h"
  82723. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptfork.c uClibc/libpthread/linuxthreads/ptfork.c
  82724. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptfork.c 2012-05-15 09:20:09.000000000 +0200
  82725. +++ uClibc/libpthread/linuxthreads/ptfork.c 2014-02-03 12:32:56.000000000 +0100
  82726. @@ -23,8 +23,6 @@
  82727. #include <bits/libc-lock.h>
  82728. #include "fork.h"
  82729. -extern int __libc_fork (void);
  82730. -
  82731. pid_t __pthread_fork (struct fork_block *b)
  82732. {
  82733. pid_t pid;
  82734. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_atfork.c uClibc/libpthread/linuxthreads/pthread_atfork.c
  82735. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_atfork.c 2012-05-15 09:20:09.000000000 +0200
  82736. +++ uClibc/libpthread/linuxthreads/pthread_atfork.c 2014-02-03 12:32:57.000000000 +0100
  82737. @@ -30,9 +30,8 @@
  82738. Lesser General Public License for more details.
  82739. You should have received a copy of the GNU Lesser General Public
  82740. - License along with the GNU C Library; if not, write to the Free
  82741. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82742. - 02111-1307 USA. */
  82743. + License along with the GNU C Library; if not, see
  82744. + <http://www.gnu.org/licenses/>. */
  82745. #include "internals.h"
  82746. #include <fork.h>
  82747. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread.c uClibc/libpthread/linuxthreads/pthread.c
  82748. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread.c 2012-05-15 09:20:09.000000000 +0200
  82749. +++ uClibc/libpthread/linuxthreads/pthread.c 2014-02-03 12:32:56.000000000 +0100
  82750. @@ -37,10 +37,7 @@
  82751. # error "This must not happen"
  82752. #endif
  82753. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  82754. -extern __typeof(sigaction) __libc_sigaction;
  82755. -
  82756. -#if !(USE_TLS && HAVE___THREAD)
  82757. +#ifndef __UCLIBC_HAS_TLS__
  82758. /* These variables are used by the setup code. */
  82759. extern int _errno;
  82760. extern int _h_errno;
  82761. @@ -53,7 +50,7 @@
  82762. # endif
  82763. #endif
  82764. -#ifdef USE_TLS
  82765. +#ifdef __UCLIBC_HAS_TLS__
  82766. /* We need only a few variables. */
  82767. #define manager_thread __pthread_manager_threadp
  82768. @@ -70,7 +67,7 @@
  82769. .p_tid = PTHREAD_THREADS_MAX,
  82770. .p_lock = &__pthread_handles[0].h_lock,
  82771. .p_start_args = PTHREAD_START_ARGS_INITIALIZER(NULL),
  82772. -#if !(USE_TLS && HAVE___THREAD)
  82773. +#ifndef __UCLIBC_HAS_TLS__
  82774. .p_errnop = &_errno,
  82775. .p_h_errnop = &_h_errno,
  82776. #endif
  82777. @@ -89,7 +86,7 @@
  82778. .p_header.data.multiple_threads = 1,
  82779. .p_lock = &__pthread_handles[1].h_lock,
  82780. .p_start_args = PTHREAD_START_ARGS_INITIALIZER(__pthread_manager),
  82781. -#if !(USE_TLS && HAVE___THREAD)
  82782. +#ifndef __UCLIBC_HAS_TLS__
  82783. .p_errnop = &__pthread_manager_thread.p_errno,
  82784. #endif
  82785. .p_nr = 1,
  82786. @@ -101,7 +98,7 @@
  82787. /* Pointer to the main thread (the father of the thread manager thread) */
  82788. /* Originally, this is the initial thread, but this changes after fork() */
  82789. -#ifdef USE_TLS
  82790. +#ifdef __UCLIBC_HAS_TLS__
  82791. pthread_descr __pthread_main_thread;
  82792. #else
  82793. pthread_descr __pthread_main_thread = &__pthread_initial_thread;
  82794. @@ -227,13 +224,13 @@
  82795. #endif
  82796. -#if defined USE_TLS && !defined SHARED
  82797. +#if defined __UCLIBC_HAS_TLS__ && !defined SHARED
  82798. extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
  82799. #endif
  82800. struct pthread_functions __pthread_functions =
  82801. {
  82802. -#if !(USE_TLS && HAVE___THREAD)
  82803. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  82804. .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
  82805. .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
  82806. .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
  82807. @@ -295,7 +292,7 @@
  82808. void
  82809. __pthread_initialize_minimal(void)
  82810. {
  82811. -#ifdef USE_TLS
  82812. +#ifdef __UCLIBC_HAS_TLS__
  82813. pthread_descr self;
  82814. /* First of all init __pthread_handles[0] and [1] if needed. */
  82815. @@ -307,7 +304,7 @@
  82816. /* Unlike in the dynamically linked case the dynamic linker has not
  82817. taken care of initializing the TLS data structures. */
  82818. __libc_setup_tls (TLS_TCB_SIZE, TLS_TCB_ALIGN);
  82819. -# elif !USE___THREAD
  82820. +# elif !defined __UCLIBC_HAS_TLS__
  82821. if (__builtin_expect (GL(dl_tls_dtv_slotinfo_list) == NULL, 0))
  82822. {
  82823. tcbhead_t *tcbp;
  82824. @@ -363,7 +360,7 @@
  82825. self->p_nextlive = self->p_prevlive = self;
  82826. self->p_tid = PTHREAD_THREADS_MAX;
  82827. self->p_lock = &__pthread_handles[0].h_lock;
  82828. -# ifndef HAVE___THREAD
  82829. +# ifndef __UCLIBC_HAS_TLS__
  82830. self->p_errnop = &_errno;
  82831. self->p_h_errnop = &_h_errno;
  82832. # endif
  82833. @@ -380,7 +377,7 @@
  82834. /* And fill in the pointer the the thread __pthread_handles array. */
  82835. __pthread_handles[0].h_descr = self;
  82836. -#else /* USE_TLS */
  82837. +#else /* __UCLIBC_HAS_TLS__ */
  82838. /* First of all init __pthread_handles[0] and [1]. */
  82839. # if __LT_SPINLOCK_INIT != 0
  82840. @@ -398,7 +395,7 @@
  82841. #endif
  82842. #if HP_TIMING_AVAIL
  82843. -# ifdef USE_TLS
  82844. +# ifdef __UCLIBC_HAS_TLS__
  82845. self->p_cpuclock_offset = GL(dl_cpuclock_offset);
  82846. # else
  82847. __pthread_initial_thread.p_cpuclock_offset = GL(dl_cpuclock_offset);
  82848. @@ -442,7 +439,7 @@
  82849. __pthread_max_stacksize = max_stack;
  82850. if (max_stack / 4 < __MAX_ALLOCA_CUTOFF)
  82851. {
  82852. -#ifdef USE_TLS
  82853. +#ifdef __UCLIBC_HAS_TLS__
  82854. pthread_descr self = THREAD_SELF;
  82855. self->p_alloca_cutoff = max_stack / 4;
  82856. #else
  82857. @@ -451,10 +448,8 @@
  82858. }
  82859. }
  82860. -/* psm: we do not have any ld.so support yet
  82861. - * remove the USE_TLS guard if nptl is added */
  82862. -#if defined SHARED && defined USE_TLS
  82863. -# if USE___THREAD
  82864. +#if defined SHARED && defined __UCLIBC_HAS_TLS__
  82865. +# ifdef __UCLIBC_HAS_TLS__
  82866. /* When using __thread for this, we do it in libc so as not
  82867. to give libpthread its own TLS segment just for this. */
  82868. extern void **__libc_dl_error_tsd (void) __attribute__ ((const));
  82869. @@ -467,7 +462,7 @@
  82870. # endif
  82871. #endif
  82872. -#ifdef USE_TLS
  82873. +#ifdef __UCLIBC_HAS_TLS__
  82874. static __inline__ void __attribute__((always_inline))
  82875. init_one_static_tls (pthread_descr descr, struct link_map *map)
  82876. {
  82877. @@ -486,7 +481,7 @@
  82878. dtv[map->l_tls_modid].pointer.is_static = true;
  82879. /* Initialize the memory. */
  82880. - memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
  82881. + memset (mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
  82882. '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
  82883. }
  82884. @@ -536,10 +531,10 @@
  82885. (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));
  82886. # endif
  82887. #endif
  82888. -#ifdef USE_TLS
  82889. +#ifdef __UCLIBC_HAS_TLS__
  82890. /* Update the descriptor for the initial thread. */
  82891. THREAD_SETMEM (((pthread_descr) NULL), p_pid, __getpid());
  82892. -# if !defined HAVE___THREAD && defined __UCLIBC_HAS_RESOLVER_SUPPORT__
  82893. +# if defined __UCLIBC_HAS_RESOLVER_SUPPORT__
  82894. /* Likewise for the resolver state _res. */
  82895. THREAD_SETMEM (((pthread_descr) NULL), p_resp, __resp);
  82896. # endif
  82897. @@ -590,9 +585,7 @@
  82898. /* How many processors. */
  82899. __pthread_smp_kernel = is_smp_system ();
  82900. -/* psm: we do not have any ld.so support yet
  82901. - * remove the USE_TLS guard if nptl is added */
  82902. -#if defined SHARED && defined USE_TLS
  82903. +#if defined SHARED && defined __UCLIBC_HAS_TLS__
  82904. /* Transfer the old value from the dynamic linker's internal location. */
  82905. *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
  82906. GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
  82907. @@ -607,7 +600,7 @@
  82908. __pthread_mutex_lock (&GL(dl_load_lock).mutex);
  82909. #endif
  82910. -#ifdef USE_TLS
  82911. +#ifdef __UCLIBC_HAS_TLS__
  82912. GL(dl_init_static_tls) = &__pthread_init_static_tls;
  82913. #endif
  82914. @@ -635,12 +628,12 @@
  82915. struct pthread_request request;
  82916. int report_events;
  82917. pthread_descr mgr;
  82918. -#ifdef USE_TLS
  82919. +#ifdef __UCLIBC_HAS_TLS__
  82920. tcbhead_t *tcbp;
  82921. #endif
  82922. __pthread_multiple_threads = 1;
  82923. -#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
  82924. +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82925. __pthread_main_thread->p_multiple_threads = 1;
  82926. #endif
  82927. *__libc_multiple_threads_ptr = 1;
  82928. @@ -667,7 +660,7 @@
  82929. return -1;
  82930. }
  82931. -#ifdef USE_TLS
  82932. +#ifdef __UCLIBC_HAS_TLS__
  82933. /* Allocate memory for the thread descriptor and the dtv. */
  82934. tcbp = _dl_allocate_tls (NULL);
  82935. if (tcbp == NULL) {
  82936. @@ -687,7 +680,7 @@
  82937. __pthread_handles[1].h_descr = manager_thread = mgr;
  82938. /* Initialize the descriptor. */
  82939. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  82940. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82941. mgr->p_header.data.tcb = tcbp;
  82942. mgr->p_header.data.self = mgr;
  82943. mgr->p_header.data.multiple_threads = 1;
  82944. @@ -695,7 +688,7 @@
  82945. mgr->p_multiple_threads = 1;
  82946. #endif
  82947. mgr->p_lock = &__pthread_handles[1].h_lock;
  82948. -# ifndef HAVE___THREAD
  82949. +# ifndef __UCLIBC_HAS_TLS__
  82950. mgr->p_errnop = &mgr->p_errno;
  82951. # endif
  82952. mgr->p_start_args = (struct pthread_start_args) PTHREAD_START_ARGS_INITIALIZER(__pthread_manager);
  82953. @@ -713,7 +706,7 @@
  82954. /* Start the thread manager */
  82955. pid = 0;
  82956. -#ifdef USE_TLS
  82957. +#ifdef __UCLIBC_HAS_TLS__
  82958. if (__linuxthreads_initial_report_events != 0)
  82959. THREAD_SETMEM (((pthread_descr) NULL), p_report_events,
  82960. __linuxthreads_initial_report_events);
  82961. @@ -732,7 +725,7 @@
  82962. uint32_t mask = __td_eventmask (TD_CREATE);
  82963. uint32_t event_bits;
  82964. -#ifdef USE_TLS
  82965. +#ifdef __UCLIBC_HAS_TLS__
  82966. event_bits = THREAD_GETMEM_NC (((pthread_descr) NULL),
  82967. p_eventbuf.eventmask.event_bits[idx]);
  82968. #else
  82969. @@ -798,7 +791,7 @@
  82970. #endif
  82971. }
  82972. if (__builtin_expect (pid, 0) == -1) {
  82973. -#ifdef USE_TLS
  82974. +#ifdef __UCLIBC_HAS_TLS__
  82975. _dl_deallocate_tls (tcbp, true);
  82976. #endif
  82977. free(__pthread_manager_thread_bos);
  82978. @@ -900,7 +893,7 @@
  82979. if (sp >= __pthread_manager_thread_bos && sp < __pthread_manager_thread_tos)
  82980. return manager_thread;
  82981. h = __pthread_handles + 2;
  82982. -# ifdef USE_TLS
  82983. +# ifdef __UCLIBC_HAS_TLS__
  82984. # ifdef _STACK_GROWS_UP
  82985. while (h->h_descr == NULL
  82986. || ! (sp >= h->h_descr->p_stackaddr && sp < h->h_descr->p_guardaddr))
  82987. @@ -994,7 +987,7 @@
  82988. children, so that timings for main thread account for all threads. */
  82989. if (self == __pthread_main_thread)
  82990. {
  82991. -#ifdef USE_TLS
  82992. +#ifdef __UCLIBC_HAS_TLS__
  82993. waitpid(manager_thread->p_pid, NULL, __WCLONE);
  82994. #else
  82995. waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
  82996. @@ -1002,7 +995,7 @@
  82997. /* Since all threads have been asynchronously terminated
  82998. (possibly holding locks), free cannot be used any more.
  82999. For mtrace, we'd like to print something though. */
  83000. - /* #ifdef USE_TLS
  83001. + /* #ifdef __UCLIBC_HAS_TLS__
  83002. tcbhead_t *tcbp = (tcbhead_t *) manager_thread;
  83003. # if defined(TLS_DTV_AT_TP)
  83004. tcbp = (tcbhead_t) ((char *) tcbp + TLS_PRE_TCB_SIZE);
  83005. @@ -1060,7 +1053,7 @@
  83006. /* Main thread should accumulate times for thread manager and its
  83007. children, so that timings for main thread account for all threads. */
  83008. if (self == __pthread_main_thread) {
  83009. -#ifdef USE_TLS
  83010. +#ifdef __UCLIBC_HAS_TLS__
  83011. waitpid(manager_thread->p_pid, NULL, __WCLONE);
  83012. #else
  83013. waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
  83014. @@ -1121,7 +1114,7 @@
  83015. __pthread_main_thread = self;
  83016. THREAD_SETMEM(self, p_nextlive, self);
  83017. THREAD_SETMEM(self, p_prevlive, self);
  83018. -#if !(USE_TLS && HAVE___THREAD)
  83019. +#ifndef __UCLIBC_HAS_TLS__
  83020. /* Now this thread modifies the global variables. */
  83021. THREAD_SETMEM(self, p_errnop, &_errno);
  83022. THREAD_SETMEM(self, p_h_errnop, &_h_errno);
  83023. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setegid.c uClibc/libpthread/linuxthreads/pthread_setegid.c
  83024. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setegid.c 2012-05-15 09:20:09.000000000 +0200
  83025. +++ uClibc/libpthread/linuxthreads/pthread_setegid.c 2014-02-03 12:32:57.000000000 +0100
  83026. @@ -12,9 +12,8 @@
  83027. Lesser General Public License for more details.
  83028. You should have received a copy of the GNU Lesser General Public
  83029. - License along with the GNU C Library; if not, write to the Free
  83030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83031. - 02111-1307 USA. */
  83032. + License along with the GNU C Library; if not, see
  83033. + <http://www.gnu.org/licenses/>. */
  83034. #include <pthread.h>
  83035. #include <unistd.h>
  83036. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_seteuid.c uClibc/libpthread/linuxthreads/pthread_seteuid.c
  83037. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_seteuid.c 2012-05-15 09:20:09.000000000 +0200
  83038. +++ uClibc/libpthread/linuxthreads/pthread_seteuid.c 2014-02-03 12:32:57.000000000 +0100
  83039. @@ -12,9 +12,8 @@
  83040. Lesser General Public License for more details.
  83041. You should have received a copy of the GNU Lesser General Public
  83042. - License along with the GNU C Library; if not, write to the Free
  83043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83044. - 02111-1307 USA. */
  83045. + License along with the GNU C Library; if not, see
  83046. + <http://www.gnu.org/licenses/>. */
  83047. #include <pthread.h>
  83048. #include <unistd.h>
  83049. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setgid.c uClibc/libpthread/linuxthreads/pthread_setgid.c
  83050. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setgid.c 2012-05-15 09:20:09.000000000 +0200
  83051. +++ uClibc/libpthread/linuxthreads/pthread_setgid.c 2014-02-03 12:32:57.000000000 +0100
  83052. @@ -12,9 +12,8 @@
  83053. Lesser General Public License for more details.
  83054. You should have received a copy of the GNU Lesser General Public
  83055. - License along with the GNU C Library; if not, write to the Free
  83056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83057. - 02111-1307 USA. */
  83058. + License along with the GNU C Library; if not, see
  83059. + <http://www.gnu.org/licenses/>. */
  83060. #include <pthread.h>
  83061. #include <unistd.h>
  83062. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setregid.c uClibc/libpthread/linuxthreads/pthread_setregid.c
  83063. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setregid.c 2012-05-15 09:20:09.000000000 +0200
  83064. +++ uClibc/libpthread/linuxthreads/pthread_setregid.c 2014-02-03 12:32:57.000000000 +0100
  83065. @@ -12,9 +12,8 @@
  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; if not, write to the Free
  83069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83070. - 02111-1307 USA. */
  83071. + License along with the GNU C Library; if not, see
  83072. + <http://www.gnu.org/licenses/>. */
  83073. #include <pthread.h>
  83074. #include <unistd.h>
  83075. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresgid.c uClibc/libpthread/linuxthreads/pthread_setresgid.c
  83076. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresgid.c 2012-05-15 09:20:09.000000000 +0200
  83077. +++ uClibc/libpthread/linuxthreads/pthread_setresgid.c 2014-02-03 12:32:57.000000000 +0100
  83078. @@ -12,9 +12,8 @@
  83079. Lesser General Public License for more details.
  83080. You should have received a copy of the GNU Lesser General Public
  83081. - License along with the GNU C Library; if not, write to the Free
  83082. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83083. - 02111-1307 USA. */
  83084. + License along with the GNU C Library; if not, see
  83085. + <http://www.gnu.org/licenses/>. */
  83086. #include <pthread.h>
  83087. #include <unistd.h>
  83088. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresuid.c uClibc/libpthread/linuxthreads/pthread_setresuid.c
  83089. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresuid.c 2012-05-15 09:20:09.000000000 +0200
  83090. +++ uClibc/libpthread/linuxthreads/pthread_setresuid.c 2014-02-03 12:32:57.000000000 +0100
  83091. @@ -12,9 +12,8 @@
  83092. Lesser General Public License for more details.
  83093. You should have received a copy of the GNU Lesser General Public
  83094. - License along with the GNU C Library; if not, write to the Free
  83095. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83096. - 02111-1307 USA. */
  83097. + License along with the GNU C Library; if not, see
  83098. + <http://www.gnu.org/licenses/>. */
  83099. #include <pthread.h>
  83100. #include <unistd.h>
  83101. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setreuid.c uClibc/libpthread/linuxthreads/pthread_setreuid.c
  83102. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setreuid.c 2012-05-15 09:20:09.000000000 +0200
  83103. +++ uClibc/libpthread/linuxthreads/pthread_setreuid.c 2014-02-03 12:32:57.000000000 +0100
  83104. @@ -12,9 +12,8 @@
  83105. Lesser General Public License for more details.
  83106. You should have received a copy of the GNU Lesser General Public
  83107. - License along with the GNU C Library; if not, write to the Free
  83108. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83109. - 02111-1307 USA. */
  83110. + License along with the GNU C Library; if not, see
  83111. + <http://www.gnu.org/licenses/>. */
  83112. #include <pthread.h>
  83113. #include <unistd.h>
  83114. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setuid.c uClibc/libpthread/linuxthreads/pthread_setuid.c
  83115. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setuid.c 2012-05-15 09:20:09.000000000 +0200
  83116. +++ uClibc/libpthread/linuxthreads/pthread_setuid.c 2014-02-03 12:32:57.000000000 +0100
  83117. @@ -12,9 +12,8 @@
  83118. Lesser General Public License for more details.
  83119. You should have received a copy of the GNU Lesser General Public
  83120. - License along with the GNU C Library; if not, write to the Free
  83121. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83122. - 02111-1307 USA. */
  83123. + License along with the GNU C Library; if not, see
  83124. + <http://www.gnu.org/licenses/>. */
  83125. #include <pthread.h>
  83126. #include <unistd.h>
  83127. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pt-machine.c uClibc/libpthread/linuxthreads/pt-machine.c
  83128. --- uClibc-0.9.33.2/libpthread/linuxthreads/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  83129. +++ uClibc/libpthread/linuxthreads/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  83130. @@ -13,9 +13,8 @@
  83131. Lesser General Public License for more details.
  83132. You should have received a copy of the GNU Lesser General Public
  83133. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83134. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83135. - Boston, MA 02111-1307, USA. */
  83136. + License along with the GNU C Library; see the file COPYING.LIB. If
  83137. + not, see <http://www.gnu.org/licenses/>. */
  83138. #define PT_EI
  83139. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/rwlock.c uClibc/libpthread/linuxthreads/rwlock.c
  83140. --- uClibc-0.9.33.2/libpthread/linuxthreads/rwlock.c 2012-05-15 09:20:09.000000000 +0200
  83141. +++ uClibc/libpthread/linuxthreads/rwlock.c 2014-02-03 12:32:57.000000000 +0100
  83142. @@ -15,9 +15,8 @@
  83143. Lesser General Public License for more details.
  83144. You should have received a copy of the GNU Lesser General Public
  83145. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83146. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83147. - Boston, MA 02111-1307, USA. */
  83148. + License along with the GNU C Library; see the file COPYING.LIB. If
  83149. + not, see <http://www.gnu.org/licenses/>. */
  83150. #include <bits/libc-lock.h>
  83151. #include <errno.h>
  83152. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.c uClibc/libpthread/linuxthreads/semaphore.c
  83153. --- uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.c 2012-05-15 09:20:09.000000000 +0200
  83154. +++ uClibc/libpthread/linuxthreads/semaphore.c 2014-02-03 12:32:57.000000000 +0100
  83155. @@ -15,6 +15,7 @@
  83156. /* Semaphores a la POSIX 1003.1b */
  83157. #include <errno.h>
  83158. +#include <limits.h>
  83159. #include "pthread.h"
  83160. #include "semaphore.h"
  83161. #include "internals.h"
  83162. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.h uClibc/libpthread/linuxthreads/semaphore.h
  83163. --- uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  83164. +++ uClibc/libpthread/linuxthreads/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  83165. @@ -17,6 +17,7 @@
  83166. #include <features.h>
  83167. #include <sys/types.h>
  83168. +#include <limits.h>
  83169. #ifdef __USE_XOPEN2K
  83170. # define __need_timespec
  83171. # include <time.h>
  83172. @@ -42,7 +43,9 @@
  83173. #define SEM_FAILED ((sem_t *) 0)
  83174. /* Maximum value the semaphore can have. */
  83175. +#ifndef SEM_VALUE_MAX
  83176. #define SEM_VALUE_MAX (2147483647)
  83177. +#endif
  83178. __BEGIN_DECLS
  83179. @@ -55,13 +58,13 @@
  83180. extern int sem_destroy (sem_t *__sem) __THROW;
  83181. /* Open a named semaphore NAME with open flags OFLAG. */
  83182. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  83183. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  83184. /* Close descriptor for named semaphore SEM. */
  83185. extern int sem_close (sem_t *__sem) __THROW;
  83186. /* Remove named semaphore NAME. */
  83187. -extern int sem_unlink (__const char *__name) __THROW;
  83188. +extern int sem_unlink (const char *__name) __THROW;
  83189. /* Wait for SEM being posted.
  83190. @@ -75,7 +78,7 @@
  83191. This function is a cancellation point and therefore not marked with
  83192. __THROW. */
  83193. extern int sem_timedwait (sem_t *__restrict __sem,
  83194. - __const struct timespec *__restrict __abstime);
  83195. + const struct timespec *__restrict __abstime);
  83196. #endif
  83197. /* Test whether SEM is posted. */
  83198. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/signals.c uClibc/libpthread/linuxthreads/signals.c
  83199. --- uClibc-0.9.33.2/libpthread/linuxthreads/signals.c 2012-05-15 09:20:09.000000000 +0200
  83200. +++ uClibc/libpthread/linuxthreads/signals.c 2014-02-03 12:32:57.000000000 +0100
  83201. @@ -20,9 +20,6 @@
  83202. #include "internals.h"
  83203. #include "spinlock.h"
  83204. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  83205. -extern __typeof(sigaction) __libc_sigaction;
  83206. -
  83207. int pthread_sigmask(int how, const sigset_t * newmask, sigset_t * oldmask)
  83208. {
  83209. sigset_t mask;
  83210. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/specific.c uClibc/libpthread/linuxthreads/specific.c
  83211. --- uClibc-0.9.33.2/libpthread/linuxthreads/specific.c 2012-05-15 09:20:09.000000000 +0200
  83212. +++ uClibc/libpthread/linuxthreads/specific.c 2014-02-03 12:32:57.000000000 +0100
  83213. @@ -212,7 +212,7 @@
  83214. __pthread_unlock(THREAD_GETMEM(self, p_lock));
  83215. }
  83216. -#if !(USE_TLS && HAVE___THREAD)
  83217. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  83218. /* Thread-specific data for libc. */
  83219. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c
  83220. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  83221. +++ uClibc/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  83222. @@ -13,9 +13,8 @@
  83223. Lesser General Public License for more details.
  83224. You should have received a copy of the GNU Lesser General Public
  83225. - License along with the GNU C Library; if not, write to the Free
  83226. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83227. - 02111-1307 USA. */
  83228. + License along with the GNU C Library; if not, see
  83229. + <http://www.gnu.org/licenses/>. */
  83230. /* This file is compiled into assembly code which is then munged by a sed
  83231. script into two files: crti.s and crtn.s.
  83232. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c
  83233. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83234. +++ uClibc/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83235. @@ -13,9 +13,8 @@
  83236. Lesser General Public License for more details.
  83237. You should have received a copy of the GNU Lesser General Public
  83238. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83239. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83240. - Boston, MA 02111-1307, USA. */
  83241. + License along with the GNU C Library; see the file COPYING.LIB. If
  83242. + not, see <http://www.gnu.org/licenses/>. */
  83243. #include <errno.h>
  83244. #include <pthread.h>
  83245. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h
  83246. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83247. +++ uClibc/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83248. @@ -17,8 +17,7 @@
  83249. You should have received a copy of the GNU Lesser General Public
  83250. License along with the GNU C Library; see the file COPYING.LIB. If not,
  83251. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83252. - Boston, MA 02111-1307, USA. */
  83253. + see <http://www.gnu.org/licenses/>. */
  83254. #ifndef _PT_MACHINE_H
  83255. #define _PT_MACHINE_H 1
  83256. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/tls.h uClibc/libpthread/linuxthreads/sysdeps/alpha/tls.h
  83257. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/tls.h 2012-05-15 09:20:09.000000000 +0200
  83258. +++ uClibc/libpthread/linuxthreads/sysdeps/alpha/tls.h 2014-02-03 12:32:57.000000000 +0100
  83259. @@ -13,9 +13,8 @@
  83260. Lesser General Public License for more details.
  83261. You should have received a copy of the GNU Lesser General Public
  83262. - License along with the GNU C Library; if not, write to the Free
  83263. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83264. - 02111-1307 USA. */
  83265. + License along with the GNU C Library; if not, see
  83266. + <http://www.gnu.org/licenses/>. */
  83267. #ifndef _TLS_H
  83268. #define _TLS_H
  83269. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/arm/pspinlock.c
  83270. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83271. +++ uClibc/libpthread/linuxthreads/sysdeps/arm/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83272. @@ -13,9 +13,8 @@
  83273. Lesser General Public License for more details.
  83274. You should have received a copy of the GNU Lesser General Public
  83275. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83276. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83277. - Boston, MA 02111-1307, USA. */
  83278. + License along with the GNU C Library; see the file COPYING.LIB. If
  83279. + not, see <http://www.gnu.org/licenses/>. */
  83280. #include <errno.h>
  83281. #include <pthread.h>
  83282. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/arm/pt-machine.h
  83283. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83284. +++ uClibc/libpthread/linuxthreads/sysdeps/arm/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83285. @@ -15,9 +15,8 @@
  83286. Lesser General Public License for more details.
  83287. You should have received a copy of the GNU Lesser General Public
  83288. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83289. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83290. - Boston, MA 02111-1307, USA. */
  83291. + License along with the GNU C Library; see the file COPYING.LIB. If
  83292. + not, see <http://www.gnu.org/licenses/>. */
  83293. #ifndef _PT_MACHINE_H
  83294. #define _PT_MACHINE_H 1
  83295. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/sysdep.h uClibc/libpthread/linuxthreads/sysdeps/arm/sysdep.h
  83296. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  83297. +++ uClibc/libpthread/linuxthreads/sysdeps/arm/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  83298. @@ -1,137 +0,0 @@
  83299. -/* Generic asm macros used on many machines.
  83300. - Copyright (C) 1991,92,93,96,98,2002,2003 Free Software Foundation, Inc.
  83301. - This file is part of the GNU C Library.
  83302. -
  83303. - The GNU C Library is free software; you can redistribute it and/or
  83304. - modify it under the terms of the GNU Lesser General Public
  83305. - License as published by the Free Software Foundation; either
  83306. - version 2.1 of the License, or (at your option) any later version.
  83307. -
  83308. - The GNU C Library is distributed in the hope that it will be useful,
  83309. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  83310. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  83311. - Lesser General Public License for more details.
  83312. -
  83313. - You should have received a copy of the GNU Lesser General Public
  83314. - License along with the GNU C Library; if not, write to the Free
  83315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83316. - 02111-1307 USA. */
  83317. -
  83318. -#ifndef C_LABEL
  83319. -
  83320. -/* Define a macro we can use to construct the asm name for a C symbol. */
  83321. -#ifdef NO_UNDERSCORES
  83322. -#ifdef __STDC__
  83323. -#define C_LABEL(name) name##:
  83324. -#else
  83325. -#define C_LABEL(name) name/**/:
  83326. -#endif
  83327. -#else
  83328. -#ifdef __STDC__
  83329. -#define C_LABEL(name) _##name##:
  83330. -#else
  83331. -#define C_LABEL(name) _/**/name/**/:
  83332. -#endif
  83333. -#endif
  83334. -
  83335. -#endif
  83336. -
  83337. -#ifdef __ASSEMBLER__
  83338. -/* Mark the end of function named SYM. This is used on some platforms
  83339. - to generate correct debugging information. */
  83340. -#ifndef END
  83341. -#define END(sym)
  83342. -#endif
  83343. -
  83344. -#ifndef JUMPTARGET
  83345. -#define JUMPTARGET(sym) sym
  83346. -#endif
  83347. -
  83348. -/* Makros to generate eh_frame unwind information. */
  83349. -# ifdef HAVE_ASM_CFI_DIRECTIVES
  83350. -# define cfi_startproc .cfi_startproc
  83351. -# define cfi_endproc .cfi_endproc
  83352. -# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
  83353. -# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
  83354. -# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
  83355. -# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
  83356. -# define cfi_offset(reg, off) .cfi_offset reg, off
  83357. -# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
  83358. -# define cfi_register(r1, r2) .cfi_register r1, r2
  83359. -# define cfi_return_column(reg) .cfi_return_column reg
  83360. -# define cfi_restore(reg) .cfi_restore reg
  83361. -# define cfi_same_value(reg) .cfi_same_value reg
  83362. -# define cfi_undefined(reg) .cfi_undefined reg
  83363. -# define cfi_remember_state .cfi_remember_state
  83364. -# define cfi_restore_state .cfi_restore_state
  83365. -# define cfi_window_save .cfi_window_save
  83366. -# else
  83367. -# define cfi_startproc
  83368. -# define cfi_endproc
  83369. -# define cfi_def_cfa(reg, off)
  83370. -# define cfi_def_cfa_register(reg)
  83371. -# define cfi_def_cfa_offset(off)
  83372. -# define cfi_adjust_cfa_offset(off)
  83373. -# define cfi_offset(reg, off)
  83374. -# define cfi_rel_offset(reg, off)
  83375. -# define cfi_register(r1, r2)
  83376. -# define cfi_return_column(reg)
  83377. -# define cfi_restore(reg)
  83378. -# define cfi_same_value(reg)
  83379. -# define cfi_undefined(reg)
  83380. -# define cfi_remember_state
  83381. -# define cfi_restore_state
  83382. -# define cfi_window_save
  83383. -# endif
  83384. -
  83385. -#else /* ! ASSEMBLER */
  83386. -# ifdef HAVE_ASM_CFI_DIRECTIVES
  83387. -# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
  83388. -# define CFI_STRINGIFY2(Name) #Name
  83389. -# define CFI_STARTPROC ".cfi_startproc"
  83390. -# define CFI_ENDPROC ".cfi_endproc"
  83391. -# define CFI_DEF_CFA(reg, off) \
  83392. - ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  83393. -# define CFI_DEF_CFA_REGISTER(reg) \
  83394. - ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
  83395. -# define CFI_DEF_CFA_OFFSET(off) \
  83396. - ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
  83397. -# define CFI_ADJUST_CFA_OFFSET(off) \
  83398. - ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
  83399. -# define CFI_OFFSET(reg, off) \
  83400. - ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  83401. -# define CFI_REL_OFFSET(reg, off) \
  83402. - ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  83403. -# define CFI_REGISTER(r1, r2) \
  83404. - ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
  83405. -# define CFI_RETURN_COLUMN(reg) \
  83406. - ".cfi_return_column " CFI_STRINGIFY(reg)
  83407. -# define CFI_RESTORE(reg) \
  83408. - ".cfi_restore " CFI_STRINGIFY(reg)
  83409. -# define CFI_UNDEFINED(reg) \
  83410. - ".cfi_undefined " CFI_STRINGIFY(reg)
  83411. -# define CFI_REMEMBER_STATE \
  83412. - ".cfi_remember_state"
  83413. -# define CFI_RESTORE_STATE \
  83414. - ".cfi_restore_state"
  83415. -# define CFI_WINDOW_SAVE \
  83416. - ".cfi_window_save"
  83417. -# else
  83418. -# define CFI_STARTPROC
  83419. -# define CFI_ENDPROC
  83420. -# define CFI_DEF_CFA(reg, off)
  83421. -# define CFI_DEF_CFA_REGISTER(reg)
  83422. -# define CFI_DEF_CFA_OFFSET(off)
  83423. -# define CFI_ADJUST_CFA_OFFSET(off)
  83424. -# define CFI_OFFSET(reg, off)
  83425. -# define CFI_REL_OFFSET(reg, off)
  83426. -# define CFI_REGISTER(r1, r2)
  83427. -# define CFI_RETURN_COLUMN(reg)
  83428. -# define CFI_RESTORE(reg)
  83429. -# define CFI_UNDEFINED(reg)
  83430. -# define CFI_REMEMBER_STATE
  83431. -# define CFI_RESTORE_STATE
  83432. -# define CFI_WINDOW_SAVE
  83433. -# endif
  83434. -
  83435. -#endif /* __ASSEMBLER__ */
  83436. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/tls.h uClibc/libpthread/linuxthreads/sysdeps/arm/tls.h
  83437. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/tls.h 2012-05-15 09:20:09.000000000 +0200
  83438. +++ uClibc/libpthread/linuxthreads/sysdeps/arm/tls.h 2014-02-03 12:32:57.000000000 +0100
  83439. @@ -13,9 +13,8 @@
  83440. Lesser General Public License for more details.
  83441. You should have received a copy of the GNU Lesser General Public
  83442. - License along with the GNU C Library; if not, write to the Free
  83443. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83444. - 02111-1307 USA. */
  83445. + License along with the GNU C Library; if not, see
  83446. + <http://www.gnu.org/licenses/>. */
  83447. #ifndef _TLS_H
  83448. #define _TLS_H
  83449. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/cris/pspinlock.c
  83450. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83451. +++ uClibc/libpthread/linuxthreads/sysdeps/cris/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83452. @@ -13,9 +13,8 @@
  83453. Lesser General Public License for more details.
  83454. You should have received a copy of the GNU Lesser General Public
  83455. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83456. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83457. - Boston, MA 02111-1307, USA. */
  83458. + License along with the GNU C Library; see the file COPYING.LIB. If
  83459. + not, see <http://www.gnu.org/licenses/>. */
  83460. #include <errno.h>
  83461. #include <pthread.h>
  83462. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/cris/pt-machine.h
  83463. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83464. +++ uClibc/libpthread/linuxthreads/sysdeps/cris/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83465. @@ -14,9 +14,8 @@
  83466. Lesser General Public License for more details.
  83467. You should have received a copy of the GNU Lesser General Public
  83468. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83469. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83470. - Boston, MA 02111-1307, USA. */
  83471. + License along with the GNU C Library; see the file COPYING.LIB. If
  83472. + not, see <http://www.gnu.org/licenses/>. */
  83473. #ifndef _PT_MACHINE_H
  83474. #define _PT_MACHINE_H 1
  83475. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c
  83476. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83477. +++ uClibc/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83478. @@ -13,9 +13,8 @@
  83479. Lesser General Public License for more details.
  83480. You should have received a copy of the GNU Lesser General Public
  83481. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83482. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83483. - Boston, MA 02111-1307, USA. */
  83484. + License along with the GNU C Library; see the file COPYING.LIB. If
  83485. + not, see <http://www.gnu.org/licenses/>. */
  83486. #include <errno.h>
  83487. #include <pthread.h>
  83488. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h
  83489. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83490. +++ uClibc/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83491. @@ -15,9 +15,8 @@
  83492. Lesser General Public License for more details.
  83493. You should have received a copy of the GNU Lesser General Public
  83494. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83495. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83496. - Boston, MA 02111-1307, USA. */
  83497. + License along with the GNU C Library; see the file COPYING.LIB. If
  83498. + not, see <http://www.gnu.org/licenses/>. */
  83499. #ifndef _PT_MACHINE_H
  83500. #define _PT_MACHINE_H 1
  83501. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h
  83502. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83503. +++ uClibc/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83504. @@ -15,9 +15,8 @@
  83505. Lesser General Public License for more details.
  83506. You should have received a copy of the GNU Lesser General Public
  83507. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83508. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83509. - Boston, MA 02111-1307, USA. */
  83510. + License along with the GNU C Library; see the file COPYING.LIB. If
  83511. + not, see <http://www.gnu.org/licenses/>. */
  83512. #ifndef _PT_MACHINE_H
  83513. #define _PT_MACHINE_H 1
  83514. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/i386/pspinlock.c
  83515. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83516. +++ uClibc/libpthread/linuxthreads/sysdeps/i386/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83517. @@ -13,9 +13,8 @@
  83518. Lesser General Public License for more details.
  83519. You should have received a copy of the GNU Lesser General Public
  83520. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83521. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83522. - Boston, MA 02111-1307, USA. */
  83523. + License along with the GNU C Library; see the file COPYING.LIB. If
  83524. + not, see <http://www.gnu.org/licenses/>. */
  83525. #include <errno.h>
  83526. #include <pthread.h>
  83527. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/i386/pt-machine.h
  83528. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83529. +++ uClibc/libpthread/linuxthreads/sysdeps/i386/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83530. @@ -15,9 +15,8 @@
  83531. Lesser General Public License for more details.
  83532. You should have received a copy of the GNU Lesser General Public
  83533. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83534. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83535. - Boston, MA 02111-1307, USA. */
  83536. + License along with the GNU C Library; see the file COPYING.LIB. If
  83537. + not, see <http://www.gnu.org/licenses/>. */
  83538. #if defined __pentiumpro__ || defined __pentium4__ || defined __athlon__ || \
  83539. defined __k8__
  83540. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/tls.h uClibc/libpthread/linuxthreads/sysdeps/i386/tls.h
  83541. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  83542. +++ uClibc/libpthread/linuxthreads/sysdeps/i386/tls.h 2014-02-03 12:32:57.000000000 +0100
  83543. @@ -13,9 +13,8 @@
  83544. Lesser General Public License for more details.
  83545. You should have received a copy of the GNU Lesser General Public
  83546. - License along with the GNU C Library; if not, write to the Free
  83547. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83548. - 02111-1307 USA. */
  83549. + License along with the GNU C Library; if not, see
  83550. + <http://www.gnu.org/licenses/>. */
  83551. #ifndef _TLS_H
  83552. #define _TLS_H
  83553. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/useldt.h uClibc/libpthread/linuxthreads/sysdeps/i386/useldt.h
  83554. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/useldt.h 2012-05-15 09:20:09.000000000 +0200
  83555. +++ uClibc/libpthread/linuxthreads/sysdeps/i386/useldt.h 2014-02-03 12:32:57.000000000 +0100
  83556. @@ -16,8 +16,7 @@
  83557. You should have received a copy of the GNU Lesser General Public
  83558. License along with the GNU C Library; see the file COPYING.LIB. If not,
  83559. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83560. - Boston, MA 02111-1307, USA. */
  83561. + see <http://www.gnu.org/licenses/>. */
  83562. #ifndef __ASSEMBLER__
  83563. #include <stddef.h> /* For offsetof. */
  83564. @@ -87,7 +86,7 @@
  83565. because we inherited the value set up in the main thread by TLS setup.
  83566. We need to extract that value and set up the same segment in this
  83567. thread. */
  83568. -#if defined (USE_TLS) && USE_TLS
  83569. +#ifdef __UCLIBC_HAS_TLS__
  83570. # define DO_SET_THREAD_AREA_REUSE(nr) 1
  83571. #else
  83572. /* Without TLS, we do the initialization of the main thread, where NR == 0. */
  83573. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c
  83574. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83575. +++ uClibc/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83576. @@ -14,9 +14,8 @@
  83577. Lesser General Public License for more details.
  83578. You should have received a copy of the GNU Lesser General Public
  83579. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83580. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83581. - Boston, MA 02111-1307, USA. */
  83582. + License along with the GNU C Library; see the file COPYING.LIB. If
  83583. + not, see <http://www.gnu.org/licenses/>. */
  83584. #include <errno.h>
  83585. #include <pthread.h>
  83586. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h
  83587. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83588. +++ uClibc/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83589. @@ -14,9 +14,8 @@
  83590. Lesser General Public License for more details.
  83591. You should have received a copy of the GNU Lesser General Public
  83592. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83593. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83594. - Boston, MA 02111-1307, USA. */
  83595. + License along with the GNU C Library; see the file COPYING.LIB. If
  83596. + not, see <http://www.gnu.org/licenses/>. */
  83597. #ifndef _PT_MACHINE_H
  83598. #define _PT_MACHINE_H 1
  83599. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym uClibc/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym
  83600. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  83601. +++ uClibc/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  83602. @@ -2,7 +2,7 @@
  83603. #include <tls.h>
  83604. --
  83605. -#ifdef USE_TLS
  83606. +#ifdef __UCLIBC_HAS_TLS__
  83607. MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
  83608. #else
  83609. MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
  83610. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tls.h uClibc/libpthread/linuxthreads/sysdeps/ia64/tls.h
  83611. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tls.h 2012-05-15 09:20:09.000000000 +0200
  83612. +++ uClibc/libpthread/linuxthreads/sysdeps/ia64/tls.h 2014-02-03 12:32:57.000000000 +0100
  83613. @@ -13,9 +13,8 @@
  83614. Lesser General Public License for more details.
  83615. You should have received a copy of the GNU Lesser General Public
  83616. - License along with the GNU C Library; if not, write to the Free
  83617. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83618. - 02111-1307 USA. */
  83619. + License along with the GNU C Library; if not, see
  83620. + <http://www.gnu.org/licenses/>. */
  83621. #ifndef _TLS_H
  83622. #define _TLS_H
  83623. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c
  83624. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83625. +++ uClibc/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83626. @@ -13,9 +13,8 @@
  83627. Lesser General Public License for more details.
  83628. You should have received a copy of the GNU Lesser General Public
  83629. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83630. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83631. - Boston, MA 02111-1307, USA. */
  83632. + License along with the GNU C Library; see the file COPYING.LIB. If
  83633. + not, see <http://www.gnu.org/licenses/>. */
  83634. #include <errno.h>
  83635. #include <pthread.h>
  83636. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h
  83637. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83638. +++ uClibc/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83639. @@ -16,8 +16,7 @@
  83640. You should have received a copy of the GNU Lesser General Public
  83641. License along with the GNU C Library; see the file COPYING.LIB. If
  83642. - not, write to the Free Software Foundation, Inc.,
  83643. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  83644. + not, see <http://www.gnu.org/licenses/>. */
  83645. #ifndef _PT_MACHINE_H
  83646. #define _PT_MACHINE_H 1
  83647. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/mips/pspinlock.c
  83648. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83649. +++ uClibc/libpthread/linuxthreads/sysdeps/mips/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83650. @@ -13,9 +13,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 <errno.h>
  83659. #include <pthread.h>
  83660. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/mips/pt-machine.h
  83661. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83662. +++ uClibc/libpthread/linuxthreads/sysdeps/mips/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83663. @@ -18,8 +18,7 @@
  83664. You should have received a copy of the GNU Lesser General Public
  83665. License along with the GNU C Library; see the file COPYING.LIB. If
  83666. - not, write to the Free Software Foundation, Inc.,
  83667. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  83668. + not, see <http://www.gnu.org/licenses/>. */
  83669. #ifndef _PT_MACHINE_H
  83670. #define _PT_MACHINE_H 1
  83671. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/tls.h uClibc/libpthread/linuxthreads/sysdeps/mips/tls.h
  83672. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/tls.h 2012-05-15 09:20:09.000000000 +0200
  83673. +++ uClibc/libpthread/linuxthreads/sysdeps/mips/tls.h 2014-02-03 12:32:57.000000000 +0100
  83674. @@ -13,9 +13,8 @@
  83675. Lesser General Public License for more details.
  83676. You should have received a copy of the GNU Lesser General Public
  83677. - License along with the GNU C Library; if not, write to the Free
  83678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83679. - 02111-1307 USA. */
  83680. + License along with the GNU C Library; if not, see
  83681. + <http://www.gnu.org/licenses/>. */
  83682. #ifndef _TLS_H
  83683. #define _TLS_H
  83684. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c
  83685. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83686. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83687. @@ -13,9 +13,8 @@
  83688. Lesser General Public License for more details.
  83689. You should have received a copy of the GNU Lesser General Public
  83690. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83691. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83692. - Boston, MA 02111-1307, USA. */
  83693. + License along with the GNU C Library; see the file COPYING.LIB. If
  83694. + not, see <http://www.gnu.org/licenses/>. */
  83695. #include <errno.h>
  83696. #include <pthread.h>
  83697. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
  83698. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83699. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83700. @@ -16,8 +16,7 @@
  83701. You should have received a copy of the GNU Lesser General Public
  83702. License along with the GNU C Library; see the file COPYING.LIB. If
  83703. - not, write to the Free Software Foundation, Inc.,
  83704. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  83705. + not, see <http://www.gnu.org/licenses/>. */
  83706. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  83707. User's Manual', by IBM and Motorola. */
  83708. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c
  83709. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83710. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83711. @@ -13,9 +13,8 @@
  83712. Lesser General Public License for more details.
  83713. You should have received a copy of the GNU Lesser General Public
  83714. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83715. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83716. - Boston, MA 02111-1307, USA. */
  83717. + License along with the GNU C Library; see the file COPYING.LIB. If
  83718. + not, see <http://www.gnu.org/licenses/>. */
  83719. #include <errno.h>
  83720. #include <pthread.h>
  83721. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h
  83722. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83723. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83724. @@ -15,8 +15,7 @@
  83725. You should have received a copy of the GNU Library General Public
  83726. License along with the GNU C Library; see the file COPYING.LIB. If
  83727. - not, write to the Free Software Foundation, Inc.,
  83728. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  83729. + not, see <http://www.gnu.org/licenses/>. */
  83730. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  83731. User's Manual', by IBM and Motorola. */
  83732. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym uClibc/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
  83733. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  83734. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  83735. @@ -3,7 +3,7 @@
  83736. -- This line separates the #include lines from conditionals.
  83737. -# ifdef USE_TLS
  83738. +# ifdef __UCLIBC_HAS_TLS__
  83739. -- Abuse tls.h macros to derive offsets relative to the thread register.
  83740. # undef __thread_register
  83741. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tls.h uClibc/libpthread/linuxthreads/sysdeps/powerpc/tls.h
  83742. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tls.h 2012-05-15 09:20:09.000000000 +0200
  83743. +++ uClibc/libpthread/linuxthreads/sysdeps/powerpc/tls.h 2014-02-03 12:32:57.000000000 +0100
  83744. @@ -13,9 +13,8 @@
  83745. Lesser General Public License for more details.
  83746. You should have received a copy of the GNU Lesser General Public
  83747. - License along with the GNU C Library; if not, write to the Free
  83748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83749. - 02111-1307 USA. */
  83750. + License along with the GNU C Library; if not, see
  83751. + <http://www.gnu.org/licenses/>. */
  83752. #ifndef _TLS_H
  83753. #define _TLS_H
  83754. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h
  83755. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  83756. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h 2014-02-03 12:32:57.000000000 +0100
  83757. @@ -13,9 +13,8 @@
  83758. Lesser General Public License for more details.
  83759. You should have received a copy of the GNU Lesser General Public
  83760. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83761. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83762. - Boston, MA 02111-1307, USA. */
  83763. + License along with the GNU C Library; see the file COPYING.LIB. If
  83764. + not, see <http://www.gnu.org/licenses/>. */
  83765. /* Initial value of a spinlock. Most platforms should use zero,
  83766. unless they only implement a "test and clear" operation instead of
  83767. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
  83768. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  83769. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2014-02-03 12:32:57.000000000 +0100
  83770. @@ -14,9 +14,8 @@
  83771. Lesser General Public License for more details.
  83772. You should have received a copy of the GNU Lesser General Public
  83773. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83774. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83775. - Boston, MA 02111-1307, USA. */
  83776. + License along with the GNU C Library; see the file COPYING.LIB. If
  83777. + not, see <http://www.gnu.org/licenses/>. */
  83778. #ifndef _BITS_LIBC_LOCK_H
  83779. #define _BITS_LIBC_LOCK_H 1
  83780. @@ -293,7 +292,7 @@
  83781. library. */
  83782. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  83783. - __const pthread_mutexattr_t *__mutex_attr);
  83784. + const pthread_mutexattr_t *__mutex_attr);
  83785. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  83786. @@ -312,7 +311,7 @@
  83787. #ifdef __USE_UNIX98
  83788. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  83789. - __const pthread_rwlockattr_t *__attr);
  83790. + const pthread_rwlockattr_t *__attr);
  83791. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  83792. @@ -331,7 +330,7 @@
  83793. void (*__destr_function) (void *));
  83794. extern int __pthread_setspecific (pthread_key_t __key,
  83795. - __const void *__pointer);
  83796. + const void *__pointer);
  83797. extern void *__pthread_getspecific (pthread_key_t __key);
  83798. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
  83799. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  83800. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:57.000000000 +0100
  83801. @@ -13,18 +13,16 @@
  83802. Lesser General Public License for more details.
  83803. You should have received a copy of the GNU Lesser General Public
  83804. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83805. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83806. - Boston, MA 02111-1307, USA. */
  83807. + License along with the GNU C Library; see the file COPYING.LIB. If
  83808. + not, see <http://www.gnu.org/licenses/>. */
  83809. #ifndef _BITS_LIBC_TSD_H
  83810. #define _BITS_LIBC_TSD_H 1
  83811. #include <linuxthreads/descr.h>
  83812. +#ifdef __UCLIBC_HAS_TLS__
  83813. #include <tls.h>
  83814. -#if USE_TLS && HAVE___THREAD
  83815. -
  83816. /* When __thread works, the generic definition is what we want. */
  83817. # include <sysdeps/generic/bits/libc-tsd.h>
  83818. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
  83819. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  83820. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  83821. @@ -19,6 +19,9 @@
  83822. #ifndef _BITS_PTHREADTYPES_H
  83823. #define _BITS_PTHREADTYPES_H 1
  83824. +#define __need_size_t
  83825. +#include <stddef.h>
  83826. +
  83827. #define __need_schedparam
  83828. #include <bits/sched.h>
  83829. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h
  83830. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  83831. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  83832. @@ -13,9 +13,8 @@
  83833. Lesser General Public License for more details.
  83834. You should have received a copy of the GNU Lesser General Public
  83835. - License along with the GNU C Library; if not, write to the Free
  83836. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83837. - 02111-1307 USA. */
  83838. + License along with the GNU C Library; if not, see
  83839. + <http://www.gnu.org/licenses/>. */
  83840. #ifndef _BITS_TYPES_H
  83841. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  83842. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/.cvsignore uClibc/libpthread/linuxthreads/sysdeps/pthread/.cvsignore
  83843. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  83844. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  83845. @@ -1,2 +0,0 @@
  83846. -.cvsignore
  83847. -*.os
  83848. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c uClibc/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c
  83849. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c 2012-05-15 09:20:09.000000000 +0200
  83850. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c 2014-02-03 12:32:57.000000000 +0100
  83851. @@ -14,26 +14,25 @@
  83852. Lesser General Public License for more details.
  83853. You should have received a copy of the GNU Lesser General Public
  83854. - License along with the GNU C Library; if not, write to the Free
  83855. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83856. - 02111-1307 USA. */
  83857. + License along with the GNU C Library; if not, see
  83858. + <http://www.gnu.org/licenses/>. */
  83859. #include <errno.h>
  83860. #include <linuxthreads/internals.h>
  83861. #include <sysdep-cancel.h>
  83862. -#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO
  83863. +#if !defined __UCLIBC_HAS_TLS__ && !RTLD_PRIVATE_ERRNO
  83864. #undef errno
  83865. extern int errno;
  83866. #endif
  83867. int *
  83868. -#if ! USE___THREAD
  83869. +#ifndef __UCLIBC_HAS_TLS__
  83870. weak_const_function
  83871. #endif
  83872. __errno_location (void)
  83873. {
  83874. -#if ! USE___THREAD && !defined NOT_IN_libc
  83875. +#if !defined __UCLIBC_HAS_TLS__ && !defined NOT_IN_libc
  83876. if (! SINGLE_THREAD_P)
  83877. {
  83878. pthread_descr self = thread_self();
  83879. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/flockfile.c uClibc/libpthread/linuxthreads/sysdeps/pthread/flockfile.c
  83880. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/flockfile.c 2012-05-15 09:20:09.000000000 +0200
  83881. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/flockfile.c 2014-02-03 12:32:57.000000000 +0100
  83882. @@ -13,9 +13,8 @@
  83883. Lesser General Public License for more details.
  83884. You should have received a copy of the GNU Lesser General Public
  83885. - License along with the GNU C Library; if not, write to the Free
  83886. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83887. - 02111-1307 USA. */
  83888. + License along with the GNU C Library; if not, see
  83889. + <http://www.gnu.org/licenses/>. */
  83890. #include <pthread.h>
  83891. #include <stdio.h>
  83892. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c uClibc/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c
  83893. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c 2012-05-15 09:20:09.000000000 +0200
  83894. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c 2014-02-03 12:32:57.000000000 +0100
  83895. @@ -13,9 +13,8 @@
  83896. Lesser General Public License for more details.
  83897. You should have received a copy of the GNU Lesser General Public
  83898. - License along with the GNU C Library; if not, write to the Free
  83899. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83900. - 02111-1307 USA. */
  83901. + License along with the GNU C Library; if not, see
  83902. + <http://www.gnu.org/licenses/>. */
  83903. #include <errno.h>
  83904. #include <pthread.h>
  83905. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c uClibc/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c
  83906. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c 2012-05-15 09:20:09.000000000 +0200
  83907. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c 2014-02-03 12:32:57.000000000 +0100
  83908. @@ -13,9 +13,8 @@
  83909. Lesser General Public License for more details.
  83910. You should have received a copy of the GNU Lesser General Public
  83911. - License along with the GNU C Library; if not, write to the Free
  83912. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83913. - 02111-1307 USA. */
  83914. + License along with the GNU C Library; if not, see
  83915. + <http://www.gnu.org/licenses/>. */
  83916. #include <pthread.h>
  83917. #include <stdio.h>
  83918. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c uClibc/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c
  83919. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  83920. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  83921. @@ -13,9 +13,8 @@
  83922. Lesser General Public License for more details.
  83923. You should have received a copy of the GNU Lesser General Public
  83924. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83925. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83926. - Boston, MA 02111-1307, USA. */
  83927. + License along with the GNU C Library; see the file COPYING.LIB. If
  83928. + not, see <http://www.gnu.org/licenses/>. */
  83929. #include <errno.h>
  83930. #include <pthread.h>
  83931. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c uClibc/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
  83932. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c 2012-05-15 09:20:09.000000000 +0200
  83933. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c 2014-02-03 12:32:57.000000000 +0100
  83934. @@ -12,16 +12,15 @@
  83935. Lesser General Public License for more details.
  83936. You should have received a copy of the GNU Lesser General Public
  83937. - License along with the GNU C Library; if not, write to the Free
  83938. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83939. - 02111-1307 USA. */
  83940. + License along with the GNU C Library; if not, see
  83941. + <http://www.gnu.org/licenses/>. */
  83942. #include <netdb.h>
  83943. #include <tls.h>
  83944. #include <linuxthreads/internals.h>
  83945. #include <sysdep-cancel.h>
  83946. -#if ! USE___THREAD
  83947. +#ifndef __UCLIBC_HAS_TLS__
  83948. # undef h_errno
  83949. extern int h_errno;
  83950. #endif
  83951. @@ -31,7 +30,7 @@
  83952. weak_const_function
  83953. __h_errno_location (void)
  83954. {
  83955. -#if ! USE___THREAD
  83956. +#ifndef __UCLIBC_HAS_TLS__
  83957. if (! SINGLE_THREAD_P)
  83958. {
  83959. pthread_descr self = thread_self();
  83960. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/list.h uClibc/libpthread/linuxthreads/sysdeps/pthread/list.h
  83961. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/list.h 2012-05-15 09:20:09.000000000 +0200
  83962. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/list.h 2014-02-03 12:32:57.000000000 +0100
  83963. @@ -13,9 +13,8 @@
  83964. Lesser General Public License for more details.
  83965. You should have received a copy of the GNU Lesser General Public
  83966. - License along with the GNU C Library; if not, write to the Free
  83967. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83968. - 02111-1307 USA. */
  83969. + License along with the GNU C Library; if not, see
  83970. + <http://www.gnu.org/licenses/>. */
  83971. #ifndef _LIST_H
  83972. #define _LIST_H 1
  83973. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h uClibc/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h
  83974. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  83975. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  83976. @@ -14,9 +14,8 @@
  83977. Lesser General Public License for more details.
  83978. You should have received a copy of the GNU Lesser General Public
  83979. - License along with the GNU C Library; if not, write to the Free
  83980. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83981. - 02111-1307 USA. */
  83982. + License along with the GNU C Library; if not, see
  83983. + <http://www.gnu.org/licenses/>. */
  83984. #ifndef _MALLOC_MACHINE_H
  83985. #define _MALLOC_MACHINE_H
  83986. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h uClibc/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
  83987. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  83988. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h 2014-02-03 12:32:57.000000000 +0100
  83989. @@ -14,18 +14,26 @@
  83990. Lesser General Public License for more details.
  83991. You should have received a copy of the GNU Lesser General Public
  83992. - License along with the GNU C Library; if not, write to the Free
  83993. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83994. - 02111-1307 USA. */
  83995. + License along with the GNU C Library; if not, see
  83996. + <http://www.gnu.org/licenses/>. */
  83997. #include <sys/types.h>
  83998. #include <sysdep.h>
  83999. /* Uncancelable open. */
  84000. +#if defined __NR_openat && !defined __NR_open
  84001. +#define open_not_cancel(name, flags, mode) \
  84002. + INLINE_SYSCALL (openat, 4, (int) (AT_FDCWD), (const char *) (name), \
  84003. + (flags), (mode))
  84004. +#define open_not_cancel_2(name, flags) \
  84005. + INLINE_SYSCALL (openat, 3, (int) (AT_FDCWD), (const char *) (name), \
  84006. + (flags))
  84007. +#else
  84008. #define open_not_cancel(name, flags, mode) \
  84009. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  84010. #define open_not_cancel_2(name, flags) \
  84011. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  84012. +#endif
  84013. /* Uncancelable openat. */
  84014. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  84015. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h uClibc/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h
  84016. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h 2012-05-15 09:20:09.000000000 +0200
  84017. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h 2014-02-03 12:32:57.000000000 +0100
  84018. @@ -14,9 +14,8 @@
  84019. Lesser General Public License for more details.
  84020. You should have received a copy of the GNU Lesser General Public
  84021. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84022. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84023. - Boston, MA 02111-1307, USA. */
  84024. + License along with the GNU C Library; see the file COPYING.LIB. If
  84025. + not, see <http://www.gnu.org/licenses/>. */
  84026. #include <limits.h>
  84027. #include <signal.h>
  84028. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h uClibc/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
  84029. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  84030. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:57.000000000 +0100
  84031. @@ -13,9 +13,8 @@
  84032. Lesser General Public License for more details.
  84033. You should have received a copy of the GNU Lesser General Public
  84034. - License along with the GNU C Library; if not, write to the Free
  84035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84036. - 02111-1307 USA. */
  84037. + License along with the GNU C Library; if not, see
  84038. + <http://www.gnu.org/licenses/>. */
  84039. #ifndef _PTHREAD_FUNCTIONS_H
  84040. #define _PTHREAD_FUNCTIONS_H 1
  84041. @@ -72,10 +71,12 @@
  84042. void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
  84043. char *targetframe);
  84044. pthread_descr (*ptr_pthread_thread_self) (void);
  84045. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  84046. int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
  84047. void * (*ptr_pthread_internal_tsd_get) (int key);
  84048. void ** __attribute__ ((__const__))
  84049. (*ptr_pthread_internal_tsd_address) (int key);
  84050. +#endif
  84051. int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
  84052. struct sigaction *oact);
  84053. int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
  84054. @@ -95,4 +96,6 @@
  84055. /* Variable in libc.so. */
  84056. extern struct pthread_functions __libc_pthread_functions attribute_hidden;
  84057. +extern int * __libc_pthread_init (const struct pthread_functions *functions);
  84058. +
  84059. #endif /* pthread-functions.h */
  84060. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread.h uClibc/libpthread/linuxthreads/sysdeps/pthread/pthread.h
  84061. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  84062. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/pthread.h 2014-02-03 12:32:57.000000000 +0100
  84063. @@ -161,7 +161,7 @@
  84064. if ATTR is NULL), and call function START_ROUTINE with given
  84065. arguments ARG. */
  84066. extern int pthread_create (pthread_t *__restrict __threadp,
  84067. - __const pthread_attr_t *__restrict __attr,
  84068. + const pthread_attr_t *__restrict __attr,
  84069. void *(*__start_routine) (void *),
  84070. void *__restrict __arg) __THROW;
  84071. @@ -201,16 +201,16 @@
  84072. int __detachstate) __THROW;
  84073. /* Return in *DETACHSTATE the `detachstate' attribute in *ATTR. */
  84074. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  84075. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  84076. int *__detachstate) __THROW;
  84077. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  84078. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  84079. - __const struct sched_param *__restrict
  84080. + const struct sched_param *__restrict
  84081. __param) __THROW;
  84082. /* Return in *PARAM the scheduling parameters of *ATTR. */
  84083. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  84084. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  84085. __attr,
  84086. struct sched_param *__restrict __param)
  84087. __THROW;
  84088. @@ -220,7 +220,7 @@
  84089. __THROW;
  84090. /* Return in *POLICY the scheduling policy of *ATTR. */
  84091. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  84092. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  84093. __attr, int *__restrict __policy)
  84094. __THROW;
  84095. @@ -229,7 +229,7 @@
  84096. int __inherit) __THROW;
  84097. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  84098. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  84099. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  84100. __attr, int *__restrict __inherit)
  84101. __THROW;
  84102. @@ -238,7 +238,7 @@
  84103. __THROW;
  84104. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  84105. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  84106. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  84107. int *__restrict __scope) __THROW;
  84108. #ifdef __USE_UNIX98
  84109. @@ -247,7 +247,7 @@
  84110. size_t __guardsize) __THROW;
  84111. /* Get the size of the guard area at the bottom of the thread. */
  84112. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
  84113. +extern int pthread_attr_getguardsize (const pthread_attr_t *__restrict
  84114. __attr, size_t *__restrict __guardsize)
  84115. __THROW;
  84116. #endif
  84117. @@ -261,7 +261,7 @@
  84118. void *__stackaddr) __THROW;
  84119. /* Return the previously set address for the stack. */
  84120. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  84121. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  84122. __attr, void **__restrict __stackaddr)
  84123. __THROW;
  84124. #endif
  84125. @@ -274,7 +274,7 @@
  84126. size_t __stacksize) __THROW;
  84127. /* Return the previously set address for the stack. */
  84128. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  84129. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  84130. void **__restrict __stackaddr,
  84131. size_t *__restrict __stacksize) __THROW;
  84132. #endif
  84133. @@ -286,7 +286,7 @@
  84134. size_t __stacksize) __THROW;
  84135. /* Return the currently used minimal stack size. */
  84136. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  84137. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  84138. __attr, size_t *__restrict __stacksize)
  84139. __THROW;
  84140. @@ -302,7 +302,7 @@
  84141. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  84142. and *PARAM. */
  84143. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  84144. - __const struct sched_param *__param)
  84145. + const struct sched_param *__param)
  84146. __THROW;
  84147. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  84148. @@ -324,7 +324,7 @@
  84149. /* Initialize MUTEX using attributes in *MUTEX_ATTR, or use the
  84150. default values if later is NULL. */
  84151. extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
  84152. - __const pthread_mutexattr_t *__restrict
  84153. + const pthread_mutexattr_t *__restrict
  84154. __mutex_attr) __THROW;
  84155. /* Destroy MUTEX. */
  84156. @@ -339,7 +339,7 @@
  84157. #ifdef __USE_XOPEN2K
  84158. /* Wait until lock becomes available, or specified time passes. */
  84159. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  84160. - __const struct timespec *__restrict
  84161. + const struct timespec *__restrict
  84162. __abstime) __THROW;
  84163. #endif
  84164. @@ -357,7 +357,7 @@
  84165. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __THROW;
  84166. /* Get the process-shared flag of the mutex attribute ATTR. */
  84167. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  84168. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  84169. __restrict __attr,
  84170. int *__restrict __pshared) __THROW;
  84171. @@ -373,7 +373,7 @@
  84172. __THROW;
  84173. /* Return in *KIND the mutex kind attribute in *ATTR. */
  84174. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  84175. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  84176. __attr, int *__restrict __kind) __THROW;
  84177. #endif
  84178. @@ -383,7 +383,7 @@
  84179. /* Initialize condition variable COND using attributes ATTR, or use
  84180. the default values if later is NULL. */
  84181. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  84182. - __const pthread_condattr_t *__restrict
  84183. + const pthread_condattr_t *__restrict
  84184. __cond_attr) __THROW;
  84185. /* Destroy condition variable COND. */
  84186. @@ -406,7 +406,7 @@
  84187. (00:00:00 GMT, January 1, 1970). */
  84188. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  84189. pthread_mutex_t *__restrict __mutex,
  84190. - __const struct timespec *__restrict
  84191. + const struct timespec *__restrict
  84192. __abstime);
  84193. /* Functions for handling condition variable attributes. */
  84194. @@ -418,7 +418,7 @@
  84195. extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __THROW;
  84196. /* Get the process-shared flag of the condition variable attribute ATTR. */
  84197. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  84198. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  84199. __restrict __attr,
  84200. int *__restrict __pshared) __THROW;
  84201. @@ -433,7 +433,7 @@
  84202. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  84203. the default values if later is NULL. */
  84204. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  84205. - __const pthread_rwlockattr_t *__restrict
  84206. + const pthread_rwlockattr_t *__restrict
  84207. __attr) __THROW;
  84208. /* Destroy read-write lock RWLOCK. */
  84209. @@ -448,7 +448,7 @@
  84210. # ifdef __USE_XOPEN2K
  84211. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  84212. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  84213. - __const struct timespec *__restrict
  84214. + const struct timespec *__restrict
  84215. __abstime) __THROW;
  84216. # endif
  84217. @@ -461,7 +461,7 @@
  84218. # ifdef __USE_XOPEN2K
  84219. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  84220. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  84221. - __const struct timespec *__restrict
  84222. + const struct timespec *__restrict
  84223. __abstime) __THROW;
  84224. # endif
  84225. @@ -478,7 +478,7 @@
  84226. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __THROW;
  84227. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  84228. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  84229. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  84230. __restrict __attr,
  84231. int *__restrict __pshared) __THROW;
  84232. @@ -487,7 +487,7 @@
  84233. int __pshared) __THROW;
  84234. /* Return current setting of reader/writer preference. */
  84235. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
  84236. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *__attr,
  84237. int *__pref) __THROW;
  84238. /* Set reader/write preference. */
  84239. @@ -520,7 +520,7 @@
  84240. /* Barriers are a also a new feature in 1003.1j-2000. */
  84241. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  84242. - __const pthread_barrierattr_t *__restrict
  84243. + const pthread_barrierattr_t *__restrict
  84244. __attr, unsigned int __count) __THROW;
  84245. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __THROW;
  84246. @@ -529,7 +529,7 @@
  84247. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __THROW;
  84248. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  84249. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  84250. __restrict __attr,
  84251. int *__restrict __pshared) __THROW;
  84252. @@ -556,7 +556,7 @@
  84253. /* Store POINTER in the thread-specific data slot identified by KEY. */
  84254. extern int pthread_setspecific (pthread_key_t __key,
  84255. - __const void *__pointer) __THROW;
  84256. + const void *__pointer) __THROW;
  84257. /* Return current value of the thread-specific data slot identified by KEY. */
  84258. extern void *pthread_getspecific (pthread_key_t __key) __THROW;
  84259. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c
  84260. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84261. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84262. @@ -23,8 +23,7 @@
  84263. You should have received a copy of the GNU Lesser General Public
  84264. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84265. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84266. - Boston, MA 02111-1307, USA. */
  84267. + see <http://www.gnu.org/licenses/>. */
  84268. /* This file is compiled into assembly code which is then munged by a sed
  84269. script into two files: crti.s and crtn.s.
  84270. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c uClibc/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c
  84271. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c 2012-05-15 09:20:09.000000000 +0200
  84272. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c 2014-02-03 12:32:57.000000000 +0100
  84273. @@ -19,13 +19,6 @@
  84274. #include "pthread.h"
  84275. #include "internals.h"
  84276. -/* These functions are not declared anywhere since they shouldn't be
  84277. - used at another place but here. */
  84278. -extern void __libc_siglongjmp (sigjmp_buf env, int val)
  84279. - __attribute__ ((noreturn));
  84280. -extern void __libc_longjmp (sigjmp_buf env, int val)
  84281. - __attribute__ ((noreturn));
  84282. -
  84283. #ifdef SHARED
  84284. void siglongjmp (sigjmp_buf env, int val)
  84285. {
  84286. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/res-state.c uClibc/libpthread/linuxthreads/sysdeps/pthread/res-state.c
  84287. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/res-state.c 2012-05-15 09:20:09.000000000 +0200
  84288. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/res-state.c 2014-02-03 12:32:57.000000000 +0100
  84289. @@ -12,28 +12,27 @@
  84290. Lesser General Public License for more details.
  84291. You should have received a copy of the GNU Lesser General Public
  84292. - License along with the GNU C Library; if not, write to the Free
  84293. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84294. - 02111-1307 USA. */
  84295. + License along with the GNU C Library; if not, see
  84296. + <http://www.gnu.org/licenses/>. */
  84297. #include <resolv.h>
  84298. #include <tls.h>
  84299. #include <linuxthreads/internals.h>
  84300. #include <sysdep-cancel.h>
  84301. -#if ! USE___THREAD
  84302. +#ifndef __UCLIBC_HAS_TLS__
  84303. # undef _res
  84304. extern struct __res_state _res;
  84305. #endif
  84306. /* When threaded, _res may be a per-thread variable. */
  84307. struct __res_state *
  84308. -#if ! USE___THREAD
  84309. +#ifndef __UCLIBC_HAS_TLS__
  84310. weak_const_function
  84311. #endif
  84312. __res_state (void)
  84313. {
  84314. -#if ! USE___THREAD
  84315. +#ifndef __UCLIBC_HAS_TLS__
  84316. if (! SINGLE_THREAD_P)
  84317. {
  84318. pthread_descr self = thread_self();
  84319. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/sigaction.c uClibc/libpthread/linuxthreads/sysdeps/pthread/sigaction.c
  84320. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  84321. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/sigaction.c 2014-02-03 12:32:57.000000000 +0100
  84322. @@ -13,9 +13,8 @@
  84323. Lesser General Public License for more details.
  84324. You should have received a copy of the GNU Lesser General Public
  84325. - License along with the GNU C Library; if not, write to the Free
  84326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84327. - 02111-1307 USA. */
  84328. + License along with the GNU C Library; if not, see
  84329. + <http://www.gnu.org/licenses/>. */
  84330. /* Somebody please explain what's going on here. --vda */
  84331. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_create.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_create.c
  84332. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  84333. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  84334. @@ -13,9 +13,8 @@
  84335. Lesser General Public License for more details.
  84336. You should have received a copy of the GNU Lesser General Public
  84337. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84338. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84339. - Boston, MA 02111-1307, USA. */
  84340. + License along with the GNU C Library; see the file COPYING.LIB. If
  84341. + not, see <http://www.gnu.org/licenses/>. */
  84342. #include <errno.h>
  84343. #include <signal.h>
  84344. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c
  84345. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  84346. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  84347. @@ -13,9 +13,8 @@
  84348. Lesser General Public License for more details.
  84349. You should have received a copy of the GNU Lesser General Public
  84350. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84351. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84352. - Boston, MA 02111-1307, USA. */
  84353. + License along with the GNU C Library; see the file COPYING.LIB. If
  84354. + not, see <http://www.gnu.org/licenses/>. */
  84355. #include <assert.h>
  84356. #include <errno.h>
  84357. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c
  84358. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  84359. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  84360. @@ -13,9 +13,8 @@
  84361. Lesser General Public License for more details.
  84362. You should have received a copy of the GNU Lesser General Public
  84363. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84364. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84365. - Boston, MA 02111-1307, USA. */
  84366. + License along with the GNU C Library; see the file COPYING.LIB. If
  84367. + not, see <http://www.gnu.org/licenses/>. */
  84368. #include <errno.h>
  84369. #include <pthread.h>
  84370. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c
  84371. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  84372. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  84373. @@ -13,9 +13,8 @@
  84374. Lesser General Public License for more details.
  84375. You should have received a copy of the GNU Lesser General Public
  84376. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84377. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84378. - Boston, MA 02111-1307, USA. */
  84379. + License along with the GNU C Library; see the file COPYING.LIB. If
  84380. + not, see <http://www.gnu.org/licenses/>. */
  84381. #include <errno.h>
  84382. #include <pthread.h>
  84383. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c
  84384. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  84385. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  84386. @@ -14,9 +14,8 @@
  84387. Lesser General Public License for more details.
  84388. You should have received a copy of the GNU Lesser General Public
  84389. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84390. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84391. - Boston, MA 02111-1307, USA. */
  84392. + License along with the GNU C Library; see the file COPYING.LIB. If
  84393. + not, see <http://www.gnu.org/licenses/>. */
  84394. #include <assert.h>
  84395. #include <errno.h>
  84396. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c
  84397. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  84398. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  84399. @@ -13,9 +13,8 @@
  84400. Lesser General Public License for more details.
  84401. You should have received a copy of the GNU Lesser General Public
  84402. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84403. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84404. - Boston, MA 02111-1307, USA. */
  84405. + License along with the GNU C Library; see the file COPYING.LIB. If
  84406. + not, see <http://www.gnu.org/licenses/>. */
  84407. #include <errno.h>
  84408. #include <pthread.h>
  84409. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c uClibc/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c
  84410. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c 2012-05-15 09:20:09.000000000 +0200
  84411. +++ uClibc/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c 2014-02-03 12:32:57.000000000 +0100
  84412. @@ -14,9 +14,8 @@
  84413. Lesser General Public License for more details.
  84414. You should have received a copy of the GNU Lesser General Public
  84415. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84416. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84417. - Boston, MA 02111-1307, USA. */
  84418. + License along with the GNU C Library; see the file COPYING.LIB. If
  84419. + not, see <http://www.gnu.org/licenses/>. */
  84420. #include <errno.h>
  84421. #include <signal.h>
  84422. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/s390/pspinlock.c
  84423. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84424. +++ uClibc/libpthread/linuxthreads/sysdeps/s390/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84425. @@ -14,9 +14,8 @@
  84426. Lesser General Public License for more details.
  84427. You should have received a copy of the GNU Lesser General Public
  84428. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84429. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84430. - Boston, MA 02111-1307, USA. */
  84431. + License along with the GNU C Library; see the file COPYING.LIB. If
  84432. + not, see <http://www.gnu.org/licenses/>. */
  84433. #include <errno.h>
  84434. #include <pthread.h>
  84435. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
  84436. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84437. +++ uClibc/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84438. @@ -15,9 +15,8 @@
  84439. Lesser General Public License for more details.
  84440. You should have received a copy of the GNU Lesser General Public
  84441. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84442. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84443. - Boston, MA 02111-1307, USA. */
  84444. + License along with the GNU C Library; see the file COPYING.LIB. If
  84445. + not, see <http://www.gnu.org/licenses/>. */
  84446. #ifndef _PT_MACHINE_H
  84447. #define _PT_MACHINE_H 1
  84448. @@ -58,7 +57,7 @@
  84449. #define CURRENT_STACK_FRAME stack_pointer
  84450. register char * stack_pointer __asm__ ("15");
  84451. -#ifdef USE_TLS
  84452. +#ifdef __UCLIBC_HAS_TLS__
  84453. /* Return the thread descriptor for the current thread. */
  84454. # define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
  84455. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
  84456. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84457. +++ uClibc/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84458. @@ -15,9 +15,8 @@
  84459. Lesser General Public License for more details.
  84460. You should have received a copy of the GNU Lesser General Public
  84461. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84462. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84463. - Boston, MA 02111-1307, USA. */
  84464. + License along with the GNU C Library; see the file COPYING.LIB. If
  84465. + not, see <http://www.gnu.org/licenses/>. */
  84466. #ifndef _PT_MACHINE_H
  84467. #define _PT_MACHINE_H 1
  84468. @@ -58,7 +57,7 @@
  84469. #define CURRENT_STACK_FRAME stack_pointer
  84470. register char * stack_pointer __asm__ ("15");
  84471. -#ifdef USE_TLS
  84472. +#ifdef __UCLIBC_HAS_TLS__
  84473. /* Return the thread descriptor for the current thread. */
  84474. # define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
  84475. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/tls.h uClibc/libpthread/linuxthreads/sysdeps/s390/tls.h
  84476. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/tls.h 2012-05-15 09:20:09.000000000 +0200
  84477. +++ uClibc/libpthread/linuxthreads/sysdeps/s390/tls.h 2014-02-03 12:32:57.000000000 +0100
  84478. @@ -13,9 +13,8 @@
  84479. Lesser General Public License for more details.
  84480. You should have received a copy of the GNU Lesser General Public
  84481. - License along with the GNU C Library; if not, write to the Free
  84482. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84483. - 02111-1307 USA. */
  84484. + License along with the GNU C Library; if not, see
  84485. + <http://www.gnu.org/licenses/>. */
  84486. #ifndef _TLS_H
  84487. #define _TLS_H
  84488. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/sh/pspinlock.c
  84489. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84490. +++ uClibc/libpthread/linuxthreads/sysdeps/sh/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84491. @@ -13,9 +13,8 @@
  84492. Lesser General Public License for more details.
  84493. You should have received a copy of the GNU Lesser General Public
  84494. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84495. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84496. - Boston, MA 02111-1307, USA. */
  84497. + License along with the GNU C Library; see the file COPYING.LIB. If
  84498. + not, see <http://www.gnu.org/licenses/>. */
  84499. #include <errno.h>
  84500. #include <pthread.h>
  84501. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/sh/pt-machine.h
  84502. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84503. +++ uClibc/libpthread/linuxthreads/sysdeps/sh/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84504. @@ -15,9 +15,8 @@
  84505. Lesser General Public License for more details.
  84506. You should have received a copy of the GNU Lesser General Public
  84507. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84508. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84509. - Boston, MA 02111-1307, USA. */
  84510. + License along with the GNU C Library; see the file COPYING.LIB. If
  84511. + not, see <http://www.gnu.org/licenses/>. */
  84512. #ifndef _PT_MACHINE_H
  84513. #define _PT_MACHINE_H 1
  84514. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym uClibc/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym
  84515. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  84516. +++ uClibc/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  84517. @@ -2,7 +2,7 @@
  84518. #include <tls.h>
  84519. --
  84520. -#ifdef USE_TLS
  84521. +#ifdef __UCLIBC_HAS_TLS__
  84522. MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads)
  84523. TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
  84524. #else
  84525. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tls.h uClibc/libpthread/linuxthreads/sysdeps/sh/tls.h
  84526. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  84527. +++ uClibc/libpthread/linuxthreads/sysdeps/sh/tls.h 2014-02-03 12:32:57.000000000 +0100
  84528. @@ -13,9 +13,8 @@
  84529. Lesser General Public License for more details.
  84530. You should have received a copy of the GNU Lesser General Public
  84531. - License along with the GNU C Library; if not, write to the Free
  84532. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84533. - 02111-1307 USA. */
  84534. + License along with the GNU C Library; if not, see
  84535. + <http://www.gnu.org/licenses/>. */
  84536. #ifndef _TLS_H
  84537. #define _TLS_H
  84538. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c
  84539. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84540. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84541. @@ -13,9 +13,8 @@
  84542. Lesser General Public License for more details.
  84543. You should have received a copy of the GNU Lesser General Public
  84544. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84545. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84546. - Boston, MA 02111-1307, USA. */
  84547. + License along with the GNU C Library; see the file COPYING.LIB. If
  84548. + not, see <http://www.gnu.org/licenses/>. */
  84549. #include <errno.h>
  84550. #include <pthread.h>
  84551. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
  84552. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84553. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84554. @@ -15,9 +15,8 @@
  84555. Lesser General Public License for more details.
  84556. You should have received a copy of the GNU Lesser General Public
  84557. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84558. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84559. - Boston, MA 02111-1307, USA. */
  84560. + License along with the GNU C Library; see the file COPYING.LIB. If
  84561. + not, see <http://www.gnu.org/licenses/>. */
  84562. #ifndef _PT_MACHINE_H
  84563. #define _PT_MACHINE_H 1
  84564. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c
  84565. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84566. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84567. @@ -13,9 +13,8 @@
  84568. Lesser General Public License for more details.
  84569. You should have received a copy of the GNU Lesser General Public
  84570. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84571. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84572. - Boston, MA 02111-1307, USA. */
  84573. + License along with the GNU C Library; see the file COPYING.LIB. If
  84574. + not, see <http://www.gnu.org/licenses/>. */
  84575. #include <errno.h>
  84576. #include <pthread.h>
  84577. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c
  84578. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84579. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84580. @@ -13,9 +13,8 @@
  84581. Lesser General Public License for more details.
  84582. You should have received a copy of the GNU Lesser General Public
  84583. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84584. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84585. - Boston, MA 02111-1307, USA. */
  84586. + License along with the GNU C Library; see the file COPYING.LIB. If
  84587. + not, see <http://www.gnu.org/licenses/>. */
  84588. #include <errno.h>
  84589. #include <pthread.h>
  84590. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
  84591. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84592. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84593. @@ -16,8 +16,7 @@
  84594. You should have received a copy of the GNU Lesser General Public
  84595. License along with the GNU C Library; see the file COPYING.LIB. If
  84596. - not, write to the Free Software Foundation, Inc.,
  84597. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  84598. + not, see <http://www.gnu.org/licenses/>. */
  84599. #ifndef _PT_MACHINE_H
  84600. #define _PT_MACHINE_H 1
  84601. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/tls.h uClibc/libpthread/linuxthreads/sysdeps/sparc/tls.h
  84602. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/tls.h 2012-05-15 09:20:09.000000000 +0200
  84603. +++ uClibc/libpthread/linuxthreads/sysdeps/sparc/tls.h 2014-02-03 12:32:57.000000000 +0100
  84604. @@ -13,9 +13,8 @@
  84605. Lesser General Public License for more details.
  84606. You should have received a copy of the GNU Lesser General Public
  84607. - License along with the GNU C Library; if not, write to the Free
  84608. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84609. - 02111-1307 USA. */
  84610. + License along with the GNU C Library; if not, see
  84611. + <http://www.gnu.org/licenses/>. */
  84612. #ifndef _TLS_H
  84613. #define _TLS_H
  84614. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h
  84615. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h 2012-05-15 09:20:09.000000000 +0200
  84616. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h 2014-02-03 12:32:57.000000000 +0100
  84617. @@ -14,8 +14,7 @@
  84618. You should have received a copy of the GNU Library General Public
  84619. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84620. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84621. - Boston, MA 02111-1307, USA. */
  84622. + see <http://www.gnu.org/licenses/>. */
  84623. #include <limits.h>
  84624. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c
  84625. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c 2012-05-15 09:20:09.000000000 +0200
  84626. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c 2014-02-03 12:32:57.000000000 +0100
  84627. @@ -14,9 +14,8 @@
  84628. Lesser General Public License for more details.
  84629. You should have received a copy of the GNU Lesser General Public
  84630. - License along with the GNU C Library; if not, write to the Free
  84631. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84632. - 02111-1307 USA. */
  84633. + License along with the GNU C Library; if not, see
  84634. + <http://www.gnu.org/licenses/>. */
  84635. #include <signal.h>
  84636. @@ -70,6 +69,7 @@
  84637. strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private)
  84638. libc_hidden_def (__libc_current_sigrtmax)
  84639. +#if 0
  84640. /* Allocate real-time signal with highest/lowest available
  84641. priority. Please note that we don't use a lock since we assume
  84642. this function to be called at program start. */
  84643. @@ -85,3 +85,4 @@
  84644. return high ? current_rtmin++ : current_rtmax--;
  84645. }
  84646. strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private)
  84647. +#endif
  84648. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
  84649. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  84650. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  84651. @@ -13,9 +13,8 @@
  84652. Lesser General Public License for more details.
  84653. You should have received a copy of the GNU Lesser General Public
  84654. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84655. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84656. - Boston, MA 02111-1307, USA. */
  84657. + License along with the GNU C Library; see the file COPYING.LIB. If
  84658. + not, see <http://www.gnu.org/licenses/>. */
  84659. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  84660. and defines LINK_MAX although filesystems have different maxima. A
  84661. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
  84662. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  84663. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  84664. @@ -13,9 +13,8 @@
  84665. Lesser General Public License for more details.
  84666. You should have received a copy of the GNU Lesser General Public
  84667. - License along with the GNU C Library; if not, write to the Free
  84668. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84669. - 02111-1307 USA. */
  84670. + License along with the GNU C Library; if not, see
  84671. + <http://www.gnu.org/licenses/>. */
  84672. #ifndef _BITS_TYPES_H
  84673. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  84674. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S
  84675. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2012-05-15 09:20:09.000000000 +0200
  84676. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2014-02-03 12:32:57.000000000 +0100
  84677. @@ -13,9 +13,8 @@
  84678. Lesser General Public License for more details.
  84679. You should have received a copy of the GNU Lesser General Public
  84680. - License along with the GNU C Library; if not, write to the Free
  84681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84682. - 02111-1307 USA. */
  84683. + License along with the GNU C Library; if not, see
  84684. + <http://www.gnu.org/licenses/>. */
  84685. #include <sysdep.h>
  84686. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
  84687. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84688. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84689. @@ -12,9 +12,8 @@
  84690. Lesser General Public License for more details.
  84691. You should have received a copy of the GNU Lesser General Public
  84692. - License along with the GNU C Library; if not, write to the Free
  84693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84694. - 02111-1307 USA. */
  84695. + License along with the GNU C Library; if not, see
  84696. + <http://www.gnu.org/licenses/>. */
  84697. #include <sysdep.h>
  84698. #ifndef __ASSEMBLER__
  84699. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S
  84700. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84701. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84702. @@ -12,9 +12,8 @@
  84703. Lesser General Public License for more details.
  84704. You should have received a copy of the GNU Lesser General Public
  84705. - License along with the GNU C Library; if not, write to the Free
  84706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84707. - 02111-1307 USA. */
  84708. + License along with the GNU C Library; if not, see
  84709. + <http://www.gnu.org/licenses/>. */
  84710. #include <sysdep-cancel.h>
  84711. @@ -30,7 +29,7 @@
  84712. #ifdef SHARED
  84713. ldq t0, __libc_pthread_functions(gp) !gprel
  84714. - bne t0, HIDDEN_JUMPTARGET (__fork) !samegp
  84715. + bne t0, HIDDEN_JUMPTARGET (fork) !samegp
  84716. #else
  84717. .weak pthread_create
  84718. ldq t0, pthread_create(gp) !literal
  84719. @@ -50,7 +49,7 @@
  84720. cfi_adjust_cfa_offset(16)
  84721. stq ra, 0(sp)
  84722. cfi_offset(ra, -16)
  84723. - jsr ra, HIDDEN_JUMPTARGET (__fork)
  84724. + jsr ra, HIDDEN_JUMPTARGET (fork)
  84725. ldgp gp, 0(ra)
  84726. ldq ra, 0(sp)
  84727. addq sp, 16, sp
  84728. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
  84729. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84730. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84731. @@ -13,9 +13,8 @@
  84732. Lesser General Public License for more details.
  84733. You should have received a copy of the GNU Lesser General Public
  84734. - License along with the GNU C Library; if not, write to the Free
  84735. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84736. - 02111-1307 USA. */
  84737. + License along with the GNU C Library; if not, see
  84738. + <http://www.gnu.org/licenses/>. */
  84739. #include <tls.h>
  84740. #include <pt-machine.h>
  84741. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S
  84742. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84743. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84744. @@ -13,9 +13,8 @@
  84745. Lesser General Public License for more details.
  84746. You should have received a copy of the GNU Lesser General Public
  84747. - License along with the GNU C Library; if not, write to the Free
  84748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84749. - 02111-1307 USA. */
  84750. + License along with the GNU C Library; if not, see
  84751. + <http://www.gnu.org/licenses/>. */
  84752. #include <sysdep-cancel.h>
  84753. #define _ERRNO_H 1
  84754. @@ -40,7 +39,7 @@
  84755. ldr r0, 1f
  84756. #endif
  84757. movs r0, r0
  84758. - bne HIDDEN_JUMPTARGET (__fork)
  84759. + bne HIDDEN_JUMPTARGET (fork)
  84760. DO_CALL (vfork, 0)
  84761. cmn a1, #4096
  84762. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore
  84763. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  84764. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  84765. @@ -1,2 +0,0 @@
  84766. -.cvsignore
  84767. -*.os
  84768. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c
  84769. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c 2012-05-15 09:20:09.000000000 +0200
  84770. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c 2014-02-03 12:32:57.000000000 +0100
  84771. @@ -12,9 +12,8 @@
  84772. Lesser General Public License for more details.
  84773. You should have received a copy of the GNU Lesser General Public
  84774. - License along with the GNU C Library; if not, write to the Free
  84775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84776. - 02111-1307 USA. */
  84777. + License along with the GNU C Library; if not, see
  84778. + <http://www.gnu.org/licenses/>. */
  84779. #include <errno.h>
  84780. #include <unistd.h>
  84781. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c
  84782. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2012-05-15 09:20:09.000000000 +0200
  84783. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2014-02-03 12:32:57.000000000 +0100
  84784. @@ -13,9 +13,8 @@
  84785. Lesser General Public License for more details.
  84786. You should have received a copy of the GNU Lesser General Public
  84787. - License along with the GNU C Library; if not, write to the Free
  84788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84789. - 02111-1307 USA. */
  84790. + License along with the GNU C Library; if not, see
  84791. + <http://www.gnu.org/licenses/>. */
  84792. #include <errno.h>
  84793. #include <fork.h>
  84794. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h
  84795. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h 2012-05-15 09:20:09.000000000 +0200
  84796. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h 2014-02-03 12:32:57.000000000 +0100
  84797. @@ -13,9 +13,8 @@
  84798. Lesser General Public License for more details.
  84799. You should have received a copy of the GNU Lesser General Public
  84800. - License along with the GNU C Library; if not, write to the Free
  84801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84802. - 02111-1307 USA. */
  84803. + License along with the GNU C Library; if not, see
  84804. + <http://www.gnu.org/licenses/>. */
  84805. #include <list.h>
  84806. #include <bits/libc-lock.h>
  84807. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h
  84808. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  84809. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2014-02-03 12:32:57.000000000 +0100
  84810. @@ -13,9 +13,8 @@
  84811. Lesser General Public License for more details.
  84812. You should have received a copy of the GNU Lesser General Public
  84813. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84814. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84815. - Boston, MA 02111-1307, USA. */
  84816. + License along with the GNU C Library; see the file COPYING.LIB. If
  84817. + not, see <http://www.gnu.org/licenses/>. */
  84818. /* Initial value of a spinlock. PA-RISC only implements atomic load
  84819. and clear so this must be non-zero. */
  84820. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h
  84821. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  84822. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  84823. @@ -15,9 +15,8 @@
  84824. Lesser General Public License for more details.
  84825. You should have received a copy of the GNU Lesser General Public
  84826. - License along with the GNU C Library; if not, write to the Free
  84827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84828. - 02111-1307 USA. */
  84829. + License along with the GNU C Library; if not, see
  84830. + <http://www.gnu.org/licenses/>. */
  84831. #ifndef _MALLOC_MACHINE_H
  84832. #define _MALLOC_MACHINE_H
  84833. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c
  84834. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84835. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84836. @@ -23,8 +23,7 @@
  84837. You should have received a copy of the GNU Lesser General Public
  84838. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84839. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84840. - Boston, MA 02111-1307, USA. */
  84841. + see <http://www.gnu.org/licenses/>. */
  84842. /* This file is compiled into assembly code which is then munged by a sed
  84843. script into two files: crti.s and crtn.s.
  84844. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h
  84845. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84846. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84847. @@ -14,9 +14,8 @@
  84848. Lesser General Public License for more details.
  84849. You should have received a copy of the GNU Lesser General Public
  84850. - License along with the GNU C Library; if not, write to the Free
  84851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84852. - 02111-1307 USA. */
  84853. + License along with the GNU C Library; if not, see
  84854. + <http://www.gnu.org/licenses/>. */
  84855. #include <sysdep.h>
  84856. #ifndef __ASSEMBLER__
  84857. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
  84858. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84859. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84860. @@ -13,9 +13,8 @@
  84861. Lesser General Public License for more details.
  84862. You should have received a copy of the GNU Lesser General Public
  84863. - License along with the GNU C Library; if not, write to the Free
  84864. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84865. - 02111-1307 USA. */
  84866. + License along with the GNU C Library; if not, see
  84867. + <http://www.gnu.org/licenses/>. */
  84868. #include <tls.h>
  84869. #include <pt-machine.h>
  84870. @@ -139,7 +138,7 @@
  84871. #endif
  84872. # ifndef __ASSEMBLER__
  84873. -# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
  84874. +# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
  84875. # define SINGLE_THREAD_P \
  84876. __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
  84877. p_header.data.multiple_threads) == 0, 1)
  84878. @@ -155,7 +154,7 @@
  84879. # else
  84880. # if !defined __PIC__
  84881. # define SINGLE_THREAD_P cmpl $0, __local_multiple_threads
  84882. -# elif defined FLOATING_STACKS && USE___THREAD
  84883. +# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
  84884. # define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
  84885. # else
  84886. # if !defined NOT_IN_libc || defined IS_IN_libpthread
  84887. @@ -165,7 +164,7 @@
  84888. movl __local_multiple_threads@GOT(%ecx), %ecx;\
  84889. cmpl $0, (%ecx)
  84890. # endif
  84891. -# if !defined HAVE_HIDDEN || !USE___THREAD
  84892. +# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
  84893. # define SINGLE_THREAD_P \
  84894. SETUP_PIC_REG (cx); \
  84895. addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
  84896. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
  84897. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84898. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84899. @@ -13,9 +13,8 @@
  84900. Lesser General Public License for more details.
  84901. You should have received a copy of the GNU Lesser General Public
  84902. - License along with the GNU C Library; if not, write to the Free
  84903. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84904. - 02111-1307 USA. */
  84905. + License along with the GNU C Library; if not, see
  84906. + <http://www.gnu.org/licenses/>. */
  84907. #include <sysdep-cancel.h>
  84908. #define _ERRNO_H 1
  84909. @@ -32,7 +31,7 @@
  84910. #ifdef __NR_vfork
  84911. # ifdef SHARED
  84912. -# if !defined HAVE_HIDDEN || !USE___THREAD
  84913. +# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
  84914. SETUP_PIC_REG (cx)
  84915. # else
  84916. call __i686.get_pc_thunk.cx
  84917. @@ -44,7 +43,7 @@
  84918. movl $pthread_create, %eax
  84919. testl %eax, %eax
  84920. # endif
  84921. - jne HIDDEN_JUMPTARGET (__fork)
  84922. + jne HIDDEN_JUMPTARGET (fork)
  84923. /* Pop the return PC value into ECX. */
  84924. popl %ecx
  84925. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
  84926. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  84927. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  84928. @@ -13,9 +13,8 @@
  84929. Lesser General Public License for more details.
  84930. You should have received a copy of the GNU Lesser General Public
  84931. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84932. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84933. - Boston, MA 02111-1307, USA. */
  84934. + License along with the GNU C Library; see the file COPYING.LIB. If
  84935. + not, see <http://www.gnu.org/licenses/>. */
  84936. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  84937. and defines LINK_MAX although filesystems have different maxima. A
  84938. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h
  84939. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h 2012-05-15 09:20:09.000000000 +0200
  84940. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h 2014-02-03 12:32:57.000000000 +0100
  84941. @@ -13,9 +13,8 @@
  84942. Lesser General Public License for more details.
  84943. You should have received a copy of the GNU Lesser General Public
  84944. - License along with the GNU C Library; if not, write to the Free
  84945. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84946. - 02111-1307 USA. */
  84947. + License along with the GNU C Library; if not, see
  84948. + <http://www.gnu.org/licenses/>. */
  84949. #include <signal.h>
  84950. #include <sysdep.h>
  84951. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
  84952. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84953. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84954. @@ -23,8 +23,7 @@
  84955. You should have received a copy of the GNU Lesser General Public
  84956. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84957. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84958. - Boston, MA 02111-1307, USA. */
  84959. + see <http://www.gnu.org/licenses/>. */
  84960. /* This file is compiled into assembly code which is then munged by a sed
  84961. script into two files: crti.s and crtn.s.
  84962. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c
  84963. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  84964. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2014-02-03 12:32:57.000000000 +0100
  84965. @@ -13,9 +13,8 @@
  84966. Lesser General Public License for more details.
  84967. You should have received a copy of the GNU Lesser General Public
  84968. - License along with the GNU C Library; if not, write to the Free
  84969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84970. - 02111-1307 USA. */
  84971. + License along with the GNU C Library; if not, see
  84972. + <http://www.gnu.org/licenses/>. */
  84973. #include <errno.h>
  84974. #include <signal.h>
  84975. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
  84976. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84977. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84978. @@ -13,9 +13,8 @@
  84979. Lesser General Public License for more details.
  84980. You should have received a copy of the GNU Lesser General Public
  84981. - License along with the GNU C Library; if not, write to the Free
  84982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84983. - 02111-1307 USA. */
  84984. + License along with the GNU C Library; if not, see
  84985. + <http://www.gnu.org/licenses/>. */
  84986. #include <sysdep.h>
  84987. #include <tls.h>
  84988. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S
  84989. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84990. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84991. @@ -12,9 +12,8 @@
  84992. Lesser General Public License for more details.
  84993. You should have received a copy of the GNU Lesser General Public
  84994. - License along with the GNU C Library; if not, write to the Free
  84995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84996. - 02111-1307 USA. */
  84997. + License along with the GNU C Library; if not, see
  84998. + <http://www.gnu.org/licenses/>. */
  84999. #include <sysdep-cancel.h>
  85000. @@ -38,7 +37,7 @@
  85001. #endif
  85002. ld8 r14 = [r14];;
  85003. cmp.ne p6, p7 = 0, r14
  85004. -(p6) br.cond.spnt.few HIDDEN_JUMPTARGET (__fork);;
  85005. +(p6) br.cond.spnt.few HIDDEN_JUMPTARGET (fork);;
  85006. alloc r2=ar.pfs,0,0,2,0
  85007. mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
  85008. mov out1=0 /* Standard sp value. */
  85009. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c
  85010. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c 2012-05-15 09:20:09.000000000 +0200
  85011. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c 2014-02-03 12:32:57.000000000 +0100
  85012. @@ -13,9 +13,8 @@
  85013. Lesser General Public License for more details.
  85014. You should have received a copy of the GNU Lesser General Public
  85015. - License along with the GNU C Library; if not, write to the Free
  85016. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85017. - 02111-1307 USA. */
  85018. + License along with the GNU C Library; if not, see
  85019. + <http://www.gnu.org/licenses/>. */
  85020. #include <setjmp.h>
  85021. #include <stddef.h>
  85022. @@ -32,3 +31,4 @@
  85023. (env->__jmpbuf, __builtin_frame_address (0)),
  85024. (void) 0);
  85025. }
  85026. +libc_hidden_def(_longjmp_unwind)
  85027. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
  85028. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85029. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85030. @@ -13,9 +13,8 @@
  85031. Lesser General Public License for more details.
  85032. You should have received a copy of the GNU Lesser General Public
  85033. - License along with the GNU C Library; if not, write to the Free
  85034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85035. - 02111-1307 USA. */
  85036. + License along with the GNU C Library; if not, see
  85037. + <http://www.gnu.org/licenses/>. */
  85038. #include <sysdep.h>
  85039. #ifndef __ASSEMBLER__
  85040. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S
  85041. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85042. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85043. @@ -13,9 +13,8 @@
  85044. Lesser General Public License for more details.
  85045. You should have received a copy of the GNU Lesser General Public
  85046. - License along with the GNU C Library; if not, write to the Free
  85047. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85048. - 02111-1307 USA. */
  85049. + License along with the GNU C Library; if not, see
  85050. + <http://www.gnu.org/licenses/>. */
  85051. #include <sysdep-cancel.h>
  85052. #define _ERRNO_H 1
  85053. @@ -35,7 +34,7 @@
  85054. .weak pthread_create
  85055. movel #pthread_create, %d0
  85056. #endif
  85057. - jbne HIDDEN_JUMPTARGET (__fork)
  85058. + jbne HIDDEN_JUMPTARGET (fork)
  85059. #ifdef __NR_vfork
  85060. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
  85061. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85062. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85063. @@ -15,9 +15,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 <sysdep.h>
  85072. #ifndef __ASSEMBLER__
  85073. @@ -31,7 +30,7 @@
  85074. # undef PSEUDO
  85075. # define PSEUDO(name, syscall_name, args) \
  85076. .align 2; \
  85077. - 99: \
  85078. + 99: move a0, v0; \
  85079. PTR_LA t9,__syscall_error; \
  85080. /* manual cpreturn. */ \
  85081. REG_L gp, STKOFF_GP(sp); \
  85082. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
  85083. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85084. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85085. @@ -13,9 +13,8 @@
  85086. Lesser General Public License for more details.
  85087. You should have received a copy of the GNU Lesser General Public
  85088. - License along with the GNU C Library; if not, write to the Free
  85089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85090. - 02111-1307 USA. */
  85091. + License along with the GNU C Library; if not, see
  85092. + <http://www.gnu.org/licenses/>. */
  85093. #include <sysdep.h>
  85094. #ifndef __ASSEMBLER__
  85095. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S
  85096. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85097. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85098. @@ -12,9 +12,8 @@
  85099. Lesser General Public License for more details.
  85100. You should have received a copy of the GNU Lesser General Public
  85101. - License along with the GNU C Library; if not, write to the Free
  85102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85103. - 02111-1307 USA. */
  85104. + License along with the GNU C Library; if not, see
  85105. + <http://www.gnu.org/licenses/>. */
  85106. /* vfork() is just a special case of clone(). */
  85107. @@ -80,6 +79,7 @@
  85108. /* Something bad happened -- no child created. */
  85109. L(error):
  85110. + move a0, v0
  85111. #ifdef __PIC__
  85112. PTR_LA t9, __syscall_error
  85113. RESTORE_GP64
  85114. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
  85115. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c 2012-05-15 09:20:09.000000000 +0200
  85116. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c 2014-02-03 12:32:57.000000000 +0100
  85117. @@ -13,9 +13,8 @@
  85118. Lesser General Public License for more details.
  85119. You should have received a copy of the GNU Lesser General Public
  85120. - License along with the GNU C Library; if not, write to the Free
  85121. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85122. - 02111-1307 USA. */
  85123. + License along with the GNU C Library; if not, see
  85124. + <http://www.gnu.org/licenses/>. */
  85125. #include <assert.h>
  85126. #include <errno.h>
  85127. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
  85128. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85129. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85130. @@ -13,9 +13,8 @@
  85131. Lesser General Public License for more details.
  85132. You should have received a copy of the GNU Lesser General Public
  85133. - License along with the GNU C Library; if not, write to the Free
  85134. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85135. - 02111-1307 USA. */
  85136. + License along with the GNU C Library; if not, see
  85137. + <http://www.gnu.org/licenses/>. */
  85138. #include <sysdep.h>
  85139. #include <tls.h>
  85140. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
  85141. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85142. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85143. @@ -12,9 +12,8 @@
  85144. Lesser General Public License for more details.
  85145. You should have received a copy of the GNU Lesser General Public
  85146. - License along with the GNU C Library; if not, write to the Free
  85147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85148. - 02111-1307 USA. */
  85149. + License along with the GNU C Library; if not, see
  85150. + <http://www.gnu.org/licenses/>. */
  85151. #include <sysdep-cancel.h>
  85152. #define _ERRNO_H 1
  85153. @@ -66,7 +65,7 @@
  85154. # endif
  85155. .Lhidden_fork:
  85156. - b HIDDEN_JUMPTARGET(__fork)
  85157. + b HIDDEN_JUMPTARGET(fork)
  85158. #endif
  85159. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
  85160. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85161. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85162. @@ -13,9 +13,8 @@
  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 <sysdep.h>
  85171. #include <tls.h>
  85172. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
  85173. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85174. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85175. @@ -12,9 +12,8 @@
  85176. Lesser General Public License for more details.
  85177. You should have received a copy of the GNU Lesser General Public
  85178. - License along with the GNU C Library; if not, write to the Free
  85179. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85180. - 02111-1307 USA. */
  85181. + License along with the GNU C Library; if not, see
  85182. + <http://www.gnu.org/licenses/>. */
  85183. #include <sysdep-cancel.h>
  85184. #define _ERRNO_H 1
  85185. @@ -42,7 +41,7 @@
  85186. ld 10,.LC0@toc(2)
  85187. ld 10,0(10)
  85188. cmpwi 10,0
  85189. - bne- HIDDEN_JUMPTARGET(__fork)
  85190. + bne- HIDDEN_JUMPTARGET(fork)
  85191. # else
  85192. .weak pthread_create
  85193. lis 10,pthread_create@highest
  85194. @@ -80,7 +79,7 @@
  85195. # ifndef SHARED
  85196. .Lhidden_fork:
  85197. - b HIDDEN_JUMPTARGET(__fork)
  85198. + b HIDDEN_JUMPTARGET(fork)
  85199. .Lsyscall_error:
  85200. b JUMPTARGET(__syscall_error)
  85201. # endif
  85202. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c
  85203. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  85204. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2014-02-03 12:32:57.000000000 +0100
  85205. @@ -13,9 +13,8 @@
  85206. Lesser General Public License for more details.
  85207. You should have received a copy of the GNU Lesser General Public
  85208. - License along with the GNU C Library; if not, write to the Free
  85209. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85210. - 02111-1307 USA. */
  85211. + License along with the GNU C Library; if not, see
  85212. + <http://www.gnu.org/licenses/>. */
  85213. #include <errno.h>
  85214. #include <signal.h>
  85215. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c
  85216. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2012-05-15 09:20:09.000000000 +0200
  85217. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2014-02-03 12:32:57.000000000 +0100
  85218. @@ -12,9 +12,8 @@
  85219. Lesser General Public License for more details.
  85220. You should have received a copy of the GNU Lesser General Public
  85221. - License along with the GNU C Library; if not, write to the Free
  85222. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85223. - 02111-1307 USA. */
  85224. + License along with the GNU C Library; if not, see
  85225. + <http://www.gnu.org/licenses/>. */
  85226. #include <signal.h>
  85227. #include <unistd.h>
  85228. @@ -40,4 +39,3 @@
  85229. #endif
  85230. }
  85231. libc_hidden_def (raise)
  85232. -weak_alias (raise, gsignal)
  85233. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c
  85234. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c 2012-05-15 09:20:09.000000000 +0200
  85235. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c 2014-02-03 12:32:57.000000000 +0100
  85236. @@ -13,9 +13,8 @@
  85237. Lesser General Public License for more details.
  85238. You should have received a copy of the GNU Lesser General Public
  85239. - License along with the GNU C Library; if not, write to the Free
  85240. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85241. - 02111-1307 USA. */
  85242. + License along with the GNU C Library; if not, see
  85243. + <http://www.gnu.org/licenses/>. */
  85244. #include <errno.h>
  85245. #include <stdlib.h>
  85246. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
  85247. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  85248. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  85249. @@ -13,9 +13,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. #ifndef _BITS_TYPES_H
  85258. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  85259. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
  85260. --- 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
  85261. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  85262. @@ -23,8 +23,7 @@
  85263. You should have received a copy of the GNU Lesser General Public
  85264. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85265. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  85266. - Boston, MA 02111-1307, USA. */
  85267. + see <http://www.gnu.org/licenses/>. */
  85268. /* This file is compiled into assembly code which is then munged by a sed
  85269. script into two files: crti.s and crtn.s.
  85270. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
  85271. --- 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
  85272. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85273. @@ -13,9 +13,8 @@
  85274. Lesser General Public License for more details.
  85275. You should have received a copy of the GNU Lesser General Public
  85276. - License along with the GNU C Library; if not, write to the Free
  85277. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85278. - 02111-1307 USA. */
  85279. + License along with the GNU C Library; if not, see
  85280. + <http://www.gnu.org/licenses/>. */
  85281. #include <sysdep.h>
  85282. #include <tls.h>
  85283. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
  85284. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85285. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85286. @@ -13,9 +13,8 @@
  85287. Lesser General Public License for more details.
  85288. You should have received a copy of the GNU Lesser General Public
  85289. - License along with the GNU C Library; if not, write to the Free
  85290. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85291. - 02111-1307 USA. */
  85292. + License along with the GNU C Library; if not, see
  85293. + <http://www.gnu.org/licenses/>. */
  85294. #include <sysdep-cancel.h>
  85295. #define _ERRNO_H 1
  85296. @@ -54,7 +53,7 @@
  85297. al %r1,3f-2b(%r1)
  85298. br %r1
  85299. 3:
  85300. - .long HIDDEN_JUMPTARGET(__fork)-2b
  85301. + .long HIDDEN_JUMPTARGET(fork)-2b
  85302. 4:
  85303. #ifdef SHARED
  85304. .long __libc_pthread_functions-0b
  85305. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
  85306. --- 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
  85307. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  85308. @@ -24,8 +24,7 @@
  85309. You should have received a copy of the GNU Lesser General Public
  85310. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85311. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  85312. - Boston, MA 02111-1307, USA. */
  85313. + see <http://www.gnu.org/licenses/>. */
  85314. /* This file is compiled into assembly code which is then munged by a sed
  85315. script into two files: crti.s and crtn.s.
  85316. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
  85317. --- 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
  85318. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85319. @@ -13,9 +13,8 @@
  85320. Lesser General Public License for more details.
  85321. You should have received a copy of the GNU Lesser General Public
  85322. - License along with the GNU C Library; if not, write to the Free
  85323. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85324. - 02111-1307 USA. */
  85325. + License along with the GNU C Library; if not, see
  85326. + <http://www.gnu.org/licenses/>. */
  85327. #include <sysdep.h>
  85328. #include <tls.h>
  85329. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
  85330. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85331. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85332. @@ -13,9 +13,8 @@
  85333. Lesser General Public License for more details.
  85334. You should have received a copy of the GNU Lesser General Public
  85335. - License along with the GNU C Library; if not, write to the Free
  85336. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85337. - 02111-1307 USA. */
  85338. + License along with the GNU C Library; if not, see
  85339. + <http://www.gnu.org/licenses/>. */
  85340. #include <sysdep-cancel.h>
  85341. #define _ERRNO_H 1
  85342. @@ -35,7 +34,7 @@
  85343. larl %r1,pthread_create
  85344. #endif
  85345. ltgr %r1,%r1
  85346. - jgne HIDDEN_JUMPTARGET(__fork)
  85347. + jgne HIDDEN_JUMPTARGET(fork)
  85348. /* Do vfork system call. */
  85349. svc SYS_ify (vfork)
  85350. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c
  85351. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  85352. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  85353. @@ -23,8 +23,7 @@
  85354. You should have received a copy of the GNU Lesser General Public
  85355. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85356. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  85357. - Boston, MA 02111-1307, USA. */
  85358. + see <http://www.gnu.org/licenses/>. */
  85359. /* This file is compiled into assembly code which is then munged by a sed
  85360. script into two files: crti.s and crtn.s.
  85361. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h
  85362. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h 2012-05-15 09:20:09.000000000 +0200
  85363. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h 2014-02-03 12:32:57.000000000 +0100
  85364. @@ -14,8 +14,7 @@
  85365. You should have received a copy of the GNU Library General Public
  85366. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85367. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  85368. - Boston, MA 02111-1307, USA. */
  85369. + see <http://www.gnu.org/licenses/>. */
  85370. static __inline__ int
  85371. is_smp_system (void)
  85372. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
  85373. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85374. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85375. @@ -12,9 +12,8 @@
  85376. Lesser General Public License for more details.
  85377. You should have received a copy of the GNU Lesser General Public
  85378. - License along with the GNU C Library; if not, write to the Free
  85379. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85380. - 02111-1307 USA. */
  85381. + License along with the GNU C Library; if not, see
  85382. + <http://www.gnu.org/licenses/>. */
  85383. #include <sysdep.h>
  85384. #include <tls.h>
  85385. @@ -155,7 +154,7 @@
  85386. # endif
  85387. # ifndef __ASSEMBLER__
  85388. -# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
  85389. +# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
  85390. # define SINGLE_THREAD_P \
  85391. __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
  85392. # else
  85393. @@ -172,7 +171,7 @@
  85394. .align 2; \
  85395. 1: .long __local_multiple_threads; \
  85396. 2:
  85397. -# elif defined FLOATING_STACKS && USE___THREAD
  85398. +# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
  85399. # define SINGLE_THREAD_P \
  85400. stc gbr,r0; \
  85401. mov.w 0f,r1; \
  85402. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S
  85403. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85404. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85405. @@ -12,9 +12,8 @@
  85406. Lesser General Public License for more details.
  85407. You should have received a copy of the GNU Lesser General Public
  85408. - License along with the GNU C Library; if not, write to the Free
  85409. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85410. - 02111-1307 USA. */
  85411. + License along with the GNU C Library; if not, see
  85412. + <http://www.gnu.org/licenses/>. */
  85413. #include <sysdep-cancel.h>
  85414. #define _ERRNO_H 1
  85415. @@ -70,7 +69,7 @@
  85416. nop
  85417. 1:
  85418. .align 2
  85419. -.L2: .long HIDDEN_JUMPTARGET(__fork)-1b
  85420. +.L2: .long HIDDEN_JUMPTARGET(fork)-1b
  85421. PSEUDO_END (__vfork)
  85422. libc_hidden_def (__vfork)
  85423. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c
  85424. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c 2012-05-15 09:20:09.000000000 +0200
  85425. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c 2014-02-03 12:32:57.000000000 +0100
  85426. @@ -12,9 +12,8 @@
  85427. Lesser General Public License for more details.
  85428. You should have received a copy of the GNU Lesser General Public
  85429. - License along with the GNU C Library; if not, write to the Free
  85430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85431. - 02111-1307 USA. */
  85432. + License along with the GNU C Library; if not, see
  85433. + <http://www.gnu.org/licenses/>. */
  85434. #include <errno.h>
  85435. #include <signal.h>
  85436. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h
  85437. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h 2012-05-15 09:20:09.000000000 +0200
  85438. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h 2014-02-03 12:32:57.000000000 +0100
  85439. @@ -14,8 +14,7 @@
  85440. You should have received a copy of the GNU Library General Public
  85441. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85442. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  85443. - Boston, MA 02111-1307, USA. */
  85444. + see <http://www.gnu.org/licenses/>. */
  85445. #include <sys/sysctl.h>
  85446. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
  85447. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  85448. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  85449. @@ -13,9 +13,8 @@
  85450. Lesser General Public License for more details.
  85451. You should have received a copy of the GNU Lesser General Public
  85452. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  85453. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  85454. - Boston, MA 02111-1307, USA. */
  85455. + License along with the GNU C Library; see the file COPYING.LIB. If
  85456. + not, see <http://www.gnu.org/licenses/>. */
  85457. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  85458. and defines LINK_MAX although filesystems have different maxima. A
  85459. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
  85460. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  85461. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  85462. @@ -13,9 +13,8 @@
  85463. Lesser General Public License for more details.
  85464. You should have received a copy of the GNU Lesser General Public
  85465. - License along with the GNU C Library; if not, write to the Free
  85466. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85467. - 02111-1307 USA. */
  85468. + License along with the GNU C Library; if not, see
  85469. + <http://www.gnu.org/licenses/>. */
  85470. #ifndef _BITS_TYPES_H
  85471. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  85472. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h
  85473. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h 2012-05-15 09:20:09.000000000 +0200
  85474. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h 2014-02-03 12:32:57.000000000 +0100
  85475. @@ -13,9 +13,8 @@
  85476. Lesser General Public License for more details.
  85477. You should have received a copy of the GNU Lesser General Public
  85478. - License along with the GNU C Library; if not, write to the Free
  85479. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85480. - 02111-1307 USA. */
  85481. + License along with the GNU C Library; if not, see
  85482. + <http://www.gnu.org/licenses/>. */
  85483. #include_next <fork.h>
  85484. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
  85485. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85486. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85487. @@ -13,9 +13,8 @@
  85488. Lesser General Public License for more details.
  85489. You should have received a copy of the GNU Lesser General Public
  85490. - License along with the GNU C Library; if not, write to the Free
  85491. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85492. - 02111-1307 USA. */
  85493. + License along with the GNU C Library; if not, see
  85494. + <http://www.gnu.org/licenses/>. */
  85495. #include <tls.h>
  85496. #ifndef __ASSEMBLER__
  85497. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
  85498. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85499. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85500. @@ -13,9 +13,8 @@
  85501. Lesser General Public License for more details.
  85502. You should have received a copy of the GNU Lesser General Public
  85503. - License along with the GNU C Library; if not, write to the Free
  85504. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85505. - 02111-1307 USA. */
  85506. + License along with the GNU C Library; if not, see
  85507. + <http://www.gnu.org/licenses/>. */
  85508. #include <sysdep-cancel.h>
  85509. @@ -43,7 +42,7 @@
  85510. orcc %o0, %lo(pthread_create), %o0
  85511. #endif
  85512. #if defined SHARED && !defined BROKEN_SPARC_WDISP22
  85513. - bne HIDDEN_JUMPTARGET(__fork)
  85514. + bne HIDDEN_JUMPTARGET(fork)
  85515. #else
  85516. bne 1f
  85517. #endif
  85518. @@ -56,7 +55,7 @@
  85519. and %o0, %o1, %o0
  85520. #if !defined SHARED || defined BROKEN_SPARC_WDISP22
  85521. 1: mov %o7, %g1
  85522. - call HIDDEN_JUMPTARGET(__fork)
  85523. + call HIDDEN_JUMPTARGET(fork)
  85524. mov %g1, %o7
  85525. #endif
  85526. SYSCALL_ERROR_HANDLER
  85527. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
  85528. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85529. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85530. @@ -13,9 +13,8 @@
  85531. Lesser General Public License for more details.
  85532. You should have received a copy of the GNU Lesser General Public
  85533. - License along with the GNU C Library; if not, write to the Free
  85534. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85535. - 02111-1307 USA. */
  85536. + License along with the GNU C Library; if not, see
  85537. + <http://www.gnu.org/licenses/>. */
  85538. #include <tls.h>
  85539. #ifndef __ASSEMBLER__
  85540. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
  85541. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85542. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85543. @@ -13,9 +13,8 @@
  85544. Lesser General Public License for more details.
  85545. You should have received a copy of the GNU Lesser General Public
  85546. - License along with the GNU C Library; if not, write to the Free
  85547. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85548. - 02111-1307 USA. */
  85549. + License along with the GNU C Library; if not, see
  85550. + <http://www.gnu.org/licenses/>. */
  85551. #include <sysdep-cancel.h>
  85552. @@ -42,7 +41,7 @@
  85553. #endif
  85554. #if defined SHARED && !defined BROKEN_SPARC_WDISP22
  85555. cmp %o0, 0
  85556. - bne HIDDEN_JUMPTARGET(__fork)
  85557. + bne HIDDEN_JUMPTARGET(fork)
  85558. #else
  85559. brnz,pn %o0, 1f
  85560. #endif
  85561. @@ -55,7 +54,7 @@
  85562. and %o0, %o1, %o0
  85563. #if !defined SHARED || defined BROKEN_SPARC_WDISP22
  85564. 1: mov %o7, %g1
  85565. - call HIDDEN_JUMPTARGET(__fork)
  85566. + call HIDDEN_JUMPTARGET(fork)
  85567. mov %g1, %o7
  85568. #endif
  85569. SYSCALL_ERROR_HANDLER
  85570. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c
  85571. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c 2012-05-15 09:20:09.000000000 +0200
  85572. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c 2014-02-03 12:32:57.000000000 +0100
  85573. @@ -13,9 +13,8 @@
  85574. Lesser General Public License for more details.
  85575. You should have received a copy of the GNU Lesser General Public
  85576. - License along with the GNU C Library; if not, write to the Free
  85577. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85578. - 02111-1307 USA. */
  85579. + License along with the GNU C Library; if not, see
  85580. + <http://www.gnu.org/licenses/>. */
  85581. #include <errno.h>
  85582. #include <stdlib.h>
  85583. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
  85584. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  85585. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  85586. @@ -13,9 +13,8 @@
  85587. Lesser General Public License for more details.
  85588. You should have received a copy of the GNU Lesser General Public
  85589. - License along with the GNU C Library; if not, write to the Free
  85590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85591. - 02111-1307 USA. */
  85592. + License along with the GNU C Library; if not, see
  85593. + <http://www.gnu.org/licenses/>. */
  85594. #include <sysdep.h>
  85595. #include <tls.h>
  85596. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S
  85597. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  85598. +++ uClibc/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  85599. @@ -12,9 +12,8 @@
  85600. Lesser General Public License for more details.
  85601. You should have received a copy of the GNU Lesser General Public
  85602. - License along with the GNU C Library; if not, write to the Free
  85603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85604. - 02111-1307 USA. */
  85605. + License along with the GNU C Library; if not, see
  85606. + <http://www.gnu.org/licenses/>. */
  85607. #include <sysdep-cancel.h>
  85608. #define _ERRNO_H 1
  85609. @@ -34,7 +33,7 @@
  85610. movq $pthread_create, %rax
  85611. testq %rax, %rax
  85612. #endif
  85613. - jne HIDDEN_JUMPTARGET (__fork)
  85614. + jne HIDDEN_JUMPTARGET (fork)
  85615. /* Pop the return PC value into RDI. We need a register that
  85616. is preserved by the syscall and that we're allowed to destroy. */
  85617. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c uClibc/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c
  85618. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  85619. +++ uClibc/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  85620. @@ -13,9 +13,8 @@
  85621. Lesser General Public License for more details.
  85622. You should have received a copy of the GNU Lesser General Public
  85623. - License along with the GNU C Library; if not, write to the Free
  85624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85625. - 02111-1307 USA. */
  85626. + License along with the GNU C Library; if not, see
  85627. + <http://www.gnu.org/licenses/>. */
  85628. #include <errno.h>
  85629. #include <pthread.h>
  85630. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h uClibc/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h
  85631. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  85632. +++ uClibc/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  85633. @@ -14,9 +14,8 @@
  85634. Lesser General Public License for more details.
  85635. You should have received a copy of the GNU Lesser General Public
  85636. - License along with the GNU C Library; if not, write to the Free
  85637. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85638. - 02111-1307 USA. */
  85639. + License along with the GNU C Library; if not, see
  85640. + <http://www.gnu.org/licenses/>. */
  85641. #ifndef _PT_MACHINE_H
  85642. #define _PT_MACHINE_H 1
  85643. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/tls.h uClibc/libpthread/linuxthreads/sysdeps/x86_64/tls.h
  85644. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  85645. +++ uClibc/libpthread/linuxthreads/sysdeps/x86_64/tls.h 2014-02-03 12:32:57.000000000 +0100
  85646. @@ -13,9 +13,8 @@
  85647. Lesser General Public License for more details.
  85648. You should have received a copy of the GNU Lesser General Public
  85649. - License along with the GNU C Library; if not, write to the Free
  85650. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85651. - 02111-1307 USA. */
  85652. + License along with the GNU C Library; if not, see
  85653. + <http://www.gnu.org/licenses/>. */
  85654. #ifndef _TLS_H
  85655. #define _TLS_H
  85656. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/.cvsignore uClibc/libpthread/linuxthreads_db/.cvsignore
  85657. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  85658. +++ uClibc/libpthread/linuxthreads_db/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  85659. @@ -1,5 +0,0 @@
  85660. -.cvsignore
  85661. -.svn
  85662. -*.os
  85663. -Makefile
  85664. -Makefile.in
  85665. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/Makefile.old uClibc/libpthread/linuxthreads_db/Makefile.old
  85666. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/Makefile.old 2012-05-15 09:20:09.000000000 +0200
  85667. +++ uClibc/libpthread/linuxthreads_db/Makefile.old 2014-02-03 12:32:57.000000000 +0100
  85668. @@ -12,9 +12,8 @@
  85669. # Lesser General Public License for more details.
  85670. # You should have received a copy of the GNU Lesser General Public
  85671. -# License along with the GNU C Library; if not, write to the Free
  85672. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85673. -# 02111-1307 USA.
  85674. +# License along with the GNU C Library; see the file COPYING.LIB. If
  85675. +# not, see <http://www.gnu.org/licenses/>.
  85676. # Makefile for linuxthreads debug library subdirectory of GNU C Library.
  85677. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/proc_service.h uClibc/libpthread/linuxthreads_db/proc_service.h
  85678. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  85679. +++ uClibc/libpthread/linuxthreads_db/proc_service.h 2014-02-03 12:32:57.000000000 +0100
  85680. @@ -12,9 +12,8 @@
  85681. Lesser General Public License for more details.
  85682. You should have received a copy of the GNU Lesser General Public
  85683. - License along with the GNU C Library; if not, write to the Free
  85684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85685. - 02111-1307 USA. */
  85686. + License along with the GNU C Library; if not, see
  85687. + <http://www.gnu.org/licenses/>. */
  85688. /* The definitions in this file must correspond to those in the debugger. */
  85689. #include <sys/procfs.h>
  85690. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_init.c uClibc/libpthread/linuxthreads_db/td_init.c
  85691. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  85692. +++ uClibc/libpthread/linuxthreads_db/td_init.c 2014-02-03 12:32:57.000000000 +0100
  85693. @@ -14,9 +14,8 @@
  85694. Lesser General Public License for more details.
  85695. You should have received a copy of the GNU Lesser General Public
  85696. - License along with the GNU C Library; if not, write to the Free
  85697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85698. - 02111-1307 USA. */
  85699. + License along with the GNU C Library; if not, see
  85700. + <http://www.gnu.org/licenses/>. */
  85701. #include "thread_dbP.h"
  85702. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_log.c uClibc/libpthread/linuxthreads_db/td_log.c
  85703. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  85704. +++ uClibc/libpthread/linuxthreads_db/td_log.c 2014-02-03 12:32:57.000000000 +0100
  85705. @@ -14,9 +14,8 @@
  85706. Lesser General Public License for more details.
  85707. You should have received a copy of the GNU Lesser General Public
  85708. - License along with the GNU C Library; if not, write to the Free
  85709. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85710. - 02111-1307 USA. */
  85711. + License along with the GNU C Library; if not, see
  85712. + <http://www.gnu.org/licenses/>. */
  85713. #include "thread_dbP.h"
  85714. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_symbol_list.c uClibc/libpthread/linuxthreads_db/td_symbol_list.c
  85715. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  85716. +++ uClibc/libpthread/linuxthreads_db/td_symbol_list.c 2014-02-03 12:32:57.000000000 +0100
  85717. @@ -14,9 +14,8 @@
  85718. Lesser General Public License for more details.
  85719. You should have received a copy of the GNU Lesser General Public
  85720. - License along with the GNU C Library; if not, write to the Free
  85721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85722. - 02111-1307 USA. */
  85723. + License along with the GNU C Library; if not, see
  85724. + <http://www.gnu.org/licenses/>. */
  85725. #include <assert.h>
  85726. #include "thread_dbP.h"
  85727. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_clear_event.c uClibc/libpthread/linuxthreads_db/td_ta_clear_event.c
  85728. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  85729. +++ uClibc/libpthread/linuxthreads_db/td_ta_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  85730. @@ -14,17 +14,14 @@
  85731. Lesser General Public License for more details.
  85732. You should have received a copy of the GNU Lesser General Public
  85733. - License along with the GNU C Library; if not, write to the Free
  85734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85735. - 02111-1307 USA. */
  85736. + License along with the GNU C Library; if not, see
  85737. + <http://www.gnu.org/licenses/>. */
  85738. #include "thread_dbP.h"
  85739. td_err_e
  85740. -td_ta_clear_event (ta, event)
  85741. - const td_thragent_t *ta;
  85742. - td_thr_events_t *event;
  85743. +td_ta_clear_event(const td_thragent_t *ta, td_thr_events_t *event)
  85744. {
  85745. td_thr_events_t old_event;
  85746. int i;
  85747. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_delete.c uClibc/libpthread/linuxthreads_db/td_ta_delete.c
  85748. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  85749. +++ uClibc/libpthread/linuxthreads_db/td_ta_delete.c 2014-02-03 12:32:57.000000000 +0100
  85750. @@ -14,9 +14,8 @@
  85751. Lesser General Public License for more details.
  85752. You should have received a copy of the GNU Lesser General Public
  85753. - License along with the GNU C Library; if not, write to the Free
  85754. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85755. - 02111-1307 USA. */
  85756. + License along with the GNU C Library; if not, see
  85757. + <http://www.gnu.org/licenses/>. */
  85758. #include <stdlib.h>
  85759. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_enable_stats.c uClibc/libpthread/linuxthreads_db/td_ta_enable_stats.c
  85760. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  85761. +++ uClibc/libpthread/linuxthreads_db/td_ta_enable_stats.c 2014-02-03 12:32:57.000000000 +0100
  85762. @@ -14,9 +14,8 @@
  85763. Lesser General Public License for more details.
  85764. You should have received a copy of the GNU Lesser General Public
  85765. - License along with the GNU C Library; if not, write to the Free
  85766. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85767. - 02111-1307 USA. */
  85768. + License along with the GNU C Library; if not, see
  85769. + <http://www.gnu.org/licenses/>. */
  85770. #include "thread_dbP.h"
  85771. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_addr.c uClibc/libpthread/linuxthreads_db/td_ta_event_addr.c
  85772. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  85773. +++ uClibc/libpthread/linuxthreads_db/td_ta_event_addr.c 2014-02-03 12:32:57.000000000 +0100
  85774. @@ -14,9 +14,8 @@
  85775. Lesser General Public License for more details.
  85776. You should have received a copy of the GNU Lesser General Public
  85777. - License along with the GNU C Library; if not, write to the Free
  85778. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85779. - 02111-1307 USA. */
  85780. + License along with the GNU C Library; if not, see
  85781. + <http://www.gnu.org/licenses/>. */
  85782. #include "thread_dbP.h"
  85783. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_getmsg.c uClibc/libpthread/linuxthreads_db/td_ta_event_getmsg.c
  85784. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  85785. +++ uClibc/libpthread/linuxthreads_db/td_ta_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  85786. @@ -14,9 +14,8 @@
  85787. Lesser General Public License for more details.
  85788. You should have received a copy of the GNU Lesser General Public
  85789. - License along with the GNU C Library; if not, write to the Free
  85790. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85791. - 02111-1307 USA. */
  85792. + License along with the GNU C Library; if not, see
  85793. + <http://www.gnu.org/licenses/>. */
  85794. #include <stddef.h>
  85795. #include <string.h>
  85796. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_nthreads.c uClibc/libpthread/linuxthreads_db/td_ta_get_nthreads.c
  85797. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  85798. +++ uClibc/libpthread/linuxthreads_db/td_ta_get_nthreads.c 2014-02-03 12:32:57.000000000 +0100
  85799. @@ -14,9 +14,8 @@
  85800. Lesser General Public License for more details.
  85801. You should have received a copy of the GNU Lesser General Public
  85802. - License along with the GNU C Library; if not, write to the Free
  85803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85804. - 02111-1307 USA. */
  85805. + License along with the GNU C Library; if not, see
  85806. + <http://www.gnu.org/licenses/>. */
  85807. #include "thread_dbP.h"
  85808. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_ph.c uClibc/libpthread/linuxthreads_db/td_ta_get_ph.c
  85809. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  85810. +++ uClibc/libpthread/linuxthreads_db/td_ta_get_ph.c 2014-02-03 12:32:57.000000000 +0100
  85811. @@ -14,9 +14,8 @@
  85812. Lesser General Public License for more details.
  85813. You should have received a copy of the GNU Lesser General Public
  85814. - License along with the GNU C Library; if not, write to the Free
  85815. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85816. - 02111-1307 USA. */
  85817. + License along with the GNU C Library; if not, see
  85818. + <http://www.gnu.org/licenses/>. */
  85819. #include "thread_dbP.h"
  85820. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_stats.c uClibc/libpthread/linuxthreads_db/td_ta_get_stats.c
  85821. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  85822. +++ uClibc/libpthread/linuxthreads_db/td_ta_get_stats.c 2014-02-03 12:32:57.000000000 +0100
  85823. @@ -14,9 +14,8 @@
  85824. Lesser General Public License for more details.
  85825. You should have received a copy of the GNU Lesser General Public
  85826. - License along with the GNU C Library; if not, write to the Free
  85827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85828. - 02111-1307 USA. */
  85829. + License along with the GNU C Library; if not, see
  85830. + <http://www.gnu.org/licenses/>. */
  85831. #include "thread_dbP.h"
  85832. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_id2thr.c uClibc/libpthread/linuxthreads_db/td_ta_map_id2thr.c
  85833. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  85834. +++ uClibc/libpthread/linuxthreads_db/td_ta_map_id2thr.c 2014-02-03 12:32:57.000000000 +0100
  85835. @@ -14,9 +14,8 @@
  85836. Lesser General Public License for more details.
  85837. You should have received a copy of the GNU Lesser General Public
  85838. - License along with the GNU C Library; if not, write to the Free
  85839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85840. - 02111-1307 USA. */
  85841. + License along with the GNU C Library; if not, see
  85842. + <http://www.gnu.org/licenses/>. */
  85843. #include "thread_dbP.h"
  85844. #include <linuxthreads/internals.h>
  85845. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c uClibc/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c
  85846. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  85847. +++ uClibc/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:57.000000000 +0100
  85848. @@ -14,9 +14,8 @@
  85849. Lesser General Public License for more details.
  85850. You should have received a copy of the GNU Lesser General Public
  85851. - License along with the GNU C Library; if not, write to the Free
  85852. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85853. - 02111-1307 USA. */
  85854. + License along with the GNU C Library; if not, see
  85855. + <http://www.gnu.org/licenses/>. */
  85856. #include "thread_dbP.h"
  85857. #include <linuxthreads/internals.h>
  85858. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_new.c uClibc/libpthread/linuxthreads_db/td_ta_new.c
  85859. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  85860. +++ uClibc/libpthread/linuxthreads_db/td_ta_new.c 2014-02-03 12:32:57.000000000 +0100
  85861. @@ -14,9 +14,8 @@
  85862. Lesser General Public License for more details.
  85863. You should have received a copy of the GNU Lesser General Public
  85864. - License along with the GNU C Library; if not, write to the Free
  85865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85866. - 02111-1307 USA. */
  85867. + License along with the GNU C Library; if not, see
  85868. + <http://www.gnu.org/licenses/>. */
  85869. #include <stddef.h>
  85870. #include <stdlib.h>
  85871. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_reset_stats.c uClibc/libpthread/linuxthreads_db/td_ta_reset_stats.c
  85872. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  85873. +++ uClibc/libpthread/linuxthreads_db/td_ta_reset_stats.c 2014-02-03 12:32:57.000000000 +0100
  85874. @@ -14,9 +14,8 @@
  85875. Lesser General Public License for more details.
  85876. You should have received a copy of the GNU Lesser General Public
  85877. - License along with the GNU C Library; if not, write to the Free
  85878. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85879. - 02111-1307 USA. */
  85880. + License along with the GNU C Library; if not, see
  85881. + <http://www.gnu.org/licenses/>. */
  85882. #include "thread_dbP.h"
  85883. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_setconcurrency.c uClibc/libpthread/linuxthreads_db/td_ta_setconcurrency.c
  85884. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  85885. +++ uClibc/libpthread/linuxthreads_db/td_ta_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  85886. @@ -14,9 +14,8 @@
  85887. Lesser General Public License for more details.
  85888. You should have received a copy of the GNU Lesser General Public
  85889. - License along with the GNU C Library; if not, write to the Free
  85890. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85891. - 02111-1307 USA. */
  85892. + License along with the GNU C Library; if not, see
  85893. + <http://www.gnu.org/licenses/>. */
  85894. #include "thread_dbP.h"
  85895. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_set_event.c uClibc/libpthread/linuxthreads_db/td_ta_set_event.c
  85896. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  85897. +++ uClibc/libpthread/linuxthreads_db/td_ta_set_event.c 2014-02-03 12:32:57.000000000 +0100
  85898. @@ -14,17 +14,14 @@
  85899. Lesser General Public License for more details.
  85900. You should have received a copy of the GNU Lesser General Public
  85901. - License along with the GNU C Library; if not, write to the Free
  85902. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85903. - 02111-1307 USA. */
  85904. + License along with the GNU C Library; if not, see
  85905. + <http://www.gnu.org/licenses/>. */
  85906. #include "thread_dbP.h"
  85907. td_err_e
  85908. -td_ta_set_event (ta, event)
  85909. - const td_thragent_t *ta;
  85910. - td_thr_events_t *event;
  85911. +td_ta_set_event(const td_thragent_t *ta, td_thr_events_t *event)
  85912. {
  85913. td_thr_events_t old_event;
  85914. int i;
  85915. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_thr_iter.c uClibc/libpthread/linuxthreads_db/td_ta_thr_iter.c
  85916. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  85917. +++ uClibc/libpthread/linuxthreads_db/td_ta_thr_iter.c 2014-02-03 12:32:57.000000000 +0100
  85918. @@ -14,9 +14,8 @@
  85919. Lesser General Public License for more details.
  85920. You should have received a copy of the GNU Lesser General Public
  85921. - License along with the GNU C Library; if not, write to the Free
  85922. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85923. - 02111-1307 USA. */
  85924. + License along with the GNU C Library; if not, see
  85925. + <http://www.gnu.org/licenses/>. */
  85926. #include "thread_dbP.h"
  85927. #include <linuxthreads/internals.h>
  85928. @@ -40,7 +39,7 @@
  85929. memset (&pds, '\0', sizeof (pds));
  85930. /* Empty thread descriptor the thread library would create. */
  85931. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  85932. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  85933. pds.p_header.data.self = &pds;
  85934. #endif
  85935. pds.p_nextlive = pds.p_prevlive = &pds;
  85936. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_tsd_iter.c uClibc/libpthread/linuxthreads_db/td_ta_tsd_iter.c
  85937. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  85938. +++ uClibc/libpthread/linuxthreads_db/td_ta_tsd_iter.c 2014-02-03 12:32:57.000000000 +0100
  85939. @@ -14,9 +14,8 @@
  85940. Lesser General Public License for more details.
  85941. You should have received a copy of the GNU Lesser General Public
  85942. - License along with the GNU C Library; if not, write to the Free
  85943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85944. - 02111-1307 USA. */
  85945. + License along with the GNU C Library; if not, see
  85946. + <http://www.gnu.org/licenses/>. */
  85947. #include "thread_dbP.h"
  85948. #include <linuxthreads/internals.h>
  85949. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_clear_event.c uClibc/libpthread/linuxthreads_db/td_thr_clear_event.c
  85950. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  85951. +++ uClibc/libpthread/linuxthreads_db/td_thr_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  85952. @@ -14,9 +14,8 @@
  85953. Lesser General Public License for more details.
  85954. You should have received a copy of the GNU Lesser General Public
  85955. - License along with the GNU C Library; if not, write to the Free
  85956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85957. - 02111-1307 USA. */
  85958. + License along with the GNU C Library; if not, see
  85959. + <http://www.gnu.org/licenses/>. */
  85960. #include <stddef.h>
  85961. @@ -24,9 +23,7 @@
  85962. td_err_e
  85963. -td_thr_clear_event (th, event)
  85964. - const td_thrhandle_t *th;
  85965. - td_thr_events_t *event;
  85966. +td_thr_clear_event(const td_thrhandle_t *th, td_thr_events_t *event)
  85967. {
  85968. td_thr_events_t old_event;
  85969. int i;
  85970. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbresume.c uClibc/libpthread/linuxthreads_db/td_thr_dbresume.c
  85971. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  85972. +++ uClibc/libpthread/linuxthreads_db/td_thr_dbresume.c 2014-02-03 12:32:57.000000000 +0100
  85973. @@ -14,9 +14,8 @@
  85974. Lesser General Public License for more details.
  85975. You should have received a copy of the GNU Lesser General Public
  85976. - License along with the GNU C Library; if not, write to the Free
  85977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85978. - 02111-1307 USA. */
  85979. + License along with the GNU C Library; if not, see
  85980. + <http://www.gnu.org/licenses/>. */
  85981. #include "thread_dbP.h"
  85982. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbsuspend.c uClibc/libpthread/linuxthreads_db/td_thr_dbsuspend.c
  85983. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  85984. +++ uClibc/libpthread/linuxthreads_db/td_thr_dbsuspend.c 2014-02-03 12:32:57.000000000 +0100
  85985. @@ -14,9 +14,8 @@
  85986. Lesser General Public License for more details.
  85987. You should have received a copy of the GNU Lesser General Public
  85988. - License along with the GNU C Library; if not, write to the Free
  85989. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85990. - 02111-1307 USA. */
  85991. + License along with the GNU C Library; if not, see
  85992. + <http://www.gnu.org/licenses/>. */
  85993. #include "thread_dbP.h"
  85994. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_enable.c uClibc/libpthread/linuxthreads_db/td_thr_event_enable.c
  85995. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  85996. +++ uClibc/libpthread/linuxthreads_db/td_thr_event_enable.c 2014-02-03 12:32:57.000000000 +0100
  85997. @@ -14,9 +14,8 @@
  85998. Lesser General Public License for more details.
  85999. You should have received a copy of the GNU Lesser General Public
  86000. - License along with the GNU C Library; if not, write to the Free
  86001. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86002. - 02111-1307 USA. */
  86003. + License along with the GNU C Library; if not, see
  86004. + <http://www.gnu.org/licenses/>. */
  86005. #include <stddef.h>
  86006. @@ -24,9 +23,7 @@
  86007. td_err_e
  86008. -td_thr_event_enable (th, onoff)
  86009. - const td_thrhandle_t *th;
  86010. - int onoff;
  86011. +td_thr_event_enable(const td_thrhandle_t *th, int onoff)
  86012. {
  86013. LOG ("td_thr_event_enable");
  86014. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_getmsg.c uClibc/libpthread/linuxthreads_db/td_thr_event_getmsg.c
  86015. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  86016. +++ uClibc/libpthread/linuxthreads_db/td_thr_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  86017. @@ -14,9 +14,8 @@
  86018. Lesser General Public License for more details.
  86019. You should have received a copy of the GNU Lesser General Public
  86020. - License along with the GNU C Library; if not, write to the Free
  86021. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86022. - 02111-1307 USA. */
  86023. + License along with the GNU C Library; if not, see
  86024. + <http://www.gnu.org/licenses/>. */
  86025. #include <stddef.h>
  86026. #include <string.h>
  86027. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getfpregs.c uClibc/libpthread/linuxthreads_db/td_thr_getfpregs.c
  86028. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  86029. +++ uClibc/libpthread/linuxthreads_db/td_thr_getfpregs.c 2014-02-03 12:32:57.000000000 +0100
  86030. @@ -14,9 +14,8 @@
  86031. Lesser General Public License for more details.
  86032. You should have received a copy of the GNU Lesser General Public
  86033. - License along with the GNU C Library; if not, write to the Free
  86034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86035. - 02111-1307 USA. */
  86036. + License along with the GNU C Library; if not, see
  86037. + <http://www.gnu.org/licenses/>. */
  86038. #include "thread_dbP.h"
  86039. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getgregs.c uClibc/libpthread/linuxthreads_db/td_thr_getgregs.c
  86040. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  86041. +++ uClibc/libpthread/linuxthreads_db/td_thr_getgregs.c 2014-02-03 12:32:57.000000000 +0100
  86042. @@ -14,9 +14,8 @@
  86043. Lesser General Public License for more details.
  86044. You should have received a copy of the GNU Lesser General Public
  86045. - License along with the GNU C Library; if not, write to the Free
  86046. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86047. - 02111-1307 USA. */
  86048. + License along with the GNU C Library; if not, see
  86049. + <http://www.gnu.org/licenses/>. */
  86050. #include "thread_dbP.h"
  86051. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_get_info.c uClibc/libpthread/linuxthreads_db/td_thr_get_info.c
  86052. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  86053. +++ uClibc/libpthread/linuxthreads_db/td_thr_get_info.c 2014-02-03 12:32:57.000000000 +0100
  86054. @@ -14,9 +14,8 @@
  86055. Lesser General Public License for more details.
  86056. You should have received a copy of the GNU Lesser General Public
  86057. - License along with the GNU C Library; if not, write to the Free
  86058. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86059. - 02111-1307 USA. */
  86060. + License along with the GNU C Library; if not, see
  86061. + <http://www.gnu.org/licenses/>. */
  86062. #include <stddef.h>
  86063. #include <string.h>
  86064. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregs.c uClibc/libpthread/linuxthreads_db/td_thr_getxregs.c
  86065. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  86066. +++ uClibc/libpthread/linuxthreads_db/td_thr_getxregs.c 2014-02-03 12:32:57.000000000 +0100
  86067. @@ -14,9 +14,8 @@
  86068. Lesser General Public License for more details.
  86069. You should have received a copy of the GNU Lesser General Public
  86070. - License along with the GNU C Library; if not, write to the Free
  86071. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86072. - 02111-1307 USA. */
  86073. + License along with the GNU C Library; if not, see
  86074. + <http://www.gnu.org/licenses/>. */
  86075. #include "thread_dbP.h"
  86076. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregsize.c uClibc/libpthread/linuxthreads_db/td_thr_getxregsize.c
  86077. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  86078. +++ uClibc/libpthread/linuxthreads_db/td_thr_getxregsize.c 2014-02-03 12:32:57.000000000 +0100
  86079. @@ -14,9 +14,8 @@
  86080. Lesser General Public License for more details.
  86081. You should have received a copy of the GNU Lesser General Public
  86082. - License along with the GNU C Library; if not, write to the Free
  86083. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86084. - 02111-1307 USA. */
  86085. + License along with the GNU C Library; if not, see
  86086. + <http://www.gnu.org/licenses/>. */
  86087. #include "thread_dbP.h"
  86088. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_set_event.c uClibc/libpthread/linuxthreads_db/td_thr_set_event.c
  86089. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  86090. +++ uClibc/libpthread/linuxthreads_db/td_thr_set_event.c 2014-02-03 12:32:57.000000000 +0100
  86091. @@ -14,9 +14,8 @@
  86092. Lesser General Public License for more details.
  86093. You should have received a copy of the GNU Lesser General Public
  86094. - License along with the GNU C Library; if not, write to the Free
  86095. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86096. - 02111-1307 USA. */
  86097. + License along with the GNU C Library; if not, see
  86098. + <http://www.gnu.org/licenses/>. */
  86099. #include <stddef.h>
  86100. @@ -24,9 +23,7 @@
  86101. td_err_e
  86102. -td_thr_set_event (th, event)
  86103. - const td_thrhandle_t *th;
  86104. - td_thr_events_t *event;
  86105. +td_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *event)
  86106. {
  86107. td_thr_events_t old_event;
  86108. int i;
  86109. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setfpregs.c uClibc/libpthread/linuxthreads_db/td_thr_setfpregs.c
  86110. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  86111. +++ uClibc/libpthread/linuxthreads_db/td_thr_setfpregs.c 2014-02-03 12:32:57.000000000 +0100
  86112. @@ -14,9 +14,8 @@
  86113. Lesser General Public License for more details.
  86114. You should have received a copy of the GNU Lesser General Public
  86115. - License along with the GNU C Library; if not, write to the Free
  86116. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86117. - 02111-1307 USA. */
  86118. + License along with the GNU C Library; if not, see
  86119. + <http://www.gnu.org/licenses/>. */
  86120. #include "thread_dbP.h"
  86121. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setgregs.c uClibc/libpthread/linuxthreads_db/td_thr_setgregs.c
  86122. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  86123. +++ uClibc/libpthread/linuxthreads_db/td_thr_setgregs.c 2014-02-03 12:32:57.000000000 +0100
  86124. @@ -14,9 +14,8 @@
  86125. Lesser General Public License for more details.
  86126. You should have received a copy of the GNU Lesser General Public
  86127. - License along with the GNU C Library; if not, write to the Free
  86128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86129. - 02111-1307 USA. */
  86130. + License along with the GNU C Library; if not, see
  86131. + <http://www.gnu.org/licenses/>. */
  86132. #include "thread_dbP.h"
  86133. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setprio.c uClibc/libpthread/linuxthreads_db/td_thr_setprio.c
  86134. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  86135. +++ uClibc/libpthread/linuxthreads_db/td_thr_setprio.c 2014-02-03 12:32:57.000000000 +0100
  86136. @@ -14,9 +14,8 @@
  86137. Lesser General Public License for more details.
  86138. You should have received a copy of the GNU Lesser General Public
  86139. - License along with the GNU C Library; if not, write to the Free
  86140. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86141. - 02111-1307 USA. */
  86142. + License along with the GNU C Library; if not, see
  86143. + <http://www.gnu.org/licenses/>. */
  86144. #include "thread_dbP.h"
  86145. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setsigpending.c uClibc/libpthread/linuxthreads_db/td_thr_setsigpending.c
  86146. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  86147. +++ uClibc/libpthread/linuxthreads_db/td_thr_setsigpending.c 2014-02-03 12:32:57.000000000 +0100
  86148. @@ -14,9 +14,8 @@
  86149. Lesser General Public License for more details.
  86150. You should have received a copy of the GNU Lesser General Public
  86151. - License along with the GNU C Library; if not, write to the Free
  86152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86153. - 02111-1307 USA. */
  86154. + License along with the GNU C Library; if not, see
  86155. + <http://www.gnu.org/licenses/>. */
  86156. #include "thread_dbP.h"
  86157. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setxregs.c uClibc/libpthread/linuxthreads_db/td_thr_setxregs.c
  86158. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  86159. +++ uClibc/libpthread/linuxthreads_db/td_thr_setxregs.c 2014-02-03 12:32:57.000000000 +0100
  86160. @@ -14,9 +14,8 @@
  86161. Lesser General Public License for more details.
  86162. You should have received a copy of the GNU Lesser General Public
  86163. - License along with the GNU C Library; if not, write to the Free
  86164. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86165. - 02111-1307 USA. */
  86166. + License along with the GNU C Library; if not, see
  86167. + <http://www.gnu.org/licenses/>. */
  86168. #include "thread_dbP.h"
  86169. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_sigsetmask.c uClibc/libpthread/linuxthreads_db/td_thr_sigsetmask.c
  86170. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  86171. +++ uClibc/libpthread/linuxthreads_db/td_thr_sigsetmask.c 2014-02-03 12:32:57.000000000 +0100
  86172. @@ -14,9 +14,8 @@
  86173. Lesser General Public License for more details.
  86174. You should have received a copy of the GNU Lesser General Public
  86175. - License along with the GNU C Library; if not, write to the Free
  86176. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86177. - 02111-1307 USA. */
  86178. + License along with the GNU C Library; if not, see
  86179. + <http://www.gnu.org/licenses/>. */
  86180. #include "thread_dbP.h"
  86181. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tlsbase.c uClibc/libpthread/linuxthreads_db/td_thr_tlsbase.c
  86182. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tlsbase.c 2012-05-15 09:20:09.000000000 +0200
  86183. +++ uClibc/libpthread/linuxthreads_db/td_thr_tlsbase.c 2014-02-03 12:32:57.000000000 +0100
  86184. @@ -13,9 +13,8 @@
  86185. Lesser General Public License for more details.
  86186. You should have received a copy of the GNU Lesser General Public
  86187. - License along with the GNU C Library; if not, write to the Free
  86188. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86189. - 02111-1307 USA. */
  86190. + License along with the GNU C Library; if not, see
  86191. + <http://www.gnu.org/licenses/>. */
  86192. #include "thread_dbP.h"
  86193. @@ -30,7 +29,7 @@
  86194. if (modid < 1)
  86195. return TD_NOTLS;
  86196. -#if USE_TLS
  86197. +#ifdef __UCLIBC_HAS_TLS__
  86198. union dtv pdtv, *dtvp;
  86199. LOG ("td_thr_tlsbase");
  86200. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tls_get_addr.c uClibc/libpthread/linuxthreads_db/td_thr_tls_get_addr.c
  86201. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  86202. +++ uClibc/libpthread/linuxthreads_db/td_thr_tls_get_addr.c 2014-02-03 12:32:57.000000000 +0100
  86203. @@ -14,9 +14,8 @@
  86204. Lesser General Public License for more details.
  86205. You should have received a copy of the GNU Lesser General Public
  86206. - License along with the GNU C Library; if not, write to the Free
  86207. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86208. - 02111-1307 USA. */
  86209. + License along with the GNU C Library; if not, see
  86210. + <http://www.gnu.org/licenses/>. */
  86211. #include <link.h>
  86212. #include "thread_dbP.h"
  86213. @@ -27,7 +26,7 @@
  86214. size_t offset __attribute__ ((unused)),
  86215. void **address __attribute__ ((unused)))
  86216. {
  86217. -#if USE_TLS
  86218. +#ifdef __UCLIBC_HAS_TLS__
  86219. /* Read the module ID from the link_map. */
  86220. size_t modid;
  86221. if (ps_pdread (th->th_ta_p->ph,
  86222. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tsd.c uClibc/libpthread/linuxthreads_db/td_thr_tsd.c
  86223. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  86224. +++ uClibc/libpthread/linuxthreads_db/td_thr_tsd.c 2014-02-03 12:32:57.000000000 +0100
  86225. @@ -14,9 +14,8 @@
  86226. Lesser General Public License for more details.
  86227. You should have received a copy of the GNU Lesser General Public
  86228. - License along with the GNU C Library; if not, write to the Free
  86229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86230. - 02111-1307 USA. */
  86231. + License along with the GNU C Library; if not, see
  86232. + <http://www.gnu.org/licenses/>. */
  86233. #include "thread_dbP.h"
  86234. #include <linuxthreads/internals.h>
  86235. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_validate.c uClibc/libpthread/linuxthreads_db/td_thr_validate.c
  86236. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  86237. +++ uClibc/libpthread/linuxthreads_db/td_thr_validate.c 2014-02-03 12:32:57.000000000 +0100
  86238. @@ -14,9 +14,8 @@
  86239. Lesser General Public License for more details.
  86240. You should have received a copy of the GNU Lesser General Public
  86241. - License along with the GNU C Library; if not, write to the Free
  86242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86243. - 02111-1307 USA. */
  86244. + License along with the GNU C Library; if not, see
  86245. + <http://www.gnu.org/licenses/>. */
  86246. #include "thread_dbP.h"
  86247. #include <linuxthreads/internals.h>
  86248. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/thread_db.h uClibc/libpthread/linuxthreads_db/thread_db.h
  86249. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  86250. +++ uClibc/libpthread/linuxthreads_db/thread_db.h 2014-02-03 12:32:57.000000000 +0100
  86251. @@ -13,9 +13,8 @@
  86252. Lesser General Public License for more details.
  86253. You should have received a copy of the GNU Lesser General Public
  86254. - License along with the GNU C Library; if not, write to the Free
  86255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86256. - 02111-1307 USA. */
  86257. + License along with the GNU C Library; if not, see
  86258. + <http://www.gnu.org/licenses/>. */
  86259. #ifndef _THREAD_DB_H
  86260. #define _THREAD_DB_H 1
  86261. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/cancel.c uClibc/libpthread/linuxthreads.old/cancel.c
  86262. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/cancel.c 2012-05-15 09:20:09.000000000 +0200
  86263. +++ uClibc/libpthread/linuxthreads.old/cancel.c 2014-02-03 12:32:56.000000000 +0100
  86264. @@ -14,8 +14,6 @@
  86265. /* Thread cancellation */
  86266. -#define __FORCE_GLIBC
  86267. -#include <features.h>
  86268. #include <errno.h>
  86269. #include "pthread.h"
  86270. #include "internals.h"
  86271. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/condvar.c uClibc/libpthread/linuxthreads.old/condvar.c
  86272. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/condvar.c 2012-05-15 09:20:09.000000000 +0200
  86273. +++ uClibc/libpthread/linuxthreads.old/condvar.c 2014-02-03 12:32:56.000000000 +0100
  86274. @@ -25,16 +25,6 @@
  86275. #include "queue.h"
  86276. #include "restart.h"
  86277. -libpthread_hidden_proto(pthread_cond_broadcast)
  86278. -libpthread_hidden_proto(pthread_cond_destroy)
  86279. -libpthread_hidden_proto(pthread_cond_init)
  86280. -libpthread_hidden_proto(pthread_cond_signal)
  86281. -libpthread_hidden_proto(pthread_cond_wait)
  86282. -libpthread_hidden_proto(pthread_cond_timedwait)
  86283. -
  86284. -libpthread_hidden_proto(pthread_condattr_destroy)
  86285. -libpthread_hidden_proto(pthread_condattr_init)
  86286. -
  86287. int pthread_cond_init(pthread_cond_t *cond,
  86288. const pthread_condattr_t *cond_attr attribute_unused)
  86289. {
  86290. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/errno.c uClibc/libpthread/linuxthreads.old/errno.c
  86291. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/errno.c 2012-05-15 09:20:09.000000000 +0200
  86292. +++ uClibc/libpthread/linuxthreads.old/errno.c 2014-02-03 12:32:56.000000000 +0100
  86293. @@ -14,8 +14,6 @@
  86294. /* Define the location of errno for the remainder of the C library */
  86295. -#define __FORCE_GLIBC
  86296. -#include <features.h>
  86297. #include <errno.h>
  86298. #include <netdb.h>
  86299. #include "pthread.h"
  86300. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/events.c uClibc/libpthread/linuxthreads.old/events.c
  86301. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/events.c 2012-05-15 09:20:09.000000000 +0200
  86302. +++ uClibc/libpthread/linuxthreads.old/events.c 2014-02-03 12:32:56.000000000 +0100
  86303. @@ -14,8 +14,7 @@
  86304. You should have received a copy of the GNU Library General Public
  86305. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86306. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86307. - Boston, MA 02111-1307, USA. */
  86308. + see <http://www.gnu.org/licenses/>. */
  86309. /* The functions contained here do nothing, they just return. */
  86310. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/forward.c uClibc/libpthread/linuxthreads.old/forward.c
  86311. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/forward.c 2012-05-15 09:20:09.000000000 +0200
  86312. +++ uClibc/libpthread/linuxthreads.old/forward.c 2014-02-03 12:32:56.000000000 +0100
  86313. @@ -13,9 +13,8 @@
  86314. Lesser General Public License for more details.
  86315. You should have received a copy of the GNU Lesser General Public
  86316. - License along with the GNU C Library; if not, write to the Free
  86317. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86318. - 02111-1307 USA. */
  86319. + License along with the GNU C Library; if not, see
  86320. + <http://www.gnu.org/licenses/>. */
  86321. #include <features.h>
  86322. #include <stdlib.h>
  86323. @@ -163,8 +162,12 @@
  86324. FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
  86325. +#if 0
  86326. FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
  86327. +#endif
  86328. FORWARD2 (_pthread_cleanup_push_defer, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
  86329. +#if 0
  86330. FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
  86331. +#endif
  86332. FORWARD2 (_pthread_cleanup_pop_restore, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
  86333. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/internals.h uClibc/libpthread/linuxthreads.old/internals.h
  86334. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/internals.h 2012-05-15 09:20:09.000000000 +0200
  86335. +++ uClibc/libpthread/linuxthreads.old/internals.h 2014-02-03 12:32:56.000000000 +0100
  86336. @@ -327,32 +327,28 @@
  86337. /* The page size we can get from the system. This should likely not be
  86338. changed by the machine file but, you never know. */
  86339. -extern size_t __pagesize;
  86340. -#include <bits/uClibc_page.h>
  86341. -#ifndef PAGE_SIZE
  86342. -#define PAGE_SIZE (sysconf (_SC_PAGESIZE))
  86343. -#endif
  86344. +#define __PAGE_SIZE (sysconf (_SC_PAGESIZE))
  86345. /* The max size of the thread stack segments. If the default
  86346. THREAD_SELF implementation is used, this must be a power of two and
  86347. - a multiple of PAGE_SIZE. */
  86348. + a multiple of __PAGE_SIZE. */
  86349. #ifndef STACK_SIZE
  86350. #ifdef __ARCH_USE_MMU__
  86351. #define STACK_SIZE (2 * 1024 * 1024)
  86352. #else
  86353. -#define STACK_SIZE (4 * __pagesize)
  86354. +#define STACK_SIZE (4 * __PAGE_SIZE)
  86355. #endif
  86356. #endif
  86357. -/* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
  86358. +/* The initial size of the thread stack. Must be a multiple of __PAGE_SIZE. */
  86359. #ifndef INITIAL_STACK_SIZE
  86360. -#define INITIAL_STACK_SIZE (4 * __pagesize)
  86361. +#define INITIAL_STACK_SIZE (4 * __PAGE_SIZE)
  86362. #endif
  86363. /* Size of the thread manager stack. The "- 32" avoids wasting space
  86364. with some malloc() implementations. */
  86365. #ifndef THREAD_MANAGER_STACK_SIZE
  86366. -#define THREAD_MANAGER_STACK_SIZE (2 * __pagesize - 32)
  86367. +#define THREAD_MANAGER_STACK_SIZE (2 * __PAGE_SIZE - 32)
  86368. #endif
  86369. /* The base of the "array" of thread stacks. The array will grow down from
  86370. @@ -385,7 +381,7 @@
  86371. /* Recover thread descriptor for the current thread */
  86372. -extern pthread_descr __pthread_find_self (void) __attribute__ ((const));
  86373. +extern pthread_descr __pthread_find_self (void) __attribute__ ((const)) attribute_hidden;
  86374. static __inline__ pthread_descr thread_self (void) __attribute__ ((const));
  86375. static __inline__ pthread_descr thread_self (void)
  86376. @@ -455,18 +451,18 @@
  86377. /* Internal global functions */
  86378. void __pthread_do_exit (void *retval, char *currentframe)
  86379. - __attribute__ ((__noreturn__));
  86380. -void __pthread_destroy_specifics(void);
  86381. -void __pthread_perform_cleanup(char *currentframe);
  86382. -int __pthread_initialize_manager(void);
  86383. + __attribute__ ((__noreturn__)) attribute_hidden;
  86384. +void __pthread_destroy_specifics(void) attribute_hidden;
  86385. +void __pthread_perform_cleanup(char *currentframe) attribute_hidden;
  86386. +int __pthread_initialize_manager(void) attribute_hidden;
  86387. void __pthread_message(char * fmt, ...)
  86388. - __attribute__ ((__format__ (printf, 1, 2)));
  86389. -int __pthread_manager(void *reqfd);
  86390. -int __pthread_manager_event(void *reqfd);
  86391. -void __pthread_manager_sighandler(int sig);
  86392. -void __pthread_reset_main_thread(void);
  86393. -void __fresetlockfiles(void);
  86394. -void __pthread_manager_adjust_prio(int thread_prio);
  86395. + __attribute__ ((__format__ (printf, 1, 2))) attribute_hidden;
  86396. +int __pthread_manager(void *reqfd) attribute_hidden;
  86397. +int __pthread_manager_event(void *reqfd) attribute_hidden;
  86398. +void __pthread_manager_sighandler(int sig) attribute_hidden;
  86399. +void __pthread_reset_main_thread(void) attribute_hidden;
  86400. +void __fresetlockfiles(void) attribute_hidden;
  86401. +void __pthread_manager_adjust_prio(int thread_prio) attribute_hidden;
  86402. void __pthread_initialize_minimal (void);
  86403. extern void __pthread_exit (void *retval)
  86404. @@ -475,36 +471,36 @@
  86405. #endif
  86406. ;
  86407. -extern int __pthread_attr_setguardsize __P ((pthread_attr_t *__attr,
  86408. - size_t __guardsize));
  86409. -extern int __pthread_attr_getguardsize __P ((__const pthread_attr_t *__attr,
  86410. - size_t *__guardsize));
  86411. -extern int __pthread_attr_setstackaddr __P ((pthread_attr_t *__attr,
  86412. - void *__stackaddr));
  86413. -extern int __pthread_attr_getstackaddr __P ((__const pthread_attr_t *__attr,
  86414. - void **__stackaddr));
  86415. -extern int __pthread_attr_setstacksize __P ((pthread_attr_t *__attr,
  86416. - size_t __stacksize));
  86417. -extern int __pthread_attr_getstacksize __P ((__const pthread_attr_t *__attr,
  86418. - size_t *__stacksize));
  86419. -extern int __pthread_getconcurrency __P ((void));
  86420. -extern int __pthread_setconcurrency __P ((int __level));
  86421. -extern void __pthread_kill_other_threads_np __P ((void));
  86422. -
  86423. -extern void __pthread_restart_old(pthread_descr th);
  86424. -extern void __pthread_suspend_old(pthread_descr self);
  86425. -extern int __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime);
  86426. -
  86427. -extern void __pthread_restart_new(pthread_descr th);
  86428. -extern void __pthread_suspend_new(pthread_descr self);
  86429. -extern int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime);
  86430. +extern int __pthread_attr_setguardsize(pthread_attr_t *__attr,
  86431. + size_t __guardsize) attribute_hidden;
  86432. +extern int __pthread_attr_getguardsize(const pthread_attr_t *__attr,
  86433. + size_t *__guardsize) attribute_hidden;
  86434. +extern int __pthread_attr_setstackaddr(pthread_attr_t *__attr,
  86435. + void *__stackaddr) attribute_hidden;
  86436. +extern int __pthread_attr_getstackaddr(const pthread_attr_t *__attr,
  86437. + void **__stackaddr) attribute_hidden;
  86438. +extern int __pthread_attr_setstacksize(pthread_attr_t *__attr,
  86439. + size_t __stacksize) attribute_hidden;
  86440. +extern int __pthread_attr_getstacksize(const pthread_attr_t *__attr,
  86441. + size_t *__stacksize) attribute_hidden;
  86442. +extern int __pthread_getconcurrency(void) attribute_hidden;
  86443. +extern int __pthread_setconcurrency(int __level) attribute_hidden;
  86444. +extern void __pthread_kill_other_threads_np(void) attribute_hidden;
  86445. +
  86446. +extern void __pthread_restart_old(pthread_descr th) attribute_hidden;
  86447. +extern void __pthread_suspend_old(pthread_descr self) attribute_hidden;
  86448. +extern int __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime) attribute_hidden;
  86449. +
  86450. +extern void __pthread_restart_new(pthread_descr th) attribute_hidden;
  86451. +extern void __pthread_suspend_new(pthread_descr self) attribute_hidden;
  86452. +extern int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime) attribute_hidden;
  86453. -extern void __pthread_wait_for_restart_signal(pthread_descr self);
  86454. +extern void __pthread_wait_for_restart_signal(pthread_descr self) attribute_hidden;
  86455. /* Global pointers to old or new suspend functions */
  86456. -extern void (*__pthread_restart)(pthread_descr);
  86457. -extern void (*__pthread_suspend)(pthread_descr);
  86458. +extern void (*__pthread_restart)(pthread_descr) attribute_hidden;
  86459. +extern void (*__pthread_suspend)(pthread_descr) attribute_hidden;
  86460. #if defined NOT_IN_libc && defined IS_IN_libpthread
  86461. extern __typeof(pthread_mutex_init) __pthread_mutex_init attribute_hidden;
  86462. @@ -515,7 +511,7 @@
  86463. #endif
  86464. /* Prototypes for some of the new semaphore functions. */
  86465. -extern int __new_sem_post (sem_t * sem);
  86466. +/*extern int __new_sem_post (sem_t * sem);*/
  86467. /* TSD. */
  86468. extern int __pthread_internal_tsd_set (int key, const void * pointer);
  86469. @@ -524,12 +520,10 @@
  86470. __pthread_internal_tsd_address (int key);
  86471. /* The functions called the signal events. */
  86472. -extern void __linuxthreads_create_event (void);
  86473. -extern void __linuxthreads_death_event (void);
  86474. -extern void __linuxthreads_reap_event (void);
  86475. +extern void __linuxthreads_create_event (void) attribute_hidden;
  86476. +extern void __linuxthreads_death_event (void) attribute_hidden;
  86477. +extern void __linuxthreads_reap_event (void) attribute_hidden;
  86478. #include <pthread-functions.h>
  86479. -extern int * __libc_pthread_init (const struct pthread_functions *functions);
  86480. -
  86481. #endif /* internals.h */
  86482. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/libc_pthread_init.c uClibc/libpthread/linuxthreads.old/libc_pthread_init.c
  86483. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  86484. +++ uClibc/libpthread/linuxthreads.old/libc_pthread_init.c 2014-02-03 12:32:56.000000000 +0100
  86485. @@ -13,27 +13,12 @@
  86486. Lesser General Public License for more details.
  86487. You should have received a copy of the GNU Lesser General Public
  86488. - License along with the GNU C Library; if not, write to the Free
  86489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86490. - 02111-1307 USA. */
  86491. + License along with the GNU C Library; if not, see
  86492. + <http://www.gnu.org/licenses/>. */
  86493. -#include <features.h>
  86494. #include <locale.h>
  86495. -#include <stdlib.h>
  86496. #include <string.h>
  86497. -
  86498. -/* see comment in forward.c */
  86499. -#define GCC_RENAME_BUG 1
  86500. -#ifdef GCC_RENAME_BUG
  86501. -# include <ctype.h>
  86502. -# include <signal.h>
  86503. -# include <unistd.h>
  86504. -# include <sys/time.h>
  86505. -# include <sys/wait.h>
  86506. -#endif
  86507. -
  86508. -#include "internals.h"
  86509. -#include "sysdeps/pthread/pthread-functions.h"
  86510. +#include <linuxthreads.old/sysdeps/pthread/pthread-functions.h>
  86511. int __libc_multiple_threads attribute_hidden __attribute__((nocommon));
  86512. @@ -48,7 +33,7 @@
  86513. sizeof (__libc_pthread_functions));
  86514. #endif
  86515. -#if ! defined USE___THREAD && defined __UCLIBC_HAS_XLOCALE__
  86516. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_XLOCALE__
  86517. /* Initialize thread-locale current locale to point to the global one.
  86518. With __thread support, the variable's initializer takes care of this. */
  86519. uselocale (LC_GLOBAL_LOCALE);
  86520. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/locale.c uClibc/libpthread/linuxthreads.old/locale.c
  86521. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/locale.c 2012-05-15 09:20:09.000000000 +0200
  86522. +++ uClibc/libpthread/linuxthreads.old/locale.c 2014-02-03 12:32:56.000000000 +0100
  86523. @@ -11,8 +11,8 @@
  86524. * Library General Public License for more details.
  86525. *
  86526. * You should have received a copy of the GNU Library General Public
  86527. - * License along with this library; if not, write to the Free
  86528. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  86529. + * License along with this library; if not, see
  86530. + * <http://www.gnu.org/licenses/>.
  86531. */
  86532. #include <features.h>
  86533. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/lockfile.c uClibc/libpthread/linuxthreads.old/lockfile.c
  86534. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/lockfile.c 2012-05-15 09:20:09.000000000 +0200
  86535. +++ uClibc/libpthread/linuxthreads.old/lockfile.c 2014-02-03 12:32:56.000000000 +0100
  86536. @@ -13,9 +13,8 @@
  86537. Lesser General Public License for more details.
  86538. You should have received a copy of the GNU Lesser General Public
  86539. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86540. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86541. - Boston, MA 02111-1307, USA. */
  86542. + License along with the GNU C Library; see the file COPYING.LIB. If
  86543. + not, see <http://www.gnu.org/licenses/>. */
  86544. #include <stdio.h>
  86545. #include <pthread.h>
  86546. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/Makefile.in uClibc/libpthread/linuxthreads.old/Makefile.in
  86547. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  86548. +++ uClibc/libpthread/linuxthreads.old/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  86549. @@ -34,15 +34,12 @@
  86550. libpthread_SRC := \
  86551. attr.c cancel.c condvar.c errno.c events.c join.c lockfile.c manager.c \
  86552. - mutex.c oldsemaphore.c pt-machine.c ptfork.c ptlongjmp.c \
  86553. + mutex.c pt-machine.c ptfork.c pthread.c ptlongjmp.c \
  86554. rwlock.c semaphore.c signals.c specific.c spinlock.c wrapsyscall.c
  86555. ifeq ($(UCLIBC_HAS_XLOCALE),y)
  86556. libpthread_SRC += locale.c
  86557. endif
  86558. -libpthread_SPEC_SRC := pthread.c
  86559. -libpthread_SPEC_SRC := $(patsubst %.c,$(libpthread_DIR)/%.c,$(libpthread_SPEC_SRC))
  86560. -
  86561. # remove generic sources, if arch specific version is present
  86562. ifneq ($(strip $(libpthread_ARCH_SRC)),)
  86563. libpthread_SRC := $(filter-out $(patsubst %.c,$(libpthread_DIR)/%.c,$(notdir $(libpthread_ARCH_SRC))),$(libpthread_SRC))
  86564. @@ -62,15 +59,12 @@
  86565. libc-static-y += $(libpthread_OUT)/libc_pthread_init.o
  86566. libc-shared-y += $(libpthread_libc_OBJ:.o=.oS)
  86567. -libpthread-static-y += $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpthread_SPEC_SRC))
  86568. -libpthread-shared-y += $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.oS,$(libpthread_SPEC_SRC))
  86569. -
  86570. ifeq ($(DOPIC),y)
  86571. -libpthread-a-y += $(libpthread_OBJ:.o=.os) $(libpthread-static-y:.o=.os)
  86572. +libpthread-a-y += $(libpthread_OBJ:.o=.os)
  86573. else
  86574. -libpthread-a-y += $(libpthread_OBJ) $(libpthread-static-y)
  86575. +libpthread-a-y += $(libpthread_OBJ)
  86576. endif
  86577. -libpthread-so-y += $(libpthread_OBJ:.o=.os) $(libpthread-shared-y)
  86578. +libpthread-so-y += $(libpthread_OBJ:.o=.oS)
  86579. lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
  86580. lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
  86581. @@ -93,7 +87,7 @@
  86582. ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
  86583. $(libpthread_OUT)/libpthread.oS: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
  86584. endif
  86585. -$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC) $(libpthread_SPEC_SRC)
  86586. +$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC)
  86587. $(Q)$(RM) $@
  86588. $(compile-m)
  86589. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/manager.c uClibc/libpthread/linuxthreads.old/manager.c
  86590. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/manager.c 2012-05-15 09:20:09.000000000 +0200
  86591. +++ uClibc/libpthread/linuxthreads.old/manager.c 2014-02-03 12:32:56.000000000 +0100
  86592. @@ -232,7 +232,7 @@
  86593. break;
  86594. case REQ_POST:
  86595. PDEBUG("got REQ_POST\n");
  86596. - __new_sem_post(request.req_args.post);
  86597. + sem_post(request.req_args.post);
  86598. break;
  86599. case REQ_DEBUG:
  86600. PDEBUG("got REQ_DEBUG\n");
  86601. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/oldsemaphore.c uClibc/libpthread/linuxthreads.old/oldsemaphore.c
  86602. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/oldsemaphore.c 2012-05-15 09:20:09.000000000 +0200
  86603. +++ uClibc/libpthread/linuxthreads.old/oldsemaphore.c 1970-01-01 01:00:00.000000000 +0100
  86604. @@ -1,241 +0,0 @@
  86605. -/*
  86606. - * This file contains the old semaphore code that we need to
  86607. - * preserve for glibc-2.0 backwards compatibility. Port to glibc 2.1
  86608. - * done by Cristian Gafton.
  86609. - */
  86610. -
  86611. -/* Linuxthreads - a simple clone()-based implementation of Posix */
  86612. -/* threads for Linux. */
  86613. -/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */
  86614. -/* */
  86615. -/* This program is free software; you can redistribute it and/or */
  86616. -/* modify it under the terms of the GNU Library General Public License */
  86617. -/* as published by the Free Software Foundation; either version 2 */
  86618. -/* of the License, or (at your option) any later version. */
  86619. -/* */
  86620. -/* This program is distributed in the hope that it will be useful, */
  86621. -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
  86622. -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
  86623. -/* GNU Library General Public License for more details. */
  86624. -
  86625. -/* Semaphores a la POSIX 1003.1b */
  86626. -
  86627. -#include <errno.h>
  86628. -#include "pthread.h"
  86629. -#include "internals.h"
  86630. -#include "spinlock.h"
  86631. -#include "restart.h"
  86632. -#include "queue.h"
  86633. -
  86634. -typedef struct {
  86635. - long int sem_status;
  86636. - int sem_spinlock;
  86637. -} old_sem_t;
  86638. -
  86639. -/* Maximum value the semaphore can have. */
  86640. -#define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  86641. -
  86642. -static __inline__ int sem_compare_and_swap(old_sem_t *sem, long oldval, long newval)
  86643. -{
  86644. - return compare_and_swap(&sem->sem_status, oldval, newval, &sem->sem_spinlock);
  86645. -}
  86646. -
  86647. -/* The state of a semaphore is represented by a long int encoding
  86648. - either the semaphore count if >= 0 and no thread is waiting on it,
  86649. - or the head of the list of threads waiting for the semaphore.
  86650. - To distinguish the two cases, we encode the semaphore count N
  86651. - as 2N+1, so that it has the lowest bit set.
  86652. -
  86653. - A sequence of sem_wait operations on a semaphore initialized to N
  86654. - result in the following successive states:
  86655. - 2N+1, 2N-1, ..., 3, 1, &first_waiting_thread, &second_waiting_thread, ...
  86656. -*/
  86657. -
  86658. -static void sem_restart_list(pthread_descr waiting);
  86659. -
  86660. -int __old_sem_init(old_sem_t *sem, int pshared, unsigned int value);
  86661. -int __old_sem_init(old_sem_t *sem, int pshared, unsigned int value)
  86662. -{
  86663. - if (value > SEM_VALUE_MAX) {
  86664. - errno = EINVAL;
  86665. - return -1;
  86666. - }
  86667. - if (pshared) {
  86668. - errno = ENOSYS;
  86669. - return -1;
  86670. - }
  86671. - sem->sem_spinlock = 0;
  86672. - sem->sem_status = ((long)value << 1) + 1;
  86673. - return 0;
  86674. -}
  86675. -
  86676. -/* Function called by pthread_cancel to remove the thread from
  86677. - waiting inside __old_sem_wait. Here we simply unconditionally
  86678. - indicate that the thread is to be woken, by returning 1. */
  86679. -
  86680. -static int old_sem_extricate_func(void *obj attribute_unused, pthread_descr th attribute_unused)
  86681. -{
  86682. - return 1;
  86683. -}
  86684. -
  86685. -int __old_sem_wait(old_sem_t * sem);
  86686. -int __old_sem_wait(old_sem_t * sem)
  86687. -{
  86688. - long oldstatus, newstatus;
  86689. - volatile pthread_descr self = thread_self();
  86690. - pthread_descr * th;
  86691. - pthread_extricate_if extr;
  86692. -
  86693. - /* Set up extrication interface */
  86694. - extr.pu_object = 0;
  86695. - extr.pu_extricate_func = old_sem_extricate_func;
  86696. -
  86697. - while (1) {
  86698. - /* Register extrication interface */
  86699. - __pthread_set_own_extricate_if(self, &extr);
  86700. - do {
  86701. - oldstatus = sem->sem_status;
  86702. - if ((oldstatus & 1) && (oldstatus != 1))
  86703. - newstatus = oldstatus - 2;
  86704. - else {
  86705. - newstatus = (long) self;
  86706. - self->p_nextwaiting = (pthread_descr) oldstatus;
  86707. - }
  86708. - }
  86709. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86710. - if (newstatus & 1) {
  86711. - /* We got the semaphore. */
  86712. - __pthread_set_own_extricate_if(self, 0);
  86713. - return 0;
  86714. - }
  86715. - /* Wait for sem_post or cancellation */
  86716. - suspend(self);
  86717. - __pthread_set_own_extricate_if(self, 0);
  86718. -
  86719. - /* This is a cancellation point */
  86720. - if (self->p_canceled && self->p_cancelstate == PTHREAD_CANCEL_ENABLE) {
  86721. - /* Remove ourselves from the waiting list if we're still on it */
  86722. - /* First check if we're at the head of the list. */
  86723. - do {
  86724. - oldstatus = sem->sem_status;
  86725. - if (oldstatus != (long) self) break;
  86726. - newstatus = (long) self->p_nextwaiting;
  86727. - }
  86728. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86729. - /* Now, check if we're somewhere in the list.
  86730. - There's a race condition with sem_post here, but it does not matter:
  86731. - the net result is that at the time pthread_exit is called,
  86732. - self is no longer reachable from sem->sem_status. */
  86733. - if (oldstatus != (long) self && (oldstatus & 1) == 0) {
  86734. - for (th = &(((pthread_descr) oldstatus)->p_nextwaiting);
  86735. - *th != NULL && *th != (pthread_descr) 1;
  86736. - th = &((*th)->p_nextwaiting)) {
  86737. - if (*th == self) {
  86738. - *th = self->p_nextwaiting;
  86739. - break;
  86740. - }
  86741. - }
  86742. - }
  86743. - __pthread_do_exit(PTHREAD_CANCELED, CURRENT_STACK_FRAME);
  86744. - }
  86745. - }
  86746. -}
  86747. -
  86748. -int __old_sem_trywait(old_sem_t * sem);
  86749. -int __old_sem_trywait(old_sem_t * sem)
  86750. -{
  86751. - long oldstatus, newstatus;
  86752. -
  86753. - do {
  86754. - oldstatus = sem->sem_status;
  86755. - if ((oldstatus & 1) == 0 || (oldstatus == 1)) {
  86756. - errno = EAGAIN;
  86757. - return -1;
  86758. - }
  86759. - newstatus = oldstatus - 2;
  86760. - }
  86761. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86762. - return 0;
  86763. -}
  86764. -
  86765. -int __old_sem_post(old_sem_t * sem);
  86766. -int __old_sem_post(old_sem_t * sem)
  86767. -{
  86768. - long oldstatus, newstatus;
  86769. -
  86770. - do {
  86771. - oldstatus = sem->sem_status;
  86772. - if ((oldstatus & 1) == 0)
  86773. - newstatus = 3;
  86774. - else {
  86775. - if (oldstatus >= SEM_VALUE_MAX) {
  86776. - /* Overflow */
  86777. - errno = ERANGE;
  86778. - return -1;
  86779. - }
  86780. - newstatus = oldstatus + 2;
  86781. - }
  86782. - }
  86783. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86784. - if ((oldstatus & 1) == 0)
  86785. - sem_restart_list((pthread_descr) oldstatus);
  86786. - return 0;
  86787. -}
  86788. -
  86789. -int __old_sem_getvalue(old_sem_t * sem, int * sval);
  86790. -int __old_sem_getvalue(old_sem_t * sem, int * sval)
  86791. -{
  86792. - long status = sem->sem_status;
  86793. - if (status & 1)
  86794. - *sval = (int)((unsigned long) status >> 1);
  86795. - else
  86796. - *sval = 0;
  86797. - return 0;
  86798. -}
  86799. -
  86800. -int __old_sem_destroy(old_sem_t * sem);
  86801. -int __old_sem_destroy(old_sem_t * sem)
  86802. -{
  86803. - if ((sem->sem_status & 1) == 0) {
  86804. - errno = EBUSY;
  86805. - return -1;
  86806. - }
  86807. - return 0;
  86808. -}
  86809. -
  86810. -/* Auxiliary function for restarting all threads on a waiting list,
  86811. - in priority order. */
  86812. -
  86813. -static void sem_restart_list(pthread_descr waiting)
  86814. -{
  86815. - pthread_descr th, towake, *p;
  86816. -
  86817. - /* Sort list of waiting threads by decreasing priority (insertion sort) */
  86818. - towake = NULL;
  86819. - while (waiting != (pthread_descr) 1) {
  86820. - th = waiting;
  86821. - waiting = waiting->p_nextwaiting;
  86822. - p = &towake;
  86823. - while (*p != NULL && th->p_priority < (*p)->p_priority)
  86824. - p = &((*p)->p_nextwaiting);
  86825. - th->p_nextwaiting = *p;
  86826. - *p = th;
  86827. - }
  86828. - /* Wake up threads in priority order */
  86829. - while (towake != NULL) {
  86830. - th = towake;
  86831. - towake = towake->p_nextwaiting;
  86832. - th->p_nextwaiting = NULL;
  86833. - restart(th);
  86834. - }
  86835. -}
  86836. -
  86837. -#if defined __PIC__ && defined DO_VERSIONING
  86838. -symbol_version (__old_sem_init, sem_init, GLIBC_2.0);
  86839. -symbol_version (__old_sem_wait, sem_wait, GLIBC_2.0);
  86840. -symbol_version (__old_sem_trywait, sem_trywait, GLIBC_2.0);
  86841. -symbol_version (__old_sem_post, sem_post, GLIBC_2.0);
  86842. -symbol_version (__old_sem_getvalue, sem_getvalue, GLIBC_2.0);
  86843. -symbol_version (__old_sem_destroy, sem_destroy, GLIBC_2.0);
  86844. -#endif
  86845. -
  86846. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/ptfork.c uClibc/libpthread/linuxthreads.old/ptfork.c
  86847. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/ptfork.c 2012-05-15 09:20:09.000000000 +0200
  86848. +++ uClibc/libpthread/linuxthreads.old/ptfork.c 2014-02-03 12:32:56.000000000 +0100
  86849. @@ -93,10 +93,7 @@
  86850. void __pthread_once_fork_child(void);
  86851. void __pthread_once_fork_parent(void);
  86852. -extern __typeof(fork) __libc_fork;
  86853. -
  86854. -pid_t __fork(void) attribute_hidden;
  86855. -pid_t __fork(void)
  86856. +static pid_t __fork(void)
  86857. {
  86858. pid_t pid;
  86859. struct handler_list * prepare, * child, * parent;
  86860. @@ -151,11 +148,7 @@
  86861. return pid;
  86862. }
  86863. strong_alias(__fork,fork)
  86864. -
  86865. -pid_t vfork(void)
  86866. -{
  86867. - return __fork();
  86868. -}
  86869. +strong_alias(__fork,vfork)
  86870. #else
  86871. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/pthread.c uClibc/libpthread/linuxthreads.old/pthread.c
  86872. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/pthread.c 2012-05-15 09:20:09.000000000 +0200
  86873. +++ uClibc/libpthread/linuxthreads.old/pthread.c 2014-02-03 12:32:56.000000000 +0100
  86874. @@ -14,8 +14,6 @@
  86875. /* Thread creation, initialization, and basic low-level routines */
  86876. -#define __FORCE_GLIBC
  86877. -#include <features.h>
  86878. #include <errno.h>
  86879. #include <netdb.h> /* for h_errno */
  86880. #include <stddef.h>
  86881. @@ -38,8 +36,6 @@
  86882. #include <sys/types.h>
  86883. #include <sys/syscall.h>
  86884. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  86885. -extern __typeof(sigaction) __libc_sigaction;
  86886. libpthread_hidden_proto(waitpid)
  86887. libpthread_hidden_proto(raise)
  86888. @@ -260,6 +256,7 @@
  86889. return current_rtmax;
  86890. }
  86891. +#if 0
  86892. /* Allocate real-time signal with highest/lowest available
  86893. priority. Please note that we don't use a lock since we assume
  86894. this function to be called at program start. */
  86895. @@ -272,6 +269,7 @@
  86896. return high ? current_rtmin++ : current_rtmax--;
  86897. }
  86898. #endif
  86899. +#endif
  86900. /* Initialize the pthread library.
  86901. Initialization is split in two functions:
  86902. @@ -319,7 +317,7 @@
  86903. struct pthread_functions __pthread_functions =
  86904. {
  86905. -#ifndef USE___THREAD
  86906. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  86907. .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
  86908. .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
  86909. .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
  86910. @@ -367,10 +365,10 @@
  86911. .ptr_pthread_sigwait = pthread_sigwait,
  86912. .ptr_pthread_raise = pthread_raise,
  86913. .ptr__pthread_cleanup_push = _pthread_cleanup_push,
  86914. - .ptr__pthread_cleanup_pop = _pthread_cleanup_pop
  86915. + .ptr__pthread_cleanup_pop = _pthread_cleanup_pop,
  86916. */
  86917. .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
  86918. - .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
  86919. + .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore
  86920. };
  86921. #ifdef SHARED
  86922. # define ptr_pthread_functions &__pthread_functions
  86923. @@ -528,7 +526,7 @@
  86924. /* On non-MMU systems we make sure that the initial thread bounds don't overlap
  86925. * with the manager stack frame */
  86926. NOMMU_INITIAL_THREAD_BOUNDS(__pthread_manager_thread_tos,__pthread_manager_thread_bos);
  86927. - PDEBUG("manager stack: size=%d, bos=%p, tos=%p\n", THREAD_MANAGER_STACK_SIZE,
  86928. + PDEBUG("manager stack: size=%ld, bos=%p, tos=%p\n", THREAD_MANAGER_STACK_SIZE,
  86929. __pthread_manager_thread_bos, __pthread_manager_thread_tos);
  86930. #if 0
  86931. PDEBUG("initial stack: estimate bos=%p, tos=%p\n",
  86932. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/ptlongjmp.c uClibc/libpthread/linuxthreads.old/ptlongjmp.c
  86933. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/ptlongjmp.c 2012-05-15 09:20:09.000000000 +0200
  86934. +++ uClibc/libpthread/linuxthreads.old/ptlongjmp.c 2014-02-03 12:32:56.000000000 +0100
  86935. @@ -19,11 +19,7 @@
  86936. #include "pthread.h"
  86937. #include "internals.h"
  86938. #include <bits/stackinfo.h>
  86939. -
  86940. -/* These functions are not declared anywhere since they shouldn't be
  86941. - used at another place but here. */
  86942. -extern __typeof(siglongjmp) __libc_siglongjmp attribute_noreturn;
  86943. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  86944. +#include <jmpbuf-unwind.h>
  86945. static void pthread_cleanup_upto(__jmp_buf target)
  86946. {
  86947. @@ -58,13 +54,13 @@
  86948. THREAD_SETMEM(self, p_in_sighandler, NULL);
  86949. }
  86950. -void attribute_noreturn siglongjmp(sigjmp_buf env, int val)
  86951. +void siglongjmp(sigjmp_buf env, int val)
  86952. {
  86953. pthread_cleanup_upto(env->__jmpbuf);
  86954. __libc_siglongjmp(env, val);
  86955. }
  86956. -void attribute_noreturn longjmp(jmp_buf env, int val)
  86957. +void longjmp(jmp_buf env, int val)
  86958. {
  86959. pthread_cleanup_upto(env->__jmpbuf);
  86960. __libc_longjmp(env, val);
  86961. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/pt-machine.c uClibc/libpthread/linuxthreads.old/pt-machine.c
  86962. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  86963. +++ uClibc/libpthread/linuxthreads.old/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  86964. @@ -14,8 +14,7 @@
  86965. You should have received a copy of the GNU Library General Public
  86966. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86967. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86968. - Boston, MA 02111-1307, USA. */
  86969. + see <http://www.gnu.org/licenses/>. */
  86970. #define PT_EI
  86971. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/rwlock.c uClibc/libpthread/linuxthreads.old/rwlock.c
  86972. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/rwlock.c 2012-05-15 09:20:09.000000000 +0200
  86973. +++ uClibc/libpthread/linuxthreads.old/rwlock.c 2014-02-03 12:32:56.000000000 +0100
  86974. @@ -16,8 +16,7 @@
  86975. You should have received a copy of the GNU Library General Public
  86976. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86977. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86978. - Boston, MA 02111-1307, USA. */
  86979. + see <http://www.gnu.org/licenses/>. */
  86980. #include <errno.h>
  86981. #include <pthread.h>
  86982. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.c uClibc/libpthread/linuxthreads.old/semaphore.c
  86983. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.c 2012-05-15 09:20:09.000000000 +0200
  86984. +++ uClibc/libpthread/linuxthreads.old/semaphore.c 2014-02-03 12:32:56.000000000 +0100
  86985. @@ -15,6 +15,7 @@
  86986. /* Semaphores a la POSIX 1003.1b */
  86987. #include <features.h>
  86988. +#include <limits.h>
  86989. #include <errno.h>
  86990. #include "pthread.h"
  86991. #include "semaphore.h"
  86992. @@ -23,8 +24,7 @@
  86993. #include "restart.h"
  86994. #include "queue.h"
  86995. -int __new_sem_init(sem_t *sem, int pshared, unsigned int value);
  86996. -int __new_sem_init(sem_t *sem, int pshared, unsigned int value)
  86997. +int sem_init(sem_t *sem, int pshared, unsigned int value)
  86998. {
  86999. if (value > SEM_VALUE_MAX) {
  87000. errno = EINVAL;
  87001. @@ -41,7 +41,7 @@
  87002. }
  87003. /* Function called by pthread_cancel to remove the thread from
  87004. - waiting inside __new_sem_wait. */
  87005. + waiting inside sem_wait. */
  87006. static int new_sem_extricate_func(void *obj, pthread_descr th)
  87007. {
  87008. @@ -56,8 +56,7 @@
  87009. return did_remove;
  87010. }
  87011. -int __new_sem_wait(sem_t * sem);
  87012. -int __new_sem_wait(sem_t * sem)
  87013. +int sem_wait(sem_t * sem)
  87014. {
  87015. volatile pthread_descr self = thread_self();
  87016. pthread_extricate_if extr;
  87017. @@ -119,8 +118,7 @@
  87018. return 0;
  87019. }
  87020. -int __new_sem_trywait(sem_t * sem);
  87021. -int __new_sem_trywait(sem_t * sem)
  87022. +int sem_trywait(sem_t * sem)
  87023. {
  87024. int retval;
  87025. @@ -136,8 +134,7 @@
  87026. return retval;
  87027. }
  87028. -int __new_sem_post(sem_t * sem);
  87029. -int __new_sem_post(sem_t * sem)
  87030. +int sem_post(sem_t * sem)
  87031. {
  87032. pthread_descr self = thread_self();
  87033. pthread_descr th;
  87034. @@ -178,15 +175,13 @@
  87035. return 0;
  87036. }
  87037. -int __new_sem_getvalue(sem_t * sem, int * sval);
  87038. -int __new_sem_getvalue(sem_t * sem, int * sval)
  87039. +int sem_getvalue(sem_t * sem, int * sval)
  87040. {
  87041. *sval = sem->__sem_value;
  87042. return 0;
  87043. }
  87044. -int __new_sem_destroy(sem_t * sem);
  87045. -int __new_sem_destroy(sem_t * sem)
  87046. +int sem_destroy(sem_t * sem)
  87047. {
  87048. if (sem->__sem_waiting != NULL) {
  87049. __set_errno (EBUSY);
  87050. @@ -302,12 +297,3 @@
  87051. /* We got the semaphore */
  87052. return 0;
  87053. }
  87054. -
  87055. -
  87056. -weak_alias (__new_sem_init, sem_init)
  87057. -weak_alias (__new_sem_wait, sem_wait)
  87058. -weak_alias (__new_sem_trywait, sem_trywait)
  87059. -weak_alias (__new_sem_post, sem_post)
  87060. -weak_alias (__new_sem_getvalue, sem_getvalue)
  87061. -weak_alias (__new_sem_destroy, sem_destroy)
  87062. -
  87063. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.h uClibc/libpthread/linuxthreads.old/semaphore.h
  87064. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  87065. +++ uClibc/libpthread/linuxthreads.old/semaphore.h 2014-02-03 12:32:56.000000000 +0100
  87066. @@ -17,6 +17,7 @@
  87067. #include <features.h>
  87068. #include <sys/types.h>
  87069. +#include <limits.h>
  87070. #ifdef __USE_XOPEN2K
  87071. # define __need_timespec
  87072. # include <time.h>
  87073. @@ -42,7 +43,9 @@
  87074. #define SEM_FAILED ((sem_t *) 0)
  87075. /* Maximum value the semaphore can have. */
  87076. +#ifndef SEM_VALUE_MAX
  87077. #define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  87078. +#endif
  87079. __BEGIN_DECLS
  87080. @@ -55,13 +58,13 @@
  87081. extern int sem_destroy (sem_t *__sem) __THROW;
  87082. /* Open a named semaphore NAME with open flags OFLAG. */
  87083. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  87084. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  87085. /* Close descriptor for named semaphore SEM. */
  87086. extern int sem_close (sem_t *__sem) __THROW;
  87087. /* Remove named semaphore NAME. */
  87088. -extern int sem_unlink (__const char *__name) __THROW;
  87089. +extern int sem_unlink (const char *__name) __THROW;
  87090. /* Wait for SEM being posted.
  87091. @@ -75,7 +78,7 @@
  87092. This function is a cancellation point and therefore not marked with
  87093. __THROW. */
  87094. extern int sem_timedwait (sem_t *__restrict __sem,
  87095. - __const struct timespec *__restrict __abstime);
  87096. + const struct timespec *__restrict __abstime);
  87097. #endif
  87098. /* Test whether SEM is posted. */
  87099. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/signals.c uClibc/libpthread/linuxthreads.old/signals.c
  87100. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/signals.c 2012-05-15 09:20:09.000000000 +0200
  87101. +++ uClibc/libpthread/linuxthreads.old/signals.c 2014-02-03 12:32:56.000000000 +0100
  87102. @@ -22,9 +22,6 @@
  87103. #include "spinlock.h"
  87104. #include <bits/sigcontextinfo.h>
  87105. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  87106. -extern __typeof(sigaction) __libc_sigaction;
  87107. -
  87108. int pthread_sigmask(int how, const sigset_t * newmask, sigset_t * oldmask)
  87109. {
  87110. sigset_t mask;
  87111. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/specific.c uClibc/libpthread/linuxthreads.old/specific.c
  87112. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/specific.c 2012-05-15 09:20:09.000000000 +0200
  87113. +++ uClibc/libpthread/linuxthreads.old/specific.c 2014-02-03 12:32:56.000000000 +0100
  87114. @@ -167,7 +167,7 @@
  87115. __pthread_unlock(THREAD_GETMEM(self, p_lock));
  87116. }
  87117. -#ifndef USE___THREAD
  87118. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  87119. /* Thread-specific data for libc. */
  87120. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/spinlock.c uClibc/libpthread/linuxthreads.old/spinlock.c
  87121. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/spinlock.c 2012-05-15 09:20:09.000000000 +0200
  87122. +++ uClibc/libpthread/linuxthreads.old/spinlock.c 2014-02-03 12:32:56.000000000 +0100
  87123. @@ -14,8 +14,6 @@
  87124. /* Internal locks */
  87125. -#define __FORCE_GLIBC
  87126. -#include <features.h>
  87127. #include <errno.h>
  87128. #include <sched.h>
  87129. #include <time.h>
  87130. @@ -67,7 +65,6 @@
  87131. #if defined HAS_COMPARE_AND_SWAP
  87132. long oldstatus, newstatus;
  87133. int successful_seizure, spurious_wakeup_count;
  87134. - int spin_count;
  87135. #endif
  87136. #if defined TEST_FOR_COMPARE_AND_SWAP
  87137. @@ -87,11 +84,11 @@
  87138. return;
  87139. spurious_wakeup_count = 0;
  87140. - spin_count = 0;
  87141. /* On SMP, try spinning to get the lock. */
  87142. #if 0
  87143. if (__pthread_smp_kernel) {
  87144. + int spin_count;
  87145. int max_count = lock->__spinlock * 2 + 10;
  87146. if (max_count > MAX_ADAPTIVE_SPIN_COUNT)
  87147. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h
  87148. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87149. +++ uClibc/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87150. @@ -17,8 +17,7 @@
  87151. You should have received a copy of the GNU Lesser General Public
  87152. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87153. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87154. - Boston, MA 02111-1307, USA. */
  87155. + see <http://www.gnu.org/licenses/>. */
  87156. #ifndef _PT_MACHINE_H
  87157. #define _PT_MACHINE_H 1
  87158. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h
  87159. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h 1970-01-01 01:00:00.000000000 +0100
  87160. +++ uClibc/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87161. @@ -0,0 +1,42 @@
  87162. +/*
  87163. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  87164. + *
  87165. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  87166. + */
  87167. +
  87168. +#ifndef _PT_MACHINE_H
  87169. +#define _PT_MACHINE_H 1
  87170. +#include <features.h>
  87171. +
  87172. +#ifndef PT_EI
  87173. +# define PT_EI __extern_always_inline
  87174. +#endif
  87175. +
  87176. +extern long int testandset (int *spinlock);
  87177. +extern int __compare_and_swap (long int *p, long int oldval, long int newval);
  87178. +
  87179. +PT_EI long int
  87180. +testandset (int *spinlock)
  87181. +{
  87182. + unsigned int old = 1;
  87183. +
  87184. + /* Atomically exchange @spinlock with 1 */
  87185. + __asm__ __volatile__(
  87186. + "ex %0, [%1]"
  87187. + : "+r" (old)
  87188. + : "r" (spinlock)
  87189. + : "memory");
  87190. +
  87191. + return old;
  87192. +
  87193. +}
  87194. +
  87195. +/* Get some notion of the current stack. Need not be exactly the top
  87196. + of the stack, just something somewhere in the current frame.
  87197. + I don't trust register variables, so let's do this the safe way. */
  87198. +#define CURRENT_STACK_FRAME \
  87199. +__extension__ ({ char *__sp; __asm__ ("mov %0,sp" : "=r" (__sp)); __sp; })
  87200. +
  87201. +#else
  87202. +#error PT_MACHINE already defined
  87203. +#endif /* pt-machine.h */
  87204. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
  87205. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87206. +++ uClibc/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87207. @@ -15,9 +15,8 @@
  87208. Lesser General Public License for more details.
  87209. You should have received a copy of the GNU Lesser General Public
  87210. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87211. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87212. - Boston, MA 02111-1307, USA. */
  87213. + License along with the GNU C Library; see the file COPYING.LIB. If
  87214. + not, see <http://www.gnu.org/licenses/>. */
  87215. #ifndef _PT_MACHINE_H
  87216. #define _PT_MACHINE_H 1
  87217. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h
  87218. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87219. +++ uClibc/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87220. @@ -15,8 +15,7 @@
  87221. You should have received a copy of the GNU Lesser General Public
  87222. License along with the GNU C Library; see the file COPYING.LIB. If
  87223. - not, write to the Free Software Foundation, Inc.,
  87224. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87225. + not, see <http://www.gnu.org/licenses/>. */
  87226. #ifndef _PT_MACHINE_H
  87227. #define _PT_MACHINE_H 1
  87228. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h
  87229. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87230. +++ uClibc/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87231. @@ -15,9 +15,8 @@
  87232. Lesser General Public License for more details.
  87233. You should have received a copy of the GNU Lesser General Public
  87234. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87235. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87236. - Boston, MA 02111-1307, USA. */
  87237. + License along with the GNU C Library; see the file COPYING.LIB. If
  87238. + not, see <http://www.gnu.org/licenses/>. */
  87239. #ifndef _PT_MACHINE_H
  87240. #define _PT_MACHINE_H 1
  87241. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h
  87242. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87243. +++ uClibc/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87244. @@ -15,8 +15,7 @@
  87245. You should have received a copy of the GNU Lesser General Public
  87246. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87247. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87248. - Boston, MA 02111-1307, USA. */
  87249. + see <http://www.gnu.org/licenses/>. */
  87250. #ifndef _PT_MACHINE_H
  87251. #define _PT_MACHINE_H 1
  87252. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h
  87253. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87254. +++ uClibc/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87255. @@ -16,8 +16,7 @@
  87256. You should have received a copy of the GNU Lesser General Public
  87257. License along with the GNU C Library; see the file COPYING.LIB. If
  87258. - not, write to the Free Software Foundation, Inc.,
  87259. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87260. + not, see <http://www.gnu.org/licenses/>. */
  87261. #ifndef _PT_MACHINE_H
  87262. #define _PT_MACHINE_H 1
  87263. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h
  87264. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87265. +++ uClibc/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87266. @@ -16,8 +16,7 @@
  87267. You should have received a copy of the GNU Lesser General Public
  87268. License along with the GNU C Library; see the file COPYING.LIB. If
  87269. - not, write to the Free Software Foundation, Inc.,
  87270. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87271. + not, see <http://www.gnu.org/licenses/>. */
  87272. #ifndef _PT_MACHINE_H
  87273. #define _PT_MACHINE_H 1
  87274. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h
  87275. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87276. +++ uClibc/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87277. @@ -15,9 +15,8 @@
  87278. Lesser General Public License for more details.
  87279. You should have received a copy of the GNU Lesser General Public
  87280. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87281. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87282. - Boston, MA 02111-1307, USA. */
  87283. + License along with the GNU C Library; see the file COPYING.LIB. If
  87284. + not, see <http://www.gnu.org/licenses/>. */
  87285. #ifndef _PT_MACHINE_H
  87286. #define _PT_MACHINE_H 1
  87287. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/tls.h uClibc/libpthread/linuxthreads.old/sysdeps/i386/tls.h
  87288. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  87289. +++ uClibc/libpthread/linuxthreads.old/sysdeps/i386/tls.h 2014-02-03 12:32:56.000000000 +0100
  87290. @@ -13,9 +13,8 @@
  87291. Lesser General Public License for more details.
  87292. You should have received a copy of the GNU Lesser General Public
  87293. - License along with the GNU C Library; if not, write to the Free
  87294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87295. - 02111-1307 USA. */
  87296. + License along with the GNU C Library; if not, see
  87297. + <http://www.gnu.org/licenses/>. */
  87298. #ifndef _TLS_H
  87299. #define _TLS_H
  87300. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/useldt.h uClibc/libpthread/linuxthreads.old/sysdeps/i386/useldt.h
  87301. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/useldt.h 2012-05-15 09:20:09.000000000 +0200
  87302. +++ uClibc/libpthread/linuxthreads.old/sysdeps/i386/useldt.h 2014-02-03 12:32:56.000000000 +0100
  87303. @@ -16,8 +16,7 @@
  87304. You should have received a copy of the GNU Lesser General Public
  87305. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87306. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87307. - Boston, MA 02111-1307, USA. */
  87308. + see <http://www.gnu.org/licenses/>. */
  87309. #ifndef __ASSEMBLER__
  87310. #include <stddef.h> /* For offsetof. */
  87311. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h
  87312. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87313. +++ uClibc/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87314. @@ -14,9 +14,8 @@
  87315. Lesser General Public License for more details.
  87316. You should have received a copy of the GNU Lesser General Public
  87317. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87318. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87319. - Boston, MA 02111-1307, USA. */
  87320. + License along with the GNU C Library; see the file COPYING.LIB. If
  87321. + not, see <http://www.gnu.org/licenses/>. */
  87322. #ifndef _PT_MACHINE_H
  87323. #define _PT_MACHINE_H 1
  87324. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/tls.h uClibc/libpthread/linuxthreads.old/sysdeps/ia64/tls.h
  87325. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/tls.h 2012-05-15 09:20:09.000000000 +0200
  87326. +++ uClibc/libpthread/linuxthreads.old/sysdeps/ia64/tls.h 2014-02-03 12:32:56.000000000 +0100
  87327. @@ -13,9 +13,8 @@
  87328. Lesser General Public License for more details.
  87329. You should have received a copy of the GNU Lesser General Public
  87330. - License along with the GNU C Library; if not, write to the Free
  87331. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87332. - 02111-1307 USA. */
  87333. + License along with the GNU C Library; if not, see
  87334. + <http://www.gnu.org/licenses/>. */
  87335. #ifndef _TLS_H
  87336. #define _TLS_H
  87337. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h
  87338. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87339. +++ uClibc/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87340. @@ -16,8 +16,7 @@
  87341. You should have received a copy of the GNU Lesser General Public
  87342. License along with the GNU C Library; see the file COPYING.LIB. If
  87343. - not, write to the Free Software Foundation, Inc.,
  87344. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87345. + not, see <http://www.gnu.org/licenses/>. */
  87346. #ifndef _PT_MACHINE_H
  87347. #define _PT_MACHINE_H 1
  87348. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h
  87349. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87350. +++ uClibc/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87351. @@ -18,8 +18,7 @@
  87352. You should have received a copy of the GNU Lesser General Public
  87353. License along with the GNU C Library; see the file COPYING.LIB. If
  87354. - not, write to the Free Software Foundation, Inc.,
  87355. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87356. + not, see <http://www.gnu.org/licenses/>. */
  87357. #ifndef _PT_MACHINE_H
  87358. #define _PT_MACHINE_H 1
  87359. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h
  87360. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87361. +++ uClibc/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87362. @@ -16,8 +16,7 @@
  87363. You should have received a copy of the GNU Library General Public
  87364. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87365. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87366. - Boston, MA 02111-1307, USA. */
  87367. + see <http://www.gnu.org/licenses/>. */
  87368. #ifndef _PT_MACHINE_H
  87369. #define _PT_MACHINE_H 1
  87370. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h
  87371. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87372. +++ uClibc/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87373. @@ -15,8 +15,7 @@
  87374. You should have received a copy of the GNU Lesser General Public
  87375. License along with the GNU C Library; see the file COPYING.LIB. If
  87376. - not, write to the Free Software Foundation, Inc.,
  87377. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87378. + not, see <http://www.gnu.org/licenses/>. */
  87379. #ifndef _PT_MACHINE_H
  87380. #define _PT_MACHINE_H 1
  87381. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h
  87382. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87383. +++ uClibc/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87384. @@ -15,8 +15,7 @@
  87385. You should have received a copy of the GNU Lesser General Public
  87386. License along with the GNU C Library; see the file COPYING.LIB. If
  87387. - not, write to the Free Software Foundation, Inc.,
  87388. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87389. + not, see <http://www.gnu.org/licenses/>. */
  87390. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  87391. User's Manual', by IBM and Motorola. */
  87392. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h
  87393. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  87394. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h 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; see the file COPYING.LIB. If not,
  87399. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87400. - Boston, MA 02111-1307, USA. */
  87401. + License along with the GNU C Library; see the file COPYING.LIB. If
  87402. + not, see <http://www.gnu.org/licenses/>. */
  87403. #ifndef _BITS_LIBC_LOCK_H
  87404. #define _BITS_LIBC_LOCK_H 1
  87405. @@ -271,6 +270,7 @@
  87406. _pthread_cleanup_pop_restore (&_buffer, (DOIT)); \
  87407. }
  87408. +#if 0
  87409. #define __libc_cleanup_push(fct, arg) \
  87410. { struct _pthread_cleanup_buffer _buffer; \
  87411. __libc_maybe_call (_pthread_cleanup_push, (&_buffer, (fct), (arg)), 0)
  87412. @@ -278,6 +278,7 @@
  87413. #define __libc_cleanup_pop(execute) \
  87414. __libc_maybe_call (_pthread_cleanup_pop, (&_buffer, execute), 0); \
  87415. }
  87416. +#endif
  87417. /* Create thread-specific key. */
  87418. #define __libc_key_create(KEY, DESTRUCTOR) \
  87419. @@ -300,7 +301,7 @@
  87420. library. */
  87421. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  87422. - __const pthread_mutexattr_t *__mutex_attr);
  87423. + const pthread_mutexattr_t *__mutex_attr);
  87424. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  87425. @@ -319,7 +320,7 @@
  87426. #ifdef __USE_UNIX98
  87427. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  87428. - __const pthread_rwlockattr_t *__attr);
  87429. + const pthread_rwlockattr_t *__attr);
  87430. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  87431. @@ -338,7 +339,7 @@
  87432. void (*__destr_function) (void *));
  87433. extern int __pthread_setspecific (pthread_key_t __key,
  87434. - __const void *__pointer);
  87435. + const void *__pointer);
  87436. extern void *__pthread_getspecific (pthread_key_t __key);
  87437. @@ -375,7 +376,6 @@
  87438. weak_extern (BP_SYM (__pthread_setspecific))
  87439. weak_extern (BP_SYM (__pthread_getspecific))
  87440. weak_extern (BP_SYM (__pthread_once))
  87441. -weak_extern (__pthread_initialize)
  87442. weak_extern (__pthread_atfork)
  87443. weak_extern (BP_SYM (_pthread_cleanup_push))
  87444. weak_extern (BP_SYM (_pthread_cleanup_pop))
  87445. @@ -400,7 +400,6 @@
  87446. # pragma weak __pthread_setspecific
  87447. # pragma weak __pthread_getspecific
  87448. # pragma weak __pthread_once
  87449. -# pragma weak __pthread_initialize
  87450. # pragma weak __pthread_atfork
  87451. # pragma weak _pthread_cleanup_push_defer
  87452. # pragma weak _pthread_cleanup_pop_restore
  87453. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h
  87454. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  87455. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:56.000000000 +0100
  87456. @@ -13,15 +13,12 @@
  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; see the file COPYING.LIB. If not,
  87460. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87461. - Boston, MA 02111-1307, USA. */
  87462. + License along with the GNU C Library; see the file COPYING.LIB. If
  87463. + not, see <http://www.gnu.org/licenses/>. */
  87464. #ifndef _BITS_LIBC_TSD_H
  87465. #define _BITS_LIBC_TSD_H 1
  87466. -#include <libc-internal.h>
  87467. -
  87468. /* Fast thread-specific data internal to libc. */
  87469. enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
  87470. _LIBC_TSD_KEY_DL_ERROR,
  87471. @@ -32,12 +29,11 @@
  87472. _LIBC_TSD_KEY_CTYPE_TOUPPER,
  87473. _LIBC_TSD_KEY_N };
  87474. -#include <sys/cdefs.h>
  87475. -#include <tls.h>
  87476. -
  87477. +#include <features.h>
  87478. #include <linuxthreads.old/internals.h>
  87479. -#if defined(USE_TLS) && USE_TLS && HAVE___THREAD
  87480. +#ifdef __UCLIBC_HAS_TLS__
  87481. +#include <tls.h>
  87482. /* When __thread works, the generic definition is what we want. */
  87483. # include <sysdeps/generic/bits/libc-tsd.h>
  87484. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h
  87485. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  87486. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h 2014-02-03 12:32:56.000000000 +0100
  87487. @@ -19,6 +19,9 @@
  87488. #ifndef _BITS_PTHREADTYPES_H
  87489. #define _BITS_PTHREADTYPES_H 1
  87490. +#define __need_size_t
  87491. +#include <stddef.h>
  87492. +
  87493. #define __need_schedparam
  87494. #include <bits/sched.h>
  87495. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
  87496. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  87497. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h 2014-02-03 12:32:56.000000000 +0100
  87498. @@ -14,18 +14,26 @@
  87499. Lesser General Public License for more details.
  87500. You should have received a copy of the GNU Lesser General Public
  87501. - License along with the GNU C Library; if not, write to the Free
  87502. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87503. - 02111-1307 USA. */
  87504. + License along with the GNU C Library; if not, see
  87505. + <http://www.gnu.org/licenses/>. */
  87506. #include <sys/types.h>
  87507. #include <sysdep.h>
  87508. /* Uncancelable open. */
  87509. +#if defined __NR_openat && !defined __NR_open
  87510. +#define open_not_cancel(name, flags, mode) \
  87511. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
  87512. + (flags), (mode))
  87513. +#define open_not_cancel_2(name, flags) \
  87514. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
  87515. + (flags))
  87516. +#else
  87517. #define open_not_cancel(name, flags, mode) \
  87518. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  87519. #define open_not_cancel_2(name, flags) \
  87520. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  87521. +#endif
  87522. /* Uncancelable openat. */
  87523. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  87524. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h
  87525. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  87526. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:56.000000000 +0100
  87527. @@ -13,25 +13,28 @@
  87528. Lesser General Public License for more details.
  87529. You should have received a copy of the GNU Lesser General Public
  87530. - License along with the GNU C Library; if not, write to the Free
  87531. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87532. - 02111-1307 USA. */
  87533. + License along with the GNU C Library; if not, see
  87534. + <http://www.gnu.org/licenses/>. */
  87535. #ifndef _PTHREAD_FUNCTIONS_H
  87536. #define _PTHREAD_FUNCTIONS_H 1
  87537. #include <pthread.h>
  87538. +#if 0
  87539. #include <setjmp.h>
  87540. #include <linuxthreads.old/internals.h>
  87541. struct fork_block;
  87542. +#endif
  87543. /* Data type shared with libc. The libc uses it to pass on calls to
  87544. the thread functions. Wine pokes directly into this structure,
  87545. so if possible avoid breaking it and append new hooks to the end. */
  87546. struct pthread_functions
  87547. {
  87548. +#if 0
  87549. pid_t (*ptr_pthread_fork) (struct fork_block *);
  87550. +#endif
  87551. int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
  87552. int (*ptr_pthread_attr_init) (pthread_attr_t *);
  87553. int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
  87554. @@ -68,26 +71,36 @@
  87555. pthread_t (*ptr_pthread_self) (void);
  87556. int (*ptr_pthread_setcancelstate) (int, int *);
  87557. int (*ptr_pthread_setcanceltype) (int, int *);
  87558. +#if 0
  87559. void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
  87560. void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
  87561. char *targetframe);
  87562. pthread_descr (*ptr_pthread_thread_self) (void);
  87563. +#endif
  87564. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  87565. int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
  87566. void * (*ptr_pthread_internal_tsd_get) (int key);
  87567. void ** __attribute__ ((__const__))
  87568. (*ptr_pthread_internal_tsd_address) (int key);
  87569. +#endif
  87570. +#if 0
  87571. int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
  87572. struct sigaction *oact);
  87573. int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
  87574. int (*ptr_pthread_raise) (int sig);
  87575. +#endif
  87576. int (*ptr_pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
  87577. const struct timespec *);
  87578. +#if 0
  87579. void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
  87580. void (*routine)(void *), void * arg);
  87581. +#endif
  87582. void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer * buffer,
  87583. void (*routine)(void *), void * arg);
  87584. +#if 0
  87585. void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
  87586. int execute);
  87587. +#endif
  87588. void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer * buffer,
  87589. int execute);
  87590. };
  87591. @@ -95,4 +108,6 @@
  87592. /* Variable in libc.so. */
  87593. extern struct pthread_functions __libc_pthread_functions attribute_hidden;
  87594. +extern int * __libc_pthread_init (const struct pthread_functions *functions);
  87595. +
  87596. #endif /* pthread-functions.h */
  87597. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h
  87598. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  87599. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h 2014-02-03 12:32:56.000000000 +0100
  87600. @@ -161,7 +161,7 @@
  87601. if ATTR is NULL), and call function START_ROUTINE with given
  87602. arguments ARG. */
  87603. extern int pthread_create (pthread_t *__restrict __threadp,
  87604. - __const pthread_attr_t *__restrict __attr,
  87605. + const pthread_attr_t *__restrict __attr,
  87606. void *(*__start_routine) (void *),
  87607. void *__restrict __arg) __THROW;
  87608. @@ -201,16 +201,16 @@
  87609. int __detachstate) __THROW;
  87610. /* Return in *DETACHSTATE the `detachstate' attribute in *ATTR. */
  87611. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  87612. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  87613. int *__detachstate) __THROW;
  87614. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  87615. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  87616. - __const struct sched_param *__restrict
  87617. + const struct sched_param *__restrict
  87618. __param) __THROW;
  87619. /* Return in *PARAM the scheduling parameters of *ATTR. */
  87620. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  87621. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  87622. __attr,
  87623. struct sched_param *__restrict __param)
  87624. __THROW;
  87625. @@ -220,7 +220,7 @@
  87626. __THROW;
  87627. /* Return in *POLICY the scheduling policy of *ATTR. */
  87628. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  87629. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  87630. __attr, int *__restrict __policy)
  87631. __THROW;
  87632. @@ -229,7 +229,7 @@
  87633. int __inherit) __THROW;
  87634. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  87635. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  87636. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  87637. __attr, int *__restrict __inherit)
  87638. __THROW;
  87639. @@ -238,7 +238,7 @@
  87640. __THROW;
  87641. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  87642. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  87643. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  87644. int *__restrict __scope) __THROW;
  87645. #ifdef __USE_UNIX98
  87646. @@ -247,7 +247,7 @@
  87647. size_t __guardsize) __THROW;
  87648. /* Get the size of the guard area at the bottom of the thread. */
  87649. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
  87650. +extern int pthread_attr_getguardsize (const pthread_attr_t *__restrict
  87651. __attr, size_t *__restrict __guardsize)
  87652. __THROW;
  87653. #endif
  87654. @@ -261,7 +261,7 @@
  87655. void *__stackaddr) __THROW;
  87656. /* Return the previously set address for the stack. */
  87657. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  87658. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  87659. __attr, void **__restrict __stackaddr)
  87660. __THROW;
  87661. #endif
  87662. @@ -274,7 +274,7 @@
  87663. size_t __stacksize) __THROW;
  87664. /* Return the previously set address for the stack. */
  87665. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  87666. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  87667. void **__restrict __stackaddr,
  87668. size_t *__restrict __stacksize) __THROW;
  87669. #endif
  87670. @@ -286,7 +286,7 @@
  87671. size_t __stacksize) __THROW;
  87672. /* Return the currently used minimal stack size. */
  87673. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  87674. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  87675. __attr, size_t *__restrict __stacksize)
  87676. __THROW;
  87677. @@ -306,7 +306,7 @@
  87678. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  87679. and *PARAM. */
  87680. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  87681. - __const struct sched_param *__param)
  87682. + const struct sched_param *__param)
  87683. __THROW;
  87684. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  87685. @@ -333,7 +333,7 @@
  87686. /* Initialize MUTEX using attributes in *MUTEX_ATTR, or use the
  87687. default values if later is NULL. */
  87688. extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
  87689. - __const pthread_mutexattr_t *__restrict
  87690. + const pthread_mutexattr_t *__restrict
  87691. __mutex_attr) __THROW;
  87692. /* Destroy MUTEX. */
  87693. @@ -348,7 +348,7 @@
  87694. #ifdef __USE_XOPEN2K
  87695. /* Wait until lock becomes available, or specified time passes. */
  87696. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  87697. - __const struct timespec *__restrict
  87698. + const struct timespec *__restrict
  87699. __abstime) __THROW;
  87700. #endif
  87701. @@ -366,7 +366,7 @@
  87702. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __THROW;
  87703. /* Get the process-shared flag of the mutex attribute ATTR. */
  87704. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  87705. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  87706. __restrict __attr,
  87707. int *__restrict __pshared) __THROW;
  87708. @@ -382,7 +382,7 @@
  87709. __THROW;
  87710. /* Return in *KIND the mutex kind attribute in *ATTR. */
  87711. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  87712. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  87713. __attr, int *__restrict __kind) __THROW;
  87714. #endif
  87715. @@ -392,22 +392,27 @@
  87716. /* Initialize condition variable COND using attributes ATTR, or use
  87717. the default values if later is NULL. */
  87718. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  87719. - __const pthread_condattr_t *__restrict
  87720. + const pthread_condattr_t *__restrict
  87721. __cond_attr) __THROW;
  87722. +libpthread_hidden_proto(pthread_cond_init)
  87723. /* Destroy condition variable COND. */
  87724. extern int pthread_cond_destroy (pthread_cond_t *__cond) __THROW;
  87725. +libpthread_hidden_proto(pthread_cond_destroy)
  87726. /* Wake up one thread waiting for condition variable COND. */
  87727. extern int pthread_cond_signal (pthread_cond_t *__cond) __THROW;
  87728. +libpthread_hidden_proto(pthread_cond_signal)
  87729. /* Wake up all threads waiting for condition variables COND. */
  87730. extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROW;
  87731. +libpthread_hidden_proto(pthread_cond_broadcast)
  87732. /* Wait for condition variable COND to be signaled or broadcast.
  87733. MUTEX is assumed to be locked before. */
  87734. extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
  87735. pthread_mutex_t *__restrict __mutex);
  87736. +libpthread_hidden_proto(pthread_cond_wait)
  87737. /* Wait for condition variable COND to be signaled or broadcast until
  87738. ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an
  87739. @@ -415,19 +420,22 @@
  87740. (00:00:00 GMT, January 1, 1970). */
  87741. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  87742. pthread_mutex_t *__restrict __mutex,
  87743. - __const struct timespec *__restrict
  87744. + const struct timespec *__restrict
  87745. __abstime);
  87746. +libpthread_hidden_proto(pthread_cond_timedwait)
  87747. /* Functions for handling condition variable attributes. */
  87748. /* Initialize condition variable attribute ATTR. */
  87749. extern int pthread_condattr_init (pthread_condattr_t *__attr) __THROW;
  87750. +libpthread_hidden_proto(pthread_condattr_init)
  87751. /* Destroy condition variable attribute ATTR. */
  87752. extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __THROW;
  87753. +libpthread_hidden_proto(pthread_condattr_destroy)
  87754. /* Get the process-shared flag of the condition variable attribute ATTR. */
  87755. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  87756. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  87757. __restrict __attr,
  87758. int *__restrict __pshared) __THROW;
  87759. @@ -442,7 +450,7 @@
  87760. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  87761. the default values if later is NULL. */
  87762. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  87763. - __const pthread_rwlockattr_t *__restrict
  87764. + const pthread_rwlockattr_t *__restrict
  87765. __attr) __THROW;
  87766. /* Destroy read-write lock RWLOCK. */
  87767. @@ -457,7 +465,7 @@
  87768. # ifdef __USE_XOPEN2K
  87769. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  87770. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  87771. - __const struct timespec *__restrict
  87772. + const struct timespec *__restrict
  87773. __abstime) __THROW;
  87774. # endif
  87775. @@ -470,7 +478,7 @@
  87776. # ifdef __USE_XOPEN2K
  87777. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  87778. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  87779. - __const struct timespec *__restrict
  87780. + const struct timespec *__restrict
  87781. __abstime) __THROW;
  87782. # endif
  87783. @@ -487,7 +495,7 @@
  87784. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __THROW;
  87785. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  87786. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  87787. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  87788. __restrict __attr,
  87789. int *__restrict __pshared) __THROW;
  87790. @@ -496,7 +504,7 @@
  87791. int __pshared) __THROW;
  87792. /* Return current setting of reader/writer preference. */
  87793. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
  87794. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *__attr,
  87795. int *__pref) __THROW;
  87796. /* Set reader/write preference. */
  87797. @@ -532,7 +540,7 @@
  87798. /* Barriers are a also a new feature in 1003.1j-2000. */
  87799. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  87800. - __const pthread_barrierattr_t *__restrict
  87801. + const pthread_barrierattr_t *__restrict
  87802. __attr, unsigned int __count) __THROW;
  87803. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __THROW;
  87804. @@ -541,7 +549,7 @@
  87805. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __THROW;
  87806. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  87807. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  87808. __restrict __attr,
  87809. int *__restrict __pshared) __THROW;
  87810. @@ -569,7 +577,7 @@
  87811. /* Store POINTER in the thread-specific data slot identified by KEY. */
  87812. extern int pthread_setspecific (pthread_key_t __key,
  87813. - __const void *__pointer) __THROW;
  87814. + const void *__pointer) __THROW;
  87815. /* Return current value of the thread-specific data slot identified by KEY. */
  87816. extern void *pthread_getspecific (pthread_key_t __key) __THROW;
  87817. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/tls.h uClibc/libpthread/linuxthreads.old/sysdeps/pthread/tls.h
  87818. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/tls.h 2012-05-15 09:20:09.000000000 +0200
  87819. +++ uClibc/libpthread/linuxthreads.old/sysdeps/pthread/tls.h 2014-02-03 12:32:56.000000000 +0100
  87820. @@ -13,9 +13,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. /* By default no TLS support is available. This is signaled by the
  87829. absence of the symbol USE_TLS. */
  87830. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h
  87831. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87832. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87833. @@ -15,9 +15,8 @@
  87834. Lesser General Public License for more details.
  87835. You should have received a copy of the GNU Lesser General Public
  87836. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87837. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87838. - Boston, MA 02111-1307, USA. */
  87839. + License along with the GNU C Library; see the file COPYING.LIB. If
  87840. + not, see <http://www.gnu.org/licenses/>. */
  87841. #ifndef _PT_MACHINE_H
  87842. #define _PT_MACHINE_H 1
  87843. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/tls.h uClibc/libpthread/linuxthreads.old/sysdeps/sh/tls.h
  87844. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  87845. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sh/tls.h 2014-02-03 12:32:56.000000000 +0100
  87846. @@ -13,9 +13,8 @@
  87847. Lesser General Public License for more details.
  87848. You should have received a copy of the GNU Lesser General Public
  87849. - License along with the GNU C Library; if not, write to the Free
  87850. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87851. - 02111-1307 USA. */
  87852. + License along with the GNU C Library; if not, see
  87853. + <http://www.gnu.org/licenses/>. */
  87854. #ifndef _TLS_H
  87855. #define _TLS_H
  87856. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c uClibc/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c
  87857. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  87858. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  87859. @@ -19,8 +19,7 @@
  87860. You should have received a copy of the GNU Library General Public
  87861. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87862. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87863. - Boston, MA 02111-1307, USA. */
  87864. + see <http://www.gnu.org/licenses/>. */
  87865. #include "pt-machine.h"
  87866. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h
  87867. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87868. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87869. @@ -19,8 +19,7 @@
  87870. You should have received a copy of the GNU Library 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. + see <http://www.gnu.org/licenses/>. */
  87875. #ifndef _PT_MACHINE_H
  87876. #define _PT_MACHINE_H 1
  87877. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h
  87878. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87879. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87880. @@ -15,9 +15,8 @@
  87881. Lesser General Public License for more details.
  87882. You should have received a copy of the GNU Lesser General Public
  87883. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87884. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87885. - Boston, MA 02111-1307, USA. */
  87886. + License along with the GNU C Library; see the file COPYING.LIB. If
  87887. + not, see <http://www.gnu.org/licenses/>. */
  87888. #ifndef _PT_MACHINE_H
  87889. #define _PT_MACHINE_H 1
  87890. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h
  87891. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87892. +++ uClibc/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87893. @@ -16,8 +16,7 @@
  87894. You should have received a copy of the GNU Lesser General Public
  87895. License along with the GNU C Library; see the file COPYING.LIB. If
  87896. - not, write to the Free Software Foundation, Inc.,
  87897. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87898. + not, see <http://www.gnu.org/licenses/>. */
  87899. #ifndef _PT_MACHINE_H
  87900. #define _PT_MACHINE_H 1
  87901. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h
  87902. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87903. +++ uClibc/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87904. @@ -14,9 +14,8 @@
  87905. Lesser General Public License for more details.
  87906. You should have received a copy of the GNU Lesser General Public
  87907. - License along with the GNU C Library; if not, write to the Free
  87908. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87909. - 02111-1307 USA. */
  87910. + License along with the GNU C Library; if not, see
  87911. + <http://www.gnu.org/licenses/>. */
  87912. #ifndef _PT_MACHINE_H
  87913. #define _PT_MACHINE_H 1
  87914. @@ -33,6 +32,9 @@
  87915. # define PT_EI __extern_always_inline
  87916. # endif
  87917. +extern long int testandset (int *);
  87918. +extern int __compare_and_swap (long int *, long int, long int);
  87919. +
  87920. /* Get some notion of the current stack. Need not be exactly the top
  87921. of the stack, just something somewhere in the current frame. */
  87922. # define CURRENT_STACK_FRAME stack_pointer
  87923. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h uClibc/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h
  87924. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  87925. +++ uClibc/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h 2014-02-03 12:32:56.000000000 +0100
  87926. @@ -13,9 +13,8 @@
  87927. Lesser General Public License for more details.
  87928. You should have received a copy of the GNU Lesser General Public
  87929. - License along with the GNU C Library; if not, write to the Free
  87930. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87931. - 02111-1307 USA. */
  87932. + License along with the GNU C Library; if not, see
  87933. + <http://www.gnu.org/licenses/>. */
  87934. #ifndef _TLS_H
  87935. #define _TLS_H
  87936. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h uClibc/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h
  87937. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87938. +++ uClibc/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87939. @@ -15,9 +15,8 @@
  87940. Lesser General Public License for more details.
  87941. You should have received a copy of the GNU Lesser General Public
  87942. - License along with the GNU C Library; if not, write to the Free
  87943. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  87944. - Boston, MA 02110-1301, USA. */
  87945. + License along with the GNU C Library; if not, see
  87946. + <http://www.gnu.org/licenses/>. */
  87947. #ifndef _PT_MACHINE_H
  87948. #define _PT_MACHINE_H 1
  87949. @@ -26,19 +25,51 @@
  87950. #include <asm/unistd.h>
  87951. #ifndef PT_EI
  87952. -# define PT_EI __extern_always_inline
  87953. +# define PT_EI extern inline __attribute__ ((gnu_inline))
  87954. #endif
  87955. -/* Memory barrier. */
  87956. #define MEMORY_BARRIER() __asm__ ("memw" : : : "memory")
  87957. +#define HAS_COMPARE_AND_SWAP
  87958. +
  87959. +extern long int testandset (int *spinlock);
  87960. +extern int __compare_and_swap (long int *p, long int oldval, long int newval);
  87961. /* Spinlock implementation; required. */
  87962. PT_EI long int
  87963. testandset (int *spinlock)
  87964. {
  87965. - int unused = 0;
  87966. - return INTERNAL_SYSCALL (xtensa, , 4, SYS_XTENSA_ATOMIC_SET,
  87967. - spinlock, 1, unused);
  87968. + unsigned long tmp;
  87969. + __asm__ volatile (
  87970. +" movi %0, 0 \n"
  87971. +" wsr %0, SCOMPARE1 \n"
  87972. +" movi %0, 1 \n"
  87973. +" s32c1i %0, %1, 0 \n"
  87974. + : "=&a" (tmp)
  87975. + : "a" (spinlock)
  87976. + : "memory"
  87977. + );
  87978. + return tmp;
  87979. +}
  87980. +
  87981. +PT_EI int
  87982. +__compare_and_swap (long int *p, long int oldval, long int newval)
  87983. +{
  87984. + unsigned long tmp;
  87985. + unsigned long value;
  87986. + __asm__ volatile (
  87987. +"1: l32i %0, %2, 0 \n"
  87988. +" bne %0, %4, 2f \n"
  87989. +" wsr %0, SCOMPARE1 \n"
  87990. +" mov %1, %0 \n"
  87991. +" mov %0, %3 \n"
  87992. +" s32c1i %0, %2, 0 \n"
  87993. +" bne %1, %0, 1b \n"
  87994. +"2: \n"
  87995. + : "=&a" (tmp), "=&a" (value)
  87996. + : "a" (p), "a" (newval), "a" (oldval)
  87997. + : "memory" );
  87998. +
  87999. + return tmp == oldval;
  88000. }
  88001. /* Get some notion of the current stack. Need not be exactly the top
  88002. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/wrapsyscall.c uClibc/libpthread/linuxthreads.old/wrapsyscall.c
  88003. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/wrapsyscall.c 2012-05-15 09:20:09.000000000 +0200
  88004. +++ uClibc/libpthread/linuxthreads.old/wrapsyscall.c 2014-02-03 12:32:56.000000000 +0100
  88005. @@ -1,4 +1,4 @@
  88006. -/* Wrapper arpund system calls to provide cancellation points.
  88007. +/* Wrapper around system calls to provide cancellation points.
  88008. Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
  88009. This file is part of the GNU C Library.
  88010. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
  88011. @@ -15,11 +15,8 @@
  88012. You should have received a copy of the GNU Library General Public
  88013. License along with the GNU C Library; see the file COPYING.LIB. If not,
  88014. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88015. - Boston, MA 02111-1307, USA. */
  88016. + see <http://www.gnu.org/licenses/>. */
  88017. -#define __FORCE_GLIBC
  88018. -#include <features.h>
  88019. #include <fcntl.h>
  88020. #include <sys/mman.h>
  88021. #include <pthread.h>
  88022. @@ -83,6 +80,12 @@
  88023. CANCELABLE_SYSCALL_VA (int, fcntl, (int fd, int cmd, ...),
  88024. (fd, cmd, va_arg (ap, long int)), cmd)
  88025. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  88026. +/* fcntl64(2). */
  88027. +CANCELABLE_SYSCALL_VA (int, fcntl64, (int fd, int cmd, ...),
  88028. + (fd, cmd, va_arg (ap, long int)), cmd)
  88029. +#endif
  88030. +
  88031. /* fsync(2). */
  88032. CANCELABLE_SYSCALL (int, fsync, (int fd), (fd))
  88033. @@ -230,12 +233,12 @@
  88034. #endif /* __UCLIBC_HAS_SOCKET__ */
  88035. #ifdef __UCLIBC_HAS_EPOLL__
  88036. +# include <sys/epoll.h>
  88037. # ifdef __NR_epoll_wait
  88038. CANCELABLE_SYSCALL (int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
  88039. (epfd, events, maxevents, timeout))
  88040. # endif
  88041. # ifdef __NR_epoll_pwait
  88042. -# include <signal.h>
  88043. CANCELABLE_SYSCALL (int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout,
  88044. const sigset_t *set),
  88045. (epfd, events, maxevents, timeout, set))
  88046. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/proc_service.h uClibc/libpthread/linuxthreads.old_db/proc_service.h
  88047. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  88048. +++ uClibc/libpthread/linuxthreads.old_db/proc_service.h 2014-02-03 12:32:56.000000000 +0100
  88049. @@ -12,9 +12,8 @@
  88050. Lesser General Public License for more details.
  88051. You should have received a copy of the GNU Lesser General Public
  88052. - License along with the GNU C Library; if not, write to the Free
  88053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88054. - 02111-1307 USA. */
  88055. + License along with the GNU C Library; if not, see
  88056. + <http://www.gnu.org/licenses/>. */
  88057. /* The definitions in this file must correspond to those in the debugger. */
  88058. #include <sys/procfs.h>
  88059. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_init.c uClibc/libpthread/linuxthreads.old_db/td_init.c
  88060. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  88061. +++ uClibc/libpthread/linuxthreads.old_db/td_init.c 2014-02-03 12:32:56.000000000 +0100
  88062. @@ -14,9 +14,8 @@
  88063. Lesser General Public License for more details.
  88064. You should have received a copy of the GNU Lesser General Public
  88065. - License along with the GNU C Library; if not, write to the Free
  88066. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88067. - 02111-1307 USA. */
  88068. + License along with the GNU C Library; if not, see
  88069. + <http://www.gnu.org/licenses/>. */
  88070. #include "thread_dbP.h"
  88071. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_log.c uClibc/libpthread/linuxthreads.old_db/td_log.c
  88072. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  88073. +++ uClibc/libpthread/linuxthreads.old_db/td_log.c 2014-02-03 12:32:56.000000000 +0100
  88074. @@ -14,9 +14,8 @@
  88075. Lesser General Public License for more details.
  88076. You should have received a copy of the GNU Lesser General Public
  88077. - License along with the GNU C Library; if not, write to the Free
  88078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88079. - 02111-1307 USA. */
  88080. + License along with the GNU C Library; if not, see
  88081. + <http://www.gnu.org/licenses/>. */
  88082. #include "thread_dbP.h"
  88083. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_symbol_list.c uClibc/libpthread/linuxthreads.old_db/td_symbol_list.c
  88084. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  88085. +++ uClibc/libpthread/linuxthreads.old_db/td_symbol_list.c 2014-02-03 12:32:56.000000000 +0100
  88086. @@ -14,9 +14,8 @@
  88087. Lesser General Public License for more details.
  88088. You should have received a copy of the GNU Lesser General Public
  88089. - License along with the GNU C Library; if not, write to the Free
  88090. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88091. - 02111-1307 USA. */
  88092. + License along with the GNU C Library; if not, see
  88093. + <http://www.gnu.org/licenses/>. */
  88094. #include <assert.h>
  88095. #include "thread_dbP.h"
  88096. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_clear_event.c uClibc/libpthread/linuxthreads.old_db/td_ta_clear_event.c
  88097. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  88098. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_clear_event.c 2014-02-03 12:32:56.000000000 +0100
  88099. @@ -14,17 +14,14 @@
  88100. Lesser General Public License for more details.
  88101. You should have received a copy of the GNU Lesser General Public
  88102. - License along with the GNU C Library; if not, write to the Free
  88103. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88104. - 02111-1307 USA. */
  88105. + License along with the GNU C Library; if not, see
  88106. + <http://www.gnu.org/licenses/>. */
  88107. #include "thread_dbP.h"
  88108. td_err_e
  88109. -td_ta_clear_event (ta, event)
  88110. - const td_thragent_t *ta;
  88111. - td_thr_events_t *event;
  88112. +td_ta_clear_event(const td_thragent_t *ta,td_thr_events_t *event)
  88113. {
  88114. td_thr_events_t old_event;
  88115. int i;
  88116. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_delete.c uClibc/libpthread/linuxthreads.old_db/td_ta_delete.c
  88117. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  88118. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_delete.c 2014-02-03 12:32:56.000000000 +0100
  88119. @@ -14,9 +14,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 <stdlib.h>
  88128. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_enable_stats.c uClibc/libpthread/linuxthreads.old_db/td_ta_enable_stats.c
  88129. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  88130. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_enable_stats.c 2014-02-03 12:32:56.000000000 +0100
  88131. @@ -14,9 +14,8 @@
  88132. Lesser General Public License for more details.
  88133. You should have received a copy of the GNU Lesser General Public
  88134. - License along with the GNU C Library; if not, write to the Free
  88135. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88136. - 02111-1307 USA. */
  88137. + License along with the GNU C Library; if not, see
  88138. + <http://www.gnu.org/licenses/>. */
  88139. #include "thread_dbP.h"
  88140. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_addr.c uClibc/libpthread/linuxthreads.old_db/td_ta_event_addr.c
  88141. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  88142. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_event_addr.c 2014-02-03 12:32:56.000000000 +0100
  88143. @@ -14,9 +14,8 @@
  88144. Lesser General Public License for more details.
  88145. You should have received a copy of the GNU Lesser General Public
  88146. - License along with the GNU C Library; if not, write to the Free
  88147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88148. - 02111-1307 USA. */
  88149. + License along with the GNU C Library; if not, see
  88150. + <http://www.gnu.org/licenses/>. */
  88151. #include "thread_dbP.h"
  88152. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c uClibc/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c
  88153. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  88154. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c 2014-02-03 12:32:56.000000000 +0100
  88155. @@ -14,9 +14,8 @@
  88156. Lesser General Public License for more details.
  88157. You should have received a copy of the GNU Lesser General Public
  88158. - License along with the GNU C Library; if not, write to the Free
  88159. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88160. - 02111-1307 USA. */
  88161. + License along with the GNU C Library; if not, see
  88162. + <http://www.gnu.org/licenses/>. */
  88163. #include <stddef.h>
  88164. #include <string.h>
  88165. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c uClibc/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c
  88166. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  88167. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c 2014-02-03 12:32:56.000000000 +0100
  88168. @@ -14,9 +14,8 @@
  88169. Lesser General Public License for more details.
  88170. You should have received a copy of the GNU Lesser General Public
  88171. - License along with the GNU C Library; if not, write to the Free
  88172. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88173. - 02111-1307 USA. */
  88174. + License along with the GNU C Library; if not, see
  88175. + <http://www.gnu.org/licenses/>. */
  88176. #include "thread_dbP.h"
  88177. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_ph.c uClibc/libpthread/linuxthreads.old_db/td_ta_get_ph.c
  88178. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  88179. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_get_ph.c 2014-02-03 12:32:56.000000000 +0100
  88180. @@ -14,9 +14,8 @@
  88181. Lesser General Public License for more details.
  88182. You should have received a copy of the GNU Lesser General Public
  88183. - License along with the GNU C Library; if not, write to the Free
  88184. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88185. - 02111-1307 USA. */
  88186. + License along with the GNU C Library; if not, see
  88187. + <http://www.gnu.org/licenses/>. */
  88188. #include "thread_dbP.h"
  88189. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_stats.c uClibc/libpthread/linuxthreads.old_db/td_ta_get_stats.c
  88190. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  88191. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_get_stats.c 2014-02-03 12:32:56.000000000 +0100
  88192. @@ -14,9 +14,8 @@
  88193. Lesser General Public License for more details.
  88194. You should have received a copy of the GNU Lesser General Public
  88195. - License along with the GNU C Library; if not, write to the Free
  88196. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88197. - 02111-1307 USA. */
  88198. + License along with the GNU C Library; if not, see
  88199. + <http://www.gnu.org/licenses/>. */
  88200. #include "thread_dbP.h"
  88201. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c uClibc/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c
  88202. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  88203. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c 2014-02-03 12:32:56.000000000 +0100
  88204. @@ -14,9 +14,8 @@
  88205. Lesser General Public License for more details.
  88206. You should have received a copy of the GNU Lesser General Public
  88207. - License along with the GNU C Library; if not, write to the Free
  88208. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88209. - 02111-1307 USA. */
  88210. + License along with the GNU C Library; if not, see
  88211. + <http://www.gnu.org/licenses/>. */
  88212. #include "thread_dbP.h"
  88213. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c uClibc/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c
  88214. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  88215. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:56.000000000 +0100
  88216. @@ -14,9 +14,8 @@
  88217. Lesser General Public License for more details.
  88218. You should have received a copy of the GNU Lesser General Public
  88219. - License along with the GNU C Library; if not, write to the Free
  88220. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88221. - 02111-1307 USA. */
  88222. + License along with the GNU C Library; if not, see
  88223. + <http://www.gnu.org/licenses/>. */
  88224. #include "thread_dbP.h"
  88225. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_new.c uClibc/libpthread/linuxthreads.old_db/td_ta_new.c
  88226. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  88227. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_new.c 2014-02-03 12:32:56.000000000 +0100
  88228. @@ -14,9 +14,8 @@
  88229. Lesser General Public License for more details.
  88230. You should have received a copy of the GNU Lesser General Public
  88231. - License along with the GNU C Library; if not, write to the Free
  88232. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88233. - 02111-1307 USA. */
  88234. + License along with the GNU C Library; if not, see
  88235. + <http://www.gnu.org/licenses/>. */
  88236. #include <stddef.h>
  88237. #include <stdlib.h>
  88238. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_reset_stats.c uClibc/libpthread/linuxthreads.old_db/td_ta_reset_stats.c
  88239. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  88240. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_reset_stats.c 2014-02-03 12:32:56.000000000 +0100
  88241. @@ -14,9 +14,8 @@
  88242. Lesser General Public License for more details.
  88243. You should have received a copy of the GNU Lesser General Public
  88244. - License along with the GNU C Library; if not, write to the Free
  88245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88246. - 02111-1307 USA. */
  88247. + License along with the GNU C Library; if not, see
  88248. + <http://www.gnu.org/licenses/>. */
  88249. #include "thread_dbP.h"
  88250. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c uClibc/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c
  88251. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  88252. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c 2014-02-03 12:32:56.000000000 +0100
  88253. @@ -14,9 +14,8 @@
  88254. Lesser General Public License for more details.
  88255. You should have received a copy of the GNU Lesser General Public
  88256. - License along with the GNU C Library; if not, write to the Free
  88257. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88258. - 02111-1307 USA. */
  88259. + License along with the GNU C Library; if not, see
  88260. + <http://www.gnu.org/licenses/>. */
  88261. #include "thread_dbP.h"
  88262. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_set_event.c uClibc/libpthread/linuxthreads.old_db/td_ta_set_event.c
  88263. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  88264. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_set_event.c 2014-02-03 12:32:56.000000000 +0100
  88265. @@ -14,17 +14,14 @@
  88266. Lesser General Public License for more details.
  88267. You should have received a copy of the GNU Lesser General Public
  88268. - License along with the GNU C Library; if not, write to the Free
  88269. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88270. - 02111-1307 USA. */
  88271. + License along with the GNU C Library; if not, see
  88272. + <http://www.gnu.org/licenses/>. */
  88273. #include "thread_dbP.h"
  88274. td_err_e
  88275. -td_ta_set_event (ta, event)
  88276. - const td_thragent_t *ta;
  88277. - td_thr_events_t *event;
  88278. +td_ta_set_event(const td_thragent_t *ta,td_thr_events_t *event)
  88279. {
  88280. td_thr_events_t old_event;
  88281. int i;
  88282. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_thr_iter.c uClibc/libpthread/linuxthreads.old_db/td_ta_thr_iter.c
  88283. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  88284. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_thr_iter.c 2014-02-03 12:32:56.000000000 +0100
  88285. @@ -14,9 +14,8 @@
  88286. Lesser General Public License for more details.
  88287. You should have received a copy of the GNU Lesser General Public
  88288. - License along with the GNU C Library; if not, write to the Free
  88289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88290. - 02111-1307 USA. */
  88291. + License along with the GNU C Library; if not, see
  88292. + <http://www.gnu.org/licenses/>. */
  88293. #include "thread_dbP.h"
  88294. #include <alloca.h>
  88295. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c uClibc/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c
  88296. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  88297. +++ uClibc/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c 2014-02-03 12:32:56.000000000 +0100
  88298. @@ -14,9 +14,8 @@
  88299. Lesser General Public License for more details.
  88300. You should have received a copy of the GNU Lesser General Public
  88301. - License along with the GNU C Library; if not, write to the Free
  88302. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88303. - 02111-1307 USA. */
  88304. + License along with the GNU C Library; if not, see
  88305. + <http://www.gnu.org/licenses/>. */
  88306. #include "thread_dbP.h"
  88307. #include <alloca.h>
  88308. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_clear_event.c uClibc/libpthread/linuxthreads.old_db/td_thr_clear_event.c
  88309. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  88310. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_clear_event.c 2014-02-03 12:32:56.000000000 +0100
  88311. @@ -14,9 +14,8 @@
  88312. Lesser General Public License for more details.
  88313. You should have received a copy of the GNU Lesser General Public
  88314. - License along with the GNU C Library; if not, write to the Free
  88315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88316. - 02111-1307 USA. */
  88317. + License along with the GNU C Library; if not, see
  88318. + <http://www.gnu.org/licenses/>. */
  88319. #include <stddef.h>
  88320. @@ -24,9 +23,7 @@
  88321. td_err_e
  88322. -td_thr_clear_event (th, event)
  88323. - const td_thrhandle_t *th;
  88324. - td_thr_events_t *event;
  88325. +td_thr_clear_event(const td_thrhandle_t *th,td_thr_events_t *event)
  88326. {
  88327. td_thr_events_t old_event;
  88328. int i;
  88329. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbresume.c uClibc/libpthread/linuxthreads.old_db/td_thr_dbresume.c
  88330. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  88331. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_dbresume.c 2014-02-03 12:32:56.000000000 +0100
  88332. @@ -14,9 +14,8 @@
  88333. Lesser General Public License for more details.
  88334. You should have received a copy of the GNU Lesser General Public
  88335. - License along with the GNU C Library; if not, write to the Free
  88336. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88337. - 02111-1307 USA. */
  88338. + License along with the GNU C Library; if not, see
  88339. + <http://www.gnu.org/licenses/>. */
  88340. #include "thread_dbP.h"
  88341. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c uClibc/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c
  88342. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  88343. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c 2014-02-03 12:32:56.000000000 +0100
  88344. @@ -14,9 +14,8 @@
  88345. Lesser General Public License for more details.
  88346. You should have received a copy of the GNU Lesser General Public
  88347. - License along with the GNU C Library; if not, write to the Free
  88348. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88349. - 02111-1307 USA. */
  88350. + License along with the GNU C Library; if not, see
  88351. + <http://www.gnu.org/licenses/>. */
  88352. #include "thread_dbP.h"
  88353. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_enable.c uClibc/libpthread/linuxthreads.old_db/td_thr_event_enable.c
  88354. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  88355. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_event_enable.c 2014-02-03 12:32:56.000000000 +0100
  88356. @@ -14,9 +14,8 @@
  88357. Lesser General Public License for more details.
  88358. You should have received a copy of the GNU Lesser General Public
  88359. - License along with the GNU C Library; if not, write to the Free
  88360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88361. - 02111-1307 USA. */
  88362. + License along with the GNU C Library; if not, see
  88363. + <http://www.gnu.org/licenses/>. */
  88364. #include <stddef.h>
  88365. @@ -24,9 +23,7 @@
  88366. td_err_e
  88367. -td_thr_event_enable (th, onoff)
  88368. - const td_thrhandle_t *th;
  88369. - int onoff;
  88370. +td_thr_event_enable(const td_thrhandle_t *th, int onoff)
  88371. {
  88372. LOG ("td_thr_event_enable");
  88373. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c uClibc/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c
  88374. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  88375. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c 2014-02-03 12:32:56.000000000 +0100
  88376. @@ -14,9 +14,8 @@
  88377. Lesser General Public License for more details.
  88378. You should have received a copy of the GNU Lesser General Public
  88379. - License along with the GNU C Library; if not, write to the Free
  88380. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88381. - 02111-1307 USA. */
  88382. + License along with the GNU C Library; if not, see
  88383. + <http://www.gnu.org/licenses/>. */
  88384. #include <stddef.h>
  88385. #include <string.h>
  88386. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getfpregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_getfpregs.c
  88387. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  88388. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_getfpregs.c 2014-02-03 12:32:56.000000000 +0100
  88389. @@ -14,9 +14,8 @@
  88390. Lesser General Public License for more details.
  88391. You should have received a copy of the GNU Lesser General Public
  88392. - License along with the GNU C Library; if not, write to the Free
  88393. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88394. - 02111-1307 USA. */
  88395. + License along with the GNU C Library; if not, see
  88396. + <http://www.gnu.org/licenses/>. */
  88397. #include "thread_dbP.h"
  88398. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getgregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_getgregs.c
  88399. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  88400. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_getgregs.c 2014-02-03 12:32:56.000000000 +0100
  88401. @@ -14,9 +14,8 @@
  88402. Lesser General Public License for more details.
  88403. You should have received a copy of the GNU Lesser General Public
  88404. - License along with the GNU C Library; if not, write to the Free
  88405. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88406. - 02111-1307 USA. */
  88407. + License along with the GNU C Library; if not, see
  88408. + <http://www.gnu.org/licenses/>. */
  88409. #include "thread_dbP.h"
  88410. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_get_info.c uClibc/libpthread/linuxthreads.old_db/td_thr_get_info.c
  88411. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  88412. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_get_info.c 2014-02-03 12:32:56.000000000 +0100
  88413. @@ -14,9 +14,8 @@
  88414. Lesser General Public License for more details.
  88415. You should have received a copy of the GNU Lesser General Public
  88416. - License along with the GNU C Library; if not, write to the Free
  88417. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88418. - 02111-1307 USA. */
  88419. + License along with the GNU C Library; if not, see
  88420. + <http://www.gnu.org/licenses/>. */
  88421. #include <stddef.h>
  88422. #include <string.h>
  88423. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_getxregs.c
  88424. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  88425. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_getxregs.c 2014-02-03 12:32:56.000000000 +0100
  88426. @@ -14,9 +14,8 @@
  88427. Lesser General Public License for more details.
  88428. You should have received a copy of the GNU Lesser General Public
  88429. - License along with the GNU C Library; if not, write to the Free
  88430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88431. - 02111-1307 USA. */
  88432. + License along with the GNU C Library; if not, see
  88433. + <http://www.gnu.org/licenses/>. */
  88434. #include "thread_dbP.h"
  88435. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregsize.c uClibc/libpthread/linuxthreads.old_db/td_thr_getxregsize.c
  88436. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  88437. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_getxregsize.c 2014-02-03 12:32:56.000000000 +0100
  88438. @@ -14,9 +14,8 @@
  88439. Lesser General Public License for more details.
  88440. You should have received a copy of the GNU Lesser General Public
  88441. - License along with the GNU C Library; if not, write to the Free
  88442. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88443. - 02111-1307 USA. */
  88444. + License along with the GNU C Library; if not, see
  88445. + <http://www.gnu.org/licenses/>. */
  88446. #include "thread_dbP.h"
  88447. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_set_event.c uClibc/libpthread/linuxthreads.old_db/td_thr_set_event.c
  88448. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  88449. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_set_event.c 2014-02-03 12:32:56.000000000 +0100
  88450. @@ -14,9 +14,8 @@
  88451. Lesser General Public License for more details.
  88452. You should have received a copy of the GNU Lesser General Public
  88453. - License along with the GNU C Library; if not, write to the Free
  88454. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88455. - 02111-1307 USA. */
  88456. + License along with the GNU C Library; if not, see
  88457. + <http://www.gnu.org/licenses/>. */
  88458. #include <stddef.h>
  88459. @@ -24,9 +23,7 @@
  88460. td_err_e
  88461. -td_thr_set_event (th, event)
  88462. - const td_thrhandle_t *th;
  88463. - td_thr_events_t *event;
  88464. +td_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *event)
  88465. {
  88466. td_thr_events_t old_event;
  88467. int i;
  88468. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setfpregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_setfpregs.c
  88469. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  88470. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_setfpregs.c 2014-02-03 12:32:56.000000000 +0100
  88471. @@ -14,9 +14,8 @@
  88472. Lesser General Public License for more details.
  88473. You should have received a copy of the GNU Lesser General Public
  88474. - License along with the GNU C Library; if not, write to the Free
  88475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88476. - 02111-1307 USA. */
  88477. + License along with the GNU C Library; if not, see
  88478. + <http://www.gnu.org/licenses/>. */
  88479. #include "thread_dbP.h"
  88480. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setgregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_setgregs.c
  88481. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  88482. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_setgregs.c 2014-02-03 12:32:56.000000000 +0100
  88483. @@ -14,9 +14,8 @@
  88484. Lesser General Public License for more details.
  88485. You should have received a copy of the GNU Lesser General Public
  88486. - License along with the GNU C Library; if not, write to the Free
  88487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88488. - 02111-1307 USA. */
  88489. + License along with the GNU C Library; if not, see
  88490. + <http://www.gnu.org/licenses/>. */
  88491. #include "thread_dbP.h"
  88492. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setprio.c uClibc/libpthread/linuxthreads.old_db/td_thr_setprio.c
  88493. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  88494. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_setprio.c 2014-02-03 12:32:56.000000000 +0100
  88495. @@ -14,9 +14,8 @@
  88496. Lesser General Public License for more details.
  88497. You should have received a copy of the GNU Lesser General Public
  88498. - License along with the GNU C Library; if not, write to the Free
  88499. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88500. - 02111-1307 USA. */
  88501. + License along with the GNU C Library; if not, see
  88502. + <http://www.gnu.org/licenses/>. */
  88503. #include "thread_dbP.h"
  88504. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setsigpending.c uClibc/libpthread/linuxthreads.old_db/td_thr_setsigpending.c
  88505. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  88506. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_setsigpending.c 2014-02-03 12:32:56.000000000 +0100
  88507. @@ -14,9 +14,8 @@
  88508. Lesser General Public License for more details.
  88509. You should have received a copy of the GNU Lesser General Public
  88510. - License along with the GNU C Library; if not, write to the Free
  88511. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88512. - 02111-1307 USA. */
  88513. + License along with the GNU C Library; if not, see
  88514. + <http://www.gnu.org/licenses/>. */
  88515. #include "thread_dbP.h"
  88516. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setxregs.c uClibc/libpthread/linuxthreads.old_db/td_thr_setxregs.c
  88517. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  88518. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_setxregs.c 2014-02-03 12:32:56.000000000 +0100
  88519. @@ -14,9 +14,8 @@
  88520. Lesser General Public License for more details.
  88521. You should have received a copy of the GNU Lesser General Public
  88522. - License along with the GNU C Library; if not, write to the Free
  88523. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88524. - 02111-1307 USA. */
  88525. + License along with the GNU C Library; if not, see
  88526. + <http://www.gnu.org/licenses/>. */
  88527. #include "thread_dbP.h"
  88528. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c uClibc/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c
  88529. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  88530. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c 2014-02-03 12:32:56.000000000 +0100
  88531. @@ -14,9 +14,8 @@
  88532. Lesser General Public License for more details.
  88533. You should have received a copy of the GNU Lesser General Public
  88534. - License along with the GNU C Library; if not, write to the Free
  88535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88536. - 02111-1307 USA. */
  88537. + License along with the GNU C Library; if not, see
  88538. + <http://www.gnu.org/licenses/>. */
  88539. #include "thread_dbP.h"
  88540. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c uClibc/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c
  88541. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  88542. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2014-02-03 12:32:56.000000000 +0100
  88543. @@ -14,9 +14,8 @@
  88544. Lesser General Public License for more details.
  88545. You should have received a copy of the GNU Lesser General Public
  88546. - License along with the GNU C Library; if not, write to the Free
  88547. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88548. - 02111-1307 USA. */
  88549. + License along with the GNU C Library; if not, see
  88550. + <http://www.gnu.org/licenses/>. */
  88551. #include <link.h>
  88552. #include "thread_dbP.h"
  88553. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tsd.c uClibc/libpthread/linuxthreads.old_db/td_thr_tsd.c
  88554. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  88555. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_tsd.c 2014-02-03 12:32:56.000000000 +0100
  88556. @@ -14,9 +14,8 @@
  88557. Lesser General Public License for more details.
  88558. You should have received a copy of the GNU Lesser General Public
  88559. - License along with the GNU C Library; if not, write to the Free
  88560. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88561. - 02111-1307 USA. */
  88562. + License along with the GNU C Library; if not, see
  88563. + <http://www.gnu.org/licenses/>. */
  88564. #include "thread_dbP.h"
  88565. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_validate.c uClibc/libpthread/linuxthreads.old_db/td_thr_validate.c
  88566. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  88567. +++ uClibc/libpthread/linuxthreads.old_db/td_thr_validate.c 2014-02-03 12:32:56.000000000 +0100
  88568. @@ -14,9 +14,8 @@
  88569. Lesser General Public License for more details.
  88570. You should have received a copy of the GNU Lesser General Public
  88571. - License along with the GNU C Library; if not, write to the Free
  88572. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88573. - 02111-1307 USA. */
  88574. + License along with the GNU C Library; if not, see
  88575. + <http://www.gnu.org/licenses/>. */
  88576. #include "thread_dbP.h"
  88577. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_db.h uClibc/libpthread/linuxthreads.old_db/thread_db.h
  88578. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  88579. +++ uClibc/libpthread/linuxthreads.old_db/thread_db.h 2014-02-03 12:32:56.000000000 +0100
  88580. @@ -13,9 +13,8 @@
  88581. Lesser General Public License for more details.
  88582. You should have received a copy of the GNU Lesser General Public
  88583. - License along with the GNU C Library; if not, write to the Free
  88584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88585. - 02111-1307 USA. */
  88586. + License along with the GNU C Library; if not, see
  88587. + <http://www.gnu.org/licenses/>. */
  88588. #ifndef _THREAD_DB_H
  88589. #define _THREAD_DB_H 1
  88590. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_dbP.h uClibc/libpthread/linuxthreads.old_db/thread_dbP.h
  88591. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_dbP.h 2012-05-15 09:20:09.000000000 +0200
  88592. +++ uClibc/libpthread/linuxthreads.old_db/thread_dbP.h 2014-02-03 12:32:56.000000000 +0100
  88593. @@ -2,8 +2,6 @@
  88594. #ifndef _THREAD_DBP_H
  88595. #define _THREAD_DBP_H 1
  88596. -#define __FORCE_GLIBC
  88597. -#include <features.h>
  88598. #include <string.h>
  88599. #include <unistd.h>
  88600. #include "proc_service.h"
  88601. diff -Nur uClibc-0.9.33.2/libpthread/nptl/alloca_cutoff.c uClibc/libpthread/nptl/alloca_cutoff.c
  88602. --- uClibc-0.9.33.2/libpthread/nptl/alloca_cutoff.c 2012-05-15 09:20:09.000000000 +0200
  88603. +++ uClibc/libpthread/nptl/alloca_cutoff.c 2014-02-03 12:32:57.000000000 +0100
  88604. @@ -13,9 +13,8 @@
  88605. Lesser General Public License for more details.
  88606. You should have received a copy of the GNU Lesser General Public
  88607. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  88608. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88609. - Boston, MA 02111-1307, USA. */
  88610. + License along with the GNU C Library; see the file COPYING.LIB. If
  88611. + not, see <http://www.gnu.org/licenses/>. */
  88612. #include <alloca.h>
  88613. #include <stdlib.h>
  88614. diff -Nur uClibc-0.9.33.2/libpthread/nptl/allocatestack.c uClibc/libpthread/nptl/allocatestack.c
  88615. --- uClibc-0.9.33.2/libpthread/nptl/allocatestack.c 2012-05-15 09:20:09.000000000 +0200
  88616. +++ uClibc/libpthread/nptl/allocatestack.c 2014-02-03 12:32:57.000000000 +0100
  88617. @@ -13,9 +13,8 @@
  88618. Lesser General Public License for more details.
  88619. You should have received a copy of the GNU Lesser General Public
  88620. - License along with the GNU C Library; if not, write to the Free
  88621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88622. - 02111-1307 USA. */
  88623. + License along with the GNU C Library; if not, see
  88624. + <http://www.gnu.org/licenses/>. */
  88625. #include <assert.h>
  88626. #include <errno.h>
  88627. @@ -646,7 +645,7 @@
  88628. prot) != 0)
  88629. goto mprot_error;
  88630. #elif defined _STACK_GROWS_UP
  88631. - if (mprotect ((char *) pd - pd->guardsize,
  88632. + if (mprotect ((char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1),
  88633. pd->guardsize - guardsize, prot) != 0)
  88634. goto mprot_error;
  88635. #endif
  88636. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cancellation.c uClibc/libpthread/nptl/cancellation.c
  88637. --- uClibc-0.9.33.2/libpthread/nptl/cancellation.c 2012-05-15 09:20:09.000000000 +0200
  88638. +++ uClibc/libpthread/nptl/cancellation.c 2014-02-03 12:32:57.000000000 +0100
  88639. @@ -13,9 +13,8 @@
  88640. Lesser General Public License for more details.
  88641. You should have received a copy of the GNU Lesser General Public
  88642. - License along with the GNU C Library; if not, write to the Free
  88643. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88644. - 02111-1307 USA. */
  88645. + License along with the GNU C Library; if not, see
  88646. + <http://www.gnu.org/licenses/>. */
  88647. #include <setjmp.h>
  88648. #include <stdlib.h>
  88649. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup.c uClibc/libpthread/nptl/cleanup.c
  88650. --- uClibc-0.9.33.2/libpthread/nptl/cleanup.c 2012-05-15 09:20:09.000000000 +0200
  88651. +++ uClibc/libpthread/nptl/cleanup.c 2014-02-03 12:32:57.000000000 +0100
  88652. @@ -13,9 +13,8 @@
  88653. Lesser General Public License for more details.
  88654. You should have received a copy of the GNU Lesser General Public
  88655. - License along with the GNU C Library; if not, write to the Free
  88656. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88657. - 02111-1307 USA. */
  88658. + License along with the GNU C Library; if not, see
  88659. + <http://www.gnu.org/licenses/>. */
  88660. #include <stdlib.h>
  88661. #include "pthreadP.h"
  88662. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_compat.c uClibc/libpthread/nptl/cleanup_compat.c
  88663. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_compat.c 2012-05-15 09:20:09.000000000 +0200
  88664. +++ uClibc/libpthread/nptl/cleanup_compat.c 2014-02-03 12:32:57.000000000 +0100
  88665. @@ -13,9 +13,8 @@
  88666. Lesser General Public License for more details.
  88667. You should have received a copy of the GNU Lesser General Public
  88668. - License along with the GNU C Library; if not, write to the Free
  88669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88670. - 02111-1307 USA. */
  88671. + License along with the GNU C Library; if not, see
  88672. + <http://www.gnu.org/licenses/>. */
  88673. #include <stdlib.h>
  88674. #include "pthreadP.h"
  88675. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_defer.c uClibc/libpthread/nptl/cleanup_defer.c
  88676. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_defer.c 2012-05-15 09:20:09.000000000 +0200
  88677. +++ uClibc/libpthread/nptl/cleanup_defer.c 2014-02-03 12:32:57.000000000 +0100
  88678. @@ -13,9 +13,8 @@
  88679. Lesser General Public License for more details.
  88680. You should have received a copy of the GNU Lesser General Public
  88681. - License along with the GNU C Library; if not, write to the Free
  88682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88683. - 02111-1307 USA. */
  88684. + License along with the GNU C Library; if not, see
  88685. + <http://www.gnu.org/licenses/>. */
  88686. #include <stdlib.h>
  88687. #include "pthreadP.h"
  88688. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_defer_compat.c uClibc/libpthread/nptl/cleanup_defer_compat.c
  88689. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_defer_compat.c 2012-05-15 09:20:09.000000000 +0200
  88690. +++ uClibc/libpthread/nptl/cleanup_defer_compat.c 2014-02-03 12:32:57.000000000 +0100
  88691. @@ -13,9 +13,8 @@
  88692. Lesser General Public License for more details.
  88693. You should have received a copy of the GNU Lesser General Public
  88694. - License along with the GNU C Library; if not, write to the Free
  88695. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88696. - 02111-1307 USA. */
  88697. + License along with the GNU C Library; if not, see
  88698. + <http://www.gnu.org/licenses/>. */
  88699. #include "pthreadP.h"
  88700. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_routine.c uClibc/libpthread/nptl/cleanup_routine.c
  88701. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_routine.c 2012-05-15 09:20:09.000000000 +0200
  88702. +++ uClibc/libpthread/nptl/cleanup_routine.c 2014-02-03 12:32:57.000000000 +0100
  88703. @@ -13,13 +13,12 @@
  88704. Lesser General Public License for more details.
  88705. You should have received a copy of the GNU Lesser General Public
  88706. - License along with the GNU C Library; if not, write to the Free
  88707. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88708. - 02111-1307 USA. */
  88709. + License along with the GNU C Library; if not, see
  88710. + <http://www.gnu.org/licenses/>. */
  88711. #include <pthread.h>
  88712. -
  88713. +void __pthread_cleanup_routine (struct __pthread_cleanup_frame *f);
  88714. void
  88715. __pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
  88716. {
  88717. diff -Nur uClibc-0.9.33.2/libpthread/nptl/descr.h uClibc/libpthread/nptl/descr.h
  88718. --- uClibc-0.9.33.2/libpthread/nptl/descr.h 2012-05-15 09:20:09.000000000 +0200
  88719. +++ uClibc/libpthread/nptl/descr.h 2014-02-03 12:32:57.000000000 +0100
  88720. @@ -13,9 +13,8 @@
  88721. Lesser General Public License for more details.
  88722. You should have received a copy of the GNU Lesser General Public
  88723. - License along with the GNU C Library; if not, write to the Free
  88724. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88725. - 02111-1307 USA. */
  88726. + License along with the GNU C Library; if not, see
  88727. + <http://www.gnu.org/licenses/>. */
  88728. #ifndef _DESCR_H
  88729. #define _DESCR_H 1
  88730. diff -Nur uClibc-0.9.33.2/libpthread/nptl/events.c uClibc/libpthread/nptl/events.c
  88731. --- uClibc-0.9.33.2/libpthread/nptl/events.c 2012-05-15 09:20:09.000000000 +0200
  88732. +++ uClibc/libpthread/nptl/events.c 2014-02-03 12:32:57.000000000 +0100
  88733. @@ -13,9 +13,8 @@
  88734. Lesser General Public License for more details.
  88735. You should have received a copy of the GNU Lesser General Public
  88736. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  88737. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88738. - Boston, MA 02111-1307, USA. */
  88739. + License along with the GNU C Library; see the file COPYING.LIB. If
  88740. + not, see <http://www.gnu.org/licenses/>. */
  88741. /* The functions contained here do nothing, they just return. */
  88742. diff -Nur uClibc-0.9.33.2/libpthread/nptl/forward.c uClibc/libpthread/nptl/forward.c
  88743. --- uClibc-0.9.33.2/libpthread/nptl/forward.c 2012-05-15 09:20:09.000000000 +0200
  88744. +++ uClibc/libpthread/nptl/forward.c 2014-02-03 12:32:57.000000000 +0100
  88745. @@ -13,9 +13,8 @@
  88746. Lesser General Public License for more details.
  88747. You should have received a copy of the GNU Lesser General Public
  88748. - License along with the GNU C Library; if not, write to the Free
  88749. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88750. - 02111-1307 USA. */
  88751. + License along with the GNU C Library; if not, see
  88752. + <http://www.gnu.org/licenses/>. */
  88753. #include <dlfcn.h>
  88754. #include <pthreadP.h>
  88755. diff -Nur uClibc-0.9.33.2/libpthread/nptl/.gitignore uClibc/libpthread/nptl/.gitignore
  88756. --- uClibc-0.9.33.2/libpthread/nptl/.gitignore 2012-05-15 09:20:09.000000000 +0200
  88757. +++ uClibc/libpthread/nptl/.gitignore 2014-02-03 12:32:57.000000000 +0100
  88758. @@ -26,3 +26,5 @@
  88759. #
  88760. # symlinks
  88761. #
  88762. +sysdeps/pthread/pt-sigfillset.c
  88763. +sysdeps/pthread/pt-sigprocmask.c
  88764. diff -Nur uClibc-0.9.33.2/libpthread/nptl/herrno.c uClibc/libpthread/nptl/herrno.c
  88765. --- uClibc-0.9.33.2/libpthread/nptl/herrno.c 2012-05-15 09:20:09.000000000 +0200
  88766. +++ uClibc/libpthread/nptl/herrno.c 2014-02-03 12:32:57.000000000 +0100
  88767. @@ -12,9 +12,8 @@
  88768. Lesser General Public License for more details.
  88769. You should have received a copy of the GNU Lesser General Public
  88770. - License along with the GNU C Library; if not, write to the Free
  88771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88772. - 02111-1307 USA. */
  88773. + License along with the GNU C Library; if not, see
  88774. + <http://www.gnu.org/licenses/>. */
  88775. #include <features.h>
  88776. #include <netdb.h>
  88777. diff -Nur uClibc-0.9.33.2/libpthread/nptl/init.c uClibc/libpthread/nptl/init.c
  88778. --- uClibc-0.9.33.2/libpthread/nptl/init.c 2012-05-15 09:20:09.000000000 +0200
  88779. +++ uClibc/libpthread/nptl/init.c 2014-02-03 12:32:57.000000000 +0100
  88780. @@ -13,9 +13,8 @@
  88781. Lesser General Public License for more details.
  88782. You should have received a copy of the GNU Lesser General Public
  88783. - License along with the GNU C Library; if not, write to the Free
  88784. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88785. - 02111-1307 USA. */
  88786. + License along with the GNU C Library; if not, see
  88787. + <http://www.gnu.org/licenses/>. */
  88788. #include <assert.h>
  88789. #include <errno.h>
  88790. @@ -35,7 +34,6 @@
  88791. #include <lowlevellock.h>
  88792. #include <bits/kernel-features.h>
  88793. #include <stdio.h>
  88794. -extern __typeof(sigaction) __libc_sigaction;
  88795. /* Size and alignment of static TLS block. */
  88796. size_t __static_tls_size;
  88797. diff -Nur uClibc-0.9.33.2/libpthread/nptl/libc-cancellation.c uClibc/libpthread/nptl/libc-cancellation.c
  88798. --- uClibc-0.9.33.2/libpthread/nptl/libc-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  88799. +++ uClibc/libpthread/nptl/libc-cancellation.c 2014-02-03 12:32:57.000000000 +0100
  88800. @@ -13,9 +13,8 @@
  88801. Lesser General Public License for more details.
  88802. You should have received a copy of the GNU Lesser General Public
  88803. - License along with the GNU C Library; if not, write to the Free
  88804. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88805. - 02111-1307 USA. */
  88806. + License along with the GNU C Library; if not, see
  88807. + <http://www.gnu.org/licenses/>. */
  88808. #include "pthreadP.h"
  88809. diff -Nur uClibc-0.9.33.2/libpthread/nptl/linux_fsinfo.h uClibc/libpthread/nptl/linux_fsinfo.h
  88810. --- uClibc-0.9.33.2/libpthread/nptl/linux_fsinfo.h 2012-05-15 09:20:09.000000000 +0200
  88811. +++ uClibc/libpthread/nptl/linux_fsinfo.h 2014-02-03 12:32:57.000000000 +0100
  88812. @@ -13,9 +13,8 @@
  88813. Lesser General Public License for more details.
  88814. You should have received a copy of the GNU Lesser General Public
  88815. - License along with the GNU C Library; if not, write to the Free
  88816. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88817. - 02111-1307 USA. */
  88818. + License along with the GNU C Library; if not, see
  88819. + <http://www.gnu.org/licenses/>. */
  88820. #ifndef _LINUX_FSINFO_H
  88821. #define _LINUX_FSINFO_H 1
  88822. diff -Nur uClibc-0.9.33.2/libpthread/nptl/Makefile.in uClibc/libpthread/nptl/Makefile.in
  88823. --- uClibc-0.9.33.2/libpthread/nptl/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  88824. +++ uClibc/libpthread/nptl/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  88825. @@ -145,7 +145,7 @@
  88826. endif
  88827. LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so \
  88828. - -Wl,-z,nodelete,-z,initfirst,-init=__pthread_initialize_minimal_internal
  88829. + -Wl,-z,nodelete,-z,initfirst,-init=$(SYMBOL_PREFIX)__pthread_initialize_minimal_internal
  88830. LIBS-libpthread.so := $(LIBS)
  88831. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pt-cleanup.c uClibc/libpthread/nptl/pt-cleanup.c
  88832. --- uClibc-0.9.33.2/libpthread/nptl/pt-cleanup.c 2012-05-15 09:20:09.000000000 +0200
  88833. +++ uClibc/libpthread/nptl/pt-cleanup.c 2014-02-03 12:32:57.000000000 +0100
  88834. @@ -13,9 +13,8 @@
  88835. Lesser General Public License for more details.
  88836. You should have received a copy of the GNU Lesser General Public
  88837. - License along with the GNU C Library; if not, write to the Free
  88838. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88839. - 02111-1307 USA. */
  88840. + License along with the GNU C Library; if not, see
  88841. + <http://www.gnu.org/licenses/>. */
  88842. #include <setjmp.h>
  88843. #include <stdlib.h>
  88844. @@ -23,7 +22,7 @@
  88845. #include <jmpbuf-unwind.h>
  88846. void
  88847. -attribute_protected
  88848. +/*does not apply due to hidden_proto(): attribute_protected*/
  88849. __pthread_cleanup_upto (__jmp_buf target, char *targetframe)
  88850. {
  88851. struct pthread *self = THREAD_SELF;
  88852. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_atfork.c uClibc/libpthread/nptl/pthread_atfork.c
  88853. --- uClibc-0.9.33.2/libpthread/nptl/pthread_atfork.c 2012-05-15 09:20:09.000000000 +0200
  88854. +++ uClibc/libpthread/nptl/pthread_atfork.c 2014-02-03 12:32:57.000000000 +0100
  88855. @@ -30,9 +30,8 @@
  88856. Lesser General Public License for more details.
  88857. You should have received a copy of the GNU Lesser General Public
  88858. - License along with the GNU C Library; if not, write to the Free
  88859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88860. - 02111-1307 USA. */
  88861. + License along with the GNU C Library; if not, see
  88862. + <http://www.gnu.org/licenses/>. */
  88863. #include "pthreadP.h"
  88864. #include <fork.h>
  88865. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_destroy.c uClibc/libpthread/nptl/pthread_attr_destroy.c
  88866. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88867. +++ uClibc/libpthread/nptl/pthread_attr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88868. @@ -13,9 +13,8 @@
  88869. Lesser General Public License for more details.
  88870. You should have received a copy of the GNU Lesser General Public
  88871. - License along with the GNU C Library; if not, write to the Free
  88872. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88873. - 02111-1307 USA. */
  88874. + License along with the GNU C Library; if not, see
  88875. + <http://www.gnu.org/licenses/>. */
  88876. #include <assert.h>
  88877. #include <errno.h>
  88878. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getdetachstate.c uClibc/libpthread/nptl/pthread_attr_getdetachstate.c
  88879. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getdetachstate.c 2012-05-15 09:20:09.000000000 +0200
  88880. +++ uClibc/libpthread/nptl/pthread_attr_getdetachstate.c 2014-02-03 12:32:57.000000000 +0100
  88881. @@ -13,9 +13,8 @@
  88882. Lesser General Public License for more details.
  88883. You should have received a copy of the GNU Lesser General Public
  88884. - License along with the GNU C Library; if not, write to the Free
  88885. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88886. - 02111-1307 USA. */
  88887. + License along with the GNU C Library; if not, see
  88888. + <http://www.gnu.org/licenses/>. */
  88889. #include <assert.h>
  88890. #include "pthreadP.h"
  88891. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getguardsize.c uClibc/libpthread/nptl/pthread_attr_getguardsize.c
  88892. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getguardsize.c 2012-05-15 09:20:09.000000000 +0200
  88893. +++ uClibc/libpthread/nptl/pthread_attr_getguardsize.c 2014-02-03 12:32:57.000000000 +0100
  88894. @@ -13,9 +13,8 @@
  88895. Lesser General Public License for more details.
  88896. You should have received a copy of the GNU Lesser General Public
  88897. - License along with the GNU C Library; if not, write to the Free
  88898. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88899. - 02111-1307 USA. */
  88900. + License along with the GNU C Library; if not, see
  88901. + <http://www.gnu.org/licenses/>. */
  88902. #include <assert.h>
  88903. #include "pthreadP.h"
  88904. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getinheritsched.c uClibc/libpthread/nptl/pthread_attr_getinheritsched.c
  88905. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getinheritsched.c 2012-05-15 09:20:09.000000000 +0200
  88906. +++ uClibc/libpthread/nptl/pthread_attr_getinheritsched.c 2014-02-03 12:32:57.000000000 +0100
  88907. @@ -13,9 +13,8 @@
  88908. Lesser General Public License for more details.
  88909. You should have received a copy of the GNU Lesser General Public
  88910. - License along with the GNU C Library; if not, write to the Free
  88911. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88912. - 02111-1307 USA. */
  88913. + License along with the GNU C Library; if not, see
  88914. + <http://www.gnu.org/licenses/>. */
  88915. #include <assert.h>
  88916. #include "pthreadP.h"
  88917. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedparam.c uClibc/libpthread/nptl/pthread_attr_getschedparam.c
  88918. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedparam.c 2012-05-15 09:20:09.000000000 +0200
  88919. +++ uClibc/libpthread/nptl/pthread_attr_getschedparam.c 2014-02-03 12:32:57.000000000 +0100
  88920. @@ -13,9 +13,8 @@
  88921. Lesser General Public License for more details.
  88922. You should have received a copy of the GNU Lesser General Public
  88923. - License along with the GNU C Library; if not, write to the Free
  88924. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88925. - 02111-1307 USA. */
  88926. + License along with the GNU C Library; if not, see
  88927. + <http://www.gnu.org/licenses/>. */
  88928. #include <assert.h>
  88929. #include <string.h>
  88930. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedpolicy.c uClibc/libpthread/nptl/pthread_attr_getschedpolicy.c
  88931. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedpolicy.c 2012-05-15 09:20:09.000000000 +0200
  88932. +++ uClibc/libpthread/nptl/pthread_attr_getschedpolicy.c 2014-02-03 12:32:57.000000000 +0100
  88933. @@ -13,9 +13,8 @@
  88934. Lesser General Public License for more details.
  88935. You should have received a copy of the GNU Lesser General Public
  88936. - License along with the GNU C Library; if not, write to the Free
  88937. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88938. - 02111-1307 USA. */
  88939. + License along with the GNU C Library; if not, see
  88940. + <http://www.gnu.org/licenses/>. */
  88941. #include <assert.h>
  88942. #include "pthreadP.h"
  88943. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getscope.c uClibc/libpthread/nptl/pthread_attr_getscope.c
  88944. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getscope.c 2012-05-15 09:20:09.000000000 +0200
  88945. +++ uClibc/libpthread/nptl/pthread_attr_getscope.c 2014-02-03 12:32:57.000000000 +0100
  88946. @@ -13,9 +13,8 @@
  88947. Lesser General Public License for more details.
  88948. You should have received a copy of the GNU Lesser General Public
  88949. - License along with the GNU C Library; if not, write to the Free
  88950. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88951. - 02111-1307 USA. */
  88952. + License along with the GNU C Library; if not, see
  88953. + <http://www.gnu.org/licenses/>. */
  88954. #include <assert.h>
  88955. #include "pthreadP.h"
  88956. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstackaddr.c uClibc/libpthread/nptl/pthread_attr_getstackaddr.c
  88957. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstackaddr.c 2012-05-15 09:20:09.000000000 +0200
  88958. +++ uClibc/libpthread/nptl/pthread_attr_getstackaddr.c 2014-02-03 12:32:57.000000000 +0100
  88959. @@ -13,9 +13,8 @@
  88960. Lesser General Public License for more details.
  88961. You should have received a copy of the GNU Lesser General Public
  88962. - License along with the GNU C Library; if not, write to the Free
  88963. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88964. - 02111-1307 USA. */
  88965. + License along with the GNU C Library; if not, see
  88966. + <http://www.gnu.org/licenses/>. */
  88967. #include <assert.h>
  88968. #include <errno.h>
  88969. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstack.c uClibc/libpthread/nptl/pthread_attr_getstack.c
  88970. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstack.c 2012-05-15 09:20:09.000000000 +0200
  88971. +++ uClibc/libpthread/nptl/pthread_attr_getstack.c 2014-02-03 12:32:57.000000000 +0100
  88972. @@ -13,9 +13,8 @@
  88973. Lesser General Public License for more details.
  88974. You should have received a copy of the GNU Lesser General Public
  88975. - License along with the GNU C Library; if not, write to the Free
  88976. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88977. - 02111-1307 USA. */
  88978. + License along with the GNU C Library; if not, see
  88979. + <http://www.gnu.org/licenses/>. */
  88980. #include <assert.h>
  88981. #include "pthreadP.h"
  88982. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstacksize.c uClibc/libpthread/nptl/pthread_attr_getstacksize.c
  88983. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstacksize.c 2012-05-15 09:20:09.000000000 +0200
  88984. +++ uClibc/libpthread/nptl/pthread_attr_getstacksize.c 2014-02-03 12:32:57.000000000 +0100
  88985. @@ -13,9 +13,8 @@
  88986. Lesser General Public License for more details.
  88987. You should have received a copy of the GNU Lesser General Public
  88988. - License along with the GNU C Library; if not, write to the Free
  88989. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88990. - 02111-1307 USA. */
  88991. + License along with the GNU C Library; if not, see
  88992. + <http://www.gnu.org/licenses/>. */
  88993. #include <assert.h>
  88994. #include "pthreadP.h"
  88995. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_init.c uClibc/libpthread/nptl/pthread_attr_init.c
  88996. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_init.c 2012-05-15 09:20:09.000000000 +0200
  88997. +++ uClibc/libpthread/nptl/pthread_attr_init.c 2014-02-03 12:32:57.000000000 +0100
  88998. @@ -13,9 +13,8 @@
  88999. Lesser General Public License for more details.
  89000. You should have received a copy of the GNU Lesser General Public
  89001. - License along with the GNU C Library; if not, write to the Free
  89002. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89003. - 02111-1307 USA. */
  89004. + License along with the GNU C Library; if not, see
  89005. + <http://www.gnu.org/licenses/>. */
  89006. #include <assert.h>
  89007. #include <errno.h>
  89008. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setdetachstate.c uClibc/libpthread/nptl/pthread_attr_setdetachstate.c
  89009. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setdetachstate.c 2012-05-15 09:20:09.000000000 +0200
  89010. +++ uClibc/libpthread/nptl/pthread_attr_setdetachstate.c 2014-02-03 12:32:57.000000000 +0100
  89011. @@ -13,9 +13,8 @@
  89012. Lesser General Public License for more details.
  89013. You should have received a copy of the GNU Lesser General Public
  89014. - License along with the GNU C Library; if not, write to the Free
  89015. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89016. - 02111-1307 USA. */
  89017. + License along with the GNU C Library; if not, see
  89018. + <http://www.gnu.org/licenses/>. */
  89019. #include <assert.h>
  89020. #include <errno.h>
  89021. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setguardsize.c uClibc/libpthread/nptl/pthread_attr_setguardsize.c
  89022. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setguardsize.c 2012-05-15 09:20:09.000000000 +0200
  89023. +++ uClibc/libpthread/nptl/pthread_attr_setguardsize.c 2014-02-03 12:32:57.000000000 +0100
  89024. @@ -13,9 +13,8 @@
  89025. Lesser General Public License for more details.
  89026. You should have received a copy of the GNU Lesser General Public
  89027. - License along with the GNU C Library; if not, write to the Free
  89028. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89029. - 02111-1307 USA. */
  89030. + License along with the GNU C Library; if not, see
  89031. + <http://www.gnu.org/licenses/>. */
  89032. #include <assert.h>
  89033. #include "pthreadP.h"
  89034. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setinheritsched.c uClibc/libpthread/nptl/pthread_attr_setinheritsched.c
  89035. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setinheritsched.c 2012-05-15 09:20:09.000000000 +0200
  89036. +++ uClibc/libpthread/nptl/pthread_attr_setinheritsched.c 2014-02-03 12:32:57.000000000 +0100
  89037. @@ -13,9 +13,8 @@
  89038. Lesser General Public License for more details.
  89039. You should have received a copy of the GNU Lesser General Public
  89040. - License along with the GNU C Library; if not, write to the Free
  89041. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89042. - 02111-1307 USA. */
  89043. + License along with the GNU C Library; if not, see
  89044. + <http://www.gnu.org/licenses/>. */
  89045. #include <assert.h>
  89046. #include <errno.h>
  89047. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedparam.c uClibc/libpthread/nptl/pthread_attr_setschedparam.c
  89048. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedparam.c 2012-05-15 09:20:09.000000000 +0200
  89049. +++ uClibc/libpthread/nptl/pthread_attr_setschedparam.c 2014-02-03 12:32:57.000000000 +0100
  89050. @@ -13,9 +13,8 @@
  89051. Lesser General Public License for more details.
  89052. You should have received a copy of the GNU Lesser General Public
  89053. - License along with the GNU C Library; if not, write to the Free
  89054. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89055. - 02111-1307 USA. */
  89056. + License along with the GNU C Library; if not, see
  89057. + <http://www.gnu.org/licenses/>. */
  89058. #include <assert.h>
  89059. #include <errno.h>
  89060. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedpolicy.c uClibc/libpthread/nptl/pthread_attr_setschedpolicy.c
  89061. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedpolicy.c 2012-05-15 09:20:09.000000000 +0200
  89062. +++ uClibc/libpthread/nptl/pthread_attr_setschedpolicy.c 2014-02-03 12:32:57.000000000 +0100
  89063. @@ -13,9 +13,8 @@
  89064. Lesser General Public License for more details.
  89065. You should have received a copy of the GNU Lesser General Public
  89066. - License along with the GNU C Library; if not, write to the Free
  89067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89068. - 02111-1307 USA. */
  89069. + License along with the GNU C Library; if not, see
  89070. + <http://www.gnu.org/licenses/>. */
  89071. #include <assert.h>
  89072. #include <errno.h>
  89073. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setscope.c uClibc/libpthread/nptl/pthread_attr_setscope.c
  89074. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setscope.c 2012-05-15 09:20:09.000000000 +0200
  89075. +++ uClibc/libpthread/nptl/pthread_attr_setscope.c 2014-02-03 12:32:57.000000000 +0100
  89076. @@ -13,9 +13,8 @@
  89077. Lesser General Public License for more details.
  89078. You should have received a copy of the GNU Lesser General Public
  89079. - License along with the GNU C Library; if not, write to the Free
  89080. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89081. - 02111-1307 USA. */
  89082. + License along with the GNU C Library; if not, see
  89083. + <http://www.gnu.org/licenses/>. */
  89084. #include <assert.h>
  89085. #include <errno.h>
  89086. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstackaddr.c uClibc/libpthread/nptl/pthread_attr_setstackaddr.c
  89087. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstackaddr.c 2012-05-15 09:20:09.000000000 +0200
  89088. +++ uClibc/libpthread/nptl/pthread_attr_setstackaddr.c 2014-02-03 12:32:57.000000000 +0100
  89089. @@ -13,9 +13,8 @@
  89090. Lesser General Public License for more details.
  89091. You should have received a copy of the GNU Lesser General Public
  89092. - License along with the GNU C Library; if not, write to the Free
  89093. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89094. - 02111-1307 USA. */
  89095. + License along with the GNU C Library; if not, see
  89096. + <http://www.gnu.org/licenses/>. */
  89097. #include <assert.h>
  89098. #include <errno.h>
  89099. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstack.c uClibc/libpthread/nptl/pthread_attr_setstack.c
  89100. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstack.c 2012-05-15 09:20:09.000000000 +0200
  89101. +++ uClibc/libpthread/nptl/pthread_attr_setstack.c 2014-02-03 12:32:57.000000000 +0100
  89102. @@ -13,9 +13,8 @@
  89103. Lesser General Public License for more details.
  89104. You should have received a copy of the GNU Lesser General Public
  89105. - License along with the GNU C Library; if not, write to the Free
  89106. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89107. - 02111-1307 USA. */
  89108. + License along with the GNU C Library; if not, see
  89109. + <http://www.gnu.org/licenses/>. */
  89110. #include <assert.h>
  89111. #include <errno.h>
  89112. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstacksize.c uClibc/libpthread/nptl/pthread_attr_setstacksize.c
  89113. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstacksize.c 2012-05-15 09:20:09.000000000 +0200
  89114. +++ uClibc/libpthread/nptl/pthread_attr_setstacksize.c 2014-02-03 12:32:57.000000000 +0100
  89115. @@ -13,9 +13,8 @@
  89116. Lesser General Public License for more details.
  89117. You should have received a copy of the GNU Lesser General Public
  89118. - License along with the GNU C Library; if not, write to the Free
  89119. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89120. - 02111-1307 USA. */
  89121. + License along with the GNU C Library; if not, see
  89122. + <http://www.gnu.org/licenses/>. */
  89123. #include <assert.h>
  89124. #include <errno.h>
  89125. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_destroy.c uClibc/libpthread/nptl/pthread_barrierattr_destroy.c
  89126. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89127. +++ uClibc/libpthread/nptl/pthread_barrierattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89128. @@ -13,9 +13,8 @@
  89129. Lesser General Public License for more details.
  89130. You should have received a copy of the GNU Lesser General Public
  89131. - License along with the GNU C Library; if not, write to the Free
  89132. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89133. - 02111-1307 USA. */
  89134. + License along with the GNU C Library; if not, see
  89135. + <http://www.gnu.org/licenses/>. */
  89136. #include "pthreadP.h"
  89137. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_getpshared.c uClibc/libpthread/nptl/pthread_barrierattr_getpshared.c
  89138. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  89139. +++ uClibc/libpthread/nptl/pthread_barrierattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  89140. @@ -13,9 +13,8 @@
  89141. Lesser General Public License for more details.
  89142. You should have received a copy of the GNU Lesser General Public
  89143. - License along with the GNU C Library; if not, write to the Free
  89144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89145. - 02111-1307 USA. */
  89146. + License along with the GNU C Library; if not, see
  89147. + <http://www.gnu.org/licenses/>. */
  89148. #include "pthreadP.h"
  89149. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_init.c uClibc/libpthread/nptl/pthread_barrierattr_init.c
  89150. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_init.c 2012-05-15 09:20:09.000000000 +0200
  89151. +++ uClibc/libpthread/nptl/pthread_barrierattr_init.c 2014-02-03 12:32:57.000000000 +0100
  89152. @@ -13,9 +13,8 @@
  89153. Lesser General Public License for more details.
  89154. You should have received a copy of the GNU Lesser General Public
  89155. - License along with the GNU C Library; if not, write to the Free
  89156. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89157. - 02111-1307 USA. */
  89158. + License along with the GNU C Library; if not, see
  89159. + <http://www.gnu.org/licenses/>. */
  89160. #include "pthreadP.h"
  89161. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_setpshared.c uClibc/libpthread/nptl/pthread_barrierattr_setpshared.c
  89162. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  89163. +++ uClibc/libpthread/nptl/pthread_barrierattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  89164. @@ -13,9 +13,8 @@
  89165. Lesser General Public License for more details.
  89166. You should have received a copy of the GNU Lesser General Public
  89167. - License along with the GNU C Library; if not, write to the Free
  89168. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89169. - 02111-1307 USA. */
  89170. + License along with the GNU C Library; if not, see
  89171. + <http://www.gnu.org/licenses/>. */
  89172. #include <errno.h>
  89173. #include "pthreadP.h"
  89174. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cancel.c uClibc/libpthread/nptl/pthread_cancel.c
  89175. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cancel.c 2012-05-15 09:20:09.000000000 +0200
  89176. +++ uClibc/libpthread/nptl/pthread_cancel.c 2014-02-03 12:32:57.000000000 +0100
  89177. @@ -13,9 +13,8 @@
  89178. Lesser General Public License for more details.
  89179. You should have received a copy of the GNU Lesser General Public
  89180. - License along with the GNU C Library; if not, write to the Free
  89181. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89182. - 02111-1307 USA. */
  89183. + License along with the GNU C Library; if not, see
  89184. + <http://www.gnu.org/licenses/>. */
  89185. #include <errno.h>
  89186. #include <signal.h>
  89187. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_clock_gettime.c uClibc/libpthread/nptl/pthread_clock_gettime.c
  89188. --- uClibc-0.9.33.2/libpthread/nptl/pthread_clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  89189. +++ uClibc/libpthread/nptl/pthread_clock_gettime.c 2014-02-03 12:32:57.000000000 +0100
  89190. @@ -12,14 +12,12 @@
  89191. Lesser General Public License for more details.
  89192. You should have received a copy of the GNU Lesser General Public
  89193. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  89194. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  89195. - Boston, MA 02111-1307, USA. */
  89196. + License along with the GNU C Library; see the file COPYING.LIB. If
  89197. + not, see <http://www.gnu.org/licenses/>. */
  89198. #include <errno.h>
  89199. #include <stdlib.h>
  89200. #include <time.h>
  89201. -#include <libc-internal.h>
  89202. #include "pthreadP.h"
  89203. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_clock_settime.c uClibc/libpthread/nptl/pthread_clock_settime.c
  89204. --- uClibc-0.9.33.2/libpthread/nptl/pthread_clock_settime.c 2012-05-15 09:20:09.000000000 +0200
  89205. +++ uClibc/libpthread/nptl/pthread_clock_settime.c 2014-02-03 12:32:57.000000000 +0100
  89206. @@ -12,14 +12,12 @@
  89207. Lesser General Public License for more details.
  89208. You should have received a copy of the GNU Lesser General Public
  89209. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  89210. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  89211. - Boston, MA 02111-1307, USA. */
  89212. + License along with the GNU C Library; see the file COPYING.LIB. If
  89213. + not, see <http://www.gnu.org/licenses/>. */
  89214. #include <errno.h>
  89215. #include <stdlib.h>
  89216. #include <time.h>
  89217. -#include <libc-internal.h>
  89218. #include "pthreadP.h"
  89219. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_destroy.c uClibc/libpthread/nptl/pthread_condattr_destroy.c
  89220. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89221. +++ uClibc/libpthread/nptl/pthread_condattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89222. @@ -13,9 +13,8 @@
  89223. Lesser General Public License for more details.
  89224. You should have received a copy of the GNU Lesser General Public
  89225. - License along with the GNU C Library; if not, write to the Free
  89226. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89227. - 02111-1307 USA. */
  89228. + License along with the GNU C Library; if not, see
  89229. + <http://www.gnu.org/licenses/>. */
  89230. #include "pthreadP.h"
  89231. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getclock.c uClibc/libpthread/nptl/pthread_condattr_getclock.c
  89232. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getclock.c 2012-05-15 09:20:09.000000000 +0200
  89233. +++ uClibc/libpthread/nptl/pthread_condattr_getclock.c 2014-02-03 12:32:57.000000000 +0100
  89234. @@ -13,9 +13,8 @@
  89235. Lesser General Public License for more details.
  89236. You should have received a copy of the GNU Lesser General Public
  89237. - License along with the GNU C Library; if not, write to the Free
  89238. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89239. - 02111-1307 USA. */
  89240. + License along with the GNU C Library; if not, see
  89241. + <http://www.gnu.org/licenses/>. */
  89242. #include "pthreadP.h"
  89243. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getpshared.c uClibc/libpthread/nptl/pthread_condattr_getpshared.c
  89244. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  89245. +++ uClibc/libpthread/nptl/pthread_condattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  89246. @@ -13,9 +13,8 @@
  89247. Lesser General Public License for more details.
  89248. You should have received a copy of the GNU Lesser General Public
  89249. - License along with the GNU C Library; if not, write to the Free
  89250. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89251. - 02111-1307 USA. */
  89252. + License along with the GNU C Library; if not, see
  89253. + <http://www.gnu.org/licenses/>. */
  89254. #include "pthreadP.h"
  89255. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_init.c uClibc/libpthread/nptl/pthread_condattr_init.c
  89256. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_init.c 2012-05-15 09:20:09.000000000 +0200
  89257. +++ uClibc/libpthread/nptl/pthread_condattr_init.c 2014-02-03 12:32:57.000000000 +0100
  89258. @@ -13,9 +13,8 @@
  89259. Lesser General Public License for more details.
  89260. You should have received a copy of the GNU Lesser General Public
  89261. - License along with the GNU C Library; if not, write to the Free
  89262. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89263. - 02111-1307 USA. */
  89264. + License along with the GNU C Library; if not, see
  89265. + <http://www.gnu.org/licenses/>. */
  89266. #include <string.h>
  89267. #include "pthreadP.h"
  89268. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setclock.c uClibc/libpthread/nptl/pthread_condattr_setclock.c
  89269. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setclock.c 2012-05-15 09:20:09.000000000 +0200
  89270. +++ uClibc/libpthread/nptl/pthread_condattr_setclock.c 2014-02-03 12:32:57.000000000 +0100
  89271. @@ -13,9 +13,8 @@
  89272. Lesser General Public License for more details.
  89273. You should have received a copy of the GNU Lesser General Public
  89274. - License along with the GNU C Library; if not, write to the Free
  89275. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89276. - 02111-1307 USA. */
  89277. + License along with the GNU C Library; if not, see
  89278. + <http://www.gnu.org/licenses/>. */
  89279. #include <assert.h>
  89280. #include <errno.h>
  89281. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setpshared.c uClibc/libpthread/nptl/pthread_condattr_setpshared.c
  89282. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  89283. +++ uClibc/libpthread/nptl/pthread_condattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  89284. @@ -13,9 +13,8 @@
  89285. Lesser General Public License for more details.
  89286. You should have received a copy of the GNU Lesser General Public
  89287. - License along with the GNU C Library; if not, write to the Free
  89288. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89289. - 02111-1307 USA. */
  89290. + License along with the GNU C Library; if not, see
  89291. + <http://www.gnu.org/licenses/>. */
  89292. #include <errno.h>
  89293. #include <pthreadP.h>
  89294. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cond_destroy.c uClibc/libpthread/nptl/pthread_cond_destroy.c
  89295. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cond_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89296. +++ uClibc/libpthread/nptl/pthread_cond_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89297. @@ -13,9 +13,8 @@
  89298. Lesser General Public License for more details.
  89299. You should have received a copy of the GNU Lesser General Public
  89300. - License along with the GNU C Library; if not, write to the Free
  89301. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89302. - 02111-1307 USA. */
  89303. + License along with the GNU C Library; if not, see
  89304. + <http://www.gnu.org/licenses/>. */
  89305. #include <errno.h>
  89306. #include "pthreadP.h"
  89307. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cond_init.c uClibc/libpthread/nptl/pthread_cond_init.c
  89308. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cond_init.c 2012-05-15 09:20:09.000000000 +0200
  89309. +++ uClibc/libpthread/nptl/pthread_cond_init.c 2014-02-03 12:32:57.000000000 +0100
  89310. @@ -14,9 +14,8 @@
  89311. Lesser General Public License for more details.
  89312. You should have received a copy of the GNU Lesser General Public
  89313. - License along with the GNU C Library; if not, write to the Free
  89314. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89315. - 02111-1307 USA. */
  89316. + License along with the GNU C Library; if not, see
  89317. + <http://www.gnu.org/licenses/>. */
  89318. #include "pthreadP.h"
  89319. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_create.c uClibc/libpthread/nptl/pthread_create.c
  89320. --- uClibc-0.9.33.2/libpthread/nptl/pthread_create.c 2012-05-15 09:20:09.000000000 +0200
  89321. +++ uClibc/libpthread/nptl/pthread_create.c 2014-02-03 12:32:57.000000000 +0100
  89322. @@ -13,9 +13,8 @@
  89323. Lesser General Public License for more details.
  89324. You should have received a copy of the GNU Lesser General Public
  89325. - License along with the GNU C Library; if not, write to the Free
  89326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89327. - 02111-1307 USA. */
  89328. + License along with the GNU C Library; if not, see
  89329. + <http://www.gnu.org/licenses/>. */
  89330. #include <errno.h>
  89331. #include <stdbool.h>
  89332. @@ -25,7 +24,6 @@
  89333. #include <hp-timing.h>
  89334. #include <ldsodefs.h>
  89335. #include <atomic.h>
  89336. -#include <libc-internal.h>
  89337. #include <resolv.h>
  89338. #include <bits/kernel-features.h>
  89339. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_detach.c uClibc/libpthread/nptl/pthread_detach.c
  89340. --- uClibc-0.9.33.2/libpthread/nptl/pthread_detach.c 2012-05-15 09:20:09.000000000 +0200
  89341. +++ uClibc/libpthread/nptl/pthread_detach.c 2014-02-03 12:32:57.000000000 +0100
  89342. @@ -13,9 +13,8 @@
  89343. Lesser General Public License for more details.
  89344. You should have received a copy of the GNU Lesser General Public
  89345. - License along with the GNU C Library; if not, write to the Free
  89346. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89347. - 02111-1307 USA. */
  89348. + License along with the GNU C Library; if not, see
  89349. + <http://www.gnu.org/licenses/>. */
  89350. #include <errno.h>
  89351. #include "pthreadP.h"
  89352. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_equal.c uClibc/libpthread/nptl/pthread_equal.c
  89353. --- uClibc-0.9.33.2/libpthread/nptl/pthread_equal.c 2012-05-15 09:20:09.000000000 +0200
  89354. +++ uClibc/libpthread/nptl/pthread_equal.c 2014-02-03 12:32:57.000000000 +0100
  89355. @@ -13,9 +13,8 @@
  89356. Lesser General Public License for more details.
  89357. You should have received a copy of the GNU Lesser General Public
  89358. - License along with the GNU C Library; if not, write to the Free
  89359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89360. - 02111-1307 USA. */
  89361. + License along with the GNU C Library; if not, see
  89362. + <http://www.gnu.org/licenses/>. */
  89363. #include "pthreadP.h"
  89364. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_exit.c uClibc/libpthread/nptl/pthread_exit.c
  89365. --- uClibc-0.9.33.2/libpthread/nptl/pthread_exit.c 2012-05-15 09:20:09.000000000 +0200
  89366. +++ uClibc/libpthread/nptl/pthread_exit.c 2014-02-03 12:32:57.000000000 +0100
  89367. @@ -13,16 +13,15 @@
  89368. Lesser General Public License for more details.
  89369. You should have received a copy of the GNU Lesser General Public
  89370. - License along with the GNU C Library; if not, write to the Free
  89371. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89372. - 02111-1307 USA. */
  89373. + License along with the GNU C Library; if not, see
  89374. + <http://www.gnu.org/licenses/>. */
  89375. #include <stdlib.h>
  89376. #include "pthreadP.h"
  89377. void
  89378. -attribute_protected
  89379. +attribute_protected attribute_noreturn
  89380. __pthread_exit (void* value)
  89381. {
  89382. THREAD_SETMEM (THREAD_SELF, result, value);
  89383. @@ -30,3 +29,9 @@
  89384. __do_cancel ();
  89385. }
  89386. strong_alias (__pthread_exit, pthread_exit)
  89387. +
  89388. +/*
  89389. + * After a thread terminates, __uClibc_main decrements __nptl_nthreads
  89390. + * defined in pthread_create.c.
  89391. + */
  89392. +PTHREAD_STATIC_FN_REQUIRE (pthread_create)
  89393. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getattr_np.c uClibc/libpthread/nptl/pthread_getattr_np.c
  89394. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getattr_np.c 2012-05-15 09:20:09.000000000 +0200
  89395. +++ uClibc/libpthread/nptl/pthread_getattr_np.c 2014-02-03 12:32:57.000000000 +0100
  89396. @@ -13,9 +13,8 @@
  89397. Lesser General Public License for more details.
  89398. You should have received a copy of the GNU Lesser General Public
  89399. - License along with the GNU C Library; if not, write to the Free
  89400. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89401. - 02111-1307 USA. */
  89402. + License along with the GNU C Library; if not, see
  89403. + <http://www.gnu.org/licenses/>. */
  89404. #include <assert.h>
  89405. #include <errno.h>
  89406. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getconcurrency.c uClibc/libpthread/nptl/pthread_getconcurrency.c
  89407. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  89408. +++ uClibc/libpthread/nptl/pthread_getconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  89409. @@ -13,9 +13,8 @@
  89410. Lesser General Public License for more details.
  89411. You should have received a copy of the GNU Lesser General Public
  89412. - License along with the GNU C Library; if not, write to the Free
  89413. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89414. - 02111-1307 USA. */
  89415. + License along with the GNU C Library; if not, see
  89416. + <http://www.gnu.org/licenses/>. */
  89417. #include "pthreadP.h"
  89418. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getschedparam.c uClibc/libpthread/nptl/pthread_getschedparam.c
  89419. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getschedparam.c 2012-05-15 09:20:09.000000000 +0200
  89420. +++ uClibc/libpthread/nptl/pthread_getschedparam.c 2014-02-03 12:32:57.000000000 +0100
  89421. @@ -13,9 +13,8 @@
  89422. Lesser General Public License for more details.
  89423. You should have received a copy of the GNU Lesser General Public
  89424. - License along with the GNU C Library; if not, write to the Free
  89425. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89426. - 02111-1307 USA. */
  89427. + License along with the GNU C Library; if not, see
  89428. + <http://www.gnu.org/licenses/>. */
  89429. #include <errno.h>
  89430. #include <string.h>
  89431. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getspecific.c uClibc/libpthread/nptl/pthread_getspecific.c
  89432. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getspecific.c 2012-05-15 09:20:09.000000000 +0200
  89433. +++ uClibc/libpthread/nptl/pthread_getspecific.c 2014-02-03 12:32:57.000000000 +0100
  89434. @@ -13,16 +13,15 @@
  89435. Lesser General Public License for more details.
  89436. You should have received a copy of the GNU Lesser General Public
  89437. - License along with the GNU C Library; if not, write to the Free
  89438. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89439. - 02111-1307 USA. */
  89440. + License along with the GNU C Library; if not, see
  89441. + <http://www.gnu.org/licenses/>. */
  89442. #include <stdlib.h>
  89443. #include "pthreadP.h"
  89444. -void *
  89445. attribute_protected
  89446. +void *
  89447. __pthread_getspecific (pthread_key_t key)
  89448. {
  89449. struct pthread_key_data *data;
  89450. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_join.c uClibc/libpthread/nptl/pthread_join.c
  89451. --- uClibc-0.9.33.2/libpthread/nptl/pthread_join.c 2012-05-15 09:20:09.000000000 +0200
  89452. +++ uClibc/libpthread/nptl/pthread_join.c 2014-02-03 12:32:57.000000000 +0100
  89453. @@ -13,9 +13,8 @@
  89454. Lesser General Public License for more details.
  89455. You should have received a copy of the GNU Lesser General Public
  89456. - License along with the GNU C Library; if not, write to the Free
  89457. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89458. - 02111-1307 USA. */
  89459. + License along with the GNU C Library; if not, see
  89460. + <http://www.gnu.org/licenses/>. */
  89461. #include <errno.h>
  89462. #include <stdlib.h>
  89463. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_key_create.c uClibc/libpthread/nptl/pthread_key_create.c
  89464. --- uClibc-0.9.33.2/libpthread/nptl/pthread_key_create.c 2012-05-15 09:20:09.000000000 +0200
  89465. +++ uClibc/libpthread/nptl/pthread_key_create.c 2014-02-03 12:32:57.000000000 +0100
  89466. @@ -13,9 +13,8 @@
  89467. Lesser General Public License for more details.
  89468. You should have received a copy of the GNU Lesser General Public
  89469. - License along with the GNU C Library; if not, write to the Free
  89470. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89471. - 02111-1307 USA. */
  89472. + License along with the GNU C Library; if not, see
  89473. + <http://www.gnu.org/licenses/>. */
  89474. #include <errno.h>
  89475. #include "pthreadP.h"
  89476. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_key_delete.c uClibc/libpthread/nptl/pthread_key_delete.c
  89477. --- uClibc-0.9.33.2/libpthread/nptl/pthread_key_delete.c 2012-05-15 09:20:09.000000000 +0200
  89478. +++ uClibc/libpthread/nptl/pthread_key_delete.c 2014-02-03 12:32:57.000000000 +0100
  89479. @@ -13,9 +13,8 @@
  89480. Lesser General Public License for more details.
  89481. You should have received a copy of the GNU Lesser General Public
  89482. - License along with the GNU C Library; if not, write to the Free
  89483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89484. - 02111-1307 USA. */
  89485. + License along with the GNU C Library; if not, see
  89486. + <http://www.gnu.org/licenses/>. */
  89487. #include <errno.h>
  89488. #include "pthreadP.h"
  89489. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_kill_other_threads.c uClibc/libpthread/nptl/pthread_kill_other_threads.c
  89490. --- uClibc-0.9.33.2/libpthread/nptl/pthread_kill_other_threads.c 2012-05-15 09:20:09.000000000 +0200
  89491. +++ uClibc/libpthread/nptl/pthread_kill_other_threads.c 2014-02-03 12:32:57.000000000 +0100
  89492. @@ -13,11 +13,10 @@
  89493. Lesser General Public License for more details.
  89494. You should have received a copy of the GNU Lesser General Public
  89495. - License along with the GNU C Library; if not, write to the Free
  89496. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89497. - 02111-1307 USA. */
  89498. + License along with the GNU C Library; if not, see
  89499. + <http://www.gnu.org/licenses/>. */
  89500. -#ifdef SHARED
  89501. +#if 0 /*def SHARED*/
  89502. /* This function does not serve a useful purpose in the thread library
  89503. implementation anymore. It used to be necessary when then kernel
  89504. could not shut down "processes" but this is not the case anymore.
  89505. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_destroy.c uClibc/libpthread/nptl/pthread_mutexattr_destroy.c
  89506. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89507. +++ uClibc/libpthread/nptl/pthread_mutexattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89508. @@ -13,9 +13,8 @@
  89509. Lesser General Public License for more details.
  89510. You should have received a copy of the GNU Lesser General Public
  89511. - License along with the GNU C Library; if not, write to the Free
  89512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89513. - 02111-1307 USA. */
  89514. + License along with the GNU C Library; if not, see
  89515. + <http://www.gnu.org/licenses/>. */
  89516. #include <pthreadP.h>
  89517. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprioceiling.c uClibc/libpthread/nptl/pthread_mutexattr_getprioceiling.c
  89518. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  89519. +++ uClibc/libpthread/nptl/pthread_mutexattr_getprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  89520. @@ -14,9 +14,8 @@
  89521. Lesser General Public License for more details.
  89522. You should have received a copy of the GNU Lesser General Public
  89523. - License along with the GNU C Library; if not, write to the Free
  89524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89525. - 02111-1307 USA. */
  89526. + License along with the GNU C Library; if not, see
  89527. + <http://www.gnu.org/licenses/>. */
  89528. #include <pthreadP.h>
  89529. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprotocol.c uClibc/libpthread/nptl/pthread_mutexattr_getprotocol.c
  89530. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprotocol.c 2012-05-15 09:20:09.000000000 +0200
  89531. +++ uClibc/libpthread/nptl/pthread_mutexattr_getprotocol.c 2014-02-03 12:32:57.000000000 +0100
  89532. @@ -14,9 +14,8 @@
  89533. Lesser General Public License for more details.
  89534. You should have received a copy of the GNU Lesser General Public
  89535. - License along with the GNU C Library; if not, write to the Free
  89536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89537. - 02111-1307 USA. */
  89538. + License along with the GNU C Library; if not, see
  89539. + <http://www.gnu.org/licenses/>. */
  89540. #include <pthreadP.h>
  89541. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getpshared.c uClibc/libpthread/nptl/pthread_mutexattr_getpshared.c
  89542. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  89543. +++ uClibc/libpthread/nptl/pthread_mutexattr_getpshared.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 <pthreadP.h>
  89553. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getrobust.c uClibc/libpthread/nptl/pthread_mutexattr_getrobust.c
  89554. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getrobust.c 2012-05-15 09:20:09.000000000 +0200
  89555. +++ uClibc/libpthread/nptl/pthread_mutexattr_getrobust.c 2014-02-03 12:32:57.000000000 +0100
  89556. @@ -13,9 +13,8 @@
  89557. Lesser General Public License for more details.
  89558. You should have received a copy of the GNU Lesser General Public
  89559. - License along with the GNU C Library; if not, write to the Free
  89560. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89561. - 02111-1307 USA. */
  89562. + License along with the GNU C Library; if not, see
  89563. + <http://www.gnu.org/licenses/>. */
  89564. #include <pthreadP.h>
  89565. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_gettype.c uClibc/libpthread/nptl/pthread_mutexattr_gettype.c
  89566. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_gettype.c 2012-05-15 09:20:09.000000000 +0200
  89567. +++ uClibc/libpthread/nptl/pthread_mutexattr_gettype.c 2014-02-03 12:32:57.000000000 +0100
  89568. @@ -13,9 +13,8 @@
  89569. Lesser General Public License for more details.
  89570. You should have received a copy of the GNU Lesser General Public
  89571. - License along with the GNU C Library; if not, write to the Free
  89572. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89573. - 02111-1307 USA. */
  89574. + License along with the GNU C Library; if not, see
  89575. + <http://www.gnu.org/licenses/>. */
  89576. #include <pthreadP.h>
  89577. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_init.c uClibc/libpthread/nptl/pthread_mutexattr_init.c
  89578. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_init.c 2012-05-15 09:20:09.000000000 +0200
  89579. +++ uClibc/libpthread/nptl/pthread_mutexattr_init.c 2014-02-03 12:32:57.000000000 +0100
  89580. @@ -13,9 +13,8 @@
  89581. Lesser General Public License for more details.
  89582. You should have received a copy of the GNU Lesser General Public
  89583. - License along with the GNU C Library; if not, write to the Free
  89584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89585. - 02111-1307 USA. */
  89586. + License along with the GNU C Library; if not, see
  89587. + <http://www.gnu.org/licenses/>. */
  89588. #include <string.h>
  89589. #include <pthreadP.h>
  89590. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprioceiling.c uClibc/libpthread/nptl/pthread_mutexattr_setprioceiling.c
  89591. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  89592. +++ uClibc/libpthread/nptl/pthread_mutexattr_setprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  89593. @@ -14,9 +14,8 @@
  89594. Lesser General Public License for more details.
  89595. You should have received a copy of the GNU Lesser General Public
  89596. - License along with the GNU C Library; if not, write to the Free
  89597. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89598. - 02111-1307 USA. */
  89599. + License along with the GNU C Library; if not, see
  89600. + <http://www.gnu.org/licenses/>. */
  89601. #include <errno.h>
  89602. #include <pthreadP.h>
  89603. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprotocol.c uClibc/libpthread/nptl/pthread_mutexattr_setprotocol.c
  89604. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprotocol.c 2012-05-15 09:20:09.000000000 +0200
  89605. +++ uClibc/libpthread/nptl/pthread_mutexattr_setprotocol.c 2014-02-03 12:32:57.000000000 +0100
  89606. @@ -14,9 +14,8 @@
  89607. Lesser General Public License for more details.
  89608. You should have received a copy of the GNU Lesser General Public
  89609. - License along with the GNU C Library; if not, write to the Free
  89610. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89611. - 02111-1307 USA. */
  89612. + License along with the GNU C Library; if not, see
  89613. + <http://www.gnu.org/licenses/>. */
  89614. #include <errno.h>
  89615. #include <pthreadP.h>
  89616. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setpshared.c uClibc/libpthread/nptl/pthread_mutexattr_setpshared.c
  89617. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  89618. +++ uClibc/libpthread/nptl/pthread_mutexattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  89619. @@ -13,9 +13,8 @@
  89620. Lesser General Public License for more details.
  89621. You should have received a copy of the GNU Lesser General Public
  89622. - License along with the GNU C Library; if not, write to the Free
  89623. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89624. - 02111-1307 USA. */
  89625. + License along with the GNU C Library; if not, see
  89626. + <http://www.gnu.org/licenses/>. */
  89627. #include <errno.h>
  89628. #include <pthreadP.h>
  89629. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setrobust.c uClibc/libpthread/nptl/pthread_mutexattr_setrobust.c
  89630. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setrobust.c 2012-05-15 09:20:09.000000000 +0200
  89631. +++ uClibc/libpthread/nptl/pthread_mutexattr_setrobust.c 2014-02-03 12:32:57.000000000 +0100
  89632. @@ -13,9 +13,8 @@
  89633. Lesser General Public License for more details.
  89634. You should have received a copy of the GNU Lesser General Public
  89635. - License along with the GNU C Library; if not, write to the Free
  89636. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89637. - 02111-1307 USA. */
  89638. + License along with the GNU C Library; if not, see
  89639. + <http://www.gnu.org/licenses/>. */
  89640. #include <errno.h>
  89641. #include <pthreadP.h>
  89642. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_settype.c uClibc/libpthread/nptl/pthread_mutexattr_settype.c
  89643. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_settype.c 2012-05-15 09:20:09.000000000 +0200
  89644. +++ uClibc/libpthread/nptl/pthread_mutexattr_settype.c 2014-02-03 12:32:57.000000000 +0100
  89645. @@ -13,9 +13,8 @@
  89646. Lesser General Public License for more details.
  89647. You should have received a copy of the GNU Lesser General Public
  89648. - License along with the GNU C Library; if not, write to the Free
  89649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89650. - 02111-1307 USA. */
  89651. + License along with the GNU C Library; if not, see
  89652. + <http://www.gnu.org/licenses/>. */
  89653. #include <errno.h>
  89654. #include <pthreadP.h>
  89655. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_consistent.c uClibc/libpthread/nptl/pthread_mutex_consistent.c
  89656. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_consistent.c 2012-05-15 09:20:09.000000000 +0200
  89657. +++ uClibc/libpthread/nptl/pthread_mutex_consistent.c 2014-02-03 12:32:57.000000000 +0100
  89658. @@ -13,9 +13,8 @@
  89659. Lesser General Public License for more details.
  89660. You should have received a copy of the GNU Lesser General Public
  89661. - License along with the GNU C Library; if not, write to the Free
  89662. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89663. - 02111-1307 USA. */
  89664. + License along with the GNU C Library; if not, see
  89665. + <http://www.gnu.org/licenses/>. */
  89666. #include <errno.h>
  89667. #include <pthreadP.h>
  89668. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_destroy.c uClibc/libpthread/nptl/pthread_mutex_destroy.c
  89669. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89670. +++ uClibc/libpthread/nptl/pthread_mutex_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89671. @@ -13,9 +13,8 @@
  89672. Lesser General Public License for more details.
  89673. You should have received a copy of the GNU Lesser General Public
  89674. - License along with the GNU C Library; if not, write to the Free
  89675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89676. - 02111-1307 USA. */
  89677. + License along with the GNU C Library; if not, see
  89678. + <http://www.gnu.org/licenses/>. */
  89679. #include <errno.h>
  89680. #include "pthreadP.h"
  89681. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_getprioceiling.c uClibc/libpthread/nptl/pthread_mutex_getprioceiling.c
  89682. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_getprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  89683. +++ uClibc/libpthread/nptl/pthread_mutex_getprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  89684. @@ -14,9 +14,8 @@
  89685. Lesser General Public License for more details.
  89686. You should have received a copy of the GNU Lesser General Public
  89687. - License along with the GNU C Library; if not, write to the Free
  89688. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89689. - 02111-1307 USA. */
  89690. + License along with the GNU C Library; if not, see
  89691. + <http://www.gnu.org/licenses/>. */
  89692. #include <errno.h>
  89693. #include <pthreadP.h>
  89694. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_init.c uClibc/libpthread/nptl/pthread_mutex_init.c
  89695. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_init.c 2012-05-15 09:20:09.000000000 +0200
  89696. +++ uClibc/libpthread/nptl/pthread_mutex_init.c 2014-02-03 12:32:57.000000000 +0100
  89697. @@ -14,9 +14,8 @@
  89698. Lesser General Public License for more details.
  89699. You should have received a copy of the GNU Lesser General Public
  89700. - License along with the GNU C Library; if not, write to the Free
  89701. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89702. - 02111-1307 USA. */
  89703. + License along with the GNU C Library; if not, see
  89704. + <http://www.gnu.org/licenses/>. */
  89705. #include <assert.h>
  89706. #include <errno.h>
  89707. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_lock.c uClibc/libpthread/nptl/pthread_mutex_lock.c
  89708. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_lock.c 2012-05-15 09:20:09.000000000 +0200
  89709. +++ uClibc/libpthread/nptl/pthread_mutex_lock.c 2014-02-03 12:32:57.000000000 +0100
  89710. @@ -13,9 +13,8 @@
  89711. Lesser General Public License for more details.
  89712. You should have received a copy of the GNU Lesser General Public
  89713. - License along with the GNU C Library; if not, write to the Free
  89714. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89715. - 02111-1307 USA. */
  89716. + License along with the GNU C Library; if not, see
  89717. + <http://www.gnu.org/licenses/>. */
  89718. #include <assert.h>
  89719. #include <errno.h>
  89720. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_setprioceiling.c uClibc/libpthread/nptl/pthread_mutex_setprioceiling.c
  89721. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_setprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  89722. +++ uClibc/libpthread/nptl/pthread_mutex_setprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  89723. @@ -14,9 +14,8 @@
  89724. Lesser General Public License for more details.
  89725. You should have received a copy of the GNU Lesser General Public
  89726. - License along with the GNU C Library; if not, write to the Free
  89727. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89728. - 02111-1307 USA. */
  89729. + License along with the GNU C Library; if not, see
  89730. + <http://www.gnu.org/licenses/>. */
  89731. #include <stdbool.h>
  89732. #include <errno.h>
  89733. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_timedlock.c uClibc/libpthread/nptl/pthread_mutex_timedlock.c
  89734. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_timedlock.c 2012-05-15 09:20:09.000000000 +0200
  89735. +++ uClibc/libpthread/nptl/pthread_mutex_timedlock.c 2014-02-03 12:32:57.000000000 +0100
  89736. @@ -13,9 +13,8 @@
  89737. Lesser General Public License for more details.
  89738. You should have received a copy of the GNU Lesser General Public
  89739. - License along with the GNU C Library; if not, write to the Free
  89740. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89741. - 02111-1307 USA. */
  89742. + License along with the GNU C Library; if not, see
  89743. + <http://www.gnu.org/licenses/>. */
  89744. #include <assert.h>
  89745. #include <errno.h>
  89746. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_trylock.c uClibc/libpthread/nptl/pthread_mutex_trylock.c
  89747. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_trylock.c 2012-05-15 09:20:09.000000000 +0200
  89748. +++ uClibc/libpthread/nptl/pthread_mutex_trylock.c 2014-02-03 12:32:57.000000000 +0100
  89749. @@ -13,9 +13,8 @@
  89750. Lesser General Public License for more details.
  89751. You should have received a copy of the GNU Lesser General Public
  89752. - License along with the GNU C Library; if not, write to the Free
  89753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89754. - 02111-1307 USA. */
  89755. + License along with the GNU C Library; if not, see
  89756. + <http://www.gnu.org/licenses/>. */
  89757. #include <assert.h>
  89758. #include <errno.h>
  89759. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_unlock.c uClibc/libpthread/nptl/pthread_mutex_unlock.c
  89760. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_unlock.c 2012-05-15 09:20:09.000000000 +0200
  89761. +++ uClibc/libpthread/nptl/pthread_mutex_unlock.c 2014-02-03 12:32:57.000000000 +0100
  89762. @@ -13,9 +13,8 @@
  89763. Lesser General Public License for more details.
  89764. You should have received a copy of the GNU Lesser General Public
  89765. - License along with the GNU C Library; if not, write to the Free
  89766. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89767. - 02111-1307 USA. */
  89768. + License along with the GNU C Library; if not, see
  89769. + <http://www.gnu.org/licenses/>. */
  89770. #include <assert.h>
  89771. #include <errno.h>
  89772. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthreadP.h uClibc/libpthread/nptl/pthreadP.h
  89773. --- uClibc-0.9.33.2/libpthread/nptl/pthreadP.h 2012-05-15 09:20:09.000000000 +0200
  89774. +++ uClibc/libpthread/nptl/pthreadP.h 2014-02-03 12:32:57.000000000 +0100
  89775. @@ -13,9 +13,8 @@
  89776. Lesser General Public License for more details.
  89777. You should have received a copy of the GNU Lesser General Public
  89778. - License along with the GNU C Library; if not, write to the Free
  89779. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89780. - 02111-1307 USA. */
  89781. + License along with the GNU C Library; if not, see
  89782. + <http://www.gnu.org/licenses/>. */
  89783. #ifndef _PTHREADP_H
  89784. #define _PTHREADP_H 1
  89785. @@ -221,7 +220,7 @@
  89786. /* Cancellation test. */
  89787. #define CANCELLATION_P(self) \
  89788. do { \
  89789. - int cancelhandling = THREAD_GETMEM (self, cancelhandling); \
  89790. + cancelhandling = THREAD_GETMEM (self, cancelhandling); \
  89791. if (CANCEL_ENABLED_AND_CANCELED (cancelhandling)) \
  89792. { \
  89793. THREAD_SETMEM (self, result, PTHREAD_CANCELED); \
  89794. @@ -411,9 +410,9 @@
  89795. const struct sched_param *param);
  89796. extern int __pthread_setcancelstate (int state, int *oldstate);
  89797. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  89798. - __const pthread_mutexattr_t *__mutexattr);
  89799. + const pthread_mutexattr_t *__mutexattr);
  89800. extern int __pthread_mutex_init_internal (pthread_mutex_t *__mutex,
  89801. - __const pthread_mutexattr_t *__mutexattr)
  89802. + const pthread_mutexattr_t *__mutexattr)
  89803. attribute_hidden;
  89804. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  89805. extern int __pthread_mutex_destroy_internal (pthread_mutex_t *__mutex)
  89806. @@ -452,22 +451,22 @@
  89807. extern int __pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy);
  89808. extern int __pthread_attr_getscope (const pthread_attr_t *attr, int *scope);
  89809. extern int __pthread_attr_setscope (pthread_attr_t *attr, int scope);
  89810. -extern int __pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  89811. +extern int __pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  89812. __attr, void **__restrict __stackaddr);
  89813. extern int __pthread_attr_setstackaddr (pthread_attr_t *__attr,
  89814. void *__stackaddr);
  89815. -extern int __pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  89816. +extern int __pthread_attr_getstacksize (const pthread_attr_t *__restrict
  89817. __attr,
  89818. size_t *__restrict __stacksize);
  89819. extern int __pthread_attr_setstacksize (pthread_attr_t *__attr,
  89820. size_t __stacksize);
  89821. -extern int __pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  89822. +extern int __pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  89823. void **__restrict __stackaddr,
  89824. size_t *__restrict __stacksize);
  89825. extern int __pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
  89826. size_t __stacksize);
  89827. extern int __pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  89828. - __const pthread_rwlockattr_t *__restrict
  89829. + const pthread_rwlockattr_t *__restrict
  89830. __attr);
  89831. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  89832. extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
  89833. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_destroy.c uClibc/libpthread/nptl/pthread_rwlockattr_destroy.c
  89834. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89835. +++ uClibc/libpthread/nptl/pthread_rwlockattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89836. @@ -13,9 +13,8 @@
  89837. Lesser General Public License for more details.
  89838. You should have received a copy of the GNU Lesser General Public
  89839. - License along with the GNU C Library; if not, write to the Free
  89840. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89841. - 02111-1307 USA. */
  89842. + License along with the GNU C Library; if not, see
  89843. + <http://www.gnu.org/licenses/>. */
  89844. #include "pthreadP.h"
  89845. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getkind_np.c uClibc/libpthread/nptl/pthread_rwlockattr_getkind_np.c
  89846. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getkind_np.c 2012-05-15 09:20:09.000000000 +0200
  89847. +++ uClibc/libpthread/nptl/pthread_rwlockattr_getkind_np.c 2014-02-03 12:32:57.000000000 +0100
  89848. @@ -13,9 +13,8 @@
  89849. Lesser General Public License for more details.
  89850. You should have received a copy of the GNU Lesser General Public
  89851. - License along with the GNU C Library; if not, write to the Free
  89852. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89853. - 02111-1307 USA. */
  89854. + License along with the GNU C Library; if not, see
  89855. + <http://www.gnu.org/licenses/>. */
  89856. #include "pthreadP.h"
  89857. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getpshared.c uClibc/libpthread/nptl/pthread_rwlockattr_getpshared.c
  89858. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  89859. +++ uClibc/libpthread/nptl/pthread_rwlockattr_getpshared.c 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. #include "pthreadP.h"
  89869. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_init.c uClibc/libpthread/nptl/pthread_rwlockattr_init.c
  89870. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_init.c 2012-05-15 09:20:09.000000000 +0200
  89871. +++ uClibc/libpthread/nptl/pthread_rwlockattr_init.c 2014-02-03 12:32:57.000000000 +0100
  89872. @@ -13,9 +13,8 @@
  89873. Lesser General Public License for more details.
  89874. You should have received a copy of the GNU Lesser General Public
  89875. - License along with the GNU C Library; if not, write to the Free
  89876. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89877. - 02111-1307 USA. */
  89878. + License along with the GNU C Library; if not, see
  89879. + <http://www.gnu.org/licenses/>. */
  89880. #include "pthreadP.h"
  89881. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setkind_np.c uClibc/libpthread/nptl/pthread_rwlockattr_setkind_np.c
  89882. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setkind_np.c 2012-05-15 09:20:09.000000000 +0200
  89883. +++ uClibc/libpthread/nptl/pthread_rwlockattr_setkind_np.c 2014-02-03 12:32:57.000000000 +0100
  89884. @@ -13,9 +13,8 @@
  89885. Lesser General Public License for more details.
  89886. You should have received a copy of the GNU Lesser General Public
  89887. - License along with the GNU C Library; if not, write to the Free
  89888. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89889. - 02111-1307 USA. */
  89890. + License along with the GNU C Library; if not, see
  89891. + <http://www.gnu.org/licenses/>. */
  89892. #include <errno.h>
  89893. #include "pthreadP.h"
  89894. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setpshared.c uClibc/libpthread/nptl/pthread_rwlockattr_setpshared.c
  89895. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  89896. +++ uClibc/libpthread/nptl/pthread_rwlockattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  89897. @@ -13,9 +13,8 @@
  89898. Lesser General Public License for more details.
  89899. You should have received a copy of the GNU Lesser General Public
  89900. - License along with the GNU C Library; if not, write to the Free
  89901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89902. - 02111-1307 USA. */
  89903. + License along with the GNU C Library; if not, see
  89904. + <http://www.gnu.org/licenses/>. */
  89905. #include <errno.h>
  89906. #include "pthreadP.h"
  89907. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_destroy.c uClibc/libpthread/nptl/pthread_rwlock_destroy.c
  89908. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89909. +++ uClibc/libpthread/nptl/pthread_rwlock_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89910. @@ -13,9 +13,8 @@
  89911. Lesser General Public License for more details.
  89912. You should have received a copy of the GNU Lesser General Public
  89913. - License along with the GNU C Library; if not, write to the Free
  89914. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89915. - 02111-1307 USA. */
  89916. + License along with the GNU C Library; if not, see
  89917. + <http://www.gnu.org/licenses/>. */
  89918. #include "pthreadP.h"
  89919. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_init.c uClibc/libpthread/nptl/pthread_rwlock_init.c
  89920. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_init.c 2012-05-15 09:20:09.000000000 +0200
  89921. +++ uClibc/libpthread/nptl/pthread_rwlock_init.c 2014-02-03 12:32:57.000000000 +0100
  89922. @@ -13,9 +13,8 @@
  89923. Lesser General Public License for more details.
  89924. You should have received a copy of the GNU Lesser General Public
  89925. - License along with the GNU C Library; if not, write to the Free
  89926. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89927. - 02111-1307 USA. */
  89928. + License along with the GNU C Library; if not, see
  89929. + <http://www.gnu.org/licenses/>. */
  89930. #include "pthreadP.h"
  89931. #include <bits/kernel-features.h>
  89932. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_tryrdlock.c uClibc/libpthread/nptl/pthread_rwlock_tryrdlock.c
  89933. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_tryrdlock.c 2012-05-15 09:20:09.000000000 +0200
  89934. +++ uClibc/libpthread/nptl/pthread_rwlock_tryrdlock.c 2014-02-03 12:32:57.000000000 +0100
  89935. @@ -13,9 +13,8 @@
  89936. Lesser General Public License for more details.
  89937. You should have received a copy of the GNU Lesser General Public
  89938. - License along with the GNU C Library; if not, write to the Free
  89939. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89940. - 02111-1307 USA. */
  89941. + License along with the GNU C Library; if not, see
  89942. + <http://www.gnu.org/licenses/>. */
  89943. #include <errno.h>
  89944. #include "pthreadP.h"
  89945. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_trywrlock.c uClibc/libpthread/nptl/pthread_rwlock_trywrlock.c
  89946. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_trywrlock.c 2012-05-15 09:20:09.000000000 +0200
  89947. +++ uClibc/libpthread/nptl/pthread_rwlock_trywrlock.c 2014-02-03 12:32:57.000000000 +0100
  89948. @@ -13,9 +13,8 @@
  89949. Lesser General Public License for more details.
  89950. You should have received a copy of the GNU Lesser General Public
  89951. - License along with the GNU C Library; if not, write to the Free
  89952. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89953. - 02111-1307 USA. */
  89954. + License along with the GNU C Library; if not, see
  89955. + <http://www.gnu.org/licenses/>. */
  89956. #include <errno.h>
  89957. #include "pthreadP.h"
  89958. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_self.c uClibc/libpthread/nptl/pthread_self.c
  89959. --- uClibc-0.9.33.2/libpthread/nptl/pthread_self.c 2012-05-15 09:20:09.000000000 +0200
  89960. +++ uClibc/libpthread/nptl/pthread_self.c 2014-02-03 12:32:57.000000000 +0100
  89961. @@ -13,9 +13,8 @@
  89962. Lesser General Public License for more details.
  89963. You should have received a copy of the GNU Lesser General Public
  89964. - License along with the GNU C Library; if not, write to the Free
  89965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89966. - 02111-1307 USA. */
  89967. + License along with the GNU C Library; if not, see
  89968. + <http://www.gnu.org/licenses/>. */
  89969. #include "pthreadP.h"
  89970. #include <tls.h>
  89971. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setcancelstate.c uClibc/libpthread/nptl/pthread_setcancelstate.c
  89972. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setcancelstate.c 2012-05-15 09:20:09.000000000 +0200
  89973. +++ uClibc/libpthread/nptl/pthread_setcancelstate.c 2014-02-03 12:32:57.000000000 +0100
  89974. @@ -13,9 +13,8 @@
  89975. Lesser General Public License for more details.
  89976. You should have received a copy of the GNU Lesser General Public
  89977. - License along with the GNU C Library; if not, write to the Free
  89978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89979. - 02111-1307 USA. */
  89980. + License along with the GNU C Library; if not, see
  89981. + <http://www.gnu.org/licenses/>. */
  89982. #include <errno.h>
  89983. #include "pthreadP.h"
  89984. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setcanceltype.c uClibc/libpthread/nptl/pthread_setcanceltype.c
  89985. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setcanceltype.c 2012-05-15 09:20:09.000000000 +0200
  89986. +++ uClibc/libpthread/nptl/pthread_setcanceltype.c 2014-02-03 12:32:57.000000000 +0100
  89987. @@ -13,9 +13,8 @@
  89988. Lesser General Public License for more details.
  89989. You should have received a copy of the GNU Lesser General Public
  89990. - License along with the GNU C Library; if not, write to the Free
  89991. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89992. - 02111-1307 USA. */
  89993. + License along with the GNU C Library; if not, see
  89994. + <http://www.gnu.org/licenses/>. */
  89995. #include <errno.h>
  89996. #include "pthreadP.h"
  89997. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setconcurrency.c uClibc/libpthread/nptl/pthread_setconcurrency.c
  89998. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  89999. +++ uClibc/libpthread/nptl/pthread_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  90000. @@ -13,9 +13,8 @@
  90001. Lesser General Public License for more details.
  90002. You should have received a copy of the GNU Lesser General Public
  90003. - License along with the GNU C Library; if not, write to the Free
  90004. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90005. - 02111-1307 USA. */
  90006. + License along with the GNU C Library; if not, see
  90007. + <http://www.gnu.org/licenses/>. */
  90008. #include <errno.h>
  90009. #include "pthreadP.h"
  90010. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setschedparam.c uClibc/libpthread/nptl/pthread_setschedparam.c
  90011. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setschedparam.c 2012-05-15 09:20:09.000000000 +0200
  90012. +++ uClibc/libpthread/nptl/pthread_setschedparam.c 2014-02-03 12:32:57.000000000 +0100
  90013. @@ -13,9 +13,8 @@
  90014. Lesser General Public License for more details.
  90015. You should have received a copy of the GNU Lesser General Public
  90016. - License along with the GNU C Library; if not, write to the Free
  90017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90018. - 02111-1307 USA. */
  90019. + License along with the GNU C Library; if not, see
  90020. + <http://www.gnu.org/licenses/>. */
  90021. #include <errno.h>
  90022. #include <sched.h>
  90023. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setschedprio.c uClibc/libpthread/nptl/pthread_setschedprio.c
  90024. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setschedprio.c 2012-05-15 09:20:09.000000000 +0200
  90025. +++ uClibc/libpthread/nptl/pthread_setschedprio.c 2014-02-03 12:32:57.000000000 +0100
  90026. @@ -13,9 +13,8 @@
  90027. Lesser General Public License for more details.
  90028. You should have received a copy of the GNU Lesser General Public
  90029. - License along with the GNU C Library; if not, write to the Free
  90030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90031. - 02111-1307 USA. */
  90032. + License along with the GNU C Library; if not, see
  90033. + <http://www.gnu.org/licenses/>. */
  90034. #include <errno.h>
  90035. #include <sched.h>
  90036. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setspecific.c uClibc/libpthread/nptl/pthread_setspecific.c
  90037. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setspecific.c 2012-05-15 09:20:09.000000000 +0200
  90038. +++ uClibc/libpthread/nptl/pthread_setspecific.c 2014-02-03 12:32:57.000000000 +0100
  90039. @@ -13,9 +13,8 @@
  90040. Lesser General Public License for more details.
  90041. You should have received a copy of the GNU Lesser General Public
  90042. - License along with the GNU C Library; if not, write to the Free
  90043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90044. - 02111-1307 USA. */
  90045. + License along with the GNU C Library; if not, see
  90046. + <http://www.gnu.org/licenses/>. */
  90047. #include <errno.h>
  90048. #include <stdlib.h>
  90049. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_testcancel.c uClibc/libpthread/nptl/pthread_testcancel.c
  90050. --- uClibc-0.9.33.2/libpthread/nptl/pthread_testcancel.c 2012-05-15 09:20:09.000000000 +0200
  90051. +++ uClibc/libpthread/nptl/pthread_testcancel.c 2014-02-03 12:32:57.000000000 +0100
  90052. @@ -13,9 +13,8 @@
  90053. Lesser General Public License for more details.
  90054. You should have received a copy of the GNU Lesser General Public
  90055. - License along with the GNU C Library; if not, write to the Free
  90056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90057. - 02111-1307 USA. */
  90058. + License along with the GNU C Library; if not, see
  90059. + <http://www.gnu.org/licenses/>. */
  90060. #include <stdlib.h>
  90061. #include "pthreadP.h"
  90062. @@ -24,5 +23,6 @@
  90063. void
  90064. pthread_testcancel (void)
  90065. {
  90066. + int cancelhandling;
  90067. CANCELLATION_P (THREAD_SELF);
  90068. }
  90069. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_timedjoin.c uClibc/libpthread/nptl/pthread_timedjoin.c
  90070. --- uClibc-0.9.33.2/libpthread/nptl/pthread_timedjoin.c 2012-05-15 09:20:09.000000000 +0200
  90071. +++ uClibc/libpthread/nptl/pthread_timedjoin.c 2014-02-03 12:32:57.000000000 +0100
  90072. @@ -13,9 +13,8 @@
  90073. Lesser General Public License for more details.
  90074. You should have received a copy of the GNU Lesser General Public
  90075. - License along with the GNU C Library; if not, write to the Free
  90076. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90077. - 02111-1307 USA. */
  90078. + License along with the GNU C Library; if not, see
  90079. + <http://www.gnu.org/licenses/>. */
  90080. #include <errno.h>
  90081. #include <stdlib.h>
  90082. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_tryjoin.c uClibc/libpthread/nptl/pthread_tryjoin.c
  90083. --- uClibc-0.9.33.2/libpthread/nptl/pthread_tryjoin.c 2012-05-15 09:20:09.000000000 +0200
  90084. +++ uClibc/libpthread/nptl/pthread_tryjoin.c 2014-02-03 12:32:57.000000000 +0100
  90085. @@ -13,9 +13,8 @@
  90086. Lesser General Public License for more details.
  90087. You should have received a copy of the GNU Lesser General Public
  90088. - License along with the GNU C Library; if not, write to the Free
  90089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90090. - 02111-1307 USA. */
  90091. + License along with the GNU C Library; if not, see
  90092. + <http://www.gnu.org/licenses/>. */
  90093. #include <errno.h>
  90094. #include <stdlib.h>
  90095. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pt-system.c uClibc/libpthread/nptl/pt-system.c
  90096. --- uClibc-0.9.33.2/libpthread/nptl/pt-system.c 2012-05-15 09:20:09.000000000 +0200
  90097. +++ uClibc/libpthread/nptl/pt-system.c 2014-02-03 12:32:57.000000000 +0100
  90098. @@ -13,9 +13,8 @@
  90099. Lesser General Public License for more details.
  90100. You should have received a copy of the GNU Lesser General Public
  90101. - License along with the GNU C Library; if not, write to the Free
  90102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90103. - 02111-1307 USA. */
  90104. + License along with the GNU C Library; if not, see
  90105. + <http://www.gnu.org/licenses/>. */
  90106. #include <errno.h>
  90107. #include <stdlib.h>
  90108. diff -Nur uClibc-0.9.33.2/libpthread/nptl/res.c uClibc/libpthread/nptl/res.c
  90109. --- uClibc-0.9.33.2/libpthread/nptl/res.c 2012-05-15 09:20:09.000000000 +0200
  90110. +++ uClibc/libpthread/nptl/res.c 2014-02-03 12:32:57.000000000 +0100
  90111. @@ -12,9 +12,8 @@
  90112. Lesser General Public License for more details.
  90113. You should have received a copy of the GNU Lesser General Public
  90114. - License along with the GNU C Library; if not, write to the Free
  90115. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90116. - 02111-1307 USA. */
  90117. + License along with the GNU C Library; if not, see
  90118. + <http://www.gnu.org/licenses/>. */
  90119. #include <features.h>
  90120. #include <tls.h>
  90121. diff -Nur uClibc-0.9.33.2/libpthread/nptl/semaphore.h uClibc/libpthread/nptl/semaphore.h
  90122. --- uClibc-0.9.33.2/libpthread/nptl/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  90123. +++ uClibc/libpthread/nptl/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  90124. @@ -12,9 +12,8 @@
  90125. Lesser General Public License for more details.
  90126. You should have received a copy of the GNU Lesser General Public
  90127. - License along with the GNU C Library; if not, write to the Free
  90128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90129. - 02111-1307 USA. */
  90130. + License along with the GNU C Library; if not, see
  90131. + <http://www.gnu.org/licenses/>. */
  90132. #ifndef _SEMAPHORE_H
  90133. #define _SEMAPHORE_H 1
  90134. @@ -40,13 +39,13 @@
  90135. extern int sem_destroy (sem_t *__sem) __THROW;
  90136. /* Open a named semaphore NAME with open flags OFLAG. */
  90137. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  90138. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  90139. /* Close descriptor for named semaphore SEM. */
  90140. extern int sem_close (sem_t *__sem) __THROW;
  90141. /* Remove named semaphore NAME. */
  90142. -extern int sem_unlink (__const char *__name) __THROW;
  90143. +extern int sem_unlink (const char *__name) __THROW;
  90144. /* Wait for SEM being posted.
  90145. @@ -60,7 +59,7 @@
  90146. This function is a cancellation point and therefore not marked with
  90147. __THROW. */
  90148. extern int sem_timedwait (sem_t *__restrict __sem,
  90149. - __const struct timespec *__restrict __abstime);
  90150. + const struct timespec *__restrict __abstime);
  90151. #endif
  90152. /* Test whether SEM is posted. */
  90153. diff -Nur uClibc-0.9.33.2/libpthread/nptl/semaphoreP.h uClibc/libpthread/nptl/semaphoreP.h
  90154. --- uClibc-0.9.33.2/libpthread/nptl/semaphoreP.h 2012-05-15 09:20:09.000000000 +0200
  90155. +++ uClibc/libpthread/nptl/semaphoreP.h 2014-02-03 12:32:57.000000000 +0100
  90156. @@ -13,9 +13,8 @@
  90157. Lesser General Public License for more details.
  90158. You should have received a copy of the GNU Lesser General Public
  90159. - License along with the GNU C Library; if not, write to the Free
  90160. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90161. - 02111-1307 USA. */
  90162. + License along with the GNU C Library; if not, see
  90163. + <http://www.gnu.org/licenses/>. */
  90164. #include <semaphore.h>
  90165. #include "pthreadP.h"
  90166. @@ -56,14 +55,3 @@
  90167. /* Comparison function for search in tree with existing mappings. */
  90168. extern int __sem_search (const void *a, const void *b) attribute_hidden;
  90169. -
  90170. -
  90171. -/* Prototypes of functions with multiple interfaces. */
  90172. -extern int __new_sem_init (sem_t *sem, int pshared, unsigned int value);
  90173. -extern int __old_sem_init (sem_t *sem, int pshared, unsigned int value);
  90174. -extern int __new_sem_destroy (sem_t *sem);
  90175. -extern int __new_sem_post (sem_t *sem);
  90176. -extern int __new_sem_wait (sem_t *sem);
  90177. -extern int __old_sem_wait (sem_t *sem);
  90178. -extern int __new_sem_trywait (sem_t *sem);
  90179. -extern int __new_sem_getvalue (sem_t *sem, int *sval);
  90180. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_close.c uClibc/libpthread/nptl/sem_close.c
  90181. --- uClibc-0.9.33.2/libpthread/nptl/sem_close.c 2012-05-15 09:20:09.000000000 +0200
  90182. +++ uClibc/libpthread/nptl/sem_close.c 2014-02-03 12:32:57.000000000 +0100
  90183. @@ -13,9 +13,8 @@
  90184. Lesser General Public License for more details.
  90185. You should have received a copy of the GNU Lesser General Public
  90186. - License along with the GNU C Library; if not, write to the Free
  90187. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90188. - 02111-1307 USA. */
  90189. + License along with the GNU C Library; if not, see
  90190. + <http://www.gnu.org/licenses/>. */
  90191. #include <errno.h>
  90192. #include <search.h>
  90193. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_destroy.c uClibc/libpthread/nptl/sem_destroy.c
  90194. --- uClibc-0.9.33.2/libpthread/nptl/sem_destroy.c 2012-05-15 09:20:09.000000000 +0200
  90195. +++ uClibc/libpthread/nptl/sem_destroy.c 2014-02-03 12:32:57.000000000 +0100
  90196. @@ -13,16 +13,15 @@
  90197. Lesser General Public License for more details.
  90198. You should have received a copy of the GNU Lesser General Public
  90199. - License along with the GNU C Library; if not, write to the Free
  90200. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90201. - 02111-1307 USA. */
  90202. + License along with the GNU C Library; if not, see
  90203. + <http://www.gnu.org/licenses/>. */
  90204. #include <semaphore.h>
  90205. #include "semaphoreP.h"
  90206. int
  90207. -__new_sem_destroy (
  90208. +sem_destroy (
  90209. sem_t *sem)
  90210. {
  90211. /* XXX Check for valid parameter. */
  90212. @@ -30,4 +29,3 @@
  90213. /* Nothing to do. */
  90214. return 0;
  90215. }
  90216. -weak_alias(__new_sem_destroy, sem_destroy)
  90217. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_getvalue.c uClibc/libpthread/nptl/sem_getvalue.c
  90218. --- uClibc-0.9.33.2/libpthread/nptl/sem_getvalue.c 2012-05-15 09:20:09.000000000 +0200
  90219. +++ uClibc/libpthread/nptl/sem_getvalue.c 2014-02-03 12:32:57.000000000 +0100
  90220. @@ -13,16 +13,15 @@
  90221. Lesser General Public License for more details.
  90222. You should have received a copy of the GNU Lesser General Public
  90223. - License along with the GNU C Library; if not, write to the Free
  90224. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90225. - 02111-1307 USA. */
  90226. + License along with the GNU C Library; if not, see
  90227. + <http://www.gnu.org/licenses/>. */
  90228. #include <semaphore.h>
  90229. #include "semaphoreP.h"
  90230. int
  90231. -__new_sem_getvalue (
  90232. +sem_getvalue (
  90233. sem_t *sem,
  90234. int *sval)
  90235. {
  90236. @@ -34,4 +33,3 @@
  90237. return 0;
  90238. }
  90239. -weak_alias(__new_sem_getvalue, sem_getvalue)
  90240. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_init.c uClibc/libpthread/nptl/sem_init.c
  90241. --- uClibc-0.9.33.2/libpthread/nptl/sem_init.c 2012-05-15 09:20:09.000000000 +0200
  90242. +++ uClibc/libpthread/nptl/sem_init.c 2014-02-03 12:32:57.000000000 +0100
  90243. @@ -13,9 +13,8 @@
  90244. Lesser General Public License for more details.
  90245. You should have received a copy of the GNU Lesser General Public
  90246. - License along with the GNU C Library; if not, write to the Free
  90247. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90248. - 02111-1307 USA. */
  90249. + License along with the GNU C Library; if not, see
  90250. + <http://www.gnu.org/licenses/>. */
  90251. #include <errno.h>
  90252. #include <semaphore.h>
  90253. @@ -25,7 +24,7 @@
  90254. int
  90255. -__new_sem_init (
  90256. +sem_init (
  90257. sem_t *sem,
  90258. int pshared,
  90259. unsigned int value)
  90260. @@ -53,4 +52,3 @@
  90261. return 0;
  90262. }
  90263. -weak_alias(__new_sem_init, sem_init)
  90264. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_open.c uClibc/libpthread/nptl/sem_open.c
  90265. --- uClibc-0.9.33.2/libpthread/nptl/sem_open.c 2012-05-15 09:20:09.000000000 +0200
  90266. +++ uClibc/libpthread/nptl/sem_open.c 2014-02-03 12:32:57.000000000 +0100
  90267. @@ -13,9 +13,8 @@
  90268. Lesser General Public License for more details.
  90269. You should have received a copy of the GNU Lesser General Public
  90270. - License along with the GNU C Library; if not, write to the Free
  90271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90272. - 02111-1307 USA. */
  90273. + License along with the GNU C Library; if not, see
  90274. + <http://www.gnu.org/licenses/>. */
  90275. #include <errno.h>
  90276. #include <fcntl.h>
  90277. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_unlink.c uClibc/libpthread/nptl/sem_unlink.c
  90278. --- uClibc-0.9.33.2/libpthread/nptl/sem_unlink.c 2012-05-15 09:20:09.000000000 +0200
  90279. +++ uClibc/libpthread/nptl/sem_unlink.c 2014-02-03 12:32:57.000000000 +0100
  90280. @@ -13,9 +13,8 @@
  90281. Lesser General Public License for more details.
  90282. You should have received a copy of the GNU Lesser General Public
  90283. - License along with the GNU C Library; if not, write to the Free
  90284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90285. - 02111-1307 USA. */
  90286. + License along with the GNU C Library; if not, see
  90287. + <http://www.gnu.org/licenses/>. */
  90288. #include <errno.h>
  90289. #include <semaphore.h>
  90290. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/dl-tls.h uClibc/libpthread/nptl/sysdeps/alpha/dl-tls.h
  90291. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  90292. +++ uClibc/libpthread/nptl/sysdeps/alpha/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90293. @@ -13,9 +13,8 @@
  90294. Lesser General Public License for more details.
  90295. You should have received a copy of the GNU Lesser General Public
  90296. - License along with the GNU C Library; if not, write to the Free
  90297. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90298. - 02111-1307 USA. */
  90299. + License along with the GNU C Library; if not, see
  90300. + <http://www.gnu.org/licenses/>. */
  90301. /* Type used for the representation of TLS information in the GOT. */
  90302. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c uClibc/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c
  90303. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  90304. +++ uClibc/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  90305. @@ -13,9 +13,8 @@
  90306. Lesser General Public License for more details.
  90307. You should have received a copy of the GNU Lesser General Public
  90308. - License along with the GNU C Library; if not, write to the Free
  90309. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90310. - 02111-1307 USA. */
  90311. + License along with the GNU C Library; if not, see
  90312. + <http://www.gnu.org/licenses/>. */
  90313. /* This file is compiled into assembly code which is then munged by a sed
  90314. script into two files: crti.s and crtn.s.
  90315. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h
  90316. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  90317. +++ uClibc/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90318. @@ -13,9 +13,8 @@
  90319. Lesser General Public License for more details.
  90320. You should have received a copy of the GNU Lesser General Public
  90321. - License along with the GNU C Library; if not, write to the Free
  90322. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90323. - 02111-1307 USA. */
  90324. + License along with the GNU C Library; if not, see
  90325. + <http://www.gnu.org/licenses/>. */
  90326. #include <setjmp.h>
  90327. #include <stdint.h>
  90328. @@ -26,6 +25,3 @@
  90329. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90330. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  90331. -
  90332. -/* We use the normal lobngjmp for unwinding. */
  90333. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  90334. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/libc-tls.c uClibc/libpthread/nptl/sysdeps/alpha/libc-tls.c
  90335. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  90336. +++ uClibc/libpthread/nptl/sysdeps/alpha/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90337. @@ -13,9 +13,8 @@
  90338. Lesser General Public License for more details.
  90339. You should have received a copy of the GNU Lesser General Public
  90340. - License along with the GNU C Library; if not, write to the Free
  90341. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90342. - 02111-1307 USA. */
  90343. + License along with the GNU C Library; if not, see
  90344. + <http://www.gnu.org/licenses/>. */
  90345. #include <sysdeps/generic/libc-tls.c>
  90346. #include <dl-tls.h>
  90347. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/Makefile uClibc/libpthread/nptl/sysdeps/alpha/Makefile
  90348. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/Makefile 2012-05-15 09:20:09.000000000 +0200
  90349. +++ uClibc/libpthread/nptl/sysdeps/alpha/Makefile 2014-02-03 12:32:57.000000000 +0100
  90350. @@ -12,9 +12,8 @@
  90351. # Lesser General Public License for more details.
  90352. #
  90353. # You should have received a copy of the GNU Lesser General Public
  90354. -# License along with the GNU C Library; if not, write to the Free
  90355. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90356. -# 02111-1307 USA.
  90357. +# License along with the GNU C Library; see the file COPYING.LIB. If
  90358. +# not, see <http://www.gnu.org/licenses/>.
  90359. ifeq ($(subdir),csu)
  90360. gen-as-const-headers += tcb-offsets.sym
  90361. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthreaddef.h uClibc/libpthread/nptl/sysdeps/alpha/pthreaddef.h
  90362. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  90363. +++ uClibc/libpthread/nptl/sysdeps/alpha/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90364. @@ -12,9 +12,8 @@
  90365. Lesser General Public License for more details.
  90366. You should have received a copy of the GNU Lesser General Public
  90367. - License along with the GNU C Library; if not, write to the Free
  90368. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90369. - 02111-1307 USA. */
  90370. + License along with the GNU C Library; if not, see
  90371. + <http://www.gnu.org/licenses/>. */
  90372. /* Default stack size. */
  90373. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  90374. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S uClibc/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S
  90375. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  90376. +++ uClibc/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  90377. @@ -13,9 +13,8 @@
  90378. Lesser General Public License for more details.
  90379. You should have received a copy of the GNU Lesser General Public
  90380. - License along with the GNU C Library; if not, write to the Free
  90381. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90382. - 02111-1307 USA. */
  90383. + License along with the GNU C Library; if not, see
  90384. + <http://www.gnu.org/licenses/>. */
  90385. .text
  90386. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S
  90387. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90388. +++ uClibc/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90389. @@ -13,9 +13,8 @@
  90390. Lesser General Public License for more details.
  90391. You should have received a copy of the GNU Lesser General Public
  90392. - License along with the GNU C Library; if not, write to the Free
  90393. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90394. - 02111-1307 USA. */
  90395. + License along with the GNU C Library; if not, see
  90396. + <http://www.gnu.org/licenses/>. */
  90397. #define _ERRNO_H 1
  90398. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/tls.h uClibc/libpthread/nptl/sysdeps/alpha/tls.h
  90399. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/tls.h 2012-05-15 09:20:09.000000000 +0200
  90400. +++ uClibc/libpthread/nptl/sysdeps/alpha/tls.h 2014-02-03 12:32:57.000000000 +0100
  90401. @@ -13,9 +13,8 @@
  90402. Lesser General Public License for more details.
  90403. You should have received a copy of the GNU Lesser General Public
  90404. - License along with the GNU C Library; if not, write to the Free
  90405. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90406. - 02111-1307 USA. */
  90407. + License along with the GNU C Library; if not, see
  90408. + <http://www.gnu.org/licenses/>. */
  90409. #ifndef _TLS_H
  90410. #define _TLS_H 1
  90411. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/dl-tls.h uClibc/libpthread/nptl/sysdeps/arm/dl-tls.h
  90412. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  90413. +++ uClibc/libpthread/nptl/sysdeps/arm/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90414. @@ -13,9 +13,8 @@
  90415. Lesser General Public License for more details.
  90416. You should have received a copy of the GNU Lesser General Public
  90417. - License along with the GNU C Library; if not, write to the Free
  90418. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90419. - 02111-1307 USA. */
  90420. + License along with the GNU C Library; if not, see
  90421. + <http://www.gnu.org/licenses/>. */
  90422. /* Type used for the representation of TLS information in the GOT. */
  90423. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h
  90424. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  90425. +++ uClibc/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90426. @@ -12,9 +12,8 @@
  90427. Lesser General Public License for more details.
  90428. You should have received a copy of the GNU Lesser General Public
  90429. - License along with the GNU C Library; if not, write to the Free
  90430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90431. - 02111-1307 USA. */
  90432. + License along with the GNU C Library; if not, see
  90433. + <http://www.gnu.org/licenses/>. */
  90434. #include <setjmp.h>
  90435. #include <stdint.h>
  90436. @@ -31,6 +30,3 @@
  90437. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90438. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[__JMP_BUF_SP] - (_adj))
  90439. -
  90440. -/* We use the normal longjmp for unwinding. */
  90441. -#define __libc_unwind_longjmp(buf, val) longjmp (buf, val)
  90442. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/libc-tls.c uClibc/libpthread/nptl/sysdeps/arm/libc-tls.c
  90443. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  90444. +++ uClibc/libpthread/nptl/sysdeps/arm/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90445. @@ -13,9 +13,8 @@
  90446. Lesser General Public License for more details.
  90447. You should have received a copy of the GNU Lesser General Public
  90448. - License along with the GNU C Library; if not, write to the Free
  90449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90450. - 02111-1307 USA. */
  90451. + License along with the GNU C Library; if not, see
  90452. + <http://www.gnu.org/licenses/>. */
  90453. #include <sysdeps/generic/libc-tls.c>
  90454. #include <dl-tls.h>
  90455. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthreaddef.h uClibc/libpthread/nptl/sysdeps/arm/pthreaddef.h
  90456. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  90457. +++ uClibc/libpthread/nptl/sysdeps/arm/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90458. @@ -12,9 +12,8 @@
  90459. Lesser General Public License for more details.
  90460. You should have received a copy of the GNU Lesser General Public
  90461. - License along with the GNU C Library; if not, write to the Free
  90462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90463. - 02111-1307 USA. */
  90464. + License along with the GNU C Library; if not, see
  90465. + <http://www.gnu.org/licenses/>. */
  90466. /* Default stack size. */
  90467. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  90468. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S uClibc/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S
  90469. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  90470. +++ uClibc/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  90471. @@ -12,9 +12,8 @@
  90472. Lesser General Public License for more details.
  90473. You should have received a copy of the GNU Lesser General Public
  90474. - License along with the GNU C Library; if not, write to the Free
  90475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90476. - 02111-1307 USA. */
  90477. + License along with the GNU C Library; if not, see
  90478. + <http://www.gnu.org/licenses/>. */
  90479. #include <sysdep.h>
  90480. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S
  90481. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90482. +++ uClibc/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90483. @@ -12,9 +12,8 @@
  90484. Lesser General Public License for more details.
  90485. You should have received a copy of the GNU Lesser General Public
  90486. - License along with the GNU C Library; if not, write to the Free
  90487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90488. - 02111-1307 USA. */
  90489. + License along with the GNU C Library; if not, see
  90490. + <http://www.gnu.org/licenses/>. */
  90491. #define _ERRNO_H 1
  90492. #include <bits/errno.h>
  90493. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/tls.h uClibc/libpthread/nptl/sysdeps/arm/tls.h
  90494. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/tls.h 2012-05-15 09:20:09.000000000 +0200
  90495. +++ uClibc/libpthread/nptl/sysdeps/arm/tls.h 2014-02-03 12:32:57.000000000 +0100
  90496. @@ -13,9 +13,8 @@
  90497. Lesser General Public License for more details.
  90498. You should have received a copy of the GNU Lesser General Public
  90499. - License along with the GNU C Library; if not, write to the Free
  90500. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90501. - 02111-1307 USA. */
  90502. + License along with the GNU C Library; if not, see
  90503. + <http://www.gnu.org/licenses/>. */
  90504. #ifndef _TLS_H
  90505. #define _TLS_H 1
  90506. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/dl-tls.c uClibc/libpthread/nptl/sysdeps/generic/dl-tls.c
  90507. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/dl-tls.c 2012-05-15 09:20:09.000000000 +0200
  90508. +++ uClibc/libpthread/nptl/sysdeps/generic/dl-tls.c 2014-02-03 12:32:57.000000000 +0100
  90509. @@ -13,9 +13,8 @@
  90510. Lesser General Public License for more details.
  90511. You should have received a copy of the GNU Lesser General Public
  90512. - License along with the GNU C Library; if not, write to the Free
  90513. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90514. - 02111-1307 USA. */
  90515. + License along with the GNU C Library; if not, see
  90516. + <http://www.gnu.org/licenses/>. */
  90517. #if defined SHARED || defined NOT_IN_libc
  90518. # error in buildsystem: This file is for libc.a
  90519. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/libc-tls.c uClibc/libpthread/nptl/sysdeps/generic/libc-tls.c
  90520. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  90521. +++ uClibc/libpthread/nptl/sysdeps/generic/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90522. @@ -13,9 +13,8 @@
  90523. Lesser General Public License for more details.
  90524. You should have received a copy of the GNU Lesser General Public
  90525. - License along with the GNU C Library; if not, write to the Free
  90526. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90527. - 02111-1307 USA. */
  90528. + License along with the GNU C Library; if not, see
  90529. + <http://www.gnu.org/licenses/>. */
  90530. #include <errno.h>
  90531. #include <ldsodefs.h>
  90532. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/lowlevellock.h uClibc/libpthread/nptl/sysdeps/generic/lowlevellock.h
  90533. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  90534. +++ uClibc/libpthread/nptl/sysdeps/generic/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  90535. @@ -14,9 +14,8 @@
  90536. Lesser General Public License for more details.
  90537. You should have received a copy of the GNU Lesser General Public
  90538. - License along with the GNU C Library; if not, write to the Free
  90539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90540. - 02111-1307 USA. */
  90541. + License along with the GNU C Library; if not, see
  90542. + <http://www.gnu.org/licenses/>. */
  90543. #include <atomic.h>
  90544. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/dl-tls.h uClibc/libpthread/nptl/sysdeps/i386/dl-tls.h
  90545. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  90546. +++ uClibc/libpthread/nptl/sysdeps/i386/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90547. @@ -13,9 +13,8 @@
  90548. Lesser General Public License for more details.
  90549. You should have received a copy of the GNU Lesser General Public
  90550. - License along with the GNU C Library; if not, write to the Free
  90551. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90552. - 02111-1307 USA. */
  90553. + License along with the GNU C Library; if not, see
  90554. + <http://www.gnu.org/licenses/>. */
  90555. /* Type used for the representation of TLS information in the GOT. */
  90556. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S
  90557. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90558. +++ uClibc/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90559. @@ -13,9 +13,8 @@
  90560. Lesser General Public License for more details.
  90561. You should have received a copy of the GNU Lesser General Public
  90562. - License along with the GNU C Library; if not, write to the Free
  90563. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90564. - 02111-1307 USA. */
  90565. + License along with the GNU C Library; if not, see
  90566. + <http://www.gnu.org/licenses/>. */
  90567. #include <pthread-errnos.h>
  90568. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S
  90569. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90570. +++ uClibc/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90571. @@ -13,8 +13,7 @@
  90572. Lesser General Public License for more details.
  90573. You should have received a copy of the GNU Lesser General Public
  90574. - License along with the GNU C Library; if not, write to the Free
  90575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90576. - 02111-1307 USA. */
  90577. + License along with the GNU C Library; if not, see
  90578. + <http://www.gnu.org/licenses/>. */
  90579. #include "../i486/pthread_spin_trylock.S"
  90580. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/Makefile uClibc/libpthread/nptl/sysdeps/i386/i686/Makefile
  90581. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/Makefile 2012-05-15 09:20:09.000000000 +0200
  90582. +++ uClibc/libpthread/nptl/sysdeps/i386/i686/Makefile 2014-02-03 12:32:57.000000000 +0100
  90583. @@ -13,9 +13,8 @@
  90584. # Lesser General Public License for more details.
  90585. # You should have received a copy of the GNU Lesser General Public
  90586. -# License along with the GNU C Library; if not, write to the Free
  90587. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90588. -# 02111-1307 USA.
  90589. +# License along with the GNU C Library; see the file COPYING.LIB. If
  90590. +# not, see <http://www.gnu.org/licenses/>.
  90591. ifeq ($(subdir),nptl)
  90592. # It turns out that stack coloring is in general not good on P4s. Some
  90593. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S
  90594. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90595. +++ uClibc/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90596. @@ -13,9 +13,8 @@
  90597. Lesser General Public License for more details.
  90598. You should have received a copy of the GNU Lesser General Public
  90599. - License along with the GNU C Library; if not, write to the Free
  90600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90601. - 02111-1307 USA. */
  90602. + License along with the GNU C Library; if not, see
  90603. + <http://www.gnu.org/licenses/>. */
  90604. #define HAVE_CMOV 1
  90605. #include "../i486/pthread_spin_trylock.S"
  90606. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/tls.h uClibc/libpthread/nptl/sysdeps/i386/i686/tls.h
  90607. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/tls.h 2012-05-15 09:20:09.000000000 +0200
  90608. +++ uClibc/libpthread/nptl/sysdeps/i386/i686/tls.h 2014-02-03 12:32:57.000000000 +0100
  90609. @@ -13,9 +13,8 @@
  90610. Lesser General Public License for more details.
  90611. You should have received a copy of the GNU Lesser General Public
  90612. - License along with the GNU C Library; if not, write to the Free
  90613. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90614. - 02111-1307 USA. */
  90615. + License along with the GNU C Library; if not, see
  90616. + <http://www.gnu.org/licenses/>. */
  90617. #ifndef _TLS_H
  90618. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h
  90619. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  90620. +++ uClibc/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90621. @@ -13,9 +13,8 @@
  90622. Lesser General Public License for more details.
  90623. You should have received a copy of the GNU Lesser General Public
  90624. - License along with the GNU C Library; if not, write to the Free
  90625. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90626. - 02111-1307 USA. */
  90627. + License along with the GNU C Library; if not, see
  90628. + <http://www.gnu.org/licenses/>. */
  90629. #include <setjmp.h>
  90630. #include <stdint.h>
  90631. @@ -26,7 +25,3 @@
  90632. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90633. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  90634. -
  90635. -/* We use the normal lobngjmp for unwinding. */
  90636. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  90637. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  90638. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/Makefile uClibc/libpthread/nptl/sysdeps/i386/Makefile
  90639. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/Makefile 2012-05-15 09:20:09.000000000 +0200
  90640. +++ uClibc/libpthread/nptl/sysdeps/i386/Makefile 2014-02-03 12:32:57.000000000 +0100
  90641. @@ -12,9 +12,8 @@
  90642. # Lesser General Public License for more details.
  90643. # You should have received a copy of the GNU Lesser General Public
  90644. -# License along with the GNU C Library; if not, write to the Free
  90645. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90646. -# 02111-1307 USA.
  90647. +# License along with the GNU C Library; see the file COPYING.LIB. If
  90648. +# not, see <http://www.gnu.org/licenses/>.
  90649. ifeq ($(subdir),csu)
  90650. gen-as-const-headers += tcb-offsets.sym
  90651. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthreaddef.h uClibc/libpthread/nptl/sysdeps/i386/pthreaddef.h
  90652. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  90653. +++ uClibc/libpthread/nptl/sysdeps/i386/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90654. @@ -13,9 +13,8 @@
  90655. Lesser General Public License for more details.
  90656. You should have received a copy of the GNU Lesser General Public
  90657. - License along with the GNU C Library; if not, write to the Free
  90658. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90659. - 02111-1307 USA. */
  90660. + License along with the GNU C Library; if not, see
  90661. + <http://www.gnu.org/licenses/>. */
  90662. /* Default stack size. */
  90663. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  90664. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_init.c uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_init.c
  90665. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  90666. +++ uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  90667. @@ -13,8 +13,7 @@
  90668. Lesser General Public License for more details.
  90669. You should have received a copy of the GNU Lesser General Public
  90670. - License along with the GNU C Library; if not, write to the Free
  90671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90672. - 02111-1307 USA. */
  90673. + License along with the GNU C Library; if not, see
  90674. + <http://www.gnu.org/licenses/>. */
  90675. /* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  90676. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c
  90677. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  90678. +++ uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  90679. @@ -13,9 +13,8 @@
  90680. Lesser General Public License for more details.
  90681. You should have received a copy of the GNU Lesser General Public
  90682. - License along with the GNU C Library; if not, write to the Free
  90683. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90684. - 02111-1307 USA. */
  90685. + License along with the GNU C Library; if not, see
  90686. + <http://www.gnu.org/licenses/>. */
  90687. #include "pthreadP.h"
  90688. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S
  90689. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  90690. +++ uClibc/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  90691. @@ -13,9 +13,8 @@
  90692. Lesser General Public License for more details.
  90693. You should have received a copy of the GNU Lesser General Public
  90694. - License along with the GNU C Library; if not, write to the Free
  90695. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90696. - 02111-1307 USA. */
  90697. + License along with the GNU C Library; if not, see
  90698. + <http://www.gnu.org/licenses/>. */
  90699. .globl pthread_spin_unlock
  90700. .type pthread_spin_unlock,@function
  90701. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/tls.h uClibc/libpthread/nptl/sysdeps/i386/tls.h
  90702. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  90703. +++ uClibc/libpthread/nptl/sysdeps/i386/tls.h 2014-02-03 12:32:57.000000000 +0100
  90704. @@ -13,9 +13,8 @@
  90705. Lesser General Public License for more details.
  90706. You should have received a copy of the GNU Lesser General Public
  90707. - License along with the GNU C Library; if not, write to the Free
  90708. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90709. - 02111-1307 USA. */
  90710. + License along with the GNU C Library; if not, see
  90711. + <http://www.gnu.org/licenses/>. */
  90712. #ifndef _TLS_H
  90713. #define _TLS_H 1
  90714. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/Makefile.commonarch uClibc/libpthread/nptl/sysdeps/Makefile.commonarch
  90715. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  90716. +++ uClibc/libpthread/nptl/sysdeps/Makefile.commonarch 2014-02-03 12:32:57.000000000 +0100
  90717. @@ -47,9 +47,8 @@
  90718. $(libpthread_arch_OUT)/gen_tcb-offsets.s: $(libpthread_arch_OUT)/gen_tcb-offsets.c | headers
  90719. $(compile.c)
  90720. libpthread-generated-y += $(libpthread_arch_OUT)/gen_tcb-offsets.s
  90721. -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"
  90722. $(libpthread_arch_OUT)/tcb-offsets.h: $(libpthread_arch_OUT)/gen_tcb-offsets.s
  90723. - $(do_sed) $(PTHREAD_TCB_OFFSET_MANGLE) $< > $@
  90724. + $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
  90725. @if test ! -s $@ ; then rm -f $@ ; false ; fi
  90726. pregen-headers-$(UCLIBC_HAS_THREADS_NATIVE) += $(libpthread_arch_OUT)/tcb-offsets.h
  90727. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/dl-tls.h uClibc/libpthread/nptl/sysdeps/metag/dl-tls.h
  90728. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/dl-tls.h 1970-01-01 01:00:00.000000000 +0100
  90729. +++ uClibc/libpthread/nptl/sysdeps/metag/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90730. @@ -0,0 +1,29 @@
  90731. +/* Thread-local storage handling in the ELF dynamic linker. Meta version.
  90732. + Copyright (C) 2002 Free Software Foundation, Inc.
  90733. + This file is part of the GNU C Library.
  90734. +
  90735. + The GNU C Library is free software; you can redistribute it and/or
  90736. + modify it under the terms of the GNU Lesser General Public
  90737. + License as published by the Free Software Foundation; either
  90738. + version 2.1 of the License, or (at your option) any later version.
  90739. +
  90740. + The GNU C Library is distributed in the hope that it will be useful,
  90741. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90742. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90743. + Lesser General Public License for more details.
  90744. +
  90745. + You should have received a copy of the GNU Lesser General Public
  90746. + License along with the GNU C Library; if not, write to the Free
  90747. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90748. + 02111-1307 USA. */
  90749. +
  90750. +
  90751. +/* Type used for the representation of TLS information in the GOT. */
  90752. +typedef struct
  90753. +{
  90754. + unsigned long int ti_module;
  90755. + unsigned long int ti_offset;
  90756. +} tls_index;
  90757. +
  90758. +
  90759. +extern void *__tls_get_addr (tls_index *ti);
  90760. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h
  90761. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  90762. +++ uClibc/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90763. @@ -0,0 +1,36 @@
  90764. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
  90765. + This file is part of the GNU C Library.
  90766. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
  90767. +
  90768. + The GNU C Library is free software; you can redistribute it and/or
  90769. + modify it under the terms of the GNU Lesser General Public
  90770. + License as published by the Free Software Foundation; either
  90771. + version 2.1 of the License, or (at your option) any later version.
  90772. +
  90773. + The GNU C Library is distributed in the hope that it will be useful,
  90774. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90775. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90776. + Lesser General Public License for more details.
  90777. +
  90778. + You should have received a copy of the GNU Lesser General Public
  90779. + License along with the GNU C Library; if not, write to the Free
  90780. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90781. + 02111-1307 USA. */
  90782. +
  90783. +#include <setjmp.h>
  90784. +#include <stdint.h>
  90785. +#include <unwind.h>
  90786. +
  90787. +/* Test if longjmp to JMPBUF would unwind the frame
  90788. + containing a local variable at ADDRESS. */
  90789. +#undef _JMPBUF_UNWINDS
  90790. +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
  90791. + ((void *) (address) > (void *) demangle (jmpbuf[JB_SP]))
  90792. +
  90793. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  90794. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  90795. +
  90796. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90797. + ((uintptr_t) (_address) - (_adj) > (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  90798. +
  90799. +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  90800. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/libc-tls.c uClibc/libpthread/nptl/sysdeps/metag/libc-tls.c
  90801. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/libc-tls.c 1970-01-01 01:00:00.000000000 +0100
  90802. +++ uClibc/libpthread/nptl/sysdeps/metag/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90803. @@ -0,0 +1,33 @@
  90804. +/*
  90805. + * Thread-local storage handling in statically linked binaries. Meta version.
  90806. + * Copyright (C) 2009 Free Software Foundation, Inc.
  90807. + *
  90808. + * Based on GNU C Library (file: libc/sysdeps/sh/libc-tls.c)
  90809. + *
  90810. + * Copyright (C) 2010 STMicroelectronics Ltd.
  90811. + * Copyright (C) 2013 Imagination Technologies Ltd.
  90812. + *
  90813. + * Author: Filippo Arcidiacono <filippo.arcidiacono@st.com>
  90814. + *
  90815. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90816. + *
  90817. + */
  90818. +
  90819. +#include <sysdeps/generic/libc-tls.c>
  90820. +#include <dl-tls.h>
  90821. +
  90822. +#if defined (USE_TLS) && (USE_TLS)
  90823. +
  90824. +/* On Meta, linker optimizations are not required, so __tls_get_addr
  90825. + can be called even in statically linked binaries. In this case module
  90826. + must be always 1 and PT_TLS segment exist in the binary, otherwise it
  90827. + would not link. */
  90828. +
  90829. +void *
  90830. +__tls_get_addr (tls_index *ti)
  90831. +{
  90832. + dtv_t *dtv = THREAD_DTV ();
  90833. + return (char *) dtv[1].pointer.val + ti->ti_offset;
  90834. +}
  90835. +
  90836. +#endif
  90837. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/Makefile.arch uClibc/libpthread/nptl/sysdeps/metag/Makefile.arch
  90838. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  90839. +++ uClibc/libpthread/nptl/sysdeps/metag/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  90840. @@ -0,0 +1,17 @@
  90841. +# Makefile for uClibc NPTL
  90842. +#
  90843. +# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
  90844. +#
  90845. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90846. +#
  90847. +
  90848. +CFLAGS-pthread_spin_init.c = -DNOT_IN_libc -DIS_IN_libpthread
  90849. +ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90850. +ASFLAGS-pthread_spin_unlock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90851. +ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90852. +
  90853. +ASFLAGS-pthread_spin_lock.c += -D_GNU_SOURCE
  90854. +
  90855. +CFLAGS-metag = $(SSP_ALL_CFLAGS)
  90856. +
  90857. +libc_arch_a_CSRC := libc-tls.c
  90858. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/metag_load_tp.S uClibc/libpthread/nptl/sysdeps/metag/metag_load_tp.S
  90859. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  90860. +++ uClibc/libpthread/nptl/sysdeps/metag/metag_load_tp.S 2014-02-03 12:32:57.000000000 +0100
  90861. @@ -0,0 +1,7 @@
  90862. +/*
  90863. + * Copyright (C) 2013 Imagination Technologies Ltd.
  90864. + *
  90865. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90866. + */
  90867. +
  90868. +#include <../../../../ldso/ldso/metag/metag_load_tp.S>
  90869. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthreaddef.h uClibc/libpthread/nptl/sysdeps/metag/pthreaddef.h
  90870. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthreaddef.h 1970-01-01 01:00:00.000000000 +0100
  90871. +++ uClibc/libpthread/nptl/sysdeps/metag/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90872. @@ -0,0 +1,40 @@
  90873. +/* Copyright (C) 2003 Free Software Foundation, Inc.
  90874. + This file is part of the GNU C Library.
  90875. +
  90876. + The GNU C Library is free software; you can redistribute it and/or
  90877. + modify it under the terms of the GNU Lesser General Public
  90878. + License as published by the Free Software Foundation; either
  90879. + version 2.1 of the License, or (at your option) any later version.
  90880. +
  90881. + The GNU C Library is distributed in the hope that it will be useful,
  90882. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90883. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90884. + Lesser General Public License for more details.
  90885. +
  90886. + You should have received a copy of the GNU Lesser General Public
  90887. + License along with the GNU C Library; if not, write to the Free
  90888. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90889. + 02111-1307 USA. */
  90890. +
  90891. +#include <sysdep.h>
  90892. +
  90893. +/* Default stack size. */
  90894. +#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  90895. +
  90896. +/* Required stack pointer alignment at beginning. */
  90897. +#define STACK_ALIGN 8
  90898. +
  90899. +/* Minimal stack size after allocating thread descriptor and guard size. */
  90900. +#define MINIMAL_REST_STACK 2048
  90901. +
  90902. +/* Alignment requirement for TCB. */
  90903. +#define TCB_ALIGNMENT 8
  90904. +
  90905. +
  90906. +/* Location of current stack frame. */
  90907. +#define CURRENT_STACK_FRAME __builtin_frame_address (0)
  90908. +
  90909. +
  90910. +/* XXX Until we have a better place keep the definitions here. */
  90911. +#define __exit_thread_inline(val) \
  90912. + INLINE_SYSCALL (exit, 1, (val))
  90913. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_init.c uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_init.c
  90914. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_init.c 1970-01-01 01:00:00.000000000 +0100
  90915. +++ uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  90916. @@ -0,0 +1,20 @@
  90917. +/* Copyright (C) 2002 Free Software Foundation, Inc.
  90918. + This file is part of the GNU C Library.
  90919. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
  90920. +
  90921. + The GNU C Library is free software; you can redistribute it and/or
  90922. + modify it under the terms of the GNU Lesser General Public
  90923. + License as published by the Free Software Foundation; either
  90924. + version 2.1 of the License, or (at your option) any later version.
  90925. +
  90926. + The GNU C Library is distributed in the hope that it will be useful,
  90927. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90928. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90929. + Lesser General Public License for more details.
  90930. +
  90931. + You should have received a copy of the GNU Lesser General Public
  90932. + License along with the GNU C Library; if not, write to the Free
  90933. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90934. + 02111-1307 USA. */
  90935. +
  90936. +/* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  90937. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S
  90938. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S 1970-01-01 01:00:00.000000000 +0100
  90939. +++ uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  90940. @@ -0,0 +1,20 @@
  90941. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90942. +
  90943. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90944. +
  90945. + .text
  90946. + .global _pthread_spin_lock
  90947. + .type _pthread_spin_lock,function
  90948. +_pthread_spin_lock:
  90949. +1: LNKGETD D0Ar2, [D1Ar1]
  90950. + CMP D0Ar2, #0
  90951. + ADD D0Ar2, D0Ar2, #1
  90952. + LNKSETDEQ [D1Ar1], D0Ar2
  90953. + BNE 1b
  90954. + DEFR D0Ar2, TXSTAT
  90955. + ANDT D0Ar2, D0Ar2, #HI(0x3f000000)
  90956. + CMPT D0Ar2, #HI(0x02000000)
  90957. + BNZ 1b
  90958. + MOV D0Re0, #0
  90959. + MOV PC, D1RtP
  90960. + .size _pthread_spin_lock,.-_pthread_spin_lock
  90961. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S
  90962. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S 1970-01-01 01:00:00.000000000 +0100
  90963. +++ uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90964. @@ -0,0 +1,24 @@
  90965. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90966. +
  90967. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90968. +
  90969. +#include <pthread-errnos.h>
  90970. +
  90971. + .text
  90972. + .global _pthread_spin_trylock
  90973. + .type _pthread_spin_trylock,function
  90974. +_pthread_spin_trylock:
  90975. +1: MOVT D0Re0, #HI(#EBUSY)
  90976. + ADD D0Re0, D0Re0, #LO(#EBUSY)
  90977. + LNKGETD D0Ar2, [D1Ar1]
  90978. + CMP D0Ar2, #0
  90979. + ADD D0Ar2, D0Ar2, #1
  90980. + LNKSETDEQ [D1Ar1], D0Ar2
  90981. + BNE 2f
  90982. + DEFR D0Ar2, TXSTAT
  90983. + ANDT D0Ar2, D0Ar2, #HI(0x3f000000)
  90984. + CMPT D0Ar2, #HI(0x02000000)
  90985. + BNZ 1b
  90986. + MOV D0Re0, #0
  90987. +2: MOV PC, D1RtP
  90988. + .size _pthread_spin_trylock,.-_pthread_spin_trylock
  90989. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S
  90990. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S 1970-01-01 01:00:00.000000000 +0100
  90991. +++ uClibc/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  90992. @@ -0,0 +1,16 @@
  90993. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90994. +
  90995. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90996. +
  90997. + .text
  90998. + .global _pthread_spin_unlock
  90999. + .type _pthread_spin_unlock,function
  91000. +_pthread_spin_unlock:
  91001. + MOV D0Re0, #0
  91002. + SETD [D1Ar1], D0Re0
  91003. + MOV PC, D1RtP
  91004. + .size _pthread_spin_unlock,.-_pthread_spin_unlock
  91005. +
  91006. + /* The implementation of pthread_spin_init is identical. */
  91007. + .global _pthread_spin_init
  91008. +_pthread_spin_init = _pthread_spin_unlock
  91009. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tcb-offsets.sym uClibc/libpthread/nptl/sysdeps/metag/tcb-offsets.sym
  91010. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tcb-offsets.sym 1970-01-01 01:00:00.000000000 +0100
  91011. +++ uClibc/libpthread/nptl/sysdeps/metag/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  91012. @@ -0,0 +1,15 @@
  91013. +#include <sysdep.h>
  91014. +#include <tls.h>
  91015. +
  91016. +RESULT offsetof (struct pthread, result)
  91017. +TID offsetof (struct pthread, tid)
  91018. +PID offsetof (struct pthread, pid)
  91019. +CANCELHANDLING offsetof (struct pthread, cancelhandling)
  91020. +CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf)
  91021. +MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads)
  91022. +TLS_PRE_TCB_SIZE sizeof (struct pthread)
  91023. +MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
  91024. +POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
  91025. +#ifndef __ASSUME_PRIVATE_FUTEX
  91026. +PRIVATE_FUTEX offsetof (struct pthread, header.private_futex)
  91027. +#endif
  91028. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tls.h uClibc/libpthread/nptl/sysdeps/metag/tls.h
  91029. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tls.h 1970-01-01 01:00:00.000000000 +0100
  91030. +++ uClibc/libpthread/nptl/sysdeps/metag/tls.h 2014-02-03 12:32:57.000000000 +0100
  91031. @@ -0,0 +1,163 @@
  91032. +/* Definition for thread-local data handling. NPTL/Meta version.
  91033. + Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
  91034. + This file is part of the GNU C Library.
  91035. +
  91036. + The GNU C Library is free software; you can redistribute it and/or
  91037. + modify it under the terms of the GNU Lesser General Public
  91038. + License as published by the Free Software Foundation; either
  91039. + version 2.1 of the License, or (at your option) any later version.
  91040. +
  91041. + The GNU C Library is distributed in the hope that it will be useful,
  91042. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  91043. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  91044. + Lesser General Public License for more details.
  91045. +
  91046. + You should have received a copy of the GNU Lesser General Public
  91047. + License along with the GNU C Library; if not, write to the Free
  91048. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91049. + 02111-1307 USA. */
  91050. +
  91051. +#ifndef _TLS_H
  91052. +#define _TLS_H
  91053. +
  91054. +#ifndef __ASSEMBLER__
  91055. +# include <stdbool.h>
  91056. +# include <stddef.h>
  91057. +# include <stdint.h>
  91058. +# include <stdlib.h>
  91059. +# include <list.h>
  91060. +# include <sysdep.h>
  91061. +# include <bits/kernel-features.h>
  91062. +
  91063. +/* Type for the dtv. */
  91064. +typedef union dtv
  91065. +{
  91066. + size_t counter;
  91067. + struct
  91068. + {
  91069. + void *val;
  91070. + bool is_static;
  91071. + } pointer;
  91072. +} dtv_t;
  91073. +
  91074. +typedef struct
  91075. +{
  91076. + dtv_t *dtv;
  91077. + uintptr_t pointer_guard;
  91078. +} tcbhead_t;
  91079. +
  91080. +# define TLS_MULTIPLE_THREADS_IN_TCB 1
  91081. +
  91082. +#else /* __ASSEMBLER__ */
  91083. +# include <tcb-offsets.h>
  91084. +#endif /* __ASSEMBLER__ */
  91085. +
  91086. +
  91087. +/* We require TLS support in the tools. */
  91088. +#define HAVE_TLS_SUPPORT
  91089. +#define HAVE___THREAD 1
  91090. +#define HAVE_TLS_MODEL_ATTRIBUTE 1
  91091. +/* Signal that TLS support is available. */
  91092. +# define USE_TLS 1
  91093. +
  91094. +#ifndef __ASSEMBLER__
  91095. +
  91096. +/* Get system call information. */
  91097. +# include <sysdep.h>
  91098. +
  91099. +/* This is the size of the initial TCB. */
  91100. +# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
  91101. +
  91102. +/* Alignment requirements for the initial TCB. */
  91103. +# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
  91104. +
  91105. +/* This is the size of the TCB. */
  91106. +# define TLS_TCB_SIZE sizeof (tcbhead_t)
  91107. +
  91108. +/* This is the size we need before TCB. */
  91109. +# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
  91110. +
  91111. +/* Alignment requirements for the TCB. */
  91112. +# define TLS_TCB_ALIGN __alignof__ (struct pthread)
  91113. +
  91114. +/* The TLS blocks start right after the TCB. */
  91115. +# define TLS_DTV_AT_TP 1
  91116. +
  91117. +/* Get the thread descriptor definition. */
  91118. +# include <descr.h>
  91119. +
  91120. +/* Install the dtv pointer. The pointer passed is to the element with
  91121. + index -1 which contain the length. */
  91122. +# define INSTALL_DTV(tcbp, dtvp) \
  91123. + ((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1
  91124. +
  91125. +/* Install new dtv for current thread. */
  91126. +# define INSTALL_NEW_DTV(dtv) \
  91127. + (((tcbhead_t *)__builtin_thread_pointer ())->dtv = (dtv))
  91128. +
  91129. +/* Return dtv of given thread descriptor. */
  91130. +# define GET_DTV(tcbp) \
  91131. + (((tcbhead_t *) (tcbp))->dtv)
  91132. +
  91133. +/* Code to initially initialize the thread pointer. This might need
  91134. + special attention since 'errno' is not yet available and if the
  91135. + operation can cause a failure 'errno' must not be touched. */
  91136. +# define TLS_INIT_TP(tcbp, secondcall) \
  91137. + ({ INTERNAL_SYSCALL_DECL (err); \
  91138. + long result_var; \
  91139. + result_var = INTERNAL_SYSCALL (metag_set_tls, err, 1, (tcbp)); \
  91140. + INTERNAL_SYSCALL_ERROR_P (result_var, err) \
  91141. + ? "unknown error" : NULL; })
  91142. +
  91143. +/* Return the address of the dtv for the current thread. */
  91144. +# define THREAD_DTV() \
  91145. + (((tcbhead_t *)__builtin_thread_pointer ())->dtv)
  91146. +
  91147. +/* Return the thread descriptor for the current thread.
  91148. + The contained asm must *not* be marked volatile since otherwise
  91149. + assignments like
  91150. + struct pthread *self = thread_self();
  91151. + do not get optimized away. */
  91152. +# define THREAD_SELF \
  91153. + ((struct pthread *)__builtin_thread_pointer () - 1)
  91154. +
  91155. +/* Magic for libthread_db to know how to do THREAD_SELF. */
  91156. +# define DB_THREAD_SELF \
  91157. + CONST_THREAD_AREA (32, sizeof (struct pthread))
  91158. +
  91159. +/* Access to data in the thread descriptor is easy. */
  91160. +#define THREAD_GETMEM(descr, member) \
  91161. + descr->member
  91162. +#define THREAD_GETMEM_NC(descr, member, idx) \
  91163. + descr->member[idx]
  91164. +#define THREAD_SETMEM(descr, member, value) \
  91165. + descr->member = (value)
  91166. +#define THREAD_SETMEM_NC(descr, member, idx, value) \
  91167. + descr->member[idx] = (value)
  91168. +
  91169. +/* Get and set the global scope generation counter in struct pthread. */
  91170. +#define THREAD_GSCOPE_FLAG_UNUSED 0
  91171. +#define THREAD_GSCOPE_FLAG_USED 1
  91172. +#define THREAD_GSCOPE_FLAG_WAIT 2
  91173. +#define THREAD_GSCOPE_RESET_FLAG() \
  91174. + do \
  91175. + { int __res \
  91176. + = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
  91177. + THREAD_GSCOPE_FLAG_UNUSED); \
  91178. + if (__res == THREAD_GSCOPE_FLAG_WAIT) \
  91179. + lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
  91180. + } \
  91181. + while (0)
  91182. +#define THREAD_GSCOPE_SET_FLAG() \
  91183. + do \
  91184. + { \
  91185. + THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
  91186. + atomic_write_barrier (); \
  91187. + } \
  91188. + while (0)
  91189. +#define THREAD_GSCOPE_WAIT() \
  91190. + GL(dl_wait_lookup_done) ()
  91191. +
  91192. +#endif /* __ASSEMBLER__ */
  91193. +
  91194. +#endif /* tls.h */
  91195. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/dl-tls.h uClibc/libpthread/nptl/sysdeps/mips/dl-tls.h
  91196. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  91197. +++ uClibc/libpthread/nptl/sysdeps/mips/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  91198. @@ -13,9 +13,8 @@
  91199. Lesser General Public License for more details.
  91200. You should have received a copy of the GNU Lesser General Public
  91201. - License along with the GNU C Library; if not, write to the Free
  91202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91203. - 02111-1307 USA. */
  91204. + License along with the GNU C Library; if not, see
  91205. + <http://www.gnu.org/licenses/>. */
  91206. /* Type used for the representation of TLS information in the GOT. */
  91207. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h
  91208. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  91209. +++ uClibc/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  91210. @@ -12,9 +12,8 @@
  91211. Lesser General Public License for more details.
  91212. You should have received a copy of the GNU Lesser General Public
  91213. - License along with the GNU C Library; if not, write to the Free
  91214. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91215. - 02111-1307 USA. */
  91216. + License along with the GNU C Library; if not, see
  91217. + <http://www.gnu.org/licenses/>. */
  91218. #include <setjmp.h>
  91219. #include <stdint.h>
  91220. @@ -25,6 +24,3 @@
  91221. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  91222. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].__sp - (_adj))
  91223. -
  91224. -/* We use the normal longjmp for unwinding. */
  91225. -#define __libc_unwind_longjmp(buf, val) longjmp (buf, val)
  91226. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/libc-tls.c uClibc/libpthread/nptl/sysdeps/mips/libc-tls.c
  91227. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  91228. +++ uClibc/libpthread/nptl/sysdeps/mips/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  91229. @@ -13,9 +13,8 @@
  91230. Lesser General Public License for more details.
  91231. You should have received a copy of the GNU Lesser General Public
  91232. - License along with the GNU C Library; if not, write to the Free
  91233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91234. - 02111-1307 USA. */
  91235. + License along with the GNU C Library; if not, see
  91236. + <http://www.gnu.org/licenses/>. */
  91237. #include <sysdeps/generic/libc-tls.c>
  91238. #include <dl-tls.h>
  91239. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthreaddef.h uClibc/libpthread/nptl/sysdeps/mips/pthreaddef.h
  91240. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  91241. +++ uClibc/libpthread/nptl/sysdeps/mips/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  91242. @@ -12,9 +12,8 @@
  91243. Lesser General Public License for more details.
  91244. You should have received a copy of the GNU Lesser General Public
  91245. - License along with the GNU C Library; if not, write to the Free
  91246. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91247. - 02111-1307 USA. */
  91248. + License along with the GNU C Library; if not, see
  91249. + <http://www.gnu.org/licenses/>. */
  91250. /* Default stack size. */
  91251. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  91252. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S uClibc/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S
  91253. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  91254. +++ uClibc/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  91255. @@ -12,9 +12,8 @@
  91256. Lesser General Public License for more details.
  91257. You should have received a copy of the GNU Lesser General Public
  91258. - License along with the GNU C Library; if not, write to the Free
  91259. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91260. - 02111-1307 USA. */
  91261. + License along with the GNU C Library; if not, see
  91262. + <http://www.gnu.org/licenses/>. */
  91263. #include <sys/asm.h>
  91264. #include <sysdep.h>
  91265. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S
  91266. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  91267. +++ uClibc/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  91268. @@ -12,9 +12,8 @@
  91269. Lesser General Public License for more details.
  91270. You should have received a copy of the GNU Lesser General Public
  91271. - License along with the GNU C Library; if not, write to the Free
  91272. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91273. - 02111-1307 USA. */
  91274. + License along with the GNU C Library; if not, see
  91275. + <http://www.gnu.org/licenses/>. */
  91276. #include <sys/asm.h>
  91277. #include <sysdep.h>
  91278. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/regdef.h uClibc/libpthread/nptl/sysdeps/mips/regdef.h
  91279. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/regdef.h 2012-05-15 09:20:09.000000000 +0200
  91280. +++ uClibc/libpthread/nptl/sysdeps/mips/regdef.h 2014-02-03 12:32:57.000000000 +0100
  91281. @@ -13,9 +13,8 @@
  91282. Lesser General Public License for more details.
  91283. You should have received a copy of the GNU Lesser General Public
  91284. - License along with the GNU C Library; if not, write to the Free
  91285. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91286. - 02111-1307 USA. */
  91287. + License along with the GNU C Library; if not, see
  91288. + <http://www.gnu.org/licenses/>. */
  91289. #ifndef _REGDEF_H
  91290. #define _REGDEF_H
  91291. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/tls.h uClibc/libpthread/nptl/sysdeps/mips/tls.h
  91292. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/tls.h 2012-05-15 09:20:09.000000000 +0200
  91293. +++ uClibc/libpthread/nptl/sysdeps/mips/tls.h 2014-02-03 12:32:57.000000000 +0100
  91294. @@ -13,9 +13,8 @@
  91295. Lesser General Public License for more details.
  91296. You should have received a copy of the GNU Lesser General Public
  91297. - License along with the GNU C Library; if not, write to the Free
  91298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91299. - 02111-1307 USA. */
  91300. + License along with the GNU C Library; if not, see
  91301. + <http://www.gnu.org/licenses/>. */
  91302. #ifndef _TLS_H
  91303. #define _TLS_H 1
  91304. @@ -121,7 +120,7 @@
  91305. operation can cause a failure 'errno' must not be touched. */
  91306. # define TLS_INIT_TP(tcbp, secondcall) \
  91307. ({ INTERNAL_SYSCALL_DECL (err); \
  91308. - long result_var; \
  91309. + long result_var attribute_unused; \
  91310. result_var = INTERNAL_SYSCALL (set_thread_area, err, 1, \
  91311. (char *) (tcbp) + TLS_TCB_OFFSET); \
  91312. INTERNAL_SYSCALL_ERROR_P (result_var, err) \
  91313. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/dl-tls.h uClibc/libpthread/nptl/sysdeps/powerpc/dl-tls.h
  91314. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  91315. +++ uClibc/libpthread/nptl/sysdeps/powerpc/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  91316. @@ -13,9 +13,8 @@
  91317. Lesser General Public License for more details.
  91318. You should have received a copy of the GNU Lesser General Public
  91319. - License along with the GNU C Library; if not, write to the Free
  91320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91321. - 02111-1307 USA. */
  91322. + License along with the GNU C Library; if not, see
  91323. + <http://www.gnu.org/licenses/>. */
  91324. /* Type used for the representation of TLS information in the TOC. */
  91325. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h
  91326. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  91327. +++ uClibc/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  91328. @@ -13,9 +13,8 @@
  91329. Lesser General Public License for more details.
  91330. You should have received a copy of the GNU Lesser General Public
  91331. - License along with the GNU C Library; if not, write to the Free
  91332. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91333. - 02111-1307 USA. */
  91334. + License along with the GNU C Library; if not, see
  91335. + <http://www.gnu.org/licenses/>. */
  91336. #include <setjmp.h>
  91337. #include <stdint.h>
  91338. @@ -26,6 +25,3 @@
  91339. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  91340. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_GPR1] - (_adj))
  91341. -
  91342. -/* We use the normal lobngjmp for unwinding. */
  91343. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  91344. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthreaddef.h uClibc/libpthread/nptl/sysdeps/powerpc/pthreaddef.h
  91345. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  91346. +++ uClibc/libpthread/nptl/sysdeps/powerpc/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  91347. @@ -12,9 +12,8 @@
  91348. Lesser General Public License for more details.
  91349. You should have received a copy of the GNU Lesser General Public
  91350. - License along with the GNU C Library; if not, write to the Free
  91351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91352. - 02111-1307 USA. */
  91353. + License along with the GNU C Library; if not, see
  91354. + <http://www.gnu.org/licenses/>. */
  91355. /* Default stack size. */
  91356. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  91357. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c
  91358. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  91359. +++ uClibc/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  91360. @@ -13,9 +13,8 @@
  91361. Lesser General Public License for more details.
  91362. You should have received a copy of the GNU Lesser General Public
  91363. - License along with the GNU C Library; if not, write to the Free
  91364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91365. - 02111-1307 USA. */
  91366. + License along with the GNU C Library; if not, see
  91367. + <http://www.gnu.org/licenses/>. */
  91368. #include "pthreadP.h"
  91369. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c uClibc/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c
  91370. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  91371. +++ uClibc/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  91372. @@ -13,9 +13,8 @@
  91373. Lesser General Public License for more details.
  91374. You should have received a copy of the GNU Lesser General Public
  91375. - License along with the GNU C Library; if not, write to the Free
  91376. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91377. - 02111-1307 USA. */
  91378. + License along with the GNU C Library; if not, see
  91379. + <http://www.gnu.org/licenses/>. */
  91380. #include <errno.h>
  91381. #include "pthreadP.h"
  91382. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/tls.h uClibc/libpthread/nptl/sysdeps/powerpc/tls.h
  91383. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/tls.h 2012-05-15 09:20:09.000000000 +0200
  91384. +++ uClibc/libpthread/nptl/sysdeps/powerpc/tls.h 2014-02-03 12:32:57.000000000 +0100
  91385. @@ -13,9 +13,8 @@
  91386. Lesser General Public License for more details.
  91387. You should have received a copy of the GNU Lesser General Public
  91388. - License along with the GNU C Library; if not, write to the Free
  91389. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91390. - 02111-1307 USA. */
  91391. + License along with the GNU C Library; if not, see
  91392. + <http://www.gnu.org/licenses/>. */
  91393. #ifndef _TLS_H
  91394. #define _TLS_H 1
  91395. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/allocalim.h uClibc/libpthread/nptl/sysdeps/pthread/allocalim.h
  91396. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/allocalim.h 2012-05-15 09:20:09.000000000 +0200
  91397. +++ uClibc/libpthread/nptl/sysdeps/pthread/allocalim.h 2014-02-03 12:32:57.000000000 +0100
  91398. @@ -13,9 +13,8 @@
  91399. Lesser General Public License for more details.
  91400. You should have received a copy of the GNU Lesser General Public
  91401. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91402. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91403. - Boston, MA 02111-1307, USA. */
  91404. + License along with the GNU C Library; see the file COPYING.LIB. If
  91405. + not, see <http://www.gnu.org/licenses/>. */
  91406. #include <alloca.h>
  91407. #include <limits.h>
  91408. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h uClibc/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h
  91409. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  91410. +++ uClibc/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h 2014-02-03 12:32:57.000000000 +0100
  91411. @@ -13,9 +13,8 @@
  91412. Lesser General Public License for more details.
  91413. You should have received a copy of the GNU Lesser General Public
  91414. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91415. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91416. - Boston, MA 02111-1307, USA. */
  91417. + License along with the GNU C Library; see the file COPYING.LIB. If
  91418. + not, see <http://www.gnu.org/licenses/>. */
  91419. #ifndef _BITS_LIBC_LOCK_H
  91420. #define _BITS_LIBC_LOCK_H 1
  91421. @@ -475,7 +474,7 @@
  91422. library. */
  91423. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  91424. - __const pthread_mutexattr_t *__mutex_attr);
  91425. + const pthread_mutexattr_t *__mutex_attr);
  91426. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  91427. @@ -494,7 +493,7 @@
  91428. #ifdef __USE_UNIX98
  91429. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  91430. - __const pthread_rwlockattr_t *__attr);
  91431. + const pthread_rwlockattr_t *__attr);
  91432. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  91433. @@ -513,7 +512,7 @@
  91434. void (*__destr_function) (void *));
  91435. extern int __pthread_setspecific (pthread_key_t __key,
  91436. - __const void *__pointer);
  91437. + const void *__pointer);
  91438. extern void *__pthread_getspecific (pthread_key_t __key);
  91439. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h uClibc/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h
  91440. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  91441. +++ uClibc/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:57.000000000 +0100
  91442. @@ -13,9 +13,8 @@
  91443. Lesser General Public License for more details.
  91444. You should have received a copy of the GNU Lesser General Public
  91445. - License along with the GNU C Library; if not, write to the Free
  91446. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91447. - 02111-1307 USA. */
  91448. + License along with the GNU C Library; if not, see
  91449. + <http://www.gnu.org/licenses/>. */
  91450. #ifndef _GENERIC_BITS_LIBC_TSD_H
  91451. #define _GENERIC_BITS_LIBC_TSD_H 1
  91452. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h uClibc/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h
  91453. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h 2012-05-15 09:20:09.000000000 +0200
  91454. +++ uClibc/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h 2014-02-03 12:32:57.000000000 +0100
  91455. @@ -13,9 +13,8 @@
  91456. Lesser General Public License for more details.
  91457. You should have received a copy of the GNU Lesser General Public
  91458. - License along with the GNU C Library; if not, write to the Free
  91459. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91460. - 02111-1307 USA. */
  91461. + License along with the GNU C Library; if not, see
  91462. + <http://www.gnu.org/licenses/>. */
  91463. #ifndef _BITS_STDIO_LOCK_H
  91464. #define _BITS_STDIO_LOCK_H 1
  91465. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/createthread.c uClibc/libpthread/nptl/sysdeps/pthread/createthread.c
  91466. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/createthread.c 2012-05-15 09:20:09.000000000 +0200
  91467. +++ uClibc/libpthread/nptl/sysdeps/pthread/createthread.c 2014-02-03 12:32:57.000000000 +0100
  91468. @@ -13,9 +13,8 @@
  91469. Lesser General Public License for more details.
  91470. You should have received a copy of the GNU Lesser General Public
  91471. - License along with the GNU C Library; if not, write to the Free
  91472. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91473. - 02111-1307 USA. */
  91474. + License along with the GNU C Library; if not, see
  91475. + <http://www.gnu.org/licenses/>. */
  91476. #include <sched.h>
  91477. #include <setjmp.h>
  91478. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/librt-cancellation.c uClibc/libpthread/nptl/sysdeps/pthread/librt-cancellation.c
  91479. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/librt-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  91480. +++ uClibc/libpthread/nptl/sysdeps/pthread/librt-cancellation.c 2014-02-03 12:32:57.000000000 +0100
  91481. @@ -13,9 +13,8 @@
  91482. Lesser General Public License for more details.
  91483. You should have received a copy of the GNU Lesser General Public
  91484. - License along with the GNU C Library; if not, write to the Free
  91485. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91486. - 02111-1307 USA. */
  91487. + License along with the GNU C Library; if not, see
  91488. + <http://www.gnu.org/licenses/>. */
  91489. #include "pthreadP.h"
  91490. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/list.h uClibc/libpthread/nptl/sysdeps/pthread/list.h
  91491. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/list.h 2012-05-15 09:20:09.000000000 +0200
  91492. +++ uClibc/libpthread/nptl/sysdeps/pthread/list.h 2014-02-03 12:32:57.000000000 +0100
  91493. @@ -13,9 +13,8 @@
  91494. Lesser General Public License for more details.
  91495. You should have received a copy of the GNU Lesser General Public
  91496. - License along with the GNU C Library; if not, write to the Free
  91497. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91498. - 02111-1307 USA. */
  91499. + License along with the GNU C Library; if not, see
  91500. + <http://www.gnu.org/licenses/>. */
  91501. #ifndef _LIST_H
  91502. #define _LIST_H 1
  91503. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/Makefile.in uClibc/libpthread/nptl/sysdeps/pthread/Makefile.in
  91504. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  91505. +++ uClibc/libpthread/nptl/sysdeps/pthread/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  91506. @@ -33,7 +33,6 @@
  91507. pthread_spin_init.c \
  91508. pthread_spin_unlock.c \
  91509. pt-longjmp.c \
  91510. - pt-sigaction.c \
  91511. tpp.c
  91512. CFLAGS-pthread = $(SSP_ALL_CFLAGS) -DNOT_IN_libc -DIS_IN_libpthread
  91513. CFLAGS-pthread_barrier_wait.c = -D_GNU_SOURCE
  91514. @@ -49,8 +48,7 @@
  91515. CFLAGS-rt-unwind-resume.c = -DIS_IN_librt \
  91516. -fexceptions -fasynchronous-unwind-tables
  91517. -libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, \
  91518. - unwind-forcedunwind)
  91519. +libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, unwind-forcedunwind)
  91520. librt-pt-routines-y = librt-cancellation.c
  91521. librt-pt-shared-only-routines-y = rt-unwind-resume.c
  91522. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/malloc-machine.h uClibc/libpthread/nptl/sysdeps/pthread/malloc-machine.h
  91523. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  91524. +++ uClibc/libpthread/nptl/sysdeps/pthread/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  91525. @@ -14,9 +14,8 @@
  91526. Lesser General Public License for more details.
  91527. You should have received a copy of the GNU Lesser General Public
  91528. - License along with the GNU C Library; if not, write to the Free
  91529. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91530. - 02111-1307 USA. */
  91531. + License along with the GNU C Library; if not, see
  91532. + <http://www.gnu.org/licenses/>. */
  91533. #ifndef _MALLOC_MACHINE_H
  91534. #define _MALLOC_MACHINE_H
  91535. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/posix-timer.h uClibc/libpthread/nptl/sysdeps/pthread/posix-timer.h
  91536. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/posix-timer.h 2012-05-15 09:20:09.000000000 +0200
  91537. +++ uClibc/libpthread/nptl/sysdeps/pthread/posix-timer.h 2014-02-03 12:32:57.000000000 +0100
  91538. @@ -14,9 +14,8 @@
  91539. Lesser General Public License for more details.
  91540. You should have received a copy of the GNU Lesser General Public
  91541. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91542. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91543. - Boston, MA 02111-1307, USA. */
  91544. + License along with the GNU C Library; see the file COPYING.LIB. If
  91545. + not, see <http://www.gnu.org/licenses/>. */
  91546. #include <limits.h>
  91547. #include <signal.h>
  91548. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c
  91549. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c 2012-05-15 09:20:09.000000000 +0200
  91550. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c 2014-02-03 12:32:57.000000000 +0100
  91551. @@ -13,9 +13,8 @@
  91552. Lesser General Public License for more details.
  91553. You should have received a copy of the GNU Lesser General Public
  91554. - License along with the GNU C Library; if not, write to the Free
  91555. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91556. - 02111-1307 USA. */
  91557. + License along with the GNU C Library; if not, see
  91558. + <http://www.gnu.org/licenses/>. */
  91559. #include <errno.h>
  91560. #include "pthreadP.h"
  91561. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c
  91562. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c 2012-05-15 09:20:09.000000000 +0200
  91563. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c 2014-02-03 12:32:57.000000000 +0100
  91564. @@ -13,9 +13,8 @@
  91565. Lesser General Public License for more details.
  91566. You should have received a copy of the GNU Lesser General Public
  91567. - License along with the GNU C Library; if not, write to the Free
  91568. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91569. - 02111-1307 USA. */
  91570. + License along with the GNU C Library; if not, see
  91571. + <http://www.gnu.org/licenses/>. */
  91572. #include <errno.h>
  91573. #include "pthreadP.h"
  91574. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c
  91575. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c 2012-05-15 09:20:09.000000000 +0200
  91576. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c 2014-02-03 12:32:57.000000000 +0100
  91577. @@ -13,9 +13,8 @@
  91578. Lesser General Public License for more details.
  91579. You should have received a copy of the GNU Lesser General Public
  91580. - License along with the GNU C Library; if not, write to the Free
  91581. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91582. - 02111-1307 USA. */
  91583. + License along with the GNU C Library; if not, see
  91584. + <http://www.gnu.org/licenses/>. */
  91585. #include <errno.h>
  91586. #include <sysdep.h>
  91587. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c
  91588. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c 2012-05-15 09:20:09.000000000 +0200
  91589. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c 2014-02-03 12:32:57.000000000 +0100
  91590. @@ -13,9 +13,8 @@
  91591. Lesser General Public License for more details.
  91592. You should have received a copy of the GNU Lesser General Public
  91593. - License along with the GNU C Library; if not, write to the Free
  91594. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91595. - 02111-1307 USA. */
  91596. + License along with the GNU C Library; if not, see
  91597. + <http://www.gnu.org/licenses/>. */
  91598. #include <endian.h>
  91599. #include <errno.h>
  91600. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c
  91601. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c 2012-05-15 09:20:09.000000000 +0200
  91602. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c 2014-02-03 12:32:57.000000000 +0100
  91603. @@ -13,9 +13,8 @@
  91604. Lesser General Public License for more details.
  91605. You should have received a copy of the GNU Lesser General Public
  91606. - License along with the GNU C Library; if not, write to the Free
  91607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91608. - 02111-1307 USA. */
  91609. + License along with the GNU C Library; if not, see
  91610. + <http://www.gnu.org/licenses/>. */
  91611. #include <endian.h>
  91612. #include <errno.h>
  91613. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c
  91614. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  91615. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  91616. @@ -13,9 +13,8 @@
  91617. Lesser General Public License for more details.
  91618. You should have received a copy of the GNU Lesser General Public
  91619. - License along with the GNU C Library; if not, write to the Free
  91620. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91621. - 02111-1307 USA. */
  91622. + License along with the GNU C Library; if not, see
  91623. + <http://www.gnu.org/licenses/>. */
  91624. #include <endian.h>
  91625. #include <errno.h>
  91626. @@ -100,8 +99,10 @@
  91627. {
  91628. #ifdef __NR_clock_gettime
  91629. INTERNAL_SYSCALL_DECL (err);
  91630. - int ret;
  91631. - ret = INTERNAL_SYSCALL (clock_gettime, err, 2,
  91632. +# ifndef __ASSUME_POSIX_TIMERS
  91633. + int ret =
  91634. +# endif
  91635. + INTERNAL_SYSCALL (clock_gettime, err, 2,
  91636. (cond->__data.__nwaiters
  91637. & ((1 << COND_NWAITERS_SHIFT) - 1)),
  91638. &rt);
  91639. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c
  91640. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c 2012-05-15 09:20:09.000000000 +0200
  91641. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c 2014-02-03 12:32:57.000000000 +0100
  91642. @@ -13,9 +13,8 @@
  91643. Lesser General Public License for more details.
  91644. You should have received a copy of the GNU Lesser General Public
  91645. - License along with the GNU C Library; if not, write to the Free
  91646. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91647. - 02111-1307 USA. */
  91648. + License along with the GNU C Library; if not, see
  91649. + <http://www.gnu.org/licenses/>. */
  91650. #include <endian.h>
  91651. #include <errno.h>
  91652. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread-functions.h uClibc/libpthread/nptl/sysdeps/pthread/pthread-functions.h
  91653. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  91654. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:57.000000000 +0100
  91655. @@ -13,9 +13,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. #ifndef _PTHREAD_FUNCTIONS_H
  91664. #define _PTHREAD_FUNCTIONS_H 1
  91665. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread.h uClibc/libpthread/nptl/sysdeps/pthread/pthread.h
  91666. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  91667. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread.h 2014-02-03 12:32:57.000000000 +0100
  91668. @@ -13,9 +13,8 @@
  91669. Lesser General Public License for more details.
  91670. You should have received a copy of the GNU Lesser General Public
  91671. - License along with the GNU C Library; if not, write to the Free
  91672. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91673. - 02111-1307 USA. */
  91674. + License along with the GNU C Library; if not, see
  91675. + <http://www.gnu.org/licenses/>. */
  91676. #ifndef _PTHREAD_H
  91677. #define _PTHREAD_H 1
  91678. @@ -228,7 +227,7 @@
  91679. getting passed ARG. Creation attributed come from ATTR. The new
  91680. handle is stored in *NEWTHREAD. */
  91681. extern int pthread_create (pthread_t *__restrict __newthread,
  91682. - __const pthread_attr_t *__restrict __attr,
  91683. + const pthread_attr_t *__restrict __attr,
  91684. void *(*__start_routine) (void *),
  91685. void *__restrict __arg) __THROW __nonnull ((1, 3));
  91686. @@ -258,7 +257,7 @@
  91687. This function is a cancellation point and therefore not marked with
  91688. __THROW. */
  91689. extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
  91690. - __const struct timespec *__abstime);
  91691. + const struct timespec *__abstime);
  91692. #endif
  91693. /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
  91694. @@ -287,7 +286,7 @@
  91695. __THROW __nonnull ((1));
  91696. /* Get detach state attribute. */
  91697. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  91698. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  91699. int *__detachstate)
  91700. __THROW __nonnull ((1, 2));
  91701. @@ -298,7 +297,7 @@
  91702. /* Get the size of the guard area created for stack overflow protection. */
  91703. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
  91704. +extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
  91705. size_t *__guardsize)
  91706. __THROW __nonnull ((1, 2));
  91707. @@ -309,18 +308,18 @@
  91708. /* Return in *PARAM the scheduling parameters of *ATTR. */
  91709. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  91710. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  91711. __attr,
  91712. struct sched_param *__restrict __param)
  91713. __THROW __nonnull ((1, 2));
  91714. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  91715. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  91716. - __const struct sched_param *__restrict
  91717. + const struct sched_param *__restrict
  91718. __param) __THROW __nonnull ((1, 2));
  91719. /* Return in *POLICY the scheduling policy of *ATTR. */
  91720. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  91721. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  91722. __attr, int *__restrict __policy)
  91723. __THROW __nonnull ((1, 2));
  91724. @@ -329,7 +328,7 @@
  91725. __THROW __nonnull ((1));
  91726. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  91727. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  91728. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  91729. __attr, int *__restrict __inherit)
  91730. __THROW __nonnull ((1, 2));
  91731. @@ -340,7 +339,7 @@
  91732. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  91733. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  91734. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  91735. int *__restrict __scope)
  91736. __THROW __nonnull ((1, 2));
  91737. @@ -349,7 +348,7 @@
  91738. __THROW __nonnull ((1));
  91739. /* Return the previously set address for the stack. */
  91740. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  91741. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  91742. __attr, void **__restrict __stackaddr)
  91743. __THROW __nonnull ((1, 2)) __attribute_deprecated__;
  91744. @@ -362,7 +361,7 @@
  91745. __THROW __nonnull ((1)) __attribute_deprecated__;
  91746. /* Return the currently used minimal stack size. */
  91747. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  91748. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  91749. __attr, size_t *__restrict __stacksize)
  91750. __THROW __nonnull ((1, 2));
  91751. @@ -375,7 +374,7 @@
  91752. #ifdef __USE_XOPEN2K
  91753. /* Return the previously set address for the stack. */
  91754. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  91755. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  91756. void **__restrict __stackaddr,
  91757. size_t *__restrict __stacksize)
  91758. __THROW __nonnull ((1, 2, 3));
  91759. @@ -392,12 +391,12 @@
  91760. the processors represented in CPUSET. */
  91761. extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
  91762. size_t __cpusetsize,
  91763. - __const cpu_set_t *__cpuset)
  91764. + const cpu_set_t *__cpuset)
  91765. __THROW __nonnull ((1, 3));
  91766. /* Get bit set in CPUSET representing the processors threads created with
  91767. ATTR can run on. */
  91768. -extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
  91769. +extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
  91770. size_t __cpusetsize,
  91771. cpu_set_t *__cpuset)
  91772. __THROW __nonnull ((1, 3));
  91773. @@ -416,7 +415,7 @@
  91774. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  91775. and *PARAM. */
  91776. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  91777. - __const struct sched_param *__param)
  91778. + const struct sched_param *__param)
  91779. __THROW __nonnull ((3));
  91780. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  91781. @@ -449,7 +448,7 @@
  91782. /* Limit specified thread TH to run only on the processors represented
  91783. in CPUSET. */
  91784. extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
  91785. - __const cpu_set_t *__cpuset)
  91786. + const cpu_set_t *__cpuset)
  91787. __THROW __nonnull ((3));
  91788. /* Get bit set in CPUSET representing the processors TH can run on. */
  91789. @@ -581,6 +580,7 @@
  91790. function the compiler is free to decide inlining the change when
  91791. needed or fall back on the copy which must exist somewhere
  91792. else. */
  91793. +void __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame);
  91794. __extern_inline void
  91795. __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
  91796. {
  91797. @@ -724,7 +724,7 @@
  91798. /* Initialize a mutex. */
  91799. extern int pthread_mutex_init (pthread_mutex_t *__mutex,
  91800. - __const pthread_mutexattr_t *__mutexattr)
  91801. + const pthread_mutexattr_t *__mutexattr)
  91802. __THROW __nonnull ((1));
  91803. /* Destroy a mutex. */
  91804. @@ -742,7 +742,7 @@
  91805. #ifdef __USE_XOPEN2K
  91806. /* Wait until lock becomes available, or specified time passes. */
  91807. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  91808. - __const struct timespec *__restrict
  91809. + const struct timespec *__restrict
  91810. __abstime) __THROW __nonnull ((1, 2));
  91811. #endif
  91812. @@ -752,7 +752,7 @@
  91813. /* Get the priority ceiling of MUTEX. */
  91814. -extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
  91815. +extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
  91816. __restrict __mutex,
  91817. int *__restrict __prioceiling)
  91818. __THROW __nonnull ((1, 2));
  91819. @@ -788,7 +788,7 @@
  91820. __THROW __nonnull ((1));
  91821. /* Get the process-shared flag of the mutex attribute ATTR. */
  91822. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  91823. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  91824. __restrict __attr,
  91825. int *__restrict __pshared)
  91826. __THROW __nonnull ((1, 2));
  91827. @@ -800,7 +800,7 @@
  91828. #if defined __USE_UNIX98 || defined __USE_XOPEN2K8
  91829. /* Return in *KIND the mutex kind attribute in *ATTR. */
  91830. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  91831. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  91832. __attr, int *__restrict __kind)
  91833. __THROW __nonnull ((1, 2));
  91834. @@ -812,7 +812,7 @@
  91835. #endif
  91836. /* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */
  91837. -extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
  91838. +extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
  91839. __restrict __attr,
  91840. int *__restrict __protocol)
  91841. __THROW __nonnull ((1, 2));
  91842. @@ -824,7 +824,7 @@
  91843. __THROW __nonnull ((1));
  91844. /* Return in *PRIOCEILING the mutex prioceiling attribute in *ATTR. */
  91845. -extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
  91846. +extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
  91847. __restrict __attr,
  91848. int *__restrict __prioceiling)
  91849. __THROW __nonnull ((1, 2));
  91850. @@ -836,11 +836,11 @@
  91851. #ifdef __USE_XOPEN2K
  91852. /* Get the robustness flag of the mutex attribute ATTR. */
  91853. -extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
  91854. +extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
  91855. int *__robustness)
  91856. __THROW __nonnull ((1, 2));
  91857. # ifdef __USE_GNU
  91858. -extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
  91859. +extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
  91860. int *__robustness)
  91861. __THROW __nonnull ((1, 2));
  91862. # endif
  91863. @@ -863,7 +863,7 @@
  91864. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  91865. the default values if later is NULL. */
  91866. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  91867. - __const pthread_rwlockattr_t *__restrict
  91868. + const pthread_rwlockattr_t *__restrict
  91869. __attr) __THROW __nonnull ((1));
  91870. /* Destroy read-write lock RWLOCK. */
  91871. @@ -881,7 +881,7 @@
  91872. # ifdef __USE_XOPEN2K
  91873. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  91874. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  91875. - __const struct timespec *__restrict
  91876. + const struct timespec *__restrict
  91877. __abstime) __THROW __nonnull ((1, 2));
  91878. # endif
  91879. @@ -896,7 +896,7 @@
  91880. # ifdef __USE_XOPEN2K
  91881. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  91882. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  91883. - __const struct timespec *__restrict
  91884. + const struct timespec *__restrict
  91885. __abstime) __THROW __nonnull ((1, 2));
  91886. # endif
  91887. @@ -916,7 +916,7 @@
  91888. __THROW __nonnull ((1));
  91889. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  91890. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  91891. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  91892. __restrict __attr,
  91893. int *__restrict __pshared)
  91894. __THROW __nonnull ((1, 2));
  91895. @@ -927,7 +927,7 @@
  91896. __THROW __nonnull ((1));
  91897. /* Return current setting of reader/writer preference. */
  91898. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
  91899. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
  91900. __restrict __attr,
  91901. int *__restrict __pref)
  91902. __THROW __nonnull ((1, 2));
  91903. @@ -943,7 +943,7 @@
  91904. /* Initialize condition variable COND using attributes ATTR, or use
  91905. the default values if later is NULL. */
  91906. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  91907. - __const pthread_condattr_t *__restrict
  91908. + const pthread_condattr_t *__restrict
  91909. __cond_attr) __THROW __nonnull ((1));
  91910. /* Destroy condition variable COND. */
  91911. @@ -976,7 +976,7 @@
  91912. __THROW. */
  91913. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  91914. pthread_mutex_t *__restrict __mutex,
  91915. - __const struct timespec *__restrict
  91916. + const struct timespec *__restrict
  91917. __abstime) __nonnull ((1, 2, 3));
  91918. /* Functions for handling condition variable attributes. */
  91919. @@ -990,7 +990,7 @@
  91920. __THROW __nonnull ((1));
  91921. /* Get the process-shared flag of the condition variable attribute ATTR. */
  91922. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  91923. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  91924. __restrict __attr,
  91925. int *__restrict __pshared)
  91926. __THROW __nonnull ((1, 2));
  91927. @@ -1001,7 +1001,7 @@
  91928. #ifdef __USE_XOPEN2K
  91929. /* Get the clock selected for the conditon variable attribute ATTR. */
  91930. -extern int pthread_condattr_getclock (__const pthread_condattr_t *
  91931. +extern int pthread_condattr_getclock (const pthread_condattr_t *
  91932. __restrict __attr,
  91933. __clockid_t *__restrict __clock_id)
  91934. __THROW __nonnull ((1, 2));
  91935. @@ -1043,7 +1043,7 @@
  91936. /* Initialize BARRIER with the attributes in ATTR. The barrier is
  91937. opened when COUNT waiters arrived. */
  91938. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  91939. - __const pthread_barrierattr_t *__restrict
  91940. + const pthread_barrierattr_t *__restrict
  91941. __attr, unsigned int __count)
  91942. __THROW __nonnull ((1));
  91943. @@ -1065,7 +1065,7 @@
  91944. __THROW __nonnull ((1));
  91945. /* Get the process-shared flag of the barrier attribute ATTR. */
  91946. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  91947. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  91948. __restrict __attr,
  91949. int *__restrict __pshared)
  91950. __THROW __nonnull ((1, 2));
  91951. @@ -1097,7 +1097,7 @@
  91952. /* Store POINTER in the thread-specific data slot identified by KEY. */
  91953. extern int pthread_setspecific (pthread_key_t __key,
  91954. - __const void *__pointer) __THROW ;
  91955. + const void *__pointer) __THROW ;
  91956. #ifdef __USE_XOPEN2K
  91957. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_once.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_once.c
  91958. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  91959. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  91960. @@ -13,9 +13,8 @@
  91961. Lesser General Public License for more details.
  91962. You should have received a copy of the GNU Lesser General Public
  91963. - License along with the GNU C Library; if not, write to the Free
  91964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91965. - 02111-1307 USA. */
  91966. + License along with the GNU C Library; if not, see
  91967. + <http://www.gnu.org/licenses/>. */
  91968. #include "pthreadP.h"
  91969. #include <lowlevellock.h>
  91970. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
  91971. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c 2012-05-15 09:20:09.000000000 +0200
  91972. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c 2014-02-03 12:32:57.000000000 +0100
  91973. @@ -13,9 +13,8 @@
  91974. Lesser General Public License for more details.
  91975. You should have received a copy of the GNU Lesser General Public
  91976. - License along with the GNU C Library; if not, write to the Free
  91977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91978. - 02111-1307 USA. */
  91979. + License along with the GNU C Library; if not, see
  91980. + <http://www.gnu.org/licenses/>. */
  91981. #include <errno.h>
  91982. #include <sysdep.h>
  91983. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
  91984. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c 2012-05-15 09:20:09.000000000 +0200
  91985. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c 2014-02-03 12:32:57.000000000 +0100
  91986. @@ -13,9 +13,8 @@
  91987. Lesser General Public License for more details.
  91988. You should have received a copy of the GNU Lesser General Public
  91989. - License along with the GNU C Library; if not, write to the Free
  91990. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91991. - 02111-1307 USA. */
  91992. + License along with the GNU C Library; if not, see
  91993. + <http://www.gnu.org/licenses/>. */
  91994. #include <errno.h>
  91995. #include <sysdep.h>
  91996. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c
  91997. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c 2012-05-15 09:20:09.000000000 +0200
  91998. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c 2014-02-03 12:32:57.000000000 +0100
  91999. @@ -13,9 +13,8 @@
  92000. Lesser General Public License for more details.
  92001. You should have received a copy of the GNU Lesser General Public
  92002. - License along with the GNU C Library; if not, write to the Free
  92003. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92004. - 02111-1307 USA. */
  92005. + License along with the GNU C Library; if not, see
  92006. + <http://www.gnu.org/licenses/>. */
  92007. #include <errno.h>
  92008. #include <sysdep.h>
  92009. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
  92010. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c 2012-05-15 09:20:09.000000000 +0200
  92011. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c 2014-02-03 12:32:57.000000000 +0100
  92012. @@ -13,9 +13,8 @@
  92013. Lesser General Public License for more details.
  92014. You should have received a copy of the GNU Lesser General Public
  92015. - License along with the GNU C Library; if not, write to the Free
  92016. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92017. - 02111-1307 USA. */
  92018. + License along with the GNU C Library; if not, see
  92019. + <http://www.gnu.org/licenses/>. */
  92020. #include <errno.h>
  92021. #include <sysdep.h>
  92022. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
  92023. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c 2012-05-15 09:20:09.000000000 +0200
  92024. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c 2014-02-03 12:32:57.000000000 +0100
  92025. @@ -13,9 +13,8 @@
  92026. Lesser General Public License for more details.
  92027. You should have received a copy of the GNU Lesser General Public
  92028. - License along with the GNU C Library; if not, write to the Free
  92029. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92030. - 02111-1307 USA. */
  92031. + License along with the GNU C Library; if not, see
  92032. + <http://www.gnu.org/licenses/>. */
  92033. #include <errno.h>
  92034. #include <sysdep.h>
  92035. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c
  92036. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c 2012-05-15 09:20:09.000000000 +0200
  92037. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c 2014-02-03 12:32:57.000000000 +0100
  92038. @@ -13,9 +13,8 @@
  92039. Lesser General Public License for more details.
  92040. You should have received a copy of the GNU Lesser General Public
  92041. - License along with the GNU C Library; if not, write to the Free
  92042. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92043. - 02111-1307 USA. */
  92044. + License along with the GNU C Library; if not, see
  92045. + <http://www.gnu.org/licenses/>. */
  92046. #include <errno.h>
  92047. #include <signal.h>
  92048. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c
  92049. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c 2012-05-15 09:20:09.000000000 +0200
  92050. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c 2014-02-03 12:32:57.000000000 +0100
  92051. @@ -13,9 +13,8 @@
  92052. Lesser General Public License for more details.
  92053. You should have received a copy of the GNU Lesser General Public
  92054. - License along with the GNU C Library; if not, write to the Free
  92055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92056. - 02111-1307 USA. */
  92057. + License along with the GNU C Library; if not, see
  92058. + <http://www.gnu.org/licenses/>. */
  92059. #include "pthreadP.h"
  92060. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c
  92061. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  92062. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  92063. @@ -14,9 +14,8 @@
  92064. Lesser General Public License for more details.
  92065. You should have received a copy of the GNU Lesser General Public
  92066. - License along with the GNU C Library; if not, write to the Free
  92067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92068. - 02111-1307 USA. */
  92069. + License along with the GNU C Library; if not, see
  92070. + <http://www.gnu.org/licenses/>. */
  92071. #include "pthreadP.h"
  92072. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c
  92073. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  92074. +++ uClibc/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  92075. @@ -14,9 +14,8 @@
  92076. Lesser General Public License for more details.
  92077. You should have received a copy of the GNU Lesser General Public
  92078. - License along with the GNU C Library; if not, write to the Free
  92079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92080. - 02111-1307 USA. */
  92081. + License along with the GNU C Library; if not, see
  92082. + <http://www.gnu.org/licenses/>. */
  92083. #include "pthreadP.h"
  92084. #include <atomic.h>
  92085. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-initfini.c uClibc/libpthread/nptl/sysdeps/pthread/pt-initfini.c
  92086. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  92087. +++ uClibc/libpthread/nptl/sysdeps/pthread/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  92088. @@ -23,8 +23,7 @@
  92089. You should have received a copy of the GNU Lesser General Public
  92090. License along with the GNU C Library; see the file COPYING.LIB. If not,
  92091. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  92092. - Boston, MA 02111-1307, USA. */
  92093. + see <http://www.gnu.org/licenses/>. */
  92094. /* This file is compiled into assembly code which is then munged by a sed
  92095. script into two files: crti.s and crtn.s.
  92096. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-longjmp.c uClibc/libpthread/nptl/sysdeps/pthread/pt-longjmp.c
  92097. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-longjmp.c 2012-05-15 09:20:09.000000000 +0200
  92098. +++ uClibc/libpthread/nptl/sysdeps/pthread/pt-longjmp.c 2014-02-03 12:32:57.000000000 +0100
  92099. @@ -13,14 +13,15 @@
  92100. Lesser General Public License for more details.
  92101. You should have received a copy of the GNU Lesser General Public
  92102. - License along with the GNU C Library; if not, write to the Free
  92103. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92104. - 02111-1307 USA. */
  92105. + License along with the GNU C Library; if not, see
  92106. + <http://www.gnu.org/licenses/>. */
  92107. #include <setjmp.h>
  92108. #include <stdlib.h>
  92109. #include "pthreadP.h"
  92110. +extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  92111. +
  92112. void
  92113. longjmp (jmp_buf env, int val)
  92114. {
  92115. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-sigaction.c uClibc/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
  92116. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-sigaction.c 2012-05-15 09:20:09.000000000 +0200
  92117. +++ uClibc/libpthread/nptl/sysdeps/pthread/pt-sigaction.c 2014-02-03 12:32:57.000000000 +0100
  92118. @@ -13,9 +13,8 @@
  92119. Lesser General Public License for more details.
  92120. You should have received a copy of the GNU Lesser General Public
  92121. - License along with the GNU C Library; if not, write to the Free
  92122. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92123. - 02111-1307 USA. */
  92124. + License along with the GNU C Library; if not, see
  92125. + <http://www.gnu.org/licenses/>. */
  92126. #include <pthreadP.h>
  92127. #include <signal.h>
  92128. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/setxid.h uClibc/libpthread/nptl/sysdeps/pthread/setxid.h
  92129. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/setxid.h 2012-05-15 09:20:09.000000000 +0200
  92130. +++ uClibc/libpthread/nptl/sysdeps/pthread/setxid.h 2014-02-03 12:32:57.000000000 +0100
  92131. @@ -12,9 +12,8 @@
  92132. Lesser General Public License for more details.
  92133. You should have received a copy of the GNU Lesser General Public
  92134. - License along with the GNU C Library; if not, write to the Free
  92135. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92136. - 02111-1307 USA. */
  92137. + License along with the GNU C Library; if not, see
  92138. + <http://www.gnu.org/licenses/>. */
  92139. #include <pthreadP.h>
  92140. #include <sysdep.h>
  92141. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigfillset.c uClibc/libpthread/nptl/sysdeps/pthread/sigfillset.c
  92142. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigfillset.c 1970-01-01 01:00:00.000000000 +0100
  92143. +++ uClibc/libpthread/nptl/sysdeps/pthread/sigfillset.c 2014-02-03 12:32:57.000000000 +0100
  92144. @@ -0,0 +1,20 @@
  92145. +/* Copyright (C) 2003, 2005 Free Software Foundation, Inc.
  92146. + This file is part of the GNU C Library.
  92147. +
  92148. + The GNU C Library is free software; you can redistribute it and/or
  92149. + modify it under the terms of the GNU Lesser General Public
  92150. + License as published by the Free Software Foundation; either
  92151. + version 2.1 of the License, or (at your option) any later version.
  92152. +
  92153. + The GNU C Library is distributed in the hope that it will be useful,
  92154. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  92155. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  92156. + Lesser General Public License for more details.
  92157. +
  92158. + You should have received a copy of the GNU Lesser General Public
  92159. + License along with the GNU C Library; if not, see
  92160. + <http://www.gnu.org/licenses/>. */
  92161. +
  92162. +#include <pthreadP.h>
  92163. +
  92164. +#include <../../../../libc/signal/sigfillset.c>
  92165. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigprocmask.c uClibc/libpthread/nptl/sysdeps/pthread/sigprocmask.c
  92166. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigprocmask.c 1970-01-01 01:00:00.000000000 +0100
  92167. +++ uClibc/libpthread/nptl/sysdeps/pthread/sigprocmask.c 2014-02-03 12:32:57.000000000 +0100
  92168. @@ -0,0 +1,21 @@
  92169. +/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
  92170. + This file is part of the GNU C Library.
  92171. +
  92172. + The GNU C Library is free software; you can redistribute it and/or
  92173. + modify it under the terms of the GNU Lesser General Public
  92174. + License as published by the Free Software Foundation; either
  92175. + version 2.1 of the License, or (at your option) any later version.
  92176. +
  92177. + The GNU C Library is distributed in the hope that it will be useful,
  92178. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  92179. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  92180. + Lesser General Public License for more details.
  92181. +
  92182. + You should have received a copy of the GNU Lesser General Public
  92183. + License along with the GNU C Library; if not, see
  92184. + <http://www.gnu.org/licenses/>. */
  92185. +
  92186. +#include <pthreadP.h>
  92187. +#undef _LARGEFILE64_SOURCE
  92188. +
  92189. +#include <../../../../libc/sysdeps/linux/common/sigprocmask.c>
  92190. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_create.c uClibc/libpthread/nptl/sysdeps/pthread/timer_create.c
  92191. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  92192. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  92193. @@ -13,9 +13,8 @@
  92194. Lesser General Public License for more details.
  92195. You should have received a copy of the GNU Lesser General Public
  92196. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92197. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92198. - Boston, MA 02111-1307, USA. */
  92199. + License along with the GNU C Library; see the file COPYING.LIB. If
  92200. + not, see <http://www.gnu.org/licenses/>. */
  92201. #include <errno.h>
  92202. #include <signal.h>
  92203. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_delete.c uClibc/libpthread/nptl/sysdeps/pthread/timer_delete.c
  92204. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  92205. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  92206. @@ -13,9 +13,8 @@
  92207. Lesser General Public License for more details.
  92208. You should have received a copy of the GNU Lesser General Public
  92209. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92210. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92211. - Boston, MA 02111-1307, USA. */
  92212. + License along with the GNU C Library; see the file COPYING.LIB. If
  92213. + not, see <http://www.gnu.org/licenses/>. */
  92214. #include <assert.h>
  92215. #include <errno.h>
  92216. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_getoverr.c uClibc/libpthread/nptl/sysdeps/pthread/timer_getoverr.c
  92217. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  92218. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  92219. @@ -13,9 +13,8 @@
  92220. Lesser General Public License for more details.
  92221. You should have received a copy of the GNU Lesser General Public
  92222. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92223. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92224. - Boston, MA 02111-1307, USA. */
  92225. + License along with the GNU C Library; see the file COPYING.LIB. If
  92226. + not, see <http://www.gnu.org/licenses/>. */
  92227. #include <errno.h>
  92228. #include <pthread.h>
  92229. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_gettime.c uClibc/libpthread/nptl/sysdeps/pthread/timer_gettime.c
  92230. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  92231. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  92232. @@ -13,9 +13,8 @@
  92233. Lesser General Public License for more details.
  92234. You should have received a copy of the GNU Lesser General Public
  92235. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92236. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92237. - Boston, MA 02111-1307, USA. */
  92238. + License along with the GNU C Library; see the file COPYING.LIB. If
  92239. + not, see <http://www.gnu.org/licenses/>. */
  92240. #include <errno.h>
  92241. #include <pthread.h>
  92242. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_routines.c uClibc/libpthread/nptl/sysdeps/pthread/timer_routines.c
  92243. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  92244. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  92245. @@ -14,9 +14,8 @@
  92246. Lesser General Public License for more details.
  92247. You should have received a copy of the GNU Lesser General Public
  92248. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92249. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92250. - Boston, MA 02111-1307, USA. */
  92251. + License along with the GNU C Library; see the file COPYING.LIB. If
  92252. + not, see <http://www.gnu.org/licenses/>. */
  92253. #include <assert.h>
  92254. #include <errno.h>
  92255. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_settime.c uClibc/libpthread/nptl/sysdeps/pthread/timer_settime.c
  92256. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  92257. +++ uClibc/libpthread/nptl/sysdeps/pthread/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  92258. @@ -13,9 +13,8 @@
  92259. Lesser General Public License for more details.
  92260. You should have received a copy of the GNU Lesser General Public
  92261. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92262. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92263. - Boston, MA 02111-1307, USA. */
  92264. + License along with the GNU C Library; see the file COPYING.LIB. If
  92265. + not, see <http://www.gnu.org/licenses/>. */
  92266. #include <errno.h>
  92267. #include <pthread.h>
  92268. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/tpp.c uClibc/libpthread/nptl/sysdeps/pthread/tpp.c
  92269. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/tpp.c 2012-05-15 09:20:09.000000000 +0200
  92270. +++ uClibc/libpthread/nptl/sysdeps/pthread/tpp.c 2014-02-03 12:32:57.000000000 +0100
  92271. @@ -14,9 +14,8 @@
  92272. Lesser General Public License for more details.
  92273. You should have received a copy of the GNU Lesser General Public
  92274. - License along with the GNU C Library; if not, write to the Free
  92275. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92276. - 02111-1307 USA. */
  92277. + License along with the GNU C Library; if not, see
  92278. + <http://www.gnu.org/licenses/>. */
  92279. #include <assert.h>
  92280. #include <atomic.h>
  92281. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c uClibc/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c
  92282. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c 2012-05-15 09:20:09.000000000 +0200
  92283. +++ uClibc/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-02-03 12:32:57.000000000 +0100
  92284. @@ -13,9 +13,8 @@
  92285. Lesser General Public License for more details.
  92286. You should have received a copy of the GNU Lesser General Public
  92287. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92288. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92289. - Boston, MA 02111-1307, USA. */
  92290. + License along with the GNU C Library; see the file COPYING.LIB. If
  92291. + not, see <http://www.gnu.org/licenses/>. */
  92292. #include <dlfcn.h>
  92293. #include <stdio.h>
  92294. @@ -112,6 +111,11 @@
  92295. _Unwind_Reason_Code
  92296. __gcc_personality_v0 (int version, _Unwind_Action actions,
  92297. _Unwind_Exception_Class exception_class,
  92298. + struct _Unwind_Exception *ue_header,
  92299. + struct _Unwind_Context *context);
  92300. +_Unwind_Reason_Code
  92301. +__gcc_personality_v0 (int version, _Unwind_Action actions,
  92302. + _Unwind_Exception_Class exception_class,
  92303. struct _Unwind_Exception *ue_header,
  92304. struct _Unwind_Context *context)
  92305. {
  92306. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-resume.c uClibc/libpthread/nptl/sysdeps/pthread/unwind-resume.c
  92307. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-resume.c 2012-05-15 09:20:09.000000000 +0200
  92308. +++ uClibc/libpthread/nptl/sysdeps/pthread/unwind-resume.c 2014-02-03 12:32:57.000000000 +0100
  92309. @@ -13,9 +13,8 @@
  92310. Lesser General Public License for more details.
  92311. You should have received a copy of the GNU Lesser General Public
  92312. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92313. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92314. - Boston, MA 02111-1307, USA. */
  92315. + License along with the GNU C Library; see the file COPYING.LIB. If
  92316. + not, see <http://www.gnu.org/licenses/>. */
  92317. #include <dlfcn.h>
  92318. #include <stdio.h>
  92319. @@ -66,6 +65,11 @@
  92320. _Unwind_Reason_Code
  92321. __gcc_personality_v0 (int version, _Unwind_Action actions,
  92322. _Unwind_Exception_Class exception_class,
  92323. + struct _Unwind_Exception *ue_header,
  92324. + struct _Unwind_Context *context);
  92325. +_Unwind_Reason_Code
  92326. +__gcc_personality_v0 (int version, _Unwind_Action actions,
  92327. + _Unwind_Exception_Class exception_class,
  92328. struct _Unwind_Exception *ue_header,
  92329. struct _Unwind_Context *context)
  92330. {
  92331. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/dl-tls.h uClibc/libpthread/nptl/sysdeps/sh/dl-tls.h
  92332. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  92333. +++ uClibc/libpthread/nptl/sysdeps/sh/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  92334. @@ -13,9 +13,8 @@
  92335. Lesser General Public License for more details.
  92336. You should have received a copy of the GNU Lesser General Public
  92337. - License along with the GNU C Library; if not, write to the Free
  92338. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92339. - 02111-1307 USA. */
  92340. + License along with the GNU C Library; if not, see
  92341. + <http://www.gnu.org/licenses/>. */
  92342. /* Type used for the representation of TLS information in the GOT. */
  92343. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h
  92344. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  92345. +++ uClibc/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  92346. @@ -13,9 +13,8 @@
  92347. Lesser General Public License for more details.
  92348. You should have received a copy of the GNU Lesser General Public
  92349. - License along with the GNU C Library; if not, write to the Free
  92350. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92351. - 02111-1307 USA. */
  92352. + License along with the GNU C Library; if not, see
  92353. + <http://www.gnu.org/licenses/>. */
  92354. #include <setjmp.h>
  92355. #include <stdint.h>
  92356. @@ -26,8 +25,3 @@
  92357. #define _JMPBUF_UNWINDS_ADJ(jmpbuf, address, adj) \
  92358. ((uintptr_t) (address) - (adj) < (uintptr_t) (jmpbuf)[0].__regs[7] - (adj))
  92359. -
  92360. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  92361. -
  92362. -/* We use the normal lobngjmp for unwinding. */
  92363. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  92364. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthreaddef.h uClibc/libpthread/nptl/sysdeps/sh/pthreaddef.h
  92365. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  92366. +++ uClibc/libpthread/nptl/sysdeps/sh/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  92367. @@ -12,9 +12,8 @@
  92368. Lesser General Public License for more details.
  92369. You should have received a copy of the GNU Lesser General Public
  92370. - License along with the GNU C Library; if not, write to the Free
  92371. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92372. - 02111-1307 USA. */
  92373. + License along with the GNU C Library; if not, see
  92374. + <http://www.gnu.org/licenses/>. */
  92375. #include <sysdep.h>
  92376. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_init.c uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_init.c
  92377. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  92378. +++ uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  92379. @@ -13,8 +13,7 @@
  92380. Lesser General Public License for more details.
  92381. You should have received a copy of the GNU Lesser General Public
  92382. - License along with the GNU C Library; if not, write to the Free
  92383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92384. - 02111-1307 USA. */
  92385. + License along with the GNU C Library; if not, see
  92386. + <http://www.gnu.org/licenses/>. */
  92387. /* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  92388. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c
  92389. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  92390. +++ uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  92391. @@ -12,9 +12,8 @@
  92392. Lesser General Public License for more details.
  92393. You should have received a copy of the GNU Lesser General Public
  92394. - License along with the GNU C Library; if not, write to the Free
  92395. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92396. - 02111-1307 USA. */
  92397. + License along with the GNU C Library; if not, see
  92398. + <http://www.gnu.org/licenses/>. */
  92399. #include "pthreadP.h"
  92400. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S
  92401. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  92402. +++ uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  92403. @@ -12,9 +12,8 @@
  92404. Lesser General Public License for more details.
  92405. You should have received a copy of the GNU Lesser General Public
  92406. - License along with the GNU C Library; if not, write to the Free
  92407. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92408. - 02111-1307 USA. */
  92409. + License along with the GNU C Library; if not, see
  92410. + <http://www.gnu.org/licenses/>. */
  92411. #include <pthread-errnos.h>
  92412. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S
  92413. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  92414. +++ uClibc/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  92415. @@ -12,9 +12,8 @@
  92416. Lesser General Public License for more details.
  92417. You should have received a copy of the GNU Lesser General Public
  92418. - License along with the GNU C Library; if not, write to the Free
  92419. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92420. - 02111-1307 USA. */
  92421. + License along with the GNU C Library; if not, see
  92422. + <http://www.gnu.org/licenses/>. */
  92423. .globl pthread_spin_unlock
  92424. .type pthread_spin_unlock,@function
  92425. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/tls.h uClibc/libpthread/nptl/sysdeps/sh/tls.h
  92426. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  92427. +++ uClibc/libpthread/nptl/sysdeps/sh/tls.h 2014-02-03 12:32:57.000000000 +0100
  92428. @@ -13,9 +13,8 @@
  92429. Lesser General Public License for more details.
  92430. You should have received a copy of the GNU Lesser General Public
  92431. - License along with the GNU C Library; if not, write to the Free
  92432. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92433. - 02111-1307 USA. */
  92434. + License along with the GNU C Library; if not, see
  92435. + <http://www.gnu.org/licenses/>. */
  92436. #ifndef _TLS_H
  92437. #define _TLS_H
  92438. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/dl-tls.h uClibc/libpthread/nptl/sysdeps/sparc/dl-tls.h
  92439. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  92440. +++ uClibc/libpthread/nptl/sysdeps/sparc/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  92441. @@ -13,9 +13,8 @@
  92442. Lesser General Public License for more details.
  92443. You should have received a copy of the GNU Lesser General Public
  92444. - License along with the GNU C Library; if not, write to the Free
  92445. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92446. - 02111-1307 USA. */
  92447. + License along with the GNU C Library; if not, see
  92448. + <http://www.gnu.org/licenses/>. */
  92449. /* Type used for the representation of TLS information in the GOT. */
  92450. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h
  92451. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  92452. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  92453. @@ -13,9 +13,8 @@
  92454. Lesser General Public License for more details.
  92455. You should have received a copy of the GNU Lesser General Public
  92456. - License along with the GNU C Library; if not, write to the Free
  92457. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92458. - 02111-1307 USA. */
  92459. + License along with the GNU C Library; if not, see
  92460. + <http://www.gnu.org/licenses/>. */
  92461. #include <setjmp.h>
  92462. #include <stdint.h>
  92463. @@ -26,7 +25,3 @@
  92464. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  92465. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  92466. -
  92467. -/* We use the normal longjmp for unwinding. */
  92468. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  92469. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  92470. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h
  92471. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  92472. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  92473. @@ -12,9 +12,8 @@
  92474. Lesser General Public License for more details.
  92475. You should have received a copy of the GNU Lesser General Public
  92476. - License along with the GNU C Library; if not, write to the Free
  92477. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92478. - 02111-1307 USA. */
  92479. + License along with the GNU C Library; if not, see
  92480. + <http://www.gnu.org/licenses/>. */
  92481. /* Default stack size. */
  92482. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  92483. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c
  92484. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  92485. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  92486. @@ -13,16 +13,15 @@
  92487. Lesser General Public License for more details.
  92488. You should have received a copy of the GNU Lesser General Public
  92489. - License along with the GNU C Library; if not, write to the Free
  92490. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92491. - 02111-1307 USA. */
  92492. + License along with the GNU C Library; if not, see
  92493. + <http://www.gnu.org/licenses/>. */
  92494. #include "pthreadP.h"
  92495. int
  92496. pthread_spin_lock (pthread_spinlock_t *lock)
  92497. {
  92498. - __asm__ __volatile
  92499. + __asm__ __volatile__
  92500. ("1: ldstub [%0], %%g2\n"
  92501. " orcc %%g2, 0x0, %%g0\n"
  92502. " bne,a 2f\n"
  92503. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c
  92504. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  92505. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  92506. @@ -13,9 +13,8 @@
  92507. Lesser General Public License for more details.
  92508. You should have received a copy of the GNU Lesser General Public
  92509. - License along with the GNU C Library; if not, write to the Free
  92510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92511. - 02111-1307 USA. */
  92512. + License along with the GNU C Library; if not, see
  92513. + <http://www.gnu.org/licenses/>. */
  92514. #include <errno.h>
  92515. #include "pthreadP.h"
  92516. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c
  92517. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  92518. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  92519. @@ -13,16 +13,15 @@
  92520. Lesser General Public License for more details.
  92521. You should have received a copy of the GNU Lesser General Public
  92522. - License along with the GNU C Library; if not, write to the Free
  92523. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92524. - 02111-1307 USA. */
  92525. + License along with the GNU C Library; if not, see
  92526. + <http://www.gnu.org/licenses/>. */
  92527. #include "pthreadP.h"
  92528. int
  92529. pthread_spin_lock (pthread_spinlock_t *lock)
  92530. {
  92531. - __asm__ __volatile
  92532. + __asm__ __volatile__
  92533. ("1: ldstub [%0], %%g2\n"
  92534. " brnz,pn %%g2, 2f\n"
  92535. " membar #StoreLoad | #StoreStore\n"
  92536. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h
  92537. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  92538. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  92539. @@ -13,9 +13,8 @@
  92540. Lesser General Public License for more details.
  92541. You should have received a copy of the GNU Lesser General Public
  92542. - License along with the GNU C Library; if not, write to the Free
  92543. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92544. - 02111-1307 USA. */
  92545. + License along with the GNU C Library; if not, see
  92546. + <http://www.gnu.org/licenses/>. */
  92547. #include <setjmp.h>
  92548. #include <stdint.h>
  92549. @@ -26,6 +25,3 @@
  92550. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  92551. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  92552. -
  92553. -/* We use the normal lobngjmp for unwinding. */
  92554. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  92555. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h
  92556. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  92557. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  92558. @@ -12,9 +12,8 @@
  92559. Lesser General Public License for more details.
  92560. You should have received a copy of the GNU Lesser General Public
  92561. - License along with the GNU C Library; if not, write to the Free
  92562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92563. - 02111-1307 USA. */
  92564. + License along with the GNU C Library; if not, see
  92565. + <http://www.gnu.org/licenses/>. */
  92566. /* Default stack size. */
  92567. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  92568. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c
  92569. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  92570. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  92571. @@ -13,16 +13,15 @@
  92572. Lesser General Public License for more details.
  92573. You should have received a copy of the GNU Lesser General Public
  92574. - License along with the GNU C Library; if not, write to the Free
  92575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92576. - 02111-1307 USA. */
  92577. + License along with the GNU C Library; if not, see
  92578. + <http://www.gnu.org/licenses/>. */
  92579. #include "pthreadP.h"
  92580. int
  92581. pthread_spin_lock (pthread_spinlock_t *lock)
  92582. {
  92583. - __asm__ __volatile
  92584. + __asm__ __volatile__
  92585. ("1: ldstub [%0], %%g5\n"
  92586. " brnz,pn %%g5, 2f\n"
  92587. " membar #StoreLoad | #StoreStore\n"
  92588. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c
  92589. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  92590. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  92591. @@ -13,9 +13,8 @@
  92592. Lesser General Public License for more details.
  92593. You should have received a copy of the GNU Lesser General Public
  92594. - License along with the GNU C Library; if not, write to the Free
  92595. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92596. - 02111-1307 USA. */
  92597. + License along with the GNU C Library; if not, see
  92598. + <http://www.gnu.org/licenses/>. */
  92599. #include <errno.h>
  92600. #include "pthreadP.h"
  92601. @@ -24,7 +23,7 @@
  92602. pthread_spin_trylock (pthread_spinlock_t *lock)
  92603. {
  92604. int res;
  92605. - __asm__ __volatile
  92606. + __asm__ __volatile__
  92607. ("ldstub [%1], %0\n"
  92608. "membar #StoreLoad | #StoreStore"
  92609. : "=r" (res)
  92610. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c
  92611. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  92612. +++ uClibc/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  92613. @@ -14,9 +14,8 @@
  92614. Lesser General Public License for more details.
  92615. You should have received a copy of the GNU Lesser General Public
  92616. - License along with the GNU C Library; if not, write to the Free
  92617. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92618. - 02111-1307 USA. */
  92619. + License along with the GNU C Library; if not, see
  92620. + <http://www.gnu.org/licenses/>. */
  92621. #include "pthreadP.h"
  92622. #include <atomic.h>
  92623. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/tls.h uClibc/libpthread/nptl/sysdeps/sparc/tls.h
  92624. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/tls.h 2012-05-15 09:20:09.000000000 +0200
  92625. +++ uClibc/libpthread/nptl/sysdeps/sparc/tls.h 2014-02-03 12:32:57.000000000 +0100
  92626. @@ -13,9 +13,8 @@
  92627. Lesser General Public License for more details.
  92628. You should have received a copy of the GNU Lesser General Public
  92629. - License along with the GNU C Library; if not, write to the Free
  92630. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92631. - 02111-1307 USA. */
  92632. + License along with the GNU C Library; if not, see
  92633. + <http://www.gnu.org/licenses/>. */
  92634. #ifndef _TLS_H
  92635. #define _TLS_H
  92636. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
  92637. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  92638. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  92639. @@ -14,8 +14,7 @@
  92640. You should have received a copy of the GNU Library General Public
  92641. License along with the GNU C Library; see the file COPYING.LIB. If not,
  92642. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92643. - Boston, MA 02111-1307, USA. */
  92644. + see <http://www.gnu.org/licenses/>. */
  92645. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  92646. and defines LINK_MAX although filesystems have different maxima. A
  92647. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
  92648. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  92649. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  92650. @@ -13,9 +13,8 @@
  92651. Lesser General Public License for more details.
  92652. You should have received a copy of the GNU Lesser General Public
  92653. - License along with the GNU C Library; if not, write to the Free
  92654. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92655. - 02111-1307 USA. */
  92656. + License along with the GNU C Library; if not, see
  92657. + <http://www.gnu.org/licenses/>. */
  92658. #ifndef _BITS_PTHREADTYPES_H
  92659. #define _BITS_PTHREADTYPES_H 1
  92660. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
  92661. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  92662. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  92663. @@ -13,9 +13,8 @@
  92664. Lesser General Public License for more details.
  92665. You should have received a copy of the GNU Lesser General Public
  92666. - License along with the GNU C Library; if not, write to the Free
  92667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92668. - 02111-1307 USA. */
  92669. + License along with the GNU C Library; if not, see
  92670. + <http://www.gnu.org/licenses/>. */
  92671. #ifndef _SEMAPHORE_H
  92672. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  92673. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c
  92674. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92675. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92676. @@ -12,9 +12,8 @@
  92677. Lesser General Public License for more details.
  92678. You should have received a copy of the GNU Lesser General Public
  92679. - License along with the GNU C Library; if not, write to the Free
  92680. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92681. - 02111-1307 USA. */
  92682. + License along with the GNU C Library; if not, see
  92683. + <http://www.gnu.org/licenses/>. */
  92684. /* Value passed to 'clone' for initialization of the thread register. */
  92685. #define TLS_VALUE (pd + 1)
  92686. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c
  92687. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c 2012-05-15 09:20:09.000000000 +0200
  92688. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c 2014-02-03 12:32:57.000000000 +0100
  92689. @@ -12,9 +12,8 @@
  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 <sched.h>
  92698. #include <signal.h>
  92699. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
  92700. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  92701. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  92702. @@ -12,9 +12,8 @@
  92703. Lesser General Public License for more details.
  92704. You should have received a copy of the GNU Lesser General Public
  92705. - License along with the GNU C Libr \ary; if not, write to the Free
  92706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92707. - 02111-1307 USA. */
  92708. + License along with the GNU C Library; see the file COPYING.LIB. If
  92709. + not, see <http://www.gnu.org/licenses/>. */
  92710. #ifndef _LOWLEVELLOCK_H
  92711. #define _LOWLEVELLOCK_H 1
  92712. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
  92713. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  92714. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  92715. @@ -12,9 +12,8 @@
  92716. Lesser General Public License for more details.
  92717. You should have received a copy of the GNU Lesser General Public
  92718. - License along with the GNU C Library; if not, write to the Free
  92719. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92720. - 02111-1307 USA. */
  92721. + License along with the GNU C Library; if not, see
  92722. + <http://www.gnu.org/licenses/>. */
  92723. #include "pthreadP.h"
  92724. #include <lowlevellock.h>
  92725. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S
  92726. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  92727. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  92728. @@ -12,9 +12,8 @@
  92729. Lesser General Public License for more details.
  92730. You should have received a copy of the GNU Lesser General Public
  92731. - License along with the GNU C Library; if not, write to the Free
  92732. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92733. - 02111-1307 USA. */
  92734. + License along with the GNU C Library; if not, see
  92735. + <http://www.gnu.org/licenses/>. */
  92736. #include <sysdep.h>
  92737. #include <tcb-offsets.h>
  92738. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
  92739. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  92740. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  92741. @@ -12,9 +12,8 @@
  92742. Lesser General Public License for more details.
  92743. You should have received a copy of the GNU Lesser General Public
  92744. - License along with the GNU C Library; if not, write to the Free
  92745. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92746. - 02111-1307 USA. */
  92747. + License along with the GNU C Library; if not, see
  92748. + <http://www.gnu.org/licenses/>. */
  92749. #include <sysdep.h>
  92750. #include <tls.h>
  92751. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S
  92752. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S 2012-05-15 09:20:09.000000000 +0200
  92753. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S 2014-02-03 12:32:57.000000000 +0100
  92754. @@ -12,9 +12,8 @@
  92755. Lesser General Public License for more details.
  92756. You should have received a copy of the GNU Lesser General Public
  92757. - License along with the GNU C Library; if not, write to the Free
  92758. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92759. - 02111-1307 USA. */
  92760. + License along with the GNU C Library; if not, see
  92761. + <http://www.gnu.org/licenses/>. */
  92762. #include <sysdep.h>
  92763. #include <tcb-offsets.h>
  92764. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h
  92765. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  92766. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  92767. @@ -12,9 +12,8 @@
  92768. Lesser General Public License for more details.
  92769. You should have received a copy of the GNU Lesser General Public
  92770. - License along with the GNU C Library; if not, write to the Free
  92771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92772. - 02111-1307 USA. */
  92773. + License along with the GNU C Library; if not, see
  92774. + <http://www.gnu.org/licenses/>. */
  92775. #ifndef _BITS_PTHREADTYPES_H
  92776. #define _BITS_PTHREADTYPES_H 1
  92777. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h
  92778. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  92779. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  92780. @@ -12,9 +12,8 @@
  92781. Lesser General Public License for more details.
  92782. You should have received a copy of the GNU Lesser General Public
  92783. - License along with the GNU C Library; if not, write to the Free
  92784. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92785. - 02111-1307 USA. */
  92786. + License along with the GNU C Library; if not, see
  92787. + <http://www.gnu.org/licenses/>. */
  92788. #ifndef _SEMAPHORE_H
  92789. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  92790. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c
  92791. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92792. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92793. @@ -12,9 +12,8 @@
  92794. Lesser General Public License for more details.
  92795. You should have received a copy of the GNU Lesser General Public
  92796. - License along with the GNU C Library; if not, write to the Free
  92797. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92798. - 02111-1307 USA. */
  92799. + License along with the GNU C Library; if not, see
  92800. + <http://www.gnu.org/licenses/>. */
  92801. /* Value passed to 'clone' for initialization of the thread register. */
  92802. #define TLS_VALUE (pd + 1)
  92803. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c
  92804. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c 2012-05-15 09:20:09.000000000 +0200
  92805. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c 2014-02-03 12:32:57.000000000 +0100
  92806. @@ -13,9 +13,8 @@
  92807. Lesser General Public License for more details.
  92808. You should have received a copy of the GNU Lesser General Public
  92809. - License along with the GNU C Library; if not, write to the Free
  92810. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92811. - 02111-1307 USA. */
  92812. + License along with the GNU C Library; if not, see
  92813. + <http://www.gnu.org/licenses/>. */
  92814. #include <sched.h>
  92815. #include <signal.h>
  92816. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c
  92817. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  92818. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  92819. @@ -13,9 +13,8 @@
  92820. Lesser General Public License for more details.
  92821. You should have received a copy of the GNU Lesser General Public
  92822. - License along with the GNU C Library; if not, write to the Free
  92823. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92824. - 02111-1307 USA. */
  92825. + License along with the GNU C Library; if not, see
  92826. + <http://www.gnu.org/licenses/>. */
  92827. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  92828. #include "lowlevellock.c"
  92829. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c
  92830. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  92831. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  92832. @@ -13,9 +13,8 @@
  92833. Lesser General Public License for more details.
  92834. You should have received a copy of the GNU Lesser General Public
  92835. - License along with the GNU C Library; if not, write to the Free
  92836. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92837. - 02111-1307 USA. */
  92838. + License along with the GNU C Library; if not, see
  92839. + <http://www.gnu.org/licenses/>. */
  92840. #include <errno.h>
  92841. #include <sysdep.h>
  92842. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h
  92843. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  92844. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  92845. @@ -12,9 +12,8 @@
  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. #ifndef _LOWLEVELLOCK_H
  92854. #define _LOWLEVELLOCK_H 1
  92855. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c
  92856. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  92857. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  92858. @@ -12,9 +12,8 @@
  92859. Lesser General Public License for more details.
  92860. You should have received a copy of the GNU Lesser General Public
  92861. - License along with the GNU C Library; if not, write to the Free
  92862. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92863. - 02111-1307 USA. */
  92864. + License along with the GNU C Library; if not, see
  92865. + <http://www.gnu.org/licenses/>. */
  92866. #include "pthreadP.h"
  92867. #include <lowlevellock.h>
  92868. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S
  92869. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  92870. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  92871. @@ -12,9 +12,8 @@
  92872. Lesser General Public License for more details.
  92873. You should have received a copy of the GNU Lesser General Public
  92874. - License along with the GNU C Library; if not, write to the Free
  92875. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92876. - 02111-1307 USA. */
  92877. + License along with the GNU C Library; if not, see
  92878. + <http://www.gnu.org/licenses/>. */
  92879. #include <tcb-offsets.h>
  92880. @@ -35,4 +34,4 @@
  92881. cmp r0, #0; /* If we are the parent... */ \
  92882. strne r3, [r2, #PID_OFFSET] /* ... restore the saved PID. */
  92883. -#INCLUDE <../../../../../../../LIBC/SYSDEPS/LINUX/ARM/VFORK.S>
  92884. +#include "../../../../../../../libc/sysdeps/linux/arm/vfork.S"
  92885. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
  92886. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  92887. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  92888. @@ -12,9 +12,8 @@
  92889. Lesser General Public License for more details.
  92890. You should have received a copy of the GNU Lesser General Public
  92891. - License along with the GNU C Library; if not, write to the Free
  92892. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92893. - 02111-1307 USA. */
  92894. + License along with the GNU C Library; if not, see
  92895. + <http://www.gnu.org/licenses/>. */
  92896. #include <sysdep.h>
  92897. #include <tcb-offsets.h>
  92898. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
  92899. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c 2012-05-15 09:20:09.000000000 +0200
  92900. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c 2014-02-03 12:32:57.000000000 +0100
  92901. @@ -13,9 +13,8 @@
  92902. Lesser General Public License for more details.
  92903. You should have received a copy of the GNU Lesser General Public
  92904. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92905. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92906. - Boston, MA 02111-1307, USA. */
  92907. + License along with the GNU C Library; see the file COPYING.LIB. If
  92908. + not, see <http://www.gnu.org/licenses/>. */
  92909. #include <dlfcn.h>
  92910. #include <stdio.h>
  92911. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c
  92912. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c 2012-05-15 09:20:09.000000000 +0200
  92913. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c 2014-02-03 12:32:57.000000000 +0100
  92914. @@ -13,9 +13,8 @@
  92915. Lesser General Public License for more details.
  92916. You should have received a copy of the GNU Lesser General Public
  92917. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92918. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92919. - Boston, MA 02111-1307, USA. */
  92920. + License along with the GNU C Library; see the file COPYING.LIB. If
  92921. + not, see <http://www.gnu.org/licenses/>. */
  92922. #include <dlfcn.h>
  92923. #include <stdio.h>
  92924. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S
  92925. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  92926. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S 2014-02-03 12:32:57.000000000 +0100
  92927. @@ -12,9 +12,8 @@
  92928. Lesser General Public License for more details.
  92929. You should have received a copy of the GNU Lesser General Public
  92930. - License along with the GNU C Library; if not, write to the Free
  92931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92932. - 02111-1307 USA. */
  92933. + License along with the GNU C Library; if not, see
  92934. + <http://www.gnu.org/licenses/>. */
  92935. #include <tcb-offsets.h>
  92936. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
  92937. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  92938. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  92939. @@ -13,9 +13,8 @@
  92940. Lesser General Public License for more details.
  92941. You should have received a copy of the GNU Lesser General Public
  92942. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92943. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92944. - Boston, MA 02111-1307, USA. */
  92945. + License along with the GNU C Library; see the file COPYING.LIB. If
  92946. + not, see <http://www.gnu.org/licenses/>. */
  92947. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  92948. and defines LINK_MAX although filesystems have different maxima. A
  92949. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
  92950. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-05-15 09:20:09.000000000 +0200
  92951. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2014-02-03 12:32:57.000000000 +0100
  92952. @@ -13,9 +13,8 @@
  92953. Lesser General Public License for more details.
  92954. You should have received a copy of the GNU Lesser General Public
  92955. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92956. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92957. - Boston, MA 02111-1307, USA. */
  92958. + License along with the GNU C Library; see the file COPYING.LIB. If
  92959. + not, see <http://www.gnu.org/licenses/>. */
  92960. #ifndef _BITS_POSIX_OPT_H
  92961. #define _BITS_POSIX_OPT_H 1
  92962. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c
  92963. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92964. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92965. @@ -13,9 +13,8 @@
  92966. Lesser General Public License for more details.
  92967. You should have received a copy of the GNU Lesser General Public
  92968. - License along with the GNU C Library; if not, write to the Free
  92969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92970. - 02111-1307 USA. */
  92971. + License along with the GNU C Library; if not, see
  92972. + <http://www.gnu.org/licenses/>. */
  92973. /* Value passed to 'clone' for initialization of the thread register. */
  92974. #define TLS_VALUE pd
  92975. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S
  92976. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S 2012-05-15 09:20:09.000000000 +0200
  92977. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S 2014-02-03 12:32:57.000000000 +0100
  92978. @@ -12,9 +12,8 @@
  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 <sysdep.h>
  92987. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c
  92988. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c 2012-05-15 09:20:09.000000000 +0200
  92989. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c 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. #include <assert.h>
  92999. #include <stdlib.h>
  93000. @@ -58,9 +57,15 @@
  93001. #endif
  93002. }
  93003. -extern __typeof(fork) __libc_fork;
  93004. pid_t
  93005. -__libc_fork (void)
  93006. +#if defined __arm__ && defined __thumb__ && __GNUC_PREREQ (4,6)
  93007. +/* GCC PR target/53735
  93008. + * In thumb1 we run out of registers when compiling with Os so relax that
  93009. + * to have more registers available for spilling by using O2 here.
  93010. + */
  93011. +attribute_optimize("O2")
  93012. +#endif
  93013. +fork (void)
  93014. {
  93015. pid_t pid;
  93016. struct used_handler
  93017. @@ -223,7 +228,4 @@
  93018. return pid;
  93019. }
  93020. -weak_alias(__libc_fork,__fork)
  93021. -libc_hidden_proto(fork)
  93022. -weak_alias(__libc_fork,fork)
  93023. -libc_hidden_weak(fork)
  93024. +libc_hidden_def(fork)
  93025. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h
  93026. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h 2012-05-15 09:20:09.000000000 +0200
  93027. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h 2014-02-03 12:32:57.000000000 +0100
  93028. @@ -13,9 +13,8 @@
  93029. Lesser General Public License for more details.
  93030. You should have received a copy of the GNU Lesser General Public
  93031. - License along with the GNU C Library; if not, write to the Free
  93032. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93033. - 02111-1307 USA. */
  93034. + License along with the GNU C Library; if not, see
  93035. + <http://www.gnu.org/licenses/>. */
  93036. #include <lowlevellock.h>
  93037. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c
  93038. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c 2012-05-15 09:20:09.000000000 +0200
  93039. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c 2014-02-03 12:32:57.000000000 +0100
  93040. @@ -13,14 +13,17 @@
  93041. Lesser General Public License for more details.
  93042. You should have received a copy of the GNU Lesser General Public
  93043. - License along with the GNU C Library; if not, write to the Free
  93044. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93045. - 02111-1307 USA. */
  93046. + License along with the GNU C Library; if not, see
  93047. + <http://www.gnu.org/licenses/>. */
  93048. #include <unistd.h>
  93049. #include <tls.h>
  93050. #include <sysdep.h>
  93051. +#ifdef __NR_getxpid
  93052. +# undef __NR_getpid
  93053. +# define __NR_getpid __NR_getxpid
  93054. +#endif
  93055. #ifndef NOT_IN_libc
  93056. static inline __attribute__((always_inline)) pid_t really_getpid (pid_t oldval);
  93057. @@ -46,8 +49,7 @@
  93058. }
  93059. #endif
  93060. -extern __typeof(getpid) __getpid;
  93061. -pid_t
  93062. +static pid_t
  93063. __getpid (void)
  93064. {
  93065. #ifdef NOT_IN_libc
  93066. @@ -60,6 +62,8 @@
  93067. #endif
  93068. return result;
  93069. }
  93070. -libc_hidden_proto(getpid)
  93071. weak_alias(__getpid, getpid)
  93072. libc_hidden_weak(getpid)
  93073. +#if !defined NOT_IN_libc && !defined __NR_getppid
  93074. +strong_alias(getpid,getppid)
  93075. +#endif
  93076. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
  93077. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  93078. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  93079. @@ -12,9 +12,8 @@
  93080. Lesser General Public License for more details.
  93081. You should have received a copy of the GNU Lesser General Public
  93082. - License along with the GNU C Library; if not, write to the Free
  93083. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93084. - 02111-1307 USA. */
  93085. + License along with the GNU C Library; if not, see
  93086. + <http://www.gnu.org/licenses/>. */
  93087. #ifndef _BITS_PTHREADTYPES_H
  93088. #define _BITS_PTHREADTYPES_H 1
  93089. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h
  93090. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  93091. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  93092. @@ -13,9 +13,8 @@
  93093. Lesser General Public License for more details.
  93094. You should have received a copy of the GNU Lesser General Public
  93095. - License along with the GNU C Library; if not, write to the Free
  93096. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93097. - 02111-1307 USA. */
  93098. + License along with the GNU C Library; if not, see
  93099. + <http://www.gnu.org/licenses/>. */
  93100. #ifndef _SEMAPHORE_H
  93101. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  93102. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c
  93103. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c 2012-05-15 09:20:09.000000000 +0200
  93104. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c 2014-02-03 12:32:57.000000000 +0100
  93105. @@ -13,9 +13,8 @@
  93106. Lesser General Public License for more details.
  93107. You should have received a copy of the GNU Lesser General Public
  93108. - License along with the GNU C Library; if not, write to the Free
  93109. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93110. - 02111-1307 USA. */
  93111. + License along with the GNU C Library; if not, see
  93112. + <http://www.gnu.org/licenses/>. */
  93113. /* The "thread register" gets initialized from a segment descriptor.
  93114. Initialize such a descriptor first. */
  93115. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c
  93116. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c 2012-05-15 09:20:09.000000000 +0200
  93117. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c 2014-02-03 12:32:57.000000000 +0100
  93118. @@ -13,9 +13,8 @@
  93119. Lesser General Public License for more details.
  93120. You should have received a copy of the GNU Lesser General Public
  93121. - License along with the GNU C Library; if not, write to the Free
  93122. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93123. - 02111-1307 USA. */
  93124. + License along with the GNU C Library; if not, see
  93125. + <http://www.gnu.org/licenses/>. */
  93126. #include <sched.h>
  93127. #include <signal.h>
  93128. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
  93129. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  93130. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  93131. @@ -13,8 +13,7 @@
  93132. Lesser General Public License for more details.
  93133. You should have received a copy of the GNU Lesser General Public
  93134. - License along with the GNU C Library; if not, write to the Free
  93135. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93136. - 02111-1307 USA. */
  93137. + License along with the GNU C Library; if not, see
  93138. + <http://www.gnu.org/licenses/>. */
  93139. #include "lowlevellock.S"
  93140. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
  93141. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  93142. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  93143. @@ -13,9 +13,8 @@
  93144. Lesser General Public License for more details.
  93145. You should have received a copy of the GNU Lesser General Public
  93146. - License along with the GNU C Library; if not, write to the Free
  93147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93148. - 02111-1307 USA. */
  93149. + License along with the GNU C Library; if not, see
  93150. + <http://www.gnu.org/licenses/>. */
  93151. #include <sysdep.h>
  93152. #include <pthread-errnos.h>
  93153. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S
  93154. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  93155. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  93156. @@ -13,9 +13,8 @@
  93157. Lesser General Public License for more details.
  93158. You should have received a copy of the GNU Lesser General Public
  93159. - License along with the GNU C Library; if not, write to the Free
  93160. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93161. - 02111-1307 USA. */
  93162. + License along with the GNU C Library; if not, see
  93163. + <http://www.gnu.org/licenses/>. */
  93164. #include <sysdep.h>
  93165. #include <pthread-errnos.h>
  93166. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
  93167. --- 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
  93168. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  93169. @@ -13,9 +13,8 @@
  93170. Lesser General Public License for more details.
  93171. You should have received a copy of the GNU Lesser General Public
  93172. - License along with the GNU C Library; if not, write to the Free
  93173. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93174. - 02111-1307 USA. */
  93175. + License along with the GNU C Library; if not, see
  93176. + <http://www.gnu.org/licenses/>. */
  93177. #include <sysdep.h>
  93178. #include <lowlevellock.h>
  93179. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
  93180. --- 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
  93181. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  93182. @@ -13,9 +13,8 @@
  93183. Lesser General Public License for more details.
  93184. You should have received a copy of the GNU Lesser General Public
  93185. - License along with the GNU C Library; if not, write to the Free
  93186. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93187. - 02111-1307 USA. */
  93188. + License along with the GNU C Library; if not, see
  93189. + <http://www.gnu.org/licenses/>. */
  93190. #include <sysdep.h>
  93191. #include <lowlevellock.h>
  93192. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
  93193. --- 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
  93194. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  93195. @@ -13,9 +13,8 @@
  93196. Lesser General Public License for more details.
  93197. You should have received a copy of the GNU Lesser General Public
  93198. - License along with the GNU C Library; if not, write to the Free
  93199. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93200. - 02111-1307 USA. */
  93201. + License along with the GNU C Library; if not, see
  93202. + <http://www.gnu.org/licenses/>. */
  93203. #include <sysdep.h>
  93204. #include <lowlevellock.h>
  93205. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
  93206. --- 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
  93207. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93208. @@ -13,9 +13,8 @@
  93209. Lesser General Public License for more details.
  93210. You should have received a copy of the GNU Lesser General Public
  93211. - License along with the GNU C Library; if not, write to the Free
  93212. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93213. - 02111-1307 USA. */
  93214. + License along with the GNU C Library; if not, see
  93215. + <http://www.gnu.org/licenses/>. */
  93216. #include <sysdep.h>
  93217. #include <lowlevellock.h>
  93218. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
  93219. --- 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
  93220. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  93221. @@ -13,9 +13,8 @@
  93222. Lesser General Public License for more details.
  93223. You should have received a copy of the GNU Lesser General Public
  93224. - License along with the GNU C Library; if not, write to the Free
  93225. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93226. - 02111-1307 USA. */
  93227. + License along with the GNU C Library; if not, see
  93228. + <http://www.gnu.org/licenses/>. */
  93229. #include <sysdep.h>
  93230. #include <lowlevellock.h>
  93231. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
  93232. --- 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
  93233. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  93234. @@ -13,9 +13,8 @@
  93235. Lesser General Public License for more details.
  93236. You should have received a copy of the GNU Lesser General Public
  93237. - License along with the GNU C Library; if not, write to the Free
  93238. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93239. - 02111-1307 USA. */
  93240. + License along with the GNU C Library; if not, see
  93241. + <http://www.gnu.org/licenses/>. */
  93242. #include <sysdep.h>
  93243. #include <lowlevellock.h>
  93244. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
  93245. --- 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
  93246. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  93247. @@ -13,9 +13,8 @@
  93248. Lesser General Public License for more details.
  93249. You should have received a copy of the GNU Lesser General Public
  93250. - License along with the GNU C Library; if not, write to the Free
  93251. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93252. - 02111-1307 USA. */
  93253. + License along with the GNU C Library; if not, see
  93254. + <http://www.gnu.org/licenses/>. */
  93255. #include <sysdep.h>
  93256. #include <lowlevellock.h>
  93257. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
  93258. --- 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
  93259. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  93260. @@ -13,9 +13,8 @@
  93261. Lesser General Public License for more details.
  93262. You should have received a copy of the GNU Lesser General Public
  93263. - License along with the GNU C Library; if not, write to the Free
  93264. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93265. - 02111-1307 USA. */
  93266. + License along with the GNU C Library; if not, see
  93267. + <http://www.gnu.org/licenses/>. */
  93268. #include <sysdep.h>
  93269. #include <lowlevellock.h>
  93270. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
  93271. --- 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
  93272. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  93273. @@ -13,9 +13,8 @@
  93274. Lesser General Public License for more details.
  93275. You should have received a copy of the GNU Lesser General Public
  93276. - License along with the GNU C Library; if not, write to the Free
  93277. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93278. - 02111-1307 USA. */
  93279. + License along with the GNU C Library; if not, see
  93280. + <http://www.gnu.org/licenses/>. */
  93281. #include <sysdep.h>
  93282. #include <lowlevellock.h>
  93283. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
  93284. --- 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
  93285. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  93286. @@ -13,9 +13,8 @@
  93287. Lesser General Public License for more details.
  93288. You should have received a copy of the GNU Lesser General Public
  93289. - License along with the GNU C Library; if not, write to the Free
  93290. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93291. - 02111-1307 USA. */
  93292. + License along with the GNU C Library; if not, see
  93293. + <http://www.gnu.org/licenses/>. */
  93294. #include <sysdep.h>
  93295. #include <lowlevellock.h>
  93296. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
  93297. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  93298. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  93299. @@ -13,9 +13,8 @@
  93300. Lesser General Public License for more details.
  93301. You should have received a copy of the GNU Lesser General Public
  93302. - License along with the GNU C Library; if not, write to the Free
  93303. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93304. - 02111-1307 USA. */
  93305. + License along with the GNU C Library; if not, see
  93306. + <http://www.gnu.org/licenses/>. */
  93307. #include <sysdep.h>
  93308. #include <pthread-errnos.h>
  93309. @@ -25,10 +24,10 @@
  93310. .text
  93311. - .globl __new_sem_post
  93312. - .type __new_sem_post,@function
  93313. + .globl sem_post
  93314. + .type sem_post,@function
  93315. .align 16
  93316. -__new_sem_post:
  93317. +sem_post:
  93318. cfi_startproc
  93319. pushl %ebx
  93320. cfi_adjust_cfa_offset(4)
  93321. @@ -126,9 +125,7 @@
  93322. cfi_restore(%ebx)
  93323. ret
  93324. cfi_endproc
  93325. - .size __new_sem_post,.-__new_sem_post
  93326. -weak_alias(__new_sem_post, sem_post)
  93327. -
  93328. + .size sem_post,.-sem_post
  93329. #ifdef __PIC__
  93330. .section .gnu.linkonce.t.__x86.get_pc_thunk.bx,"ax",@progbits
  93331. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
  93332. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  93333. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93334. @@ -13,9 +13,8 @@
  93335. Lesser General Public License for more details.
  93336. You should have received a copy of the GNU Lesser General Public
  93337. - License along with the GNU C Library; if not, write to the Free
  93338. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93339. - 02111-1307 USA. */
  93340. + License along with the GNU C Library; if not, see
  93341. + <http://www.gnu.org/licenses/>. */
  93342. #include <sysdep.h>
  93343. #include <pthread-errnos.h>
  93344. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
  93345. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  93346. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  93347. @@ -13,9 +13,8 @@
  93348. Lesser General Public License for more details.
  93349. You should have received a copy of the GNU Lesser General Public
  93350. - License along with the GNU C Library; if not, write to the Free
  93351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93352. - 02111-1307 USA. */
  93353. + License along with the GNU C Library; if not, see
  93354. + <http://www.gnu.org/licenses/>. */
  93355. #include <sysdep.h>
  93356. #include <pthread-errnos.h>
  93357. @@ -23,10 +22,10 @@
  93358. .text
  93359. - .globl __new_sem_trywait
  93360. - .type __new_sem_trywait,@function
  93361. + .globl sem_trywait
  93362. + .type sem_trywait,@function
  93363. .align 16
  93364. -__new_sem_trywait:
  93365. +sem_trywait:
  93366. movl 4(%esp), %ecx
  93367. movl (%ecx), %eax
  93368. @@ -63,9 +62,7 @@
  93369. #endif
  93370. orl $-1, %eax
  93371. ret
  93372. - .size __new_sem_trywait,.-__new_sem_trywait
  93373. -weak_alias(__new_sem_trywait, sem_trywait)
  93374. -
  93375. + .size sem_trywait,.-sem_trywait
  93376. #ifdef __PIC__
  93377. .section .gnu.linkonce.t.__x86.get_pc_thunk.cx,"ax",@progbits
  93378. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
  93379. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  93380. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  93381. @@ -13,9 +13,8 @@
  93382. Lesser General Public License for more details.
  93383. You should have received a copy of the GNU Lesser General Public
  93384. - License along with the GNU C Library; if not, write to the Free
  93385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93386. - 02111-1307 USA. */
  93387. + License along with the GNU C Library; if not, see
  93388. + <http://www.gnu.org/licenses/>. */
  93389. #include <sysdep.h>
  93390. #include <pthread-errnos.h>
  93391. @@ -29,10 +28,10 @@
  93392. .text
  93393. - .globl __new_sem_wait
  93394. - .type __new_sem_wait,@function
  93395. + .globl sem_wait
  93396. + .type sem_wait,@function
  93397. .align 16
  93398. -__new_sem_wait:
  93399. +sem_wait:
  93400. .LSTARTCODE:
  93401. pushl %ebx
  93402. .Lpush_ebx:
  93403. @@ -129,8 +128,7 @@
  93404. orl $-1, %eax
  93405. jmp 9b
  93406. - .size __new_sem_wait,.-__new_sem_wait
  93407. -weak_alias(__new_sem_wait, sem_wait)
  93408. + .size sem_wait,.-sem_wait
  93409. .type sem_wait_cleanup,@function
  93410. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S
  93411. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  93412. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  93413. @@ -13,8 +13,7 @@
  93414. Lesser General Public License for more details.
  93415. You should have received a copy of the GNU Lesser General Public
  93416. - License along with the GNU C Library; if not, write to the Free
  93417. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93418. - 02111-1307 USA. */
  93419. + License along with the GNU C Library; if not, see
  93420. + <http://www.gnu.org/licenses/>. */
  93421. #include "../i486/lowlevellock.S"
  93422. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S
  93423. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  93424. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  93425. @@ -13,8 +13,7 @@
  93426. Lesser General Public License for more details.
  93427. You should have received a copy of the GNU Lesser General Public
  93428. - License along with the GNU C Library; if not, write to the Free
  93429. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93430. - 02111-1307 USA. */
  93431. + License along with the GNU C Library; if not, see
  93432. + <http://www.gnu.org/licenses/>. */
  93433. #include "../i486/lowlevelrobustlock.S"
  93434. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S
  93435. --- 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
  93436. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  93437. @@ -13,8 +13,7 @@
  93438. Lesser General Public License for more details.
  93439. You should have received a copy of the GNU Lesser General Public
  93440. - License along with the GNU C Library; if not, write to the Free
  93441. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93442. - 02111-1307 USA. */
  93443. + License along with the GNU C Library; if not, see
  93444. + <http://www.gnu.org/licenses/>. */
  93445. #include "../i486/pthread_barrier_wait.S"
  93446. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S
  93447. --- 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
  93448. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  93449. @@ -13,8 +13,7 @@
  93450. Lesser General Public License for more details.
  93451. You should have received a copy of the GNU Lesser General Public
  93452. - License along with the GNU C Library; if not, write to the Free
  93453. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93454. - 02111-1307 USA. */
  93455. + License along with the GNU C Library; if not, see
  93456. + <http://www.gnu.org/licenses/>. */
  93457. #include "../i486/pthread_cond_broadcast.S"
  93458. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S
  93459. --- 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
  93460. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  93461. @@ -13,8 +13,7 @@
  93462. Lesser General Public License for more details.
  93463. You should have received a copy of the GNU Lesser General Public
  93464. - License along with the GNU C Library; if not, write to the Free
  93465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93466. - 02111-1307 USA. */
  93467. + License along with the GNU C Library; if not, see
  93468. + <http://www.gnu.org/licenses/>. */
  93469. #include "../i486/pthread_cond_signal.S"
  93470. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S
  93471. --- 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
  93472. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93473. @@ -13,8 +13,7 @@
  93474. Lesser General Public License for more details.
  93475. You should have received a copy of the GNU Lesser General Public
  93476. - License along with the GNU C Library; if not, write to the Free
  93477. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93478. - 02111-1307 USA. */
  93479. + License along with the GNU C Library; if not, see
  93480. + <http://www.gnu.org/licenses/>. */
  93481. #include "../i486/pthread_cond_timedwait.S"
  93482. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S
  93483. --- 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
  93484. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  93485. @@ -13,8 +13,7 @@
  93486. Lesser General Public License for more details.
  93487. You should have received a copy of the GNU Lesser General Public
  93488. - License along with the GNU C Library; if not, write to the Free
  93489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93490. - 02111-1307 USA. */
  93491. + License along with the GNU C Library; if not, see
  93492. + <http://www.gnu.org/licenses/>. */
  93493. #include "../i486/pthread_cond_wait.S"
  93494. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S
  93495. --- 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
  93496. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  93497. @@ -13,8 +13,7 @@
  93498. Lesser General Public License for more details.
  93499. You should have received a copy of the GNU Lesser General Public
  93500. - License along with the GNU C Library; if not, write to the Free
  93501. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93502. - 02111-1307 USA. */
  93503. + License along with the GNU C Library; if not, see
  93504. + <http://www.gnu.org/licenses/>. */
  93505. #include "../i486/pthread_rwlock_rdlock.S"
  93506. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S
  93507. --- 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
  93508. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  93509. @@ -13,8 +13,7 @@
  93510. Lesser General Public License for more details.
  93511. You should have received a copy of the GNU Lesser General Public
  93512. - License along with the GNU C Library; if not, write to the Free
  93513. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93514. - 02111-1307 USA. */
  93515. + License along with the GNU C Library; if not, see
  93516. + <http://www.gnu.org/licenses/>. */
  93517. #include "../i486/pthread_rwlock_timedrdlock.S"
  93518. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S
  93519. --- 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
  93520. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  93521. @@ -13,8 +13,7 @@
  93522. Lesser General Public License for more details.
  93523. You should have received a copy of the GNU Lesser General Public
  93524. - License along with the GNU C Library; if not, write to the Free
  93525. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93526. - 02111-1307 USA. */
  93527. + License along with the GNU C Library; if not, see
  93528. + <http://www.gnu.org/licenses/>. */
  93529. #include "../i486/pthread_rwlock_timedwrlock.S"
  93530. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S
  93531. --- 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
  93532. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  93533. @@ -13,8 +13,7 @@
  93534. Lesser General Public License for more details.
  93535. You should have received a copy of the GNU Lesser General Public
  93536. - License along with the GNU C Library; if not, write to the Free
  93537. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93538. - 02111-1307 USA. */
  93539. + License along with the GNU C Library; if not, see
  93540. + <http://www.gnu.org/licenses/>. */
  93541. #include "../i486/pthread_rwlock_unlock.S"
  93542. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S
  93543. --- 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
  93544. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  93545. @@ -13,8 +13,7 @@
  93546. Lesser General Public License for more details.
  93547. You should have received a copy of the GNU Lesser General Public
  93548. - License along with the GNU C Library; if not, write to the Free
  93549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93550. - 02111-1307 USA. */
  93551. + License along with the GNU C Library; if not, see
  93552. + <http://www.gnu.org/licenses/>. */
  93553. #include "../i486/pthread_rwlock_wrlock.S"
  93554. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S
  93555. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  93556. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  93557. @@ -13,8 +13,7 @@
  93558. Lesser General Public License for more details.
  93559. You should have received a copy of the GNU Lesser General Public
  93560. - License along with the GNU C Library; if not, write to the Free
  93561. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93562. - 02111-1307 USA. */
  93563. + License along with the GNU C Library; if not, see
  93564. + <http://www.gnu.org/licenses/>. */
  93565. #include "../i486/sem_post.S"
  93566. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S
  93567. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  93568. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93569. @@ -13,8 +13,7 @@
  93570. Lesser General Public License for more details.
  93571. You should have received a copy of the GNU Lesser General Public
  93572. - License along with the GNU C Library; if not, write to the Free
  93573. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93574. - 02111-1307 USA. */
  93575. + License along with the GNU C Library; if not, see
  93576. + <http://www.gnu.org/licenses/>. */
  93577. #include "../i486/sem_timedwait.S"
  93578. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S
  93579. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  93580. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  93581. @@ -13,8 +13,7 @@
  93582. Lesser General Public License for more details.
  93583. You should have received a copy of the GNU Lesser General Public
  93584. - License along with the GNU C Library; if not, write to the Free
  93585. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93586. - 02111-1307 USA. */
  93587. + License along with the GNU C Library; if not, see
  93588. + <http://www.gnu.org/licenses/>. */
  93589. #include "../i486/sem_trywait.S"
  93590. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S
  93591. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  93592. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  93593. @@ -13,8 +13,7 @@
  93594. Lesser General Public License for more details.
  93595. You should have received a copy of the GNU Lesser General Public
  93596. - License along with the GNU C Library; if not, write to the Free
  93597. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93598. - 02111-1307 USA. */
  93599. + License along with the GNU C Library; if not, see
  93600. + <http://www.gnu.org/licenses/>. */
  93601. #include "../i486/sem_wait.S"
  93602. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S
  93603. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  93604. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  93605. @@ -13,8 +13,7 @@
  93606. Lesser General Public License for more details.
  93607. You should have received a copy of the GNU Lesser General Public
  93608. - License along with the GNU C Library; if not, write to the Free
  93609. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93610. - 02111-1307 USA. */
  93611. + License along with the GNU C Library; if not, see
  93612. + <http://www.gnu.org/licenses/>. */
  93613. #include "../i486/lowlevellock.S"
  93614. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S
  93615. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  93616. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  93617. @@ -13,8 +13,7 @@
  93618. Lesser General Public License for more details.
  93619. You should have received a copy of the GNU Lesser General Public
  93620. - License along with the GNU C Library; if not, write to the Free
  93621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93622. - 02111-1307 USA. */
  93623. + License along with the GNU C Library; if not, see
  93624. + <http://www.gnu.org/licenses/>. */
  93625. #include "../i486/lowlevelrobustlock.S"
  93626. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S
  93627. --- 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
  93628. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  93629. @@ -13,8 +13,7 @@
  93630. Lesser General Public License for more details.
  93631. You should have received a copy of the GNU Lesser General Public
  93632. - License along with the GNU C Library; if not, write to the Free
  93633. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93634. - 02111-1307 USA. */
  93635. + License along with the GNU C Library; if not, see
  93636. + <http://www.gnu.org/licenses/>. */
  93637. #include "../i486/pthread_barrier_wait.S"
  93638. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S
  93639. --- 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
  93640. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  93641. @@ -13,8 +13,7 @@
  93642. Lesser General Public License for more details.
  93643. You should have received a copy of the GNU Lesser General Public
  93644. - License along with the GNU C Library; if not, write to the Free
  93645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93646. - 02111-1307 USA. */
  93647. + License along with the GNU C Library; if not, see
  93648. + <http://www.gnu.org/licenses/>. */
  93649. #include "../i486/pthread_cond_broadcast.S"
  93650. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S
  93651. --- 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
  93652. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  93653. @@ -13,8 +13,7 @@
  93654. Lesser General Public License for more details.
  93655. You should have received a copy of the GNU Lesser General Public
  93656. - License along with the GNU C Library; if not, write to the Free
  93657. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93658. - 02111-1307 USA. */
  93659. + License along with the GNU C Library; if not, see
  93660. + <http://www.gnu.org/licenses/>. */
  93661. #include "../i486/pthread_cond_signal.S"
  93662. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S
  93663. --- 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
  93664. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93665. @@ -13,9 +13,8 @@
  93666. Lesser General Public License for more details.
  93667. You should have received a copy of the GNU Lesser General Public
  93668. - License along with the GNU C Library; if not, write to the Free
  93669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93670. - 02111-1307 USA. */
  93671. + License along with the GNU C Library; if not, see
  93672. + <http://www.gnu.org/licenses/>. */
  93673. #define HAVE_CMOV 1
  93674. #include "../i486/pthread_cond_timedwait.S"
  93675. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S
  93676. --- 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
  93677. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  93678. @@ -13,8 +13,7 @@
  93679. Lesser General Public License for more details.
  93680. You should have received a copy of the GNU Lesser General Public
  93681. - License along with the GNU C Library; if not, write to the Free
  93682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93683. - 02111-1307 USA. */
  93684. + License along with the GNU C Library; if not, see
  93685. + <http://www.gnu.org/licenses/>. */
  93686. #include "../i486/pthread_cond_wait.S"
  93687. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S
  93688. --- 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
  93689. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  93690. @@ -13,8 +13,7 @@
  93691. Lesser General Public License for more details.
  93692. You should have received a copy of the GNU Lesser General Public
  93693. - License along with the GNU C Library; if not, write to the Free
  93694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93695. - 02111-1307 USA. */
  93696. + License along with the GNU C Library; if not, see
  93697. + <http://www.gnu.org/licenses/>. */
  93698. #include "../i486/pthread_rwlock_rdlock.S"
  93699. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S
  93700. --- 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
  93701. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  93702. @@ -13,8 +13,7 @@
  93703. Lesser General Public License for more details.
  93704. You should have received a copy of the GNU Lesser General Public
  93705. - License along with the GNU C Library; if not, write to the Free
  93706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93707. - 02111-1307 USA. */
  93708. + License along with the GNU C Library; if not, see
  93709. + <http://www.gnu.org/licenses/>. */
  93710. #include "../i486/pthread_rwlock_timedrdlock.S"
  93711. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S
  93712. --- 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
  93713. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  93714. @@ -13,8 +13,7 @@
  93715. Lesser General Public License for more details.
  93716. You should have received a copy of the GNU Lesser General Public
  93717. - License along with the GNU C Library; if not, write to the Free
  93718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93719. - 02111-1307 USA. */
  93720. + License along with the GNU C Library; if not, see
  93721. + <http://www.gnu.org/licenses/>. */
  93722. #include "../i486/pthread_rwlock_timedwrlock.S"
  93723. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S
  93724. --- 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
  93725. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  93726. @@ -13,9 +13,8 @@
  93727. Lesser General Public License for more details.
  93728. You should have received a copy of the GNU Lesser General Public
  93729. - License along with the GNU C Library; if not, write to the Free
  93730. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93731. - 02111-1307 USA. */
  93732. + License along with the GNU C Library; if not, see
  93733. + <http://www.gnu.org/licenses/>. */
  93734. #define HAVE_CMOV 1
  93735. #include "../i486/pthread_rwlock_unlock.S"
  93736. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S
  93737. --- 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
  93738. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  93739. @@ -13,8 +13,7 @@
  93740. Lesser General Public License for more details.
  93741. You should have received a copy of the GNU Lesser General Public
  93742. - License along with the GNU C Library; if not, write to the Free
  93743. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93744. - 02111-1307 USA. */
  93745. + License along with the GNU C Library; if not, see
  93746. + <http://www.gnu.org/licenses/>. */
  93747. #include "../i486/pthread_rwlock_wrlock.S"
  93748. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S
  93749. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  93750. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  93751. @@ -13,8 +13,7 @@
  93752. Lesser General Public License for more details.
  93753. You should have received a copy of the GNU Lesser General Public
  93754. - License along with the GNU C Library; if not, write to the Free
  93755. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93756. - 02111-1307 USA. */
  93757. + License along with the GNU C Library; if not, see
  93758. + <http://www.gnu.org/licenses/>. */
  93759. #include "../i486/sem_post.S"
  93760. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S
  93761. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  93762. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93763. @@ -13,8 +13,7 @@
  93764. Lesser General Public License for more details.
  93765. You should have received a copy of the GNU Lesser General Public
  93766. - License along with the GNU C Library; if not, write to the Free
  93767. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93768. - 02111-1307 USA. */
  93769. + License along with the GNU C Library; if not, see
  93770. + <http://www.gnu.org/licenses/>. */
  93771. #include "../i486/sem_timedwait.S"
  93772. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S
  93773. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  93774. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  93775. @@ -13,8 +13,7 @@
  93776. Lesser General Public License for more details.
  93777. You should have received a copy of the GNU Lesser General Public
  93778. - License along with the GNU C Library; if not, write to the Free
  93779. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93780. - 02111-1307 USA. */
  93781. + License along with the GNU C Library; if not, see
  93782. + <http://www.gnu.org/licenses/>. */
  93783. #include "../i486/sem_trywait.S"
  93784. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S
  93785. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  93786. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  93787. @@ -13,8 +13,7 @@
  93788. Lesser General Public License for more details.
  93789. You should have received a copy of the GNU Lesser General Public
  93790. - License along with the GNU C Library; if not, write to the Free
  93791. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93792. - 02111-1307 USA. */
  93793. + License along with the GNU C Library; if not, see
  93794. + <http://www.gnu.org/licenses/>. */
  93795. #include "../i486/sem_wait.S"
  93796. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
  93797. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  93798. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  93799. @@ -13,9 +13,8 @@
  93800. Lesser General Public License for more details.
  93801. You should have received a copy of the GNU Lesser General Public
  93802. - License along with the GNU C Library; if not, write to the Free
  93803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93804. - 02111-1307 USA. */
  93805. + License along with the GNU C Library; if not, see
  93806. + <http://www.gnu.org/licenses/>. */
  93807. #ifndef _LOWLEVELLOCK_H
  93808. #define _LOWLEVELLOCK_H 1
  93809. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
  93810. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  93811. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  93812. @@ -13,9 +13,8 @@
  93813. Lesser General Public License for more details.
  93814. You should have received a copy of the GNU Lesser General Public
  93815. - License along with the GNU C Library; if not, write to the Free
  93816. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93817. - 02111-1307 USA. */
  93818. + License along with the GNU C Library; if not, see
  93819. + <http://www.gnu.org/licenses/>. */
  93820. #include <unwindbuf.h>
  93821. #include <sysdep.h>
  93822. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S
  93823. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  93824. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  93825. @@ -13,9 +13,8 @@
  93826. Lesser General Public License for more details.
  93827. You should have received a copy of the GNU Lesser General Public
  93828. - License along with the GNU C Library; if not, write to the Free
  93829. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93830. - 02111-1307 USA. */
  93831. + License along with the GNU C Library; if not, see
  93832. + <http://www.gnu.org/licenses/>. */
  93833. #include <sysdep.h>
  93834. #define _ERRNO_H 1
  93835. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h
  93836. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-05-15 09:20:09.000000000 +0200
  93837. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2014-02-03 12:32:57.000000000 +0100
  93838. @@ -14,8 +14,7 @@
  93839. You should have received a copy of the GNU Library General Public
  93840. License along with the GNU C Library; see the file COPYING.LIB. If not,
  93841. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  93842. - Boston, MA 02111-1307, USA. */
  93843. + see <http://www.gnu.org/licenses/>. */
  93844. #include <errno.h>
  93845. #include <fcntl.h>
  93846. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
  93847. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  93848. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  93849. @@ -13,9 +13,8 @@
  93850. Lesser General Public License for more details.
  93851. You should have received a copy of the GNU Lesser General Public
  93852. - License along with the GNU C Library; if not, write to the Free
  93853. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93854. - 02111-1307 USA. */
  93855. + License along with the GNU C Library; if not, see
  93856. + <http://www.gnu.org/licenses/>. */
  93857. #include <sysdep.h>
  93858. #include <tls.h>
  93859. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S
  93860. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  93861. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S 2014-02-03 12:32:57.000000000 +0100
  93862. @@ -12,9 +12,8 @@
  93863. Lesser General Public License for more details.
  93864. You should have received a copy of the GNU Lesser General Public
  93865. - License along with the GNU C Library; if not, write to the Free
  93866. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93867. - 02111-1307 USA. */
  93868. + License along with the GNU C Library; if not, see
  93869. + <http://www.gnu.org/licenses/>. */
  93870. #include <tcb-offsets.h>
  93871. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h
  93872. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h 2012-05-15 09:20:09.000000000 +0200
  93873. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h 2014-02-03 12:32:57.000000000 +0100
  93874. @@ -13,9 +13,8 @@
  93875. Lesser General Public License for more details.
  93876. You should have received a copy of the GNU Lesser General Public
  93877. - License along with the GNU C Library; if not, write to the Free
  93878. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93879. - 02111-1307 USA. */
  93880. + License along with the GNU C Library; if not, see
  93881. + <http://www.gnu.org/licenses/>. */
  93882. #ifndef _INTERNALTYPES_H
  93883. #define _INTERNALTYPES_H 1
  93884. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c
  93885. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c 2012-05-15 09:20:09.000000000 +0200
  93886. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c 2014-02-03 12:32:57.000000000 +0100
  93887. @@ -13,9 +13,8 @@
  93888. Lesser General Public License for more details.
  93889. You should have received a copy of the GNU Lesser General Public
  93890. - License along with the GNU C Library; if not, write to the Free
  93891. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93892. - 02111-1307 USA. */
  93893. + License along with the GNU C Library; if not, see
  93894. + <http://www.gnu.org/licenses/>. */
  93895. #include <setjmp.h>
  93896. #include <stddef.h>
  93897. @@ -25,7 +24,6 @@
  93898. #pragma weak __pthread_cleanup_upto
  93899. -void _longjmp_unwind (jmp_buf env, int val);
  93900. void
  93901. _longjmp_unwind (jmp_buf env, int val)
  93902. {
  93903. @@ -38,3 +36,4 @@
  93904. __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME);
  93905. #endif
  93906. }
  93907. +libc_hidden_def(_longjmp_unwind)
  93908. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c
  93909. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  93910. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93911. @@ -13,9 +13,8 @@
  93912. Lesser General Public License for more details.
  93913. You should have received a copy of the GNU Lesser General Public
  93914. - License along with the GNU C Library; if not, write to the Free
  93915. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93916. - 02111-1307 USA. */
  93917. + License along with the GNU C Library; if not, see
  93918. + <http://www.gnu.org/licenses/>. */
  93919. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  93920. #include "lowlevellock.c"
  93921. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
  93922. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c 2012-05-15 09:20:09.000000000 +0200
  93923. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c 2014-02-03 12:32:57.000000000 +0100
  93924. @@ -13,9 +13,8 @@
  93925. Lesser General Public License for more details.
  93926. You should have received a copy of the GNU Lesser General Public
  93927. - License along with the GNU C Library; if not, write to the Free
  93928. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93929. - 02111-1307 USA. */
  93930. + License along with the GNU C Library; if not, see
  93931. + <http://www.gnu.org/licenses/>. */
  93932. #include <pthreadP.h>
  93933. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
  93934. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  93935. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c 2014-02-03 12:32:57.000000000 +0100
  93936. @@ -13,9 +13,8 @@
  93937. Lesser General Public License for more details.
  93938. You should have received a copy of the GNU Lesser General Public
  93939. - License along with the GNU C Library; if not, write to the Free
  93940. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93941. - 02111-1307 USA. */
  93942. + License along with the GNU C Library; if not, see
  93943. + <http://www.gnu.org/licenses/>. */
  93944. #include <unistd.h>
  93945. #include <list.h>
  93946. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
  93947. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  93948. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93949. @@ -14,9 +14,8 @@
  93950. Lesser General Public License for more details.
  93951. You should have received a copy of the GNU Lesser General Public
  93952. - License along with the GNU C Library; if not, write to the Free
  93953. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93954. - 02111-1307 USA. */
  93955. + License along with the GNU C Library; if not, see
  93956. + <http://www.gnu.org/licenses/>. */
  93957. #include <errno.h>
  93958. #include <sysdep.h>
  93959. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c
  93960. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 2012-05-15 09:20:09.000000000 +0200
  93961. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 2014-02-03 12:32:57.000000000 +0100
  93962. @@ -13,9 +13,8 @@
  93963. Lesser General Public License for more details.
  93964. You should have received a copy of the GNU Lesser General Public
  93965. - License along with the GNU C Library; if not, write to the Free
  93966. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93967. - 02111-1307 USA. */
  93968. + License along with the GNU C Library; if not, see
  93969. + <http://www.gnu.org/licenses/>. */
  93970. #include <errno.h>
  93971. #include <sysdep.h>
  93972. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
  93973. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  93974. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch 2014-02-03 12:32:57.000000000 +0100
  93975. @@ -62,22 +62,24 @@
  93976. pthread_getcpuclockid.c pthread_kill.c \
  93977. pthread_mutex_cond_lock.c pthread_yield.c \
  93978. sem_post.c sem_timedwait.c sem_trywait.c sem_wait.c \
  93979. - pt-fork.c pt-sleep.c pthread_sigqueue.c pt-tempname.c \
  93980. - sigtimedwait.c sigwaitinfo.c sigwait.c \
  93981. + pt-tempname.c \
  93982. + pthread_sigqueue.c \
  93983. lowlevellock.c lowlevelrobustlock.c
  93984. +# pt-sleep.c pt-fork.c sigtimedwait.c sigwaitinfo.c sigwait.c
  93985. libpthread_linux_SSRC := #ptw-close.S ptw-open.S ptw-waitid.S ptw-waidpid.S ptw-write.S
  93986. libc_linux_CSRC += libc_pthread_init.c libc_multiple_threads.c \
  93987. register-atfork.c unregister-atfork.c getpid.c \
  93988. - raise.c sleep.c jmp-unwind.c libc-lowlevellock.c
  93989. + raise.c jmp-unwind.c libc-lowlevellock.c
  93990. + #sleep.c
  93991. librt_linux_CSRC += mq_notify.c timer_create.c timer_delete.c \
  93992. timer_getoverr.c timer_gettime.c timer_routines.c \
  93993. timer_settime.c
  93994. # These provide both a cancellable and a not cancellable implementation
  93995. -libc_linux_SSRC = close.S open.S write.S read.S waitpid.S
  93996. +libc_linux_SSRC = #close.S open.S write.S read.S waitpid.S
  93997. libc_linux_SSRC := $(filter-out $(libc_linux_arch_SSRC-OMIT),$(libc_linux_SSRC))
  93998. libpthread_linux_CSRC := $(filter-out $(notdir $(libpthread_linux_arch_OBJS:.o=.c)),$(libpthread_linux_CSRC))
  93999. @@ -141,13 +143,14 @@
  94000. CFLAGS-OMIT-getpid.c = -DNOT_IN_libc -DIS_IN_libpthread
  94001. CFLAGS-OMIT-raise.c = -DNOT_IN_libc -DIS_IN_libpthread
  94002. CFLAGS-OMIT-sleep.c = -DNOT_IN_libc -DIS_IN_libpthread
  94003. +CFLAGS-OMIT-jmp-unwind.c = -DNOT_IN_libc -DIS_IN_libpthread
  94004. CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  94005. -CFLAGS-OMIT-close.S = -DNOT_IN_libc -DIS_IN_libpthread
  94006. -CFLAGS-OMIT-open.S = -DNOT_IN_libc -DIS_IN_libpthread
  94007. -CFLAGS-OMIT-read.S = -DNOT_IN_libc -DIS_IN_libpthread
  94008. -CFLAGS-OMIT-write.S = -DNOT_IN_libc -DIS_IN_libpthread
  94009. -CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc -DIS_IN_libpthread
  94010. +#CFLAGS-OMIT-close.S = -DNOT_IN_libc -DIS_IN_libpthread
  94011. +#CFLAGS-OMIT-open.S = -DNOT_IN_libc -DIS_IN_libpthread
  94012. +#CFLAGS-OMIT-read.S = -DNOT_IN_libc -DIS_IN_libpthread
  94013. +#CFLAGS-OMIT-write.S = -DNOT_IN_libc -DIS_IN_libpthread
  94014. +#CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc -DIS_IN_libpthread
  94015. CFLAGS-OMIT-mq_notify.c = -DIS_IN_libpthread
  94016. CFLAGS-OMIT-timer_create.c = -DIS_IN_libpthread
  94017. @@ -157,11 +160,11 @@
  94018. CFLAGS-OMIT-timer_routines.c = -DIS_IN_libpthread
  94019. CFLAGS-OMIT-timer_settime.c = -DIS_IN_libpthread
  94020. -ASFLAGS-open.S = -D_LIBC_REENTRANT
  94021. -ASFLAGS-close.S = -D_LIBC_REENTRANT
  94022. -ASFLAGS-read.S = -D_LIBC_REENTRANT
  94023. -ASFLAGS-write.S = -D_LIBC_REENTRANT
  94024. -ASFLAGS-waitpid.S = -D_LIBC_REENTRANT
  94025. +#ASFLAGS-open.S = -D_LIBC_REENTRANT
  94026. +#ASFLAGS-close.S = -D_LIBC_REENTRANT
  94027. +#ASFLAGS-read.S = -D_LIBC_REENTRANT
  94028. +#ASFLAGS-write.S = -D_LIBC_REENTRANT
  94029. +#ASFLAGS-waitpid.S = -D_LIBC_REENTRANT
  94030. #
  94031. # Create header files.
  94032. @@ -174,8 +177,6 @@
  94033. CFLAGS-gen_structsem.c = -S
  94034. CFLAGS-gen_unwindbuf.c = -S
  94035. -PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
  94036. -
  94037. PTHREAD_LINUX_SYM := $(notdir $(wildcard $(libpthread_linux_DIR)/*.sym))
  94038. PTHREAD_LINUX_SYM_C := $(addprefix $(libpthread_linux_OUT)/gen_,$(PTHREAD_LINUX_SYM:.sym=.c))
  94039. PTHREAD_LINUX_SYM_S := $(PTHREAD_LINUX_SYM_C:.c=.s)
  94040. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h
  94041. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h 1970-01-01 01:00:00.000000000 +0100
  94042. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  94043. @@ -0,0 +1,181 @@
  94044. +/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
  94045. + This file is part of the GNU C Library.
  94046. +
  94047. + The GNU C Library is free software; you can redistribute it and/or
  94048. + modify it under the terms of the GNU Lesser General Public
  94049. + License as published by the Free Software Foundation; either
  94050. + version 2.1 of the License, or (at your option) any later version.
  94051. +
  94052. + The GNU C Library is distributed in the hope that it will be useful,
  94053. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94054. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94055. + Lesser General Public License for more details.
  94056. +
  94057. + You should have received a copy of the GNU Lesser General Public
  94058. + License along with the GNU C Library; if not, write to the Free
  94059. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94060. + 02111-1307 USA. */
  94061. +
  94062. +#ifndef _BITS_PTHREADTYPES_H
  94063. +#define _BITS_PTHREADTYPES_H 1
  94064. +
  94065. +#include <endian.h>
  94066. +
  94067. +#define __SIZEOF_PTHREAD_ATTR_T 36
  94068. +#define __SIZEOF_PTHREAD_MUTEX_T 24
  94069. +#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
  94070. +#define __SIZEOF_PTHREAD_COND_T 48
  94071. +#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
  94072. +#define __SIZEOF_PTHREAD_CONDATTR_T 4
  94073. +#define __SIZEOF_PTHREAD_RWLOCK_T 32
  94074. +#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
  94075. +#define __SIZEOF_PTHREAD_BARRIER_T 20
  94076. +#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
  94077. +
  94078. +
  94079. +/* Thread identifiers. The structure of the attribute type is not
  94080. + exposed on purpose. */
  94081. +typedef unsigned long int pthread_t;
  94082. +
  94083. +
  94084. +typedef union
  94085. +{
  94086. + char __size[__SIZEOF_PTHREAD_ATTR_T];
  94087. + long int __align;
  94088. +} pthread_attr_t;
  94089. +
  94090. +
  94091. +typedef struct __pthread_internal_slist
  94092. +{
  94093. + struct __pthread_internal_slist *__next;
  94094. +} __pthread_slist_t;
  94095. +
  94096. +
  94097. +/* Data structures for mutex handling. The structure of the attribute
  94098. + type is not exposed on purpose. */
  94099. +typedef union
  94100. +{
  94101. + struct __pthread_mutex_s
  94102. + {
  94103. + int __lock;
  94104. + unsigned int __count;
  94105. + int __owner;
  94106. + /* KIND must stay at this position in the structure to maintain
  94107. + binary compatibility. */
  94108. + int __kind;
  94109. + unsigned int __nusers;
  94110. + __extension__ union
  94111. + {
  94112. + int __spins;
  94113. + __pthread_slist_t __list;
  94114. + };
  94115. + } __data;
  94116. + char __size[__SIZEOF_PTHREAD_MUTEX_T];
  94117. + long int __align;
  94118. +} pthread_mutex_t;
  94119. +
  94120. +typedef union
  94121. +{
  94122. + char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
  94123. + long int __align;
  94124. +} pthread_mutexattr_t;
  94125. +
  94126. +
  94127. +/* Data structure for conditional variable handling. The structure of
  94128. + the attribute type is not exposed on purpose. */
  94129. +typedef union
  94130. +{
  94131. + struct
  94132. + {
  94133. + int __lock;
  94134. + unsigned int __futex;
  94135. + __extension__ unsigned long long int __total_seq;
  94136. + __extension__ unsigned long long int __wakeup_seq;
  94137. + __extension__ unsigned long long int __woken_seq;
  94138. + void *__mutex;
  94139. + unsigned int __nwaiters;
  94140. + unsigned int __broadcast_seq;
  94141. + } __data;
  94142. + char __size[__SIZEOF_PTHREAD_COND_T];
  94143. + __extension__ long long int __align;
  94144. +} pthread_cond_t;
  94145. +
  94146. +typedef union
  94147. +{
  94148. + char __size[__SIZEOF_PTHREAD_CONDATTR_T];
  94149. + long int __align;
  94150. +} pthread_condattr_t;
  94151. +
  94152. +
  94153. +/* Keys for thread-specific data */
  94154. +typedef unsigned int pthread_key_t;
  94155. +
  94156. +
  94157. +/* Once-only execution */
  94158. +typedef int pthread_once_t;
  94159. +
  94160. +
  94161. +#if defined __USE_UNIX98 || defined __USE_XOPEN2K
  94162. +/* Data structure for read-write lock variable handling. The
  94163. + structure of the attribute type is not exposed on purpose. */
  94164. +typedef union
  94165. +{
  94166. + struct
  94167. + {
  94168. + int __lock;
  94169. + unsigned int __nr_readers;
  94170. + unsigned int __readers_wakeup;
  94171. + unsigned int __writer_wakeup;
  94172. + unsigned int __nr_readers_queued;
  94173. + unsigned int __nr_writers_queued;
  94174. +#if __BYTE_ORDER == __BIG_ENDIAN
  94175. + unsigned char __pad1;
  94176. + unsigned char __pad2;
  94177. + unsigned char __shared;
  94178. + /* FLAGS must stay at this position in the structure to maintain
  94179. + binary compatibility. */
  94180. + unsigned char __flags;
  94181. +#else
  94182. + /* FLAGS must stay at this position in the structure to maintain
  94183. + binary compatibility. */
  94184. + unsigned char __flags;
  94185. + unsigned char __shared;
  94186. + unsigned char __pad1;
  94187. + unsigned char __pad2;
  94188. +#endif
  94189. + int __writer;
  94190. + } __data;
  94191. + char __size[__SIZEOF_PTHREAD_RWLOCK_T];
  94192. + long int __align;
  94193. +} pthread_rwlock_t;
  94194. +
  94195. +typedef union
  94196. +{
  94197. + char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
  94198. + long int __align;
  94199. +} pthread_rwlockattr_t;
  94200. +#endif
  94201. +
  94202. +
  94203. +#ifdef __USE_XOPEN2K
  94204. +/* POSIX spinlock data type. */
  94205. +typedef volatile int pthread_spinlock_t;
  94206. +
  94207. +
  94208. +/* POSIX barriers data type. The structure of the type is
  94209. + deliberately not exposed. */
  94210. +typedef union
  94211. +{
  94212. + char __size[__SIZEOF_PTHREAD_BARRIER_T];
  94213. + long int __align;
  94214. +} pthread_barrier_t;
  94215. +
  94216. +typedef union
  94217. +{
  94218. + char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
  94219. + int __align;
  94220. +} pthread_barrierattr_t;
  94221. +#endif
  94222. +
  94223. +
  94224. +#endif /* bits/pthreadtypes.h */
  94225. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h
  94226. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h 1970-01-01 01:00:00.000000000 +0100
  94227. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  94228. @@ -0,0 +1,35 @@
  94229. +/* Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
  94230. + This file is part of the GNU C Library.
  94231. +
  94232. + The GNU C Library is free software; you can redistribute it and/or
  94233. + modify it under the terms of the GNU Lesser General Public
  94234. + License as published by the Free Software Foundation; either
  94235. + version 2.1 of the License, or (at your option) any later version.
  94236. +
  94237. + The GNU C Library is distributed in the hope that it will be useful,
  94238. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94239. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94240. + Lesser General Public License for more details.
  94241. +
  94242. + You should have received a copy of the GNU Lesser General Public
  94243. + License along with the GNU C Library; if not, write to the Free
  94244. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94245. + 02111-1307 USA. */
  94246. +
  94247. +#ifndef _SEMAPHORE_H
  94248. +# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  94249. +#endif
  94250. +
  94251. +
  94252. +#define __SIZEOF_SEM_T 16
  94253. +
  94254. +
  94255. +/* Value returned if `sem_open' failed. */
  94256. +#define SEM_FAILED ((sem_t *) 0)
  94257. +
  94258. +
  94259. +typedef union
  94260. +{
  94261. + char __size[__SIZEOF_SEM_T];
  94262. + long int __align;
  94263. +} sem_t;
  94264. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S
  94265. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S 1970-01-01 01:00:00.000000000 +0100
  94266. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S 2014-02-03 12:32:57.000000000 +0100
  94267. @@ -0,0 +1,9 @@
  94268. +/*
  94269. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94270. + *
  94271. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94272. + */
  94273. +
  94274. +#define RESET_PID
  94275. +#include <tcb-offsets.h>
  94276. +#include "../../../../../../../libc/sysdeps/linux/metag/clone.S"
  94277. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c
  94278. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c 1970-01-01 01:00:00.000000000 +0100
  94279. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c 2014-02-03 12:32:57.000000000 +0100
  94280. @@ -0,0 +1,23 @@
  94281. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  94282. + This file is part of the GNU C Library.
  94283. +
  94284. + The GNU C Library is free software; you can redistribute it and/or
  94285. + modify it under the terms of the GNU Lesser General Public
  94286. + License as published by the Free Software Foundation; either
  94287. + version 2.1 of the License, or (at your option) any later version.
  94288. +
  94289. + The GNU C Library is distributed in the hope that it will be useful,
  94290. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94291. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94292. + Lesser General Public License for more details.
  94293. +
  94294. + You should have received a copy of the GNU Lesser General Public
  94295. + License along with the GNU C Library; if not, write to the Free
  94296. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94297. + 02111-1307 USA. */
  94298. +
  94299. +/* Value passed to 'clone' for initialization of the thread register. */
  94300. +#define TLS_VALUE (pd + 1)
  94301. +
  94302. +/* Get the real implementation. */
  94303. +#include <sysdeps/pthread/createthread.c>
  94304. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c
  94305. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c 1970-01-01 01:00:00.000000000 +0100
  94306. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c 2014-02-03 12:32:57.000000000 +0100
  94307. @@ -0,0 +1,31 @@
  94308. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  94309. + This file is part of the GNU C Library.
  94310. + Contributed by Phil Blundell <pb@nexus.co.uk>, 2005
  94311. +
  94312. + The GNU C Library is free software; you can redistribute it and/or
  94313. + modify it under the terms of the GNU Lesser General Public
  94314. + License as published by the Free Software Foundation; either
  94315. + version 2.1 of the License, or (at your option) any later version.
  94316. +
  94317. + The GNU C Library is distributed in the hope that it will be useful,
  94318. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94319. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94320. + Lesser General Public License for more details.
  94321. +
  94322. + You should have received a copy of the GNU Lesser General Public
  94323. + License along with the GNU C Library; if not, write to the Free
  94324. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94325. + 02111-1307 USA. */
  94326. +
  94327. +#include <sched.h>
  94328. +#include <signal.h>
  94329. +#include <sysdep.h>
  94330. +#include <tls.h>
  94331. +
  94332. +
  94333. +#define ARCH_FORK() \
  94334. + INLINE_SYSCALL (clone, 5, \
  94335. + CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \
  94336. + NULL, NULL, &THREAD_SELF->tid, NULL)
  94337. +
  94338. +#include "../fork.c"
  94339. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c
  94340. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c 1970-01-01 01:00:00.000000000 +0100
  94341. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  94342. @@ -0,0 +1,21 @@
  94343. +/* Copyright (C) 2003 Free Software Foundation, Inc.
  94344. + This file is part of the GNU C Library.
  94345. + Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
  94346. +
  94347. + The GNU C Library is free software; you can redistribute it and/or
  94348. + modify it under the terms of the GNU Lesser General Public
  94349. + License as published by the Free Software Foundation; either
  94350. + version 2.1 of the License, or (at your option) any later version.
  94351. +
  94352. + The GNU C Library is distributed in the hope that it will be useful,
  94353. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94354. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94355. + Lesser General Public License for more details.
  94356. +
  94357. + You should have received a copy of the GNU Lesser General Public
  94358. + License along with the GNU C Library; if not, write to the Free
  94359. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94360. + 02111-1307 USA. */
  94361. +
  94362. +/* No difference to lowlevellock.c, except we lose a couple of functions. */
  94363. +#include "lowlevellock.c"
  94364. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c
  94365. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c 1970-01-01 01:00:00.000000000 +0100
  94366. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  94367. @@ -0,0 +1,134 @@
  94368. +/* low level locking for pthread library. Generic futex-using version.
  94369. + Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
  94370. + This file is part of the GNU C Library.
  94371. +
  94372. + The GNU C Library is free software; you can redistribute it and/or
  94373. + modify it under the terms of the GNU Lesser General Public
  94374. + License as published by the Free Software Foundation; either
  94375. + version 2.1 of the License, or (at your option) any later version.
  94376. +
  94377. + The GNU C Library is distributed in the hope that it will be useful,
  94378. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94379. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94380. + Lesser General Public License for more details.
  94381. +
  94382. + You should have received a copy of the GNU Lesser General Public
  94383. + License along with the GNU C Library; if not, write to the Free
  94384. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94385. + 02111-1307 USA. */
  94386. +
  94387. +#include <errno.h>
  94388. +#include <sysdep.h>
  94389. +#include <lowlevellock.h>
  94390. +#include <sys/time.h>
  94391. +#include <tls.h>
  94392. +
  94393. +void
  94394. +__lll_lock_wait_private (int *futex)
  94395. +{
  94396. + do
  94397. + {
  94398. + int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
  94399. + if (oldval != 0)
  94400. + lll_futex_wait (futex, 2, LLL_PRIVATE);
  94401. + }
  94402. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  94403. +}
  94404. +
  94405. +
  94406. +/* These functions don't get included in libc.so */
  94407. +#ifdef IS_IN_libpthread
  94408. +void
  94409. +__lll_lock_wait (int *futex, int private)
  94410. +{
  94411. + do
  94412. + {
  94413. + int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
  94414. + if (oldval != 0)
  94415. + lll_futex_wait (futex, 2, private);
  94416. + }
  94417. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  94418. +}
  94419. +
  94420. +
  94421. +int
  94422. +__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
  94423. +{
  94424. + struct timespec rt;
  94425. +
  94426. + /* Reject invalid timeouts. */
  94427. + if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
  94428. + return EINVAL;
  94429. +
  94430. + /* Upgrade the lock. */
  94431. + if (atomic_exchange_acq (futex, 2) == 0)
  94432. + return 0;
  94433. +
  94434. + do
  94435. + {
  94436. + struct timeval tv;
  94437. +
  94438. + /* Get the current time. */
  94439. + (void) gettimeofday (&tv, NULL);
  94440. +
  94441. + /* Compute relative timeout. */
  94442. + rt.tv_sec = abstime->tv_sec - tv.tv_sec;
  94443. + rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
  94444. + if (rt.tv_nsec < 0)
  94445. + {
  94446. + rt.tv_nsec += 1000000000;
  94447. + --rt.tv_sec;
  94448. + }
  94449. +
  94450. + /* Already timed out? */
  94451. + if (rt.tv_sec < 0)
  94452. + return ETIMEDOUT;
  94453. +
  94454. + // XYZ: Lost the lock to check whether it was private.
  94455. + lll_futex_timed_wait (futex, 2, &rt, private);
  94456. + }
  94457. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  94458. +
  94459. + return 0;
  94460. +}
  94461. +
  94462. +
  94463. +int
  94464. +__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
  94465. +{
  94466. + int tid;
  94467. +
  94468. + if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
  94469. + return EINVAL;
  94470. +
  94471. + /* Repeat until thread terminated. */
  94472. + while ((tid = *tidp) != 0)
  94473. + {
  94474. + struct timeval tv;
  94475. + struct timespec rt;
  94476. +
  94477. + /* Get the current time. */
  94478. + (void) gettimeofday (&tv, NULL);
  94479. +
  94480. + /* Compute relative timeout. */
  94481. + rt.tv_sec = abstime->tv_sec - tv.tv_sec;
  94482. + rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
  94483. + if (rt.tv_nsec < 0)
  94484. + {
  94485. + rt.tv_nsec += 1000000000;
  94486. + --rt.tv_sec;
  94487. + }
  94488. +
  94489. + /* Already timed out? */
  94490. + if (rt.tv_sec < 0)
  94491. + return ETIMEDOUT;
  94492. +
  94493. + /* Wait until thread terminates. */
  94494. + // XYZ: Lost the lock to check whether it was private.
  94495. + if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
  94496. + return ETIMEDOUT;
  94497. + }
  94498. +
  94499. + return 0;
  94500. +}
  94501. +#endif
  94502. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h
  94503. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h 1970-01-01 01:00:00.000000000 +0100
  94504. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  94505. @@ -0,0 +1,279 @@
  94506. +/* Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  94507. + This file is part of the GNU C Library.
  94508. +
  94509. + The GNU C Library is free software; you can redistribute it and/or
  94510. + modify it under the terms of the GNU Lesser General Public
  94511. + License as published by the Free Software Foundation; either
  94512. + version 2.1 of the License, or (at your option) any later version.
  94513. +
  94514. + The GNU C Library is distributed in the hope that it will be useful,
  94515. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94516. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94517. + Lesser General Public License for more details.
  94518. +
  94519. + You should have received a copy of the GNU Lesser General Public
  94520. + License along with the GNU C Library; if not, write to the Free
  94521. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94522. + 02111-1307 USA. */
  94523. +
  94524. +#ifndef _LOWLEVELLOCK_H
  94525. +#define _LOWLEVELLOCK_H 1
  94526. +
  94527. +#include <time.h>
  94528. +#include <sys/param.h>
  94529. +#include <bits/pthreadtypes.h>
  94530. +#include <atomic.h>
  94531. +#include <sysdep.h>
  94532. +#include <bits/kernel-features.h>
  94533. +
  94534. +#define FUTEX_WAIT 0
  94535. +#define FUTEX_WAKE 1
  94536. +#define FUTEX_REQUEUE 3
  94537. +#define FUTEX_CMP_REQUEUE 4
  94538. +#define FUTEX_WAKE_OP 5
  94539. +#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
  94540. +#define FUTEX_LOCK_PI 6
  94541. +#define FUTEX_UNLOCK_PI 7
  94542. +#define FUTEX_TRYLOCK_PI 8
  94543. +#define FUTEX_WAIT_BITSET 9
  94544. +#define FUTEX_WAKE_BITSET 10
  94545. +#define FUTEX_PRIVATE_FLAG 128
  94546. +#define FUTEX_CLOCK_REALTIME 256
  94547. +
  94548. +#define FUTEX_BITSET_MATCH_ANY 0xffffffff
  94549. +
  94550. +/* Values for 'private' parameter of locking macros. Yes, the
  94551. + definition seems to be backwards. But it is not. The bit will be
  94552. + reversed before passing to the system call. */
  94553. +#define LLL_PRIVATE 0
  94554. +#define LLL_SHARED FUTEX_PRIVATE_FLAG
  94555. +
  94556. +
  94557. +#if !defined NOT_IN_libc || defined IS_IN_rtld
  94558. +/* In libc.so or ld.so all futexes are private. */
  94559. +# ifdef __ASSUME_PRIVATE_FUTEX
  94560. +# define __lll_private_flag(fl, private) \
  94561. + ((fl) | FUTEX_PRIVATE_FLAG)
  94562. +# else
  94563. +# define __lll_private_flag(fl, private) \
  94564. + ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
  94565. +# endif
  94566. +#else
  94567. +# ifdef __ASSUME_PRIVATE_FUTEX
  94568. +# define __lll_private_flag(fl, private) \
  94569. + (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
  94570. +# else
  94571. +# define __lll_private_flag(fl, private) \
  94572. + (__builtin_constant_p (private) \
  94573. + ? ((private) == 0 \
  94574. + ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \
  94575. + : (fl)) \
  94576. + : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
  94577. + & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
  94578. +# endif
  94579. +#endif
  94580. +
  94581. +
  94582. +#define lll_futex_wait(futexp, val, private) \
  94583. + lll_futex_timed_wait(futexp, val, NULL, private)
  94584. +
  94585. +#define lll_futex_timed_wait(futexp, val, timespec, private) \
  94586. + ({ \
  94587. + INTERNAL_SYSCALL_DECL (__err); \
  94588. + long int __ret; \
  94589. + __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
  94590. + __lll_private_flag (FUTEX_WAIT, private), \
  94591. + (val), (timespec)); \
  94592. + __ret; \
  94593. + })
  94594. +
  94595. +#define lll_futex_wake(futexp, nr, private) \
  94596. + ({ \
  94597. + INTERNAL_SYSCALL_DECL (__err); \
  94598. + long int __ret; \
  94599. + __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
  94600. + __lll_private_flag (FUTEX_WAKE, private), \
  94601. + (nr), 0); \
  94602. + __ret; \
  94603. + })
  94604. +
  94605. +#define lll_robust_dead(futexv, private) \
  94606. + do \
  94607. + { \
  94608. + int *__futexp = &(futexv); \
  94609. + atomic_or (__futexp, FUTEX_OWNER_DIED); \
  94610. + lll_futex_wake (__futexp, 1, private); \
  94611. + } \
  94612. + while (0)
  94613. +
  94614. +/* Returns non-zero if error happened, zero if success. */
  94615. +#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
  94616. + ({ \
  94617. + INTERNAL_SYSCALL_DECL (__err); \
  94618. + long int __ret; \
  94619. + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
  94620. + __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
  94621. + (nr_wake), (nr_move), (mutex), (val)); \
  94622. + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
  94623. + })
  94624. +
  94625. +
  94626. +/* Returns non-zero if error happened, zero if success. */
  94627. +#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
  94628. + ({ \
  94629. + INTERNAL_SYSCALL_DECL (__err); \
  94630. + long int __ret; \
  94631. + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
  94632. + __lll_private_flag (FUTEX_WAKE_OP, private), \
  94633. + (nr_wake), (nr_wake2), (futexp2), \
  94634. + FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \
  94635. + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
  94636. + })
  94637. +
  94638. +
  94639. +#define lll_trylock(lock) \
  94640. + atomic_compare_and_exchange_val_acq(&(lock), 1, 0)
  94641. +
  94642. +#define lll_cond_trylock(lock) \
  94643. + atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
  94644. +
  94645. +#define __lll_robust_trylock(futex, id) \
  94646. + (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
  94647. +#define lll_robust_trylock(lock, id) \
  94648. + __lll_robust_trylock (&(lock), id)
  94649. +
  94650. +extern void __lll_lock_wait_private (int *futex) attribute_hidden;
  94651. +extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
  94652. +extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
  94653. +
  94654. +#define __lll_lock(futex, private) \
  94655. + ((void) ({ \
  94656. + int *__futex = (futex); \
  94657. + if (unlikely(atomic_compare_and_exchange_val_acq (__futex, 1, 0))) \
  94658. + { \
  94659. + if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) \
  94660. + __lll_lock_wait_private (__futex); \
  94661. + else \
  94662. + __lll_lock_wait (__futex, private); \
  94663. + } \
  94664. + }))
  94665. +#define lll_lock(futex, private) __lll_lock (&(futex), private)
  94666. +
  94667. +
  94668. +#define __lll_robust_lock(futex, id, private) \
  94669. + ({ \
  94670. + int *__futex = (futex); \
  94671. + int __val = 0; \
  94672. + \
  94673. + if (unlikely(atomic_compare_and_exchange_bool_acq (__futex, id, 0))) \
  94674. + __val = __lll_robust_lock_wait (__futex, private); \
  94675. + __val; \
  94676. + })
  94677. +#define lll_robust_lock(futex, id, private) \
  94678. + __lll_robust_lock (&(futex), id, private)
  94679. +
  94680. +
  94681. +#define __lll_cond_lock(futex, private) \
  94682. + ((void) ({ \
  94683. + int *__futex = (futex); \
  94684. + if (unlikely(atomic_exchange_acq (__futex, 2))) \
  94685. + __lll_lock_wait (__futex, private); \
  94686. + }))
  94687. +#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private)
  94688. +
  94689. +
  94690. +#define lll_robust_cond_lock(futex, id, private) \
  94691. + __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private)
  94692. +
  94693. +
  94694. +extern int __lll_timedlock_wait (int *futex, const struct timespec *,
  94695. + int private) attribute_hidden;
  94696. +extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *,
  94697. + int private) attribute_hidden;
  94698. +
  94699. +#define __lll_timedlock(futex, abstime, private) \
  94700. + ({ \
  94701. + int *__futex = (futex); \
  94702. + int __val = 0; \
  94703. + \
  94704. + if (unlikely(atomic_exchange_acq (__futex, 1))) \
  94705. + __val = __lll_timedlock_wait (__futex, abstime, private); \
  94706. + __val; \
  94707. + })
  94708. +#define lll_timedlock(futex, abstime, private) \
  94709. + __lll_timedlock (&(futex), abstime, private)
  94710. +
  94711. +
  94712. +#define __lll_robust_timedlock(futex, abstime, id, private) \
  94713. + ({ \
  94714. + int *__futex = (futex); \
  94715. + int __val = 0; \
  94716. + \
  94717. + if (unlikely(atomic_compare_and_exchange_bool_acq (__futex, id, 0))) \
  94718. + __val = __lll_robust_timedlock_wait (__futex, abstime, private); \
  94719. + __val; \
  94720. + })
  94721. +#define lll_robust_timedlock(futex, abstime, id, private) \
  94722. + __lll_robust_timedlock (&(futex), abstime, id, private)
  94723. +
  94724. +
  94725. +#define __lll_unlock(futex, private) \
  94726. + (void) \
  94727. + ({ int *__futex = (futex); \
  94728. + int __oldval = atomic_exchange_rel (__futex, 0); \
  94729. + if (unlikely(__oldval > 1)) \
  94730. + lll_futex_wake (__futex, 1, private); \
  94731. + })
  94732. +#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
  94733. +
  94734. +
  94735. +#define __lll_robust_unlock(futex, private) \
  94736. + (void) \
  94737. + ({ int *__futex = (futex); \
  94738. + int __oldval = atomic_exchange_rel (__futex, 0); \
  94739. + if (unlikely(__oldval & FUTEX_WAITERS)) \
  94740. + lll_futex_wake (__futex, 1, private); \
  94741. + })
  94742. +#define lll_robust_unlock(futex, private) \
  94743. + __lll_robust_unlock(&(futex), private)
  94744. +
  94745. +
  94746. +#define lll_islocked(futex) \
  94747. + (futex != 0)
  94748. +
  94749. +
  94750. +/* Our internal lock implementation is identical to the binary-compatible
  94751. + mutex implementation. */
  94752. +
  94753. +/* Initializers for lock. */
  94754. +#define LLL_LOCK_INITIALIZER (0)
  94755. +#define LLL_LOCK_INITIALIZER_LOCKED (1)
  94756. +
  94757. +/* The states of a lock are:
  94758. + 0 - untaken
  94759. + 1 - taken by one user
  94760. + >1 - taken by more users */
  94761. +
  94762. +/* The kernel notifies a process which uses CLONE_CLEARTID via futex
  94763. + wakeup when the clone terminates. The memory location contains the
  94764. + thread ID while the clone is running and is reset to zero
  94765. + afterwards. */
  94766. +#define lll_wait_tid(tid) \
  94767. + do { \
  94768. + __typeof (tid) __tid; \
  94769. + while ((__tid = (tid)) != 0) \
  94770. + lll_futex_wait (&(tid), __tid, LLL_SHARED);\
  94771. + } while (0)
  94772. +
  94773. +extern int __lll_timedwait_tid (int *, const struct timespec *)
  94774. + attribute_hidden;
  94775. +
  94776. +#define lll_timedwait_tid(tid, abstime) \
  94777. + ({ \
  94778. + int __res = 0; \
  94779. + if ((tid) != 0) \
  94780. + __res = __lll_timedwait_tid (&(tid), (abstime)); \
  94781. + __res; \
  94782. + })
  94783. +
  94784. +#endif /* lowlevellock.h */
  94785. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile
  94786. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  94787. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile 2014-02-03 12:32:57.000000000 +0100
  94788. @@ -0,0 +1,13 @@
  94789. +# Makefile for uClibc NPTL
  94790. +#
  94791. +# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
  94792. +#
  94793. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94794. +#
  94795. +
  94796. +top_srcdir=../../../../../../../
  94797. +top_builddir=../../../../../../../
  94798. +all: objs
  94799. +include $(top_builddir)Rules.mak
  94800. +include Makefile.arch
  94801. +include $(top_srcdir)Makerules
  94802. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
  94803. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  94804. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  94805. @@ -0,0 +1,31 @@
  94806. +# Makefile for uClibc NPTL
  94807. +#
  94808. +# Copyright (C) 2006 Steven J. Hill <sjhill@uclibc.org>
  94809. +#
  94810. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94811. +#
  94812. +
  94813. +libpthread_linux_arch_SSRC = pt-vfork.S
  94814. +libpthread_linux_arch_CSRC = pthread_once.c \
  94815. + pt-__syscall_rt_sigaction.c pt-__syscall_error.c \
  94816. + lowlevellock.c
  94817. +
  94818. +libc_linux_arch_CSRC = fork.c libc-lowlevellock.c
  94819. +libc_linux_arch_SSRC = clone.S vfork.S
  94820. +libc_linux_arch_SSRC-OMIT = waitpid.S
  94821. +
  94822. +CFLAGS += $(SSP_ALL_CFLAGS)
  94823. +
  94824. +CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread
  94825. +CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread
  94826. +CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  94827. +CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
  94828. +ASFLAGS-vfork.S = -DIS_IN_libc -DNOT_IN_libpthread
  94829. +ASFLAGS-clone.S = -DIS_IN_libc -DNOT_IN_libpthread
  94830. +ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
  94831. +
  94832. +ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
  94833. +CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
  94834. +endif
  94835. +CFLAGS-OMIT-fork.c = -DNOT_IN_libc -DIS_IN_libpthread
  94836. +CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  94837. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c
  94838. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c 1970-01-01 01:00:00.000000000 +0100
  94839. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c 2014-02-03 12:32:57.000000000 +0100
  94840. @@ -0,0 +1,11 @@
  94841. +/*
  94842. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94843. + *
  94844. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94845. + */
  94846. +
  94847. +#include <sys/syscall.h>
  94848. +#include <sys/time.h>
  94849. +
  94850. +int gettimeofday (struct timeval *, struct timezone *) attribute_hidden;
  94851. +_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz);
  94852. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c
  94853. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c 1970-01-01 01:00:00.000000000 +0100
  94854. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  94855. @@ -0,0 +1,100 @@
  94856. +/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
  94857. + This file is part of the GNU C Library.
  94858. +
  94859. + The GNU C Library is free software; you can redistribute it and/or
  94860. + modify it under the terms of the GNU Lesser General Public
  94861. + License as published by the Free Software Foundation; either
  94862. + version 2.1 of the License, or (at your option) any later version.
  94863. +
  94864. + The GNU C Library is distributed in the hope that it will be useful,
  94865. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94866. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94867. + Lesser General Public License for more details.
  94868. +
  94869. + You should have received a copy of the GNU Lesser General Public
  94870. + License along with the GNU C Library; if not, write to the Free
  94871. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94872. + 02111-1307 USA. */
  94873. +
  94874. +#include "pthreadP.h"
  94875. +#include <lowlevellock.h>
  94876. +
  94877. +unsigned long int __fork_generation attribute_hidden;
  94878. +
  94879. +static void
  94880. +clear_once_control (void *arg)
  94881. +{
  94882. + pthread_once_t *once_control = (pthread_once_t *) arg;
  94883. +
  94884. + *once_control = 0;
  94885. + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
  94886. +}
  94887. +
  94888. +int
  94889. +attribute_protected
  94890. +__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
  94891. +{
  94892. + for (;;)
  94893. + {
  94894. + int oldval;
  94895. + int newval;
  94896. +
  94897. + /* Pseudo code:
  94898. + newval = __fork_generation | 1;
  94899. + oldval = *once_control;
  94900. + if ((oldval & 2) == 0)
  94901. + *once_control = newval;
  94902. + Do this atomically.
  94903. + */
  94904. + do
  94905. + {
  94906. + newval = __fork_generation | 1;
  94907. + oldval = *once_control;
  94908. + if (oldval & 2)
  94909. + break;
  94910. + } while (atomic_compare_and_exchange_val_acq (once_control, newval, oldval) != oldval);
  94911. +
  94912. + /* Check if the initializer has already been done. */
  94913. + if ((oldval & 2) != 0)
  94914. + return 0;
  94915. +
  94916. + /* Check if another thread already runs the initializer. */
  94917. + if ((oldval & 1) == 0)
  94918. + break;
  94919. +
  94920. + /* Check whether the initializer execution was interrupted by a fork. */
  94921. + if (oldval != newval)
  94922. + break;
  94923. +
  94924. + /* Same generation, some other thread was faster. Wait. */
  94925. + lll_futex_wait (once_control, oldval, LLL_PRIVATE);
  94926. + }
  94927. +
  94928. + /* This thread is the first here. Do the initialization.
  94929. + Register a cleanup handler so that in case the thread gets
  94930. + interrupted the initialization can be restarted. */
  94931. + pthread_cleanup_push (clear_once_control, once_control);
  94932. +
  94933. + init_routine ();
  94934. +
  94935. + pthread_cleanup_pop (0);
  94936. +
  94937. + /* Say that the initialisation is done. */
  94938. + *once_control = __fork_generation | 2;
  94939. +
  94940. + /* Wake up all other threads. */
  94941. + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
  94942. +
  94943. + return 0;
  94944. +}
  94945. +weak_alias (__pthread_once, pthread_once)
  94946. +strong_alias (__pthread_once, __pthread_once_internal)
  94947. +
  94948. +#if defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__PIC__)
  94949. +/* When statically linked, if pthread_create is used, this file
  94950. + will be brought in. The exception handling code in GCC assumes
  94951. + that if pthread_create is available, so are these. */
  94952. +const void *include_pthread_getspecific attribute_hidden = pthread_getspecific;
  94953. +const void *include_pthread_setspecific attribute_hidden = pthread_setspecific;
  94954. +const void *include_pthread_key_create attribute_hidden = pthread_key_create;
  94955. +#endif
  94956. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c
  94957. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  94958. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c 2014-02-03 12:32:57.000000000 +0100
  94959. @@ -0,0 +1,7 @@
  94960. +/*
  94961. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94962. + *
  94963. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94964. + */
  94965. +
  94966. +#include <../../../../../../../libc/sysdeps/linux/metag/__syscall_error.c>
  94967. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c
  94968. --- 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
  94969. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c 2014-02-03 12:32:57.000000000 +0100
  94970. @@ -0,0 +1,7 @@
  94971. +/*
  94972. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94973. + *
  94974. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94975. + */
  94976. +
  94977. +#include <../../../../../../../libc/sysdeps/linux/common/__syscall_rt_sigaction.c>
  94978. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S
  94979. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S 1970-01-01 01:00:00.000000000 +0100
  94980. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  94981. @@ -0,0 +1,51 @@
  94982. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  94983. + This file is part of the GNU C Library.
  94984. +
  94985. + The GNU C Library is free software; you can redistribute it and/or
  94986. + modify it under the terms of the GNU Lesser General Public
  94987. + License as published by the Free Software Foundation; either
  94988. + version 2.1 of the License, or (at your option) any later version.
  94989. +
  94990. + The GNU C Library is distributed in the hope that it will be useful,
  94991. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94992. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94993. + Lesser General Public License for more details.
  94994. +
  94995. + You should have received a copy of the GNU Lesser General Public
  94996. + License along with the GNU C Library; if not, write to the Free
  94997. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94998. + 02111-1307 USA. */
  94999. +
  95000. +#include <tcb-offsets.h>
  95001. +#include <asm/unistd.h>
  95002. +
  95003. +#ifdef __PIC__
  95004. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT
  95005. +#else
  95006. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp
  95007. +#endif
  95008. +
  95009. +/* Save the PID value. */
  95010. +#define SAVE_PID \
  95011. + SETL [A0StP++], D0FrT, D1RtP; \
  95012. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  95013. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  95014. + GETD D0FrT, [D0Re0 + #PID]; \
  95015. + NEG D0FrT, D0FrT; \
  95016. + SETD [D0Re0 + #PID], D0FrT; \
  95017. + GETL D0FrT, D1RtP, [--A0StP];
  95018. +
  95019. +#define RESTORE_PID \
  95020. + CMP D0Re0, #0; \
  95021. + BEQ 1f; \
  95022. + MSETL [A0StP++], D0Re0, D0FrT; \
  95023. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  95024. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  95025. + GETD D0FrT, [D0Re0 + #PID]; \
  95026. + NEG D0FrT, D0FrT; \
  95027. + SETD [D0Re0 + #PID], D0FrT; \
  95028. + GETL D0FrT, D1RtP, [--A0StP]; \
  95029. + GETL D0Re0, D1Re0, [--A0StP]; \
  95030. +1:
  95031. +
  95032. +#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S>
  95033. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h
  95034. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h 1970-01-01 01:00:00.000000000 +0100
  95035. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95036. @@ -0,0 +1,152 @@
  95037. +/* Copyright (C) 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
  95038. + This file is part of the GNU C Library.
  95039. +
  95040. + The GNU C Library is free software; you can redistribute it and/or
  95041. + modify it under the terms of the GNU Lesser General Public
  95042. + License as published by the Free Software Foundation; either
  95043. + version 2.1 of the License, or (at your option) any later version.
  95044. +
  95045. + The GNU C Library is distributed in the hope that it will be useful,
  95046. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  95047. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  95048. + Lesser General Public License for more details.
  95049. +
  95050. + You should have received a copy of the GNU Lesser General Public
  95051. + License along with the GNU C Library; if not, write to the Free
  95052. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95053. + 02111-1307 USA. */
  95054. +
  95055. +#include <tls.h>
  95056. +#include <sysdep.h>
  95057. +#ifndef __ASSEMBLER__
  95058. +# include <pthreadP.h>
  95059. +#endif
  95060. +
  95061. +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  95062. +
  95063. +/* NOTE: We do mark syscalls with unwind annotations, for the benefit of
  95064. + cancellation; but they're really only accurate at the point of the
  95065. + syscall. The ARM unwind directives are not rich enough without adding
  95066. + a custom personality function. */
  95067. +
  95068. +#ifdef __ASSEMBLER__
  95069. +#undef ret
  95070. +#define ret \
  95071. + CMP D0Re0, #-4095; \
  95072. + MOVLO PC, D1RtP; \
  95073. + MOV D1Ar1, D0Re0; \
  95074. + B SYSCALL_ERROR;
  95075. +#endif /* __ASSEMBLER__ */
  95076. +
  95077. +# undef PSEUDO
  95078. +# define PSEUDO(name, syscall_name, args) \
  95079. + .section ".text"; \
  95080. + .type ___##syscall_name##_nocancel,%function; \
  95081. + .globl ___##syscall_name##_nocancel; \
  95082. + ___##syscall_name##_nocancel: \
  95083. + cfi_startproc; \
  95084. + DO_CALL (syscall_name, args); \
  95085. + MOV PC, D1RtP; \
  95086. + cfi_endproc; \
  95087. + .size ___##syscall_name##_nocancel,.-___##syscall_name##_nocancel; \
  95088. + .globl _##name; \
  95089. + .type _##name, @function; \
  95090. +name##: \
  95091. +_##name##: \
  95092. + DOCARGS_##args; \
  95093. + SINGLE_THREAD_P; \
  95094. + UNDOCARGS_##args; \
  95095. + BNE .Lpseudo_cancel; \
  95096. + cfi_remember_state; \
  95097. + DO_CALL (syscall_name, 0); \
  95098. + ret \
  95099. + cfi_restore_state; \
  95100. + .Lpseudo_cancel: \
  95101. + MSETL [A0StP++], D0FrT, D0.5; \
  95102. + DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
  95103. + CENABLE; \
  95104. + MOV D0FrT, D0Re0; /* put mask in safe place. */ \
  95105. + UNDOCARGS_##args; /* restore syscall args. */ \
  95106. + DO_CALL(syscall_name, 0); /* do the call. */ \
  95107. + MOV D0.5, D0Re0; /* save syscall return value. */ \
  95108. + MOV D1Ar1, D0FrT; /* get mask back. */ \
  95109. + CDISABLE; \
  95110. + MOV D0Re0, D0.5; /* retrieve return value. */ \
  95111. + GETL D0.5, D1.5, [--A0StP]; \
  95112. + GETL D0FrT, D1RtP, [--A0StP];
  95113. +
  95114. +# define DOCARGS_0
  95115. +# define UNDOCARGS_0
  95116. +
  95117. +# define DOCARGS_1 \
  95118. + SETL [A0StP++], D1Ar1, D0Ar2
  95119. +# define UNDOCARGS_1 \
  95120. + GETL D1Ar1, D0Ar2, [--A0StP]
  95121. +
  95122. +# define DOCARGS_2 DOCARGS_1
  95123. +
  95124. +# define UNDOCARGS_2 UNDOCARGS_2
  95125. +
  95126. +# define DOCARGS_3 \
  95127. + MSETL [A0StP++], D1Ar1, D1Ar3
  95128. +
  95129. +# define UNDOCARGS_3 \
  95130. + GETL D1Ar1, D0Ar2, [--A0StP]; \
  95131. + GETL D1Ar3, D0Ar4, [--A0StP]
  95132. +
  95133. +# define DOCARGS_4 DOCARGS_3
  95134. +# define UNDOCARGS_4 UNDOCARGS_3
  95135. +
  95136. +# define DOCARGS_5 \
  95137. + MSETL [A0StP++], D1Ar1, D1Ar3, D1Ar5
  95138. +# define UNDOCARGS_5 \
  95139. + GETL D1Ar1, D0Ar2, [--A0StP]; \
  95140. + GETL D1Ar3, D0Ar4, [--A0StP]; \
  95141. + GETL D1Ar5, D0Ar6, [--A0StP]
  95142. +
  95143. +# define DOCARGS_6 DOCARGS_5
  95144. +# define UNDOCARGS_6 UNDOCARGS_5
  95145. +
  95146. +# ifdef IS_IN_libpthread
  95147. +# define CENABLE CALLR D1RtP, ___pthread_enable_asynccancel@PLT
  95148. +# define CDISABLE CALLR D1RtP, ___pthread_disable_asynccancel@PLT
  95149. +# define __local_multiple_threads __pthread_multiple_threads
  95150. +# elif !defined NOT_IN_libc
  95151. +# define CENABLE CALLR D1RtP, ___libc_enable_asynccancel@PLT
  95152. +# define CDISABLE CALLR D1RtP, ___libc_disable_asynccancel@PLT
  95153. +# define __local_multiple_threads __libc_multiple_threads
  95154. +# elif defined IS_IN_librt
  95155. +# define CENABLE CALLR D1RtP, ___librt_enable_asynccancel@PLT
  95156. +# define CDISABLE CALLR D1RtP, ___librt_disable_asynccancel@PLT
  95157. +# else
  95158. +# error Unsupported library
  95159. +# endif
  95160. +
  95161. +#ifndef __ASSEMBLER__
  95162. +# define SINGLE_THREAD_P \
  95163. + likely(THREAD_GETMEM (THREAD_SELF, \
  95164. + header.multiple_threads) == 0)
  95165. +#else
  95166. +# define SINGLE_THREAD_P \
  95167. + SETL [A0StP++], D0FrT, D1RtP; \
  95168. + CALLR D1RtP, ___metag_load_tp@PLT; \
  95169. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  95170. + GETD D0Re0, [D0Re0 + #MULTIPLE_THREADS_OFFSET]; \
  95171. + CMP D0Re0, #0; \
  95172. + GETL D0FrT, D1RtP, [--A0StP]
  95173. +#endif
  95174. +
  95175. +
  95176. +#elif !defined __ASSEMBLER__
  95177. +
  95178. +/* For rtld, et cetera. */
  95179. +# define SINGLE_THREAD_P 1
  95180. +# define NO_CANCELLATION 1
  95181. +
  95182. +#endif
  95183. +
  95184. +#ifndef __ASSEMBLER__
  95185. +# define RTLD_SINGLE_THREAD_P \
  95186. + likely(THREAD_GETMEM (THREAD_SELF, \
  95187. + header.multiple_threads) == 0)
  95188. +#endif
  95189. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S
  95190. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S 1970-01-01 01:00:00.000000000 +0100
  95191. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95192. @@ -0,0 +1,56 @@
  95193. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  95194. + This file is part of the GNU C Library.
  95195. +
  95196. + The GNU C Library is free software; you can redistribute it and/or
  95197. + modify it under the terms of the GNU Lesser General Public
  95198. + License as published by the Free Software Foundation; either
  95199. + version 2.1 of the License, or (at your option) any later version.
  95200. +
  95201. + The GNU C Library is distributed in the hope that it will be useful,
  95202. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  95203. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  95204. + Lesser General Public License for more details.
  95205. +
  95206. + You should have received a copy of the GNU Lesser General Public
  95207. + License along with the GNU C Library; if not, write to the Free
  95208. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95209. + 02111-1307 USA. */
  95210. +
  95211. +#include <tcb-offsets.h>
  95212. +#include <asm/unistd.h>
  95213. +
  95214. +#ifdef __PIC__
  95215. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT
  95216. +#else
  95217. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp
  95218. +#endif
  95219. +
  95220. +/* Save the PID value. */
  95221. +#define SAVE_PID \
  95222. + SETL [A0StP++], D0FrT, D1RtP; \
  95223. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  95224. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  95225. + GETD D0FrT, [D0Re0 + #PID]; \
  95226. + NEGS D0FrT, D0FrT; \
  95227. + BNZ 1f; \
  95228. + MOVT D0FrT, #0x8000; \
  95229. +1: SETD [D0Re0 + #PID], D0FrT; \
  95230. + GETL D0FrT, D1RtP, [--A0StP];
  95231. +
  95232. +#define RESTORE_PID \
  95233. + CMP D0Re0, #0; \
  95234. + BEQ 1f; \
  95235. + MSETL [A0StP++], D0Re0, D0FrT; \
  95236. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  95237. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  95238. + GETD D0FrT, [D0Re0 + #PID]; \
  95239. + NEG D0FrT, D0FrT; \
  95240. + MOVT D1Re0, #0x8000; \
  95241. + CMP D0FrT, D1Re0; \
  95242. + XOREQ D0FrT, D0FrT, D0FrT; \
  95243. + SETD [D0Re0 + #PID], D0FrT; \
  95244. + GETL D0FrT, D1RtP, [--A0StP]; \
  95245. + GETL D0Re0, D1Re0, [--A0StP]; \
  95246. +1:
  95247. +
  95248. +#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S>
  95249. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h
  95250. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  95251. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  95252. @@ -13,9 +13,8 @@
  95253. Lesser General Public License for more details.
  95254. You should have received a copy of the GNU Lesser General Public
  95255. - License along with the GNU C Library; if not, write to the Free
  95256. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95257. - 02111-1307 USA. */
  95258. + License along with the GNU C Library; if not, see
  95259. + <http://www.gnu.org/licenses/>. */
  95260. #ifndef _BITS_PTHREADTYPES_H
  95261. #define _BITS_PTHREADTYPES_H 1
  95262. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h
  95263. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  95264. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  95265. @@ -12,9 +12,8 @@
  95266. Lesser General Public License for more details.
  95267. You should have received a copy of the GNU Lesser General Public
  95268. - License along with the GNU C Library; if not, write to the Free
  95269. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95270. - 02111-1307 USA. */
  95271. + License along with the GNU C Library; if not, see
  95272. + <http://www.gnu.org/licenses/>. */
  95273. #ifndef _SEMAPHORE_H
  95274. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  95275. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c
  95276. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c 2012-05-15 09:20:09.000000000 +0200
  95277. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c 2014-02-03 12:32:57.000000000 +0100
  95278. @@ -12,9 +12,8 @@
  95279. Lesser General Public License for more details.
  95280. You should have received a copy of the GNU Lesser General Public
  95281. - License along with the GNU C Library; if not, write to the Free
  95282. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95283. - 02111-1307 USA. */
  95284. + License along with the GNU C Library; if not, see
  95285. + <http://www.gnu.org/licenses/>. */
  95286. /* Value passed to 'clone' for initialization of the thread register. */
  95287. #define TLS_VALUE ((void *) (pd) \
  95288. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h
  95289. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  95290. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  95291. @@ -13,9 +13,8 @@
  95292. Lesser General Public License for more details.
  95293. You should have received a copy of the GNU Lesser General Public
  95294. - License along with the GNU C Library; if not, write to the Free
  95295. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95296. - 02111-1307 USA. */
  95297. + License along with the GNU C Library; if not, see
  95298. + <http://www.gnu.org/licenses/>. */
  95299. #ifndef _LOWLEVELLOCK_H
  95300. #define _LOWLEVELLOCK_H 1
  95301. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c
  95302. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  95303. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  95304. @@ -13,9 +13,8 @@
  95305. Lesser General Public License for more details.
  95306. You should have received a copy of the GNU Lesser General Public
  95307. - License along with the GNU C Library; if not, write to the Free
  95308. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95309. - 02111-1307 USA. */
  95310. + License along with the GNU C Library; if not, see
  95311. + <http://www.gnu.org/licenses/>. */
  95312. #include "pthreadP.h"
  95313. #include <lowlevellock.h>
  95314. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S
  95315. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95316. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95317. @@ -12,9 +12,8 @@
  95318. Lesser General Public License for more details.
  95319. You should have received a copy of the GNU Lesser General Public
  95320. - License along with the GNU C Library; if not, write to the Free
  95321. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95322. - 02111-1307 USA. */
  95323. + License along with the GNU C Library; if not, see
  95324. + <http://www.gnu.org/licenses/>. */
  95325. #include <features.h>
  95326. #include <tls.h>
  95327. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
  95328. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95329. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95330. @@ -12,9 +12,8 @@
  95331. Lesser General Public License for more details.
  95332. You should have received a copy of the GNU Lesser General Public
  95333. - License along with the GNU C Library; if not, write to the Free
  95334. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95335. - 02111-1307 USA. */
  95336. + License along with the GNU C Library; if not, see
  95337. + <http://www.gnu.org/licenses/>. */
  95338. #include <sysdep.h>
  95339. #include <tls.h>
  95340. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S
  95341. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95342. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95343. @@ -12,9 +12,8 @@
  95344. Lesser General Public License for more details.
  95345. You should have received a copy of the GNU Lesser General Public
  95346. - License along with the GNU C Library; if not, write to the Free
  95347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95348. - 02111-1307 USA. */
  95349. + License along with the GNU C Library; if not, see
  95350. + <http://www.gnu.org/licenses/>. */
  95351. #include <features.h>
  95352. #include <tls.h>
  95353. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c
  95354. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c 2012-05-15 09:20:09.000000000 +0200
  95355. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c 2014-02-03 12:32:57.000000000 +0100
  95356. @@ -13,9 +13,8 @@
  95357. Lesser General Public License for more details.
  95358. You should have received a copy of the GNU Lesser General Public
  95359. - License along with the GNU C Library; if not, write to the Free
  95360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95361. - 02111-1307 USA. */
  95362. + License along with the GNU C Library; if not, see
  95363. + <http://www.gnu.org/licenses/>. */
  95364. #include <assert.h>
  95365. #include <errno.h>
  95366. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
  95367. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95368. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95369. @@ -14,18 +14,26 @@
  95370. Lesser General Public License for more details.
  95371. You should have received a copy of the GNU Lesser General Public
  95372. - License along with the GNU C Library; if not, write to the Free
  95373. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95374. - 02111-1307 USA. */
  95375. + License along with the GNU C Library; if not, see
  95376. + <http://www.gnu.org/licenses/>. */
  95377. #include <sys/types.h>
  95378. #include <sysdep.h>
  95379. /* Uncancelable open. */
  95380. +#if defined __NR_openat && !defined __NR_open
  95381. +#define open_not_cancel(name, flags, mode) \
  95382. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
  95383. + (flags), (mode))
  95384. +#define open_not_cancel_2(name, flags) \
  95385. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
  95386. + (flags))
  95387. +#else
  95388. #define open_not_cancel(name, flags, mode) \
  95389. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  95390. #define open_not_cancel_2(name, flags) \
  95391. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  95392. +#endif
  95393. /* Uncancelable openat. */
  95394. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  95395. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
  95396. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  95397. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  95398. @@ -14,9 +14,8 @@
  95399. Lesser General Public License for more details.
  95400. You should have received a copy of the GNU Lesser General Public
  95401. - License along with the GNU C Library; if not, write to the Free
  95402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95403. - 02111-1307 USA. */
  95404. + License along with the GNU C Library; if not, see
  95405. + <http://www.gnu.org/licenses/>. */
  95406. #ifndef _BITS_PTHREADTYPES_H
  95407. #define _BITS_PTHREADTYPES_H 1
  95408. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
  95409. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  95410. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  95411. @@ -14,9 +14,8 @@
  95412. Lesser General Public License for more details.
  95413. You should have received a copy of the GNU Lesser General Public
  95414. - License along with the GNU C Library; if not, write to the Free
  95415. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95416. - 02111-1307 USA. */
  95417. + License along with the GNU C Library; if not, see
  95418. + <http://www.gnu.org/licenses/>. */
  95419. #ifndef _SEMAPHORE_H
  95420. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  95421. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c
  95422. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c 2012-05-15 09:20:09.000000000 +0200
  95423. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c 2014-02-03 12:32:57.000000000 +0100
  95424. @@ -13,9 +13,8 @@
  95425. Lesser General Public License for more details.
  95426. You should have received a copy of the GNU Lesser General Public
  95427. - License along with the GNU C Library; if not, write to the Free
  95428. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95429. - 02111-1307 USA. */
  95430. + License along with the GNU C Library; if not, see
  95431. + <http://www.gnu.org/licenses/>. */
  95432. /* Value passed to 'clone' for initialization of the thread register. */
  95433. #define TLS_VALUE ((void *) (pd) \
  95434. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
  95435. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  95436. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  95437. @@ -13,9 +13,8 @@
  95438. Lesser General Public License for more details.
  95439. You should have received a copy of the GNU Lesser General Public
  95440. - License along with the GNU C Library; if not, write to the Free
  95441. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95442. - 02111-1307 USA. */
  95443. + License along with the GNU C Library; if not, see
  95444. + <http://www.gnu.org/licenses/>. */
  95445. #ifndef _LOWLEVELLOCK_H
  95446. #define _LOWLEVELLOCK_H 1
  95447. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S
  95448. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95449. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95450. @@ -13,9 +13,8 @@
  95451. Lesser General Public License for more details.
  95452. You should have received a copy of the GNU Lesser General Public
  95453. - License along with the GNU C Library; if not, write to the Free
  95454. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95455. - 02111-1307 USA. */
  95456. + License along with the GNU C Library; if not, see
  95457. + <http://www.gnu.org/licenses/>. */
  95458. #include <sysdep.h>
  95459. #define _ERRNO_H 1
  95460. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
  95461. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95462. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95463. @@ -14,9 +14,8 @@
  95464. Lesser General Public License for more details.
  95465. You should have received a copy of the GNU Lesser General Public
  95466. - License along with the GNU C Library; if not, write to the Free
  95467. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  95468. - 02110-1301 USA. */
  95469. + License along with the GNU C Library; if not, see
  95470. + <http://www.gnu.org/licenses/>. */
  95471. #include <sysdep.h>
  95472. #include <tls.h>
  95473. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
  95474. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95475. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95476. @@ -13,9 +13,8 @@
  95477. Lesser General Public License for more details.
  95478. You should have received a copy of the GNU Lesser General Public
  95479. - License along with the GNU C Library; if not, write to the Free
  95480. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95481. - 02111-1307 USA. */
  95482. + License along with the GNU C Library; if not, see
  95483. + <http://www.gnu.org/licenses/>. */
  95484. #include <sysdep.h>
  95485. #define _ERRNO_H 1
  95486. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S
  95487. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95488. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95489. @@ -13,9 +13,8 @@
  95490. Lesser General Public License for more details.
  95491. You should have received a copy of the GNU Lesser General Public
  95492. - License along with the GNU C Library; if not, write to the Free
  95493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95494. - 02111-1307 USA. */
  95495. + License along with the GNU C Library; if not, see
  95496. + <http://www.gnu.org/licenses/>. */
  95497. #include <sysdep.h>
  95498. #define _ERRNO_H 1
  95499. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
  95500. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95501. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95502. @@ -14,9 +14,8 @@
  95503. Lesser General Public License for more details.
  95504. You should have received a copy of the GNU Lesser General Public
  95505. - License along with the GNU C Library; if not, write to the Free
  95506. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  95507. - 02110-1301 USA. */
  95508. + License along with the GNU C Library; if not, see
  95509. + <http://www.gnu.org/licenses/>. */
  95510. #include <sysdep.h>
  95511. #include <tls.h>
  95512. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
  95513. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95514. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95515. @@ -13,9 +13,8 @@
  95516. Lesser General Public License for more details.
  95517. You should have received a copy of the GNU Lesser General Public
  95518. - License along with the GNU C Library; if not, write to the Free
  95519. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95520. - 02111-1307 USA. */
  95521. + License along with the GNU C Library; if not, see
  95522. + <http://www.gnu.org/licenses/>. */
  95523. #include <sysdep.h>
  95524. #define _ERRNO_H 1
  95525. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
  95526. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  95527. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  95528. @@ -13,9 +13,8 @@
  95529. Lesser General Public License for more details.
  95530. You should have received a copy of the GNU Lesser General Public
  95531. - License along with the GNU C Library; if not, write to the Free
  95532. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95533. - 02111-1307 USA. */
  95534. + License along with the GNU C Library; if not, see
  95535. + <http://www.gnu.org/licenses/>. */
  95536. #include "pthreadP.h"
  95537. #include <lowlevellock.h>
  95538. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c
  95539. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  95540. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  95541. @@ -13,9 +13,8 @@
  95542. Lesser General Public License for more details.
  95543. You should have received a copy of the GNU Lesser General Public
  95544. - License along with the GNU C Library; if not, write to the Free
  95545. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95546. - 02111-1307 USA. */
  95547. + License along with the GNU C Library; if not, see
  95548. + <http://www.gnu.org/licenses/>. */
  95549. #include "pthreadP.h"
  95550. #include <lowlevellock.h>
  95551. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
  95552. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2012-05-15 09:20:09.000000000 +0200
  95553. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-02-03 12:32:57.000000000 +0100
  95554. @@ -13,9 +13,8 @@
  95555. Lesser General Public License for more details.
  95556. You should have received a copy of the GNU Lesser General Public
  95557. - License along with the GNU C Library; if not, write to the Free
  95558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95559. - 02111-1307 USA. */
  95560. + License along with the GNU C Library; if not, see
  95561. + <http://www.gnu.org/licenses/>. */
  95562. #include <setjmp.h>
  95563. #include <stdlib.h>
  95564. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c
  95565. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  95566. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  95567. @@ -14,9 +14,8 @@
  95568. Lesser General Public License for more details.
  95569. You should have received a copy of the GNU Lesser General Public
  95570. - License along with the GNU C Library; if not, write to the Free
  95571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95572. - 02111-1307 USA. */
  95573. + License along with the GNU C Library; if not, see
  95574. + <http://www.gnu.org/licenses/>. */
  95575. #include <errno.h>
  95576. #include <sysdep.h>
  95577. @@ -25,7 +24,7 @@
  95578. #include <semaphore.h>
  95579. int
  95580. -__new_sem_post (sem_t *sem)
  95581. +sem_post (sem_t *sem)
  95582. {
  95583. struct new_sem *isem = (struct new_sem *) sem;
  95584. @@ -44,4 +43,3 @@
  95585. }
  95586. return 0;
  95587. }
  95588. -weak_alias(__new_sem_post, sem_post)
  95589. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c
  95590. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c 2012-05-15 09:20:09.000000000 +0200
  95591. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c 2014-02-03 12:32:57.000000000 +0100
  95592. @@ -13,17 +13,16 @@
  95593. Lesser General Public License for more details.
  95594. You should have received a copy of the GNU Lesser General Public
  95595. - License along with the GNU C Library; if not, write to the Free
  95596. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95597. - 02111-1307 USA. */
  95598. + License along with the GNU C Library; if not, see
  95599. + <http://www.gnu.org/licenses/>. */
  95600. #include <unistd.h>
  95601. -extern int __libc_fork (void);
  95602. -
  95603. -pid_t
  95604. +#if 0
  95605. +static pid_t
  95606. __fork (void)
  95607. {
  95608. return __libc_fork ();
  95609. }
  95610. strong_alias (__fork, fork)
  95611. +#endif
  95612. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
  95613. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  95614. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2014-02-03 12:32:57.000000000 +0100
  95615. @@ -13,9 +13,8 @@
  95616. Lesser General Public License for more details.
  95617. You should have received a copy of the GNU Lesser General Public
  95618. - License along with the GNU C Library; if not, write to the Free
  95619. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95620. - 02111-1307 USA. */
  95621. + License along with the GNU C Library; if not, see
  95622. + <http://www.gnu.org/licenses/>. */
  95623. #include <assert.h>
  95624. #include <errno.h>
  95625. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
  95626. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  95627. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2014-02-03 12:32:57.000000000 +0100
  95628. @@ -13,9 +13,8 @@
  95629. Lesser General Public License for more details.
  95630. You should have received a copy of the GNU Lesser General Public
  95631. - License along with the GNU C Library; if not, write to the Free
  95632. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95633. - 02111-1307 USA. */
  95634. + License along with the GNU C Library; if not, see
  95635. + <http://www.gnu.org/licenses/>. */
  95636. #include <assert.h>
  95637. #include <errno.h>
  95638. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c
  95639. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  95640. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c 2014-02-03 12:32:57.000000000 +0100
  95641. @@ -13,9 +13,8 @@
  95642. Lesser General Public License for more details.
  95643. You should have received a copy of the GNU Lesser General Public
  95644. - License along with the GNU C Library; if not, write to the Free
  95645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95646. - 02111-1307 USA. */
  95647. + License along with the GNU C Library; if not, see
  95648. + <http://www.gnu.org/licenses/>. */
  95649. #include <errno.h>
  95650. #include <limits.h>
  95651. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
  95652. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  95653. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  95654. @@ -12,9 +12,8 @@
  95655. Lesser General Public License for more details.
  95656. You should have received a copy of the GNU Lesser General Public
  95657. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95658. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95659. - Boston, MA 02111-1307, USA. */
  95660. + License along with the GNU C Library; see the file COPYING.LIB. If
  95661. + not, see <http://www.gnu.org/licenses/>. */
  95662. #include <errno.h>
  95663. #include <pthreadP.h>
  95664. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c
  95665. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c 2012-05-15 09:20:09.000000000 +0200
  95666. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c 2014-02-03 12:32:57.000000000 +0100
  95667. @@ -13,9 +13,8 @@
  95668. Lesser General Public License for more details.
  95669. You should have received a copy of the GNU Lesser General Public
  95670. - License along with the GNU C Library; if not, write to the Free
  95671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95672. - 02111-1307 USA. */
  95673. + License along with the GNU C Library; if not, see
  95674. + <http://www.gnu.org/licenses/>. */
  95675. #include <errno.h>
  95676. #include <signal.h>
  95677. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c
  95678. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  95679. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2014-02-03 12:32:57.000000000 +0100
  95680. @@ -13,9 +13,8 @@
  95681. Lesser General Public License for more details.
  95682. You should have received a copy of the GNU Lesser General Public
  95683. - License along with the GNU C Library; if not, write to the Free
  95684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95685. - 02111-1307 USA. */
  95686. + License along with the GNU C Library; if not, see
  95687. + <http://www.gnu.org/licenses/>. */
  95688. #include <alloca.h>
  95689. #include <errno.h>
  95690. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
  95691. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c 2012-05-15 09:20:09.000000000 +0200
  95692. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c 2014-02-03 12:32:57.000000000 +0100
  95693. @@ -13,9 +13,8 @@
  95694. Lesser General Public License for more details.
  95695. You should have received a copy of the GNU Lesser General Public
  95696. - License along with the GNU C Library; if not, write to the Free
  95697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95698. - 02111-1307 USA. */
  95699. + License along with the GNU C Library; if not, see
  95700. + <http://www.gnu.org/licenses/>. */
  95701. #include <errno.h>
  95702. #include <signal.h>
  95703. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c
  95704. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c 2012-05-15 09:20:09.000000000 +0200
  95705. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c 2014-02-03 12:32:57.000000000 +0100
  95706. @@ -13,9 +13,8 @@
  95707. Lesser General Public License for more details.
  95708. You should have received a copy of the GNU Lesser General Public
  95709. - License along with the GNU C Library; if not, write to the Free
  95710. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95711. - 02111-1307 USA. */
  95712. + License along with the GNU C Library; if not, see
  95713. + <http://www.gnu.org/licenses/>. */
  95714. #include <pthread.h>
  95715. #include <sched.h>
  95716. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c
  95717. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c 2012-05-15 09:20:09.000000000 +0200
  95718. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c 2014-02-03 12:32:57.000000000 +0100
  95719. @@ -13,9 +13,8 @@
  95720. Lesser General Public License for more details.
  95721. You should have received a copy of the GNU Lesser General Public
  95722. - License along with the GNU C Library; if not, write to the Free
  95723. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95724. - 02111-1307 USA. */
  95725. + License along with the GNU C Library; if not, see
  95726. + <http://www.gnu.org/licenses/>. */
  95727. #include <errno.h>
  95728. #include <signal.h>
  95729. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c
  95730. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c 2012-05-15 09:20:09.000000000 +0200
  95731. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c 2014-02-03 12:32:57.000000000 +0100
  95732. @@ -13,9 +13,8 @@
  95733. Lesser General Public License for more details.
  95734. You should have received a copy of the GNU Lesser General Public
  95735. - License along with the GNU C Library; if not, write to the Free
  95736. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95737. - 02111-1307 USA. */
  95738. + License along with the GNU C Library; if not, see
  95739. + <http://www.gnu.org/licenses/>. */
  95740. #include <errno.h>
  95741. #include <limits.h>
  95742. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c
  95743. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c 2012-05-15 09:20:09.000000000 +0200
  95744. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c 2014-02-03 12:32:57.000000000 +0100
  95745. @@ -13,9 +13,8 @@
  95746. Lesser General Public License for more details.
  95747. You should have received a copy of the GNU Lesser General Public
  95748. - License along with the GNU C Library; if not, write to the Free
  95749. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95750. - 02111-1307 USA. */
  95751. + License along with the GNU C Library; if not, see
  95752. + <http://www.gnu.org/licenses/>. */
  95753. #include <errno.h>
  95754. #include <stdlib.h>
  95755. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c
  95756. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  95757. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  95758. @@ -14,9 +14,8 @@
  95759. Lesser General Public License for more details.
  95760. You should have received a copy of the GNU Lesser General Public
  95761. - License along with the GNU C Library; if not, write to the Free
  95762. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95763. - 02111-1307 USA. */
  95764. + License along with the GNU C Library; if not, see
  95765. + <http://www.gnu.org/licenses/>. */
  95766. #include <errno.h>
  95767. #include <sysdep.h>
  95768. @@ -26,7 +25,7 @@
  95769. #include <tls.h>
  95770. int
  95771. -__new_sem_post (sem_t *sem)
  95772. +sem_post (sem_t *sem)
  95773. {
  95774. struct new_sem *isem = (struct new_sem *) sem;
  95775. @@ -55,4 +54,3 @@
  95776. }
  95777. return 0;
  95778. }
  95779. -weak_alias(__new_sem_post, sem_post)
  95780. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
  95781. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  95782. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  95783. @@ -14,9 +14,8 @@
  95784. Lesser General Public License for more details.
  95785. You should have received a copy of the GNU Lesser General Public
  95786. - License along with the GNU C Library; if not, write to the Free
  95787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95788. - 02111-1307 USA. */
  95789. + License along with the GNU C Library; if not, see
  95790. + <http://www.gnu.org/licenses/>. */
  95791. #include <errno.h>
  95792. #include <sysdep.h>
  95793. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c
  95794. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c 2012-05-15 09:20:09.000000000 +0200
  95795. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c 2014-02-03 12:32:57.000000000 +0100
  95796. @@ -14,9 +14,8 @@
  95797. Lesser General Public License for more details.
  95798. You should have received a copy of the GNU Lesser General Public
  95799. - License along with the GNU C Library; if not, write to the Free
  95800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95801. - 02111-1307 USA. */
  95802. + License along with the GNU C Library; if not, see
  95803. + <http://www.gnu.org/licenses/>. */
  95804. #include <errno.h>
  95805. #include <sysdep.h>
  95806. @@ -26,7 +25,7 @@
  95807. int
  95808. -__new_sem_trywait (sem_t *sem)
  95809. +sem_trywait (sem_t *sem)
  95810. {
  95811. int *futex = (int *) sem;
  95812. int val;
  95813. @@ -41,4 +40,3 @@
  95814. __set_errno (EAGAIN);
  95815. return -1;
  95816. }
  95817. -weak_alias(__new_sem_trywait, sem_trywait)
  95818. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c
  95819. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c 2012-05-15 09:20:09.000000000 +0200
  95820. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c 2014-02-03 12:32:57.000000000 +0100
  95821. @@ -14,9 +14,8 @@
  95822. Lesser General Public License for more details.
  95823. You should have received a copy of the GNU Lesser General Public
  95824. - License along with the GNU C Library; if not, write to the Free
  95825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95826. - 02111-1307 USA. */
  95827. + License along with the GNU C Library; if not, see
  95828. + <http://www.gnu.org/licenses/>. */
  95829. #include <errno.h>
  95830. #include <sysdep.h>
  95831. @@ -38,7 +37,7 @@
  95832. int
  95833. -__new_sem_wait (sem_t *sem)
  95834. +sem_wait (sem_t *sem)
  95835. {
  95836. struct new_sem *isem = (struct new_sem *) sem;
  95837. int err;
  95838. @@ -81,4 +80,3 @@
  95839. return err;
  95840. }
  95841. -weak_alias(__new_sem_wait, sem_wait)
  95842. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
  95843. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  95844. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  95845. @@ -14,9 +14,8 @@
  95846. Lesser General Public License for more details.
  95847. You should have received a copy of the GNU Lesser General Public
  95848. - License along with the GNU C Library; if not, write to the Free
  95849. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95850. - 02111-1307 USA. */
  95851. + License along with the GNU C Library; if not, see
  95852. + <http://www.gnu.org/licenses/>. */
  95853. #ifndef _BITS_PTHREADTYPES_H
  95854. #define _BITS_PTHREADTYPES_H 1
  95855. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h
  95856. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  95857. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  95858. @@ -13,9 +13,8 @@
  95859. Lesser General Public License for more details.
  95860. You should have received a copy of the GNU Lesser General Public
  95861. - License along with the GNU C Library; if not, write to the Free
  95862. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95863. - 02111-1307 USA. */
  95864. + License along with the GNU C Library; if not, see
  95865. + <http://www.gnu.org/licenses/>. */
  95866. #ifndef _SEMAPHORE_H
  95867. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  95868. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c
  95869. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c 2012-05-15 09:20:09.000000000 +0200
  95870. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c 2014-02-03 12:32:57.000000000 +0100
  95871. @@ -12,9 +12,8 @@
  95872. Lesser General Public License for more details.
  95873. You should have received a copy of the GNU Lesser General Public
  95874. - License along with the GNU C Library; if not, write to the Free
  95875. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95876. - 02111-1307 USA. */
  95877. + License along with the GNU C Library; if not, see
  95878. + <http://www.gnu.org/licenses/>. */
  95879. /* Value passed to 'clone' for initialization of the thread register. */
  95880. #define TLS_VALUE (pd + 1)
  95881. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c
  95882. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c 2012-05-15 09:20:09.000000000 +0200
  95883. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c 2014-02-03 12:32:57.000000000 +0100
  95884. @@ -12,9 +12,8 @@
  95885. Lesser General Public License for more details.
  95886. You should have received a copy of the GNU Lesser General Public
  95887. - License along with the GNU C Library; if not, write to the Free
  95888. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95889. - 02111-1307 USA. */
  95890. + License along with the GNU C Library; if not, see
  95891. + <http://www.gnu.org/licenses/>. */
  95892. #include <sched.h>
  95893. #include <signal.h>
  95894. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
  95895. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  95896. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  95897. @@ -12,8 +12,7 @@
  95898. Lesser General Public License for more details.
  95899. You should have received a copy of the GNU Lesser General Public
  95900. - License along with the GNU C Library; if not, write to the Free
  95901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95902. - 02111-1307 USA. */
  95903. + License along with the GNU C Library; if not, see
  95904. + <http://www.gnu.org/licenses/>. */
  95905. #include "lowlevellock.S"
  95906. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h
  95907. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h 2012-05-15 09:20:09.000000000 +0200
  95908. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h 2014-02-03 12:32:57.000000000 +0100
  95909. @@ -12,9 +12,8 @@
  95910. Lesser General Public License for more details.
  95911. You should have received a copy of the GNU Lesser General Public
  95912. - License along with the GNU C Library; if not, write to the Free
  95913. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95914. - 02111-1307 USA. */
  95915. + License along with the GNU C Library; if not, see
  95916. + <http://www.gnu.org/licenses/>. */
  95917. #ifdef __ASSEMBLER__
  95918. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
  95919. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  95920. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  95921. @@ -13,9 +13,8 @@
  95922. Lesser General Public License for more details.
  95923. You should have received a copy of the GNU Lesser General Public
  95924. - License along with the GNU C Library; if not, write to the Free
  95925. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95926. - 02111-1307 USA. */
  95927. + License along with the GNU C Library; if not, see
  95928. + <http://www.gnu.org/licenses/>. */
  95929. #ifndef _LOWLEVELLOCK_H
  95930. #define _LOWLEVELLOCK_H 1
  95931. @@ -396,9 +395,9 @@
  95932. #define lll_wait_tid(tid) \
  95933. do { \
  95934. - __typeof (tid) *__tid = &(tid); \
  95935. - while (*__tid != 0) \
  95936. - lll_futex_wait (__tid, *__tid, LLL_SHARED); \
  95937. + __typeof (tid) __tid; \
  95938. + while ((__tid = (tid)) != 0) \
  95939. + lll_futex_wait (&(tid), __tid, LLL_SHARED); \
  95940. } while (0)
  95941. extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
  95942. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
  95943. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  95944. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  95945. @@ -13,9 +13,8 @@
  95946. Lesser General Public License for more details.
  95947. You should have received a copy of the GNU Lesser General Public
  95948. - License along with the GNU C Library; if not, write to the Free
  95949. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95950. - 02111-1307 USA. */
  95951. + License along with the GNU C Library; if not, see
  95952. + <http://www.gnu.org/licenses/>. */
  95953. #include <sysdep.h>
  95954. #include <pthread-errnos.h>
  95955. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
  95956. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  95957. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  95958. @@ -13,9 +13,8 @@
  95959. Lesser General Public License for more details.
  95960. You should have received a copy of the GNU Lesser General Public
  95961. - License along with the GNU C Library; if not, write to the Free
  95962. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95963. - 02111-1307 USA. */
  95964. + License along with the GNU C Library; if not, see
  95965. + <http://www.gnu.org/licenses/>. */
  95966. #include <sysdep.h>
  95967. #include <pthread-errnos.h>
  95968. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
  95969. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  95970. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  95971. @@ -12,9 +12,8 @@
  95972. Lesser General Public License for more details.
  95973. You should have received a copy of the GNU Lesser General Public
  95974. - License along with the GNU C Library; if not, write to the Free
  95975. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95976. - 02111-1307 USA. */
  95977. + License along with the GNU C Library; if not, see
  95978. + <http://www.gnu.org/licenses/>. */
  95979. #include <sysdep.h>
  95980. #include <lowlevellock.h>
  95981. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
  95982. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  95983. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  95984. @@ -12,9 +12,8 @@
  95985. Lesser General Public License for more details.
  95986. You should have received a copy of the GNU Lesser General Public
  95987. - License along with the GNU C Library; if not, write to the Free
  95988. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95989. - 02111-1307 USA. */
  95990. + License along with the GNU C Library; if not, see
  95991. + <http://www.gnu.org/licenses/>. */
  95992. #include <sysdep.h>
  95993. #include <lowlevellock.h>
  95994. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
  95995. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  95996. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  95997. @@ -12,9 +12,8 @@
  95998. Lesser General Public License for more details.
  95999. You should have received a copy of the GNU Lesser General Public
  96000. - License along with the GNU C Library; if not, write to the Free
  96001. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96002. - 02111-1307 USA. */
  96003. + License along with the GNU C Library; if not, see
  96004. + <http://www.gnu.org/licenses/>. */
  96005. #include <sysdep.h>
  96006. #include <lowlevellock.h>
  96007. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
  96008. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  96009. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  96010. @@ -12,9 +12,8 @@
  96011. Lesser General Public License for more details.
  96012. You should have received a copy of the GNU Lesser General Public
  96013. - License along with the GNU C Library; if not, write to the Free
  96014. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96015. - 02111-1307 USA. */
  96016. + License along with the GNU C Library; if not, see
  96017. + <http://www.gnu.org/licenses/>. */
  96018. #include <sysdep.h>
  96019. #include <lowlevellock.h>
  96020. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
  96021. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  96022. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  96023. @@ -12,9 +12,8 @@
  96024. Lesser General Public License for more details.
  96025. You should have received a copy of the GNU Lesser General Public
  96026. - License along with the GNU C Library; if not, write to the Free
  96027. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96028. - 02111-1307 USA. */
  96029. + License along with the GNU C Library; if not, see
  96030. + <http://www.gnu.org/licenses/>. */
  96031. #include <sysdep.h>
  96032. #include <lowlevellock.h>
  96033. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
  96034. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  96035. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  96036. @@ -12,9 +12,8 @@
  96037. Lesser General Public License for more details.
  96038. You should have received a copy of the GNU Lesser General Public
  96039. - License along with the GNU C Library; if not, write to the Free
  96040. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96041. - 02111-1307 USA. */
  96042. + License along with the GNU C Library; if not, see
  96043. + <http://www.gnu.org/licenses/>. */
  96044. #include <unwindbuf.h>
  96045. #include <sysdep.h>
  96046. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
  96047. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  96048. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  96049. @@ -12,9 +12,8 @@
  96050. Lesser General Public License for more details.
  96051. You should have received a copy of the GNU Lesser General Public
  96052. - License along with the GNU C Library; if not, write to the Free
  96053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96054. - 02111-1307 USA. */
  96055. + License along with the GNU C Library; if not, see
  96056. + <http://www.gnu.org/licenses/>. */
  96057. #include <sysdep.h>
  96058. #include <lowlevellock.h>
  96059. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
  96060. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  96061. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  96062. @@ -12,9 +12,8 @@
  96063. Lesser General Public License for more details.
  96064. You should have received a copy of the GNU Lesser General Public
  96065. - License along with the GNU C Library; if not, write to the Free
  96066. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96067. - 02111-1307 USA. */
  96068. + License along with the GNU C Library; if not, see
  96069. + <http://www.gnu.org/licenses/>. */
  96070. #include <sysdep.h>
  96071. #include <lowlevellock.h>
  96072. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
  96073. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  96074. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  96075. @@ -12,9 +12,8 @@
  96076. Lesser General Public License for more details.
  96077. You should have received a copy of the GNU Lesser General Public
  96078. - License along with the GNU C Library; if not, write to the Free
  96079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96080. - 02111-1307 USA. */
  96081. + License along with the GNU C Library; if not, see
  96082. + <http://www.gnu.org/licenses/>. */
  96083. #include <sysdep.h>
  96084. #include <lowlevellock.h>
  96085. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
  96086. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  96087. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  96088. @@ -12,9 +12,8 @@
  96089. Lesser General Public License for more details.
  96090. You should have received a copy of the GNU Lesser General Public
  96091. - License along with the GNU C Library; if not, write to the Free
  96092. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96093. - 02111-1307 USA. */
  96094. + License along with the GNU C Library; if not, see
  96095. + <http://www.gnu.org/licenses/>. */
  96096. #include <sysdep.h>
  96097. #include <lowlevellock.h>
  96098. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
  96099. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  96100. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  96101. @@ -12,9 +12,8 @@
  96102. Lesser General Public License for more details.
  96103. You should have received a copy of the GNU Lesser General Public
  96104. - License along with the GNU C Library; if not, write to the Free
  96105. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96106. - 02111-1307 USA. */
  96107. + License along with the GNU C Library; if not, see
  96108. + <http://www.gnu.org/licenses/>. */
  96109. #include <sysdep.h>
  96110. #include <lowlevellock.h>
  96111. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
  96112. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  96113. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  96114. @@ -23,8 +23,7 @@
  96115. You should have received a copy of the GNU Library General Public
  96116. License along with the GNU C Library; see the file COPYING.LIB. If not,
  96117. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  96118. - Boston, MA 02111-1307, USA. */
  96119. + see <http://www.gnu.org/licenses/>. */
  96120. /* This file is compiled into assembly code which is then munged by a sed
  96121. script into two files: crti.s and crtn.s.
  96122. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S
  96123. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  96124. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  96125. @@ -12,9 +12,8 @@
  96126. Lesser General Public License for more details.
  96127. You should have received a copy of the GNU Lesser General Public
  96128. - License along with the GNU C Library; if not, write to the Free
  96129. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96130. - 02111-1307 USA. */
  96131. + License along with the GNU C Library; if not, see
  96132. + <http://www.gnu.org/licenses/>. */
  96133. #include <sysdep.h>
  96134. #define _ERRNO_H 1
  96135. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S
  96136. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  96137. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  96138. @@ -12,9 +12,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. #include <sysdep.h>
  96147. #include <pthread-errnos.h>
  96148. @@ -25,10 +24,10 @@
  96149. .text
  96150. - .globl __new_sem_post
  96151. - .type __new_sem_post,@function
  96152. + .globl sem_post
  96153. + .type sem_post,@function
  96154. .align 5
  96155. -__new_sem_post:
  96156. +sem_post:
  96157. mov.l @(VALUE,r4), r2
  96158. 0:
  96159. mov.l .Lmax, r1
  96160. @@ -106,5 +105,4 @@
  96161. .Lerrloc3:
  96162. .long __errno_location@PLT-(.Lerrloc3b-.)
  96163. #endif
  96164. - .size __new_sem_post,.-__new_sem_post
  96165. - weak_alias(__new_sem_post, sem_post)
  96166. + .size sem_post,.-sem_post
  96167. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
  96168. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  96169. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  96170. @@ -12,9 +12,8 @@
  96171. Lesser General Public License for more details.
  96172. You should have received a copy of the GNU Lesser General Public
  96173. - License along with the GNU C Library; if not, write to the Free
  96174. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96175. - 02111-1307 USA. */
  96176. + License along with the GNU C Library; if not, see
  96177. + <http://www.gnu.org/licenses/>. */
  96178. #include <sysdep.h>
  96179. #include <pthread-errnos.h>
  96180. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S
  96181. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  96182. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  96183. @@ -12,9 +12,8 @@
  96184. Lesser General Public License for more details.
  96185. You should have received a copy of the GNU Lesser General Public
  96186. - License along with the GNU C Library; if not, write to the Free
  96187. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96188. - 02111-1307 USA. */
  96189. + License along with the GNU C Library; if not, see
  96190. + <http://www.gnu.org/licenses/>. */
  96191. #include <sysdep.h>
  96192. #include <pthread-errnos.h>
  96193. @@ -24,10 +23,10 @@
  96194. .text
  96195. - .globl __new_sem_trywait
  96196. - .type __new_sem_trywait,@function
  96197. + .globl sem_trywait
  96198. + .type sem_trywait,@function
  96199. .align 5
  96200. -__new_sem_trywait:
  96201. +sem_trywait:
  96202. mov.l r12, @-r15
  96203. mov.l r8, @-r15
  96204. sts.l pr, @-r15
  96205. @@ -86,5 +85,4 @@
  96206. .Lerrloc1:
  96207. .long __errno_location@PLT-(.Lerrloc1b-.)
  96208. #endif
  96209. - .size __new_sem_trywait,.-__new_sem_trywait
  96210. - weak_alias(__new_sem_trywait, sem_trywait)
  96211. + .size sem_trywait,.-sem_trywait
  96212. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
  96213. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  96214. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  96215. @@ -12,9 +12,8 @@
  96216. Lesser General Public License for more details.
  96217. You should have received a copy of the GNU Lesser General Public
  96218. - License along with the GNU C Library; if not, write to the Free
  96219. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96220. - 02111-1307 USA. */
  96221. + License along with the GNU C Library; if not, see
  96222. + <http://www.gnu.org/licenses/>. */
  96223. #include <sysdep.h>
  96224. #include <pthread-errnos.h>
  96225. @@ -30,10 +29,10 @@
  96226. .text
  96227. - .globl __new_sem_wait
  96228. - .type __new_sem_wait,@function
  96229. + .globl sem_wait
  96230. + .type sem_wait,@function
  96231. .align 5
  96232. -__new_sem_wait:
  96233. +sem_wait:
  96234. .LSTARTCODE:
  96235. mov.l r8, @-r15
  96236. .Lpush_r8:
  96237. @@ -161,8 +160,7 @@
  96238. .long __pthread_enable_asynccancel-.Lenable0b
  96239. .Ldisable0:
  96240. .long __pthread_disable_asynccancel-.Ldisable0b
  96241. - .size __new_sem_wait,.-__new_sem_wait
  96242. - weak_alias(__new_sem_wait, sem_wait)
  96243. + .size sem_wait,.-sem_wait
  96244. .type sem_wait_cleanup,@function
  96245. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h
  96246. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h 2012-05-15 09:20:09.000000000 +0200
  96247. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h 2014-02-03 12:32:57.000000000 +0100
  96248. @@ -14,8 +14,7 @@
  96249. You should have received a copy of the GNU Library General Public
  96250. License along with the GNU C Library; see the file COPYING.LIB. If not,
  96251. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96252. - Boston, MA 02111-1307, USA. */
  96253. + see <http://www.gnu.org/licenses/>. */
  96254. static inline int
  96255. is_smp_system (void)
  96256. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
  96257. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  96258. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  96259. @@ -12,9 +12,8 @@
  96260. Lesser General Public License for more details.
  96261. You should have received a copy of the GNU Lesser General Public
  96262. - License along with the GNU C Library; if not, write to the Free
  96263. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96264. - 02111-1307 USA. */
  96265. + License along with the GNU C Library; if not, see
  96266. + <http://www.gnu.org/licenses/>. */
  96267. #include <tls.h>
  96268. #include <sysdep.h>
  96269. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S
  96270. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  96271. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S 2014-02-03 12:32:57.000000000 +0100
  96272. @@ -12,9 +12,8 @@
  96273. Lesser General Public License for more details.
  96274. You should have received a copy of the GNU Lesser General Public
  96275. - License along with the GNU C Library; if not, write to the Free
  96276. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96277. - 02111-1307 USA. */
  96278. + License along with the GNU C Library; if not, see
  96279. + <http://www.gnu.org/licenses/>. */
  96280. #include <sysdep.h>
  96281. #define _ERRNO_H 1
  96282. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c
  96283. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c 2012-05-15 09:20:09.000000000 +0200
  96284. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c 2014-02-03 12:32:57.000000000 +0100
  96285. @@ -12,9 +12,8 @@
  96286. Lesser General Public License for more details.
  96287. You should have received a copy of the GNU Lesser General Public
  96288. - License along with the GNU C Library; if not, write to the Free
  96289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96290. - 02111-1307 USA. */
  96291. + License along with the GNU C Library; if not, see
  96292. + <http://www.gnu.org/licenses/>. */
  96293. #include <pthreadP.h>
  96294. #include <errno.h>
  96295. @@ -67,7 +66,7 @@
  96296. /* Return any pending signal or wait for one for the given time. */
  96297. -int attribute_hidden
  96298. +int
  96299. __sigtimedwait (const sigset_t *set, siginfo_t *info,
  96300. const struct timespec *timeout)
  96301. {
  96302. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c
  96303. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c 2012-05-15 09:20:09.000000000 +0200
  96304. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c 2014-02-03 12:32:57.000000000 +0100
  96305. @@ -12,9 +12,8 @@
  96306. Lesser General Public License for more details.
  96307. You should have received a copy of the GNU Lesser General Public
  96308. - License along with the GNU C Library; if not, write to the Free
  96309. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96310. - 02111-1307 USA. */
  96311. + License along with the GNU C Library; if not, see
  96312. + <http://www.gnu.org/licenses/>. */
  96313. #include <pthreadP.h>
  96314. #include <errno.h>
  96315. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h
  96316. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h 2012-05-15 09:20:09.000000000 +0200
  96317. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h 2014-02-03 12:32:57.000000000 +0100
  96318. @@ -14,8 +14,7 @@
  96319. You should have received a copy of the GNU Library General Public
  96320. License along with the GNU C Library; see the file COPYING.LIB. If not,
  96321. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96322. - Boston, MA 02111-1307, USA. */
  96323. + see <http://www.gnu.org/licenses/>. */
  96324. /* Test whether the machine has more than one processor. This is not the
  96325. best test but good enough. More complicated tests would require `malloc'
  96326. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
  96327. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  96328. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  96329. @@ -14,8 +14,7 @@
  96330. You should have received a copy of the GNU Library General Public
  96331. License along with the GNU C Library; see the file COPYING.LIB. If not,
  96332. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96333. - Boston, MA 02111-1307, USA. */
  96334. + see <http://www.gnu.org/licenses/>. */
  96335. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  96336. and defines LINK_MAX although filesystems have different maxima. A
  96337. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
  96338. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  96339. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  96340. @@ -14,9 +14,8 @@
  96341. Lesser General Public License for more details.
  96342. You should have received a copy of the GNU Lesser General Public
  96343. - License along with the GNU C Library; if not, write to the Free
  96344. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96345. - 02111-1307 USA. */
  96346. + License along with the GNU C Library; if not, see
  96347. + <http://www.gnu.org/licenses/>. */
  96348. #ifndef _BITS_PTHREADTYPES_H
  96349. #define _BITS_PTHREADTYPES_H 1
  96350. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h
  96351. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  96352. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  96353. @@ -14,9 +14,8 @@
  96354. Lesser General Public License for more details.
  96355. You should have received a copy of the GNU Lesser General Public
  96356. - License along with the GNU C Library; if not, write to the Free
  96357. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96358. - 02111-1307 USA. */
  96359. + License along with the GNU C Library; if not, see
  96360. + <http://www.gnu.org/licenses/>. */
  96361. #ifndef _SEMAPHORE_H
  96362. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  96363. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c
  96364. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c 2012-05-15 09:20:09.000000000 +0200
  96365. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c 2014-02-03 12:32:57.000000000 +0100
  96366. @@ -13,9 +13,8 @@
  96367. Lesser General Public License for more details.
  96368. You should have received a copy of the GNU Lesser General Public
  96369. - License along with the GNU C Library; if not, write to the Free
  96370. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96371. - 02111-1307 USA. */
  96372. + License along with the GNU C Library; if not, see
  96373. + <http://www.gnu.org/licenses/>. */
  96374. #include <sched.h>
  96375. #include <signal.h>
  96376. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c
  96377. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  96378. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  96379. @@ -13,9 +13,8 @@
  96380. Lesser General Public License for more details.
  96381. You should have received a copy of the GNU Lesser General Public
  96382. - License along with the GNU C Library; if not, write to the Free
  96383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96384. - 02111-1307 USA. */
  96385. + License along with the GNU C Library; if not, see
  96386. + <http://www.gnu.org/licenses/>. */
  96387. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  96388. #include "lowlevellock.c"
  96389. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c
  96390. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  96391. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  96392. @@ -14,9 +14,8 @@
  96393. Lesser General Public License for more details.
  96394. You should have received a copy of the GNU Lesser General Public
  96395. - License along with the GNU C Library; if not, write to the Free
  96396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96397. - 02111-1307 USA. */
  96398. + License along with the GNU C Library; if not, see
  96399. + <http://www.gnu.org/licenses/>. */
  96400. #include <errno.h>
  96401. #include <sysdep.h>
  96402. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
  96403. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  96404. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  96405. @@ -14,9 +14,8 @@
  96406. Lesser General Public License for more details.
  96407. You should have received a copy of the GNU Lesser General Public
  96408. - License along with the GNU C Libr \ary; if not, write to the Free
  96409. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96410. - 02111-1307 USA. */
  96411. + License along with the GNU C Library; see the file COPYING.LIB. If
  96412. + not, see <http://www.gnu.org/licenses/>. */
  96413. #ifndef _LOWLEVELLOCK_H
  96414. #define _LOWLEVELLOCK_H 1
  96415. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c
  96416. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c 2012-05-15 09:20:09.000000000 +0200
  96417. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c 2014-02-03 12:32:57.000000000 +0100
  96418. @@ -13,9 +13,8 @@
  96419. Lesser General Public License for more details.
  96420. You should have received a copy of the GNU Lesser General Public
  96421. - License along with the GNU C Library; if not, write to the Free
  96422. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96423. - 02111-1307 USA. */
  96424. + License along with the GNU C Library; if not, see
  96425. + <http://www.gnu.org/licenses/>. */
  96426. #include <errno.h>
  96427. #include "pthreadP.h"
  96428. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c
  96429. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c 2012-05-15 09:20:09.000000000 +0200
  96430. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c 2014-02-03 12:32:57.000000000 +0100
  96431. @@ -13,9 +13,8 @@
  96432. Lesser General Public License for more details.
  96433. You should have received a copy of the GNU Lesser General Public
  96434. - License along with the GNU C Library; if not, write to the Free
  96435. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96436. - 02111-1307 USA. */
  96437. + License along with the GNU C Library; if not, see
  96438. + <http://www.gnu.org/licenses/>. */
  96439. #include <errno.h>
  96440. #include "pthreadP.h"
  96441. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c
  96442. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  96443. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  96444. @@ -13,9 +13,8 @@
  96445. Lesser General Public License for more details.
  96446. You should have received a copy of the GNU Lesser General Public
  96447. - License along with the GNU C Library; if not, write to the Free
  96448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96449. - 02111-1307 USA. */
  96450. + License along with the GNU C Library; if not, see
  96451. + <http://www.gnu.org/licenses/>. */
  96452. #include "pthreadP.h"
  96453. #include <lowlevellock.h>
  96454. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c
  96455. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c 2012-05-15 09:20:09.000000000 +0200
  96456. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c 2014-02-03 12:32:57.000000000 +0100
  96457. @@ -13,9 +13,8 @@
  96458. Lesser General Public License for more details.
  96459. You should have received a copy of the GNU Lesser General Public
  96460. - License along with the GNU C Library; if not, write to the Free
  96461. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96462. - 02111-1307 USA. */
  96463. + License along with the GNU C Library; if not, see
  96464. + <http://www.gnu.org/licenses/>. */
  96465. #include <errno.h>
  96466. #include <string.h>
  96467. @@ -26,7 +25,7 @@
  96468. int
  96469. -__new_sem_init (sem, pshared, value)
  96470. +sem_init (sem, pshared, value)
  96471. sem_t *sem;
  96472. int pshared;
  96473. unsigned int value;
  96474. @@ -53,5 +52,3 @@
  96475. return 0;
  96476. }
  96477. -weak_alias(__new_sem_init, sem_init)
  96478. -
  96479. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c
  96480. --- 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
  96481. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c 2014-02-03 12:32:57.000000000 +0100
  96482. @@ -13,9 +13,8 @@
  96483. Lesser General Public License for more details.
  96484. You should have received a copy of the GNU Lesser General Public
  96485. - License along with the GNU C Library; if not, write to the Free
  96486. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96487. - 02111-1307 USA. */
  96488. + License along with the GNU C Library; if not, see
  96489. + <http://www.gnu.org/licenses/>. */
  96490. #include <errno.h>
  96491. #include <sysdep.h>
  96492. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
  96493. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  96494. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  96495. @@ -13,9 +13,8 @@
  96496. Lesser General Public License for more details.
  96497. You should have received a copy of the GNU Lesser General Public
  96498. - License along with the GNU C Library; if not, write to the Free
  96499. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96500. - 02111-1307 USA. */
  96501. + License along with the GNU C Library; if not, see
  96502. + <http://www.gnu.org/licenses/>. */
  96503. #include <sysdep.h>
  96504. #include <tcb-offsets.h>
  96505. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c
  96506. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  96507. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  96508. @@ -14,9 +14,8 @@
  96509. Lesser General Public License for more details.
  96510. You should have received a copy of the GNU Lesser General Public
  96511. - License along with the GNU C Library; if not, write to the Free
  96512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96513. - 02111-1307 USA. */
  96514. + License along with the GNU C Library; if not, see
  96515. + <http://www.gnu.org/licenses/>. */
  96516. #include <errno.h>
  96517. #include <sysdep.h>
  96518. @@ -25,7 +24,7 @@
  96519. #include <semaphore.h>
  96520. int
  96521. -__new_sem_post (sem_t *sem)
  96522. +sem_post (sem_t *sem)
  96523. {
  96524. struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
  96525. int nr;
  96526. @@ -51,5 +50,3 @@
  96527. }
  96528. return 0;
  96529. }
  96530. -weak_alias(__new_sem_post, sem_post)
  96531. -
  96532. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
  96533. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  96534. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  96535. @@ -14,9 +14,8 @@
  96536. Lesser General Public License for more details.
  96537. You should have received a copy of the GNU Lesser General Public
  96538. - License along with the GNU C Library; if not, write to the Free
  96539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96540. - 02111-1307 USA. */
  96541. + License along with the GNU C Library; if not, see
  96542. + <http://www.gnu.org/licenses/>. */
  96543. #include <errno.h>
  96544. #include <sysdep.h>
  96545. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
  96546. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c 2012-05-15 09:20:09.000000000 +0200
  96547. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c 2014-02-03 12:32:57.000000000 +0100
  96548. @@ -14,9 +14,8 @@
  96549. Lesser General Public License for more details.
  96550. You should have received a copy of the GNU Lesser General Public
  96551. - License along with the GNU C Library; if not, write to the Free
  96552. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96553. - 02111-1307 USA. */
  96554. + License along with the GNU C Library; if not, see
  96555. + <http://www.gnu.org/licenses/>. */
  96556. #include <errno.h>
  96557. #include <sysdep.h>
  96558. @@ -26,7 +25,7 @@
  96559. int
  96560. -__new_sem_trywait (sem_t *sem)
  96561. +sem_trywait (sem_t *sem)
  96562. {
  96563. struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
  96564. int val;
  96565. @@ -50,5 +49,3 @@
  96566. __set_errno (EAGAIN);
  96567. return -1;
  96568. }
  96569. -weak_alias(__new_sem_trywait, sem_trywait)
  96570. -
  96571. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
  96572. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 2012-05-15 09:20:09.000000000 +0200
  96573. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 2014-02-03 12:32:57.000000000 +0100
  96574. @@ -14,9 +14,8 @@
  96575. Lesser General Public License for more details.
  96576. You should have received a copy of the GNU Lesser General Public
  96577. - License along with the GNU C Library; if not, write to the Free
  96578. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96579. - 02111-1307 USA. */
  96580. + License along with the GNU C Library; if not, see
  96581. + <http://www.gnu.org/licenses/>. */
  96582. #include <errno.h>
  96583. #include <sysdep.h>
  96584. @@ -45,7 +44,7 @@
  96585. int
  96586. -__new_sem_wait (sem_t *sem)
  96587. +sem_wait (sem_t *sem)
  96588. {
  96589. struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
  96590. int err;
  96591. @@ -123,5 +122,3 @@
  96592. return err;
  96593. }
  96594. -weak_alias(__new_sem_wait, sem_wait)
  96595. -
  96596. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
  96597. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  96598. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  96599. @@ -13,9 +13,8 @@
  96600. Lesser General Public License for more details.
  96601. You should have received a copy of the GNU Lesser General Public
  96602. - License along with the GNU C Library; if not, write to the Free
  96603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96604. - 02111-1307 USA. */
  96605. + License along with the GNU C Library; if not, see
  96606. + <http://www.gnu.org/licenses/>. */
  96607. #include <tls.h>
  96608. #include <sysdep.h>
  96609. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
  96610. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  96611. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  96612. @@ -13,9 +13,8 @@
  96613. Lesser General Public License for more details.
  96614. You should have received a copy of the GNU Lesser General Public
  96615. - License along with the GNU C Library; if not, write to the Free
  96616. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96617. - 02111-1307 USA. */
  96618. + License along with the GNU C Library; if not, see
  96619. + <http://www.gnu.org/licenses/>. */
  96620. #include <sysdep.h>
  96621. #include <tcb-offsets.h>
  96622. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S
  96623. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  96624. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  96625. @@ -13,9 +13,8 @@
  96626. Lesser General Public License for more details.
  96627. You should have received a copy of the GNU Lesser General Public
  96628. - License along with the GNU C Library; if not, write to the Free
  96629. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96630. - 02111-1307 USA. */
  96631. + License along with the GNU C Library; if not, see
  96632. + <http://www.gnu.org/licenses/>. */
  96633. #include <sysdep.h>
  96634. #include <tcb-offsets.h>
  96635. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
  96636. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  96637. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  96638. @@ -13,9 +13,8 @@
  96639. Lesser General Public License for more details.
  96640. You should have received a copy of the GNU Lesser General Public
  96641. - License along with the GNU C Library; if not, write to the Free
  96642. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96643. - 02111-1307 USA. */
  96644. + License along with the GNU C Library; if not, see
  96645. + <http://www.gnu.org/licenses/>. */
  96646. #include <sysdep.h>
  96647. #include <tls.h>
  96648. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
  96649. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  96650. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  96651. @@ -13,9 +13,8 @@
  96652. Lesser General Public License for more details.
  96653. You should have received a copy of the GNU Lesser General Public
  96654. - License along with the GNU C Library; if not, write to the Free
  96655. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96656. - 02111-1307 USA. */
  96657. + License along with the GNU C Library; if not, see
  96658. + <http://www.gnu.org/licenses/>. */
  96659. #include <sysdep.h>
  96660. #include <tcb-offsets.h>
  96661. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c
  96662. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  96663. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  96664. @@ -13,9 +13,8 @@
  96665. Lesser General Public License for more details.
  96666. You should have received a copy of the GNU Lesser General Public
  96667. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96668. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96669. - Boston, MA 02111-1307, USA. */
  96670. + License along with the GNU C Library; see the file COPYING.LIB. If
  96671. + not, see <http://www.gnu.org/licenses/>. */
  96672. #include <errno.h>
  96673. #include <pthread.h>
  96674. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c
  96675. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  96676. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  96677. @@ -13,9 +13,8 @@
  96678. Lesser General Public License for more details.
  96679. You should have received a copy of the GNU Lesser General Public
  96680. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96681. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96682. - Boston, MA 02111-1307, USA. */
  96683. + License along with the GNU C Library; see the file COPYING.LIB. If
  96684. + not, see <http://www.gnu.org/licenses/>. */
  96685. #include <errno.h>
  96686. #include <stdlib.h>
  96687. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c
  96688. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  96689. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  96690. @@ -13,9 +13,8 @@
  96691. Lesser General Public License for more details.
  96692. You should have received a copy of the GNU Lesser General Public
  96693. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96694. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96695. - Boston, MA 02111-1307, USA. */
  96696. + License along with the GNU C Library; see the file COPYING.LIB. If
  96697. + not, see <http://www.gnu.org/licenses/>. */
  96698. #include <errno.h>
  96699. #include <time.h>
  96700. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c
  96701. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  96702. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  96703. @@ -13,9 +13,8 @@
  96704. Lesser General Public License for more details.
  96705. You should have received a copy of the GNU Lesser General Public
  96706. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96707. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96708. - Boston, MA 02111-1307, USA. */
  96709. + License along with the GNU C Library; see the file COPYING.LIB. If
  96710. + not, see <http://www.gnu.org/licenses/>. */
  96711. #include <errno.h>
  96712. #include <stdlib.h>
  96713. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c
  96714. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  96715. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  96716. @@ -13,9 +13,8 @@
  96717. Lesser General Public License for more details.
  96718. You should have received a copy of the GNU Lesser General Public
  96719. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96720. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96721. - Boston, MA 02111-1307, USA. */
  96722. + License along with the GNU C Library; see the file COPYING.LIB. If
  96723. + not, see <http://www.gnu.org/licenses/>. */
  96724. #include <errno.h>
  96725. #include <setjmp.h>
  96726. @@ -49,7 +48,7 @@
  96727. surprising for user code, although valid. We unblock all
  96728. signals. */
  96729. sigset_t ss;
  96730. - sigemptyset (&ss);
  96731. + __sigemptyset (&ss);
  96732. INTERNAL_SYSCALL_DECL (err);
  96733. INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, NULL, _NSIG / 8);
  96734. @@ -69,13 +68,13 @@
  96735. /* Helper function to support starting threads for SIGEV_THREAD. */
  96736. -static void *
  96737. +static attribute_noreturn void *
  96738. timer_helper_thread (void *arg)
  96739. {
  96740. /* Wait for the SIGTIMER signal, allowing the setXid signal, and
  96741. none else. */
  96742. sigset_t ss;
  96743. - sigemptyset (&ss);
  96744. + __sigemptyset (&ss);
  96745. __sigaddset (&ss, SIGTIMER);
  96746. /* Endless loop of waiting for signals. The loop is only ended when
  96747. @@ -175,7 +174,7 @@
  96748. sigset_t ss;
  96749. sigset_t oss;
  96750. sigfillset (&ss);
  96751. - /*__sigaddset (&ss, SIGCANCEL); - already done by sigfillset */
  96752. + __sigaddset (&ss, SIGCANCEL);
  96753. INTERNAL_SYSCALL_DECL (err);
  96754. INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, &oss, _NSIG / 8);
  96755. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c
  96756. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  96757. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  96758. @@ -13,9 +13,8 @@
  96759. Lesser General Public License for more details.
  96760. You should have received a copy of the GNU Lesser General Public
  96761. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96762. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96763. - Boston, MA 02111-1307, USA. */
  96764. + License along with the GNU C Library; see the file COPYING.LIB. If
  96765. + not, see <http://www.gnu.org/licenses/>. */
  96766. #include <errno.h>
  96767. #include <stdlib.h>
  96768. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c
  96769. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c 2012-05-15 09:20:09.000000000 +0200
  96770. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c 2014-02-03 12:32:57.000000000 +0100
  96771. @@ -13,9 +13,8 @@
  96772. Lesser General Public License for more details.
  96773. You should have received a copy of the GNU Lesser General Public
  96774. - License along with the GNU C Library; if not, write to the Free
  96775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96776. - 02111-1307 USA. */
  96777. + License along with the GNU C Library; if not, see
  96778. + <http://www.gnu.org/licenses/>. */
  96779. #include <errno.h>
  96780. #include <stdlib.h>
  96781. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
  96782. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  96783. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  96784. @@ -13,9 +13,8 @@
  96785. Lesser General Public License for more details.
  96786. You should have received a copy of the GNU Lesser General Public
  96787. - License along with the GNU C Library; if not, write to the Free
  96788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96789. - 02111-1307 USA. */
  96790. + License along with the GNU C Library; if not, see
  96791. + <http://www.gnu.org/licenses/>. */
  96792. #ifndef _BITS_PTHREADTYPES_H
  96793. #define _BITS_PTHREADTYPES_H 1
  96794. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
  96795. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  96796. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  96797. @@ -13,9 +13,8 @@
  96798. Lesser General Public License for more details.
  96799. You should have received a copy of the GNU Lesser General Public
  96800. - License along with the GNU C Library; if not, write to the Free
  96801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96802. - 02111-1307 USA. */
  96803. + License along with the GNU C Library; if not, see
  96804. + <http://www.gnu.org/licenses/>. */
  96805. #ifndef _SEMAPHORE_H
  96806. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  96807. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
  96808. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96809. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96810. @@ -13,9 +13,8 @@
  96811. Lesser General Public License for more details.
  96812. You should have received a copy of the GNU Lesser General Public
  96813. - License along with the GNU C Library; if not, write to the Free
  96814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96815. - 02111-1307 USA. */
  96816. + License along with the GNU C Library; if not, see
  96817. + <http://www.gnu.org/licenses/>. */
  96818. #include <sysdep.h>
  96819. #include <tcb-offsets.h>
  96820. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
  96821. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h 2012-05-15 09:20:09.000000000 +0200
  96822. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h 2014-02-03 12:32:57.000000000 +0100
  96823. @@ -13,9 +13,8 @@
  96824. Lesser General Public License for more details.
  96825. You should have received a copy of the GNU Lesser General Public
  96826. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96827. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96828. - Boston, MA 02111-1307, USA. */
  96829. + License along with the GNU C Library; see the file COPYING.LIB. If
  96830. + not, see <http://www.gnu.org/licenses/>. */
  96831. #include <signal.h>
  96832. #include <time.h>
  96833. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c
  96834. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c 2012-05-15 09:20:09.000000000 +0200
  96835. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c 2014-02-03 12:32:57.000000000 +0100
  96836. @@ -13,9 +13,8 @@
  96837. Lesser General Public License for more details.
  96838. You should have received a copy of the GNU Lesser General Public
  96839. - License along with the GNU C Library; if not, write to the Free
  96840. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96841. - 02111-1307 USA. */
  96842. + License along with the GNU C Library; if not, see
  96843. + <http://www.gnu.org/licenses/>. */
  96844. #include <sched.h>
  96845. #include <signal.h>
  96846. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S
  96847. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96848. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96849. @@ -13,9 +13,8 @@
  96850. Lesser General Public License for more details.
  96851. You should have received a copy of the GNU Lesser General Public
  96852. - License along with the GNU C Library; if not, write to the Free
  96853. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96854. - 02111-1307 USA. */
  96855. + License along with the GNU C Library; if not, see
  96856. + <http://www.gnu.org/licenses/>. */
  96857. #define __pthread_enable_asynccancel __libc_enable_asynccancel
  96858. #define __pthread_disable_asynccancel __libc_disable_asynccancel
  96859. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S
  96860. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  96861. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  96862. @@ -13,8 +13,7 @@
  96863. Lesser General Public License for more details.
  96864. You should have received a copy of the GNU Lesser General Public
  96865. - License along with the GNU C Library; if not, write to the Free
  96866. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96867. - 02111-1307 USA. */
  96868. + License along with the GNU C Library; if not, see
  96869. + <http://www.gnu.org/licenses/>. */
  96870. #include "lowlevellock.S"
  96871. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S
  96872. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96873. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96874. @@ -13,9 +13,8 @@
  96875. Lesser General Public License for more details.
  96876. You should have received a copy of the GNU Lesser General Public
  96877. - License along with the GNU C Library; if not, write to the Free
  96878. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96879. - 02111-1307 USA. */
  96880. + License along with the GNU C Library; if not, see
  96881. + <http://www.gnu.org/licenses/>. */
  96882. #define __pthread_enable_asynccancel __librt_enable_asynccancel
  96883. #define __pthread_disable_asynccancel __librt_disable_asynccancel
  96884. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
  96885. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  96886. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  96887. @@ -13,9 +13,8 @@
  96888. Lesser General Public License for more details.
  96889. You should have received a copy of the GNU Lesser General Public
  96890. - License along with the GNU C Library; if not, write to the Free
  96891. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96892. - 02111-1307 USA. */
  96893. + License along with the GNU C Library; if not, see
  96894. + <http://www.gnu.org/licenses/>. */
  96895. #ifndef _LOWLEVELLOCK_H
  96896. #define _LOWLEVELLOCK_H 1
  96897. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
  96898. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  96899. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  96900. @@ -13,9 +13,8 @@
  96901. Lesser General Public License for more details.
  96902. You should have received a copy of the GNU Lesser General Public
  96903. - License along with the GNU C Library; if not, write to the Free
  96904. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96905. - 02111-1307 USA. */
  96906. + License along with the GNU C Library; if not, see
  96907. + <http://www.gnu.org/licenses/>. */
  96908. #include <sysdep.h>
  96909. #include <pthread-errnos.h>
  96910. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
  96911. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  96912. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  96913. @@ -14,9 +14,8 @@
  96914. Lesser General Public License for more details.
  96915. You should have received a copy of the GNU Lesser General Public
  96916. - License along with the GNU C Library; if not, write to the Free
  96917. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96918. - 02111-1307 USA. */
  96919. + License along with the GNU C Library; if not, see
  96920. + <http://www.gnu.org/licenses/>. */
  96921. #include <sysdep.h>
  96922. #include <pthread-errnos.h>
  96923. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
  96924. --- 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
  96925. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  96926. @@ -13,9 +13,8 @@
  96927. Lesser General Public License for more details.
  96928. You should have received a copy of the GNU Lesser General Public
  96929. - License along with the GNU C Library; if not, write to the Free
  96930. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96931. - 02111-1307 USA. */
  96932. + License along with the GNU C Library; if not, see
  96933. + <http://www.gnu.org/licenses/>. */
  96934. #include <sysdep.h>
  96935. #include <lowlevellock.h>
  96936. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
  96937. --- 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
  96938. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  96939. @@ -14,9 +14,8 @@
  96940. Lesser General Public License for more details.
  96941. You should have received a copy of the GNU Lesser General Public
  96942. - License along with the GNU C Library; if not, write to the Free
  96943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96944. - 02111-1307 USA. */
  96945. + License along with the GNU C Library; if not, see
  96946. + <http://www.gnu.org/licenses/>. */
  96947. #include <sysdep.h>
  96948. #include <lowlevellock.h>
  96949. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
  96950. --- 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
  96951. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  96952. @@ -13,9 +13,8 @@
  96953. Lesser General Public License for more details.
  96954. You should have received a copy of the GNU Lesser General Public
  96955. - License along with the GNU C Library; if not, write to the Free
  96956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96957. - 02111-1307 USA. */
  96958. + License along with the GNU C Library; if not, see
  96959. + <http://www.gnu.org/licenses/>. */
  96960. #include <sysdep.h>
  96961. #include <lowlevellock.h>
  96962. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
  96963. --- 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
  96964. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  96965. @@ -13,9 +13,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 <sysdep.h>
  96974. #include <lowlevellock.h>
  96975. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
  96976. --- 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
  96977. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  96978. @@ -13,9 +13,8 @@
  96979. Lesser General Public License for more details.
  96980. You should have received a copy of the GNU Lesser General Public
  96981. - License along with the GNU C Library; if not, write to the Free
  96982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96983. - 02111-1307 USA. */
  96984. + License along with the GNU C Library; if not, see
  96985. + <http://www.gnu.org/licenses/>. */
  96986. #include <sysdep.h>
  96987. #include <lowlevellock.h>
  96988. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
  96989. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  96990. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  96991. @@ -13,9 +13,8 @@
  96992. Lesser General Public License for more details.
  96993. You should have received a copy of the GNU Lesser General Public
  96994. - License along with the GNU C Library; if not, write to the Free
  96995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96996. - 02111-1307 USA. */
  96997. + License along with the GNU C Library; if not, see
  96998. + <http://www.gnu.org/licenses/>. */
  96999. #include <sysdep.h>
  97000. #include <bits/kernel-features.h>
  97001. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
  97002. --- 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
  97003. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  97004. @@ -13,9 +13,8 @@
  97005. Lesser General Public License for more details.
  97006. You should have received a copy of the GNU Lesser General Public
  97007. - License along with the GNU C Library; if not, write to the Free
  97008. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97009. - 02111-1307 USA. */
  97010. + License along with the GNU C Library; if not, see
  97011. + <http://www.gnu.org/licenses/>. */
  97012. #include <sysdep.h>
  97013. #include <lowlevellock.h>
  97014. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
  97015. --- 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
  97016. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  97017. @@ -13,9 +13,8 @@
  97018. Lesser General Public License for more details.
  97019. You should have received a copy of the GNU Lesser General Public
  97020. - License along with the GNU C Library; if not, write to the Free
  97021. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97022. - 02111-1307 USA. */
  97023. + License along with the GNU C Library; if not, see
  97024. + <http://www.gnu.org/licenses/>. */
  97025. #include <sysdep.h>
  97026. #include <lowlevellock.h>
  97027. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
  97028. --- 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
  97029. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  97030. @@ -13,9 +13,8 @@
  97031. Lesser General Public License for more details.
  97032. You should have received a copy of the GNU Lesser General Public
  97033. - License along with the GNU C Library; if not, write to the Free
  97034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97035. - 02111-1307 USA. */
  97036. + License along with the GNU C Library; if not, see
  97037. + <http://www.gnu.org/licenses/>. */
  97038. #include <sysdep.h>
  97039. #include <lowlevellock.h>
  97040. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
  97041. --- 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
  97042. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  97043. @@ -13,9 +13,8 @@
  97044. Lesser General Public License for more details.
  97045. You should have received a copy of the GNU Lesser General Public
  97046. - License along with the GNU C Library; if not, write to the Free
  97047. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97048. - 02111-1307 USA. */
  97049. + License along with the GNU C Library; if not, see
  97050. + <http://www.gnu.org/licenses/>. */
  97051. #include <sysdep.h>
  97052. #include <lowlevellock.h>
  97053. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
  97054. --- 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
  97055. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  97056. @@ -13,9 +13,8 @@
  97057. Lesser General Public License for more details.
  97058. You should have received a copy of the GNU Lesser General Public
  97059. - License along with the GNU C Library; if not, write to the Free
  97060. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97061. - 02111-1307 USA. */
  97062. + License along with the GNU C Library; if not, see
  97063. + <http://www.gnu.org/licenses/>. */
  97064. #include <sysdep.h>
  97065. #include <lowlevellock.h>
  97066. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S
  97067. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  97068. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  97069. @@ -12,9 +12,8 @@
  97070. Lesser General Public License for more details.
  97071. You should have received a copy of the GNU Lesser General Public
  97072. - License along with the GNU C Library; if not, write to the Free
  97073. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97074. - 02111-1307 USA. */
  97075. + License along with the GNU C Library; if not, see
  97076. + <http://www.gnu.org/licenses/>. */
  97077. #include <tcb-offsets.h>
  97078. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
  97079. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  97080. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  97081. @@ -13,9 +13,8 @@
  97082. Lesser General Public License for more details.
  97083. You should have received a copy of the GNU Lesser General Public
  97084. - License along with the GNU C Library; if not, write to the Free
  97085. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97086. - 02111-1307 USA. */
  97087. + License along with the GNU C Library; if not, see
  97088. + <http://www.gnu.org/licenses/>. */
  97089. #include <sysdep.h>
  97090. #include <lowlevellock.h>
  97091. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
  97092. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  97093. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  97094. @@ -13,9 +13,8 @@
  97095. Lesser General Public License for more details.
  97096. You should have received a copy of the GNU Lesser General Public
  97097. - License along with the GNU C Library; if not, write to the Free
  97098. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97099. - 02111-1307 USA. */
  97100. + License along with the GNU C Library; if not, see
  97101. + <http://www.gnu.org/licenses/>. */
  97102. #include <sysdep.h>
  97103. #include <bits/kernel-features.h>
  97104. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
  97105. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  97106. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  97107. @@ -13,9 +13,8 @@
  97108. Lesser General Public License for more details.
  97109. You should have received a copy of the GNU Lesser General Public
  97110. - License along with the GNU C Library; if not, write to the Free
  97111. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97112. - 02111-1307 USA. */
  97113. + License along with the GNU C Library; if not, see
  97114. + <http://www.gnu.org/licenses/>. */
  97115. #include <sysdep.h>
  97116. #include <lowlevellock.h>
  97117. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
  97118. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  97119. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  97120. @@ -13,9 +13,8 @@
  97121. Lesser General Public License for more details.
  97122. You should have received a copy of the GNU Lesser General Public
  97123. - License along with the GNU C Library; if not, write to the Free
  97124. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97125. - 02111-1307 USA. */
  97126. + License along with the GNU C Library; if not, see
  97127. + <http://www.gnu.org/licenses/>. */
  97128. #include <sysdep.h>
  97129. #include <lowlevellock.h>
  97130. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
  97131. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  97132. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  97133. @@ -13,9 +13,8 @@
  97134. Lesser General Public License for more details.
  97135. You should have received a copy of the GNU Lesser General Public
  97136. - License along with the GNU C Library; if not, write to the Free
  97137. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97138. - 02111-1307 USA. */
  97139. + License along with the GNU C Library; if not, see
  97140. + <http://www.gnu.org/licenses/>. */
  97141. #include <sysdep.h>
  97142. #include <tls.h>
  97143. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S
  97144. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  97145. +++ uClibc/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  97146. @@ -12,9 +12,8 @@
  97147. Lesser General Public License for more details.
  97148. You should have received a copy of the GNU Lesser General Public
  97149. - License along with the GNU C Library; if not, write to the Free
  97150. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97151. - 02111-1307 USA. */
  97152. + License along with the GNU C Library; if not, see
  97153. + <http://www.gnu.org/licenses/>. */
  97154. /* We want an #include_next, but we are the main source file.
  97155. So, #include ourselves and in that incarnation we can use #include_next. */
  97156. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/dl-tls.h uClibc/libpthread/nptl/sysdeps/x86_64/dl-tls.h
  97157. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  97158. +++ uClibc/libpthread/nptl/sysdeps/x86_64/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  97159. @@ -13,9 +13,8 @@
  97160. Lesser General Public License for more details.
  97161. You should have received a copy of the GNU Lesser General Public
  97162. - License along with the GNU C Library; if not, write to the Free
  97163. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97164. - 02111-1307 USA. */
  97165. + License along with the GNU C Library; if not, see
  97166. + <http://www.gnu.org/licenses/>. */
  97167. /* Type used for the representation of TLS information in the GOT. */
  97168. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h uClibc/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h
  97169. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  97170. +++ uClibc/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  97171. @@ -13,9 +13,8 @@
  97172. Lesser General Public License for more details.
  97173. You should have received a copy of the GNU Lesser General Public
  97174. - License along with the GNU C Library; if not, write to the Free
  97175. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97176. - 02111-1307 USA. */
  97177. + License along with the GNU C Library; if not, see
  97178. + <http://www.gnu.org/licenses/>. */
  97179. #include <setjmp.h>
  97180. #include <stdint.h>
  97181. @@ -26,6 +25,3 @@
  97182. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  97183. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_RSP] - (_adj))
  97184. -
  97185. -/* We use the normal lobngjmp for unwinding. */
  97186. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  97187. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthreaddef.h uClibc/libpthread/nptl/sysdeps/x86_64/pthreaddef.h
  97188. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  97189. +++ uClibc/libpthread/nptl/sysdeps/x86_64/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  97190. @@ -13,9 +13,8 @@
  97191. Lesser General Public License for more details.
  97192. You should have received a copy of the GNU Lesser General Public
  97193. - License along with the GNU C Library; if not, write to the Free
  97194. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97195. - 02111-1307 USA. */
  97196. + License along with the GNU C Library; if not, see
  97197. + <http://www.gnu.org/licenses/>. */
  97198. /* Default stack size. */
  97199. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  97200. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S uClibc/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S
  97201. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  97202. +++ uClibc/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  97203. @@ -13,9 +13,8 @@
  97204. Lesser General Public License for more details.
  97205. You should have received a copy of the GNU Lesser General Public
  97206. - License along with the GNU C Library; if not, write to the Free
  97207. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97208. - 02111-1307 USA. */
  97209. + License along with the GNU C Library; if not, see
  97210. + <http://www.gnu.org/licenses/>. */
  97211. #include <pthread-errnos.h>
  97212. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S uClibc/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S
  97213. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  97214. +++ uClibc/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  97215. @@ -13,9 +13,8 @@
  97216. Lesser General Public License for more details.
  97217. You should have received a copy of the GNU Lesser General Public
  97218. - License along with the GNU C Library; if not, write to the Free
  97219. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97220. - 02111-1307 USA. */
  97221. + License along with the GNU C Library; if not, see
  97222. + <http://www.gnu.org/licenses/>. */
  97223. .globl pthread_spin_unlock
  97224. .type pthread_spin_unlock,@function
  97225. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/tls.h uClibc/libpthread/nptl/sysdeps/x86_64/tls.h
  97226. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  97227. +++ uClibc/libpthread/nptl/sysdeps/x86_64/tls.h 2014-02-03 12:32:57.000000000 +0100
  97228. @@ -13,9 +13,8 @@
  97229. Lesser General Public License for more details.
  97230. You should have received a copy of the GNU Lesser General Public
  97231. - License along with the GNU C Library; if not, write to the Free
  97232. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97233. - 02111-1307 USA. */
  97234. + License along with the GNU C Library; if not, see
  97235. + <http://www.gnu.org/licenses/>. */
  97236. #ifndef _TLS_H
  97237. #define _TLS_H 1
  97238. diff -Nur uClibc-0.9.33.2/libpthread/nptl/unwind.c uClibc/libpthread/nptl/unwind.c
  97239. --- uClibc-0.9.33.2/libpthread/nptl/unwind.c 2012-05-15 09:20:09.000000000 +0200
  97240. +++ uClibc/libpthread/nptl/unwind.c 2014-02-03 12:32:57.000000000 +0100
  97241. @@ -14,9 +14,8 @@
  97242. Lesser General Public License for more details.
  97243. You should have received a copy of the GNU Lesser General Public
  97244. - License along with the GNU C Library; if not, write to the Free
  97245. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97246. - 02111-1307 USA. */
  97247. + License along with the GNU C Library; if not, see
  97248. + <http://www.gnu.org/licenses/>. */
  97249. #include <setjmp.h>
  97250. #include <stdlib.h>
  97251. @@ -99,7 +98,7 @@
  97252. }
  97253. -static void
  97254. +static attribute_noreturn void
  97255. unwind_cleanup (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc)
  97256. {
  97257. /* When we get here a C++ catch block didn't rethrow the object. We
  97258. @@ -115,7 +114,7 @@
  97259. void
  97260. -attribute_protected
  97261. +/*does not apply due to hidden_proto(): attribute_protected*/
  97262. __cleanup_fct_attribute __attribute ((noreturn))
  97263. #if !defined SHARED && !defined IS_IN_libpthread
  97264. weak_function
  97265. diff -Nur uClibc-0.9.33.2/libpthread/nptl/vars.c uClibc/libpthread/nptl/vars.c
  97266. --- uClibc-0.9.33.2/libpthread/nptl/vars.c 2012-05-15 09:20:09.000000000 +0200
  97267. +++ uClibc/libpthread/nptl/vars.c 2014-02-03 12:32:57.000000000 +0100
  97268. @@ -12,9 +12,8 @@
  97269. Lesser General Public License for more details.
  97270. You should have received a copy of the GNU Lesser General Public
  97271. - License along with the GNU C Library; if not, write to the Free
  97272. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97273. - 02111-1307 USA. */
  97274. + License along with the GNU C Library; if not, see
  97275. + <http://www.gnu.org/licenses/>. */
  97276. #include <pthreadP.h>
  97277. #include <stdlib.h>
  97278. diff -Nur uClibc-0.9.33.2/libpthread/nptl/version.c uClibc/libpthread/nptl/version.c
  97279. --- uClibc-0.9.33.2/libpthread/nptl/version.c 2012-05-15 09:20:09.000000000 +0200
  97280. +++ uClibc/libpthread/nptl/version.c 2014-02-03 12:32:57.000000000 +0100
  97281. @@ -13,9 +13,8 @@
  97282. Lesser General Public License for more details.
  97283. You should have received a copy of the GNU Lesser General Public
  97284. - License along with the GNU C Library; if not, write to the Free
  97285. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97286. - 02111-1307 USA. */
  97287. + License along with the GNU C Library; if not, see
  97288. + <http://www.gnu.org/licenses/>. */
  97289. #include <unistd.h>
  97290. #include <sysdep.h>
  97291. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/db_info.c uClibc/libpthread/nptl_db/db_info.c
  97292. --- uClibc-0.9.33.2/libpthread/nptl_db/db_info.c 2012-05-15 09:20:09.000000000 +0200
  97293. +++ uClibc/libpthread/nptl_db/db_info.c 2014-02-03 12:32:57.000000000 +0100
  97294. @@ -15,9 +15,8 @@
  97295. Lesser General Public License for more details.
  97296. You should have received a copy of the GNU Lesser General Public
  97297. - License along with the GNU C Library; if not, write to the Free
  97298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97299. - 02111-1307 USA. */
  97300. + License along with the GNU C Library; if not, see
  97301. + <http://www.gnu.org/licenses/>. */
  97302. #include "thread_dbP.h"
  97303. #include <tls.h>
  97304. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/fetch-value.c uClibc/libpthread/nptl_db/fetch-value.c
  97305. --- uClibc-0.9.33.2/libpthread/nptl_db/fetch-value.c 2012-05-15 09:20:09.000000000 +0200
  97306. +++ uClibc/libpthread/nptl_db/fetch-value.c 2014-02-03 12:32:57.000000000 +0100
  97307. @@ -13,9 +13,8 @@
  97308. Lesser General Public License for more details.
  97309. You should have received a copy of the GNU Lesser General Public
  97310. - License along with the GNU C Library; if not, write to the Free
  97311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97312. - 02111-1307 USA. */
  97313. + License along with the GNU C Library; if not, see
  97314. + <http://www.gnu.org/licenses/>. */
  97315. #include "thread_dbP.h"
  97316. #include <byteswap.h>
  97317. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/proc_service.h uClibc/libpthread/nptl_db/proc_service.h
  97318. --- uClibc-0.9.33.2/libpthread/nptl_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  97319. +++ uClibc/libpthread/nptl_db/proc_service.h 2014-02-03 12:32:57.000000000 +0100
  97320. @@ -13,9 +13,8 @@
  97321. Lesser General Public License for more details.
  97322. You should have received a copy of the GNU Lesser General Public
  97323. - License along with the GNU C Library; if not, write to the Free
  97324. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97325. - 02111-1307 USA. */
  97326. + License along with the GNU C Library; if not, see
  97327. + <http://www.gnu.org/licenses/>. */
  97328. /* The definitions in this file must correspond to those in the debugger. */
  97329. #include <sys/procfs.h>
  97330. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/structs.def uClibc/libpthread/nptl_db/structs.def
  97331. --- uClibc-0.9.33.2/libpthread/nptl_db/structs.def 2012-05-15 09:20:09.000000000 +0200
  97332. +++ uClibc/libpthread/nptl_db/structs.def 2014-02-03 12:32:57.000000000 +0100
  97333. @@ -13,9 +13,8 @@
  97334. Lesser General Public License for more details.
  97335. You should have received a copy of the GNU Lesser General Public
  97336. - License along with the GNU C Library; if not, write to the Free
  97337. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97338. - 02111-1307 USA. */
  97339. + License along with the GNU C Library; if not, see
  97340. + <http://www.gnu.org/licenses/>. */
  97341. #ifndef DB_STRUCT_ARRAY_FIELD
  97342. # define DB_STRUCT_ARRAY_FIELD(type, field) DB_STRUCT_FIELD (type, field)
  97343. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_init.c uClibc/libpthread/nptl_db/td_init.c
  97344. --- uClibc-0.9.33.2/libpthread/nptl_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  97345. +++ uClibc/libpthread/nptl_db/td_init.c 2014-02-03 12:32:57.000000000 +0100
  97346. @@ -14,9 +14,8 @@
  97347. Lesser General Public License for more details.
  97348. You should have received a copy of the GNU Lesser General Public
  97349. - License along with the GNU C Library; if not, write to the Free
  97350. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97351. - 02111-1307 USA. */
  97352. + License along with the GNU C Library; if not, see
  97353. + <http://www.gnu.org/licenses/>. */
  97354. #include "thread_dbP.h"
  97355. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_log.c uClibc/libpthread/nptl_db/td_log.c
  97356. --- uClibc-0.9.33.2/libpthread/nptl_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  97357. +++ uClibc/libpthread/nptl_db/td_log.c 2014-02-03 12:32:57.000000000 +0100
  97358. @@ -14,9 +14,8 @@
  97359. Lesser General Public License for more details.
  97360. You should have received a copy of the GNU Lesser General Public
  97361. - License along with the GNU C Library; if not, write to the Free
  97362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97363. - 02111-1307 USA. */
  97364. + License along with the GNU C Library; if not, see
  97365. + <http://www.gnu.org/licenses/>. */
  97366. #include "thread_dbP.h"
  97367. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_symbol_list.c uClibc/libpthread/nptl_db/td_symbol_list.c
  97368. --- uClibc-0.9.33.2/libpthread/nptl_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  97369. +++ uClibc/libpthread/nptl_db/td_symbol_list.c 2014-02-03 12:32:57.000000000 +0100
  97370. @@ -14,9 +14,8 @@
  97371. Lesser General Public License for more details.
  97372. You should have received a copy of the GNU Lesser General Public
  97373. - License along with the GNU C Library; if not, write to the Free
  97374. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97375. - 02111-1307 USA. */
  97376. + License along with the GNU C Library; if not, see
  97377. + <http://www.gnu.org/licenses/>. */
  97378. #include <assert.h>
  97379. #ifndef __UCLIBC__
  97380. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_clear_event.c uClibc/libpthread/nptl_db/td_ta_clear_event.c
  97381. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  97382. +++ uClibc/libpthread/nptl_db/td_ta_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  97383. @@ -14,9 +14,8 @@
  97384. Lesser General Public License for more details.
  97385. You should have received a copy of the GNU Lesser General Public
  97386. - License along with the GNU C Library; if not, write to the Free
  97387. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97388. - 02111-1307 USA. */
  97389. + License along with the GNU C Library; if not, see
  97390. + <http://www.gnu.org/licenses/>. */
  97391. #include "thread_dbP.h"
  97392. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_delete.c uClibc/libpthread/nptl_db/td_ta_delete.c
  97393. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  97394. +++ uClibc/libpthread/nptl_db/td_ta_delete.c 2014-02-03 12:32:57.000000000 +0100
  97395. @@ -14,9 +14,8 @@
  97396. Lesser General Public License for more details.
  97397. You should have received a copy of the GNU Lesser General Public
  97398. - License along with the GNU C Library; if not, write to the Free
  97399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97400. - 02111-1307 USA. */
  97401. + License along with the GNU C Library; if not, see
  97402. + <http://www.gnu.org/licenses/>. */
  97403. #include <stdlib.h>
  97404. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_enable_stats.c uClibc/libpthread/nptl_db/td_ta_enable_stats.c
  97405. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  97406. +++ uClibc/libpthread/nptl_db/td_ta_enable_stats.c 2014-02-03 12:32:57.000000000 +0100
  97407. @@ -14,9 +14,8 @@
  97408. Lesser General Public License for more details.
  97409. You should have received a copy of the GNU Lesser General Public
  97410. - License along with the GNU C Library; if not, write to the Free
  97411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97412. - 02111-1307 USA. */
  97413. + License along with the GNU C Library; if not, see
  97414. + <http://www.gnu.org/licenses/>. */
  97415. #include "thread_dbP.h"
  97416. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_addr.c uClibc/libpthread/nptl_db/td_ta_event_addr.c
  97417. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  97418. +++ uClibc/libpthread/nptl_db/td_ta_event_addr.c 2014-02-03 12:32:57.000000000 +0100
  97419. @@ -14,9 +14,8 @@
  97420. Lesser General Public License for more details.
  97421. You should have received a copy of the GNU Lesser General Public
  97422. - License along with the GNU C Library; if not, write to the Free
  97423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97424. - 02111-1307 USA. */
  97425. + License along with the GNU C Library; if not, see
  97426. + <http://www.gnu.org/licenses/>. */
  97427. #include "thread_dbP.h"
  97428. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_getmsg.c uClibc/libpthread/nptl_db/td_ta_event_getmsg.c
  97429. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  97430. +++ uClibc/libpthread/nptl_db/td_ta_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  97431. @@ -14,9 +14,8 @@
  97432. Lesser General Public License for more details.
  97433. You should have received a copy of the GNU Lesser General Public
  97434. - License along with the GNU C Library; if not, write to the Free
  97435. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97436. - 02111-1307 USA. */
  97437. + License along with the GNU C Library; if not, see
  97438. + <http://www.gnu.org/licenses/>. */
  97439. #include <stddef.h>
  97440. #include <string.h>
  97441. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_nthreads.c uClibc/libpthread/nptl_db/td_ta_get_nthreads.c
  97442. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  97443. +++ uClibc/libpthread/nptl_db/td_ta_get_nthreads.c 2014-02-03 12:32:57.000000000 +0100
  97444. @@ -14,9 +14,8 @@
  97445. Lesser General Public License for more details.
  97446. You should have received a copy of the GNU Lesser General Public
  97447. - License along with the GNU C Library; if not, write to the Free
  97448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97449. - 02111-1307 USA. */
  97450. + License along with the GNU C Library; if not, see
  97451. + <http://www.gnu.org/licenses/>. */
  97452. #include "thread_dbP.h"
  97453. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_ph.c uClibc/libpthread/nptl_db/td_ta_get_ph.c
  97454. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  97455. +++ uClibc/libpthread/nptl_db/td_ta_get_ph.c 2014-02-03 12:32:57.000000000 +0100
  97456. @@ -14,9 +14,8 @@
  97457. Lesser General Public License for more details.
  97458. You should have received a copy of the GNU Lesser General Public
  97459. - License along with the GNU C Library; if not, write to the Free
  97460. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97461. - 02111-1307 USA. */
  97462. + License along with the GNU C Library; if not, see
  97463. + <http://www.gnu.org/licenses/>. */
  97464. #include "thread_dbP.h"
  97465. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_stats.c uClibc/libpthread/nptl_db/td_ta_get_stats.c
  97466. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  97467. +++ uClibc/libpthread/nptl_db/td_ta_get_stats.c 2014-02-03 12:32:57.000000000 +0100
  97468. @@ -14,9 +14,8 @@
  97469. Lesser General Public License for more details.
  97470. You should have received a copy of the GNU Lesser General Public
  97471. - License along with the GNU C Library; if not, write to the Free
  97472. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97473. - 02111-1307 USA. */
  97474. + License along with the GNU C Library; if not, see
  97475. + <http://www.gnu.org/licenses/>. */
  97476. #include "thread_dbP.h"
  97477. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_id2thr.c uClibc/libpthread/nptl_db/td_ta_map_id2thr.c
  97478. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  97479. +++ uClibc/libpthread/nptl_db/td_ta_map_id2thr.c 2014-02-03 12:32:57.000000000 +0100
  97480. @@ -14,9 +14,8 @@
  97481. Lesser General Public License for more details.
  97482. You should have received a copy of the GNU Lesser General Public
  97483. - License along with the GNU C Library; if not, write to the Free
  97484. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97485. - 02111-1307 USA. */
  97486. + License along with the GNU C Library; if not, see
  97487. + <http://www.gnu.org/licenses/>. */
  97488. #include "thread_dbP.h"
  97489. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_lwp2thr.c uClibc/libpthread/nptl_db/td_ta_map_lwp2thr.c
  97490. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  97491. +++ uClibc/libpthread/nptl_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:57.000000000 +0100
  97492. @@ -13,9 +13,8 @@
  97493. Lesser General Public License for more details.
  97494. You should have received a copy of the GNU Lesser General Public
  97495. - License along with the GNU C Library; if not, write to the Free
  97496. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97497. - 02111-1307 USA. */
  97498. + License along with the GNU C Library; if not, see
  97499. + <http://www.gnu.org/licenses/>. */
  97500. #include "thread_dbP.h"
  97501. #include <stdlib.h>
  97502. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_new.c uClibc/libpthread/nptl_db/td_ta_new.c
  97503. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  97504. +++ uClibc/libpthread/nptl_db/td_ta_new.c 2014-02-03 12:32:57.000000000 +0100
  97505. @@ -14,9 +14,8 @@
  97506. Lesser General Public License for more details.
  97507. You should have received a copy of the GNU Lesser General Public
  97508. - License along with the GNU C Library; if not, write to the Free
  97509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97510. - 02111-1307 USA. */
  97511. + License along with the GNU C Library; if not, see
  97512. + <http://www.gnu.org/licenses/>. */
  97513. #include <stddef.h>
  97514. #include <stdlib.h>
  97515. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_reset_stats.c uClibc/libpthread/nptl_db/td_ta_reset_stats.c
  97516. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  97517. +++ uClibc/libpthread/nptl_db/td_ta_reset_stats.c 2014-02-03 12:32:57.000000000 +0100
  97518. @@ -14,9 +14,8 @@
  97519. Lesser General Public License for more details.
  97520. You should have received a copy of the GNU Lesser General Public
  97521. - License along with the GNU C Library; if not, write to the Free
  97522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97523. - 02111-1307 USA. */
  97524. + License along with the GNU C Library; if not, see
  97525. + <http://www.gnu.org/licenses/>. */
  97526. #include "thread_dbP.h"
  97527. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_setconcurrency.c uClibc/libpthread/nptl_db/td_ta_setconcurrency.c
  97528. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  97529. +++ uClibc/libpthread/nptl_db/td_ta_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  97530. @@ -14,9 +14,8 @@
  97531. Lesser General Public License for more details.
  97532. You should have received a copy of the GNU Lesser General Public
  97533. - License along with the GNU C Library; if not, write to the Free
  97534. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97535. - 02111-1307 USA. */
  97536. + License along with the GNU C Library; if not, see
  97537. + <http://www.gnu.org/licenses/>. */
  97538. #include "thread_dbP.h"
  97539. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_set_event.c uClibc/libpthread/nptl_db/td_ta_set_event.c
  97540. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  97541. +++ uClibc/libpthread/nptl_db/td_ta_set_event.c 2014-02-03 12:32:57.000000000 +0100
  97542. @@ -14,9 +14,8 @@
  97543. Lesser General Public License for more details.
  97544. You should have received a copy of the GNU Lesser General Public
  97545. - License along with the GNU C Library; if not, write to the Free
  97546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97547. - 02111-1307 USA. */
  97548. + License along with the GNU C Library; if not, see
  97549. + <http://www.gnu.org/licenses/>. */
  97550. #include "thread_dbP.h"
  97551. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_thr_iter.c uClibc/libpthread/nptl_db/td_ta_thr_iter.c
  97552. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  97553. +++ uClibc/libpthread/nptl_db/td_ta_thr_iter.c 2014-02-03 12:32:57.000000000 +0100
  97554. @@ -14,9 +14,8 @@
  97555. Lesser General Public License for more details.
  97556. You should have received a copy of the GNU Lesser General Public
  97557. - License along with the GNU C Library; if not, write to the Free
  97558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97559. - 02111-1307 USA. */
  97560. + License along with the GNU C Library; if not, see
  97561. + <http://www.gnu.org/licenses/>. */
  97562. #include "thread_dbP.h"
  97563. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_tsd_iter.c uClibc/libpthread/nptl_db/td_ta_tsd_iter.c
  97564. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  97565. +++ uClibc/libpthread/nptl_db/td_ta_tsd_iter.c 2014-02-03 12:32:57.000000000 +0100
  97566. @@ -14,9 +14,8 @@
  97567. Lesser General Public License for more details.
  97568. You should have received a copy of the GNU Lesser General Public
  97569. - License along with the GNU C Library; if not, write to the Free
  97570. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97571. - 02111-1307 USA. */
  97572. + License along with the GNU C Library; if not, see
  97573. + <http://www.gnu.org/licenses/>. */
  97574. #include "thread_dbP.h"
  97575. #include <alloca.h>
  97576. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_clear_event.c uClibc/libpthread/nptl_db/td_thr_clear_event.c
  97577. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  97578. +++ uClibc/libpthread/nptl_db/td_thr_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  97579. @@ -14,9 +14,8 @@
  97580. Lesser General Public License for more details.
  97581. You should have received a copy of the GNU Lesser General Public
  97582. - License along with the GNU C Library; if not, write to the Free
  97583. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97584. - 02111-1307 USA. */
  97585. + License along with the GNU C Library; if not, see
  97586. + <http://www.gnu.org/licenses/>. */
  97587. #include <stddef.h>
  97588. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbresume.c uClibc/libpthread/nptl_db/td_thr_dbresume.c
  97589. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  97590. +++ uClibc/libpthread/nptl_db/td_thr_dbresume.c 2014-02-03 12:32:57.000000000 +0100
  97591. @@ -14,9 +14,8 @@
  97592. Lesser General Public License for more details.
  97593. You should have received a copy of the GNU Lesser General Public
  97594. - License along with the GNU C Library; if not, write to the Free
  97595. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97596. - 02111-1307 USA. */
  97597. + License along with the GNU C Library; if not, see
  97598. + <http://www.gnu.org/licenses/>. */
  97599. #include "thread_dbP.h"
  97600. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbsuspend.c uClibc/libpthread/nptl_db/td_thr_dbsuspend.c
  97601. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  97602. +++ uClibc/libpthread/nptl_db/td_thr_dbsuspend.c 2014-02-03 12:32:57.000000000 +0100
  97603. @@ -14,9 +14,8 @@
  97604. Lesser General Public License for more details.
  97605. You should have received a copy of the GNU Lesser General Public
  97606. - License along with the GNU C Library; if not, write to the Free
  97607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97608. - 02111-1307 USA. */
  97609. + License along with the GNU C Library; if not, see
  97610. + <http://www.gnu.org/licenses/>. */
  97611. #include "thread_dbP.h"
  97612. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_enable.c uClibc/libpthread/nptl_db/td_thr_event_enable.c
  97613. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  97614. +++ uClibc/libpthread/nptl_db/td_thr_event_enable.c 2014-02-03 12:32:57.000000000 +0100
  97615. @@ -14,9 +14,8 @@
  97616. Lesser General Public License for more details.
  97617. You should have received a copy of the GNU Lesser General Public
  97618. - License along with the GNU C Library; if not, write to the Free
  97619. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97620. - 02111-1307 USA. */
  97621. + License along with the GNU C Library; if not, see
  97622. + <http://www.gnu.org/licenses/>. */
  97623. #include "thread_dbP.h"
  97624. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_getmsg.c uClibc/libpthread/nptl_db/td_thr_event_getmsg.c
  97625. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  97626. +++ uClibc/libpthread/nptl_db/td_thr_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  97627. @@ -14,9 +14,8 @@
  97628. Lesser General Public License for more details.
  97629. You should have received a copy of the GNU Lesser General Public
  97630. - License along with the GNU C Library; if not, write to the Free
  97631. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97632. - 02111-1307 USA. */
  97633. + License along with the GNU C Library; if not, see
  97634. + <http://www.gnu.org/licenses/>. */
  97635. #include "thread_dbP.h"
  97636. #include <assert.h>
  97637. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getfpregs.c uClibc/libpthread/nptl_db/td_thr_getfpregs.c
  97638. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  97639. +++ uClibc/libpthread/nptl_db/td_thr_getfpregs.c 2014-02-03 12:32:57.000000000 +0100
  97640. @@ -14,9 +14,8 @@
  97641. Lesser General Public License for more details.
  97642. You should have received a copy of the GNU Lesser General Public
  97643. - License along with the GNU C Library; if not, write to the Free
  97644. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97645. - 02111-1307 USA. */
  97646. + License along with the GNU C Library; if not, see
  97647. + <http://www.gnu.org/licenses/>. */
  97648. #include "thread_dbP.h"
  97649. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getgregs.c uClibc/libpthread/nptl_db/td_thr_getgregs.c
  97650. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  97651. +++ uClibc/libpthread/nptl_db/td_thr_getgregs.c 2014-02-03 12:32:57.000000000 +0100
  97652. @@ -14,9 +14,8 @@
  97653. Lesser General Public License for more details.
  97654. You should have received a copy of the GNU Lesser General Public
  97655. - License along with the GNU C Library; if not, write to the Free
  97656. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97657. - 02111-1307 USA. */
  97658. + License along with the GNU C Library; if not, see
  97659. + <http://www.gnu.org/licenses/>. */
  97660. #include "thread_dbP.h"
  97661. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_get_info.c uClibc/libpthread/nptl_db/td_thr_get_info.c
  97662. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  97663. +++ uClibc/libpthread/nptl_db/td_thr_get_info.c 2014-02-03 12:32:57.000000000 +0100
  97664. @@ -14,9 +14,8 @@
  97665. Lesser General Public License for more details.
  97666. You should have received a copy of the GNU Lesser General Public
  97667. - License along with the GNU C Library; if not, write to the Free
  97668. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97669. - 02111-1307 USA. */
  97670. + License along with the GNU C Library; if not, see
  97671. + <http://www.gnu.org/licenses/>. */
  97672. #include <stddef.h>
  97673. #include <string.h>
  97674. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregs.c uClibc/libpthread/nptl_db/td_thr_getxregs.c
  97675. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  97676. +++ uClibc/libpthread/nptl_db/td_thr_getxregs.c 2014-02-03 12:32:57.000000000 +0100
  97677. @@ -14,9 +14,8 @@
  97678. Lesser General Public License for more details.
  97679. You should have received a copy of the GNU Lesser General Public
  97680. - License along with the GNU C Library; if not, write to the Free
  97681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97682. - 02111-1307 USA. */
  97683. + License along with the GNU C Library; if not, see
  97684. + <http://www.gnu.org/licenses/>. */
  97685. #include "thread_dbP.h"
  97686. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregsize.c uClibc/libpthread/nptl_db/td_thr_getxregsize.c
  97687. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  97688. +++ uClibc/libpthread/nptl_db/td_thr_getxregsize.c 2014-02-03 12:32:57.000000000 +0100
  97689. @@ -14,9 +14,8 @@
  97690. Lesser General Public License for more details.
  97691. You should have received a copy of the GNU Lesser General Public
  97692. - License along with the GNU C Library; if not, write to the Free
  97693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97694. - 02111-1307 USA. */
  97695. + License along with the GNU C Library; if not, see
  97696. + <http://www.gnu.org/licenses/>. */
  97697. #include "thread_dbP.h"
  97698. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_set_event.c uClibc/libpthread/nptl_db/td_thr_set_event.c
  97699. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  97700. +++ uClibc/libpthread/nptl_db/td_thr_set_event.c 2014-02-03 12:32:57.000000000 +0100
  97701. @@ -14,9 +14,8 @@
  97702. Lesser General Public License for more details.
  97703. You should have received a copy of the GNU Lesser General Public
  97704. - License along with the GNU C Library; if not, write to the Free
  97705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97706. - 02111-1307 USA. */
  97707. + License along with the GNU C Library; if not, see
  97708. + <http://www.gnu.org/licenses/>. */
  97709. #include <stddef.h>
  97710. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setfpregs.c uClibc/libpthread/nptl_db/td_thr_setfpregs.c
  97711. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  97712. +++ uClibc/libpthread/nptl_db/td_thr_setfpregs.c 2014-02-03 12:32:57.000000000 +0100
  97713. @@ -14,9 +14,8 @@
  97714. Lesser General Public License for more details.
  97715. You should have received a copy of the GNU Lesser General Public
  97716. - License along with the GNU C Library; if not, write to the Free
  97717. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97718. - 02111-1307 USA. */
  97719. + License along with the GNU C Library; if not, see
  97720. + <http://www.gnu.org/licenses/>. */
  97721. #include "thread_dbP.h"
  97722. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setgregs.c uClibc/libpthread/nptl_db/td_thr_setgregs.c
  97723. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  97724. +++ uClibc/libpthread/nptl_db/td_thr_setgregs.c 2014-02-03 12:32:57.000000000 +0100
  97725. @@ -14,9 +14,8 @@
  97726. Lesser General Public License for more details.
  97727. You should have received a copy of the GNU Lesser General Public
  97728. - License along with the GNU C Library; if not, write to the Free
  97729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97730. - 02111-1307 USA. */
  97731. + License along with the GNU C Library; if not, see
  97732. + <http://www.gnu.org/licenses/>. */
  97733. #include "thread_dbP.h"
  97734. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setprio.c uClibc/libpthread/nptl_db/td_thr_setprio.c
  97735. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  97736. +++ uClibc/libpthread/nptl_db/td_thr_setprio.c 2014-02-03 12:32:57.000000000 +0100
  97737. @@ -14,9 +14,8 @@
  97738. Lesser General Public License for more details.
  97739. You should have received a copy of the GNU Lesser General Public
  97740. - License along with the GNU C Library; if not, write to the Free
  97741. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97742. - 02111-1307 USA. */
  97743. + License along with the GNU C Library; if not, see
  97744. + <http://www.gnu.org/licenses/>. */
  97745. #include "thread_dbP.h"
  97746. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setsigpending.c uClibc/libpthread/nptl_db/td_thr_setsigpending.c
  97747. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  97748. +++ uClibc/libpthread/nptl_db/td_thr_setsigpending.c 2014-02-03 12:32:57.000000000 +0100
  97749. @@ -14,9 +14,8 @@
  97750. Lesser General Public License for more details.
  97751. You should have received a copy of the GNU Lesser General Public
  97752. - License along with the GNU C Library; if not, write to the Free
  97753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97754. - 02111-1307 USA. */
  97755. + License along with the GNU C Library; if not, see
  97756. + <http://www.gnu.org/licenses/>. */
  97757. #include "thread_dbP.h"
  97758. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setxregs.c uClibc/libpthread/nptl_db/td_thr_setxregs.c
  97759. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  97760. +++ uClibc/libpthread/nptl_db/td_thr_setxregs.c 2014-02-03 12:32:57.000000000 +0100
  97761. @@ -14,9 +14,8 @@
  97762. Lesser General Public License for more details.
  97763. You should have received a copy of the GNU Lesser General Public
  97764. - License along with the GNU C Library; if not, write to the Free
  97765. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97766. - 02111-1307 USA. */
  97767. + License along with the GNU C Library; if not, see
  97768. + <http://www.gnu.org/licenses/>. */
  97769. #include "thread_dbP.h"
  97770. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_sigsetmask.c uClibc/libpthread/nptl_db/td_thr_sigsetmask.c
  97771. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  97772. +++ uClibc/libpthread/nptl_db/td_thr_sigsetmask.c 2014-02-03 12:32:57.000000000 +0100
  97773. @@ -14,9 +14,8 @@
  97774. Lesser General Public License for more details.
  97775. You should have received a copy of the GNU Lesser General Public
  97776. - License along with the GNU C Library; if not, write to the Free
  97777. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97778. - 02111-1307 USA. */
  97779. + License along with the GNU C Library; if not, see
  97780. + <http://www.gnu.org/licenses/>. */
  97781. #include "thread_dbP.h"
  97782. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tlsbase.c uClibc/libpthread/nptl_db/td_thr_tlsbase.c
  97783. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tlsbase.c 2012-05-15 09:20:09.000000000 +0200
  97784. +++ uClibc/libpthread/nptl_db/td_thr_tlsbase.c 2014-02-03 12:32:57.000000000 +0100
  97785. @@ -13,9 +13,8 @@
  97786. Lesser General Public License for more details.
  97787. You should have received a copy of the GNU Lesser General Public
  97788. - License along with the GNU C Library; if not, write to the Free
  97789. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97790. - 02111-1307 USA. */
  97791. + License along with the GNU C Library; if not, see
  97792. + <http://www.gnu.org/licenses/>. */
  97793. #include "thread_dbP.h"
  97794. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tls_get_addr.c uClibc/libpthread/nptl_db/td_thr_tls_get_addr.c
  97795. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  97796. +++ uClibc/libpthread/nptl_db/td_thr_tls_get_addr.c 2014-02-03 12:32:57.000000000 +0100
  97797. @@ -14,9 +14,8 @@
  97798. Lesser General Public License for more details.
  97799. You should have received a copy of the GNU Lesser General Public
  97800. - License along with the GNU C Library; if not, write to the Free
  97801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97802. - 02111-1307 USA. */
  97803. + License along with the GNU C Library; if not, see
  97804. + <http://www.gnu.org/licenses/>. */
  97805. #include <link.h>
  97806. #include "thread_dbP.h"
  97807. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tsd.c uClibc/libpthread/nptl_db/td_thr_tsd.c
  97808. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  97809. +++ uClibc/libpthread/nptl_db/td_thr_tsd.c 2014-02-03 12:32:57.000000000 +0100
  97810. @@ -14,9 +14,8 @@
  97811. Lesser General Public License for more details.
  97812. You should have received a copy of the GNU Lesser General Public
  97813. - License along with the GNU C Library; if not, write to the Free
  97814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97815. - 02111-1307 USA. */
  97816. + License along with the GNU C Library; if not, see
  97817. + <http://www.gnu.org/licenses/>. */
  97818. #include "thread_dbP.h"
  97819. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_validate.c uClibc/libpthread/nptl_db/td_thr_validate.c
  97820. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  97821. +++ uClibc/libpthread/nptl_db/td_thr_validate.c 2014-02-03 12:32:57.000000000 +0100
  97822. @@ -14,9 +14,8 @@
  97823. Lesser General Public License for more details.
  97824. You should have received a copy of the GNU Lesser General Public
  97825. - License along with the GNU C Library; if not, write to the Free
  97826. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97827. - 02111-1307 USA. */
  97828. + License along with the GNU C Library; if not, see
  97829. + <http://www.gnu.org/licenses/>. */
  97830. #include "thread_dbP.h"
  97831. #include <stdbool.h>
  97832. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/thread_db.h uClibc/libpthread/nptl_db/thread_db.h
  97833. --- uClibc-0.9.33.2/libpthread/nptl_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  97834. +++ uClibc/libpthread/nptl_db/thread_db.h 2014-02-03 12:32:57.000000000 +0100
  97835. @@ -13,9 +13,8 @@
  97836. Lesser General Public License for more details.
  97837. You should have received a copy of the GNU Lesser General Public
  97838. - License along with the GNU C Library; if not, write to the Free
  97839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97840. - 02111-1307 USA. */
  97841. + License along with the GNU C Library; if not, see
  97842. + <http://www.gnu.org/licenses/>. */
  97843. #ifndef _THREAD_DB_H
  97844. #define _THREAD_DB_H 1
  97845. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/thread_dbP.h uClibc/libpthread/nptl_db/thread_dbP.h
  97846. --- uClibc-0.9.33.2/libpthread/nptl_db/thread_dbP.h 2012-05-15 09:20:09.000000000 +0200
  97847. +++ uClibc/libpthread/nptl_db/thread_dbP.h 2014-02-03 12:32:57.000000000 +0100
  97848. @@ -13,9 +13,8 @@
  97849. Lesser General Public License for more details.
  97850. You should have received a copy of the GNU Lesser General Public
  97851. - License along with the GNU C Library; if not, write to the Free
  97852. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97853. - 02111-1307 USA. */
  97854. + License along with the GNU C Library; if not, see
  97855. + <http://www.gnu.org/licenses/>. */
  97856. #ifndef _THREAD_DBP_H
  97857. #define _THREAD_DBP_H 1
  97858. diff -Nur uClibc-0.9.33.2/libresolv/resolv.c uClibc/libresolv/resolv.c
  97859. --- uClibc-0.9.33.2/libresolv/resolv.c 2012-05-15 09:20:09.000000000 +0200
  97860. +++ uClibc/libresolv/resolv.c 2014-02-03 12:32:57.000000000 +0100
  97861. @@ -7,8 +7,6 @@
  97862. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  97863. */
  97864. -#include <features.h>
  97865. -
  97866. void __stub1(void);
  97867. void __stub1(void)
  97868. {
  97869. diff -Nur uClibc-0.9.33.2/librt/clock_getcpuclockid.c uClibc/librt/clock_getcpuclockid.c
  97870. --- uClibc-0.9.33.2/librt/clock_getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  97871. +++ uClibc/librt/clock_getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  97872. @@ -13,9 +13,8 @@
  97873. Lesser General Public License for more details.
  97874. You should have received a copy of the GNU Lesser General Public
  97875. - License along with the GNU C Library; if not, write to the Free
  97876. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97877. - 02111-1307 USA. */
  97878. + License along with the GNU C Library; if not, see
  97879. + <http://www.gnu.org/licenses/>. */
  97880. #include <errno.h>
  97881. #include <time.h>
  97882. diff -Nur uClibc-0.9.33.2/librt/clock_gettime.c uClibc/librt/clock_gettime.c
  97883. --- uClibc-0.9.33.2/librt/clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  97884. +++ uClibc/librt/clock_gettime.c 2014-02-03 12:32:57.000000000 +0100
  97885. @@ -13,9 +13,8 @@
  97886. Lesser General Public License for more details.
  97887. You should have received a copy of the GNU Lesser General Public
  97888. - License along with the GNU C Library; if not, write to the Free
  97889. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97890. - 02111-1307 USA. */
  97891. + License along with the GNU C Library; if not, see
  97892. + <http://www.gnu.org/licenses/>. */
  97893. #include <sysdep.h>
  97894. #include <errno.h>
  97895. @@ -186,7 +185,6 @@
  97896. #include <stdint.h>
  97897. #include <time.h>
  97898. #include <sys/time.h>
  97899. -#include <libc-internal.h>
  97900. #include <ldsodefs.h>
  97901. diff -Nur uClibc-0.9.33.2/librt/clock_nanosleep.c uClibc/librt/clock_nanosleep.c
  97902. --- uClibc-0.9.33.2/librt/clock_nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  97903. +++ uClibc/librt/clock_nanosleep.c 2014-02-03 12:32:57.000000000 +0100
  97904. @@ -12,9 +12,8 @@
  97905. Lesser General Public License for more details.
  97906. You should have received a copy of the GNU Lesser General Public
  97907. - License along with the GNU C Library; if not, write to the Free
  97908. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97909. - 02111-1307 USA. */
  97910. + License along with the GNU C Library; if not, see
  97911. + <http://www.gnu.org/licenses/>. */
  97912. #include <time.h>
  97913. #include <errno.h>
  97914. diff -Nur uClibc-0.9.33.2/librt/Makefile.in uClibc/librt/Makefile.in
  97915. --- uClibc-0.9.33.2/librt/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  97916. +++ uClibc/librt/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  97917. @@ -28,11 +28,20 @@
  97918. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  97919. librt_filter_SRC += mq_notify.c timer_create.c timer_delete.c \
  97920. timer_getoverr.c timer_gettime.c timer_settime.c
  97921. +# these should really be guarded by ADVANCED_REALTIME, we use them in mq_send.c/mq_receive.c
  97922. librt_SSRC := $(wildcard $(librt_DIR)/*.S)
  97923. else
  97924. librt_filter_SRC += clock_nanosleep.c clock_getcpuclockid.c clock_gettime.c
  97925. librt_SSRC :=
  97926. endif
  97927. +
  97928. +librt_filter_SRC += $(if $(UCLIBC_HAS_ADVANCED_REALTIME),, \
  97929. + spawn.c \
  97930. + spawn_faction_addclose.c \
  97931. + spawn_faction_adddup2.c \
  97932. + spawn_faction_addopen.c \
  97933. + spawn_faction_init.c)
  97934. +
  97935. librt_SRC := $(filter-out $(librt_filter_SRC),$(librt_SRC))
  97936. librt_OBJ := $(patsubst %.c,$(librt_OUT)/%.o,$(librt_SRC))
  97937. diff -Nur uClibc-0.9.33.2/librt/mq_receive.c uClibc/librt/mq_receive.c
  97938. --- uClibc-0.9.33.2/librt/mq_receive.c 2012-05-15 09:20:09.000000000 +0200
  97939. +++ uClibc/librt/mq_receive.c 2014-02-03 12:32:57.000000000 +0100
  97940. @@ -10,13 +10,18 @@
  97941. #include <mqueue.h>
  97942. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  97943. +# ifndef __UCLIBC_HAS_ADVANCED_REALTIME__
  97944. +extern ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
  97945. + unsigned int *msg_prio,
  97946. + const struct timespec *abs_timeout);
  97947. +# endif
  97948. librt_hidden_proto(mq_timedreceive)
  97949. #else
  97950. # define __NR___syscall_mq_timedreceive __NR_mq_timedreceive
  97951. static _syscall5(int, __syscall_mq_timedreceive, int, mqdes,
  97952. char *, msg_ptr, size_t, msg_len, unsigned int *,
  97953. - msg_prio, const void *, abs_timeout);
  97954. + msg_prio, const void *, abs_timeout)
  97955. # ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
  97956. /*
  97957. diff -Nur uClibc-0.9.33.2/librt/mq_send.c uClibc/librt/mq_send.c
  97958. --- uClibc-0.9.33.2/librt/mq_send.c 2012-05-15 09:20:09.000000000 +0200
  97959. +++ uClibc/librt/mq_send.c 2014-02-03 12:32:57.000000000 +0100
  97960. @@ -10,13 +10,17 @@
  97961. #include <mqueue.h>
  97962. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  97963. +# ifndef __UCLIBC_HAS_ADVANCED_REALTIME__
  97964. +extern int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len,
  97965. + unsigned int msg_prio, const struct timespec *abs_timeout);
  97966. +# endif
  97967. librt_hidden_proto(mq_timedsend)
  97968. #else
  97969. # define __NR___syscall_mq_timedsend __NR_mq_timedsend
  97970. static _syscall5(int, __syscall_mq_timedsend, int, mqdes,
  97971. const char *, msg_ptr, size_t, msg_len, unsigned int,
  97972. - msg_prio, const void *, abs_timeout);
  97973. + msg_prio, const void *, abs_timeout)
  97974. # ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
  97975. /*
  97976. diff -Nur uClibc-0.9.33.2/librt/mq_timedreceive.S uClibc/librt/mq_timedreceive.S
  97977. --- uClibc-0.9.33.2/librt/mq_timedreceive.S 2012-05-15 09:20:09.000000000 +0200
  97978. +++ uClibc/librt/mq_timedreceive.S 2014-02-03 12:32:57.000000000 +0100
  97979. @@ -2,9 +2,7 @@
  97980. #ifndef __NR_mq_timedreceive
  97981. #error Missing definition of NR_timedreceive needed for cancellation.
  97982. #endif
  97983. -PSEUDO (__mq_timedreceive, mq_timedreceive, 5)
  97984. -ret
  97985. -PSEUDO_END(__mq_timedreceive)
  97986. -librt_hidden_def (__mq_timedreceive)
  97987. -weak_alias (__mq_timedreceive, mq_timedreceive)
  97988. -librt_hidden_weak (mq_timedreceive)
  97989. +PSEUDO(mq_timedreceive, mq_timedreceive, 5)
  97990. +ret_ERRVAL
  97991. +PSEUDO_END(mq_timedreceive)
  97992. +librt_hidden_def(mq_timedreceive)
  97993. diff -Nur uClibc-0.9.33.2/librt/mq_timedsend.S uClibc/librt/mq_timedsend.S
  97994. --- uClibc-0.9.33.2/librt/mq_timedsend.S 2012-05-15 09:20:09.000000000 +0200
  97995. +++ uClibc/librt/mq_timedsend.S 2014-02-03 12:32:57.000000000 +0100
  97996. @@ -2,9 +2,7 @@
  97997. #ifndef __NR_mq_timedsend
  97998. #error Missing definition of NR_timedsend needed for cancellation.
  97999. #endif
  98000. -PSEUDO (__mq_timedsend, mq_timedsend, 5)
  98001. -ret
  98002. -PSEUDO_END(__mq_timedsend)
  98003. -librt_hidden_def (__mq_timedsend)
  98004. -weak_alias (__mq_timedsend, mq_timedsend)
  98005. -librt_hidden_weak (mq_timedsend)
  98006. +PSEUDO(mq_timedsend, mq_timedsend, 5)
  98007. +ret_ERRVAL
  98008. +PSEUDO_END(mq_timedsend)
  98009. +librt_hidden_def(mq_timedsend)
  98010. diff -Nur uClibc-0.9.33.2/librt/spawn.c uClibc/librt/spawn.c
  98011. --- uClibc-0.9.33.2/librt/spawn.c 1970-01-01 01:00:00.000000000 +0100
  98012. +++ uClibc/librt/spawn.c 2014-02-03 12:32:57.000000000 +0100
  98013. @@ -0,0 +1,266 @@
  98014. +/* Copyright (C) 2000, 2011 Free Software Foundation, Inc.
  98015. + This file is part of the GNU C Library.
  98016. +
  98017. + The GNU C Library is free software; you can redistribute it and/or
  98018. + modify it under the terms of the GNU Lesser General Public
  98019. + License as published by the Free Software Foundation; either
  98020. + version 2.1 of the License, or (at your option) any later version.
  98021. +
  98022. + The GNU C Library is distributed in the hope that it will be useful,
  98023. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  98024. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  98025. + Lesser General Public License for more details.
  98026. +
  98027. + You should have received a copy of the GNU Lesser General Public
  98028. + License along with the GNU C Library; if not, see
  98029. + <http://www.gnu.org/licenses/>. */
  98030. +
  98031. +#include <errno.h>
  98032. +#include <alloca.h>
  98033. +#include <unistd.h>
  98034. +#include <signal.h>
  98035. +#include <stdbool.h>
  98036. +#include <fcntl.h>
  98037. +
  98038. +#include <sys/resource.h>
  98039. +#include <not-cancel.h>
  98040. +
  98041. +#include <spawn.h>
  98042. +#include "spawn_int.h"
  98043. +
  98044. +/* The Unix standard contains a long explanation of the way to signal
  98045. + an error after the fork() was successful. Since no new wait status
  98046. + was wanted there is no way to signal an error using one of the
  98047. + available methods. The committee chose to signal an error by a
  98048. + normal program exit with the exit code 127. */
  98049. +#define SPAWN_ERROR 127
  98050. +
  98051. +/* Execute file actions.
  98052. + * Returns true on error.
  98053. + */
  98054. +inline static bool execute_file_actions(const posix_spawn_file_actions_t *fa)
  98055. +{
  98056. + struct rlimit64 fdlimit;
  98057. + bool have_fdlimit = false;
  98058. + int cnt;
  98059. +
  98060. + for (cnt = 0; cnt < fa->__used; ++cnt) {
  98061. + struct __spawn_action *action = &fa->__actions[cnt];
  98062. +
  98063. + switch (action->tag) {
  98064. + case spawn_do_close:
  98065. + if (close_not_cancel(action->action.close_action.fd) != 0) {
  98066. + if (!have_fdlimit) {
  98067. + getrlimit64(RLIMIT_NOFILE, &fdlimit);
  98068. + have_fdlimit = true;
  98069. + }
  98070. +
  98071. + /* Only signal errors for file descriptors out of range. */
  98072. + if (0 > action->action.close_action.fd
  98073. + || action->action.close_action.fd >= fdlimit.rlim_cur)
  98074. + /* Signal the error. */
  98075. + return true;
  98076. + }
  98077. + break;
  98078. +
  98079. + case spawn_do_open:;
  98080. + int new_fd = open_not_cancel(action->action.open_action.path,
  98081. + action->action.open_action.oflag
  98082. + | O_LARGEFILE,
  98083. + action->action.open_action.mode);
  98084. +
  98085. + if (new_fd == -1)
  98086. + return true;
  98087. +
  98088. + /* Make sure the desired file descriptor is used. */
  98089. + if (new_fd != action->action.open_action.fd) {
  98090. + if (dup2(new_fd, action->action.open_action.fd)
  98091. + != action->action.open_action.fd)
  98092. + return true;
  98093. +
  98094. + if (close_not_cancel(new_fd) != 0)
  98095. + return true;
  98096. + }
  98097. + break;
  98098. +
  98099. + case spawn_do_dup2:
  98100. + if (dup2(action->action.dup2_action.fd,
  98101. + action->action.dup2_action.newfd)
  98102. + != action->action.dup2_action.newfd)
  98103. + return true;
  98104. + break;
  98105. + }
  98106. + }
  98107. +
  98108. + return false;
  98109. +}
  98110. +
  98111. +#define DANGEROUS (POSIX_SPAWN_SETSIGMASK \
  98112. + | POSIX_SPAWN_SETSIGDEF \
  98113. + | POSIX_SPAWN_SETSCHEDPARAM \
  98114. + | POSIX_SPAWN_SETSCHEDULER \
  98115. + | POSIX_SPAWN_SETPGROUP \
  98116. + | POSIX_SPAWN_RESETIDS)
  98117. +inline static bool is_vfork_safe(short int flags)
  98118. +{
  98119. + return ((flags & POSIX_SPAWN_USEVFORK) || !(flags & DANGEROUS));
  98120. +}
  98121. +
  98122. +
  98123. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  98124. + Before running the process perform the actions described in FILE-ACTIONS. */
  98125. +static int
  98126. +__spawni(pid_t *pid, const char *file,
  98127. + const posix_spawn_file_actions_t *fa,
  98128. + const posix_spawnattr_t *attrp, char *const argv[],
  98129. + char *const envp[], const char *path)
  98130. +{
  98131. + short int flags = attrp ? attrp->__flags : 0;
  98132. +
  98133. + pid_t new_pid;
  98134. + if (is_vfork_safe(flags) && !fa)
  98135. + new_pid = vfork();
  98136. + else {
  98137. +#ifdef __ARCH_USE_MMU__
  98138. + new_pid = fork();
  98139. +#else
  98140. + return ENOSYS;
  98141. +#endif
  98142. + }
  98143. +
  98144. + if (new_pid) {
  98145. + if (new_pid < 0)
  98146. + return errno;
  98147. +
  98148. + if (pid)
  98149. + *pid = new_pid;
  98150. +
  98151. + return 0;
  98152. + }
  98153. +
  98154. + if (flags & POSIX_SPAWN_SETSIGMASK) {
  98155. + if (sigprocmask(SIG_SETMASK, &attrp->__ss, NULL) != 0)
  98156. + goto error;
  98157. + }
  98158. +
  98159. + if (flags & POSIX_SPAWN_SETSIGDEF) {
  98160. + /* We have to iterate over all signals. This could possibly be
  98161. + done better but it requires system specific solutions since
  98162. + the sigset_t data type can be very different on different
  98163. + architectures. */
  98164. + struct sigaction sa;
  98165. + int sig;
  98166. +
  98167. + memset(&sa, 0, sizeof(sa));
  98168. + sa.sa_handler = SIG_DFL;
  98169. +
  98170. + for (sig = 1; sig <= _NSIG; ++sig) {
  98171. + if (sigismember(&attrp->__sd, sig)) {
  98172. + if (sigaction(sig, &sa, NULL) != 0)
  98173. + goto error;
  98174. + }
  98175. + }
  98176. + }
  98177. +
  98178. + if (flags & POSIX_SPAWN_SETSCHEDULER) {
  98179. + if (sched_setscheduler(0, attrp->__policy, &attrp->__sp) == -1)
  98180. + goto error;
  98181. + } else if (flags & POSIX_SPAWN_SETSCHEDPARAM) {
  98182. + if (sched_setparam(0, &attrp->__sp) == -1)
  98183. + goto error;
  98184. + }
  98185. +
  98186. + if (flags & POSIX_SPAWN_SETPGROUP) {
  98187. + if (setpgid(0, attrp->__pgrp) != 0)
  98188. + goto error;
  98189. + }
  98190. +
  98191. + if (flags & POSIX_SPAWN_RESETIDS) {
  98192. + if (seteuid(getuid()) || setegid(getgid()))
  98193. + goto error;
  98194. + }
  98195. +
  98196. + if (fa && execute_file_actions(fa))
  98197. + goto error;
  98198. +
  98199. + if (!path || strchr(file, '/')) {
  98200. + execve(file, argv, envp);
  98201. + goto error;
  98202. + }
  98203. +
  98204. +
  98205. + char *name;
  98206. + {
  98207. + size_t filelen = strlen(file) + 1;
  98208. + size_t pathlen = strlen(path) + 1;
  98209. + name = alloca(pathlen + filelen);
  98210. +
  98211. + /* Copy the file name at the top. */
  98212. + name = (char *) memcpy(name + pathlen, file, filelen);
  98213. +
  98214. + /* And add the slash. */
  98215. + *--name = '/';
  98216. + }
  98217. +
  98218. + char *p;
  98219. + do {
  98220. + char *startp;
  98221. + p = strchrnul(path, ':');
  98222. +
  98223. + /* Two adjacent colons, or a colon at the beginning or the end
  98224. + of `PATH' means to search the current directory. */
  98225. + if (p == path)
  98226. + startp = name + 1;
  98227. + else
  98228. + startp = (char *) memcpy(name - (p - path), path, p - path);
  98229. +
  98230. + execve(startp, argv, envp);
  98231. +
  98232. + switch (errno) {
  98233. + case EACCES:
  98234. + case ENOENT:
  98235. + case ESTALE:
  98236. + case ENOTDIR:
  98237. + /* Those errors indicate the file is missing or not
  98238. + executable by us, in which case we want to just try
  98239. + the next path directory. */
  98240. + break;
  98241. + default:
  98242. + /* Some other error means we found an executable file,
  98243. + but something went wrong executing it; return the
  98244. + error to our caller. */
  98245. + goto error;
  98246. + }
  98247. +
  98248. + path = p;
  98249. + } while (*p++ != '\0');
  98250. +
  98251. +error:
  98252. + _exit(SPAWN_ERROR);
  98253. +}
  98254. +
  98255. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  98256. + Before running the process perform the actions described in FILE-ACTIONS. */
  98257. +int posix_spawn (pid_t *pid, const char *path,
  98258. + const posix_spawn_file_actions_t *fa,
  98259. + const posix_spawnattr_t *attrp, char *const argv[],
  98260. + char *const envp[])
  98261. +{
  98262. + return __spawni(pid, path, fa, attrp, argv, envp, NULL);
  98263. +}
  98264. +
  98265. +/* Spawn a new process executing FILE with the attributes describes in *ATTRP.
  98266. + Before running the process perform the actions described in FILE-ACTIONS. */
  98267. +int
  98268. +posix_spawnp(pid_t *pid, const char *file,
  98269. + const posix_spawn_file_actions_t *fa,
  98270. + const posix_spawnattr_t *attrp, char *const argv[],
  98271. + char *const envp[])
  98272. +{
  98273. + const char *path = getenv("PATH");
  98274. +
  98275. + if (!path)
  98276. + path = ":/bin:/usr/bin";
  98277. +
  98278. + return __spawni(pid, file, fa, attrp, argv, envp, path);
  98279. +}
  98280. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_addclose.c uClibc/librt/spawn_faction_addclose.c
  98281. --- uClibc-0.9.33.2/librt/spawn_faction_addclose.c 1970-01-01 01:00:00.000000000 +0100
  98282. +++ uClibc/librt/spawn_faction_addclose.c 2014-02-03 12:32:57.000000000 +0100
  98283. @@ -0,0 +1,51 @@
  98284. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  98285. + This file is part of the GNU C Library.
  98286. +
  98287. + The GNU C Library is free software; you can redistribute it and/or
  98288. + modify it under the terms of the GNU Lesser General Public
  98289. + License as published by the Free Software Foundation; either
  98290. + version 2.1 of the License, or (at your option) any later version.
  98291. +
  98292. + The GNU C Library is distributed in the hope that it will be useful,
  98293. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  98294. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  98295. + Lesser General Public License for more details.
  98296. +
  98297. + You should have received a copy of the GNU Lesser General Public
  98298. + License along with the GNU C Library; if not, see
  98299. + <http://www.gnu.org/licenses/>. */
  98300. +
  98301. +#include <errno.h>
  98302. +#include <spawn.h>
  98303. +#include <unistd.h>
  98304. +
  98305. +#include "spawn_int.h"
  98306. +
  98307. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  98308. + `close' for the given file descriptor during the `spawn' call. */
  98309. +int
  98310. +posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *file_actions,
  98311. + int fd)
  98312. +{
  98313. + int maxfd = sysconf(_SC_OPEN_MAX);
  98314. + struct __spawn_action *rec;
  98315. +
  98316. + /* Test for the validity of the file descriptor. */
  98317. + if (fd < 0 || fd >= maxfd)
  98318. + return EBADF;
  98319. +
  98320. + /* Allocate more memory if needed. */
  98321. + if (file_actions->__used == file_actions->__allocated
  98322. + && __posix_spawn_file_actions_realloc(file_actions) != 0)
  98323. + /* This can only mean we ran out of memory. */
  98324. + return ENOMEM;
  98325. +
  98326. + /* Add the new value. */
  98327. + rec = &file_actions->__actions[file_actions->__used];
  98328. + rec->tag = spawn_do_close;
  98329. + rec->action.open_action.fd = fd;
  98330. +
  98331. + /* Account for the new entry. */
  98332. + ++file_actions->__used;
  98333. + return 0;
  98334. +}
  98335. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_adddup2.c uClibc/librt/spawn_faction_adddup2.c
  98336. --- uClibc-0.9.33.2/librt/spawn_faction_adddup2.c 1970-01-01 01:00:00.000000000 +0100
  98337. +++ uClibc/librt/spawn_faction_adddup2.c 2014-02-03 12:32:57.000000000 +0100
  98338. @@ -0,0 +1,52 @@
  98339. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  98340. + This file is part of the GNU C Library.
  98341. +
  98342. + The GNU C Library is free software; you can redistribute it and/or
  98343. + modify it under the terms of the GNU Lesser General Public
  98344. + License as published by the Free Software Foundation; either
  98345. + version 2.1 of the License, or (at your option) any later version.
  98346. +
  98347. + The GNU C Library is distributed in the hope that it will be useful,
  98348. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  98349. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  98350. + Lesser General Public License for more details.
  98351. +
  98352. + You should have received a copy of the GNU Lesser General Public
  98353. + License along with the GNU C Library; if not, see
  98354. + <http://www.gnu.org/licenses/>. */
  98355. +
  98356. +#include <errno.h>
  98357. +#include <spawn.h>
  98358. +#include <unistd.h>
  98359. +
  98360. +#include "spawn_int.h"
  98361. +
  98362. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  98363. + `dup2' for the given file descriptors during the `spawn' call. */
  98364. +int
  98365. +posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *file_actions,
  98366. + int fd, int newfd)
  98367. +{
  98368. + int maxfd = sysconf(_SC_OPEN_MAX);
  98369. + struct __spawn_action *rec;
  98370. +
  98371. + /* Test for the validity of the file descriptor. */
  98372. + if (fd < 0 || newfd < 0 || fd >= maxfd || newfd >= maxfd)
  98373. + return EBADF;
  98374. +
  98375. + /* Allocate more memory if needed. */
  98376. + if (file_actions->__used == file_actions->__allocated
  98377. + && __posix_spawn_file_actions_realloc (file_actions) != 0)
  98378. + /* This can only mean we ran out of memory. */
  98379. + return ENOMEM;
  98380. +
  98381. + /* Add the new value. */
  98382. + rec = &file_actions->__actions[file_actions->__used];
  98383. + rec->tag = spawn_do_dup2;
  98384. + rec->action.dup2_action.fd = fd;
  98385. + rec->action.dup2_action.newfd = newfd;
  98386. +
  98387. + /* Account for the new entry. */
  98388. + ++file_actions->__used;
  98389. + return 0;
  98390. +}
  98391. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_addopen.c uClibc/librt/spawn_faction_addopen.c
  98392. --- uClibc-0.9.33.2/librt/spawn_faction_addopen.c 1970-01-01 01:00:00.000000000 +0100
  98393. +++ uClibc/librt/spawn_faction_addopen.c 2014-02-03 12:32:57.000000000 +0100
  98394. @@ -0,0 +1,55 @@
  98395. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  98396. + This file is part of the GNU C Library.
  98397. +
  98398. + The GNU C Library is free software; you can redistribute it and/or
  98399. + modify it under the terms of the GNU Lesser General Public
  98400. + License as published by the Free Software Foundation; either
  98401. + version 2.1 of the License, or (at your option) any later version.
  98402. +
  98403. + The GNU C Library is distributed in the hope that it will be useful,
  98404. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  98405. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  98406. + Lesser General Public License for more details.
  98407. +
  98408. + You should have received a copy of the GNU Lesser General Public
  98409. + License along with the GNU C Library; if not, see
  98410. + <http://www.gnu.org/licenses/>. */
  98411. +
  98412. +#include <errno.h>
  98413. +#include <spawn.h>
  98414. +#include <unistd.h>
  98415. +
  98416. +#include "spawn_int.h"
  98417. +
  98418. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  98419. + `open' for the given file during the `spawn' call. */
  98420. +int
  98421. +posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *file_actions,
  98422. + int fd, const char *path, int oflag,
  98423. + mode_t mode)
  98424. +{
  98425. + int maxfd = sysconf(_SC_OPEN_MAX);
  98426. + struct __spawn_action *rec;
  98427. +
  98428. + /* Test for the validity of the file descriptor. */
  98429. + if (fd < 0 || fd >= maxfd)
  98430. + return EBADF;
  98431. +
  98432. + /* Allocate more memory if needed. */
  98433. + if (file_actions->__used == file_actions->__allocated
  98434. + && __posix_spawn_file_actions_realloc (file_actions) != 0)
  98435. + /* This can only mean we ran out of memory. */
  98436. + return ENOMEM;
  98437. +
  98438. + /* Add the new value. */
  98439. + rec = &file_actions->__actions[file_actions->__used];
  98440. + rec->tag = spawn_do_open;
  98441. + rec->action.open_action.fd = fd;
  98442. + rec->action.open_action.path = path;
  98443. + rec->action.open_action.oflag = oflag;
  98444. + rec->action.open_action.mode = mode;
  98445. +
  98446. + /* Account for the new entry. */
  98447. + ++file_actions->__used;
  98448. + return 0;
  98449. +}
  98450. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_init.c uClibc/librt/spawn_faction_init.c
  98451. --- uClibc-0.9.33.2/librt/spawn_faction_init.c 1970-01-01 01:00:00.000000000 +0100
  98452. +++ uClibc/librt/spawn_faction_init.c 2014-02-03 12:32:57.000000000 +0100
  98453. @@ -0,0 +1,42 @@
  98454. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  98455. + This file is part of the GNU C Library.
  98456. +
  98457. + The GNU C Library is free software; you can redistribute it and/or
  98458. + modify it under the terms of the GNU Lesser General Public
  98459. + License as published by the Free Software Foundation; either
  98460. + version 2.1 of the License, or (at your option) any later version.
  98461. +
  98462. + The GNU C Library is distributed in the hope that it will be useful,
  98463. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  98464. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  98465. + Lesser General Public License for more details.
  98466. +
  98467. + You should have received a copy of the GNU Lesser General Public
  98468. + License along with the GNU C Library; if not, see
  98469. + <http://www.gnu.org/licenses/>. */
  98470. +
  98471. +#include <errno.h>
  98472. +#include <spawn.h>
  98473. +#include <stdlib.h>
  98474. +#include <string.h>
  98475. +
  98476. +#include "spawn_int.h"
  98477. +
  98478. +
  98479. +/* Function used to increase the size of the allocated array. This
  98480. + function is called from the `add'-functions. */
  98481. +int
  98482. +__posix_spawn_file_actions_realloc(posix_spawn_file_actions_t *file_actions)
  98483. +{
  98484. + int newalloc = file_actions->__allocated + 8;
  98485. + void *newmem = realloc(file_actions->__actions,
  98486. + newalloc * sizeof(struct __spawn_action));
  98487. +
  98488. + if (newmem == NULL)
  98489. + /* Not enough memory. */
  98490. + return ENOMEM;
  98491. +
  98492. + file_actions->__actions = (struct __spawn_action *)newmem;
  98493. + file_actions->__allocated = newalloc;
  98494. + return 0;
  98495. +}
  98496. diff -Nur uClibc-0.9.33.2/librt/spawn_int.h uClibc/librt/spawn_int.h
  98497. --- uClibc-0.9.33.2/librt/spawn_int.h 1970-01-01 01:00:00.000000000 +0100
  98498. +++ uClibc/librt/spawn_int.h 2014-02-03 12:32:57.000000000 +0100
  98499. @@ -0,0 +1,35 @@
  98500. +/* Data structure to contain the action information. */
  98501. +struct __spawn_action {
  98502. + enum {
  98503. + spawn_do_close,
  98504. + spawn_do_dup2,
  98505. + spawn_do_open
  98506. + } tag;
  98507. +
  98508. + union {
  98509. + struct {
  98510. + int fd;
  98511. + } close_action;
  98512. + struct {
  98513. + int fd;
  98514. + int newfd;
  98515. + } dup2_action;
  98516. + struct {
  98517. + int fd;
  98518. + const char *path;
  98519. + int oflag;
  98520. + mode_t mode;
  98521. + } open_action;
  98522. + } action;
  98523. +};
  98524. +
  98525. +int __posix_spawn_file_actions_realloc(posix_spawn_file_actions_t *fa);
  98526. +
  98527. +/* handle !LFS */
  98528. +#ifndef __UCLIBC_HAS_LFS__
  98529. +# define rlimit64 rlimit
  98530. +# define getrlimit64 getrlimit
  98531. +#endif
  98532. +#ifndef O_LARGEFILE
  98533. +# define O_LARGEFILE 0
  98534. +#endif
  98535. diff -Nur uClibc-0.9.33.2/librt/timer_create.c uClibc/librt/timer_create.c
  98536. --- uClibc-0.9.33.2/librt/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  98537. +++ uClibc/librt/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  98538. @@ -2,6 +2,7 @@
  98539. * timer_create.c - create a per-process timer.
  98540. */
  98541. +#include <stddef.h>
  98542. #include <errno.h>
  98543. #include <signal.h>
  98544. #include <stdlib.h>
  98545. @@ -13,10 +14,6 @@
  98546. #ifdef __NR_timer_create
  98547. -#ifndef offsetof
  98548. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  98549. -#endif
  98550. -
  98551. #define __NR___syscall_timer_create __NR_timer_create
  98552. static __inline__ _syscall3(int, __syscall_timer_create, clockid_t, clock_id,
  98553. struct sigevent *, evp, kernel_timer_t *, ktimerid);
  98554. diff -Nur uClibc-0.9.33.2/libubacktrace/arm/backtrace.c uClibc/libubacktrace/arm/backtrace.c
  98555. --- uClibc-0.9.33.2/libubacktrace/arm/backtrace.c 2012-05-15 09:20:09.000000000 +0200
  98556. +++ uClibc/libubacktrace/arm/backtrace.c 2014-02-03 12:32:57.000000000 +0100
  98557. @@ -12,6 +12,7 @@
  98558. *
  98559. */
  98560. +#include <libgcc_s.h>
  98561. #include <execinfo.h>
  98562. #include <dlfcn.h>
  98563. #include <stdlib.h>
  98564. @@ -25,6 +26,7 @@
  98565. int cnt, size;
  98566. };
  98567. +#ifdef SHARED
  98568. static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
  98569. static _Unwind_VRS_Result (*unwind_vrs_get) (_Unwind_Context *,
  98570. _Unwind_VRS_RegClass,
  98571. @@ -34,14 +36,18 @@
  98572. static void backtrace_init (void)
  98573. {
  98574. - void *handle = dlopen ("libgcc_s.so.1", RTLD_LAZY);
  98575. + void *handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
  98576. if (handle == NULL
  98577. || ((unwind_backtrace = dlsym (handle, "_Unwind_Backtrace")) == NULL)
  98578. || ((unwind_vrs_get = dlsym (handle, "_Unwind_VRS_Get")) == NULL)) {
  98579. - printf("libgcc_s.so.1 must be installed for backtrace to work\n");
  98580. + printf(LIBGCC_S_SO " must be installed for backtrace to work\n");
  98581. abort();
  98582. }
  98583. }
  98584. +#else
  98585. +# define unwind_backtrace _Unwind_Backtrace
  98586. +# define unwind_vrs_get _Unwind_VRS_Get
  98587. +#endif
  98588. /* This function is identical to "_Unwind_GetGR", except that it uses
  98589. "unwind_vrs_get" instead of "_Unwind_VRS_Get". */
  98590. static inline _Unwind_Word
  98591. @@ -62,7 +68,7 @@
  98592. {
  98593. struct trace_arg *arg = a;
  98594. - assert (unwind_getip != NULL);
  98595. + assert (unwind_getip(ctx) != NULL);
  98596. /* We are first called with address in the __backtrace function. Skip it. */
  98597. if (arg->cnt != -1)
  98598. @@ -80,8 +86,10 @@
  98599. {
  98600. struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
  98601. +#ifdef SHARED
  98602. if (unwind_backtrace == NULL)
  98603. backtrace_init();
  98604. +#endif
  98605. if (size >= 1)
  98606. unwind_backtrace (backtrace_helper, &arg);
  98607. diff -Nur uClibc-0.9.33.2/libubacktrace/arm/Makefile.arch uClibc/libubacktrace/arm/Makefile.arch
  98608. --- uClibc-0.9.33.2/libubacktrace/arm/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  98609. +++ uClibc/libubacktrace/arm/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  98610. @@ -14,4 +14,4 @@
  98611. else
  98612. libubacktrace-a-y+=$(libubacktrace_ARCH_OBJS)
  98613. endif
  98614. -libubacktrace-so-y+=$(libubacktrace_ARCH_OBJS:.o=.os)
  98615. +libubacktrace-so-y+=$(libubacktrace_ARCH_OBJS:.o=.oS)
  98616. diff -Nur uClibc-0.9.33.2/libubacktrace/backtrace.c uClibc/libubacktrace/backtrace.c
  98617. --- uClibc-0.9.33.2/libubacktrace/backtrace.c 2012-05-15 09:20:09.000000000 +0200
  98618. +++ uClibc/libubacktrace/backtrace.c 2014-02-03 12:32:57.000000000 +0100
  98619. @@ -20,6 +20,7 @@
  98620. *
  98621. */
  98622. +#include <libgcc_s.h>
  98623. #include <execinfo.h>
  98624. #include <dlfcn.h>
  98625. #include <stdlib.h>
  98626. @@ -33,20 +34,25 @@
  98627. int cnt, size;
  98628. };
  98629. +#ifdef SHARED
  98630. static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
  98631. static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *);
  98632. static void backtrace_init (void)
  98633. {
  98634. - void *handle = dlopen ("libgcc_s.so.1", RTLD_LAZY);
  98635. + void *handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
  98636. if (handle == NULL
  98637. || ((unwind_backtrace = dlsym (handle, "_Unwind_Backtrace")) == NULL)
  98638. || ((unwind_getip = dlsym (handle, "_Unwind_GetIP")) == NULL)) {
  98639. - printf("libgcc_s.so.1 must be installed for backtrace to work\n");
  98640. + printf(LIBGCC_S_SO " must be installed for backtrace to work\n");
  98641. abort();
  98642. }
  98643. }
  98644. +#else
  98645. +# define unwind_backtrace _Unwind_Backtrace
  98646. +# define unwind_getip _Unwind_GetIP
  98647. +#endif
  98648. static _Unwind_Reason_Code
  98649. backtrace_helper (struct _Unwind_Context *ctx, void *a)
  98650. @@ -71,8 +77,10 @@
  98651. {
  98652. struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
  98653. +#ifdef SHARED
  98654. if (unwind_backtrace == NULL)
  98655. backtrace_init();
  98656. +#endif
  98657. if (size >= 1)
  98658. unwind_backtrace (backtrace_helper, &arg);
  98659. diff -Nur uClibc-0.9.33.2/libubacktrace/backtracesyms.c uClibc/libubacktrace/backtracesyms.c
  98660. --- uClibc-0.9.33.2/libubacktrace/backtracesyms.c 2012-05-15 09:20:09.000000000 +0200
  98661. +++ uClibc/libubacktrace/backtracesyms.c 2014-02-03 12:32:57.000000000 +0100
  98662. @@ -14,9 +14,8 @@
  98663. Lesser General Public License for more details.
  98664. You should have received a copy of the GNU Lesser General Public
  98665. - License along with the GNU C Library; if not, write to the Free
  98666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98667. - 02111-1307 USA.
  98668. + License along with the GNU C Library; see the file COPYING.LIB. If
  98669. + not, see <http://www.gnu.org/licenses/>.
  98670. Based on glibc/sysdeps/generic/elf/backtracesyms.c
  98671. diff -Nur uClibc-0.9.33.2/libubacktrace/backtracesymsfd.c uClibc/libubacktrace/backtracesymsfd.c
  98672. --- uClibc-0.9.33.2/libubacktrace/backtracesymsfd.c 2012-05-15 09:20:09.000000000 +0200
  98673. +++ uClibc/libubacktrace/backtracesymsfd.c 2014-02-03 12:32:57.000000000 +0100
  98674. @@ -14,9 +14,8 @@
  98675. Lesser General Public License for more details.
  98676. You should have received a copy of the GNU Lesser General Public
  98677. - License along with the GNU C Library; if not, write to the Free
  98678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98679. - 02111-1307 USA.
  98680. + License along with the GNU C Library; see the file COPYING.LIB. If
  98681. + not, see <http://www.gnu.org/licenses/>.
  98682. Based on glibc/sysdeps/generic/elf/backtracesymsfd.c
  98683. diff -Nur uClibc-0.9.33.2/libubacktrace/Makefile.in uClibc/libubacktrace/Makefile.in
  98684. --- uClibc-0.9.33.2/libubacktrace/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  98685. +++ uClibc/libubacktrace/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  98686. @@ -25,11 +25,13 @@
  98687. -include $(libubacktrace_ARCH_DIR)/Makefile.arch
  98688. libubacktrace_SRC-y :=
  98689. -libubacktrace_SRC-$(UCLIBC_HAS_BACKTRACE) := backtrace.c backtracesyms.c backtracesymsfd.c
  98690. +libubacktrace_SRC-$(UCLIBC_HAS_BACKTRACE) := backtracesyms.c backtracesymsfd.c
  98691. +libubacktrace_SRC_SHARED-$(UCLIBC_HAS_BACKTRACE) := backtrace.c
  98692. # remove generic sources, if arch specific version is present
  98693. ifneq ($(strip $(libubacktrace_ARCH_SRC-y)),)
  98694. libubacktrace_SRC-y := $(filter-out $(notdir $(libubacktrace_ARCH_SRC-y)),$(libubacktrace_SRC-y))
  98695. +libubacktrace_SRC_SHARED-y := $(filter-out $(notdir $(libubacktrace_ARCH_SRC-y)),$(libubacktrace_SRC_SHARED-y))
  98696. endif
  98697. # -fasynchronous-unwind-tables is required for backtrace to work using dwarf2
  98698. @@ -43,12 +45,19 @@
  98699. libubacktrace_SRCS := $(patsubst %.c,$(libubacktrace_DIR)/%.c,$(libubacktrace_SRC-y))
  98700. libubacktrace_OBJS := $(patsubst $(libubacktrace_DIR)/%.c,$(libubacktrace_OUT)/%.o,$(libubacktrace_SRCS))
  98701. +libubacktrace_SHARED_SRCS := $(patsubst %.c,$(libubacktrace_DIR)/%.c,$(libubacktrace_SRC_SHARED-y))
  98702. +libubacktrace_SHARED_OBJS := $(patsubst $(libubacktrace_DIR)/%.c,$(libubacktrace_OUT)/%.o,$(libubacktrace_SHARED_SRCS))
  98703. +
  98704. +libubacktrace-shared-y := $(libubacktrace_SHARED_OBJS:.o=.oS)
  98705. +libubacktrace-static-y := $(libubacktrace_SHARED_OBJS)
  98706. +
  98707. ifeq ($(DOPIC),y)
  98708. -libubacktrace-a-y += $(libubacktrace_OBJS:.o=.os)
  98709. +libubacktrace-a-y += $(libubacktrace_OBJS:.o=.os) $(libubacktrace-static-y:.o=.os)
  98710. else
  98711. -libubacktrace-a-y += $(libubacktrace_OBJS)
  98712. +libubacktrace-a-y += $(libubacktrace_OBJS) $(libubacktrace-static-y)
  98713. endif
  98714. -libubacktrace-so-y += $(libubacktrace_OBJS:.o=.os)
  98715. +libubacktrace-so-y += $(libubacktrace_OBJS:.o=.os) $(libubacktrace-shared-y)
  98716. +
  98717. lib-a-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.a
  98718. lib-so-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.so
  98719. @@ -56,11 +65,7 @@
  98720. objclean-y += CLEAN_libubacktrace
  98721. ifeq ($(DOMULTI),n)
  98722. -ifeq ($(DOPIC),y)
  98723. -$(top_builddir)lib/libubacktrace.so: $(top_builddir)lib/libubacktrace.a $(libdl.depend)
  98724. -else
  98725. $(top_builddir)lib/libubacktrace.so: $(libubacktrace_OUT)/libubacktrace_so.a $(libdl.depend)
  98726. -endif
  98727. $(call link.so,$(libubacktrace_FULL_NAME),$(ABI_VERSION))
  98728. else
  98729. $(top_builddir)lib/libubacktrace.so: $(libubacktrace_OUT)/libubacktrace.oS | $(libdl.depend)
  98730. @@ -71,7 +76,7 @@
  98731. $(Q)$(RM) $@
  98732. $(do_ar)
  98733. -$(libubacktrace_OUT)/libubacktrace.oS: $(libubacktrace_SRCS) $(libubacktrace_ARCH_SRCS)
  98734. +$(libubacktrace_OUT)/libubacktrace.oS: $(libubacktrace_SRCS) $(libubacktrace_ARCH_SRCS) $(libubacktrace_SHARED_SRCS)
  98735. $(Q)$(RM) $@
  98736. $(compile-m)
  98737. diff -Nur uClibc-0.9.33.2/libutil/forkpty.c uClibc/libutil/forkpty.c
  98738. --- uClibc-0.9.33.2/libutil/forkpty.c 2012-05-15 09:20:09.000000000 +0200
  98739. +++ uClibc/libutil/forkpty.c 2014-02-03 12:32:57.000000000 +0100
  98740. @@ -13,9 +13,8 @@
  98741. Lesser General Public License for more details.
  98742. You should have received a copy of the GNU Lesser General Public
  98743. - License along with the GNU C Library; if not, write to the Free
  98744. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98745. - 02111-1307 USA. */
  98746. + License along with the GNU C Library; if not, see
  98747. + <http://www.gnu.org/licenses/>. */
  98748. #include <sys/types.h>
  98749. #include <termios.h>
  98750. diff -Nur uClibc-0.9.33.2/libutil/logout.c uClibc/libutil/logout.c
  98751. --- uClibc-0.9.33.2/libutil/logout.c 2012-05-15 09:20:09.000000000 +0200
  98752. +++ uClibc/libutil/logout.c 2014-02-03 12:32:57.000000000 +0100
  98753. @@ -13,9 +13,8 @@
  98754. Lesser General Public License for more details.
  98755. You should have received a copy of the GNU Lesser General Public
  98756. - License along with the GNU C Library; if not, write to the Free
  98757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98758. - 02111-1307 USA. */
  98759. + License along with the GNU C Library; if not, see
  98760. + <http://www.gnu.org/licenses/>. */
  98761. #include <errno.h>
  98762. #include <string.h>
  98763. diff -Nur uClibc-0.9.33.2/libutil/openpty.c uClibc/libutil/openpty.c
  98764. --- uClibc-0.9.33.2/libutil/openpty.c 2012-05-15 09:20:09.000000000 +0200
  98765. +++ uClibc/libutil/openpty.c 2014-02-03 12:32:57.000000000 +0100
  98766. @@ -13,9 +13,8 @@
  98767. Lesser General Public License for more details.
  98768. You should have received a copy of the GNU Lesser General Public
  98769. - License along with the GNU C Library; if not, write to the Free
  98770. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98771. - 02111-1307 USA. */
  98772. + License along with the GNU C Library; if not, see
  98773. + <http://www.gnu.org/licenses/>. */
  98774. #include <errno.h>
  98775. #include <fcntl.h>
  98776. diff -Nur uClibc-0.9.33.2/Makefile.help uClibc/Makefile.help
  98777. --- uClibc-0.9.33.2/Makefile.help 2012-05-15 09:20:09.000000000 +0200
  98778. +++ uClibc/Makefile.help 2014-02-03 12:32:56.000000000 +0100
  98779. @@ -27,6 +27,7 @@
  98780. @echo ' menuconfig - interactive curses-based configurator'
  98781. @echo ' oldconfig - resolve any unresolved symbols in .config'
  98782. @echo ' silentoldconfig - resolve any unresolved symbols in .config, silently'
  98783. + @echo ' savedefconfig - Save current config (minimal config)'
  98784. @echo ' randconfig - generate a random .config'
  98785. @$(if $(arch-defconfigs), \
  98786. @echo ''; \
  98787. @@ -58,7 +59,7 @@
  98788. @echo ' ARCH= - Use given arch for config targets'
  98789. @echo ' SHELL= - Shell to use for make'
  98790. @echo ' BUILD_CFLAGS= - extra CFLAGS for compiling host binaries'
  98791. - @echo ' BUILD_LFLAGS= - extra LDFLAGS for linking host binaries'
  98792. + @echo ' BUILD_LDFLAGS= - extra LDFLAGS for linking host binaries'
  98793. @echo ' CONFIG_SHELL= - Shell to use for menuconfig'
  98794. @echo
  98795. @echo ' PREFIX= - Prepended prefix'
  98796. diff -Nur uClibc-0.9.33.2/Makefile.in uClibc/Makefile.in
  98797. --- uClibc-0.9.33.2/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  98798. +++ uClibc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  98799. @@ -8,18 +8,8 @@
  98800. #--------------------------------------------------------------
  98801. # You shouldn't need to mess with anything beyond this point...
  98802. #--------------------------------------------------------------
  98803. -clean_targets := clean realclean distclean \
  98804. - objclean-y headers_clean-y CLEAN_utils
  98805. -noconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \
  98806. - defconfig allyesconfig allnoconfig \
  98807. - release dist tags help
  98808. -
  98809. include $(top_srcdir)Rules.mak
  98810. sub_headers := headers
  98811. -ifndef KCONFIG_CONFIG
  98812. -KCONFIG_CONFIG := $(top_builddir).config
  98813. -endif
  98814. -export KCONFIG_CONFIG
  98815. ifeq ($(HAVE_DOT_CONFIG),y)
  98816. @@ -56,6 +46,7 @@
  98817. conf := $(top_builddir)extra/config/conf
  98818. mconf := $(top_builddir)extra/config/mconf
  98819. +nconf := $(top_builddir)extra/config/nconf
  98820. ifeq ($(HAVE_DOT_CONFIG),y)
  98821. # If the .config changes then we have to make sure that our includes are
  98822. @@ -63,9 +54,9 @@
  98823. # have uClibc_config.h as prerequisite but since we _symlink_ the headers
  98824. # and do not (?) want to rely on 'make -L' we better update them right here,
  98825. # on spot to save us from alot of hazzle.
  98826. -$(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
  98827. +$(top_builddir)include/bits/uClibc_config.h: $(conf) $(KCONFIG_CONFIG) $(top_srcdir)extra/scripts/conf-header.sh | $(top_builddir)include/bits
  98828. @$(disp_gen)
  98829. - $(Q)@$< -s $(top_srcdir)extra/Configs/Config.in
  98830. + $(Q)$< -s $(Kconfig)
  98831. $(Q)$(top_srcdir)extra/scripts/conf-header.sh $(KCONFIG_CONFIG) > $@
  98832. $(Q)$(MAKE) headers-y
  98833. @@ -76,6 +67,10 @@
  98834. $(top_builddir)include/config/linuxthreads/old.h $(top_builddir)include/config/linuxthreads/new.h:
  98835. @true
  98836. +$(top_builddir)include/generated/unifdef_config.h: $(top_builddir)include/bits/uClibc_config.h | $(top_builddir)include/generated
  98837. + @$(disp_gen)
  98838. + $(Q)$(SED) -e '1,3d' $^ > $@
  98839. +
  98840. # For the moment, we have to keep re-running this target
  98841. # because the fix includes scripts rely on pre-processers
  98842. # in order to generate the headers correctly :(. That
  98843. @@ -87,11 +82,21 @@
  98844. export header_extra_args = -n
  98845. endif
  98846. HEADERS_BITS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/bits/*.h))
  98847. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98848. +HEADERS_BITS_COMMON_NO_LEGACY := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common-generic/bits/*.h))
  98849. +HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_COMMON_NO_LEGACY),$(HEADERS_BITS_COMMON))
  98850. +ALL_HEADERS_BITS_COMMON_NO_LEGACY := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON_NO_LEGACY))
  98851. +endif
  98852. +
  98853. HEADERS_BITS_ARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h))
  98854. HEADERS_BITS_SUBARCH :=
  98855. ifneq ($(TARGET_SUBARCH),)
  98856. HEADERS_BITS_SUBARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/*.h))
  98857. endif
  98858. +ifneq ($(HEADERS_BITS_PTHREAD),)
  98859. +HEADERS_BITS_ARCH := $(filter-out $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_ARCH))
  98860. +HEADERS_BITS_SUBARCH:= $(filter-out $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_SUBARCH))
  98861. +endif
  98862. HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_ARCH) $(HEADERS_BITS_SUBARCH) $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_COMMON))
  98863. HEADERS_SYS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/sys/*.h))
  98864. @@ -99,8 +104,11 @@
  98865. HEADERS_SYS_COMMON := $(filter-out $(HEADERS_SYS_ARCH),$(HEADERS_SYS_COMMON))
  98866. ALL_HEADERS_COMMON := $(top_builddir)include/fpu_control.h \
  98867. + $(top_builddir)include/jmpbuf-offsets.h \
  98868. + $(top_builddir)include/jmpbuf-unwind.h \
  98869. $(top_builddir)include/dl-osinfo.h \
  98870. - $(top_builddir)include/hp-timing.h
  98871. + $(top_builddir)include/hp-timing.h \
  98872. + $(top_builddir)include/not-cancel.h
  98873. ALL_HEADERS_BITS_COMMON := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON))
  98874. ALL_HEADERS_BITS_ARCH := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_ARCH))
  98875. ifneq ($(TARGET_SUBARCH),)
  98876. @@ -120,13 +128,17 @@
  98877. $(ALL_HEADERS_SYS_ARCH) \
  98878. $(ALL_HEADERS_BITS_PTHREAD)
  98879. -$(top_builddir)include/fpu_control.h:
  98880. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98881. + target-headers-sysdep += $(ALL_HEADERS_BITS_COMMON_NO_LEGACY)
  98882. +endif
  98883. +
  98884. +$(top_builddir)include/fpu_control.h $(top_builddir)include/jmpbuf-offsets.h $(top_builddir)include/jmpbuf-unwind.h:
  98885. @$(disp_ln)
  98886. $(Q)[ -r $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) ] && \
  98887. $(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ || \
  98888. $(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
  98889. -$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h:
  98890. +$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h $(top_builddir)include/not-cancel.h:
  98891. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
  98892. $(ALL_HEADERS_BITS_COMMON):
  98893. @@ -135,6 +147,11 @@
  98894. $(ALL_HEADERS_BITS_ARCH):
  98895. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(@F) $@
  98896. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98897. +$(ALL_HEADERS_BITS_COMMON_NO_LEGACY):
  98898. + $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common-generic/bits/$(@F) $@
  98899. +endif
  98900. +
  98901. ifneq ($(TARGET_SUBARCH),)
  98902. $(ALL_HEADERS_BITS_SUBARCH):
  98903. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/$(@F) $@
  98904. @@ -155,6 +172,9 @@
  98905. HEADERCLEAN_common:
  98906. $(do_rm) $(ALL_HEADERS_COMMON)
  98907. headers_clean-y += HEADERCLEAN_common
  98908. +HEADERCLEAN_config:
  98909. + $(do_rm) -r $(addprefix $(top_builddir)include/,config generated)
  98910. +menuconfig-clean-y: HEADERCLEAN_config
  98911. # The headers. Arch specific headers are specified via ARCH_HEADERS in
  98912. # libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
  98913. @@ -170,27 +190,22 @@
  98914. $(top_builddir)include/bits/sysnum.h: $(top_srcdir)extra/scripts/gen_bits_syscall_h.sh | $(top_builddir)include/bits
  98915. @$(disp_gen)
  98916. $(Q)set -e; \
  98917. - tmp=`mktemp $(top_builddir)include/bits/sysnum.h.XXXXXX 2>/dev/null || true`; \
  98918. - [ -z "$$tmp" ] && tmp='$(top_builddir)include/bits/sysnum.h.new'; \
  98919. - KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir="$(top_builddir)" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $$tmp; \
  98920. - if cmp $(top_builddir)include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \
  98921. - $(RM) $$tmp; \
  98922. - else \
  98923. - mv -f $$tmp $(top_builddir)include/bits/sysnum.h; \
  98924. - fi
  98925. + KERNEL_HEADERS="${KERNEL_HEADERS}" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $@.new; \
  98926. + cmp -s $@ $@.new && $(RM) $@.new || mv -f $@.new $@
  98927. @# Ugly linux specific hack..
  98928. $(Q)if grep -q __NR_ $@; then true; else \
  98929. rm -f $@; \
  98930. echo "ERROR: Could not generate syscalls."; \
  98931. - echo "Make sure that you have proper kernel headers."; \
  98932. - echo "Your .config in KERNEL_HEADERS=\"\" was set to:"; \
  98933. + echo "Make sure that you have properly installed kernel headers."; \
  98934. + echo "Your .config KERNEL_HEADERS=\"\" was set to:"; \
  98935. echo "${KERNEL_HEADERS}"; \
  98936. exit 1; \
  98937. fi
  98938. .PHONY: $(LOCAL_INSTALL_PATH)
  98939. $(LOCAL_INSTALL_PATH):
  98940. - $(Q)$(MAKE) PREFIX=$(shell pwd)/$(LOCAL_INSTALL_PATH) RUNTIME_PREFIX=/ \
  98941. + $(Q)$(MAKE) PREFIX=$(LOCAL_INSTALL_PATH) \
  98942. + RUNTIME_PREFIX=/ \
  98943. DEVEL_PREFIX=/usr/ \
  98944. HOSTCC="$(HOSTCC)" \
  98945. install
  98946. @@ -210,16 +225,27 @@
  98947. # a "y" here means the feature is enabled and so we should *not* rm it.
  98948. # if the option expands to nothing though, we can punt the headers.
  98949. HEADERS_RM- := \
  98950. + config \
  98951. + generated \
  98952. + internal \
  98953. + cancel.h \
  98954. dl-osinfo.h \
  98955. + jmpbuf-offsets.h \
  98956. + jmpbuf-unwind.h \
  98957. hp-timing.h \
  98958. + not-cancel.h \
  98959. _lfs_64.h \
  98960. bits/uClibc_arch_features.h \
  98961. bits/kernel_sigaction.h \
  98962. bits/kernel_stat.h \
  98963. bits/kernel_types.h \
  98964. + bits/libc-lock.h \
  98965. + bits/stdio-lock.h \
  98966. bits/syscalls.h \
  98967. bits/syscalls-common.h \
  98968. bits/uClibc_fpmax.h \
  98969. + bits/uClibc_mutex.h \
  98970. + bits/uClibc_pthread.h \
  98971. bits/uClibc_uintmaxtostr.h \
  98972. bits/uClibc_uwchar.h \
  98973. bits/uClibc_va_copy.h \
  98974. @@ -259,18 +285,23 @@
  98975. HEADERS_RM-$(UCLIBC_HAS_REGEX) += regex.h regexp.h
  98976. HEADERS_RM-$(UCLIBC_HAS_RPC) += rpc
  98977. HEADERS_RM-$(UCLIBC_HAS_SHADOW) += shadow.h
  98978. -HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h
  98979. +HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h bits/socket_type.h
  98980. HEADERS_RM-$(UCLIBC_HAS_SYSLOG) += syslog.h sys/syslog.h bits/syslog*.h
  98981. HEADERS_RM-$(UCLIBC_HAS_THREADS) += *thread*.h semaphore.h \
  98982. bits/*thread*.h \
  98983. bits/initspin.h
  98984. HEADERS_RM-$(UCLIBC_HAS_THREADS_NATIVE) += atomic.h bits/atomic.h
  98985. +HEADERS_RM-$(UCLIBC_HAS_OBSTACK) += obstack.h
  98986. HEADERS_RM-$(UCLIBC_HAS_UTMPX) += bits/utmpx.h utmpx.h
  98987. HEADERS_RM-$(UCLIBC_HAS_WCHAR) += wchar.h wctype.h
  98988. HEADERS_RM-$(UCLIBC_HAS_WORDEXP) += wordexp.h
  98989. HEADERS_RM-$(UCLIBC_HAS_XATTR) += sys/xattr.h
  98990. HEADERS_RM-$(UCLIBC_HAS_XLOCALE) += xlocale.h
  98991. -HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += sys/eventfd.h sys/fsuid.h \
  98992. +HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += \
  98993. + sys/cachectl.h \
  98994. + bits/eventfd.h \
  98995. + sys/eventfd.h \
  98996. + sys/fsuid.h \
  98997. bits/inotify.h \
  98998. sys/inotify.h \
  98999. sys/kdaemon.h \
  99000. @@ -288,11 +319,13 @@
  99001. sys/sysinfo.h \
  99002. bits/timerfd.h \
  99003. sys/timerfd.h \
  99004. + sys/sysmips.h \
  99005. sys/vfs.h
  99006. HEADERS_RM-$(UCLIBC_SUPPORT_AI_ADDRCONFIG) += ifaddrs.h
  99007. HEADERS_RM-$(UCLIBC_SV4_DEPRECATED) += ustat.h sys/ustat.h bits/ustat.h
  99008. HEADERS_RM-$(UCLIBC_SUSV3_LEGACY) += sys/timeb.h regexp.h
  99009. HEADERS_RM-$(UCLIBC_SUSV4_LEGACY) += utime.h ucontext.h
  99010. +HEADERS_RM-$(UCLIBC_HAS_ADVANCED_REALTIME) += spawn.h
  99011. ifneq ($(findstring install,$(MAKECMDGOALS)),)
  99012. $(addprefix $(PREFIX)$(DEVEL_PREFIX),include $(MULTILIB_DIR)):
  99013. @@ -303,7 +336,9 @@
  99014. $(do_mkdir)
  99015. endif
  99016. endif
  99017. -install_headers: headers $(top_builddir)extra/scripts/unifdef | $(PREFIX)$(DEVEL_PREFIX)include
  99018. +
  99019. +
  99020. +install_headers: headers $(top_builddir)extra/scripts/unifdef $(top_builddir)include/generated/unifdef_config.h | $(PREFIX)$(DEVEL_PREFIX)include
  99021. @$(call disp_install,"include -> $(PREFIX)$(DEVEL_PREFIX)include")
  99022. $(Q)top_builddir=$(top_builddir) \
  99023. $(top_srcdir)extra/scripts/install_headers.sh \
  99024. @@ -346,12 +381,7 @@
  99025. else
  99026. -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
  99027. endif
  99028. -ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  99029. -# Add the AS_NEEDED entry for libubacktrace.so
  99030. - if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ; then \
  99031. - echo "GROUP ( $(UBACKTRACE_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
  99032. - fi
  99033. -endif
  99034. + echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so
  99035. ifeq ($(UCLIBC_HAS_THREADS),y)
  99036. ifneq ($(LINUXTHREADS_OLD),y)
  99037. ifeq ($(HARDWIRED_ABSPATH),y)
  99038. @@ -422,49 +452,55 @@
  99039. install_hostutils: hostutils
  99040. $(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" HOSTCC="$(HOSTCC)" DOTHOST=.host -C utils utils_install
  99041. -$(addprefix $(top_builddir),include include/bits include/sys include/config lib extra/config/lxdialog extra/locale extra/scripts $(subdirs)):
  99042. +$(addprefix $(top_builddir),include include/bits include/sys include/config include/generated lib extra/config/lxdialog extra/locale extra/scripts $(subdirs)):
  99043. $(do_mkdir)
  99044. # configuration
  99045. # ---------------------------------------------------------------------------
  99046. -$(conf) $(mconf): | $(top_builddir)include/config $(top_builddir)extra/config/lxdialog
  99047. +$(conf) $(mconf) $(nconf): | $(top_builddir)include/config $(top_builddir)include/generated $(top_builddir)extra/config/lxdialog
  99048. $(Q)$(MAKE) -C extra/config $(@F)
  99049. arch-defconfigs := $(notdir $(wildcard $(top_srcdir)extra/Configs/defconfigs/$(ARCH)/*_defconfig))
  99050. menuconfig: $(mconf)
  99051. - $(Q)$< extra/Configs/Config.in
  99052. -
  99053. + $(Q)$< $(Kconfig)
  99054. config: $(conf)
  99055. - $(Q)$< extra/Configs/Config.in
  99056. -
  99057. -oldconfig: $(conf)
  99058. - $(Q)$< -o extra/Configs/Config.in
  99059. + $(Q)$< $(Kconfig)
  99060. +nconfig: $(nconf)
  99061. + $(Q)$< $(Kconfig)
  99062. +oldaskconfig: $(conf)
  99063. + $(Q)$< -a $(Kconfig)
  99064. silentoldconfig: $(conf)
  99065. - $(Q)$< -s extra/Configs/Config.in
  99066. -
  99067. -randconfig: $(conf)
  99068. - $(Q)$< -r extra/Configs/Config.in
  99069. -
  99070. + $(Q)$< -s $(Kconfig)
  99071. +oldconfig: $(conf)
  99072. + $(Q)$< -o $(Kconfig)
  99073. +allnoconfig: $(conf)
  99074. + $(Q)$< -n $(Kconfig)
  99075. allyesconfig: $(conf)
  99076. - $(Q)$< -y extra/Configs/Config.in
  99077. + $(Q)$< -y $(Kconfig)
  99078. $(SED) -i -e "s/^DODEBUG=.*/# DODEBUG is not set/" \
  99079. -e "s/^DOASSERTS=.*/# DOASSERTS is not set/" \
  99080. -e "s/^SUPPORT_LD_DEBUG_EARLY=.*/# SUPPORT_LD_DEBUG_EARLY is not set/" \
  99081. -e "s/^SUPPORT_LD_DEBUG=.*/# SUPPORT_LD_DEBUG is not set/" \
  99082. -e "s/^UCLIBC_MJN3_ONLY=.*/# UCLIBC_MJN3_ONLY is not set/" \
  99083. $(KCONFIG_CONFIG)
  99084. - $(Q)$< -o extra/Configs/Config.in
  99085. -
  99086. -allnoconfig: $(conf)
  99087. - $(Q)$< -n extra/Configs/Config.in
  99088. -
  99089. -defconfig: $(conf)
  99090. - $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ extra/Configs/Config.in
  99091. + $(Q)$< -o $(Kconfig)
  99092. +alldefconfig: $(conf)
  99093. + $(Q)$< -A $(Kconfig)
  99094. +randconfig: $(conf)
  99095. + $(Q)$< -r $(Kconfig)
  99096. -%_defconfig: $(conf)
  99097. - $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ extra/Configs/Config.in
  99098. +cmd_defconfig = $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ $(Kconfig)
  99099. +defconfig: $(conf) ; $(cmd_defconfig)
  99100. +%_defconfig: $(conf) ; $(cmd_defconfig)
  99101. +
  99102. +savedefconfig: $(conf)
  99103. + $(Q)$< -S defconfig $(Kconfig)
  99104. +listnewconfig: $(conf)
  99105. + $(Q)$< -l $(Kconfig)
  99106. +olddefconfig: $(conf)
  99107. + $(Q)$< -d $(Kconfig)
  99108. menuconfig-clean-y:
  99109. $(Q)$(MAKE) -C extra/config CLEAN_extra/config
  99110. @@ -484,11 +520,11 @@
  99111. $(Q)$(RM) $(top_builddir)extra/scripts/unifdef
  99112. $(Q)$(RM) -r $(LOCAL_INSTALL_PATH)
  99113. -distclean: clean
  99114. +distclean: realclean
  99115. -find . \( -name core -o -name \*.orig -o -name \*~ -o -name .\*.dep \) -exec $(RM) {} \;
  99116. $(RM) $(top_builddir).config $(top_builddir).config.old $(top_builddir).config.cmd
  99117. - $(RM) $(top_builddir)extra/locale/*.tgz
  99118. - $(MAKE) -C extra/config distclean
  99119. + $(Q)$(RM) $(top_builddir)extra/locale/*.tgz
  99120. + @$(MAKE) -C extra/config distclean
  99121. dist release:
  99122. $(RM) ../uClibc-$(VERSION).tar
  99123. @@ -499,7 +535,9 @@
  99124. du -b ../uClibc-$(VERSION).tar.{bz2,xz}
  99125. test check: test_compile
  99126. - $(Q)$(MAKE) -C test
  99127. + $(Q)$(MAKE) -C test \
  99128. + $(if $(O),top_builddir=$(O)/)
  99129. test_compile: $(LOCAL_INSTALL_PATH)
  99130. - $(Q)$(MAKE) -C test compile
  99131. + $(Q)$(MAKE) -C test compile \
  99132. + $(if $(O),top_builddir=$(O)/)
  99133. diff -Nur uClibc-0.9.33.2/Makerules uClibc/Makerules
  99134. --- uClibc-0.9.33.2/Makerules 2012-05-15 09:20:09.000000000 +0200
  99135. +++ uClibc/Makerules 2014-02-03 12:32:56.000000000 +0100
  99136. @@ -50,6 +50,10 @@
  99137. endif
  99138. $(shared_objs) $(ar_objs): | $(sub_headers)
  99139. +define objects_with_syms
  99140. + $(foreach o,$(2),$(if $(shell $(NM) $(1) $(o) | grep .),$(o)))
  99141. +endef
  99142. +
  99143. headers-y: $(headers-y)
  99144. @true
  99145. @@ -243,7 +247,7 @@
  99146. cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach d,$(^:$(top_srcdir)=),$(collect_multi_flags)))
  99147. cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
  99148. cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@
  99149. -cmd_ar = $(AR) $(ARFLAGS) $@ $^
  99150. +cmd_ar = $(AR) $(ARFLAGS) $@ $(call objects_with_syms,,$^)
  99151. define do_ln
  99152. @$(disp_ln)
  99153. @@ -300,7 +304,7 @@
  99154. -Wl,-z,relro -Wl,--hash-style=gnu -Wl,-z,defs \
  99155. -Wl,--verbose 2>&1 | LC_ALL=C \
  99156. sed -e '/^=========/,/^=========/!d;/^=========/d' \
  99157. - -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' > $@.lds
  99158. + -e 's/\. = .* + SIZEOF_HEADERS;/& $(SYMBOL_PREFIX)_begin = . - SIZEOF_HEADERS;/' > $@.lds
  99159. endef
  99160. define link.so
  99161. @@ -373,14 +377,9 @@
  99162. $(top_builddir)lib/interp.c: | $(top_builddir)lib
  99163. $(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@.tmp
  99164. $(Q)echo "#include <features.h>" >> $@.tmp
  99165. -ifeq ($(HARDWIRED_ABSPATH),y)
  99166. $(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
  99167. "(\".interp\"))) =\""$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO)"\";" >> $@.tmp
  99168. $(Q)$(SED) -i -e 's://:/:g' $@.tmp
  99169. -else
  99170. - $(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
  99171. - "(\".interp\"))) =\""$(UCLIBC_LDSO)"\";" >> $@.tmp
  99172. -endif
  99173. $(Q)mv $@.tmp $@
  99174. $(interp): $(top_builddir)lib/interp.c | $(sub_headers)
  99175. @@ -470,6 +469,8 @@
  99176. $(libm-a-y) $(libm-so-y) \
  99177. $(libpthread-a-y) $(libpthread-so-y) $(libpthread-nonshared-y) \
  99178. $(libthread_db-a-y) $(libthread_db-so-y) $(libpthread-generated-y) \
  99179. + $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) \
  99180. + $(PTHREAD_INITFINI:.c=.s) \
  99181. $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \
  99182. $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \
  99183. $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y) \
  99184. diff -Nur uClibc-0.9.33.2/Rules.mak uClibc/Rules.mak
  99185. --- uClibc-0.9.33.2/Rules.mak 2012-05-15 09:20:09.000000000 +0200
  99186. +++ uClibc/Rules.mak 2014-02-15 14:18:15.000000000 +0100
  99187. @@ -27,6 +27,15 @@
  99188. # file named ".config". Don't mess with this file unless
  99189. # you know what you are doing.
  99190. +clean_targets := clean realclean distclean \
  99191. + objclean-y headers_clean-y CLEAN_utils
  99192. +noconfig_targets := menuconfig config nconfig \
  99193. + oldaskconfig silentoldconfig oldconfig allnoconfig allyesconfig \
  99194. + alldefconfig randconfig defconfig savedefconfig listnewconfig \
  99195. + olddefconfig \
  99196. + xconfig gconfig update-po-config mconf qconf gconf nconf conf \
  99197. + release dist tags help
  99198. +
  99199. #-----------------------------------------------------------
  99200. # If you are running a cross compiler, you will want to set
  99201. @@ -63,7 +72,7 @@
  99202. # Select the compiler needed to build binaries for your development system
  99203. HOSTCC = gcc
  99204. -BUILD_CFLAGS = -Os -Wall
  99205. +BUILD_CFLAGS = -Os
  99206. #---------------------------------------------------------
  99207. # Nothing beyond this point should ever be touched by mere
  99208. @@ -74,10 +83,25 @@
  99209. qstrip = $(strip $(subst ",,$(1)))
  99210. #"))
  99211. +# kconfig stuff
  99212. +KCONFIG_CONFIG ?= $(top_builddir).config
  99213. +KCONFIG_CONFIG := $(abspath $(KCONFIG_CONFIG))
  99214. +export KCONFIG_CONFIG
  99215. +KCONFIG_AUTOCONFIG := $(dir $(KCONFIG_CONFIG))include/config/auto.conf
  99216. +export KCONFIG_AUTOCONFIG
  99217. +KCONFIG_TRISTATE := $(dir $(KCONFIG_CONFIG))include/config/tristate.conf
  99218. +export KCONFIG_TRISTATE
  99219. +srctree := $(abspath $(top_srcdir))
  99220. +export srctree
  99221. +KCONFIG_AUTOHEADER := $(dir $(KCONFIG_CONFIG))include/generated/autoconf.h
  99222. +export KCONFIG_AUTOHEADER
  99223. +Kconfig := $(abspath $(top_srcdir)extra/Configs/Config.in)
  99224. +
  99225. # Pull in the user's uClibc configuration
  99226. -ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
  99227. --include $(top_builddir).config
  99228. +ifeq ($(filter $(noconfig_targets) clean CLEAN_%,$(MAKECMDGOALS)),)
  99229. +-include $(KCONFIG_CONFIG)
  99230. endif
  99231. +
  99232. TARGET_ARCH:=$(call qstrip,$(TARGET_ARCH))
  99233. ifeq ($(TARGET_ARCH),)
  99234. ARCH ?= $(shell uname -m | $(SED) -e s/i.86/i386/ \
  99235. @@ -93,19 +117,20 @@
  99236. export ARCH
  99237. # Make certain these contain a final "/", but no "//"s.
  99238. -TARGET_SUBARCH:=$(call qstrip,$(TARGET_SUBARCH))
  99239. -RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(RUNTIME_PREFIX)))))
  99240. -DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(DEVEL_PREFIX)))))
  99241. -MULTILIB_DIR:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(MULTILIB_DIR)))))
  99242. -KERNEL_HEADERS:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(KERNEL_HEADERS)))))
  99243. +scrub_path = $(strip $(subst //,/, $(subst ,/, $(call qstrip,$(1)))))
  99244. +TARGET_SUBARCH := $(call qstrip,$(TARGET_SUBARCH))
  99245. +RUNTIME_PREFIX := $(call scrub_path,$(RUNTIME_PREFIX))
  99246. +DEVEL_PREFIX := $(call scrub_path,$(DEVEL_PREFIX))
  99247. +MULTILIB_DIR := $(call scrub_path,$(MULTILIB_DIR))
  99248. +KERNEL_HEADERS := $(call scrub_path,$(KERNEL_HEADERS))
  99249. export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
  99250. # Now config hard core
  99251. MAJOR_VERSION := 0
  99252. MINOR_VERSION := 9
  99253. -SUBLEVEL := 33
  99254. -EXTRAVERSION :=.2
  99255. +SUBLEVEL := 34
  99256. +EXTRAVERSION :=-git
  99257. VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
  99258. ABI_VERSION := $(MAJOR_VERSION)
  99259. ifneq ($(EXTRAVERSION),)
  99260. @@ -118,13 +143,19 @@
  99261. LIBC := libc
  99262. SHARED_LIBNAME := $(LIBC).so.$(ABI_VERSION)
  99263. UBACKTRACE_DSO := libubacktrace.so.$(ABI_VERSION)
  99264. -ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 mips64 powerpc64 s390x sparc64 x86_64 ),)
  99265. +
  99266. +UCLIBC_LDSO_NAME := ld-uClibc
  99267. +ARCH_NATIVE_BIT := 32
  99268. +ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 powerpc64 s390x sparc64 x86_64 ),)
  99269. UCLIBC_LDSO_NAME := ld64-uClibc
  99270. ARCH_NATIVE_BIT := 64
  99271. else
  99272. -UCLIBC_LDSO_NAME := ld-uClibc
  99273. -ARCH_NATIVE_BIT := 32
  99274. +ifeq ($(CONFIG_MIPS_N64_ABI),y)
  99275. +UCLIBC_LDSO_NAME := ld64-uClibc
  99276. +ARCH_NATIVE_BIT := 64
  99277. +endif
  99278. endif
  99279. +
  99280. UCLIBC_LDSO := $(UCLIBC_LDSO_NAME).so.$(ABI_VERSION)
  99281. NONSHARED_LIBNAME := uclibc_nonshared.a
  99282. libc := $(top_builddir)lib/$(SHARED_LIBNAME)
  99283. @@ -169,8 +200,9 @@
  99284. check_as=$(shell \
  99285. if $(CC) -Wa,$(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; \
  99286. then echo "-Wa,$(1)"; fi)
  99287. +# FIXME: filter -fuse-ld=% and pass that, too!!
  99288. check_ld=$(shell \
  99289. - if $(LD) $(1) -o /dev/null -b binary /dev/null > /dev/null 2>&1; \
  99290. + if $(CC) -Wl,$(1) $(CFLAG_-nostdlib) -o /dev/null -Wl,-b,binary /dev/null > /dev/null 2>&1; \
  99291. then echo "$(1)"; fi)
  99292. # Use variable indirection here so that we can have variable
  99293. @@ -221,6 +253,8 @@
  99294. ARFLAGS:=cr
  99295. +# Note: The check for -nostdlib has to be before all calls to check_ld
  99296. +$(eval $(call check-gcc-var,-nostdlib))
  99297. # Flags in OPTIMIZATION are used only for non-debug builds
  99298. @@ -246,6 +280,7 @@
  99299. GCC_MAJOR_VER ?= $(word 1,$(GCC_VER))
  99300. #GCC_MINOR_VER ?= $(word 2,$(GCC_VER))
  99301. +ifneq ($(TARGET_ARCH),arc)
  99302. ifeq ($(GCC_MAJOR_VER),4)
  99303. # shrinks code, results are from 4.0.2
  99304. # 0.36%
  99305. @@ -258,7 +293,7 @@
  99306. $(eval $(call check-gcc-var,-fno-strength-reduce))
  99307. OPTIMIZATION += $(CFLAG_-fno-strength-reduce)
  99308. endif
  99309. -
  99310. +endif
  99311. # CPU_CFLAGS-y contain options which are not warnings,
  99312. # not include or library paths, and not optimizations.
  99313. @@ -311,7 +346,9 @@
  99314. $(eval $(call check-gcc-var,-fomit-frame-pointer))
  99315. OPTIMIZATION += $(CFLAG_-fomit-frame-pointer)
  99316. -ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586)$(CONFIG_586MMX),y)
  99317. +ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586),y)
  99318. + # TODO: Change this to a gcc version check. This bug
  99319. + # should be fixed with at least gcc-4.3.
  99320. # Non-SSE capable processor.
  99321. # NB: this may make SSE insns segfault!
  99322. # -O1 -march=pentium3, -Os -msse etc are known to be affected.
  99323. @@ -330,18 +367,6 @@
  99324. # -falign-jumps: reachable only by a jump
  99325. # Generic: no alignment at all (smallest code)
  99326. GCC_FALIGN=$(call check_gcc,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,-malign-jumps=1 -malign-loops=1)
  99327. -ifeq ($(CONFIG_K7),y)
  99328. - # Align functions to four bytes, use default for jumps and loops (why?)
  99329. - GCC_FALIGN=$(call check_gcc,-falign-functions=4 -falign-labels=1,-malign-functions=4)
  99330. -endif
  99331. -ifeq ($(CONFIG_CRUSOE),y)
  99332. - # Use compiler's default for functions, jumps and loops (why?)
  99333. - GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
  99334. -endif
  99335. -ifeq ($(CONFIG_CYRIXIII),y)
  99336. - # Use compiler's default for functions, jumps and loops (why?)
  99337. - GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
  99338. -endif
  99339. OPTIMIZATION+=$(GCC_FALIGN)
  99340. # Putting each function and data object into its own section
  99341. @@ -366,22 +391,6 @@
  99342. CPU_LDFLAGS-y+=-m32
  99343. CPU_CFLAGS-y+=-m32
  99344. - CPU_CFLAGS-$(CONFIG_386)+=-march=i386
  99345. - CPU_CFLAGS-$(CONFIG_486)+=-march=i486
  99346. - CPU_CFLAGS-$(CONFIG_ELAN)+=-march=i486
  99347. - CPU_CFLAGS-$(CONFIG_586)+=-march=i586
  99348. - CPU_CFLAGS-$(CONFIG_586MMX)+=$(call check_gcc,-march=pentium-mmx,-march=i586)
  99349. - CPU_CFLAGS-$(CONFIG_686)+=-march=i686
  99350. - CPU_CFLAGS-$(CONFIG_PENTIUMII)+=$(call check_gcc,-march=pentium2,-march=i686)
  99351. - CPU_CFLAGS-$(CONFIG_PENTIUMIII)+=$(call check_gcc,-march=pentium3,-march=i686)
  99352. - CPU_CFLAGS-$(CONFIG_PENTIUM4)+=$(call check_gcc,-march=pentium4,-march=i686)
  99353. - CPU_CFLAGS-$(CONFIG_K6)+=$(call check_gcc,-march=k6,-march=i586)
  99354. - CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-march=i686)
  99355. - CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686
  99356. - CPU_CFLAGS-$(CONFIG_WINCHIPC6)+=$(call check_gcc,-march=winchip-c6,-march=i586)
  99357. - CPU_CFLAGS-$(CONFIG_WINCHIP2)+=$(call check_gcc,-march=winchip2,-march=i586)
  99358. - CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486)
  99359. - CPU_CFLAGS-$(CONFIG_NEHEMIAH)+=$(call check_gcc,-march=c3-2,-march=i686)
  99360. endif
  99361. ifeq ($(TARGET_ARCH),sparc)
  99362. @@ -397,6 +406,12 @@
  99363. CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb
  99364. endif
  99365. +ifeq ($(TARGET_ARCH),metag)
  99366. + SYMBOL_PREFIX=_
  99367. + CPU_CFLAGS-$(CONFIG_META_1_2)+=
  99368. + CPU_CFLAGS-$(CONFIG_META_2_1)+=-Wa,-mcpu=metac21
  99369. +endif
  99370. +
  99371. ifeq ($(TARGET_ARCH),mips)
  99372. OPTIMIZATION+=-mno-split-addresses
  99373. CPU_CFLAGS-$(CONFIG_MIPS_ISA_1)+=-mips1
  99374. @@ -406,6 +421,7 @@
  99375. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32
  99376. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32R2)+=-march=mips32r2 -mtune=mips32r2
  99377. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32
  99378. + CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64R2)+=-mips64r2 -mtune=mips64r2
  99379. ifeq ($(strip $(ARCH_BIG_ENDIAN)),y)
  99380. CPU_LDFLAGS-$(CONFIG_MIPS_N64_ABI)+=-Wl,-melf64btsmip
  99381. CPU_LDFLAGS-$(CONFIG_MIPS_O32_ABI)+=-Wl,-melf32btsmip
  99382. @@ -537,6 +553,12 @@
  99383. CPU_LDFLAGS-y += $(CPU_CFLAGS)
  99384. endif
  99385. +ifeq ($(TARGET_ARCH),arc)
  99386. + CPU_CFLAGS-y += -mlock -mswape
  99387. + CPU_CFLAGS-$(CONFIG_ARC_CPU_700) += -mA7
  99388. + CPU_LDFLAGS-y += $(CPU_CFLAGS) -marclinux
  99389. +endif
  99390. +
  99391. $(eval $(call check-gcc-var,$(PIEFLAG_NAME)))
  99392. PIEFLAG := $(CFLAG_$(PIEFLAG_NAME))
  99393. ifeq ($(PIEFLAG),)
  99394. @@ -546,11 +568,11 @@
  99395. # well as the LD PIE flag (below) because we can't rely on
  99396. # gcc passing -pie if we used -fPIE. We need to directly use -pie
  99397. # instead of -Wl,-pie as gcc picks up the wrong startfile/endfile
  99398. -$(eval $(call cache-output-var,LDPIEFLAG,$(LD) --help 2>/dev/null | grep -q -- -pie && echo "-pie"))
  99399. +$(eval $(call cache-output-var,LDPIEFLAG,$(CC) -Wl$(comma)--help 2>/dev/null | grep -q -- -pie && echo "-pie"))
  99400. # Check for --as-needed support in linker
  99401. ifndef LD_FLAG_ASNEEDED
  99402. -_LD_FLAG_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -- --as-needed)
  99403. +_LD_FLAG_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -- --as-needed)
  99404. ifneq ($(_LD_FLAG_ASNEEDED),)
  99405. export LD_FLAG_ASNEEDED:=--as-needed
  99406. endif
  99407. @@ -574,11 +596,18 @@
  99408. # Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it)
  99409. ifndef ASNEEDED
  99410. -export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)")
  99411. -ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  99412. +export ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)")
  99413. +
  99414. # Only used in installed libc.so linker script
  99415. -UBACKTRACE_FULL_NAME := $(RUNTIME_PREFIX)lib/$(UBACKTRACE_DSO)
  99416. -export UBACKTRACE_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UBACKTRACE_FULL_NAME) )" || echo "$(UBACKTRACE_FULL_NAME)")
  99417. +ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  99418. +ifeq ($(HARDWIRED_ABSPATH),y)
  99419. +UBACKTRACE_FULL_NAME := $(subst //,/,$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UBACKTRACE_DSO))
  99420. +else
  99421. +UBACKTRACE_FULL_NAME := $(UBACKTRACE_DSO)
  99422. +endif
  99423. +export UBACKTRACE_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && \
  99424. + echo "GROUP ( AS_NEEDED ( $(UBACKTRACE_FULL_NAME) ) )" || \
  99425. + echo "GROUP ( $(UBACKTRACE_FULL_NAME) )")
  99426. else
  99427. export UBACKTRACE_ASNEEDED:=""
  99428. endif
  99429. @@ -623,14 +652,17 @@
  99430. SSP_CFLAGS := $(SSP_DISABLE_FLAGS)
  99431. endif
  99432. -$(eval $(call check-gcc-var,-nostdlib))
  99433. -
  99434. # Collect all CFLAGS components
  99435. -CFLAGS := -include $(top_srcdir)include/libc-symbols.h \
  99436. - $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
  99437. - -nostdinc -I$(top_builddir)include -I$(top_srcdir)include -I. \
  99438. +CFLAGS := $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
  99439. + -nostdinc -I$(top_builddir)include \
  99440. + -I$(top_srcdir)include -include libc-symbols.h \
  99441. + -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \
  99442. -I$(top_srcdir)libc/sysdeps/linux \
  99443. - -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
  99444. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  99445. + -I$(top_srcdir)ldso/include -I.
  99446. +ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"")
  99447. +CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS))
  99448. +endif
  99449. # We need this to be checked within libc-symbols.h
  99450. ifneq ($(HAVE_SHARED),y)
  99451. @@ -720,7 +752,7 @@
  99452. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  99453. PTINC:= -I$(top_builddir)$(PTDIR) \
  99454. -I$(top_srcdir)$(PTDIR) \
  99455. - $(if $(TARGET_ARCH),-I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/$(TARGET_SUBARCH)) \
  99456. + $(if $(TARGET_SUBARCH),-I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/$(TARGET_SUBARCH)) \
  99457. -I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH) \
  99458. -I$(top_builddir)$(PTDIR)/sysdeps/$(TARGET_ARCH) \
  99459. -I$(top_srcdir)$(PTDIR)/sysdeps/$(TARGET_ARCH) \
  99460. @@ -728,9 +760,7 @@
  99461. -I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux \
  99462. -I$(top_srcdir)$(PTDIR)/sysdeps/pthread \
  99463. -I$(top_srcdir)$(PTDIR)/sysdeps/pthread/bits \
  99464. - -I$(top_srcdir)$(PTDIR)/sysdeps/generic \
  99465. - -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  99466. - -I$(top_srcdir)ldso/include
  99467. + -I$(top_srcdir)$(PTDIR)/sysdeps/generic
  99468. #
  99469. # Test for TLS if NPTL support was selected.
  99470. #
  99471. @@ -763,13 +793,14 @@
  99472. PTINC :=
  99473. endif
  99474. CFLAGS += -I$(top_srcdir)libc/sysdeps/linux/common
  99475. -CFLAGS += -I$(KERNEL_HEADERS)
  99476. #CFLAGS += -iwithprefix include-fixed -iwithprefix include
  99477. $(eval $(call cache-output-var,CC_IPREFIX,$(CC) -print-file-name=include))
  99478. CC_INC := -isystem $(dir $(CC_IPREFIX))include-fixed -isystem $(CC_IPREFIX)
  99479. CFLAGS += $(CC_INC)
  99480. +CFLAGS += -I$(KERNEL_HEADERS)
  99481. +
  99482. ifneq ($(DOASSERTS),y)
  99483. CFLAGS+=-DNDEBUG
  99484. endif
  99485. @@ -786,7 +817,11 @@
  99486. LIBGCC_CFLAGS ?= $(CFLAGS) $(CPU_CFLAGS-y)
  99487. $(eval $(call cache-output-var,LIBGCC,$(CC) $(LIBGCC_CFLAGS) -print-libgcc-file-name))
  99488. +$(eval $(call cache-output-var,LIBGCC_EH,$(CC) $(LIBGCC_CFLAGS) -print-file-name=libgcc_eh.a))
  99489. +# with -O0 we (e.g. lockf) might end up with references to
  99490. +# _Unwind_Resume, so pull in gcc_eh in this case..
  99491. LIBGCC_DIR:=$(dir $(LIBGCC))
  99492. +LIBGCC += $(if $(DODEBUG),$(LIBGCC_EH))
  99493. # moved from libpthread/linuxthreads
  99494. ifeq ($(UCLIBC_CTOR_DTOR),y)
  99495. @@ -794,4 +829,6 @@
  99496. SHARED_END_FILES:=$(LIBGCC_DIR)crtendS.o $(top_builddir)lib/crtn.o
  99497. endif
  99498. -LOCAL_INSTALL_PATH := install_dir
  99499. +LOCAL_INSTALL_PATH := $(if $(O),$(O)/)install_dir
  99500. +
  99501. +PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
  99502. diff -Nur uClibc-0.9.33.2/test/API/Makefile uClibc/test/API/Makefile
  99503. --- uClibc-0.9.33.2/test/API/Makefile 2012-05-15 09:20:09.000000000 +0200
  99504. +++ uClibc/test/API/Makefile 2014-02-03 12:32:57.000000000 +0100
  99505. @@ -2,6 +2,7 @@
  99506. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99507. top_builddir=../../
  99508. +top_srcdir=../../
  99509. include ../Rules.mak
  99510. -include Makefile.in
  99511. include ../Test.mak
  99512. diff -Nur uClibc-0.9.33.2/test/args/Makefile uClibc/test/args/Makefile
  99513. --- uClibc-0.9.33.2/test/args/Makefile 2012-05-15 09:20:09.000000000 +0200
  99514. +++ uClibc/test/args/Makefile 2014-02-03 12:32:57.000000000 +0100
  99515. @@ -2,6 +2,7 @@
  99516. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99517. top_builddir=../../
  99518. +top_srcdir=../../
  99519. include ../Rules.mak
  99520. -include Makefile.in
  99521. include ../Test.mak
  99522. diff -Nur uClibc-0.9.33.2/test/assert/Makefile uClibc/test/assert/Makefile
  99523. --- uClibc-0.9.33.2/test/assert/Makefile 2012-05-15 09:20:09.000000000 +0200
  99524. +++ uClibc/test/assert/Makefile 2014-02-03 12:32:57.000000000 +0100
  99525. @@ -2,6 +2,7 @@
  99526. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99527. top_builddir=../../
  99528. +top_srcdir=../../
  99529. include ../Rules.mak
  99530. -include Makefile.in
  99531. include ../Test.mak
  99532. diff -Nur uClibc-0.9.33.2/test/build/Makefile uClibc/test/build/Makefile
  99533. --- uClibc-0.9.33.2/test/build/Makefile 2012-05-15 09:20:09.000000000 +0200
  99534. +++ uClibc/test/build/Makefile 2014-02-03 12:32:57.000000000 +0100
  99535. @@ -2,6 +2,7 @@
  99536. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99537. top_builddir=../../
  99538. +top_srcdir=../../
  99539. include ../Rules.mak
  99540. -include Makefile.in
  99541. include ../Test.mak
  99542. diff -Nur uClibc-0.9.33.2/test/crypt/Makefile uClibc/test/crypt/Makefile
  99543. --- uClibc-0.9.33.2/test/crypt/Makefile 2012-05-15 09:20:09.000000000 +0200
  99544. +++ uClibc/test/crypt/Makefile 2014-02-03 12:32:57.000000000 +0100
  99545. @@ -2,6 +2,7 @@
  99546. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99547. top_builddir=../../
  99548. +top_srcdir=../../
  99549. include ../Rules.mak
  99550. -include Makefile.in
  99551. include ../Test.mak
  99552. diff -Nur uClibc-0.9.33.2/test/ctype/Makefile uClibc/test/ctype/Makefile
  99553. --- uClibc-0.9.33.2/test/ctype/Makefile 2012-05-15 09:20:09.000000000 +0200
  99554. +++ uClibc/test/ctype/Makefile 2014-02-03 12:32:57.000000000 +0100
  99555. @@ -2,6 +2,7 @@
  99556. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99557. top_builddir=../../
  99558. +top_srcdir=../../
  99559. include ../Rules.mak
  99560. -include Makefile.in
  99561. include ../Test.mak
  99562. diff -Nur uClibc-0.9.33.2/test/dlopen/libA.c uClibc/test/dlopen/libA.c
  99563. --- uClibc-0.9.33.2/test/dlopen/libA.c 1970-01-01 01:00:00.000000000 +0100
  99564. +++ uClibc/test/dlopen/libA.c 2014-02-03 12:32:57.000000000 +0100
  99565. @@ -0,0 +1,7 @@
  99566. +extern void libB_func(void);
  99567. +
  99568. +void libA_func(void);
  99569. +void libA_func(void)
  99570. +{
  99571. + libB_func();
  99572. +}
  99573. diff -Nur uClibc-0.9.33.2/test/dlopen/libB.c uClibc/test/dlopen/libB.c
  99574. --- uClibc-0.9.33.2/test/dlopen/libB.c 1970-01-01 01:00:00.000000000 +0100
  99575. +++ uClibc/test/dlopen/libB.c 2014-02-03 12:32:57.000000000 +0100
  99576. @@ -0,0 +1,7 @@
  99577. +extern void libC_func(void);
  99578. +
  99579. +void libB_func(void);
  99580. +void libB_func(void)
  99581. +{
  99582. + libC_func();
  99583. +}
  99584. diff -Nur uClibc-0.9.33.2/test/dlopen/libC.c uClibc/test/dlopen/libC.c
  99585. --- uClibc-0.9.33.2/test/dlopen/libC.c 1970-01-01 01:00:00.000000000 +0100
  99586. +++ uClibc/test/dlopen/libC.c 2014-02-03 12:32:57.000000000 +0100
  99587. @@ -0,0 +1,30 @@
  99588. +#include <dlfcn.h>
  99589. +#include <stdio.h>
  99590. +#include <stdlib.h>
  99591. +
  99592. +#define LIBNAME "libB.so"
  99593. +void _libC_fini(void);
  99594. +void _libC_fini(void)
  99595. +{
  99596. + printf("libC_fini():finish - atexit()\n");
  99597. +}
  99598. +
  99599. +void libC_fini(void);
  99600. +void libC_fini(void)
  99601. +{
  99602. + _libC_fini();
  99603. +}
  99604. +
  99605. +void libC_func(void);
  99606. +void libC_func(void)
  99607. +{
  99608. + void *libB;
  99609. +
  99610. + libB = dlopen(LIBNAME, RTLD_LAZY);
  99611. + if (!libB) {
  99612. + fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
  99613. + exit(1);
  99614. + }
  99615. +
  99616. + atexit(libC_fini);
  99617. +}
  99618. diff -Nur uClibc-0.9.33.2/test/dlopen/Makefile uClibc/test/dlopen/Makefile
  99619. --- uClibc-0.9.33.2/test/dlopen/Makefile 2012-05-15 09:20:09.000000000 +0200
  99620. +++ uClibc/test/dlopen/Makefile 2014-02-03 12:32:57.000000000 +0100
  99621. @@ -2,11 +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. -ifneq ($(HAVE_SHARED),y)
  99628. -TESTS_DISABLED := test3
  99629. -LDFLAGS_libtest.so := -lpthread
  99630. -endif
  99631. -
  99632. include ../Test.mak
  99633. diff -Nur uClibc-0.9.33.2/test/dlopen/Makefile.in uClibc/test/dlopen/Makefile.in
  99634. --- uClibc-0.9.33.2/test/dlopen/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  99635. +++ uClibc/test/dlopen/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  99636. @@ -4,7 +4,13 @@
  99637. # rules need a little love to work with glibc ...
  99638. export UCLIBC_ONLY := 1
  99639. -TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr
  99640. +TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr \
  99641. + testscope
  99642. +
  99643. +ifneq ($(HAVE_SHARED),y)
  99644. +TESTS_DISABLED := test3
  99645. +LDFLAGS_libtest.so := -lpthread
  99646. +endif
  99647. CFLAGS_dltest := -DLIBNAME="\"./libtest.so\""
  99648. CFLAGS_dltest2 := -DLIBNAME="\"./libtest3.so\""
  99649. @@ -18,22 +24,42 @@
  99650. LDFLAGS_test2 := -ldl
  99651. LDFLAGS_test3 := -ldl ./libtest1.so ./libtest2.so -Wl,-rpath,.
  99652. LDFLAGS_dladdr := -ldl
  99653. +LDFLAGS_testscope:= -ldl
  99654. DEBUG_LIBS := X
  99655. WRAPPER := env $(DEBUG_LIBS)=all LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)"
  99656. +# Build libC.so without -mprefergot compilation flag to force a
  99657. +# R_SH_JMP_SLOT relocation instead of R_SH_GLOB_DAT for _libC_fini. This is
  99658. +# needed to resolve the _libC_fini symbol when used (by libC.so destructor),
  99659. +# whereas with GLOB_DAT relocation the resolution happens in the GOT entry
  99660. +# when the libC is loaded, for the same reason remove also the "-z now"
  99661. +# linker flag.
  99662. +# These are needed to spot the issue test case want raise.
  99663. +
  99664. +ifeq ($(TARGET_ARCH),sh)
  99665. +CFLAGS-OMIT-libC.c = -mprefergot
  99666. +endif
  99667. +LDFLAGS-OMIT-libC.c = -Wl,-z,now
  99668. +
  99669. dltest: libtest.so
  99670. dltest2: libtest3.so
  99671. dlstatic: libstatic.so
  99672. dlundef: libundef.so
  99673. dlafk: libafk.so
  99674. +testscope:libA.so
  99675. libafk.so: libafk-temp.so
  99676. LDFLAGS_libafk.so := ./libafk-temp.so -Wl,-rpath,.
  99677. test1: libtest1.so
  99678. test2: libtest1.so libtest2.so
  99679. test3: libtest1.so libtest2.so
  99680. libtest1.so: libtest2.so
  99681. +libB.so: libC.so
  99682. +libA.so: libB.so
  99683. LDFLAGS_libtest.so := -lpthread
  99684. LDFLAGS_libtest1.so := ./libtest2.so -Wl,-rpath,.
  99685. LDFLAGS_libtest2.so := -Wl,-rpath,.
  99686. LDFLAGS_libtest3.so := -lpthread -Wl,-rpath,.
  99687. +LDFLAGS_libC.so := -ldl
  99688. +LDFLAGS_libB.so := ./libC.so -Wl,-rpath,.
  99689. +LDFLAGS_libA.so := ./libB.so -Wl,-rpath,.
  99690. diff -Nur uClibc-0.9.33.2/test/dlopen/testscope.c uClibc/test/dlopen/testscope.c
  99691. --- uClibc-0.9.33.2/test/dlopen/testscope.c 1970-01-01 01:00:00.000000000 +0100
  99692. +++ uClibc/test/dlopen/testscope.c 2014-02-03 12:32:57.000000000 +0100
  99693. @@ -0,0 +1,29 @@
  99694. +#include <dlfcn.h>
  99695. +#include <stdio.h>
  99696. +#include <stdlib.h>
  99697. +
  99698. +#define LIBNAME "libA.so"
  99699. +int main(int argc, char **argv)
  99700. +{
  99701. + void *libA;
  99702. + void (*libAfn)(void);
  99703. + char *error;
  99704. +
  99705. + libA = dlopen(LIBNAME, RTLD_LAZY);
  99706. + if (!libA) {
  99707. + fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
  99708. + exit(1);
  99709. + }
  99710. +
  99711. + libAfn = dlsym(libA, "libA_func");
  99712. + if ((error = dlerror()) != NULL) {
  99713. + fprintf(stderr, "Could not locate symbol 'libA_func': %s\n", error);
  99714. + exit(1);
  99715. + }
  99716. +
  99717. + libAfn();
  99718. +
  99719. + dlclose(libA);
  99720. +
  99721. + return EXIT_SUCCESS;
  99722. +}
  99723. diff -Nur uClibc-0.9.33.2/test/.gitignore uClibc/test/.gitignore
  99724. --- uClibc-0.9.33.2/test/.gitignore 2012-05-15 09:20:09.000000000 +0200
  99725. +++ uClibc/test/.gitignore 2014-02-03 12:32:57.000000000 +0100
  99726. @@ -29,13 +29,19 @@
  99727. dlopen/dlundef
  99728. dlopen/libafk.so
  99729. dlopen/libafk-temp.so
  99730. +dlopen/libA.so
  99731. +dlopen/libB.so
  99732. +dlopen/libC.so
  99733. dlopen/libstatic.so
  99734. dlopen/libtest[123].so
  99735. dlopen/libtest.so
  99736. dlopen/libundef.so
  99737. dlopen/test[1-3]
  99738. +dlopen/testscope
  99739. inet/bug-if1
  99740. inet/gethost_r-align
  99741. +inet/gethostid
  99742. +inet/getnetent
  99743. inet/if_nameindex
  99744. inet/tst-aton
  99745. inet/tst-ether_aton
  99746. @@ -43,13 +49,28 @@
  99747. inet/tst-ethers-line
  99748. inet/tst-network
  99749. inet/tst-ntoa
  99750. -inet/gethostid
  99751. -inet/getnetent
  99752. +inet/tst-res
  99753. +inet/tst-sock-nonblock
  99754. librt/shmtest
  99755. locale/bug-iconv-trans
  99756. +locale/bug-usesetlocale
  99757. +locale/C
  99758. locale/collate-test
  99759. locale/dump-ctype
  99760. locale/gen-unicode-ctype
  99761. +locale/show-ucs-data
  99762. +locale/tst-digits
  99763. +locale/tst-langinfo
  99764. +locale/tst-mbswcs[1-6]
  99765. +locale/tst_nl_langinfo
  99766. +locale/tst-numeric
  99767. +locale/tst-setlocale
  99768. +locale/tst-sscanf
  99769. +locale/tst-trans
  99770. +locale/tst-wctype
  99771. +locale/tst-xlocale1
  99772. +locale/tst-xlocale2
  99773. +locale/xfrm-test
  99774. locale-mbwc/tst_iswalnum
  99775. locale-mbwc/tst_iswalpha
  99776. locale-mbwc/tst_iswcntrl
  99777. @@ -100,16 +121,6 @@
  99778. locale-mbwc/tst_wctype
  99779. locale-mbwc/tst_wcwidth
  99780. locale-mbwc/tst2_mbrtowc
  99781. -locale/show-ucs-data
  99782. -locale/tst-digits
  99783. -locale/tst-langinfo
  99784. -locale/tst-mbswcs[1-6]
  99785. -locale/tst_nl_langinfo
  99786. -locale/tst-numeric
  99787. -locale/tst-setlocale
  99788. -locale/tst-sscanf
  99789. -locale/tst-trans
  99790. -locale/tst-wctype
  99791. malloc/malloc
  99792. malloc/mallocbug
  99793. malloc/malloc-standard-alignment
  99794. @@ -146,8 +157,11 @@
  99795. misc/seek
  99796. misc/sem
  99797. misc/stdarg
  99798. +misc/tst-inotify
  99799. misc/tst-scandir
  99800. misc/tst-seekdir
  99801. +misc/tst-statfs
  99802. +misc/tst-statvfs
  99803. misc/tst-utmp
  99804. mmap/mmap
  99805. mmap/mmap2
  99806. @@ -243,6 +257,7 @@
  99807. signal/signal
  99808. signal/tst-raise
  99809. signal/tst-signal
  99810. +signal/tst-signalfd
  99811. signal/tst-sigset
  99812. signal/tst-sigsimple
  99813. silly/hello
  99814. @@ -250,10 +265,12 @@
  99815. stat/memcmp-stat
  99816. stat/stat
  99817. stat/stat64
  99818. +stat/stat-loop256
  99819. stdio/64bit
  99820. stdio/fclose-loop
  99821. stdlib/ptytest
  99822. stdlib/qsort
  99823. +stdlib/testarc4random
  99824. stdlib/testatexit
  99825. stdlib/test-canon
  99826. stdlib/test-canon2
  99827. @@ -282,6 +299,7 @@
  99828. time/tst-mktime
  99829. time/tst-mktime3
  99830. time/tst-strptime2
  99831. +time/tst-timerfd
  99832. time/tst_wcsftime
  99833. tls/tst-tls[1-9]
  99834. tls/tst-tls1[0-8]
  99835. @@ -302,6 +320,8 @@
  99836. unistd/getopt
  99837. unistd/getopt_long
  99838. unistd/tstgetopt
  99839. +unistd/tst-posix_fallocate
  99840. +unistd/tst-posix_fallocate64
  99841. unistd/tst-preadwrite
  99842. unistd/tst-preadwrite64
  99843. unistd/vfork
  99844. diff -Nur uClibc-0.9.33.2/test/inet/bug-if1.c uClibc/test/inet/bug-if1.c
  99845. --- uClibc-0.9.33.2/test/inet/bug-if1.c 2012-05-15 09:20:09.000000000 +0200
  99846. +++ uClibc/test/inet/bug-if1.c 2014-02-03 12:32:57.000000000 +0100
  99847. @@ -13,9 +13,8 @@
  99848. Lesser General Public License for more details.
  99849. You should have received a copy of the GNU Lesser General Public
  99850. - License along with the GNU C Library; if not, write to the Free
  99851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99852. - 02111-1307 USA. */
  99853. + License along with the GNU C Library; if not, see
  99854. + <http://www.gnu.org/licenses/>. */
  99855. #include <errno.h>
  99856. #include <limits.h>
  99857. diff -Nur uClibc-0.9.33.2/test/inet/gethostid.c uClibc/test/inet/gethostid.c
  99858. --- uClibc-0.9.33.2/test/inet/gethostid.c 2012-05-15 09:20:09.000000000 +0200
  99859. +++ uClibc/test/inet/gethostid.c 2014-02-03 12:32:57.000000000 +0100
  99860. @@ -1,6 +1,6 @@
  99861. #include <unistd.h>
  99862. #include <stdio.h>
  99863. int main(void) {
  99864. - printf("hostid=%d\n", gethostid());
  99865. + printf("hostid=%ld\n", gethostid());
  99866. return 0;
  99867. }
  99868. diff -Nur uClibc-0.9.33.2/test/inet/getnetent.c uClibc/test/inet/getnetent.c
  99869. --- uClibc-0.9.33.2/test/inet/getnetent.c 2012-05-15 09:20:09.000000000 +0200
  99870. +++ uClibc/test/inet/getnetent.c 2014-02-03 12:32:57.000000000 +0100
  99871. @@ -8,7 +8,7 @@
  99872. while (net->n_net && !((net->n_net >> 24) & 0xff)) {
  99873. net->n_net <<= 8;
  99874. }
  99875. - printf("%lu.%lu.%lu.%lu\n",
  99876. + printf("%u.%u.%u.%u\n",
  99877. (net->n_net >> 24) & 0xff, (net->n_net >> 16) & 0xff,
  99878. (net->n_net >> 8) & 0xff, net->n_net & 0xff);
  99879. }
  99880. diff -Nur uClibc-0.9.33.2/test/inet/Makefile uClibc/test/inet/Makefile
  99881. --- uClibc-0.9.33.2/test/inet/Makefile 2012-05-15 09:20:09.000000000 +0200
  99882. +++ uClibc/test/inet/Makefile 2014-02-03 12:32:57.000000000 +0100
  99883. @@ -2,6 +2,7 @@
  99884. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99885. top_builddir=../../
  99886. +top_srcdir=../../
  99887. include ../Rules.mak
  99888. -include Makefile.in
  99889. include ../Test.mak
  99890. diff -Nur uClibc-0.9.33.2/test/inet/Makefile.in uClibc/test/inet/Makefile.in
  99891. --- uClibc-0.9.33.2/test/inet/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  99892. +++ uClibc/test/inet/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  99893. @@ -7,5 +7,11 @@
  99894. endif
  99895. ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
  99896. -TESTS_DISABLED := tst-ether_aton tst-ethers tst-ethers-line
  99897. +TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line
  99898. +endif
  99899. +
  99900. +ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),)
  99901. +TESTS_DISABLED += tst-res
  99902. +else
  99903. +LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib
  99904. endif
  99905. diff -Nur uClibc-0.9.33.2/test/inet/tst-network.c uClibc/test/inet/tst-network.c
  99906. --- uClibc-0.9.33.2/test/inet/tst-network.c 2012-05-15 09:20:09.000000000 +0200
  99907. +++ uClibc/test/inet/tst-network.c 2014-02-03 12:32:57.000000000 +0100
  99908. @@ -14,9 +14,8 @@
  99909. Lesser General Public License for more details.
  99910. You should have received a copy of the GNU Lesser General Public
  99911. - License along with the GNU C Library; if not, write to the Free
  99912. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99913. - 02111-1307 USA. */
  99914. + License along with the GNU C Library; if not, see
  99915. + <http://www.gnu.org/licenses/>. */
  99916. #include <stdio.h>
  99917. #include <sys/socket.h>
  99918. diff -Nur uClibc-0.9.33.2/test/inet/tst-res.c uClibc/test/inet/tst-res.c
  99919. --- uClibc-0.9.33.2/test/inet/tst-res.c 1970-01-01 01:00:00.000000000 +0100
  99920. +++ uClibc/test/inet/tst-res.c 2014-02-03 12:32:57.000000000 +0100
  99921. @@ -0,0 +1,44 @@
  99922. +#include <stdlib.h>
  99923. +#include <assert.h>
  99924. +#include <sys/types.h>
  99925. +#include <netinet/in.h>
  99926. +#include <arpa/nameser.h>
  99927. +#include <resolv.h>
  99928. +#include <netdb.h>
  99929. +
  99930. +int main(int argc, char **argv)
  99931. +{
  99932. + int r;
  99933. + struct __res_state state;
  99934. +
  99935. + r = res_ninit(&state);
  99936. + if (r) {
  99937. + herror("ninit");
  99938. + abort();
  99939. + }
  99940. + r = res_init();
  99941. + if (r) {
  99942. + herror("init");
  99943. + abort();
  99944. + }
  99945. +
  99946. +#ifdef __UCLIBC_HAS_BSD_RES_CLOSE__
  99947. + res_close();
  99948. +#endif
  99949. +#ifdef __UCLIBC__
  99950. + /* assume there is at least one resolver configured */
  99951. + assert (state._u._ext.nscount > 0);
  99952. +#else
  99953. + assert (state._u._ext.nscount == 0);
  99954. +#endif
  99955. + assert (state.options & RES_INIT);
  99956. + res_nclose(&state);
  99957. +#ifdef __UCLIBC__
  99958. + /* We wipe the whole thing */
  99959. + assert ((state.options & RES_INIT) == 0);
  99960. +#endif
  99961. + assert (state._u._ext.nscount == 0);
  99962. +
  99963. + return 0;
  99964. +}
  99965. +
  99966. diff -Nur uClibc-0.9.33.2/test/inet/tst-sock-nonblock.c uClibc/test/inet/tst-sock-nonblock.c
  99967. --- uClibc-0.9.33.2/test/inet/tst-sock-nonblock.c 1970-01-01 01:00:00.000000000 +0100
  99968. +++ uClibc/test/inet/tst-sock-nonblock.c 2014-02-03 12:32:57.000000000 +0100
  99969. @@ -0,0 +1,53 @@
  99970. +/* vi: set sw=4 ts=4 sts=4: */
  99971. +/*
  99972. + * Nonblocking socket test for uClibc
  99973. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  99974. + *
  99975. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99976. + */
  99977. +
  99978. +#include <stdio.h>
  99979. +#include <stdlib.h>
  99980. +#include <string.h>
  99981. +#include <unistd.h>
  99982. +#include <errno.h>
  99983. +#include <error.h>
  99984. +#include <sys/types.h>
  99985. +#include <sys/socket.h>
  99986. +#include <sys/un.h>
  99987. +#include <sys/fcntl.h>
  99988. +
  99989. +static int
  99990. +do_test(void)
  99991. +{
  99992. + int fd, ret, result = 0;
  99993. + struct sockaddr_un sa;
  99994. + char buf;
  99995. +
  99996. + fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0);
  99997. + if (fd < 0) {
  99998. + perror("socket()");
  99999. + result = 1;
  100000. + }
  100001. +
  100002. + memset(&sa, 0, sizeof(sa));
  100003. + sa.sun_family = AF_UNIX;
  100004. + strcpy(sa.sun_path, "socktest");
  100005. + unlink("socktest");
  100006. + if (bind(fd, (const struct sockaddr *)&sa, sizeof(sa)) < 0) {
  100007. + perror("bind()");
  100008. + result = 1;
  100009. + }
  100010. +
  100011. + ret = read(fd, &buf, sizeof(buf));
  100012. + if (ret != -1 || errno != EAGAIN) {
  100013. + error(0, 0, "Nonblocking read returned %d", ret);
  100014. + result = 1;
  100015. + }
  100016. +
  100017. + return result;
  100018. +}
  100019. +
  100020. +#define TIMEOUT 5
  100021. +#define TEST_FUNCTION do_test ()
  100022. +#include "../test-skeleton.c"
  100023. diff -Nur uClibc-0.9.33.2/test/librt/Makefile uClibc/test/librt/Makefile
  100024. --- uClibc-0.9.33.2/test/librt/Makefile 2012-05-15 09:20:09.000000000 +0200
  100025. +++ uClibc/test/librt/Makefile 2014-02-03 12:32:57.000000000 +0100
  100026. @@ -2,6 +2,7 @@
  100027. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100028. top_builddir=../../
  100029. +top_srcdir=../../
  100030. include ../Rules.mak
  100031. -include Makefile.in
  100032. include ../Test.mak
  100033. diff -Nur uClibc-0.9.33.2/test/locale/collate-test.c uClibc/test/locale/collate-test.c
  100034. --- uClibc-0.9.33.2/test/locale/collate-test.c 2012-05-15 09:20:09.000000000 +0200
  100035. +++ uClibc/test/locale/collate-test.c 2014-02-03 12:32:57.000000000 +0100
  100036. @@ -14,9 +14,8 @@
  100037. Lesser General Public License for more details.
  100038. You should have received a copy of the GNU Lesser General Public
  100039. - License along with the GNU C Library; if not, write to the Free
  100040. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100041. - 02111-1307 USA. */
  100042. + License along with the GNU C Library; if not, see
  100043. + <http://www.gnu.org/licenses/>. */
  100044. #include <ctype.h>
  100045. #include <error.h>
  100046. diff -Nur uClibc-0.9.33.2/test/locale/dump-ctype.c uClibc/test/locale/dump-ctype.c
  100047. --- uClibc-0.9.33.2/test/locale/dump-ctype.c 2012-05-15 09:20:09.000000000 +0200
  100048. +++ uClibc/test/locale/dump-ctype.c 2014-02-03 12:32:57.000000000 +0100
  100049. @@ -15,9 +15,8 @@
  100050. Lesser General Public License for more details.
  100051. You should have received a copy of the GNU Lesser General Public
  100052. - License along with the GNU C Library; if not, write to the Free
  100053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100054. - 02111-1307 USA. */
  100055. + License along with the GNU C Library; if not, see
  100056. + <http://www.gnu.org/licenses/>. */
  100057. /* Usage example:
  100058. $ dump-ctype de_DE.UTF-8
  100059. diff -Nur uClibc-0.9.33.2/test/locale/gen-unicode-ctype.c uClibc/test/locale/gen-unicode-ctype.c
  100060. --- uClibc-0.9.33.2/test/locale/gen-unicode-ctype.c 2012-05-15 09:20:09.000000000 +0200
  100061. +++ uClibc/test/locale/gen-unicode-ctype.c 2014-02-03 12:32:57.000000000 +0100
  100062. @@ -14,9 +14,8 @@
  100063. Lesser General Public License for more details.
  100064. You should have received a copy of the GNU Lesser General Public
  100065. - License along with the GNU C Library; if not, write to the Free
  100066. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100067. - 02111-1307 USA. */
  100068. + License along with the GNU C Library; if not, see
  100069. + <http://www.gnu.org/licenses/>. */
  100070. /* Usage example:
  100071. $ gen-unicode /usr/local/share/Unidata/UnicodeData.txt 3.1
  100072. diff -Nur uClibc-0.9.33.2/test/locale/Makefile uClibc/test/locale/Makefile
  100073. --- uClibc-0.9.33.2/test/locale/Makefile 2012-05-15 09:20:09.000000000 +0200
  100074. +++ uClibc/test/locale/Makefile 2014-02-03 12:32:57.000000000 +0100
  100075. @@ -2,6 +2,7 @@
  100076. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100077. top_builddir=../../
  100078. +top_srcdir=../../
  100079. include ../Rules.mak
  100080. -include Makefile.in
  100081. include ../Test.mak
  100082. diff -Nur uClibc-0.9.33.2/test/locale/tst-C-locale.c uClibc/test/locale/tst-C-locale.c
  100083. --- uClibc-0.9.33.2/test/locale/tst-C-locale.c 2012-05-15 09:20:09.000000000 +0200
  100084. +++ uClibc/test/locale/tst-C-locale.c 2014-02-03 12:32:57.000000000 +0100
  100085. @@ -14,9 +14,8 @@
  100086. Lesser General Public License for more details.
  100087. You should have received a copy of the GNU Lesser General Public
  100088. - License along with the GNU C Library; if not, write to the Free
  100089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100090. - 02111-1307 USA. */
  100091. + License along with the GNU C Library; if not, see
  100092. + <http://www.gnu.org/licenses/>. */
  100093. #include <ctype.h>
  100094. #include <langinfo.h>
  100095. diff -Nur uClibc-0.9.33.2/test/locale/tst-ctype.c uClibc/test/locale/tst-ctype.c
  100096. --- uClibc-0.9.33.2/test/locale/tst-ctype.c 2012-05-15 09:20:09.000000000 +0200
  100097. +++ uClibc/test/locale/tst-ctype.c 2014-02-03 12:32:57.000000000 +0100
  100098. @@ -13,9 +13,8 @@
  100099. Lesser General Public License for more details.
  100100. You should have received a copy of the GNU Lesser General Public
  100101. - License along with the GNU C Library; if not, write to the Free
  100102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100103. - 02111-1307 USA. */
  100104. + License along with the GNU C Library; if not, see
  100105. + <http://www.gnu.org/licenses/>. */
  100106. #include <ctype.h>
  100107. #include <locale.h>
  100108. diff -Nur uClibc-0.9.33.2/test/locale/tst-digits.c uClibc/test/locale/tst-digits.c
  100109. --- uClibc-0.9.33.2/test/locale/tst-digits.c 2012-05-15 09:20:09.000000000 +0200
  100110. +++ uClibc/test/locale/tst-digits.c 2014-02-03 12:32:57.000000000 +0100
  100111. @@ -13,9 +13,8 @@
  100112. Lesser General Public License for more details.
  100113. You should have received a copy of the GNU Lesser General Public
  100114. - License along with the GNU C Library; if not, write to the Free
  100115. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100116. - 02111-1307 USA. */
  100117. + License along with the GNU C Library; if not, see
  100118. + <http://www.gnu.org/licenses/>. */
  100119. #include <ctype.h>
  100120. #include <langinfo.h>
  100121. diff -Nur uClibc-0.9.33.2/test/locale/tst-fmon.c uClibc/test/locale/tst-fmon.c
  100122. --- uClibc-0.9.33.2/test/locale/tst-fmon.c 2012-05-15 09:20:09.000000000 +0200
  100123. +++ uClibc/test/locale/tst-fmon.c 2014-02-03 12:32:57.000000000 +0100
  100124. @@ -14,9 +14,8 @@
  100125. Lesser General Public License for more details.
  100126. You should have received a copy of the GNU Lesser General Public
  100127. - License along with the GNU C Library; if not, write to the Free
  100128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100129. - 02111-1307 USA. */
  100130. + License along with the GNU C Library; if not, see
  100131. + <http://www.gnu.org/licenses/>. */
  100132. #include <stdio.h>
  100133. #include <locale.h>
  100134. diff -Nur uClibc-0.9.33.2/test/locale/tst-langinfo.c uClibc/test/locale/tst-langinfo.c
  100135. --- uClibc-0.9.33.2/test/locale/tst-langinfo.c 2012-05-15 09:20:09.000000000 +0200
  100136. +++ uClibc/test/locale/tst-langinfo.c 2014-02-03 12:32:57.000000000 +0100
  100137. @@ -14,9 +14,8 @@
  100138. Lesser General Public License for more details.
  100139. You should have received a copy of the GNU Lesser General Public
  100140. - License along with the GNU C Library; if not, write to the Free
  100141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100142. - 02111-1307 USA. */
  100143. + License along with the GNU C Library; if not, see
  100144. + <http://www.gnu.org/licenses/>. */
  100145. #include <langinfo.h>
  100146. #include <locale.h>
  100147. diff -Nur uClibc-0.9.33.2/test/locale/tst-langinfo.input uClibc/test/locale/tst-langinfo.input
  100148. --- uClibc-0.9.33.2/test/locale/tst-langinfo.input 2012-05-15 09:20:09.000000000 +0200
  100149. +++ uClibc/test/locale/tst-langinfo.input 2014-02-03 12:32:57.000000000 +0100
  100150. @@ -15,9 +15,8 @@
  100151. # Lesser General Public License for more details.
  100152. # You should have received a copy of the GNU Lesser General Public
  100153. -# License along with the GNU C Library; if not, write to the Free
  100154. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100155. -# 02111-1307 USA.
  100156. +# License along with the GNU C Library; see the file COPYING.LIB. If
  100157. +# not, see <http://www.gnu.org/licenses/>.
  100158. # Run the test program.
  100159. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs1.c uClibc/test/locale/tst-mbswcs1.c
  100160. --- uClibc-0.9.33.2/test/locale/tst-mbswcs1.c 2012-05-15 09:20:09.000000000 +0200
  100161. +++ uClibc/test/locale/tst-mbswcs1.c 2014-02-03 12:32:57.000000000 +0100
  100162. @@ -14,9 +14,8 @@
  100163. Lesser General Public License for more details.
  100164. You should have received a copy of the GNU Lesser General Public
  100165. - License along with the GNU C Library; if not, write to the Free
  100166. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100167. - 02111-1307 USA. */
  100168. + License along with the GNU C Library; if not, see
  100169. + <http://www.gnu.org/licenses/>. */
  100170. #include <stdio.h>
  100171. #include <string.h>
  100172. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs2.c uClibc/test/locale/tst-mbswcs2.c
  100173. --- uClibc-0.9.33.2/test/locale/tst-mbswcs2.c 2012-05-15 09:20:09.000000000 +0200
  100174. +++ uClibc/test/locale/tst-mbswcs2.c 2014-02-03 12:32:57.000000000 +0100
  100175. @@ -14,9 +14,8 @@
  100176. Lesser General Public License for more details.
  100177. You should have received a copy of the GNU Lesser General Public
  100178. - License along with the GNU C Library; if not, write to the Free
  100179. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100180. - 02111-1307 USA. */
  100181. + License along with the GNU C Library; if not, see
  100182. + <http://www.gnu.org/licenses/>. */
  100183. #include <stdio.h>
  100184. #include <string.h>
  100185. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs3.c uClibc/test/locale/tst-mbswcs3.c
  100186. --- uClibc-0.9.33.2/test/locale/tst-mbswcs3.c 2012-05-15 09:20:09.000000000 +0200
  100187. +++ uClibc/test/locale/tst-mbswcs3.c 2014-02-03 12:32:57.000000000 +0100
  100188. @@ -14,9 +14,8 @@
  100189. Lesser General Public License for more details.
  100190. You should have received a copy of the GNU Lesser General Public
  100191. - License along with the GNU C Library; if not, write to the Free
  100192. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100193. - 02111-1307 USA. */
  100194. + License along with the GNU C Library; if not, see
  100195. + <http://www.gnu.org/licenses/>. */
  100196. #include <stdio.h>
  100197. #include <string.h>
  100198. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs4.c uClibc/test/locale/tst-mbswcs4.c
  100199. --- uClibc-0.9.33.2/test/locale/tst-mbswcs4.c 2012-05-15 09:20:09.000000000 +0200
  100200. +++ uClibc/test/locale/tst-mbswcs4.c 2014-02-03 12:32:57.000000000 +0100
  100201. @@ -13,9 +13,8 @@
  100202. Lesser General Public License for more details.
  100203. You should have received a copy of the GNU Lesser General Public
  100204. - License along with the GNU C Library; if not, write to the Free
  100205. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100206. - 02111-1307 USA. */
  100207. + License along with the GNU C Library; if not, see
  100208. + <http://www.gnu.org/licenses/>. */
  100209. #include <stdio.h>
  100210. #include <string.h>
  100211. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs5.c uClibc/test/locale/tst-mbswcs5.c
  100212. --- uClibc-0.9.33.2/test/locale/tst-mbswcs5.c 2012-05-15 09:20:09.000000000 +0200
  100213. +++ uClibc/test/locale/tst-mbswcs5.c 2014-02-03 12:32:57.000000000 +0100
  100214. @@ -14,9 +14,8 @@
  100215. Lesser General Public License for more details.
  100216. You should have received a copy of the GNU Lesser General Public
  100217. - License along with the GNU C Library; if not, write to the Free
  100218. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100219. - 02111-1307 USA. */
  100220. + License along with the GNU C Library; if not, see
  100221. + <http://www.gnu.org/licenses/>. */
  100222. #include <stdio.h>
  100223. #include <string.h>
  100224. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs6.c uClibc/test/locale/tst-mbswcs6.c
  100225. --- uClibc-0.9.33.2/test/locale/tst-mbswcs6.c 2012-05-15 09:20:09.000000000 +0200
  100226. +++ uClibc/test/locale/tst-mbswcs6.c 2014-02-03 12:32:57.000000000 +0100
  100227. @@ -14,9 +14,8 @@
  100228. Lesser General Public License for more details.
  100229. You should have received a copy of the GNU Lesser General Public
  100230. - License along with the GNU C Library; if not, write to the Free
  100231. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100232. - 02111-1307 USA. */
  100233. + License along with the GNU C Library; if not, see
  100234. + <http://www.gnu.org/licenses/>. */
  100235. #include <errno.h>
  100236. #include <locale.h>
  100237. diff -Nur uClibc-0.9.33.2/test/locale/tst-numeric.c uClibc/test/locale/tst-numeric.c
  100238. --- uClibc-0.9.33.2/test/locale/tst-numeric.c 2012-05-15 09:20:09.000000000 +0200
  100239. +++ uClibc/test/locale/tst-numeric.c 2014-02-03 12:32:57.000000000 +0100
  100240. @@ -16,9 +16,8 @@
  100241. Lesser General Public License for more details.
  100242. You should have received a copy of the GNU Lesser General Public
  100243. - License along with the GNU C Library; if not, write to the Free
  100244. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100245. - 02111-1307 USA. */
  100246. + License along with the GNU C Library; if not, see
  100247. + <http://www.gnu.org/licenses/>. */
  100248. #include <stdio.h>
  100249. #include <locale.h>
  100250. diff -Nur uClibc-0.9.33.2/test/locale/tst-rpmatch.c uClibc/test/locale/tst-rpmatch.c
  100251. --- uClibc-0.9.33.2/test/locale/tst-rpmatch.c 2012-05-15 09:20:09.000000000 +0200
  100252. +++ uClibc/test/locale/tst-rpmatch.c 2014-02-03 12:32:57.000000000 +0100
  100253. @@ -14,9 +14,8 @@
  100254. Lesser General Public License for more details.
  100255. You should have received a copy of the GNU Lesser General Public
  100256. - License along with the GNU C Library; if not, write to the Free
  100257. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100258. - 02111-1307 USA. */
  100259. + License along with the GNU C Library; if not, see
  100260. + <http://www.gnu.org/licenses/>. */
  100261. #include <locale.h>
  100262. #include <stdio.h>
  100263. diff -Nur uClibc-0.9.33.2/test/locale/tst-trans.c uClibc/test/locale/tst-trans.c
  100264. --- uClibc-0.9.33.2/test/locale/tst-trans.c 2012-05-15 09:20:09.000000000 +0200
  100265. +++ uClibc/test/locale/tst-trans.c 2014-02-03 12:32:57.000000000 +0100
  100266. @@ -14,9 +14,8 @@
  100267. Lesser General Public License for more details.
  100268. You should have received a copy of the GNU Lesser General Public
  100269. - License along with the GNU C Library; if not, write to the Free
  100270. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100271. - 02111-1307 USA. */
  100272. + License along with the GNU C Library; if not, see
  100273. + <http://www.gnu.org/licenses/>. */
  100274. #include <locale.h>
  100275. #include <stdio.h>
  100276. diff -Nur uClibc-0.9.33.2/test/locale/tst-wctype.c uClibc/test/locale/tst-wctype.c
  100277. --- uClibc-0.9.33.2/test/locale/tst-wctype.c 2012-05-15 09:20:09.000000000 +0200
  100278. +++ uClibc/test/locale/tst-wctype.c 2014-02-03 12:32:57.000000000 +0100
  100279. @@ -14,9 +14,8 @@
  100280. Lesser General Public License for more details.
  100281. You should have received a copy of the GNU Lesser General Public
  100282. - License along with the GNU C Library; if not, write to the Free
  100283. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100284. - 02111-1307 USA. */
  100285. + License along with the GNU C Library; if not, see
  100286. + <http://www.gnu.org/licenses/>. */
  100287. #include <error.h>
  100288. #include <locale.h>
  100289. diff -Nur uClibc-0.9.33.2/test/locale/xfrm-test.c uClibc/test/locale/xfrm-test.c
  100290. --- uClibc-0.9.33.2/test/locale/xfrm-test.c 2012-05-15 09:20:09.000000000 +0200
  100291. +++ uClibc/test/locale/xfrm-test.c 2014-02-03 12:32:57.000000000 +0100
  100292. @@ -14,9 +14,8 @@
  100293. Lesser General Public License for more details.
  100294. You should have received a copy of the GNU Lesser General Public
  100295. - License along with the GNU C Library; if not, write to the Free
  100296. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100297. - 02111-1307 USA. */
  100298. + License along with the GNU C Library; if not, see
  100299. + <http://www.gnu.org/licenses/>. */
  100300. #include <ctype.h>
  100301. #include <error.h>
  100302. diff -Nur uClibc-0.9.33.2/test/locale-mbwc/Makefile uClibc/test/locale-mbwc/Makefile
  100303. --- uClibc-0.9.33.2/test/locale-mbwc/Makefile 2012-05-15 09:20:09.000000000 +0200
  100304. +++ uClibc/test/locale-mbwc/Makefile 2014-02-03 12:32:57.000000000 +0100
  100305. @@ -2,6 +2,7 @@
  100306. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100307. top_builddir=../../
  100308. +top_srcdir=../../
  100309. include ../Rules.mak
  100310. -include Makefile.in
  100311. include ../Test.mak
  100312. diff -Nur uClibc-0.9.33.2/test/Makefile uClibc/test/Makefile
  100313. --- uClibc-0.9.33.2/test/Makefile 2012-05-15 09:20:09.000000000 +0200
  100314. +++ uClibc/test/Makefile 2014-02-03 12:32:57.000000000 +0100
  100315. @@ -5,6 +5,7 @@
  100316. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100317. #
  100318. +top_srcdir=../
  100319. top_builddir=../
  100320. include Rules.mak
  100321. @@ -46,9 +47,9 @@
  100322. run: compile subdirs_run
  100323. -compile: $(top_builddir)/$(LOCAL_INSTALL_PATH) subdirs_compile
  100324. +compile: $(top_builddir)$(LOCAL_INSTALL_PATH) subdirs_compile
  100325. -$(top_builddir)/$(LOCAL_INSTALL_PATH):
  100326. +$(top_builddir)$(LOCAL_INSTALL_PATH):
  100327. $(Q)$(MAKE) -C $(top_builddir) $(LOCAL_INSTALL_PATH)
  100328. tags:
  100329. @@ -62,13 +63,16 @@
  100330. subdirs_clean: $(patsubst %, _dirclean_%, $(ALL_SUBDIRS))
  100331. $(patsubst %, _dir_%, $(DIRS)) : dummy
  100332. - $(Q)$(MAKE) -C $(patsubst _dir_%, %, $@)
  100333. + $(Q)$(MAKE) -C $(patsubst _dir_%, %, $@) \
  100334. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  100335. $(patsubst %, _dirrun_%, $(DIRS)) : dummy
  100336. - $(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run
  100337. + $(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run \
  100338. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  100339. $(patsubst %, _dircompile_%, $(DIRS)) : dummy
  100340. - $(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile
  100341. + $(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile \
  100342. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  100343. $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy
  100344. $(Q)$(MAKE) -C $(patsubst _dirclean_%, %, $@) clean
  100345. diff -Nur uClibc-0.9.33.2/test/malloc/Makefile uClibc/test/malloc/Makefile
  100346. --- uClibc-0.9.33.2/test/malloc/Makefile 2012-05-15 09:20:09.000000000 +0200
  100347. +++ uClibc/test/malloc/Makefile 2014-02-03 12:32:57.000000000 +0100
  100348. @@ -2,6 +2,7 @@
  100349. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100350. top_builddir=../../
  100351. +top_srcdir=../../
  100352. include ../Rules.mak
  100353. -include Makefile.in
  100354. include ../Test.mak
  100355. diff -Nur uClibc-0.9.33.2/test/malloc/Makefile.in uClibc/test/malloc/Makefile.in
  100356. --- uClibc-0.9.33.2/test/malloc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  100357. +++ uClibc/test/malloc/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  100358. @@ -2,3 +2,11 @@
  100359. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  100360. TESTS_DISABLED := time_malloc
  100361. +
  100362. +ifneq ($(UCLIBC_SUSV2_LEGACY),y)
  100363. +TESTS_DISABLED += tst-valloc
  100364. +endif
  100365. +
  100366. +ifneq ($(UCLIBC_HAS_OBSTACK),y)
  100367. +TESTS_DISABLED += tst-obstack
  100368. +endif
  100369. diff -Nur uClibc-0.9.33.2/test/malloc/tst-calloc.c uClibc/test/malloc/tst-calloc.c
  100370. --- uClibc-0.9.33.2/test/malloc/tst-calloc.c 2012-05-15 09:20:09.000000000 +0200
  100371. +++ uClibc/test/malloc/tst-calloc.c 2014-02-03 12:32:57.000000000 +0100
  100372. @@ -13,9 +13,8 @@
  100373. Lesser General Public License for more details.
  100374. You should have received a copy of the GNU Lesser General Public
  100375. - License along with the GNU C Library; if not, write to the Free
  100376. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100377. - 02111-1307 USA. */
  100378. + License along with the GNU C Library; if not, see
  100379. + <http://www.gnu.org/licenses/>. */
  100380. #include <errno.h>
  100381. #include <limits.h>
  100382. diff -Nur uClibc-0.9.33.2/test/malloc/tst-malloc.c uClibc/test/malloc/tst-malloc.c
  100383. --- uClibc-0.9.33.2/test/malloc/tst-malloc.c 2012-05-15 09:20:09.000000000 +0200
  100384. +++ uClibc/test/malloc/tst-malloc.c 2014-02-03 12:32:57.000000000 +0100
  100385. @@ -13,9 +13,8 @@
  100386. Lesser General Public License for more details.
  100387. You should have received a copy of the GNU Lesser General Public
  100388. - License along with the GNU C Library; if not, write to the Free
  100389. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100390. - 02111-1307 USA. */
  100391. + License along with the GNU C Library; if not, see
  100392. + <http://www.gnu.org/licenses/>. */
  100393. #include <errno.h>
  100394. #include <malloc.h>
  100395. diff -Nur uClibc-0.9.33.2/test/malloc/tst-mcheck.c uClibc/test/malloc/tst-mcheck.c
  100396. --- uClibc-0.9.33.2/test/malloc/tst-mcheck.c 2012-05-15 09:20:09.000000000 +0200
  100397. +++ uClibc/test/malloc/tst-mcheck.c 2014-02-03 12:32:57.000000000 +0100
  100398. @@ -13,9 +13,8 @@
  100399. Lesser General Public License for more details.
  100400. You should have received a copy of the GNU Lesser General Public
  100401. - License along with the GNU C Library; if not, write to the Free
  100402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100403. - 02111-1307 USA. */
  100404. + License along with the GNU C Library; if not, see
  100405. + <http://www.gnu.org/licenses/>. */
  100406. #include <errno.h>
  100407. #include <stdio.h>
  100408. diff -Nur uClibc-0.9.33.2/test/malloc/tst-obstack.c uClibc/test/malloc/tst-obstack.c
  100409. --- uClibc-0.9.33.2/test/malloc/tst-obstack.c 2012-05-15 09:20:09.000000000 +0200
  100410. +++ uClibc/test/malloc/tst-obstack.c 2014-02-03 12:32:57.000000000 +0100
  100411. @@ -1,4 +1,8 @@
  100412. -/* Test case by Alexandre Duret-Lutz <duret_g@epita.fr>. */
  100413. +/* Test case by Alexandre Duret-Lutz <duret_g@epita.fr>.
  100414. + * test_obstack_printf() added by Anthony G. Basile <blueness.gentoo.org>.
  100415. + */
  100416. +
  100417. +#include <features.h>
  100418. #include <obstack.h>
  100419. #include <stdint.h>
  100420. #include <stdio.h>
  100421. @@ -26,7 +30,7 @@
  100422. }
  100423. int
  100424. -main (void)
  100425. +test_obstack_alloc (void)
  100426. {
  100427. int result = 0;
  100428. int align = 2;
  100429. @@ -62,3 +66,39 @@
  100430. return result;
  100431. }
  100432. +
  100433. +int
  100434. +test_obstack_printf (void)
  100435. +{
  100436. + int result = 0;
  100437. + int n;
  100438. + char *s;
  100439. + struct obstack ob;
  100440. +
  100441. + obstack_init (&ob);
  100442. +
  100443. + n = obstack_printf (&ob, "%s%d%c", "testing 1 ... 2 ... ", 3, '\n');
  100444. + result |= (n != 22);
  100445. + printf("obstack_printf => %d\n", n);
  100446. +
  100447. + n = obstack_printf (&ob, "%s%d%c", "testing 3 ... 2 ... ", 1, '\0');
  100448. + result |= (n != 22);
  100449. + printf("obstack_printf => %d\n", n);
  100450. +
  100451. + s = obstack_finish (&ob);
  100452. + printf("obstack_printf => %s\n", s);
  100453. + obstack_free (&ob, NULL);
  100454. +
  100455. + return result;
  100456. +}
  100457. +
  100458. +int
  100459. +main (void)
  100460. +{
  100461. + int result = 0;
  100462. +
  100463. + result |= test_obstack_alloc();
  100464. + result |= test_obstack_printf();
  100465. +
  100466. + return result;
  100467. +}
  100468. diff -Nur uClibc-0.9.33.2/test/math/basic-test.c uClibc/test/math/basic-test.c
  100469. --- uClibc-0.9.33.2/test/math/basic-test.c 2012-05-15 09:20:09.000000000 +0200
  100470. +++ uClibc/test/math/basic-test.c 2014-02-03 12:32:57.000000000 +0100
  100471. @@ -13,9 +13,8 @@
  100472. Lesser General Public License for more details.
  100473. You should have received a copy of the GNU Lesser General Public
  100474. - License along with the GNU C Library; if not, write to the Free
  100475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100476. - 02111-1307 USA. */
  100477. + License along with the GNU C Library; if not, see
  100478. + <http://www.gnu.org/licenses/>. */
  100479. #define _ISOC99_SOURCE
  100480. @@ -65,11 +64,6 @@
  100481. check (#FLOAT " !isnan (1)", !(isnan (one_var))); \
  100482. check (#FLOAT " !isnan (inf)", !(isnan (Inf_var))); \
  100483. \
  100484. - check (#FLOAT " inf == inf", Inf_var == Inf_var); \
  100485. - check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \
  100486. - check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \
  100487. - check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \
  100488. - \
  100489. /* \
  100490. the same tests but this time with NAN from <bits/nan.h> \
  100491. NAN is a double const \
  100492. @@ -78,7 +72,6 @@
  100493. check (#FLOAT " isnan (-NAN)", isnan (-NAN)); \
  100494. check (#FLOAT " !isinf (NAN)", !(isinf (NAN))); \
  100495. check (#FLOAT " !isinf (-NAN)", !(isinf (-NAN))); \
  100496. - check (#FLOAT " NAN != NAN", NAN != NAN); \
  100497. \
  100498. /* \
  100499. And again with the value returned by the `nan' function. \
  100500. @@ -89,6 +82,48 @@
  100501. check (#FLOAT " !isinf (-NAN)", !(isinf (-NANFUNC ("")))); \
  100502. check (#FLOAT " NAN != NAN", NANFUNC ("") != NANFUNC ("")); \
  100503. \
  100504. + /* test if HUGE_VALx is ok */ \
  100505. + x1 = HUGEVAL; \
  100506. + check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \
  100507. + x1 = - HUGEVAL; \
  100508. + check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \
  100509. +}
  100510. +#ifndef DO_C99_MATH
  100511. +# undef TEST_FUNC
  100512. +# define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \
  100513. +static void \
  100514. +NAME(void) \
  100515. +{ /* nothing */ }
  100516. +#endif
  100517. +
  100518. +#define TEST_VAL(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \
  100519. +static void \
  100520. +NAME (void) \
  100521. +{ \
  100522. + /* Variables are declared volatile to forbid some compiler \
  100523. + optimizations. */ \
  100524. + volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \
  100525. + FLOAT x1, x2; \
  100526. + \
  100527. + zero_var = 0.0; \
  100528. + one_var = 1.0; \
  100529. + NaN_var = zero_var/zero_var; \
  100530. + Inf_var = one_var / zero_var; \
  100531. + \
  100532. + (void) &zero_var; \
  100533. + (void) &one_var; \
  100534. + (void) &NaN_var; \
  100535. + (void) &Inf_var; \
  100536. + \
  100537. + \
  100538. + check (#FLOAT " inf == inf", Inf_var == Inf_var); \
  100539. + check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \
  100540. + check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \
  100541. + check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \
  100542. + \
  100543. + check (#FLOAT " NAN != NAN", NAN != NAN); \
  100544. + \
  100545. + \
  100546. /* test if EPSILON is ok */ \
  100547. x1 = 1.0; \
  100548. x2 = x1 + EPSILON; \
  100549. @@ -98,27 +133,28 @@
  100550. x2 = x1 - EPSILON; \
  100551. check (#FLOAT " 1 != 1-EPSILON", x1 != x2); \
  100552. \
  100553. - /* test if HUGE_VALx is ok */ \
  100554. - x1 = HUGEVAL; \
  100555. - check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \
  100556. - x1 = - HUGEVAL; \
  100557. - check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \
  100558. }
  100559. -TEST_FUNC (float_test, float, nanf, FLT_EPSILON, HUGE_VALF)
  100560. -TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL)
  100561. +TEST_VAL (float_test_value, float, nanf, FLT_EPSILON, HUGE_VALF)
  100562. +TEST_FUNC (float_test_call, float, nanf, FLT_EPSILON, HUGE_VALF)
  100563. +TEST_VAL (double_test_value, double, nan, DBL_EPSILON, HUGE_VAL)
  100564. +TEST_FUNC (double_test_call, double, nan, DBL_EPSILON, HUGE_VAL)
  100565. #ifndef NO_LONG_DOUBLE
  100566. -TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  100567. +TEST_VAL (ldouble_test_value, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  100568. +TEST_FUNC (ldouble_test_call, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  100569. #endif
  100570. int
  100571. main (void)
  100572. {
  100573. - float_test ();
  100574. - double_test ();
  100575. + float_test_value ();
  100576. + float_test_call ();
  100577. + double_test_value ();
  100578. + double_test_call ();
  100579. #ifndef NO_LONG_DOUBLE
  100580. - ldouble_test ();
  100581. + ldouble_test_value ();
  100582. + ldouble_test_call ();
  100583. #endif
  100584. return errors != 0;
  100585. diff -Nur uClibc-0.9.33.2/test/math/gen-libm-test.pl uClibc/test/math/gen-libm-test.pl
  100586. --- uClibc-0.9.33.2/test/math/gen-libm-test.pl 2012-05-15 09:20:09.000000000 +0200
  100587. +++ uClibc/test/math/gen-libm-test.pl 2014-02-03 12:32:57.000000000 +0100
  100588. @@ -14,9 +14,8 @@
  100589. # Lesser General Public License for more details.
  100590. # You should have received a copy of the GNU Lesser General Public
  100591. -# License along with the GNU C Library; if not, write to the Free
  100592. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100593. -# 02111-1307 USA.
  100594. +# License along with the GNU C Library; see the file COPYING.LIB. If
  100595. +# not, see <http://www.gnu.org/licenses/>.
  100596. # This file needs to be tidied up
  100597. # Note that functions and tests share the same namespace.
  100598. diff -Nur uClibc-0.9.33.2/test/math/libm-test.inc uClibc/test/math/libm-test.inc
  100599. --- uClibc-0.9.33.2/test/math/libm-test.inc 2012-05-15 09:20:09.000000000 +0200
  100600. +++ uClibc/test/math/libm-test.inc 2014-02-03 12:32:57.000000000 +0100
  100601. @@ -13,9 +13,8 @@
  100602. Lesser General Public License for more details.
  100603. You should have received a copy of the GNU Lesser General Public
  100604. - License along with the GNU C Library; if not, write to the Free
  100605. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  100606. - 02111-1307 USA. */
  100607. + License along with the GNU C Library; if not, see
  100608. + <http://www.gnu.org/licenses/>. */
  100609. /* Part of testsuite for libm.
  100610. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-sh uClibc/test/math/libm-test-ulps-sh
  100611. --- uClibc-0.9.33.2/test/math/libm-test-ulps-sh 1970-01-01 01:00:00.000000000 +0100
  100612. +++ uClibc/test/math/libm-test-ulps-sh 2014-02-03 12:32:57.000000000 +0100
  100613. @@ -0,0 +1,1094 @@
  100614. +# Begin of automatic generation
  100615. +
  100616. +# asin
  100617. +Test "asin (-0.5) == -pi/6":
  100618. +float: 2
  100619. +ifloat: 2
  100620. +Test "asin (0.5) == pi/6":
  100621. +float: 2
  100622. +ifloat: 2
  100623. +Test "asin (0.7) == 0.7753974966107530637":
  100624. +double: 1
  100625. +float: 2
  100626. +idouble: 1
  100627. +ifloat: 2
  100628. +
  100629. +# atan2
  100630. +Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
  100631. +float: 3
  100632. +ifloat: 3
  100633. +Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
  100634. +float: 3
  100635. +ifloat: 3
  100636. +Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
  100637. +float: 4
  100638. +ifloat: 4
  100639. +
  100640. +# atanh
  100641. +Test "atanh (0.7) == 0.8673005276940531944":
  100642. +double: 1
  100643. +idouble: 1
  100644. +
  100645. +# cabs
  100646. +Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  100647. +float: 1
  100648. +ifloat: 1
  100649. +Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
  100650. +float: 1
  100651. +ifloat: 1
  100652. +Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
  100653. +float: 1
  100654. +ifloat: 1
  100655. +Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
  100656. +float: 1
  100657. +ifloat: 1
  100658. +Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
  100659. +double: 1
  100660. +idouble: 1
  100661. +Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  100662. +float: 1
  100663. +ifloat: 1
  100664. +
  100665. +# cacos
  100666. +Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  100667. +double: 1
  100668. +float: 1
  100669. +idouble: 1
  100670. +ifloat: 1
  100671. +Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  100672. +float: 1
  100673. +ifloat: 1
  100674. +
  100675. +# cacosh
  100676. +Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  100677. +double: 1
  100678. +float: 7
  100679. +idouble: 1
  100680. +ifloat: 7
  100681. +Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  100682. +double: 1
  100683. +float: 3
  100684. +idouble: 1
  100685. +ifloat: 3
  100686. +Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
  100687. +double: 1
  100688. +float: 1
  100689. +idouble: 1
  100690. +ifloat: 1
  100691. +
  100692. +# casin
  100693. +Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  100694. +double: 3
  100695. +float: 2
  100696. +idouble: 3
  100697. +ifloat: 2
  100698. +Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  100699. +float: 1
  100700. +ifloat: 1
  100701. +
  100702. +# casinh
  100703. +Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  100704. +double: 5
  100705. +float: 1
  100706. +idouble: 5
  100707. +ifloat: 1
  100708. +Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  100709. +double: 3
  100710. +float: 6
  100711. +idouble: 3
  100712. +ifloat: 6
  100713. +Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  100714. +double: 1
  100715. +idouble: 1
  100716. +Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  100717. +float: 1
  100718. +ifloat: 1
  100719. +
  100720. +# catan
  100721. +Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  100722. +float: 3
  100723. +ifloat: 3
  100724. +Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  100725. +double: 1
  100726. +float: 1
  100727. +idouble: 1
  100728. +ifloat: 1
  100729. +Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  100730. +float: 4
  100731. +ifloat: 4
  100732. +Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  100733. +double: 1
  100734. +idouble: 1
  100735. +
  100736. +# catanh
  100737. +Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  100738. +double: 4
  100739. +idouble: 4
  100740. +Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  100741. +float: 4
  100742. +ifloat: 4
  100743. +Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  100744. +float: 1
  100745. +ifloat: 1
  100746. +Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  100747. +double: 1
  100748. +float: 6
  100749. +idouble: 1
  100750. +ifloat: 6
  100751. +
  100752. +# cbrt
  100753. +Test "cbrt (-27.0) == -3.0":
  100754. +double: 1
  100755. +idouble: 1
  100756. +Test "cbrt (0.970299) == 0.99":
  100757. +double: 1
  100758. +idouble: 1
  100759. +
  100760. +# ccos
  100761. +Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
  100762. +float: 1
  100763. +ifloat: 1
  100764. +Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  100765. +double: 1
  100766. +idouble: 1
  100767. +Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  100768. +double: 1
  100769. +idouble: 1
  100770. +
  100771. +# ccosh
  100772. +Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  100773. +float: 1
  100774. +ifloat: 1
  100775. +Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  100776. +float: 1
  100777. +ifloat: 1
  100778. +Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  100779. +double: 1
  100780. +float: 1
  100781. +idouble: 1
  100782. +ifloat: 1
  100783. +Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  100784. +double: 1
  100785. +idouble: 1
  100786. +
  100787. +# cexp
  100788. +Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
  100789. +float: 1
  100790. +ifloat: 1
  100791. +Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  100792. +double: 1
  100793. +float: 1
  100794. +idouble: 1
  100795. +ifloat: 1
  100796. +Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  100797. +float: 1
  100798. +ifloat: 1
  100799. +
  100800. +# clog
  100801. +Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
  100802. +double: 1
  100803. +float: 3
  100804. +idouble: 1
  100805. +ifloat: 3
  100806. +
  100807. +# clog10
  100808. +Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
  100809. +float: 1
  100810. +ifloat: 1
  100811. +Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
  100812. +float: 1
  100813. +ifloat: 1
  100814. +Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
  100815. +double: 1
  100816. +float: 5
  100817. +idouble: 1
  100818. +ifloat: 5
  100819. +Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
  100820. +float: 1
  100821. +ifloat: 1
  100822. +Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
  100823. +float: 1
  100824. +ifloat: 1
  100825. +Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
  100826. +float: 1
  100827. +ifloat: 1
  100828. +Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
  100829. +float: 1
  100830. +ifloat: 1
  100831. +Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
  100832. +float: 1
  100833. +ifloat: 1
  100834. +Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
  100835. +float: 1
  100836. +ifloat: 1
  100837. +Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
  100838. +float: 1
  100839. +ifloat: 1
  100840. +Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
  100841. +float: 1
  100842. +ifloat: 1
  100843. +Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  100844. +double: 1
  100845. +float: 1
  100846. +idouble: 1
  100847. +ifloat: 1
  100848. +Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  100849. +double: 1
  100850. +idouble: 1
  100851. +Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
  100852. +float: 1
  100853. +ifloat: 1
  100854. +Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
  100855. +float: 1
  100856. +ifloat: 1
  100857. +Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
  100858. +float: 1
  100859. +ifloat: 1
  100860. +Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
  100861. +float: 1
  100862. +ifloat: 1
  100863. +
  100864. +# cos
  100865. +Test "cos (0.7) == 0.7648421872844884262":
  100866. +double: 1
  100867. +float: 1
  100868. +idouble: 1
  100869. +ifloat: 1
  100870. +Test "cos (M_PI_6l * 2.0) == 0.5":
  100871. +double: 1
  100872. +float: 0.5
  100873. +idouble: 1
  100874. +ifloat: 0.5
  100875. +Test "cos (M_PI_6l * 4.0) == -0.5":
  100876. +double: 2
  100877. +float: 1
  100878. +idouble: 2
  100879. +ifloat: 1
  100880. +Test "cos (pi/2) == 0":
  100881. +double: 0.2758
  100882. +float: 0.3667
  100883. +idouble: 0.2758
  100884. +ifloat: 0.3667
  100885. +
  100886. +# cpow
  100887. +Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  100888. +double: 1
  100889. +float: 4
  100890. +idouble: 1
  100891. +ifloat: 4
  100892. +Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  100893. +float: 2
  100894. +ifloat: 2
  100895. +Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
  100896. +double: 1.1031
  100897. +float: 1.5
  100898. +idouble: 1.1031
  100899. +ifloat: 1.5
  100900. +
  100901. +# csin
  100902. +Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
  100903. +float: 1
  100904. +ifloat: 1
  100905. +
  100906. +# csinh
  100907. +Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
  100908. +double: 1
  100909. +idouble: 1
  100910. +Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  100911. +float: 1
  100912. +ifloat: 1
  100913. +Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  100914. +float: 1
  100915. +ifloat: 1
  100916. +
  100917. +# csqrt
  100918. +Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
  100919. +float: 1
  100920. +ifloat: 1
  100921. +Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
  100922. +float: 1
  100923. +ifloat: 1
  100924. +Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  100925. +double: 1
  100926. +float: 1
  100927. +idouble: 1
  100928. +ifloat: 1
  100929. +Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  100930. +float: 1
  100931. +ifloat: 1
  100932. +
  100933. +# ctan
  100934. +Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
  100935. +double: 1
  100936. +idouble: 1
  100937. +Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  100938. +float: 1
  100939. +ifloat: 1
  100940. +Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  100941. +double: 1
  100942. +float: 1
  100943. +idouble: 1
  100944. +ifloat: 1
  100945. +
  100946. +# ctanh
  100947. +Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
  100948. +double: 1
  100949. +float: 2
  100950. +idouble: 1
  100951. +ifloat: 2
  100952. +Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
  100953. +float: 1
  100954. +ifloat: 1
  100955. +Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  100956. +double: 2
  100957. +float: 1
  100958. +idouble: 2
  100959. +ifloat: 1
  100960. +Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  100961. +double: 2
  100962. +float: 1
  100963. +idouble: 2
  100964. +ifloat: 1
  100965. +
  100966. +# erfc
  100967. +Test "erfc (0.7) == 0.32219880616258152702":
  100968. +double: 1
  100969. +idouble: 1
  100970. +Test "erfc (1.2) == 0.089686021770364619762":
  100971. +double: 2
  100972. +float: 2
  100973. +idouble: 2
  100974. +ifloat: 2
  100975. +Test "erfc (2.0) == 0.0046777349810472658379":
  100976. +double: 1
  100977. +idouble: 1
  100978. +Test "erfc (4.1) == 0.67000276540848983727e-8":
  100979. +double: 24
  100980. +float: 12
  100981. +idouble: 24
  100982. +ifloat: 12
  100983. +
  100984. +# exp10
  100985. +Test "exp10 (-1) == 0.1":
  100986. +double: 2
  100987. +float: 1
  100988. +idouble: 2
  100989. +ifloat: 1
  100990. +Test "exp10 (0.7) == 5.0118723362727228500":
  100991. +float: 1
  100992. +ifloat: 1
  100993. +Test "exp10 (3) == 1000":
  100994. +double: 6
  100995. +float: 2
  100996. +idouble: 6
  100997. +ifloat: 2
  100998. +
  100999. +# expm1
  101000. +Test "expm1 (1) == M_El - 1.0":
  101001. +float: 1
  101002. +ifloat: 1
  101003. +
  101004. +# fmod
  101005. +Test "fmod (-6.5, -2.3) == -1.9":
  101006. +double: 2
  101007. +float: 1
  101008. +idouble: 2
  101009. +ifloat: 1
  101010. +Test "fmod (-6.5, 2.3) == -1.9":
  101011. +double: 2
  101012. +float: 1
  101013. +idouble: 2
  101014. +ifloat: 1
  101015. +Test "fmod (6.5, -2.3) == 1.9":
  101016. +double: 2
  101017. +float: 1
  101018. +idouble: 2
  101019. +ifloat: 1
  101020. +Test "fmod (6.5, 2.3) == 1.9":
  101021. +double: 2
  101022. +float: 1
  101023. +idouble: 2
  101024. +ifloat: 1
  101025. +
  101026. +# hypot
  101027. +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  101028. +float: 1
  101029. +ifloat: 1
  101030. +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  101031. +float: 1
  101032. +ifloat: 1
  101033. +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  101034. +float: 1
  101035. +ifloat: 1
  101036. +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  101037. +float: 1
  101038. +ifloat: 1
  101039. +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  101040. +float: 1
  101041. +ifloat: 1
  101042. +Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
  101043. +double: 1
  101044. +idouble: 1
  101045. +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  101046. +float: 1
  101047. +ifloat: 1
  101048. +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  101049. +float: 1
  101050. +ifloat: 1
  101051. +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  101052. +float: 1
  101053. +ifloat: 1
  101054. +
  101055. +# j0
  101056. +Test "j0 (10.0) == -0.24593576445134833520":
  101057. +double: 2
  101058. +float: 1
  101059. +idouble: 2
  101060. +ifloat: 1
  101061. +Test "j0 (2.0) == 0.22389077914123566805":
  101062. +float: 2
  101063. +ifloat: 2
  101064. +Test "j0 (8.0) == 0.17165080713755390609":
  101065. +float: 1
  101066. +ifloat: 1
  101067. +
  101068. +# j1
  101069. +Test "j1 (10.0) == 0.043472746168861436670":
  101070. +float: 2
  101071. +ifloat: 2
  101072. +Test "j1 (2.0) == 0.57672480775687338720":
  101073. +double: 1
  101074. +idouble: 1
  101075. +Test "j1 (8.0) == 0.23463634685391462438":
  101076. +double: 1
  101077. +idouble: 1
  101078. +
  101079. +# jn
  101080. +Test "jn (0, 10.0) == -0.24593576445134833520":
  101081. +double: 2
  101082. +float: 1
  101083. +idouble: 2
  101084. +ifloat: 1
  101085. +Test "jn (0, 2.0) == 0.22389077914123566805":
  101086. +float: 2
  101087. +ifloat: 2
  101088. +Test "jn (0, 8.0) == 0.17165080713755390609":
  101089. +float: 1
  101090. +ifloat: 1
  101091. +Test "jn (1, 10.0) == 0.043472746168861436670":
  101092. +float: 2
  101093. +ifloat: 2
  101094. +Test "jn (1, 2.0) == 0.57672480775687338720":
  101095. +double: 1
  101096. +idouble: 1
  101097. +Test "jn (1, 8.0) == 0.23463634685391462438":
  101098. +double: 1
  101099. +idouble: 1
  101100. +Test "jn (10, 0.1) == 0.26905328954342155795e-19":
  101101. +double: 6
  101102. +float: 4
  101103. +idouble: 6
  101104. +ifloat: 4
  101105. +Test "jn (10, 0.7) == 0.75175911502153953928e-11":
  101106. +double: 3
  101107. +float: 1
  101108. +idouble: 3
  101109. +ifloat: 1
  101110. +Test "jn (10, 10.0) == 0.20748610663335885770":
  101111. +double: 4
  101112. +float: 3
  101113. +idouble: 4
  101114. +ifloat: 3
  101115. +Test "jn (10, 2.0) == 0.25153862827167367096e-6":
  101116. +float: 4
  101117. +ifloat: 4
  101118. +Test "jn (3, 0.1) == 0.000020820315754756261429":
  101119. +double: 1
  101120. +idouble: 1
  101121. +Test "jn (3, 0.7) == 0.0069296548267508408077":
  101122. +float: 1
  101123. +ifloat: 1
  101124. +Test "jn (3, 10.0) == 0.058379379305186812343":
  101125. +double: 3
  101126. +float: 1
  101127. +idouble: 3
  101128. +ifloat: 1
  101129. +Test "jn (3, 2.0) == 0.12894324947440205110":
  101130. +double: 1
  101131. +float: 2
  101132. +idouble: 1
  101133. +ifloat: 2
  101134. +
  101135. +# lgamma
  101136. +Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  101137. +double: 1
  101138. +float: 1
  101139. +idouble: 1
  101140. +ifloat: 1
  101141. +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  101142. +double: 1
  101143. +float: 2
  101144. +idouble: 1
  101145. +ifloat: 2
  101146. +
  101147. +# log
  101148. +Test "log (0.7) == -0.35667494393873237891263871124118447":
  101149. +double: 1
  101150. +float: 1
  101151. +idouble: 1
  101152. +ifloat: 1
  101153. +
  101154. +# log10
  101155. +Test "log10 (0.7) == -0.15490195998574316929":
  101156. +double: 1
  101157. +float: 1
  101158. +idouble: 1
  101159. +ifloat: 1
  101160. +Test "log10 (e) == log10(e)":
  101161. +float: 1
  101162. +ifloat: 1
  101163. +
  101164. +# log1p
  101165. +Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
  101166. +double: 1
  101167. +float: 1
  101168. +idouble: 1
  101169. +ifloat: 1
  101170. +
  101171. +# log2
  101172. +Test "log2 (0.7) == -0.51457317282975824043":
  101173. +double: 1
  101174. +float: 1
  101175. +idouble: 1
  101176. +ifloat: 1
  101177. +
  101178. +# sincos
  101179. +Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
  101180. +double: 1
  101181. +float: 1
  101182. +idouble: 1
  101183. +ifloat: 1
  101184. +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
  101185. +double: 1
  101186. +float: 0.5
  101187. +idouble: 1
  101188. +ifloat: 0.5
  101189. +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
  101190. +double: 1
  101191. +float: 1
  101192. +idouble: 1
  101193. +ifloat: 1
  101194. +Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
  101195. +double: 0.2758
  101196. +float: 0.3667
  101197. +idouble: 0.2758
  101198. +ifloat: 0.3667
  101199. +Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res":
  101200. +float: 1
  101201. +ifloat: 1
  101202. +
  101203. +# sinh
  101204. +Test "sinh (0.7) == 0.75858370183953350346":
  101205. +double: 1
  101206. +float: 1
  101207. +idouble: 1
  101208. +ifloat: 1
  101209. +
  101210. +# tan
  101211. +Test "tan (pi/4) == 1":
  101212. +double: 0.5
  101213. +idouble: 0.5
  101214. +
  101215. +# tanh
  101216. +Test "tanh (0.7) == 0.60436777711716349631":
  101217. +double: 1
  101218. +float: 1
  101219. +idouble: 1
  101220. +ifloat: 1
  101221. +
  101222. +# tgamma
  101223. +Test "tgamma (-0.5) == -2 sqrt (pi)":
  101224. +double: 1
  101225. +float: 1
  101226. +idouble: 1
  101227. +ifloat: 1
  101228. +Test "tgamma (0.5) == sqrt (pi)":
  101229. +float: 1
  101230. +ifloat: 1
  101231. +Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
  101232. +double: 1
  101233. +float: 1
  101234. +idouble: 1
  101235. +ifloat: 1
  101236. +
  101237. +# y0
  101238. +Test "y0 (0.7) == -0.19066492933739506743":
  101239. +double: 2
  101240. +float: 1
  101241. +idouble: 2
  101242. +ifloat: 1
  101243. +Test "y0 (1.0) == 0.088256964215676957983":
  101244. +double: 2
  101245. +float: 1
  101246. +idouble: 2
  101247. +ifloat: 1
  101248. +Test "y0 (1.5) == 0.38244892379775884396":
  101249. +double: 2
  101250. +float: 1
  101251. +idouble: 2
  101252. +ifloat: 1
  101253. +Test "y0 (10.0) == 0.055671167283599391424":
  101254. +float: 1
  101255. +ifloat: 1
  101256. +Test "y0 (8.0) == 0.22352148938756622053":
  101257. +double: 1
  101258. +float: 1
  101259. +idouble: 1
  101260. +ifloat: 1
  101261. +
  101262. +# y1
  101263. +Test "y1 (0.1) == -6.4589510947020269877":
  101264. +double: 1
  101265. +idouble: 1
  101266. +Test "y1 (0.7) == -1.1032498719076333697":
  101267. +double: 1
  101268. +float: 1
  101269. +idouble: 1
  101270. +ifloat: 1
  101271. +Test "y1 (1.5) == -0.41230862697391129595":
  101272. +float: 1
  101273. +ifloat: 1
  101274. +Test "y1 (10.0) == 0.24901542420695388392":
  101275. +double: 3
  101276. +float: 1
  101277. +idouble: 3
  101278. +ifloat: 1
  101279. +Test "y1 (2.0) == -0.10703243154093754689":
  101280. +double: 1
  101281. +float: 1
  101282. +idouble: 1
  101283. +ifloat: 1
  101284. +Test "y1 (8.0) == -0.15806046173124749426":
  101285. +double: 1
  101286. +float: 2
  101287. +idouble: 1
  101288. +ifloat: 2
  101289. +
  101290. +# yn
  101291. +Test "yn (0, 0.7) == -0.19066492933739506743":
  101292. +double: 2
  101293. +float: 1
  101294. +idouble: 2
  101295. +ifloat: 1
  101296. +Test "yn (0, 1.0) == 0.088256964215676957983":
  101297. +double: 2
  101298. +float: 1
  101299. +idouble: 2
  101300. +ifloat: 1
  101301. +Test "yn (0, 1.5) == 0.38244892379775884396":
  101302. +double: 2
  101303. +float: 1
  101304. +idouble: 2
  101305. +ifloat: 1
  101306. +Test "yn (0, 10.0) == 0.055671167283599391424":
  101307. +float: 1
  101308. +ifloat: 1
  101309. +Test "yn (0, 8.0) == 0.22352148938756622053":
  101310. +double: 1
  101311. +float: 1
  101312. +idouble: 1
  101313. +ifloat: 1
  101314. +Test "yn (1, 0.1) == -6.4589510947020269877":
  101315. +double: 1
  101316. +idouble: 1
  101317. +Test "yn (1, 0.7) == -1.1032498719076333697":
  101318. +double: 1
  101319. +float: 1
  101320. +idouble: 1
  101321. +ifloat: 1
  101322. +Test "yn (1, 1.5) == -0.41230862697391129595":
  101323. +float: 1
  101324. +ifloat: 1
  101325. +Test "yn (1, 10.0) == 0.24901542420695388392":
  101326. +double: 3
  101327. +float: 1
  101328. +idouble: 3
  101329. +ifloat: 1
  101330. +Test "yn (1, 2.0) == -0.10703243154093754689":
  101331. +double: 1
  101332. +float: 1
  101333. +idouble: 1
  101334. +ifloat: 1
  101335. +Test "yn (1, 8.0) == -0.15806046173124749426":
  101336. +double: 1
  101337. +float: 2
  101338. +idouble: 1
  101339. +ifloat: 2
  101340. +Test "yn (10, 0.1) == -0.11831335132045197885e19":
  101341. +double: 2
  101342. +float: 2
  101343. +idouble: 2
  101344. +ifloat: 2
  101345. +Test "yn (10, 0.7) == -0.42447194260703866924e10":
  101346. +double: 3
  101347. +idouble: 3
  101348. +Test "yn (10, 1.0) == -0.12161801427868918929e9":
  101349. +double: 1
  101350. +idouble: 1
  101351. +Test "yn (10, 10.0) == -0.35981415218340272205":
  101352. +double: 1
  101353. +float: 1
  101354. +idouble: 1
  101355. +ifloat: 1
  101356. +Test "yn (10, 2.0) == -129184.54220803928264":
  101357. +double: 2
  101358. +idouble: 2
  101359. +Test "yn (3, 0.1) == -5099.3323786129048894":
  101360. +double: 1
  101361. +float: 1
  101362. +idouble: 1
  101363. +ifloat: 1
  101364. +Test "yn (3, 0.7) == -15.819479052819633505":
  101365. +double: 3
  101366. +float: 1
  101367. +idouble: 3
  101368. +ifloat: 1
  101369. +Test "yn (3, 10.0) == -0.25136265718383732978":
  101370. +double: 1
  101371. +float: 1
  101372. +idouble: 1
  101373. +ifloat: 1
  101374. +Test "yn (3, 2.0) == -1.1277837768404277861":
  101375. +double: 1
  101376. +idouble: 1
  101377. +
  101378. +# Maximal error of functions:
  101379. +Function: "asin":
  101380. +double: 1
  101381. +float: 2
  101382. +idouble: 1
  101383. +ifloat: 2
  101384. +
  101385. +Function: "atan2":
  101386. +float: 4
  101387. +ifloat: 4
  101388. +
  101389. +Function: "atanh":
  101390. +double: 1
  101391. +idouble: 1
  101392. +
  101393. +Function: "cabs":
  101394. +double: 1
  101395. +float: 1
  101396. +idouble: 1
  101397. +ifloat: 1
  101398. +
  101399. +Function: Real part of "cacos":
  101400. +double: 1
  101401. +float: 1
  101402. +idouble: 1
  101403. +ifloat: 1
  101404. +
  101405. +Function: Imaginary part of "cacos":
  101406. +float: 1
  101407. +ifloat: 1
  101408. +
  101409. +Function: Real part of "cacosh":
  101410. +double: 1
  101411. +float: 7
  101412. +idouble: 1
  101413. +ifloat: 7
  101414. +
  101415. +Function: Imaginary part of "cacosh":
  101416. +double: 1
  101417. +float: 3
  101418. +idouble: 1
  101419. +ifloat: 3
  101420. +
  101421. +Function: Real part of "casin":
  101422. +double: 3
  101423. +float: 2
  101424. +idouble: 3
  101425. +ifloat: 2
  101426. +
  101427. +Function: Imaginary part of "casin":
  101428. +float: 1
  101429. +ifloat: 1
  101430. +
  101431. +Function: Real part of "casinh":
  101432. +double: 5
  101433. +float: 1
  101434. +idouble: 5
  101435. +ifloat: 1
  101436. +
  101437. +Function: Imaginary part of "casinh":
  101438. +double: 3
  101439. +float: 6
  101440. +idouble: 3
  101441. +ifloat: 6
  101442. +
  101443. +Function: Real part of "catan":
  101444. +float: 4
  101445. +ifloat: 4
  101446. +
  101447. +Function: Imaginary part of "catan":
  101448. +double: 1
  101449. +float: 1
  101450. +idouble: 1
  101451. +ifloat: 1
  101452. +
  101453. +Function: Real part of "catanh":
  101454. +double: 4
  101455. +float: 1
  101456. +idouble: 4
  101457. +ifloat: 1
  101458. +
  101459. +Function: Imaginary part of "catanh":
  101460. +double: 1
  101461. +float: 6
  101462. +idouble: 1
  101463. +ifloat: 6
  101464. +
  101465. +Function: "cbrt":
  101466. +double: 1
  101467. +idouble: 1
  101468. +
  101469. +Function: Real part of "ccos":
  101470. +double: 1
  101471. +idouble: 1
  101472. +
  101473. +Function: Imaginary part of "ccos":
  101474. +double: 1
  101475. +float: 1
  101476. +idouble: 1
  101477. +ifloat: 1
  101478. +
  101479. +Function: Real part of "ccosh":
  101480. +double: 1
  101481. +float: 1
  101482. +idouble: 1
  101483. +ifloat: 1
  101484. +
  101485. +Function: Imaginary part of "ccosh":
  101486. +double: 1
  101487. +float: 1
  101488. +idouble: 1
  101489. +ifloat: 1
  101490. +
  101491. +Function: Real part of "cexp":
  101492. +double: 1
  101493. +float: 1
  101494. +idouble: 1
  101495. +ifloat: 1
  101496. +
  101497. +Function: Imaginary part of "cexp":
  101498. +float: 1
  101499. +ifloat: 1
  101500. +
  101501. +Function: Imaginary part of "clog":
  101502. +double: 1
  101503. +float: 3
  101504. +idouble: 1
  101505. +ifloat: 3
  101506. +
  101507. +Function: Real part of "clog10":
  101508. +double: 1
  101509. +float: 1
  101510. +idouble: 1
  101511. +ifloat: 1
  101512. +
  101513. +Function: Imaginary part of "clog10":
  101514. +double: 1
  101515. +float: 5
  101516. +idouble: 1
  101517. +ifloat: 5
  101518. +
  101519. +Function: "cos":
  101520. +double: 2
  101521. +float: 1
  101522. +idouble: 2
  101523. +ifloat: 1
  101524. +
  101525. +Function: Real part of "cpow":
  101526. +double: 1
  101527. +float: 4
  101528. +idouble: 1
  101529. +ifloat: 4
  101530. +
  101531. +Function: Imaginary part of "cpow":
  101532. +double: 1.1031
  101533. +float: 2
  101534. +idouble: 1.1031
  101535. +ifloat: 2
  101536. +
  101537. +Function: Imaginary part of "csin":
  101538. +float: 1
  101539. +ifloat: 1
  101540. +
  101541. +Function: Real part of "csinh":
  101542. +float: 1
  101543. +ifloat: 1
  101544. +
  101545. +Function: Imaginary part of "csinh":
  101546. +double: 1
  101547. +float: 1
  101548. +idouble: 1
  101549. +ifloat: 1
  101550. +
  101551. +Function: Real part of "csqrt":
  101552. +double: 1
  101553. +float: 1
  101554. +idouble: 1
  101555. +ifloat: 1
  101556. +
  101557. +Function: Imaginary part of "csqrt":
  101558. +float: 1
  101559. +ifloat: 1
  101560. +
  101561. +Function: Real part of "ctan":
  101562. +double: 1
  101563. +float: 1
  101564. +idouble: 1
  101565. +ifloat: 1
  101566. +
  101567. +Function: Imaginary part of "ctan":
  101568. +double: 1
  101569. +float: 1
  101570. +idouble: 1
  101571. +ifloat: 1
  101572. +
  101573. +Function: Real part of "ctanh":
  101574. +double: 2
  101575. +float: 2
  101576. +idouble: 2
  101577. +ifloat: 2
  101578. +
  101579. +Function: Imaginary part of "ctanh":
  101580. +double: 2
  101581. +float: 1
  101582. +idouble: 2
  101583. +ifloat: 1
  101584. +
  101585. +Function: "erfc":
  101586. +double: 24
  101587. +float: 12
  101588. +idouble: 24
  101589. +ifloat: 12
  101590. +
  101591. +Function: "exp10":
  101592. +double: 6
  101593. +float: 2
  101594. +idouble: 6
  101595. +ifloat: 2
  101596. +
  101597. +Function: "expm1":
  101598. +float: 1
  101599. +ifloat: 1
  101600. +
  101601. +Function: "fmod":
  101602. +double: 2
  101603. +float: 1
  101604. +idouble: 2
  101605. +ifloat: 1
  101606. +
  101607. +Function: "hypot":
  101608. +double: 1
  101609. +float: 1
  101610. +idouble: 1
  101611. +ifloat: 1
  101612. +
  101613. +Function: "j0":
  101614. +double: 2
  101615. +float: 2
  101616. +idouble: 2
  101617. +ifloat: 2
  101618. +
  101619. +Function: "j1":
  101620. +double: 1
  101621. +float: 2
  101622. +idouble: 1
  101623. +ifloat: 2
  101624. +
  101625. +Function: "jn":
  101626. +double: 6
  101627. +float: 4
  101628. +idouble: 6
  101629. +ifloat: 4
  101630. +
  101631. +Function: "lgamma":
  101632. +double: 1
  101633. +float: 2
  101634. +idouble: 1
  101635. +ifloat: 2
  101636. +
  101637. +Function: "log":
  101638. +double: 1
  101639. +float: 1
  101640. +idouble: 1
  101641. +ifloat: 1
  101642. +
  101643. +Function: "log10":
  101644. +double: 1
  101645. +float: 1
  101646. +idouble: 1
  101647. +ifloat: 1
  101648. +
  101649. +Function: "log1p":
  101650. +double: 1
  101651. +float: 1
  101652. +idouble: 1
  101653. +ifloat: 1
  101654. +
  101655. +Function: "log2":
  101656. +double: 1
  101657. +float: 1
  101658. +idouble: 1
  101659. +ifloat: 1
  101660. +
  101661. +Function: "sincos":
  101662. +double: 1
  101663. +float: 1
  101664. +idouble: 1
  101665. +ifloat: 1
  101666. +
  101667. +Function: "sinh":
  101668. +double: 1
  101669. +float: 1
  101670. +idouble: 1
  101671. +ifloat: 1
  101672. +
  101673. +Function: "tan":
  101674. +double: 0.5
  101675. +idouble: 0.5
  101676. +
  101677. +Function: "tanh":
  101678. +double: 1
  101679. +float: 1
  101680. +idouble: 1
  101681. +ifloat: 1
  101682. +
  101683. +Function: "tgamma":
  101684. +double: 1
  101685. +float: 1
  101686. +idouble: 1
  101687. +ifloat: 1
  101688. +
  101689. +Function: "y0":
  101690. +double: 2
  101691. +float: 1
  101692. +idouble: 2
  101693. +ifloat: 1
  101694. +
  101695. +Function: "y1":
  101696. +double: 3
  101697. +float: 2
  101698. +idouble: 3
  101699. +ifloat: 2
  101700. +
  101701. +Function: "yn":
  101702. +double: 3
  101703. +float: 2
  101704. +idouble: 3
  101705. +ifloat: 2
  101706. +
  101707. +# end of automatic generation
  101708. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-sh4 uClibc/test/math/libm-test-ulps-sh4
  101709. --- uClibc-0.9.33.2/test/math/libm-test-ulps-sh4 2012-05-15 09:20:09.000000000 +0200
  101710. +++ uClibc/test/math/libm-test-ulps-sh4 1970-01-01 01:00:00.000000000 +0100
  101711. @@ -1,1094 +0,0 @@
  101712. -# Begin of automatic generation
  101713. -
  101714. -# asin
  101715. -Test "asin (-0.5) == -pi/6":
  101716. -float: 2
  101717. -ifloat: 2
  101718. -Test "asin (0.5) == pi/6":
  101719. -float: 2
  101720. -ifloat: 2
  101721. -Test "asin (0.7) == 0.7753974966107530637":
  101722. -double: 1
  101723. -float: 2
  101724. -idouble: 1
  101725. -ifloat: 2
  101726. -
  101727. -# atan2
  101728. -Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
  101729. -float: 3
  101730. -ifloat: 3
  101731. -Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
  101732. -float: 3
  101733. -ifloat: 3
  101734. -Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
  101735. -float: 4
  101736. -ifloat: 4
  101737. -
  101738. -# atanh
  101739. -Test "atanh (0.7) == 0.8673005276940531944":
  101740. -double: 1
  101741. -idouble: 1
  101742. -
  101743. -# cabs
  101744. -Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  101745. -float: 1
  101746. -ifloat: 1
  101747. -Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
  101748. -float: 1
  101749. -ifloat: 1
  101750. -Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
  101751. -float: 1
  101752. -ifloat: 1
  101753. -Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
  101754. -float: 1
  101755. -ifloat: 1
  101756. -Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
  101757. -double: 1
  101758. -idouble: 1
  101759. -Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  101760. -float: 1
  101761. -ifloat: 1
  101762. -
  101763. -# cacos
  101764. -Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  101765. -double: 1
  101766. -float: 1
  101767. -idouble: 1
  101768. -ifloat: 1
  101769. -Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  101770. -float: 1
  101771. -ifloat: 1
  101772. -
  101773. -# cacosh
  101774. -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  101775. -double: 1
  101776. -float: 7
  101777. -idouble: 1
  101778. -ifloat: 7
  101779. -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  101780. -double: 1
  101781. -float: 3
  101782. -idouble: 1
  101783. -ifloat: 3
  101784. -Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
  101785. -double: 1
  101786. -float: 1
  101787. -idouble: 1
  101788. -ifloat: 1
  101789. -
  101790. -# casin
  101791. -Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  101792. -double: 3
  101793. -float: 2
  101794. -idouble: 3
  101795. -ifloat: 2
  101796. -Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  101797. -float: 1
  101798. -ifloat: 1
  101799. -
  101800. -# casinh
  101801. -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  101802. -double: 5
  101803. -float: 1
  101804. -idouble: 5
  101805. -ifloat: 1
  101806. -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  101807. -double: 3
  101808. -float: 6
  101809. -idouble: 3
  101810. -ifloat: 6
  101811. -Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  101812. -double: 1
  101813. -idouble: 1
  101814. -Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  101815. -float: 1
  101816. -ifloat: 1
  101817. -
  101818. -# catan
  101819. -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  101820. -float: 3
  101821. -ifloat: 3
  101822. -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  101823. -double: 1
  101824. -float: 1
  101825. -idouble: 1
  101826. -ifloat: 1
  101827. -Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  101828. -float: 4
  101829. -ifloat: 4
  101830. -Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  101831. -double: 1
  101832. -idouble: 1
  101833. -
  101834. -# catanh
  101835. -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  101836. -double: 4
  101837. -idouble: 4
  101838. -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  101839. -float: 4
  101840. -ifloat: 4
  101841. -Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  101842. -float: 1
  101843. -ifloat: 1
  101844. -Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  101845. -double: 1
  101846. -float: 6
  101847. -idouble: 1
  101848. -ifloat: 6
  101849. -
  101850. -# cbrt
  101851. -Test "cbrt (-27.0) == -3.0":
  101852. -double: 1
  101853. -idouble: 1
  101854. -Test "cbrt (0.970299) == 0.99":
  101855. -double: 1
  101856. -idouble: 1
  101857. -
  101858. -# ccos
  101859. -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
  101860. -float: 1
  101861. -ifloat: 1
  101862. -Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  101863. -double: 1
  101864. -idouble: 1
  101865. -Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  101866. -double: 1
  101867. -idouble: 1
  101868. -
  101869. -# ccosh
  101870. -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  101871. -float: 1
  101872. -ifloat: 1
  101873. -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  101874. -float: 1
  101875. -ifloat: 1
  101876. -Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  101877. -double: 1
  101878. -float: 1
  101879. -idouble: 1
  101880. -ifloat: 1
  101881. -Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  101882. -double: 1
  101883. -idouble: 1
  101884. -
  101885. -# cexp
  101886. -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
  101887. -float: 1
  101888. -ifloat: 1
  101889. -Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  101890. -double: 1
  101891. -float: 1
  101892. -idouble: 1
  101893. -ifloat: 1
  101894. -Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  101895. -float: 1
  101896. -ifloat: 1
  101897. -
  101898. -# clog
  101899. -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
  101900. -double: 1
  101901. -float: 3
  101902. -idouble: 1
  101903. -ifloat: 3
  101904. -
  101905. -# clog10
  101906. -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
  101907. -float: 1
  101908. -ifloat: 1
  101909. -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
  101910. -float: 1
  101911. -ifloat: 1
  101912. -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
  101913. -double: 1
  101914. -float: 5
  101915. -idouble: 1
  101916. -ifloat: 5
  101917. -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
  101918. -float: 1
  101919. -ifloat: 1
  101920. -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
  101921. -float: 1
  101922. -ifloat: 1
  101923. -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
  101924. -float: 1
  101925. -ifloat: 1
  101926. -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
  101927. -float: 1
  101928. -ifloat: 1
  101929. -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
  101930. -float: 1
  101931. -ifloat: 1
  101932. -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
  101933. -float: 1
  101934. -ifloat: 1
  101935. -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
  101936. -float: 1
  101937. -ifloat: 1
  101938. -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
  101939. -float: 1
  101940. -ifloat: 1
  101941. -Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  101942. -double: 1
  101943. -float: 1
  101944. -idouble: 1
  101945. -ifloat: 1
  101946. -Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  101947. -double: 1
  101948. -idouble: 1
  101949. -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
  101950. -float: 1
  101951. -ifloat: 1
  101952. -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
  101953. -float: 1
  101954. -ifloat: 1
  101955. -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
  101956. -float: 1
  101957. -ifloat: 1
  101958. -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
  101959. -float: 1
  101960. -ifloat: 1
  101961. -
  101962. -# cos
  101963. -Test "cos (0.7) == 0.7648421872844884262":
  101964. -double: 1
  101965. -float: 1
  101966. -idouble: 1
  101967. -ifloat: 1
  101968. -Test "cos (M_PI_6l * 2.0) == 0.5":
  101969. -double: 1
  101970. -float: 0.5
  101971. -idouble: 1
  101972. -ifloat: 0.5
  101973. -Test "cos (M_PI_6l * 4.0) == -0.5":
  101974. -double: 2
  101975. -float: 1
  101976. -idouble: 2
  101977. -ifloat: 1
  101978. -Test "cos (pi/2) == 0":
  101979. -double: 0.2758
  101980. -float: 0.3667
  101981. -idouble: 0.2758
  101982. -ifloat: 0.3667
  101983. -
  101984. -# cpow
  101985. -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  101986. -double: 1
  101987. -float: 4
  101988. -idouble: 1
  101989. -ifloat: 4
  101990. -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  101991. -float: 2
  101992. -ifloat: 2
  101993. -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
  101994. -double: 1.1031
  101995. -float: 1.5
  101996. -idouble: 1.1031
  101997. -ifloat: 1.5
  101998. -
  101999. -# csin
  102000. -Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
  102001. -float: 1
  102002. -ifloat: 1
  102003. -
  102004. -# csinh
  102005. -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
  102006. -double: 1
  102007. -idouble: 1
  102008. -Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  102009. -float: 1
  102010. -ifloat: 1
  102011. -Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  102012. -float: 1
  102013. -ifloat: 1
  102014. -
  102015. -# csqrt
  102016. -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
  102017. -float: 1
  102018. -ifloat: 1
  102019. -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
  102020. -float: 1
  102021. -ifloat: 1
  102022. -Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  102023. -double: 1
  102024. -float: 1
  102025. -idouble: 1
  102026. -ifloat: 1
  102027. -Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  102028. -float: 1
  102029. -ifloat: 1
  102030. -
  102031. -# ctan
  102032. -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
  102033. -double: 1
  102034. -idouble: 1
  102035. -Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  102036. -float: 1
  102037. -ifloat: 1
  102038. -Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  102039. -double: 1
  102040. -float: 1
  102041. -idouble: 1
  102042. -ifloat: 1
  102043. -
  102044. -# ctanh
  102045. -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
  102046. -double: 1
  102047. -float: 2
  102048. -idouble: 1
  102049. -ifloat: 2
  102050. -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
  102051. -float: 1
  102052. -ifloat: 1
  102053. -Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  102054. -double: 2
  102055. -float: 1
  102056. -idouble: 2
  102057. -ifloat: 1
  102058. -Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  102059. -double: 2
  102060. -float: 1
  102061. -idouble: 2
  102062. -ifloat: 1
  102063. -
  102064. -# erfc
  102065. -Test "erfc (0.7) == 0.32219880616258152702":
  102066. -double: 1
  102067. -idouble: 1
  102068. -Test "erfc (1.2) == 0.089686021770364619762":
  102069. -double: 2
  102070. -float: 2
  102071. -idouble: 2
  102072. -ifloat: 2
  102073. -Test "erfc (2.0) == 0.0046777349810472658379":
  102074. -double: 1
  102075. -idouble: 1
  102076. -Test "erfc (4.1) == 0.67000276540848983727e-8":
  102077. -double: 24
  102078. -float: 12
  102079. -idouble: 24
  102080. -ifloat: 12
  102081. -
  102082. -# exp10
  102083. -Test "exp10 (-1) == 0.1":
  102084. -double: 2
  102085. -float: 1
  102086. -idouble: 2
  102087. -ifloat: 1
  102088. -Test "exp10 (0.7) == 5.0118723362727228500":
  102089. -float: 1
  102090. -ifloat: 1
  102091. -Test "exp10 (3) == 1000":
  102092. -double: 6
  102093. -float: 2
  102094. -idouble: 6
  102095. -ifloat: 2
  102096. -
  102097. -# expm1
  102098. -Test "expm1 (1) == M_El - 1.0":
  102099. -float: 1
  102100. -ifloat: 1
  102101. -
  102102. -# fmod
  102103. -Test "fmod (-6.5, -2.3) == -1.9":
  102104. -double: 2
  102105. -float: 1
  102106. -idouble: 2
  102107. -ifloat: 1
  102108. -Test "fmod (-6.5, 2.3) == -1.9":
  102109. -double: 2
  102110. -float: 1
  102111. -idouble: 2
  102112. -ifloat: 1
  102113. -Test "fmod (6.5, -2.3) == 1.9":
  102114. -double: 2
  102115. -float: 1
  102116. -idouble: 2
  102117. -ifloat: 1
  102118. -Test "fmod (6.5, 2.3) == 1.9":
  102119. -double: 2
  102120. -float: 1
  102121. -idouble: 2
  102122. -ifloat: 1
  102123. -
  102124. -# hypot
  102125. -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  102126. -float: 1
  102127. -ifloat: 1
  102128. -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  102129. -float: 1
  102130. -ifloat: 1
  102131. -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  102132. -float: 1
  102133. -ifloat: 1
  102134. -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  102135. -float: 1
  102136. -ifloat: 1
  102137. -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  102138. -float: 1
  102139. -ifloat: 1
  102140. -Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
  102141. -double: 1
  102142. -idouble: 1
  102143. -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  102144. -float: 1
  102145. -ifloat: 1
  102146. -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  102147. -float: 1
  102148. -ifloat: 1
  102149. -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  102150. -float: 1
  102151. -ifloat: 1
  102152. -
  102153. -# j0
  102154. -Test "j0 (10.0) == -0.24593576445134833520":
  102155. -double: 2
  102156. -float: 1
  102157. -idouble: 2
  102158. -ifloat: 1
  102159. -Test "j0 (2.0) == 0.22389077914123566805":
  102160. -float: 2
  102161. -ifloat: 2
  102162. -Test "j0 (8.0) == 0.17165080713755390609":
  102163. -float: 1
  102164. -ifloat: 1
  102165. -
  102166. -# j1
  102167. -Test "j1 (10.0) == 0.043472746168861436670":
  102168. -float: 2
  102169. -ifloat: 2
  102170. -Test "j1 (2.0) == 0.57672480775687338720":
  102171. -double: 1
  102172. -idouble: 1
  102173. -Test "j1 (8.0) == 0.23463634685391462438":
  102174. -double: 1
  102175. -idouble: 1
  102176. -
  102177. -# jn
  102178. -Test "jn (0, 10.0) == -0.24593576445134833520":
  102179. -double: 2
  102180. -float: 1
  102181. -idouble: 2
  102182. -ifloat: 1
  102183. -Test "jn (0, 2.0) == 0.22389077914123566805":
  102184. -float: 2
  102185. -ifloat: 2
  102186. -Test "jn (0, 8.0) == 0.17165080713755390609":
  102187. -float: 1
  102188. -ifloat: 1
  102189. -Test "jn (1, 10.0) == 0.043472746168861436670":
  102190. -float: 2
  102191. -ifloat: 2
  102192. -Test "jn (1, 2.0) == 0.57672480775687338720":
  102193. -double: 1
  102194. -idouble: 1
  102195. -Test "jn (1, 8.0) == 0.23463634685391462438":
  102196. -double: 1
  102197. -idouble: 1
  102198. -Test "jn (10, 0.1) == 0.26905328954342155795e-19":
  102199. -double: 6
  102200. -float: 4
  102201. -idouble: 6
  102202. -ifloat: 4
  102203. -Test "jn (10, 0.7) == 0.75175911502153953928e-11":
  102204. -double: 3
  102205. -float: 1
  102206. -idouble: 3
  102207. -ifloat: 1
  102208. -Test "jn (10, 10.0) == 0.20748610663335885770":
  102209. -double: 4
  102210. -float: 3
  102211. -idouble: 4
  102212. -ifloat: 3
  102213. -Test "jn (10, 2.0) == 0.25153862827167367096e-6":
  102214. -float: 4
  102215. -ifloat: 4
  102216. -Test "jn (3, 0.1) == 0.000020820315754756261429":
  102217. -double: 1
  102218. -idouble: 1
  102219. -Test "jn (3, 0.7) == 0.0069296548267508408077":
  102220. -float: 1
  102221. -ifloat: 1
  102222. -Test "jn (3, 10.0) == 0.058379379305186812343":
  102223. -double: 3
  102224. -float: 1
  102225. -idouble: 3
  102226. -ifloat: 1
  102227. -Test "jn (3, 2.0) == 0.12894324947440205110":
  102228. -double: 1
  102229. -float: 2
  102230. -idouble: 1
  102231. -ifloat: 2
  102232. -
  102233. -# lgamma
  102234. -Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  102235. -double: 1
  102236. -float: 1
  102237. -idouble: 1
  102238. -ifloat: 1
  102239. -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  102240. -double: 1
  102241. -float: 2
  102242. -idouble: 1
  102243. -ifloat: 2
  102244. -
  102245. -# log
  102246. -Test "log (0.7) == -0.35667494393873237891263871124118447":
  102247. -double: 1
  102248. -float: 1
  102249. -idouble: 1
  102250. -ifloat: 1
  102251. -
  102252. -# log10
  102253. -Test "log10 (0.7) == -0.15490195998574316929":
  102254. -double: 1
  102255. -float: 1
  102256. -idouble: 1
  102257. -ifloat: 1
  102258. -Test "log10 (e) == log10(e)":
  102259. -float: 1
  102260. -ifloat: 1
  102261. -
  102262. -# log1p
  102263. -Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
  102264. -double: 1
  102265. -float: 1
  102266. -idouble: 1
  102267. -ifloat: 1
  102268. -
  102269. -# log2
  102270. -Test "log2 (0.7) == -0.51457317282975824043":
  102271. -double: 1
  102272. -float: 1
  102273. -idouble: 1
  102274. -ifloat: 1
  102275. -
  102276. -# sincos
  102277. -Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
  102278. -double: 1
  102279. -float: 1
  102280. -idouble: 1
  102281. -ifloat: 1
  102282. -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
  102283. -double: 1
  102284. -float: 0.5
  102285. -idouble: 1
  102286. -ifloat: 0.5
  102287. -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
  102288. -double: 1
  102289. -float: 1
  102290. -idouble: 1
  102291. -ifloat: 1
  102292. -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
  102293. -double: 0.2758
  102294. -float: 0.3667
  102295. -idouble: 0.2758
  102296. -ifloat: 0.3667
  102297. -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res":
  102298. -float: 1
  102299. -ifloat: 1
  102300. -
  102301. -# sinh
  102302. -Test "sinh (0.7) == 0.75858370183953350346":
  102303. -double: 1
  102304. -float: 1
  102305. -idouble: 1
  102306. -ifloat: 1
  102307. -
  102308. -# tan
  102309. -Test "tan (pi/4) == 1":
  102310. -double: 0.5
  102311. -idouble: 0.5
  102312. -
  102313. -# tanh
  102314. -Test "tanh (0.7) == 0.60436777711716349631":
  102315. -double: 1
  102316. -float: 1
  102317. -idouble: 1
  102318. -ifloat: 1
  102319. -
  102320. -# tgamma
  102321. -Test "tgamma (-0.5) == -2 sqrt (pi)":
  102322. -double: 1
  102323. -float: 1
  102324. -idouble: 1
  102325. -ifloat: 1
  102326. -Test "tgamma (0.5) == sqrt (pi)":
  102327. -float: 1
  102328. -ifloat: 1
  102329. -Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
  102330. -double: 1
  102331. -float: 1
  102332. -idouble: 1
  102333. -ifloat: 1
  102334. -
  102335. -# y0
  102336. -Test "y0 (0.7) == -0.19066492933739506743":
  102337. -double: 2
  102338. -float: 1
  102339. -idouble: 2
  102340. -ifloat: 1
  102341. -Test "y0 (1.0) == 0.088256964215676957983":
  102342. -double: 2
  102343. -float: 1
  102344. -idouble: 2
  102345. -ifloat: 1
  102346. -Test "y0 (1.5) == 0.38244892379775884396":
  102347. -double: 2
  102348. -float: 1
  102349. -idouble: 2
  102350. -ifloat: 1
  102351. -Test "y0 (10.0) == 0.055671167283599391424":
  102352. -float: 1
  102353. -ifloat: 1
  102354. -Test "y0 (8.0) == 0.22352148938756622053":
  102355. -double: 1
  102356. -float: 1
  102357. -idouble: 1
  102358. -ifloat: 1
  102359. -
  102360. -# y1
  102361. -Test "y1 (0.1) == -6.4589510947020269877":
  102362. -double: 1
  102363. -idouble: 1
  102364. -Test "y1 (0.7) == -1.1032498719076333697":
  102365. -double: 1
  102366. -float: 1
  102367. -idouble: 1
  102368. -ifloat: 1
  102369. -Test "y1 (1.5) == -0.41230862697391129595":
  102370. -float: 1
  102371. -ifloat: 1
  102372. -Test "y1 (10.0) == 0.24901542420695388392":
  102373. -double: 3
  102374. -float: 1
  102375. -idouble: 3
  102376. -ifloat: 1
  102377. -Test "y1 (2.0) == -0.10703243154093754689":
  102378. -double: 1
  102379. -float: 1
  102380. -idouble: 1
  102381. -ifloat: 1
  102382. -Test "y1 (8.0) == -0.15806046173124749426":
  102383. -double: 1
  102384. -float: 2
  102385. -idouble: 1
  102386. -ifloat: 2
  102387. -
  102388. -# yn
  102389. -Test "yn (0, 0.7) == -0.19066492933739506743":
  102390. -double: 2
  102391. -float: 1
  102392. -idouble: 2
  102393. -ifloat: 1
  102394. -Test "yn (0, 1.0) == 0.088256964215676957983":
  102395. -double: 2
  102396. -float: 1
  102397. -idouble: 2
  102398. -ifloat: 1
  102399. -Test "yn (0, 1.5) == 0.38244892379775884396":
  102400. -double: 2
  102401. -float: 1
  102402. -idouble: 2
  102403. -ifloat: 1
  102404. -Test "yn (0, 10.0) == 0.055671167283599391424":
  102405. -float: 1
  102406. -ifloat: 1
  102407. -Test "yn (0, 8.0) == 0.22352148938756622053":
  102408. -double: 1
  102409. -float: 1
  102410. -idouble: 1
  102411. -ifloat: 1
  102412. -Test "yn (1, 0.1) == -6.4589510947020269877":
  102413. -double: 1
  102414. -idouble: 1
  102415. -Test "yn (1, 0.7) == -1.1032498719076333697":
  102416. -double: 1
  102417. -float: 1
  102418. -idouble: 1
  102419. -ifloat: 1
  102420. -Test "yn (1, 1.5) == -0.41230862697391129595":
  102421. -float: 1
  102422. -ifloat: 1
  102423. -Test "yn (1, 10.0) == 0.24901542420695388392":
  102424. -double: 3
  102425. -float: 1
  102426. -idouble: 3
  102427. -ifloat: 1
  102428. -Test "yn (1, 2.0) == -0.10703243154093754689":
  102429. -double: 1
  102430. -float: 1
  102431. -idouble: 1
  102432. -ifloat: 1
  102433. -Test "yn (1, 8.0) == -0.15806046173124749426":
  102434. -double: 1
  102435. -float: 2
  102436. -idouble: 1
  102437. -ifloat: 2
  102438. -Test "yn (10, 0.1) == -0.11831335132045197885e19":
  102439. -double: 2
  102440. -float: 2
  102441. -idouble: 2
  102442. -ifloat: 2
  102443. -Test "yn (10, 0.7) == -0.42447194260703866924e10":
  102444. -double: 3
  102445. -idouble: 3
  102446. -Test "yn (10, 1.0) == -0.12161801427868918929e9":
  102447. -double: 1
  102448. -idouble: 1
  102449. -Test "yn (10, 10.0) == -0.35981415218340272205":
  102450. -double: 1
  102451. -float: 1
  102452. -idouble: 1
  102453. -ifloat: 1
  102454. -Test "yn (10, 2.0) == -129184.54220803928264":
  102455. -double: 2
  102456. -idouble: 2
  102457. -Test "yn (3, 0.1) == -5099.3323786129048894":
  102458. -double: 1
  102459. -float: 1
  102460. -idouble: 1
  102461. -ifloat: 1
  102462. -Test "yn (3, 0.7) == -15.819479052819633505":
  102463. -double: 3
  102464. -float: 1
  102465. -idouble: 3
  102466. -ifloat: 1
  102467. -Test "yn (3, 10.0) == -0.25136265718383732978":
  102468. -double: 1
  102469. -float: 1
  102470. -idouble: 1
  102471. -ifloat: 1
  102472. -Test "yn (3, 2.0) == -1.1277837768404277861":
  102473. -double: 1
  102474. -idouble: 1
  102475. -
  102476. -# Maximal error of functions:
  102477. -Function: "asin":
  102478. -double: 1
  102479. -float: 2
  102480. -idouble: 1
  102481. -ifloat: 2
  102482. -
  102483. -Function: "atan2":
  102484. -float: 4
  102485. -ifloat: 4
  102486. -
  102487. -Function: "atanh":
  102488. -double: 1
  102489. -idouble: 1
  102490. -
  102491. -Function: "cabs":
  102492. -double: 1
  102493. -float: 1
  102494. -idouble: 1
  102495. -ifloat: 1
  102496. -
  102497. -Function: Real part of "cacos":
  102498. -double: 1
  102499. -float: 1
  102500. -idouble: 1
  102501. -ifloat: 1
  102502. -
  102503. -Function: Imaginary part of "cacos":
  102504. -float: 1
  102505. -ifloat: 1
  102506. -
  102507. -Function: Real part of "cacosh":
  102508. -double: 1
  102509. -float: 7
  102510. -idouble: 1
  102511. -ifloat: 7
  102512. -
  102513. -Function: Imaginary part of "cacosh":
  102514. -double: 1
  102515. -float: 3
  102516. -idouble: 1
  102517. -ifloat: 3
  102518. -
  102519. -Function: Real part of "casin":
  102520. -double: 3
  102521. -float: 2
  102522. -idouble: 3
  102523. -ifloat: 2
  102524. -
  102525. -Function: Imaginary part of "casin":
  102526. -float: 1
  102527. -ifloat: 1
  102528. -
  102529. -Function: Real part of "casinh":
  102530. -double: 5
  102531. -float: 1
  102532. -idouble: 5
  102533. -ifloat: 1
  102534. -
  102535. -Function: Imaginary part of "casinh":
  102536. -double: 3
  102537. -float: 6
  102538. -idouble: 3
  102539. -ifloat: 6
  102540. -
  102541. -Function: Real part of "catan":
  102542. -float: 4
  102543. -ifloat: 4
  102544. -
  102545. -Function: Imaginary part of "catan":
  102546. -double: 1
  102547. -float: 1
  102548. -idouble: 1
  102549. -ifloat: 1
  102550. -
  102551. -Function: Real part of "catanh":
  102552. -double: 4
  102553. -float: 1
  102554. -idouble: 4
  102555. -ifloat: 1
  102556. -
  102557. -Function: Imaginary part of "catanh":
  102558. -double: 1
  102559. -float: 6
  102560. -idouble: 1
  102561. -ifloat: 6
  102562. -
  102563. -Function: "cbrt":
  102564. -double: 1
  102565. -idouble: 1
  102566. -
  102567. -Function: Real part of "ccos":
  102568. -double: 1
  102569. -idouble: 1
  102570. -
  102571. -Function: Imaginary part of "ccos":
  102572. -double: 1
  102573. -float: 1
  102574. -idouble: 1
  102575. -ifloat: 1
  102576. -
  102577. -Function: Real part of "ccosh":
  102578. -double: 1
  102579. -float: 1
  102580. -idouble: 1
  102581. -ifloat: 1
  102582. -
  102583. -Function: Imaginary part of "ccosh":
  102584. -double: 1
  102585. -float: 1
  102586. -idouble: 1
  102587. -ifloat: 1
  102588. -
  102589. -Function: Real part of "cexp":
  102590. -double: 1
  102591. -float: 1
  102592. -idouble: 1
  102593. -ifloat: 1
  102594. -
  102595. -Function: Imaginary part of "cexp":
  102596. -float: 1
  102597. -ifloat: 1
  102598. -
  102599. -Function: Imaginary part of "clog":
  102600. -double: 1
  102601. -float: 3
  102602. -idouble: 1
  102603. -ifloat: 3
  102604. -
  102605. -Function: Real part of "clog10":
  102606. -double: 1
  102607. -float: 1
  102608. -idouble: 1
  102609. -ifloat: 1
  102610. -
  102611. -Function: Imaginary part of "clog10":
  102612. -double: 1
  102613. -float: 5
  102614. -idouble: 1
  102615. -ifloat: 5
  102616. -
  102617. -Function: "cos":
  102618. -double: 2
  102619. -float: 1
  102620. -idouble: 2
  102621. -ifloat: 1
  102622. -
  102623. -Function: Real part of "cpow":
  102624. -double: 1
  102625. -float: 4
  102626. -idouble: 1
  102627. -ifloat: 4
  102628. -
  102629. -Function: Imaginary part of "cpow":
  102630. -double: 1.1031
  102631. -float: 2
  102632. -idouble: 1.1031
  102633. -ifloat: 2
  102634. -
  102635. -Function: Imaginary part of "csin":
  102636. -float: 1
  102637. -ifloat: 1
  102638. -
  102639. -Function: Real part of "csinh":
  102640. -float: 1
  102641. -ifloat: 1
  102642. -
  102643. -Function: Imaginary part of "csinh":
  102644. -double: 1
  102645. -float: 1
  102646. -idouble: 1
  102647. -ifloat: 1
  102648. -
  102649. -Function: Real part of "csqrt":
  102650. -double: 1
  102651. -float: 1
  102652. -idouble: 1
  102653. -ifloat: 1
  102654. -
  102655. -Function: Imaginary part of "csqrt":
  102656. -float: 1
  102657. -ifloat: 1
  102658. -
  102659. -Function: Real part of "ctan":
  102660. -double: 1
  102661. -float: 1
  102662. -idouble: 1
  102663. -ifloat: 1
  102664. -
  102665. -Function: Imaginary part of "ctan":
  102666. -double: 1
  102667. -float: 1
  102668. -idouble: 1
  102669. -ifloat: 1
  102670. -
  102671. -Function: Real part of "ctanh":
  102672. -double: 2
  102673. -float: 2
  102674. -idouble: 2
  102675. -ifloat: 2
  102676. -
  102677. -Function: Imaginary part of "ctanh":
  102678. -double: 2
  102679. -float: 1
  102680. -idouble: 2
  102681. -ifloat: 1
  102682. -
  102683. -Function: "erfc":
  102684. -double: 24
  102685. -float: 12
  102686. -idouble: 24
  102687. -ifloat: 12
  102688. -
  102689. -Function: "exp10":
  102690. -double: 6
  102691. -float: 2
  102692. -idouble: 6
  102693. -ifloat: 2
  102694. -
  102695. -Function: "expm1":
  102696. -float: 1
  102697. -ifloat: 1
  102698. -
  102699. -Function: "fmod":
  102700. -double: 2
  102701. -float: 1
  102702. -idouble: 2
  102703. -ifloat: 1
  102704. -
  102705. -Function: "hypot":
  102706. -double: 1
  102707. -float: 1
  102708. -idouble: 1
  102709. -ifloat: 1
  102710. -
  102711. -Function: "j0":
  102712. -double: 2
  102713. -float: 2
  102714. -idouble: 2
  102715. -ifloat: 2
  102716. -
  102717. -Function: "j1":
  102718. -double: 1
  102719. -float: 2
  102720. -idouble: 1
  102721. -ifloat: 2
  102722. -
  102723. -Function: "jn":
  102724. -double: 6
  102725. -float: 4
  102726. -idouble: 6
  102727. -ifloat: 4
  102728. -
  102729. -Function: "lgamma":
  102730. -double: 1
  102731. -float: 2
  102732. -idouble: 1
  102733. -ifloat: 2
  102734. -
  102735. -Function: "log":
  102736. -double: 1
  102737. -float: 1
  102738. -idouble: 1
  102739. -ifloat: 1
  102740. -
  102741. -Function: "log10":
  102742. -double: 1
  102743. -float: 1
  102744. -idouble: 1
  102745. -ifloat: 1
  102746. -
  102747. -Function: "log1p":
  102748. -double: 1
  102749. -float: 1
  102750. -idouble: 1
  102751. -ifloat: 1
  102752. -
  102753. -Function: "log2":
  102754. -double: 1
  102755. -float: 1
  102756. -idouble: 1
  102757. -ifloat: 1
  102758. -
  102759. -Function: "sincos":
  102760. -double: 1
  102761. -float: 1
  102762. -idouble: 1
  102763. -ifloat: 1
  102764. -
  102765. -Function: "sinh":
  102766. -double: 1
  102767. -float: 1
  102768. -idouble: 1
  102769. -ifloat: 1
  102770. -
  102771. -Function: "tan":
  102772. -double: 0.5
  102773. -idouble: 0.5
  102774. -
  102775. -Function: "tanh":
  102776. -double: 1
  102777. -float: 1
  102778. -idouble: 1
  102779. -ifloat: 1
  102780. -
  102781. -Function: "tgamma":
  102782. -double: 1
  102783. -float: 1
  102784. -idouble: 1
  102785. -ifloat: 1
  102786. -
  102787. -Function: "y0":
  102788. -double: 2
  102789. -float: 1
  102790. -idouble: 2
  102791. -ifloat: 1
  102792. -
  102793. -Function: "y1":
  102794. -double: 3
  102795. -float: 2
  102796. -idouble: 3
  102797. -ifloat: 2
  102798. -
  102799. -Function: "yn":
  102800. -double: 3
  102801. -float: 2
  102802. -idouble: 3
  102803. -ifloat: 2
  102804. -
  102805. -# end of automatic generation
  102806. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-xtensa uClibc/test/math/libm-test-ulps-xtensa
  102807. --- uClibc-0.9.33.2/test/math/libm-test-ulps-xtensa 1970-01-01 01:00:00.000000000 +0100
  102808. +++ uClibc/test/math/libm-test-ulps-xtensa 2014-02-03 12:32:57.000000000 +0100
  102809. @@ -0,0 +1,129 @@
  102810. +# Begin of automatic generation
  102811. +
  102812. +# cos
  102813. +Test "cos (M_PI_6l * 2.0) == 0.5":
  102814. +double: 1
  102815. +idouble: 1
  102816. +Test "cos (M_PI_6l * 4.0) == -0.5":
  102817. +double: 2
  102818. +float: 1
  102819. +idouble: 2
  102820. +ifloat: 1
  102821. +
  102822. +# erf
  102823. +Test "erf (0.75) == 0.711155633653515131598937834591410777":
  102824. +double: 1
  102825. +idouble: 1
  102826. +Test "erf (1.25) == 0.922900128256458230136523481197281140":
  102827. +double: 1
  102828. +idouble: 1
  102829. +
  102830. +# erfc
  102831. +Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
  102832. +double: 1
  102833. +idouble: 1
  102834. +
  102835. +# exp
  102836. +Test "exp (1) == e":
  102837. +double: 1
  102838. +idouble: 1
  102839. +
  102840. +# expm1
  102841. +Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
  102842. +double: 1
  102843. +idouble: 1
  102844. +
  102845. +# hypot
  102846. +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  102847. +float: 1
  102848. +ifloat: 1
  102849. +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  102850. +float: 1
  102851. +ifloat: 1
  102852. +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  102853. +float: 1
  102854. +ifloat: 1
  102855. +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  102856. +float: 1
  102857. +ifloat: 1
  102858. +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  102859. +float: 1
  102860. +ifloat: 1
  102861. +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  102862. +float: 1
  102863. +ifloat: 1
  102864. +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  102865. +float: 1
  102866. +ifloat: 1
  102867. +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  102868. +float: 1
  102869. +ifloat: 1
  102870. +
  102871. +# lgamma
  102872. +Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  102873. +double: 1
  102874. +float: 1
  102875. +idouble: 1
  102876. +ifloat: 1
  102877. +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  102878. +double: 1
  102879. +float: 2
  102880. +idouble: 1
  102881. +ifloat: 2
  102882. +
  102883. +# log10
  102884. +Test "log10 (0.75) == -0.124938736608299953132449886193870744":
  102885. +double: 1
  102886. +idouble: 1
  102887. +Test "log10 (e) == log10(e)":
  102888. +float: 1
  102889. +ifloat: 1
  102890. +
  102891. +# Maximal error of functions:
  102892. +Function: "cos":
  102893. +double: 2
  102894. +float: 1
  102895. +idouble: 2
  102896. +ifloat: 1
  102897. +
  102898. +Function: "erf":
  102899. +double: 1
  102900. +idouble: 1
  102901. +
  102902. +Function: "erfc":
  102903. +double: 1
  102904. +idouble: 1
  102905. +
  102906. +Function: "exp":
  102907. +double: 1
  102908. +idouble: 1
  102909. +
  102910. +Function: "expm1":
  102911. +double: 1
  102912. +idouble: 1
  102913. +
  102914. +Function: "hypot":
  102915. +float: 1
  102916. +ifloat: 1
  102917. +
  102918. +Function: "lgamma":
  102919. +double: 1
  102920. +float: 2
  102921. +idouble: 1
  102922. +ifloat: 2
  102923. +
  102924. +Function: "log":
  102925. +float: 1
  102926. +ifloat: 1
  102927. +
  102928. +Function: "log10":
  102929. +double: 1
  102930. +float: 1
  102931. +idouble: 1
  102932. +ifloat: 1
  102933. +
  102934. +Function: "tan":
  102935. +double: 1
  102936. +idouble: 1
  102937. +
  102938. +# end of automatic generation
  102939. diff -Nur uClibc-0.9.33.2/test/math/Makefile uClibc/test/math/Makefile
  102940. --- uClibc-0.9.33.2/test/math/Makefile 2012-05-15 09:20:09.000000000 +0200
  102941. +++ uClibc/test/math/Makefile 2014-02-03 12:32:57.000000000 +0100
  102942. @@ -2,6 +2,7 @@
  102943. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102944. top_builddir=../../
  102945. +top_srcdir=../../
  102946. include ../Rules.mak
  102947. -include Makefile.in
  102948. include ../Test.mak
  102949. diff -Nur uClibc-0.9.33.2/test/math/Makefile.in uClibc/test/math/Makefile.in
  102950. --- uClibc-0.9.33.2/test/math/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  102951. +++ uClibc/test/math/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  102952. @@ -1,14 +1,16 @@
  102953. # uClibc math tests
  102954. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102955. -TESTS := basic-test tst-definitions test-fpucw test-float test-ifloat test-double test-idouble \
  102956. - rint signgam ilogb
  102957. # gamma (removed from TESTS, need to add "small errors are ok" machinery there)
  102958. -ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),y)
  102959. -TESTS += test-ldouble test-ildoubl compile_test c99_test
  102960. +TESTS_DISABLED := gamma
  102961. +ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),)
  102962. +TESTS_DISABLED += test-ldouble test-ildoubl compile_test c99_test
  102963. else
  102964. CFLAGS_basic-test := -DNO_LONG_DOUBLE
  102965. endif
  102966. +ifeq ($(DO_C99_MATH),)
  102967. +TESTS_DISABLED += test-float test-ifloat test-double test-idouble rint signgam ilogb
  102968. +endif
  102969. DODIFF_rint := 1
  102970. DODIFF_signgam := 1
  102971. diff -Nur uClibc-0.9.33.2/test/math/test-double.c uClibc/test/math/test-double.c
  102972. --- uClibc-0.9.33.2/test/math/test-double.c 2012-05-15 09:20:09.000000000 +0200
  102973. +++ uClibc/test/math/test-double.c 2014-02-03 12:32:57.000000000 +0100
  102974. @@ -13,9 +13,8 @@
  102975. Lesser General Public License for more details.
  102976. You should have received a copy of the GNU Lesser General Public
  102977. - License along with the GNU C Library; if not, write to the Free
  102978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102979. - 02111-1307 USA. */
  102980. + License along with the GNU C Library; if not, see
  102981. + <http://www.gnu.org/licenses/>. */
  102982. #define FUNC(function) function
  102983. #define FLOAT double
  102984. diff -Nur uClibc-0.9.33.2/test/math/test-float.c uClibc/test/math/test-float.c
  102985. --- uClibc-0.9.33.2/test/math/test-float.c 2012-05-15 09:20:09.000000000 +0200
  102986. +++ uClibc/test/math/test-float.c 2014-02-03 12:32:57.000000000 +0100
  102987. @@ -13,9 +13,8 @@
  102988. Lesser General Public License for more details.
  102989. You should have received a copy of the GNU Lesser General Public
  102990. - License along with the GNU C Library; if not, write to the Free
  102991. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102992. - 02111-1307 USA. */
  102993. + License along with the GNU C Library; if not, see
  102994. + <http://www.gnu.org/licenses/>. */
  102995. #define FUNC(function) function ## f
  102996. #define FLOAT float
  102997. diff -Nur uClibc-0.9.33.2/test/math/test-fpucw.c uClibc/test/math/test-fpucw.c
  102998. --- uClibc-0.9.33.2/test/math/test-fpucw.c 2012-05-15 09:20:09.000000000 +0200
  102999. +++ uClibc/test/math/test-fpucw.c 2014-02-03 12:32:57.000000000 +0100
  103000. @@ -13,9 +13,8 @@
  103001. Lesser General Public License for more details.
  103002. You should have received a copy of the GNU Lesser General Public
  103003. - License along with the GNU C Library; if not, write to the Free
  103004. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103005. - 02111-1307 USA. */
  103006. + License along with the GNU C Library; if not, see
  103007. + <http://www.gnu.org/licenses/>. */
  103008. #include <fpu_control.h>
  103009. #include <stdio.h>
  103010. diff -Nur uClibc-0.9.33.2/test/math/test-idouble.c uClibc/test/math/test-idouble.c
  103011. --- uClibc-0.9.33.2/test/math/test-idouble.c 2012-05-15 09:20:09.000000000 +0200
  103012. +++ uClibc/test/math/test-idouble.c 2014-02-03 12:32:57.000000000 +0100
  103013. @@ -13,9 +13,8 @@
  103014. Lesser General Public License for more details.
  103015. You should have received a copy of the GNU Lesser General Public
  103016. - License along with the GNU C Library; if not, write to the Free
  103017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103018. - 02111-1307 USA. */
  103019. + License along with the GNU C Library; if not, see
  103020. + <http://www.gnu.org/licenses/>. */
  103021. #define FUNC(function) function
  103022. #define FLOAT double
  103023. diff -Nur uClibc-0.9.33.2/test/math/test-ifloat.c uClibc/test/math/test-ifloat.c
  103024. --- uClibc-0.9.33.2/test/math/test-ifloat.c 2012-05-15 09:20:09.000000000 +0200
  103025. +++ uClibc/test/math/test-ifloat.c 2014-02-03 12:32:57.000000000 +0100
  103026. @@ -13,9 +13,8 @@
  103027. Lesser General Public License for more details.
  103028. You should have received a copy of the GNU Lesser General Public
  103029. - License along with the GNU C Library; if not, write to the Free
  103030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103031. - 02111-1307 USA. */
  103032. + License along with the GNU C Library; if not, see
  103033. + <http://www.gnu.org/licenses/>. */
  103034. #define FUNC(function) function ## f
  103035. #define FLOAT float
  103036. diff -Nur uClibc-0.9.33.2/test/math/test-ildoubl.c uClibc/test/math/test-ildoubl.c
  103037. --- uClibc-0.9.33.2/test/math/test-ildoubl.c 2012-05-15 09:20:09.000000000 +0200
  103038. +++ uClibc/test/math/test-ildoubl.c 2014-02-03 12:32:57.000000000 +0100
  103039. @@ -13,9 +13,8 @@
  103040. Lesser General Public License for more details.
  103041. You should have received a copy of the GNU Lesser General Public
  103042. - License along with the GNU C Library; if not, write to the Free
  103043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103044. - 02111-1307 USA. */
  103045. + License along with the GNU C Library; if not, see
  103046. + <http://www.gnu.org/licenses/>. */
  103047. #define FUNC(function) function##l
  103048. #define FLOAT long double
  103049. diff -Nur uClibc-0.9.33.2/test/math/test-ldouble.c uClibc/test/math/test-ldouble.c
  103050. --- uClibc-0.9.33.2/test/math/test-ldouble.c 2012-05-15 09:20:09.000000000 +0200
  103051. +++ uClibc/test/math/test-ldouble.c 2014-02-03 12:32:57.000000000 +0100
  103052. @@ -13,9 +13,8 @@
  103053. Lesser General Public License for more details.
  103054. You should have received a copy of the GNU Lesser General Public
  103055. - License along with the GNU C Library; if not, write to the Free
  103056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103057. - 02111-1307 USA. */
  103058. + License along with the GNU C Library; if not, see
  103059. + <http://www.gnu.org/licenses/>. */
  103060. #define FUNC(function) function##l
  103061. #define FLOAT long double
  103062. diff -Nur uClibc-0.9.33.2/test/math/tst-definitions.c uClibc/test/math/tst-definitions.c
  103063. --- uClibc-0.9.33.2/test/math/tst-definitions.c 2012-05-15 09:20:09.000000000 +0200
  103064. +++ uClibc/test/math/tst-definitions.c 2014-02-03 12:32:57.000000000 +0100
  103065. @@ -13,9 +13,8 @@
  103066. Lesser General Public License for more details.
  103067. You should have received a copy of the GNU Lesser General Public
  103068. - License along with the GNU C Library; if not, write to the Free
  103069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103070. - 02111-1307 USA. */
  103071. + License along with the GNU C Library; if not, see
  103072. + <http://www.gnu.org/licenses/>. */
  103073. #include <limits.h>
  103074. #include <math.h>
  103075. diff -Nur uClibc-0.9.33.2/test/misc/bug-glob2.c uClibc/test/misc/bug-glob2.c
  103076. --- uClibc-0.9.33.2/test/misc/bug-glob2.c 2012-05-15 09:20:09.000000000 +0200
  103077. +++ uClibc/test/misc/bug-glob2.c 2014-02-03 12:32:57.000000000 +0100
  103078. @@ -14,9 +14,8 @@
  103079. Lesser General Public License for more details.
  103080. You should have received a copy of the GNU Lesser General Public
  103081. - License along with the GNU C Library; if not, write to the Free
  103082. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103083. - 02111-1307 USA. */
  103084. + License along with the GNU C Library; if not, see
  103085. + <http://www.gnu.org/licenses/>. */
  103086. #include <errno.h>
  103087. #include <error.h>
  103088. diff -Nur uClibc-0.9.33.2/test/misc/Makefile uClibc/test/misc/Makefile
  103089. --- uClibc-0.9.33.2/test/misc/Makefile 2012-05-15 09:20:09.000000000 +0200
  103090. +++ uClibc/test/misc/Makefile 2014-02-03 12:32:57.000000000 +0100
  103091. @@ -2,6 +2,7 @@
  103092. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  103093. top_builddir=../../
  103094. +top_srcdir=../../
  103095. include ../Rules.mak
  103096. -include Makefile.in
  103097. include ../Test.mak
  103098. diff -Nur uClibc-0.9.33.2/test/misc/Makefile.in uClibc/test/misc/Makefile.in
  103099. --- uClibc-0.9.33.2/test/misc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  103100. +++ uClibc/test/misc/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  103101. @@ -4,11 +4,18 @@
  103102. TESTS_DISABLED := outb tst-fnmatch bug-glob1 tst-gnuglob
  103103. ifeq ($(UCLIBC_HAS_LFS),)
  103104. TESTS_DISABLED += dirent64
  103105. +TESTS_DISABLED += tst-statfs # assuming host has LFS on
  103106. endif
  103107. CFLAGS_dirent64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
  103108. DODIFF_dirent := 1
  103109. DODIFF_dirent64 := 1
  103110. +DODIFF_tst-statfs := 1
  103111. +DODIFF_tst-statvfs := 1
  103112. OPTS_bug-glob1 := $(PWD)
  103113. OPTS_tst-fnmatch := < tst-fnmatch.input
  103114. +
  103115. +MNTENTS = $(shell mount | while read dev on mp rest; do echo $$mp; done)
  103116. +OPTS_tst-statfs := $(MNTENTS)
  103117. +OPTS_tst-statvfs := $(MNTENTS)
  103118. diff -Nur uClibc-0.9.33.2/test/misc/opendir-tst1.c uClibc/test/misc/opendir-tst1.c
  103119. --- uClibc-0.9.33.2/test/misc/opendir-tst1.c 2012-05-15 09:20:09.000000000 +0200
  103120. +++ uClibc/test/misc/opendir-tst1.c 2014-02-03 12:32:57.000000000 +0100
  103121. @@ -13,9 +13,8 @@
  103122. Lesser General Public License for more details.
  103123. You should have received a copy of the GNU Lesser General Public
  103124. - License along with the GNU C Library; if not, write to the Free
  103125. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103126. - 02111-1307 USA. */
  103127. + License along with the GNU C Library; if not, see
  103128. + <http://www.gnu.org/licenses/>. */
  103129. #include <dirent.h>
  103130. #include <errno.h>
  103131. diff -Nur uClibc-0.9.33.2/test/misc/tst-fnmatch.c uClibc/test/misc/tst-fnmatch.c
  103132. --- uClibc-0.9.33.2/test/misc/tst-fnmatch.c 2012-05-15 09:20:09.000000000 +0200
  103133. +++ uClibc/test/misc/tst-fnmatch.c 2014-02-03 12:32:57.000000000 +0100
  103134. @@ -13,9 +13,8 @@
  103135. Lesser General Public License for more details.
  103136. You should have received a copy of the GNU Lesser General Public
  103137. - License along with the GNU C Library; if not, write to the Free
  103138. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103139. - 02111-1307 USA. */
  103140. + License along with the GNU C Library; if not, see
  103141. + <http://www.gnu.org/licenses/>. */
  103142. #include <errno.h>
  103143. #include <error.h>
  103144. diff -Nur uClibc-0.9.33.2/test/misc/tst-fnmatch.input uClibc/test/misc/tst-fnmatch.input
  103145. --- uClibc-0.9.33.2/test/misc/tst-fnmatch.input 2012-05-15 09:20:09.000000000 +0200
  103146. +++ uClibc/test/misc/tst-fnmatch.input 2014-02-03 12:32:57.000000000 +0100
  103147. @@ -15,9 +15,8 @@
  103148. # Lesser General Public License for more details.
  103149. # You should have received a copy of the GNU Lesser General Public
  103150. -# License along with the GNU C Library; if not, write to the Free
  103151. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103152. -# 02111-1307 USA.
  103153. +# License along with the GNU C Library; see the file COPYING.LIB. If
  103154. +# not, see <http://www.gnu.org/licenses/>.
  103155. # Derived from the IEEE 2003.2 text. The standard only contains some
  103156. diff -Nur uClibc-0.9.33.2/test/misc/tst-gnuglob.c uClibc/test/misc/tst-gnuglob.c
  103157. --- uClibc-0.9.33.2/test/misc/tst-gnuglob.c 2012-05-15 09:20:09.000000000 +0200
  103158. +++ uClibc/test/misc/tst-gnuglob.c 2014-02-03 12:32:57.000000000 +0100
  103159. @@ -15,9 +15,8 @@
  103160. Lesser General Public License for more details.
  103161. You should have received a copy of the GNU Lesser General Public
  103162. - License along with the GNU C Library; if not, write to the Free
  103163. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103164. - 02111-1307 USA. */
  103165. + License along with the GNU C Library; if not, see
  103166. + <http://www.gnu.org/licenses/>. */
  103167. #include <dirent.h>
  103168. #include <errno.h>
  103169. diff -Nur uClibc-0.9.33.2/test/misc/tst-inotify.c uClibc/test/misc/tst-inotify.c
  103170. --- uClibc-0.9.33.2/test/misc/tst-inotify.c 1970-01-01 01:00:00.000000000 +0100
  103171. +++ uClibc/test/misc/tst-inotify.c 2014-02-03 12:32:57.000000000 +0100
  103172. @@ -0,0 +1,66 @@
  103173. +/* vi: set sw=4 ts=4 sts=4: */
  103174. +/*
  103175. + * inotify test for uClibc
  103176. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  103177. + *
  103178. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  103179. + */
  103180. +
  103181. +#include <stdio.h>
  103182. +#include <stdlib.h>
  103183. +#include <string.h>
  103184. +#include <unistd.h>
  103185. +#include <errno.h>
  103186. +#include <error.h>
  103187. +#include <inttypes.h>
  103188. +#include <sys/inotify.h>
  103189. +#include <sys/fcntl.h>
  103190. +
  103191. +static int
  103192. +do_test(void)
  103193. +{
  103194. + int ifd, fd, ret, result = 0;
  103195. + struct inotify_event e;
  103196. + char tfile[] = "/tmp/inotify.XXXXXX";
  103197. +
  103198. + fd = mkstemp(tfile);
  103199. + close(fd);
  103200. +
  103201. + ifd = inotify_init1(IN_NONBLOCK);
  103202. + if (ifd < 0) {
  103203. + perror("inotify_init1()");
  103204. + result = 1;
  103205. + }
  103206. + if (inotify_add_watch(ifd, tfile, IN_DELETE_SELF) < 0) {
  103207. + perror("inotify_add_watch()");
  103208. + result = 1;
  103209. + }
  103210. +
  103211. + /* nonblocking inotify should return immediately with no events */
  103212. + ret = read(ifd, &e, sizeof(e));
  103213. + if (ret != -1 || errno != EAGAIN) {
  103214. + error(0, 0, "first read() returned %d", ret);
  103215. + result = 1;
  103216. + }
  103217. +
  103218. + /* generate an event */
  103219. + unlink(tfile);
  103220. +
  103221. + /* now check whether our event was seen */
  103222. + ret = read(ifd, &e, sizeof(e));
  103223. + if (ret != sizeof(e)) {
  103224. + error(0, 0, "second read() returned %d", ret);
  103225. + result = 1;
  103226. + }
  103227. +
  103228. + if (!(e.mask & IN_DELETE_SELF)) {
  103229. + error(0, 0, "incorrect event mask: %" PRIx32, e.mask);
  103230. + result = 1;
  103231. + }
  103232. +
  103233. + return result;
  103234. +}
  103235. +
  103236. +#define TIMEOUT 5
  103237. +#define TEST_FUNCTION do_test ()
  103238. +#include "../test-skeleton.c"
  103239. diff -Nur uClibc-0.9.33.2/test/misc/tst-statfs.c uClibc/test/misc/tst-statfs.c
  103240. --- uClibc-0.9.33.2/test/misc/tst-statfs.c 1970-01-01 01:00:00.000000000 +0100
  103241. +++ uClibc/test/misc/tst-statfs.c 2014-02-03 12:32:57.000000000 +0100
  103242. @@ -0,0 +1,31 @@
  103243. +#include <sys/vfs.h>
  103244. +#include <errno.h>
  103245. +#include <stdio.h>
  103246. +#include <stdlib.h>
  103247. +#include <string.h>
  103248. +
  103249. +int
  103250. +main(int argc, char* argv[])
  103251. +{
  103252. + struct statfs s;
  103253. + int ret = 0, i;
  103254. +
  103255. + for (i = 1; i < argc; i++) {
  103256. + if (statfs(argv[i], &s) != 0) {
  103257. + fprintf(stderr, "%s: %s: statfs failed. %s\n",
  103258. + *argv, argv[i], strerror(errno));
  103259. + exit(EXIT_FAILURE);
  103260. + }
  103261. + ++ret;
  103262. + printf("statfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n",
  103263. + argv[i], s.f_blocks, s.f_bfree, s.f_bsize);
  103264. +#ifdef _STATFS_F_FRSIZE
  103265. + printf("\tfrsize=%lld\n", s.f_frsize);
  103266. +#elif defined __mips__
  103267. + printf("\tfrsize=mips, unsupported?\n");
  103268. +#else
  103269. +# error no _STATFS_F_FRSIZE
  103270. +#endif
  103271. + }
  103272. + exit(ret ? EXIT_SUCCESS : EXIT_FAILURE);
  103273. +}
  103274. diff -Nur uClibc-0.9.33.2/test/misc/tst-statvfs.c uClibc/test/misc/tst-statvfs.c
  103275. --- uClibc-0.9.33.2/test/misc/tst-statvfs.c 1970-01-01 01:00:00.000000000 +0100
  103276. +++ uClibc/test/misc/tst-statvfs.c 2014-02-03 12:32:57.000000000 +0100
  103277. @@ -0,0 +1,26 @@
  103278. +#include <sys/statvfs.h>
  103279. +#include <errno.h>
  103280. +#include <stdio.h>
  103281. +#include <stdlib.h>
  103282. +#include <string.h>
  103283. +
  103284. +int
  103285. +main(int argc, char* argv[])
  103286. +{
  103287. + struct statvfs s;
  103288. + int i;
  103289. +
  103290. + for (i = 1; i < argc; i++) {
  103291. + if (statvfs(argv[i], &s) != 0) {
  103292. + fprintf(stderr, "%s: %s: statvfs failed. %s\n",
  103293. + *argv, argv[i], strerror(errno));
  103294. + exit(EXIT_FAILURE);
  103295. + }
  103296. + printf("statvfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n",
  103297. + argv[i], s.f_blocks, s.f_bfree, s.f_bsize);
  103298. +#if 1 // def _STATFS_F_FRSIZE
  103299. + printf("\tfrsize=%lld\n", s.f_frsize);
  103300. +#endif
  103301. + }
  103302. + exit(EXIT_SUCCESS);
  103303. +}
  103304. diff -Nur uClibc-0.9.33.2/test/misc/tst-utmp.c uClibc/test/misc/tst-utmp.c
  103305. --- uClibc-0.9.33.2/test/misc/tst-utmp.c 2012-05-15 09:20:09.000000000 +0200
  103306. +++ uClibc/test/misc/tst-utmp.c 2014-02-03 12:32:57.000000000 +0100
  103307. @@ -14,9 +14,8 @@
  103308. Lesser General Public License for more details.
  103309. You should have received a copy of the GNU Lesser General Public
  103310. - License along with the GNU C Library; if not, write to the Free
  103311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103312. - 02111-1307 USA. */
  103313. + License along with the GNU C Library; if not, see
  103314. + <http://www.gnu.org/licenses/>. */
  103315. #include <errno.h>
  103316. #include <error.h>
  103317. diff -Nur uClibc-0.9.33.2/test/mmap/Makefile uClibc/test/mmap/Makefile
  103318. --- uClibc-0.9.33.2/test/mmap/Makefile 2012-05-15 09:20:09.000000000 +0200
  103319. +++ uClibc/test/mmap/Makefile 2014-02-03 12:32:57.000000000 +0100
  103320. @@ -2,6 +2,7 @@
  103321. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  103322. top_builddir=../../
  103323. +top_srcdir=../../
  103324. include ../Rules.mak
  103325. -include Makefile.in
  103326. include ../Test.mak
  103327. diff -Nur uClibc-0.9.33.2/test/nptl/eintr.c uClibc/test/nptl/eintr.c
  103328. --- uClibc-0.9.33.2/test/nptl/eintr.c 2012-05-15 09:20:09.000000000 +0200
  103329. +++ uClibc/test/nptl/eintr.c 2014-02-03 12:32:57.000000000 +0100
  103330. @@ -13,9 +13,8 @@
  103331. Lesser General Public License for more details.
  103332. You should have received a copy of the GNU Lesser General Public
  103333. - License along with the GNU C Library; if not, write to the Free
  103334. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103335. - 02111-1307 USA. */
  103336. + License along with the GNU C Library; if not, see
  103337. + <http://www.gnu.org/licenses/>. */
  103338. #include <pthread.h>
  103339. #include <signal.h>
  103340. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align2.c uClibc/test/nptl/tst-align2.c
  103341. --- uClibc-0.9.33.2/test/nptl/tst-align2.c 2012-05-15 09:20:09.000000000 +0200
  103342. +++ uClibc/test/nptl/tst-align2.c 2014-02-03 12:32:57.000000000 +0100
  103343. @@ -12,9 +12,8 @@
  103344. Lesser General Public License for more details.
  103345. You should have received a copy of the GNU Lesser General Public
  103346. - License along with the GNU C Library; if not, write to the Free
  103347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103348. - 02111-1307 USA. */
  103349. + License along with the GNU C Library; if not, see
  103350. + <http://www.gnu.org/licenses/>. */
  103351. #include <sched.h>
  103352. #include <stdbool.h>
  103353. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align3.c uClibc/test/nptl/tst-align3.c
  103354. --- uClibc-0.9.33.2/test/nptl/tst-align3.c 2012-05-15 09:20:09.000000000 +0200
  103355. +++ uClibc/test/nptl/tst-align3.c 2014-02-03 12:32:57.000000000 +0100
  103356. @@ -13,9 +13,8 @@
  103357. Lesser General Public License for more details.
  103358. You should have received a copy of the GNU Lesser General Public
  103359. - License along with the GNU C Library; if not, write to the Free
  103360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103361. - 02111-1307 USA. */
  103362. + License along with the GNU C Library; if not, see
  103363. + <http://www.gnu.org/licenses/>. */
  103364. #include <pthread.h>
  103365. #include <stdbool.h>
  103366. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align.c uClibc/test/nptl/tst-align.c
  103367. --- uClibc-0.9.33.2/test/nptl/tst-align.c 2012-05-15 09:20:09.000000000 +0200
  103368. +++ uClibc/test/nptl/tst-align.c 2014-02-03 12:32:57.000000000 +0100
  103369. @@ -13,9 +13,8 @@
  103370. Lesser General Public License for more details.
  103371. You should have received a copy of the GNU Lesser General Public
  103372. - License along with the GNU C Library; if not, write to the Free
  103373. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103374. - 02111-1307 USA. */
  103375. + License along with the GNU C Library; if not, see
  103376. + <http://www.gnu.org/licenses/>. */
  103377. #include <pthread.h>
  103378. #include <stdbool.h>
  103379. diff -Nur uClibc-0.9.33.2/test/nptl/tst-atfork1.c uClibc/test/nptl/tst-atfork1.c
  103380. --- uClibc-0.9.33.2/test/nptl/tst-atfork1.c 2012-05-15 09:20:09.000000000 +0200
  103381. +++ uClibc/test/nptl/tst-atfork1.c 2014-02-03 12:32:57.000000000 +0100
  103382. @@ -13,9 +13,8 @@
  103383. Lesser General Public License for more details.
  103384. You should have received a copy of the GNU Lesser General Public
  103385. - License along with the GNU C Library; if not, write to the Free
  103386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103387. - 02111-1307 USA. */
  103388. + License along with the GNU C Library; if not, see
  103389. + <http://www.gnu.org/licenses/>. */
  103390. #include <errno.h>
  103391. #include <pthread.h>
  103392. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr1.c uClibc/test/nptl/tst-attr1.c
  103393. --- uClibc-0.9.33.2/test/nptl/tst-attr1.c 2012-05-15 09:20:09.000000000 +0200
  103394. +++ uClibc/test/nptl/tst-attr1.c 2014-02-03 12:32:57.000000000 +0100
  103395. @@ -13,9 +13,8 @@
  103396. Lesser General Public License for more details.
  103397. You should have received a copy of the GNU Lesser General Public
  103398. - License along with the GNU C Library; if not, write to the Free
  103399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103400. - 02111-1307 USA. */
  103401. + License along with the GNU C Library; if not, see
  103402. + <http://www.gnu.org/licenses/>. */
  103403. #include <errno.h>
  103404. #include <pthread.h>
  103405. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr2.c uClibc/test/nptl/tst-attr2.c
  103406. --- uClibc-0.9.33.2/test/nptl/tst-attr2.c 2012-05-15 09:20:09.000000000 +0200
  103407. +++ uClibc/test/nptl/tst-attr2.c 2014-02-03 12:32:57.000000000 +0100
  103408. @@ -13,9 +13,8 @@
  103409. Lesser General Public License for more details.
  103410. You should have received a copy of the GNU Lesser General Public
  103411. - License along with the GNU C Library; if not, write to the Free
  103412. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103413. - 02111-1307 USA. */
  103414. + License along with the GNU C Library; if not, see
  103415. + <http://www.gnu.org/licenses/>. */
  103416. #include <errno.h>
  103417. #include <pthread.h>
  103418. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr3.c uClibc/test/nptl/tst-attr3.c
  103419. --- uClibc-0.9.33.2/test/nptl/tst-attr3.c 2012-05-15 09:20:09.000000000 +0200
  103420. +++ uClibc/test/nptl/tst-attr3.c 2014-02-03 12:32:57.000000000 +0100
  103421. @@ -14,9 +14,8 @@
  103422. Lesser General Public License for more details.
  103423. You should have received a copy of the GNU Lesser General Public
  103424. - License along with the GNU C Library; if not, write to the Free
  103425. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103426. - 02111-1307 USA. */
  103427. + License along with the GNU C Library; if not, see
  103428. + <http://www.gnu.org/licenses/>. */
  103429. #include <errno.h>
  103430. #include <error.h>
  103431. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier1.c uClibc/test/nptl/tst-barrier1.c
  103432. --- uClibc-0.9.33.2/test/nptl/tst-barrier1.c 2012-05-15 09:20:09.000000000 +0200
  103433. +++ uClibc/test/nptl/tst-barrier1.c 2014-02-03 12:32:57.000000000 +0100
  103434. @@ -13,9 +13,8 @@
  103435. Lesser General Public License for more details.
  103436. You should have received a copy of the GNU Lesser General Public
  103437. - License along with the GNU C Library; if not, write to the Free
  103438. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103439. - 02111-1307 USA. */
  103440. + License along with the GNU C Library; if not, see
  103441. + <http://www.gnu.org/licenses/>. */
  103442. #include <errno.h>
  103443. #include <pthread.h>
  103444. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier2.c uClibc/test/nptl/tst-barrier2.c
  103445. --- uClibc-0.9.33.2/test/nptl/tst-barrier2.c 2012-05-15 09:20:09.000000000 +0200
  103446. +++ uClibc/test/nptl/tst-barrier2.c 2014-02-03 12:32:57.000000000 +0100
  103447. @@ -13,9 +13,8 @@
  103448. Lesser General Public License for more details.
  103449. You should have received a copy of the GNU Lesser General Public
  103450. - License along with the GNU C Library; if not, write to the Free
  103451. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103452. - 02111-1307 USA. */
  103453. + License along with the GNU C Library; if not, see
  103454. + <http://www.gnu.org/licenses/>. */
  103455. #include <errno.h>
  103456. #include <pthread.h>
  103457. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier3.c uClibc/test/nptl/tst-barrier3.c
  103458. --- uClibc-0.9.33.2/test/nptl/tst-barrier3.c 2012-05-15 09:20:09.000000000 +0200
  103459. +++ uClibc/test/nptl/tst-barrier3.c 2014-02-03 12:32:57.000000000 +0100
  103460. @@ -13,9 +13,8 @@
  103461. Lesser General Public License for more details.
  103462. You should have received a copy of the GNU Lesser General Public
  103463. - License along with the GNU C Library; if not, write to the Free
  103464. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103465. - 02111-1307 USA. */
  103466. + License along with the GNU C Library; if not, see
  103467. + <http://www.gnu.org/licenses/>. */
  103468. /* Test of POSIX barriers. */
  103469. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier4.c uClibc/test/nptl/tst-barrier4.c
  103470. --- uClibc-0.9.33.2/test/nptl/tst-barrier4.c 2012-05-15 09:20:09.000000000 +0200
  103471. +++ uClibc/test/nptl/tst-barrier4.c 2014-02-03 12:32:57.000000000 +0100
  103472. @@ -13,9 +13,8 @@
  103473. Lesser General Public License for more details.
  103474. You should have received a copy of the GNU Lesser General Public
  103475. - License along with the GNU C Library; if not, write to the Free
  103476. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103477. - 02111-1307 USA. */
  103478. + License along with the GNU C Library; if not, see
  103479. + <http://www.gnu.org/licenses/>. */
  103480. /* This is a test for behavior not guaranteed by POSIX. */
  103481. #include <errno.h>
  103482. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic1.c uClibc/test/nptl/tst-basic1.c
  103483. --- uClibc-0.9.33.2/test/nptl/tst-basic1.c 2012-05-15 09:20:09.000000000 +0200
  103484. +++ uClibc/test/nptl/tst-basic1.c 2014-02-03 12:32:57.000000000 +0100
  103485. @@ -13,9 +13,8 @@
  103486. Lesser General Public License for more details.
  103487. You should have received a copy of the GNU Lesser General Public
  103488. - License along with the GNU C Library; if not, write to the Free
  103489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103490. - 02111-1307 USA. */
  103491. + License along with the GNU C Library; if not, see
  103492. + <http://www.gnu.org/licenses/>. */
  103493. #include <pthread.h>
  103494. #include <stdio.h>
  103495. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic2.c uClibc/test/nptl/tst-basic2.c
  103496. --- uClibc-0.9.33.2/test/nptl/tst-basic2.c 2012-05-15 09:20:09.000000000 +0200
  103497. +++ uClibc/test/nptl/tst-basic2.c 2014-02-03 12:32:57.000000000 +0100
  103498. @@ -13,9 +13,8 @@
  103499. Lesser General Public License for more details.
  103500. You should have received a copy of the GNU Lesser General Public
  103501. - License along with the GNU C Library; if not, write to the Free
  103502. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103503. - 02111-1307 USA. */
  103504. + License along with the GNU C Library; if not, see
  103505. + <http://www.gnu.org/licenses/>. */
  103506. #include <pthread.h>
  103507. #include <stdio.h>
  103508. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic3.c uClibc/test/nptl/tst-basic3.c
  103509. --- uClibc-0.9.33.2/test/nptl/tst-basic3.c 2012-05-15 09:20:09.000000000 +0200
  103510. +++ uClibc/test/nptl/tst-basic3.c 2014-02-03 12:32:57.000000000 +0100
  103511. @@ -13,9 +13,8 @@
  103512. Lesser General Public License for more details.
  103513. You should have received a copy of the GNU Lesser General Public
  103514. - License along with the GNU C Library; if not, write to the Free
  103515. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103516. - 02111-1307 USA. */
  103517. + License along with the GNU C Library; if not, see
  103518. + <http://www.gnu.org/licenses/>. */
  103519. #include <pthread.h>
  103520. #include <signal.h>
  103521. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic4.c uClibc/test/nptl/tst-basic4.c
  103522. --- uClibc-0.9.33.2/test/nptl/tst-basic4.c 2012-05-15 09:20:09.000000000 +0200
  103523. +++ uClibc/test/nptl/tst-basic4.c 2014-02-03 12:32:57.000000000 +0100
  103524. @@ -13,9 +13,8 @@
  103525. Lesser General Public License for more details.
  103526. You should have received a copy of the GNU Lesser General Public
  103527. - License along with the GNU C Library; if not, write to the Free
  103528. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103529. - 02111-1307 USA. */
  103530. + License along with the GNU C Library; if not, see
  103531. + <http://www.gnu.org/licenses/>. */
  103532. #include <errno.h>
  103533. #include <pthread.h>
  103534. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic5.c uClibc/test/nptl/tst-basic5.c
  103535. --- uClibc-0.9.33.2/test/nptl/tst-basic5.c 2012-05-15 09:20:09.000000000 +0200
  103536. +++ uClibc/test/nptl/tst-basic5.c 2014-02-03 12:32:57.000000000 +0100
  103537. @@ -13,9 +13,8 @@
  103538. Lesser General Public License for more details.
  103539. You should have received a copy of the GNU Lesser General Public
  103540. - License along with the GNU C Library; if not, write to the Free
  103541. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103542. - 02111-1307 USA. */
  103543. + License along with the GNU C Library; if not, see
  103544. + <http://www.gnu.org/licenses/>. */
  103545. #include <errno.h>
  103546. #include <pthread.h>
  103547. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic6.c uClibc/test/nptl/tst-basic6.c
  103548. --- uClibc-0.9.33.2/test/nptl/tst-basic6.c 2012-05-15 09:20:09.000000000 +0200
  103549. +++ uClibc/test/nptl/tst-basic6.c 2014-02-03 12:32:57.000000000 +0100
  103550. @@ -13,9 +13,8 @@
  103551. Lesser General Public License for more details.
  103552. You should have received a copy of the GNU Lesser General Public
  103553. - License along with the GNU C Library; if not, write to the Free
  103554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103555. - 02111-1307 USA. */
  103556. + License along with the GNU C Library; if not, see
  103557. + <http://www.gnu.org/licenses/>. */
  103558. #include <pthread.h>
  103559. #include <stdio.h>
  103560. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel10.c uClibc/test/nptl/tst-cancel10.c
  103561. --- uClibc-0.9.33.2/test/nptl/tst-cancel10.c 2012-05-15 09:20:09.000000000 +0200
  103562. +++ uClibc/test/nptl/tst-cancel10.c 2014-02-03 12:32:57.000000000 +0100
  103563. @@ -13,9 +13,8 @@
  103564. Lesser General Public License for more details.
  103565. You should have received a copy of the GNU Lesser General Public
  103566. - License along with the GNU C Library; if not, write to the Free
  103567. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103568. - 02111-1307 USA. */
  103569. + License along with the GNU C Library; if not, see
  103570. + <http://www.gnu.org/licenses/>. */
  103571. #include <pthread.h>
  103572. #include <stdio.h>
  103573. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel11.c uClibc/test/nptl/tst-cancel11.c
  103574. --- uClibc-0.9.33.2/test/nptl/tst-cancel11.c 2012-05-15 09:20:09.000000000 +0200
  103575. +++ uClibc/test/nptl/tst-cancel11.c 2014-02-03 12:32:57.000000000 +0100
  103576. @@ -13,9 +13,8 @@
  103577. Lesser General Public License for more details.
  103578. You should have received a copy of the GNU Lesser General Public
  103579. - License along with the GNU C Library; if not, write to the Free
  103580. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103581. - 02111-1307 USA. */
  103582. + License along with the GNU C Library; if not, see
  103583. + <http://www.gnu.org/licenses/>. */
  103584. #include <errno.h>
  103585. #include <pthread.h>
  103586. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel12.c uClibc/test/nptl/tst-cancel12.c
  103587. --- uClibc-0.9.33.2/test/nptl/tst-cancel12.c 2012-05-15 09:20:09.000000000 +0200
  103588. +++ uClibc/test/nptl/tst-cancel12.c 2014-02-03 12:32:57.000000000 +0100
  103589. @@ -13,9 +13,8 @@
  103590. Lesser General Public License for more details.
  103591. You should have received a copy of the GNU Lesser General Public
  103592. - License along with the GNU C Library; if not, write to the Free
  103593. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103594. - 02111-1307 USA. */
  103595. + License along with the GNU C Library; if not, see
  103596. + <http://www.gnu.org/licenses/>. */
  103597. #include <errno.h>
  103598. #include <pthread.h>
  103599. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel13.c uClibc/test/nptl/tst-cancel13.c
  103600. --- uClibc-0.9.33.2/test/nptl/tst-cancel13.c 2012-05-15 09:20:09.000000000 +0200
  103601. +++ uClibc/test/nptl/tst-cancel13.c 2014-02-03 12:32:57.000000000 +0100
  103602. @@ -13,9 +13,8 @@
  103603. Lesser General Public License for more details.
  103604. You should have received a copy of the GNU Lesser General Public
  103605. - License along with the GNU C Library; if not, write to the Free
  103606. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103607. - 02111-1307 USA. */
  103608. + License along with the GNU C Library; if not, see
  103609. + <http://www.gnu.org/licenses/>. */
  103610. #include <errno.h>
  103611. #include <pthread.h>
  103612. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel14.c uClibc/test/nptl/tst-cancel14.c
  103613. --- uClibc-0.9.33.2/test/nptl/tst-cancel14.c 2012-05-15 09:20:09.000000000 +0200
  103614. +++ uClibc/test/nptl/tst-cancel14.c 2014-02-03 12:32:57.000000000 +0100
  103615. @@ -13,9 +13,8 @@
  103616. Lesser General Public License for more details.
  103617. You should have received a copy of the GNU Lesser General Public
  103618. - License along with the GNU C Library; if not, write to the Free
  103619. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103620. - 02111-1307 USA. */
  103621. + License along with the GNU C Library; if not, see
  103622. + <http://www.gnu.org/licenses/>. */
  103623. #include <errno.h>
  103624. #include <pthread.h>
  103625. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel15.c uClibc/test/nptl/tst-cancel15.c
  103626. --- uClibc-0.9.33.2/test/nptl/tst-cancel15.c 2012-05-15 09:20:09.000000000 +0200
  103627. +++ uClibc/test/nptl/tst-cancel15.c 2014-02-03 12:32:57.000000000 +0100
  103628. @@ -13,9 +13,8 @@
  103629. Lesser General Public License for more details.
  103630. You should have received a copy of the GNU Lesser General Public
  103631. - License along with the GNU C Library; if not, write to the Free
  103632. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103633. - 02111-1307 USA. */
  103634. + License along with the GNU C Library; if not, see
  103635. + <http://www.gnu.org/licenses/>. */
  103636. #include <errno.h>
  103637. #include <pthread.h>
  103638. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel16.c uClibc/test/nptl/tst-cancel16.c
  103639. --- uClibc-0.9.33.2/test/nptl/tst-cancel16.c 2012-05-15 09:20:09.000000000 +0200
  103640. +++ uClibc/test/nptl/tst-cancel16.c 2014-02-03 12:32:57.000000000 +0100
  103641. @@ -13,9 +13,8 @@
  103642. Lesser General Public License for more details.
  103643. You should have received a copy of the GNU Lesser General Public
  103644. - License along with the GNU C Library; if not, write to the Free
  103645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103646. - 02111-1307 USA. */
  103647. + License along with the GNU C Library; if not, see
  103648. + <http://www.gnu.org/licenses/>. */
  103649. #include <errno.h>
  103650. #include <pthread.h>
  103651. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel18.c uClibc/test/nptl/tst-cancel18.c
  103652. --- uClibc-0.9.33.2/test/nptl/tst-cancel18.c 2012-05-15 09:20:09.000000000 +0200
  103653. +++ uClibc/test/nptl/tst-cancel18.c 2014-02-03 12:32:57.000000000 +0100
  103654. @@ -13,9 +13,8 @@
  103655. Lesser General Public License for more details.
  103656. You should have received a copy of the GNU Lesser General Public
  103657. - License along with the GNU C Library; if not, write to the Free
  103658. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103659. - 02111-1307 USA. */
  103660. + License along with the GNU C Library; if not, see
  103661. + <http://www.gnu.org/licenses/>. */
  103662. #include <errno.h>
  103663. #include <pthread.h>
  103664. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel19.c uClibc/test/nptl/tst-cancel19.c
  103665. --- uClibc-0.9.33.2/test/nptl/tst-cancel19.c 2012-05-15 09:20:09.000000000 +0200
  103666. +++ uClibc/test/nptl/tst-cancel19.c 2014-02-03 12:32:57.000000000 +0100
  103667. @@ -13,9 +13,8 @@
  103668. Lesser General Public License for more details.
  103669. You should have received a copy of the GNU Lesser General Public
  103670. - License along with the GNU C Library; if not, write to the Free
  103671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103672. - 02111-1307 USA. */
  103673. + License along with the GNU C Library; if not, see
  103674. + <http://www.gnu.org/licenses/>. */
  103675. #include <errno.h>
  103676. #include <error.h>
  103677. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel1.c uClibc/test/nptl/tst-cancel1.c
  103678. --- uClibc-0.9.33.2/test/nptl/tst-cancel1.c 2012-05-15 09:20:09.000000000 +0200
  103679. +++ uClibc/test/nptl/tst-cancel1.c 2014-02-03 12:32:57.000000000 +0100
  103680. @@ -13,9 +13,8 @@
  103681. Lesser General Public License for more details.
  103682. You should have received a copy of the GNU Lesser General Public
  103683. - License along with the GNU C Library; if not, write to the Free
  103684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103685. - 02111-1307 USA. */
  103686. + License along with the GNU C Library; if not, see
  103687. + <http://www.gnu.org/licenses/>. */
  103688. #include <pthread.h>
  103689. #include <signal.h>
  103690. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel20.c uClibc/test/nptl/tst-cancel20.c
  103691. --- uClibc-0.9.33.2/test/nptl/tst-cancel20.c 2012-05-15 09:20:09.000000000 +0200
  103692. +++ uClibc/test/nptl/tst-cancel20.c 2014-02-03 12:32:57.000000000 +0100
  103693. @@ -13,9 +13,8 @@
  103694. Lesser General Public License for more details.
  103695. You should have received a copy of the GNU Lesser General Public
  103696. - License along with the GNU C Library; if not, write to the Free
  103697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103698. - 02111-1307 USA. */
  103699. + License along with the GNU C Library; if not, see
  103700. + <http://www.gnu.org/licenses/>. */
  103701. #include <errno.h>
  103702. #include <pthread.h>
  103703. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel21.c uClibc/test/nptl/tst-cancel21.c
  103704. --- uClibc-0.9.33.2/test/nptl/tst-cancel21.c 2012-05-15 09:20:09.000000000 +0200
  103705. +++ uClibc/test/nptl/tst-cancel21.c 2014-02-03 12:32:57.000000000 +0100
  103706. @@ -13,9 +13,8 @@
  103707. Lesser General Public License for more details.
  103708. You should have received a copy of the GNU Lesser General Public
  103709. - License along with the GNU C Library; if not, write to the Free
  103710. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103711. - 02111-1307 USA. */
  103712. + License along with the GNU C Library; if not, see
  103713. + <http://www.gnu.org/licenses/>. */
  103714. #include <errno.h>
  103715. #include <pthread.h>
  103716. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel22.c uClibc/test/nptl/tst-cancel22.c
  103717. --- uClibc-0.9.33.2/test/nptl/tst-cancel22.c 2012-05-15 09:20:09.000000000 +0200
  103718. +++ uClibc/test/nptl/tst-cancel22.c 2014-02-03 12:32:57.000000000 +0100
  103719. @@ -13,9 +13,8 @@
  103720. Lesser General Public License for more details.
  103721. You should have received a copy of the GNU Lesser General Public
  103722. - License along with the GNU C Library; if not, write to the Free
  103723. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103724. - 02111-1307 USA. */
  103725. + License along with the GNU C Library; if not, see
  103726. + <http://www.gnu.org/licenses/>. */
  103727. #include <errno.h>
  103728. #include <pthread.h>
  103729. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel2.c uClibc/test/nptl/tst-cancel2.c
  103730. --- uClibc-0.9.33.2/test/nptl/tst-cancel2.c 2012-05-15 09:20:09.000000000 +0200
  103731. +++ uClibc/test/nptl/tst-cancel2.c 2014-02-03 12:32:57.000000000 +0100
  103732. @@ -13,9 +13,8 @@
  103733. Lesser General Public License for more details.
  103734. You should have received a copy of the GNU Lesser General Public
  103735. - License along with the GNU C Library; if not, write to the Free
  103736. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103737. - 02111-1307 USA. */
  103738. + License along with the GNU C Library; if not, see
  103739. + <http://www.gnu.org/licenses/>. */
  103740. #include <pthread.h>
  103741. #include <signal.h>
  103742. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel3.c uClibc/test/nptl/tst-cancel3.c
  103743. --- uClibc-0.9.33.2/test/nptl/tst-cancel3.c 2012-05-15 09:20:09.000000000 +0200
  103744. +++ uClibc/test/nptl/tst-cancel3.c 2014-02-03 12:32:57.000000000 +0100
  103745. @@ -13,9 +13,8 @@
  103746. Lesser General Public License for more details.
  103747. You should have received a copy of the GNU Lesser General Public
  103748. - License along with the GNU C Library; if not, write to the Free
  103749. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103750. - 02111-1307 USA. */
  103751. + License along with the GNU C Library; if not, see
  103752. + <http://www.gnu.org/licenses/>. */
  103753. #include <pthread.h>
  103754. #include <signal.h>
  103755. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel4.c uClibc/test/nptl/tst-cancel4.c
  103756. --- uClibc-0.9.33.2/test/nptl/tst-cancel4.c 2012-05-15 09:20:09.000000000 +0200
  103757. +++ uClibc/test/nptl/tst-cancel4.c 2014-02-03 12:32:57.000000000 +0100
  103758. @@ -13,9 +13,8 @@
  103759. Lesser General Public License for more details.
  103760. You should have received a copy of the GNU Lesser General Public
  103761. - License along with the GNU C Library; if not, write to the Free
  103762. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103763. - 02111-1307 USA. */
  103764. + License along with the GNU C Library; if not, see
  103765. + <http://www.gnu.org/licenses/>. */
  103766. /* NOTE: this tests functionality beyond POSIX. POSIX does not allow
  103767. exit to be called more than once. */
  103768. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel6.c uClibc/test/nptl/tst-cancel6.c
  103769. --- uClibc-0.9.33.2/test/nptl/tst-cancel6.c 2012-05-15 09:20:09.000000000 +0200
  103770. +++ uClibc/test/nptl/tst-cancel6.c 2014-02-03 12:32:57.000000000 +0100
  103771. @@ -13,9 +13,8 @@
  103772. Lesser General Public License for more details.
  103773. You should have received a copy of the GNU Lesser General Public
  103774. - License along with the GNU C Library; if not, write to the Free
  103775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103776. - 02111-1307 USA. */
  103777. + License along with the GNU C Library; if not, see
  103778. + <http://www.gnu.org/licenses/>. */
  103779. #include <pthread.h>
  103780. #include <stdio.h>
  103781. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel7.c uClibc/test/nptl/tst-cancel7.c
  103782. --- uClibc-0.9.33.2/test/nptl/tst-cancel7.c 2012-05-15 09:20:09.000000000 +0200
  103783. +++ uClibc/test/nptl/tst-cancel7.c 2014-02-03 12:32:57.000000000 +0100
  103784. @@ -13,9 +13,8 @@
  103785. Lesser General Public License for more details.
  103786. You should have received a copy of the GNU Lesser General Public
  103787. - License along with the GNU C Library; if not, write to the Free
  103788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103789. - 02111-1307 USA. */
  103790. + License along with the GNU C Library; if not, see
  103791. + <http://www.gnu.org/licenses/>. */
  103792. #include <errno.h>
  103793. #include <fcntl.h>
  103794. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel8.c uClibc/test/nptl/tst-cancel8.c
  103795. --- uClibc-0.9.33.2/test/nptl/tst-cancel8.c 2012-05-15 09:20:09.000000000 +0200
  103796. +++ uClibc/test/nptl/tst-cancel8.c 2014-02-03 12:32:57.000000000 +0100
  103797. @@ -13,9 +13,8 @@
  103798. Lesser General Public License for more details.
  103799. You should have received a copy of the GNU Lesser General Public
  103800. - License along with the GNU C Library; if not, write to the Free
  103801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103802. - 02111-1307 USA. */
  103803. + License along with the GNU C Library; if not, see
  103804. + <http://www.gnu.org/licenses/>. */
  103805. #include <pthread.h>
  103806. #include <stdio.h>
  103807. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel9.c uClibc/test/nptl/tst-cancel9.c
  103808. --- uClibc-0.9.33.2/test/nptl/tst-cancel9.c 2012-05-15 09:20:09.000000000 +0200
  103809. +++ uClibc/test/nptl/tst-cancel9.c 2014-02-03 12:32:57.000000000 +0100
  103810. @@ -13,9 +13,8 @@
  103811. Lesser General Public License for more details.
  103812. You should have received a copy of the GNU Lesser General Public
  103813. - License along with the GNU C Library; if not, write to the Free
  103814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103815. - 02111-1307 USA. */
  103816. + License along with the GNU C Library; if not, see
  103817. + <http://www.gnu.org/licenses/>. */
  103818. #include <fcntl.h>
  103819. #include <pthread.h>
  103820. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup0.c uClibc/test/nptl/tst-cleanup0.c
  103821. --- uClibc-0.9.33.2/test/nptl/tst-cleanup0.c 2012-05-15 09:20:09.000000000 +0200
  103822. +++ uClibc/test/nptl/tst-cleanup0.c 2014-02-03 12:32:57.000000000 +0100
  103823. @@ -13,9 +13,8 @@
  103824. Lesser General Public License for more details.
  103825. You should have received a copy of the GNU Lesser General Public
  103826. - License along with the GNU C Library; if not, write to the Free
  103827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103828. - 02111-1307 USA. */
  103829. + License along with the GNU C Library; if not, see
  103830. + <http://www.gnu.org/licenses/>. */
  103831. #include <pthread.h>
  103832. #include <stdio.h>
  103833. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup1.c uClibc/test/nptl/tst-cleanup1.c
  103834. --- uClibc-0.9.33.2/test/nptl/tst-cleanup1.c 2012-05-15 09:20:09.000000000 +0200
  103835. +++ uClibc/test/nptl/tst-cleanup1.c 2014-02-03 12:32:57.000000000 +0100
  103836. @@ -13,9 +13,8 @@
  103837. Lesser General Public License for more details.
  103838. You should have received a copy of the GNU Lesser General Public
  103839. - License along with the GNU C Library; if not, write to the Free
  103840. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103841. - 02111-1307 USA. */
  103842. + License along with the GNU C Library; if not, see
  103843. + <http://www.gnu.org/licenses/>. */
  103844. #include <pthread.h>
  103845. #include <stdio.h>
  103846. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup2.c uClibc/test/nptl/tst-cleanup2.c
  103847. --- uClibc-0.9.33.2/test/nptl/tst-cleanup2.c 2012-05-15 09:20:09.000000000 +0200
  103848. +++ uClibc/test/nptl/tst-cleanup2.c 2014-02-03 12:32:57.000000000 +0100
  103849. @@ -13,9 +13,8 @@
  103850. Lesser General Public License for more details.
  103851. You should have received a copy of the GNU Lesser General Public
  103852. - License along with the GNU C Library; if not, write to the Free
  103853. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103854. - 02111-1307 USA. */
  103855. + License along with the GNU C Library; if not, see
  103856. + <http://www.gnu.org/licenses/>. */
  103857. #include <setjmp.h>
  103858. #include <signal.h>
  103859. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup3.c uClibc/test/nptl/tst-cleanup3.c
  103860. --- uClibc-0.9.33.2/test/nptl/tst-cleanup3.c 2012-05-15 09:20:09.000000000 +0200
  103861. +++ uClibc/test/nptl/tst-cleanup3.c 2014-02-03 12:32:57.000000000 +0100
  103862. @@ -13,9 +13,8 @@
  103863. Lesser General Public License for more details.
  103864. You should have received a copy of the GNU Lesser General Public
  103865. - License along with the GNU C Library; if not, write to the Free
  103866. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103867. - 02111-1307 USA. */
  103868. + License along with the GNU C Library; if not, see
  103869. + <http://www.gnu.org/licenses/>. */
  103870. #include <pthread.h>
  103871. #include <stdio.h>
  103872. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup4aux.c uClibc/test/nptl/tst-cleanup4aux.c
  103873. --- uClibc-0.9.33.2/test/nptl/tst-cleanup4aux.c 2012-05-15 09:20:09.000000000 +0200
  103874. +++ uClibc/test/nptl/tst-cleanup4aux.c 2014-02-03 12:32:57.000000000 +0100
  103875. @@ -13,9 +13,8 @@
  103876. Lesser General Public License for more details.
  103877. You should have received a copy of the GNU Lesser General Public
  103878. - License along with the GNU C Library; if not, write to the Free
  103879. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103880. - 02111-1307 USA. */
  103881. + License along with the GNU C Library; if not, see
  103882. + <http://www.gnu.org/licenses/>. */
  103883. #include <pthread.h>
  103884. #include <stdio.h>
  103885. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup4.c uClibc/test/nptl/tst-cleanup4.c
  103886. --- uClibc-0.9.33.2/test/nptl/tst-cleanup4.c 2012-05-15 09:20:09.000000000 +0200
  103887. +++ uClibc/test/nptl/tst-cleanup4.c 2014-02-03 12:32:57.000000000 +0100
  103888. @@ -13,9 +13,8 @@
  103889. Lesser General Public License for more details.
  103890. You should have received a copy of the GNU Lesser General Public
  103891. - License along with the GNU C Library; if not, write to the Free
  103892. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103893. - 02111-1307 USA. */
  103894. + License along with the GNU C Library; if not, see
  103895. + <http://www.gnu.org/licenses/>. */
  103896. #include <pthread.h>
  103897. #include <stdio.h>
  103898. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock1.c uClibc/test/nptl/tst-clock1.c
  103899. --- uClibc-0.9.33.2/test/nptl/tst-clock1.c 2012-05-15 09:20:09.000000000 +0200
  103900. +++ uClibc/test/nptl/tst-clock1.c 2014-02-03 12:32:57.000000000 +0100
  103901. @@ -13,9 +13,8 @@
  103902. Lesser General Public License for more details.
  103903. You should have received a copy of the GNU Lesser General Public
  103904. - License along with the GNU C Library; if not, write to the Free
  103905. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103906. - 02111-1307 USA. */
  103907. + License along with the GNU C Library; if not, see
  103908. + <http://www.gnu.org/licenses/>. */
  103909. #include <pthread.h>
  103910. #include <stdio.h>
  103911. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock2.c uClibc/test/nptl/tst-clock2.c
  103912. --- uClibc-0.9.33.2/test/nptl/tst-clock2.c 2012-05-15 09:20:09.000000000 +0200
  103913. +++ uClibc/test/nptl/tst-clock2.c 2014-02-03 12:32:57.000000000 +0100
  103914. @@ -13,9 +13,8 @@
  103915. Lesser General Public License for more details.
  103916. You should have received a copy of the GNU Lesser General Public
  103917. - License along with the GNU C Library; if not, write to the Free
  103918. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103919. - 02111-1307 USA. */
  103920. + License along with the GNU C Library; if not, see
  103921. + <http://www.gnu.org/licenses/>. */
  103922. #include <errno.h>
  103923. #include <pthread.h>
  103924. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock.c uClibc/test/nptl/tst-clock.c
  103925. --- uClibc-0.9.33.2/test/nptl/tst-clock.c 2012-05-15 09:20:09.000000000 +0200
  103926. +++ uClibc/test/nptl/tst-clock.c 2014-02-03 12:32:57.000000000 +0100
  103927. @@ -14,9 +14,8 @@
  103928. Lesser General Public License for more details.
  103929. You should have received a copy of the GNU Lesser General Public
  103930. - License along with the GNU C Library; if not, write to the Free
  103931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103932. - 02111-1307 USA. */
  103933. + License along with the GNU C Library; if not, see
  103934. + <http://www.gnu.org/licenses/>. */
  103935. #include <stdio.h>
  103936. #include <string.h>
  103937. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock_nanosleep.c uClibc/test/nptl/tst-clock_nanosleep.c
  103938. --- uClibc-0.9.33.2/test/nptl/tst-clock_nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  103939. +++ uClibc/test/nptl/tst-clock_nanosleep.c 2014-02-03 12:32:57.000000000 +0100
  103940. @@ -12,9 +12,8 @@
  103941. Lesser General Public License for more details.
  103942. You should have received a copy of the GNU Lesser General Public
  103943. - License along with the GNU C Library; if not, write to the Free
  103944. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103945. - 02111-1307 USA. */
  103946. + License along with the GNU C Library; if not, see
  103947. + <http://www.gnu.org/licenses/>. */
  103948. #include <errno.h>
  103949. #include <stdio.h>
  103950. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond10.c uClibc/test/nptl/tst-cond10.c
  103951. --- uClibc-0.9.33.2/test/nptl/tst-cond10.c 2012-05-15 09:20:09.000000000 +0200
  103952. +++ uClibc/test/nptl/tst-cond10.c 2014-02-03 12:32:57.000000000 +0100
  103953. @@ -13,9 +13,8 @@
  103954. Lesser General Public License for more details.
  103955. You should have received a copy of the GNU Lesser General Public
  103956. - License along with the GNU C Library; if not, write to the Free
  103957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103958. - 02111-1307 USA. */
  103959. + License along with the GNU C Library; if not, see
  103960. + <http://www.gnu.org/licenses/>. */
  103961. #include <error.h>
  103962. #include <pthread.h>
  103963. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond11.c uClibc/test/nptl/tst-cond11.c
  103964. --- uClibc-0.9.33.2/test/nptl/tst-cond11.c 2012-05-15 09:20:09.000000000 +0200
  103965. +++ uClibc/test/nptl/tst-cond11.c 2014-02-03 12:32:57.000000000 +0100
  103966. @@ -13,9 +13,8 @@
  103967. Lesser General Public License for more details.
  103968. You should have received a copy of the GNU Lesser General Public
  103969. - License along with the GNU C Library; if not, write to the Free
  103970. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103971. - 02111-1307 USA. */
  103972. + License along with the GNU C Library; if not, see
  103973. + <http://www.gnu.org/licenses/>. */
  103974. #include <errno.h>
  103975. #include <pthread.h>
  103976. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond12.c uClibc/test/nptl/tst-cond12.c
  103977. --- uClibc-0.9.33.2/test/nptl/tst-cond12.c 2012-05-15 09:20:09.000000000 +0200
  103978. +++ uClibc/test/nptl/tst-cond12.c 2014-02-03 12:32:57.000000000 +0100
  103979. @@ -13,9 +13,8 @@
  103980. Lesser General Public License for more details.
  103981. You should have received a copy of the GNU Lesser General Public
  103982. - License along with the GNU C Library; if not, write to the Free
  103983. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103984. - 02111-1307 USA. */
  103985. + License along with the GNU C Library; if not, see
  103986. + <http://www.gnu.org/licenses/>. */
  103987. #include <errno.h>
  103988. #include <pthread.h>
  103989. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond14.c uClibc/test/nptl/tst-cond14.c
  103990. --- uClibc-0.9.33.2/test/nptl/tst-cond14.c 2012-05-15 09:20:09.000000000 +0200
  103991. +++ uClibc/test/nptl/tst-cond14.c 2014-02-03 12:32:57.000000000 +0100
  103992. @@ -13,9 +13,8 @@
  103993. Lesser General Public License for more details.
  103994. You should have received a copy of the GNU Lesser General Public
  103995. - License along with the GNU C Library; if not, write to the Free
  103996. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103997. - 02111-1307 USA. */
  103998. + License along with the GNU C Library; if not, see
  103999. + <http://www.gnu.org/licenses/>. */
  104000. #include <pthread.h>
  104001. #include <stdio.h>
  104002. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond15.c uClibc/test/nptl/tst-cond15.c
  104003. --- uClibc-0.9.33.2/test/nptl/tst-cond15.c 2012-05-15 09:20:09.000000000 +0200
  104004. +++ uClibc/test/nptl/tst-cond15.c 2014-02-03 12:32:57.000000000 +0100
  104005. @@ -13,9 +13,8 @@
  104006. Lesser General Public License for more details.
  104007. You should have received a copy of the GNU Lesser General Public
  104008. - License along with the GNU C Library; if not, write to the Free
  104009. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104010. - 02111-1307 USA. */
  104011. + License along with the GNU C Library; if not, see
  104012. + <http://www.gnu.org/licenses/>. */
  104013. #include <errno.h>
  104014. #include <pthread.h>
  104015. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond16.c uClibc/test/nptl/tst-cond16.c
  104016. --- uClibc-0.9.33.2/test/nptl/tst-cond16.c 2012-05-15 09:20:09.000000000 +0200
  104017. +++ uClibc/test/nptl/tst-cond16.c 2014-02-03 12:32:57.000000000 +0100
  104018. @@ -13,9 +13,8 @@
  104019. Lesser General Public License for more details.
  104020. You should have received a copy of the GNU Lesser General Public
  104021. - License along with the GNU C Library; if not, write to the Free
  104022. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104023. - 02111-1307 USA. */
  104024. + License along with the GNU C Library; if not, see
  104025. + <http://www.gnu.org/licenses/>. */
  104026. #include <errno.h>
  104027. #include <pthread.h>
  104028. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond18.c uClibc/test/nptl/tst-cond18.c
  104029. --- uClibc-0.9.33.2/test/nptl/tst-cond18.c 2012-05-15 09:20:09.000000000 +0200
  104030. +++ uClibc/test/nptl/tst-cond18.c 2014-02-03 12:32:57.000000000 +0100
  104031. @@ -13,9 +13,8 @@
  104032. Lesser General Public License for more details.
  104033. You should have received a copy of the GNU Lesser General Public
  104034. - License along with the GNU C Library; if not, write to the Free
  104035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104036. - 02111-1307 USA. */
  104037. + License along with the GNU C Library; if not, see
  104038. + <http://www.gnu.org/licenses/>. */
  104039. #include <errno.h>
  104040. #include <fcntl.h>
  104041. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond19.c uClibc/test/nptl/tst-cond19.c
  104042. --- uClibc-0.9.33.2/test/nptl/tst-cond19.c 2012-05-15 09:20:09.000000000 +0200
  104043. +++ uClibc/test/nptl/tst-cond19.c 2014-02-03 12:32:57.000000000 +0100
  104044. @@ -13,9 +13,8 @@
  104045. Lesser General Public License for more details.
  104046. You should have received a copy of the GNU Lesser General Public
  104047. - License along with the GNU C Library; if not, write to the Free
  104048. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104049. - 02111-1307 USA. */
  104050. + License along with the GNU C Library; if not, see
  104051. + <http://www.gnu.org/licenses/>. */
  104052. #include <errno.h>
  104053. #include <pthread.h>
  104054. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond1.c uClibc/test/nptl/tst-cond1.c
  104055. --- uClibc-0.9.33.2/test/nptl/tst-cond1.c 2012-05-15 09:20:09.000000000 +0200
  104056. +++ uClibc/test/nptl/tst-cond1.c 2014-02-03 12:32:57.000000000 +0100
  104057. @@ -13,9 +13,8 @@
  104058. Lesser General Public License for more details.
  104059. You should have received a copy of the GNU Lesser General Public
  104060. - License along with the GNU C Library; if not, write to the Free
  104061. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104062. - 02111-1307 USA. */
  104063. + License along with the GNU C Library; if not, see
  104064. + <http://www.gnu.org/licenses/>. */
  104065. #include <error.h>
  104066. #include <pthread.h>
  104067. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond20.c uClibc/test/nptl/tst-cond20.c
  104068. --- uClibc-0.9.33.2/test/nptl/tst-cond20.c 2012-05-15 09:20:09.000000000 +0200
  104069. +++ uClibc/test/nptl/tst-cond20.c 2014-02-03 12:32:57.000000000 +0100
  104070. @@ -13,9 +13,8 @@
  104071. Lesser General Public License for more details.
  104072. You should have received a copy of the GNU Lesser General Public
  104073. - License along with the GNU C Library; if not, write to the Free
  104074. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104075. - 02111-1307 USA. */
  104076. + License along with the GNU C Library; if not, see
  104077. + <http://www.gnu.org/licenses/>. */
  104078. #include <pthread.h>
  104079. #include <stdio.h>
  104080. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond23.c uClibc/test/nptl/tst-cond23.c
  104081. --- uClibc-0.9.33.2/test/nptl/tst-cond23.c 2012-05-15 09:20:09.000000000 +0200
  104082. +++ uClibc/test/nptl/tst-cond23.c 2014-02-03 12:32:57.000000000 +0100
  104083. @@ -13,9 +13,8 @@
  104084. Lesser General Public License for more details.
  104085. You should have received a copy of the GNU Lesser General Public
  104086. - License along with the GNU C Library; if not, write to the Free
  104087. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104088. - 02111-1307 USA. */
  104089. + License along with the GNU C Library; if not, see
  104090. + <http://www.gnu.org/licenses/>. */
  104091. #include <errno.h>
  104092. #include <pthread.h>
  104093. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond2.c uClibc/test/nptl/tst-cond2.c
  104094. --- uClibc-0.9.33.2/test/nptl/tst-cond2.c 2012-05-15 09:20:09.000000000 +0200
  104095. +++ uClibc/test/nptl/tst-cond2.c 2014-02-03 12:32:57.000000000 +0100
  104096. @@ -13,9 +13,8 @@
  104097. Lesser General Public License for more details.
  104098. You should have received a copy of the GNU Lesser General Public
  104099. - License along with the GNU C Library; if not, write to the Free
  104100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104101. - 02111-1307 USA. */
  104102. + License along with the GNU C Library; if not, see
  104103. + <http://www.gnu.org/licenses/>. */
  104104. #include <error.h>
  104105. #include <pthread.h>
  104106. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond3.c uClibc/test/nptl/tst-cond3.c
  104107. --- uClibc-0.9.33.2/test/nptl/tst-cond3.c 2012-05-15 09:20:09.000000000 +0200
  104108. +++ uClibc/test/nptl/tst-cond3.c 2014-02-03 12:32:57.000000000 +0100
  104109. @@ -13,9 +13,8 @@
  104110. Lesser General Public License for more details.
  104111. You should have received a copy of the GNU Lesser General Public
  104112. - License along with the GNU C Library; if not, write to the Free
  104113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104114. - 02111-1307 USA. */
  104115. + License along with the GNU C Library; if not, see
  104116. + <http://www.gnu.org/licenses/>. */
  104117. #include <pthread.h>
  104118. #include <stdio.h>
  104119. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond4.c uClibc/test/nptl/tst-cond4.c
  104120. --- uClibc-0.9.33.2/test/nptl/tst-cond4.c 2012-05-15 09:20:09.000000000 +0200
  104121. +++ uClibc/test/nptl/tst-cond4.c 2014-02-03 12:32:57.000000000 +0100
  104122. @@ -13,9 +13,8 @@
  104123. Lesser General Public License for more details.
  104124. You should have received a copy of the GNU Lesser General Public
  104125. - License along with the GNU C Library; if not, write to the Free
  104126. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104127. - 02111-1307 USA. */
  104128. + License along with the GNU C Library; if not, see
  104129. + <http://www.gnu.org/licenses/>. */
  104130. #include <errno.h>
  104131. #include <pthread.h>
  104132. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond5.c uClibc/test/nptl/tst-cond5.c
  104133. --- uClibc-0.9.33.2/test/nptl/tst-cond5.c 2012-05-15 09:20:09.000000000 +0200
  104134. +++ uClibc/test/nptl/tst-cond5.c 2014-02-03 12:32:57.000000000 +0100
  104135. @@ -13,9 +13,8 @@
  104136. Lesser General Public License for more details.
  104137. You should have received a copy of the GNU Lesser General Public
  104138. - License along with the GNU C Library; if not, write to the Free
  104139. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104140. - 02111-1307 USA. */
  104141. + License along with the GNU C Library; if not, see
  104142. + <http://www.gnu.org/licenses/>. */
  104143. #include <errno.h>
  104144. #include <pthread.h>
  104145. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond6.c uClibc/test/nptl/tst-cond6.c
  104146. --- uClibc-0.9.33.2/test/nptl/tst-cond6.c 2012-05-15 09:20:09.000000000 +0200
  104147. +++ uClibc/test/nptl/tst-cond6.c 2014-02-03 12:32:57.000000000 +0100
  104148. @@ -13,9 +13,8 @@
  104149. Lesser General Public License for more details.
  104150. You should have received a copy of the GNU Lesser General Public
  104151. - License along with the GNU C Library; if not, write to the Free
  104152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104153. - 02111-1307 USA. */
  104154. + License along with the GNU C Library; if not, see
  104155. + <http://www.gnu.org/licenses/>. */
  104156. #include <errno.h>
  104157. #include <pthread.h>
  104158. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond7.c uClibc/test/nptl/tst-cond7.c
  104159. --- uClibc-0.9.33.2/test/nptl/tst-cond7.c 2012-05-15 09:20:09.000000000 +0200
  104160. +++ uClibc/test/nptl/tst-cond7.c 2014-02-03 12:32:57.000000000 +0100
  104161. @@ -13,9 +13,8 @@
  104162. Lesser General Public License for more details.
  104163. You should have received a copy of the GNU Lesser General Public
  104164. - License along with the GNU C Library; if not, write to the Free
  104165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104166. - 02111-1307 USA. */
  104167. + License along with the GNU C Library; if not, see
  104168. + <http://www.gnu.org/licenses/>. */
  104169. #include <errno.h>
  104170. #include <pthread.h>
  104171. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond8.c uClibc/test/nptl/tst-cond8.c
  104172. --- uClibc-0.9.33.2/test/nptl/tst-cond8.c 2012-05-15 09:20:09.000000000 +0200
  104173. +++ uClibc/test/nptl/tst-cond8.c 2014-02-03 12:32:57.000000000 +0100
  104174. @@ -13,9 +13,8 @@
  104175. Lesser General Public License for more details.
  104176. You should have received a copy of the GNU Lesser General Public
  104177. - License along with the GNU C Library; if not, write to the Free
  104178. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104179. - 02111-1307 USA. */
  104180. + License along with the GNU C Library; if not, see
  104181. + <http://www.gnu.org/licenses/>. */
  104182. #include <errno.h>
  104183. #include <pthread.h>
  104184. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond9.c uClibc/test/nptl/tst-cond9.c
  104185. --- uClibc-0.9.33.2/test/nptl/tst-cond9.c 2012-05-15 09:20:09.000000000 +0200
  104186. +++ uClibc/test/nptl/tst-cond9.c 2014-02-03 12:32:57.000000000 +0100
  104187. @@ -13,9 +13,8 @@
  104188. Lesser General Public License for more details.
  104189. You should have received a copy of the GNU Lesser General Public
  104190. - License along with the GNU C Library; if not, write to the Free
  104191. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104192. - 02111-1307 USA. */
  104193. + License along with the GNU C Library; if not, see
  104194. + <http://www.gnu.org/licenses/>. */
  104195. #include <errno.h>
  104196. #include <pthread.h>
  104197. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cpuclock1.c uClibc/test/nptl/tst-cpuclock1.c
  104198. --- uClibc-0.9.33.2/test/nptl/tst-cpuclock1.c 2012-05-15 09:20:09.000000000 +0200
  104199. +++ uClibc/test/nptl/tst-cpuclock1.c 2014-02-03 12:32:57.000000000 +0100
  104200. @@ -13,9 +13,8 @@
  104201. Lesser General Public License for more details.
  104202. You should have received a copy of the GNU Lesser General Public
  104203. - License along with the GNU C Library; if not, write to the Free
  104204. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104205. - 02111-1307 USA. */
  104206. + License along with the GNU C Library; if not, see
  104207. + <http://www.gnu.org/licenses/>. */
  104208. #include <stdio.h>
  104209. #include <stdlib.h>
  104210. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cpuclock2.c uClibc/test/nptl/tst-cpuclock2.c
  104211. --- uClibc-0.9.33.2/test/nptl/tst-cpuclock2.c 2012-05-15 09:20:09.000000000 +0200
  104212. +++ uClibc/test/nptl/tst-cpuclock2.c 2014-02-03 12:32:57.000000000 +0100
  104213. @@ -13,9 +13,8 @@
  104214. Lesser General Public License for more details.
  104215. You should have received a copy of the GNU Lesser General Public
  104216. - License along with the GNU C Library; if not, write to the Free
  104217. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104218. - 02111-1307 USA. */
  104219. + License along with the GNU C Library; if not, see
  104220. + <http://www.gnu.org/licenses/>. */
  104221. #include <unistd.h>
  104222. diff -Nur uClibc-0.9.33.2/test/nptl/tst-detach1.c uClibc/test/nptl/tst-detach1.c
  104223. --- uClibc-0.9.33.2/test/nptl/tst-detach1.c 2012-05-15 09:20:09.000000000 +0200
  104224. +++ uClibc/test/nptl/tst-detach1.c 2014-02-03 12:32:57.000000000 +0100
  104225. @@ -13,9 +13,8 @@
  104226. Lesser General Public License for more details.
  104227. You should have received a copy of the GNU Lesser General Public
  104228. - License along with the GNU C Library; if not, write to the Free
  104229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104230. - 02111-1307 USA. */
  104231. + License along with the GNU C Library; if not, see
  104232. + <http://www.gnu.org/licenses/>. */
  104233. #include <pthread.h>
  104234. #include <stdio.h>
  104235. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr1.c uClibc/test/nptl/tst-eintr1.c
  104236. --- uClibc-0.9.33.2/test/nptl/tst-eintr1.c 2012-05-15 09:20:09.000000000 +0200
  104237. +++ uClibc/test/nptl/tst-eintr1.c 2014-02-03 12:32:57.000000000 +0100
  104238. @@ -13,9 +13,8 @@
  104239. Lesser General Public License for more details.
  104240. You should have received a copy of the GNU Lesser General Public
  104241. - License along with the GNU C Library; if not, write to the Free
  104242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104243. - 02111-1307 USA. */
  104244. + License along with the GNU C Library; if not, see
  104245. + <http://www.gnu.org/licenses/>. */
  104246. #include <errno.h>
  104247. #include <pthread.h>
  104248. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr2.c uClibc/test/nptl/tst-eintr2.c
  104249. --- uClibc-0.9.33.2/test/nptl/tst-eintr2.c 2012-05-15 09:20:09.000000000 +0200
  104250. +++ uClibc/test/nptl/tst-eintr2.c 2014-02-03 12:32:57.000000000 +0100
  104251. @@ -13,9 +13,8 @@
  104252. Lesser General Public License for more details.
  104253. You should have received a copy of the GNU Lesser General Public
  104254. - License along with the GNU C Library; if not, write to the Free
  104255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104256. - 02111-1307 USA. */
  104257. + License along with the GNU C Library; if not, see
  104258. + <http://www.gnu.org/licenses/>. */
  104259. #include <errno.h>
  104260. #include <pthread.h>
  104261. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr3.c uClibc/test/nptl/tst-eintr3.c
  104262. --- uClibc-0.9.33.2/test/nptl/tst-eintr3.c 2012-05-15 09:20:09.000000000 +0200
  104263. +++ uClibc/test/nptl/tst-eintr3.c 2014-02-03 12:32:57.000000000 +0100
  104264. @@ -13,9 +13,8 @@
  104265. Lesser General Public License for more details.
  104266. You should have received a copy of the GNU Lesser General Public
  104267. - License along with the GNU C Library; if not, write to the Free
  104268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104269. - 02111-1307 USA. */
  104270. + License along with the GNU C Library; if not, see
  104271. + <http://www.gnu.org/licenses/>. */
  104272. #include <errno.h>
  104273. #include <pthread.h>
  104274. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr4.c uClibc/test/nptl/tst-eintr4.c
  104275. --- uClibc-0.9.33.2/test/nptl/tst-eintr4.c 2012-05-15 09:20:09.000000000 +0200
  104276. +++ uClibc/test/nptl/tst-eintr4.c 2014-02-03 12:32:57.000000000 +0100
  104277. @@ -13,9 +13,8 @@
  104278. Lesser General Public License for more details.
  104279. You should have received a copy of the GNU Lesser General Public
  104280. - License along with the GNU C Library; if not, write to the Free
  104281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104282. - 02111-1307 USA. */
  104283. + License along with the GNU C Library; if not, see
  104284. + <http://www.gnu.org/licenses/>. */
  104285. #include <errno.h>
  104286. #include <pthread.h>
  104287. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr5.c uClibc/test/nptl/tst-eintr5.c
  104288. --- uClibc-0.9.33.2/test/nptl/tst-eintr5.c 2012-05-15 09:20:09.000000000 +0200
  104289. +++ uClibc/test/nptl/tst-eintr5.c 2014-02-03 12:32:57.000000000 +0100
  104290. @@ -13,9 +13,8 @@
  104291. Lesser General Public License for more details.
  104292. You should have received a copy of the GNU Lesser General Public
  104293. - License along with the GNU C Library; if not, write to the Free
  104294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104295. - 02111-1307 USA. */
  104296. + License along with the GNU C Library; if not, see
  104297. + <http://www.gnu.org/licenses/>. */
  104298. #include <errno.h>
  104299. #include <pthread.h>
  104300. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec2.c uClibc/test/nptl/tst-exec2.c
  104301. --- uClibc-0.9.33.2/test/nptl/tst-exec2.c 2012-05-15 09:20:09.000000000 +0200
  104302. +++ uClibc/test/nptl/tst-exec2.c 2014-02-03 12:32:57.000000000 +0100
  104303. @@ -14,9 +14,8 @@
  104304. Lesser General Public License for more details.
  104305. You should have received a copy of the GNU Lesser General Public
  104306. - License along with the GNU C Library; if not, write to the Free
  104307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104308. - 02111-1307 USA. */
  104309. + License along with the GNU C Library; if not, see
  104310. + <http://www.gnu.org/licenses/>. */
  104311. #include <errno.h>
  104312. #include <paths.h>
  104313. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec3.c uClibc/test/nptl/tst-exec3.c
  104314. --- uClibc-0.9.33.2/test/nptl/tst-exec3.c 2012-05-15 09:20:09.000000000 +0200
  104315. +++ uClibc/test/nptl/tst-exec3.c 2014-02-03 12:32:57.000000000 +0100
  104316. @@ -14,9 +14,8 @@
  104317. Lesser General Public License for more details.
  104318. You should have received a copy of the GNU Lesser General Public
  104319. - License along with the GNU C Library; if not, write to the Free
  104320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104321. - 02111-1307 USA. */
  104322. + License along with the GNU C Library; if not, see
  104323. + <http://www.gnu.org/licenses/>. */
  104324. #include <errno.h>
  104325. #include <paths.h>
  104326. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec4.c uClibc/test/nptl/tst-exec4.c
  104327. --- uClibc-0.9.33.2/test/nptl/tst-exec4.c 2012-05-15 09:20:09.000000000 +0200
  104328. +++ uClibc/test/nptl/tst-exec4.c 2014-02-03 12:32:57.000000000 +0100
  104329. @@ -14,9 +14,8 @@
  104330. Lesser General Public License for more details.
  104331. You should have received a copy of the GNU Lesser General Public
  104332. - License along with the GNU C Library; if not, write to the Free
  104333. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104334. - 02111-1307 USA. */
  104335. + License along with the GNU C Library; if not, see
  104336. + <http://www.gnu.org/licenses/>. */
  104337. #include <pthread.h>
  104338. #include <signal.h>
  104339. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exit1.c uClibc/test/nptl/tst-exit1.c
  104340. --- uClibc-0.9.33.2/test/nptl/tst-exit1.c 2012-05-15 09:20:09.000000000 +0200
  104341. +++ uClibc/test/nptl/tst-exit1.c 2014-02-03 12:32:57.000000000 +0100
  104342. @@ -13,9 +13,8 @@
  104343. Lesser General Public License for more details.
  104344. You should have received a copy of the GNU Lesser General Public
  104345. - License along with the GNU C Library; if not, write to the Free
  104346. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104347. - 02111-1307 USA. */
  104348. + License along with the GNU C Library; if not, see
  104349. + <http://www.gnu.org/licenses/>. */
  104350. /* NOTE: this tests functionality beyond POSIX. POSIX does not allow
  104351. exit to be called more than once. */
  104352. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fini1.c uClibc/test/nptl/tst-fini1.c
  104353. --- uClibc-0.9.33.2/test/nptl/tst-fini1.c 2012-05-15 09:20:09.000000000 +0200
  104354. +++ uClibc/test/nptl/tst-fini1.c 2014-02-03 12:32:57.000000000 +0100
  104355. @@ -13,9 +13,8 @@
  104356. Lesser General Public License for more details.
  104357. You should have received a copy of the GNU Lesser General Public
  104358. - License along with the GNU C Library; if not, write to the Free
  104359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104360. - 02111-1307 USA. */
  104361. + License along with the GNU C Library; if not, see
  104362. + <http://www.gnu.org/licenses/>. */
  104363. #include <unistd.h>
  104364. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fini1mod.c uClibc/test/nptl/tst-fini1mod.c
  104365. --- uClibc-0.9.33.2/test/nptl/tst-fini1mod.c 2012-05-15 09:20:09.000000000 +0200
  104366. +++ uClibc/test/nptl/tst-fini1mod.c 2014-02-03 12:32:57.000000000 +0100
  104367. @@ -13,9 +13,8 @@
  104368. Lesser General Public License for more details.
  104369. You should have received a copy of the GNU Lesser General Public
  104370. - License along with the GNU C Library; if not, write to the Free
  104371. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104372. - 02111-1307 USA. */
  104373. + License along with the GNU C Library; if not, see
  104374. + <http://www.gnu.org/licenses/>. */
  104375. #include <pthread.h>
  104376. #include <stdio.h>
  104377. diff -Nur uClibc-0.9.33.2/test/nptl/tst-flock1.c uClibc/test/nptl/tst-flock1.c
  104378. --- uClibc-0.9.33.2/test/nptl/tst-flock1.c 2012-05-15 09:20:09.000000000 +0200
  104379. +++ uClibc/test/nptl/tst-flock1.c 2014-02-03 12:32:57.000000000 +0100
  104380. @@ -13,9 +13,8 @@
  104381. Lesser General Public License for more details.
  104382. You should have received a copy of the GNU Lesser General Public
  104383. - License along with the GNU C Library; if not, write to the Free
  104384. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104385. - 02111-1307 USA. */
  104386. + License along with the GNU C Library; if not, see
  104387. + <http://www.gnu.org/licenses/>. */
  104388. #include <pthread.h>
  104389. #include <stdio.h>
  104390. diff -Nur uClibc-0.9.33.2/test/nptl/tst-flock2.c uClibc/test/nptl/tst-flock2.c
  104391. --- uClibc-0.9.33.2/test/nptl/tst-flock2.c 2012-05-15 09:20:09.000000000 +0200
  104392. +++ uClibc/test/nptl/tst-flock2.c 2014-02-03 12:32:57.000000000 +0100
  104393. @@ -13,9 +13,8 @@
  104394. Lesser General Public License for more details.
  104395. You should have received a copy of the GNU Lesser General Public
  104396. - License along with the GNU C Library; if not, write to the Free
  104397. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104398. - 02111-1307 USA. */
  104399. + License along with the GNU C Library; if not, see
  104400. + <http://www.gnu.org/licenses/>. */
  104401. #include <errno.h>
  104402. #include <pthread.h>
  104403. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork1.c uClibc/test/nptl/tst-fork1.c
  104404. --- uClibc-0.9.33.2/test/nptl/tst-fork1.c 2012-05-15 09:20:09.000000000 +0200
  104405. +++ uClibc/test/nptl/tst-fork1.c 2014-02-03 12:32:57.000000000 +0100
  104406. @@ -13,9 +13,8 @@
  104407. Lesser General Public License for more details.
  104408. You should have received a copy of the GNU Lesser General Public
  104409. - License along with the GNU C Library; if not, write to the Free
  104410. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104411. - 02111-1307 USA. */
  104412. + License along with the GNU C Library; if not, see
  104413. + <http://www.gnu.org/licenses/>. */
  104414. #include <errno.h>
  104415. #include <pthread.h>
  104416. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork2.c uClibc/test/nptl/tst-fork2.c
  104417. --- uClibc-0.9.33.2/test/nptl/tst-fork2.c 2012-05-15 09:20:09.000000000 +0200
  104418. +++ uClibc/test/nptl/tst-fork2.c 2014-02-03 12:32:57.000000000 +0100
  104419. @@ -13,9 +13,8 @@
  104420. Lesser General Public License for more details.
  104421. You should have received a copy of the GNU Lesser General Public
  104422. - License along with the GNU C Library; if not, write to the Free
  104423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104424. - 02111-1307 USA. */
  104425. + License along with the GNU C Library; if not, see
  104426. + <http://www.gnu.org/licenses/>. */
  104427. #include <errno.h>
  104428. #include <pthread.h>
  104429. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork3.c uClibc/test/nptl/tst-fork3.c
  104430. --- uClibc-0.9.33.2/test/nptl/tst-fork3.c 2012-05-15 09:20:09.000000000 +0200
  104431. +++ uClibc/test/nptl/tst-fork3.c 2014-02-03 12:32:57.000000000 +0100
  104432. @@ -13,9 +13,8 @@
  104433. Lesser General Public License for more details.
  104434. You should have received a copy of the GNU Lesser General Public
  104435. - License along with the GNU C Library; if not, write to the Free
  104436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104437. - 02111-1307 USA. */
  104438. + License along with the GNU C Library; if not, see
  104439. + <http://www.gnu.org/licenses/>. */
  104440. #include <errno.h>
  104441. #include <pthread.h>
  104442. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork4.c uClibc/test/nptl/tst-fork4.c
  104443. --- uClibc-0.9.33.2/test/nptl/tst-fork4.c 2012-05-15 09:20:09.000000000 +0200
  104444. +++ uClibc/test/nptl/tst-fork4.c 2014-02-03 12:32:57.000000000 +0100
  104445. @@ -13,9 +13,8 @@
  104446. Lesser General Public License for more details.
  104447. You should have received a copy of the GNU Lesser General Public
  104448. - License along with the GNU C Library; if not, write to the Free
  104449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104450. - 02111-1307 USA. */
  104451. + License along with the GNU C Library; if not, see
  104452. + <http://www.gnu.org/licenses/>. */
  104453. #include <errno.h>
  104454. #include <pthread.h>
  104455. diff -Nur uClibc-0.9.33.2/test/nptl/tst-initializers1.c uClibc/test/nptl/tst-initializers1.c
  104456. --- uClibc-0.9.33.2/test/nptl/tst-initializers1.c 2012-05-15 09:20:09.000000000 +0200
  104457. +++ uClibc/test/nptl/tst-initializers1.c 2014-02-03 12:32:57.000000000 +0100
  104458. @@ -13,9 +13,8 @@
  104459. Lesser General Public License for more details.
  104460. You should have received a copy of the GNU Lesser General Public
  104461. - License along with the GNU C Library; if not, write to the Free
  104462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104463. - 02111-1307 USA. */
  104464. + License along with the GNU C Library; if not, see
  104465. + <http://www.gnu.org/licenses/>. */
  104466. #include <pthread.h>
  104467. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join1.c uClibc/test/nptl/tst-join1.c
  104468. --- uClibc-0.9.33.2/test/nptl/tst-join1.c 2012-05-15 09:20:09.000000000 +0200
  104469. +++ uClibc/test/nptl/tst-join1.c 2014-02-03 12:32:57.000000000 +0100
  104470. @@ -13,9 +13,8 @@
  104471. Lesser General Public License for more details.
  104472. You should have received a copy of the GNU Lesser General Public
  104473. - License along with the GNU C Library; if not, write to the Free
  104474. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104475. - 02111-1307 USA. */
  104476. + License along with the GNU C Library; if not, see
  104477. + <http://www.gnu.org/licenses/>. */
  104478. #include <pthread.h>
  104479. #include <stdio.h>
  104480. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join2.c uClibc/test/nptl/tst-join2.c
  104481. --- uClibc-0.9.33.2/test/nptl/tst-join2.c 2012-05-15 09:20:09.000000000 +0200
  104482. +++ uClibc/test/nptl/tst-join2.c 2014-02-03 12:32:57.000000000 +0100
  104483. @@ -13,9 +13,8 @@
  104484. Lesser General Public License for more details.
  104485. You should have received a copy of the GNU Lesser General Public
  104486. - License along with the GNU C Library; if not, write to the Free
  104487. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104488. - 02111-1307 USA. */
  104489. + License along with the GNU C Library; if not, see
  104490. + <http://www.gnu.org/licenses/>. */
  104491. #include <errno.h>
  104492. #include <pthread.h>
  104493. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join3.c uClibc/test/nptl/tst-join3.c
  104494. --- uClibc-0.9.33.2/test/nptl/tst-join3.c 2012-05-15 09:20:09.000000000 +0200
  104495. +++ uClibc/test/nptl/tst-join3.c 2014-02-03 12:32:57.000000000 +0100
  104496. @@ -13,9 +13,8 @@
  104497. Lesser General Public License for more details.
  104498. You should have received a copy of the GNU Lesser General Public
  104499. - License along with the GNU C Library; if not, write to the Free
  104500. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104501. - 02111-1307 USA. */
  104502. + License along with the GNU C Library; if not, see
  104503. + <http://www.gnu.org/licenses/>. */
  104504. #include <errno.h>
  104505. #include <pthread.h>
  104506. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join4.c uClibc/test/nptl/tst-join4.c
  104507. --- uClibc-0.9.33.2/test/nptl/tst-join4.c 2012-05-15 09:20:09.000000000 +0200
  104508. +++ uClibc/test/nptl/tst-join4.c 2014-02-03 12:32:57.000000000 +0100
  104509. @@ -13,9 +13,8 @@
  104510. Lesser General Public License for more details.
  104511. You should have received a copy of the GNU Lesser General Public
  104512. - License along with the GNU C Library; if not, write to the Free
  104513. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104514. - 02111-1307 USA. */
  104515. + License along with the GNU C Library; if not, see
  104516. + <http://www.gnu.org/licenses/>. */
  104517. #include <errno.h>
  104518. #include <pthread.h>
  104519. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join5.c uClibc/test/nptl/tst-join5.c
  104520. --- uClibc-0.9.33.2/test/nptl/tst-join5.c 2012-05-15 09:20:09.000000000 +0200
  104521. +++ uClibc/test/nptl/tst-join5.c 2014-02-03 12:32:57.000000000 +0100
  104522. @@ -13,9 +13,8 @@
  104523. Lesser General Public License for more details.
  104524. You should have received a copy of the GNU Lesser General Public
  104525. - License along with the GNU C Library; if not, write to the Free
  104526. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104527. - 02111-1307 USA. */
  104528. + License along with the GNU C Library; if not, see
  104529. + <http://www.gnu.org/licenses/>. */
  104530. #include <errno.h>
  104531. #include <pthread.h>
  104532. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key1.c uClibc/test/nptl/tst-key1.c
  104533. --- uClibc-0.9.33.2/test/nptl/tst-key1.c 2012-05-15 09:20:09.000000000 +0200
  104534. +++ uClibc/test/nptl/tst-key1.c 2014-02-03 12:32:57.000000000 +0100
  104535. @@ -13,9 +13,8 @@
  104536. Lesser General Public License for more details.
  104537. You should have received a copy of the GNU Lesser General Public
  104538. - License along with the GNU C Library; if not, write to the Free
  104539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104540. - 02111-1307 USA. */
  104541. + License along with the GNU C Library; if not, see
  104542. + <http://www.gnu.org/licenses/>. */
  104543. #include <limits.h>
  104544. #include <pthread.h>
  104545. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key2.c uClibc/test/nptl/tst-key2.c
  104546. --- uClibc-0.9.33.2/test/nptl/tst-key2.c 2012-05-15 09:20:09.000000000 +0200
  104547. +++ uClibc/test/nptl/tst-key2.c 2014-02-03 12:32:57.000000000 +0100
  104548. @@ -13,9 +13,8 @@
  104549. Lesser General Public License for more details.
  104550. You should have received a copy of the GNU Lesser General Public
  104551. - License along with the GNU C Library; if not, write to the Free
  104552. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104553. - 02111-1307 USA. */
  104554. + License along with the GNU C Library; if not, see
  104555. + <http://www.gnu.org/licenses/>. */
  104556. #include <pthread.h>
  104557. #include <stdio.h>
  104558. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key3.c uClibc/test/nptl/tst-key3.c
  104559. --- uClibc-0.9.33.2/test/nptl/tst-key3.c 2012-05-15 09:20:09.000000000 +0200
  104560. +++ uClibc/test/nptl/tst-key3.c 2014-02-03 12:32:57.000000000 +0100
  104561. @@ -13,9 +13,8 @@
  104562. Lesser General Public License for more details.
  104563. You should have received a copy of the GNU Lesser General Public
  104564. - License along with the GNU C Library; if not, write to the Free
  104565. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104566. - 02111-1307 USA. */
  104567. + License along with the GNU C Library; if not, see
  104568. + <http://www.gnu.org/licenses/>. */
  104569. #include <pthread.h>
  104570. #include <stdio.h>
  104571. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key4.c uClibc/test/nptl/tst-key4.c
  104572. --- uClibc-0.9.33.2/test/nptl/tst-key4.c 2012-05-15 09:20:09.000000000 +0200
  104573. +++ uClibc/test/nptl/tst-key4.c 2014-02-03 12:32:57.000000000 +0100
  104574. @@ -13,9 +13,8 @@
  104575. Lesser General Public License for more details.
  104576. You should have received a copy of the GNU Lesser General Public
  104577. - License along with the GNU C Library; if not, write to the Free
  104578. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104579. - 02111-1307 USA. */
  104580. + License along with the GNU C Library; if not, see
  104581. + <http://www.gnu.org/licenses/>. */
  104582. #include <limits.h>
  104583. #include <pthread.h>
  104584. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill1.c uClibc/test/nptl/tst-kill1.c
  104585. --- uClibc-0.9.33.2/test/nptl/tst-kill1.c 2012-05-15 09:20:09.000000000 +0200
  104586. +++ uClibc/test/nptl/tst-kill1.c 2014-02-03 12:32:57.000000000 +0100
  104587. @@ -13,9 +13,8 @@
  104588. Lesser General Public License for more details.
  104589. You should have received a copy of the GNU Lesser General Public
  104590. - License along with the GNU C Library; if not, write to the Free
  104591. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104592. - 02111-1307 USA. */
  104593. + License along with the GNU C Library; if not, see
  104594. + <http://www.gnu.org/licenses/>. */
  104595. #include <pthread.h>
  104596. #include <signal.h>
  104597. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill2.c uClibc/test/nptl/tst-kill2.c
  104598. --- uClibc-0.9.33.2/test/nptl/tst-kill2.c 2012-05-15 09:20:09.000000000 +0200
  104599. +++ uClibc/test/nptl/tst-kill2.c 2014-02-03 12:32:57.000000000 +0100
  104600. @@ -13,9 +13,8 @@
  104601. Lesser General Public License for more details.
  104602. You should have received a copy of the GNU Lesser General Public
  104603. - License along with the GNU C Library; if not, write to the Free
  104604. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104605. - 02111-1307 USA. */
  104606. + License along with the GNU C Library; if not, see
  104607. + <http://www.gnu.org/licenses/>. */
  104608. #include <errno.h>
  104609. #include <pthread.h>
  104610. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill3.c uClibc/test/nptl/tst-kill3.c
  104611. --- uClibc-0.9.33.2/test/nptl/tst-kill3.c 2012-05-15 09:20:09.000000000 +0200
  104612. +++ uClibc/test/nptl/tst-kill3.c 2014-02-03 12:32:57.000000000 +0100
  104613. @@ -13,9 +13,8 @@
  104614. Lesser General Public License for more details.
  104615. You should have received a copy of the GNU Lesser General Public
  104616. - License along with the GNU C Library; if not, write to the Free
  104617. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104618. - 02111-1307 USA. */
  104619. + License along with the GNU C Library; if not, see
  104620. + <http://www.gnu.org/licenses/>. */
  104621. #include <errno.h>
  104622. #include <pthread.h>
  104623. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill4.c uClibc/test/nptl/tst-kill4.c
  104624. --- uClibc-0.9.33.2/test/nptl/tst-kill4.c 2012-05-15 09:20:09.000000000 +0200
  104625. +++ uClibc/test/nptl/tst-kill4.c 2014-02-03 12:32:57.000000000 +0100
  104626. @@ -13,9 +13,8 @@
  104627. Lesser General Public License for more details.
  104628. You should have received a copy of the GNU Lesser General Public
  104629. - License along with the GNU C Library; if not, write to the Free
  104630. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104631. - 02111-1307 USA. */
  104632. + License along with the GNU C Library; if not, see
  104633. + <http://www.gnu.org/licenses/>. */
  104634. #include <errno.h>
  104635. #include <pthread.h>
  104636. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill5.c uClibc/test/nptl/tst-kill5.c
  104637. --- uClibc-0.9.33.2/test/nptl/tst-kill5.c 2012-05-15 09:20:09.000000000 +0200
  104638. +++ uClibc/test/nptl/tst-kill5.c 2014-02-03 12:32:57.000000000 +0100
  104639. @@ -13,9 +13,8 @@
  104640. Lesser General Public License for more details.
  104641. You should have received a copy of the GNU Lesser General Public
  104642. - License along with the GNU C Library; if not, write to the Free
  104643. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104644. - 02111-1307 USA. */
  104645. + License along with the GNU C Library; if not, see
  104646. + <http://www.gnu.org/licenses/>. */
  104647. #include <errno.h>
  104648. #include <pthread.h>
  104649. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill6.c uClibc/test/nptl/tst-kill6.c
  104650. --- uClibc-0.9.33.2/test/nptl/tst-kill6.c 2012-05-15 09:20:09.000000000 +0200
  104651. +++ uClibc/test/nptl/tst-kill6.c 2014-02-03 12:32:57.000000000 +0100
  104652. @@ -13,9 +13,8 @@
  104653. Lesser General Public License for more details.
  104654. You should have received a copy of the GNU Lesser General Public
  104655. - License along with the GNU C Library; if not, write to the Free
  104656. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104657. - 02111-1307 USA. */
  104658. + License along with the GNU C Library; if not, see
  104659. + <http://www.gnu.org/licenses/>. */
  104660. #include <errno.h>
  104661. #include <pthread.h>
  104662. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue1.c uClibc/test/nptl/tst-mqueue1.c
  104663. --- uClibc-0.9.33.2/test/nptl/tst-mqueue1.c 2012-05-15 09:20:09.000000000 +0200
  104664. +++ uClibc/test/nptl/tst-mqueue1.c 2014-02-03 12:32:57.000000000 +0100
  104665. @@ -14,9 +14,8 @@
  104666. Lesser General Public License for more details.
  104667. You should have received a copy of the GNU Lesser General Public
  104668. - License along with the GNU C Library; if not, write to the Free
  104669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104670. - 02111-1307 USA. */
  104671. + License along with the GNU C Library; if not, see
  104672. + <http://www.gnu.org/licenses/>. */
  104673. #include <errno.h>
  104674. #include <fcntl.h>
  104675. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue2.c uClibc/test/nptl/tst-mqueue2.c
  104676. --- uClibc-0.9.33.2/test/nptl/tst-mqueue2.c 2012-05-15 09:20:09.000000000 +0200
  104677. +++ uClibc/test/nptl/tst-mqueue2.c 2014-02-03 12:32:57.000000000 +0100
  104678. @@ -14,9 +14,8 @@
  104679. Lesser General Public License for more details.
  104680. You should have received a copy of the GNU Lesser General Public
  104681. - License along with the GNU C Library; if not, write to the Free
  104682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104683. - 02111-1307 USA. */
  104684. + License along with the GNU C Library; if not, see
  104685. + <http://www.gnu.org/licenses/>. */
  104686. #include <errno.h>
  104687. #include <fcntl.h>
  104688. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue3.c uClibc/test/nptl/tst-mqueue3.c
  104689. --- uClibc-0.9.33.2/test/nptl/tst-mqueue3.c 2012-05-15 09:20:09.000000000 +0200
  104690. +++ uClibc/test/nptl/tst-mqueue3.c 2014-02-03 12:32:57.000000000 +0100
  104691. @@ -14,9 +14,8 @@
  104692. Lesser General Public License for more details.
  104693. You should have received a copy of the GNU Lesser General Public
  104694. - License along with the GNU C Library; if not, write to the Free
  104695. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104696. - 02111-1307 USA. */
  104697. + License along with the GNU C Library; if not, see
  104698. + <http://www.gnu.org/licenses/>. */
  104699. #include <errno.h>
  104700. #include <mqueue.h>
  104701. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue4.c uClibc/test/nptl/tst-mqueue4.c
  104702. --- uClibc-0.9.33.2/test/nptl/tst-mqueue4.c 2012-05-15 09:20:09.000000000 +0200
  104703. +++ uClibc/test/nptl/tst-mqueue4.c 2014-02-03 12:32:57.000000000 +0100
  104704. @@ -14,9 +14,8 @@
  104705. Lesser General Public License for more details.
  104706. You should have received a copy of the GNU Lesser General Public
  104707. - License along with the GNU C Library; if not, write to the Free
  104708. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104709. - 02111-1307 USA. */
  104710. + License along with the GNU C Library; if not, see
  104711. + <http://www.gnu.org/licenses/>. */
  104712. #include <errno.h>
  104713. #include <fcntl.h>
  104714. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue5.c uClibc/test/nptl/tst-mqueue5.c
  104715. --- uClibc-0.9.33.2/test/nptl/tst-mqueue5.c 2012-05-15 09:20:09.000000000 +0200
  104716. +++ uClibc/test/nptl/tst-mqueue5.c 2014-02-03 12:32:57.000000000 +0100
  104717. @@ -14,9 +14,8 @@
  104718. Lesser General Public License for more details.
  104719. You should have received a copy of the GNU Lesser General Public
  104720. - License along with the GNU C Library; if not, write to the Free
  104721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104722. - 02111-1307 USA. */
  104723. + License along with the GNU C Library; if not, see
  104724. + <http://www.gnu.org/licenses/>. */
  104725. #include <errno.h>
  104726. #include <fcntl.h>
  104727. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue6.c uClibc/test/nptl/tst-mqueue6.c
  104728. --- uClibc-0.9.33.2/test/nptl/tst-mqueue6.c 2012-05-15 09:20:09.000000000 +0200
  104729. +++ uClibc/test/nptl/tst-mqueue6.c 2014-02-03 12:32:57.000000000 +0100
  104730. @@ -14,9 +14,8 @@
  104731. Lesser General Public License for more details.
  104732. You should have received a copy of the GNU Lesser General Public
  104733. - License along with the GNU C Library; if not, write to the Free
  104734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104735. - 02111-1307 USA. */
  104736. + License along with the GNU C Library; if not, see
  104737. + <http://www.gnu.org/licenses/>. */
  104738. #include <errno.h>
  104739. #include <fcntl.h>
  104740. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue7.c uClibc/test/nptl/tst-mqueue7.c
  104741. --- uClibc-0.9.33.2/test/nptl/tst-mqueue7.c 2012-05-15 09:20:09.000000000 +0200
  104742. +++ uClibc/test/nptl/tst-mqueue7.c 2014-02-03 12:32:57.000000000 +0100
  104743. @@ -14,9 +14,8 @@
  104744. Lesser General Public License for more details.
  104745. You should have received a copy of the GNU Lesser General Public
  104746. - License along with the GNU C Library; if not, write to the Free
  104747. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104748. - 02111-1307 USA. */
  104749. + License along with the GNU C Library; if not, see
  104750. + <http://www.gnu.org/licenses/>. */
  104751. #include <errno.h>
  104752. #include <fcntl.h>
  104753. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue8.c uClibc/test/nptl/tst-mqueue8.c
  104754. --- uClibc-0.9.33.2/test/nptl/tst-mqueue8.c 2012-05-15 09:20:09.000000000 +0200
  104755. +++ uClibc/test/nptl/tst-mqueue8.c 2014-02-03 12:32:57.000000000 +0100
  104756. @@ -13,9 +13,8 @@
  104757. Lesser General Public License for more details.
  104758. You should have received a copy of the GNU Lesser General Public
  104759. - License along with the GNU C Library; if not, write to the Free
  104760. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104761. - 02111-1307 USA. */
  104762. + License along with the GNU C Library; if not, see
  104763. + <http://www.gnu.org/licenses/>. */
  104764. #include <errno.h>
  104765. #include <mqueue.h>
  104766. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue9.c uClibc/test/nptl/tst-mqueue9.c
  104767. --- uClibc-0.9.33.2/test/nptl/tst-mqueue9.c 2012-05-15 09:20:09.000000000 +0200
  104768. +++ uClibc/test/nptl/tst-mqueue9.c 2014-02-03 12:32:57.000000000 +0100
  104769. @@ -13,9 +13,8 @@
  104770. Lesser General Public License for more details.
  104771. You should have received a copy of the GNU Lesser General Public
  104772. - License along with the GNU C Library; if not, write to the Free
  104773. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104774. - 02111-1307 USA. */
  104775. + License along with the GNU C Library; if not, see
  104776. + <http://www.gnu.org/licenses/>. */
  104777. #include <errno.h>
  104778. #include <mqueue.h>
  104779. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue.h uClibc/test/nptl/tst-mqueue.h
  104780. --- uClibc-0.9.33.2/test/nptl/tst-mqueue.h 2012-05-15 09:20:09.000000000 +0200
  104781. +++ uClibc/test/nptl/tst-mqueue.h 2014-02-03 12:32:57.000000000 +0100
  104782. @@ -14,9 +14,8 @@
  104783. Lesser General Public License for more details.
  104784. You should have received a copy of the GNU Lesser General Public
  104785. - License along with the GNU C Library; if not, write to the Free
  104786. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104787. - 02111-1307 USA. */
  104788. + License along with the GNU C Library; if not, see
  104789. + <http://www.gnu.org/licenses/>. */
  104790. #include <mqueue.h>
  104791. #include <search.h>
  104792. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex1.c uClibc/test/nptl/tst-mutex1.c
  104793. --- uClibc-0.9.33.2/test/nptl/tst-mutex1.c 2012-05-15 09:20:09.000000000 +0200
  104794. +++ uClibc/test/nptl/tst-mutex1.c 2014-02-03 12:32:57.000000000 +0100
  104795. @@ -13,9 +13,8 @@
  104796. Lesser General Public License for more details.
  104797. You should have received a copy of the GNU Lesser General Public
  104798. - License along with the GNU C Library; if not, write to the Free
  104799. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104800. - 02111-1307 USA. */
  104801. + License along with the GNU C Library; if not, see
  104802. + <http://www.gnu.org/licenses/>. */
  104803. #include <pthread.h>
  104804. #include <stdio.h>
  104805. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex2.c uClibc/test/nptl/tst-mutex2.c
  104806. --- uClibc-0.9.33.2/test/nptl/tst-mutex2.c 2012-05-15 09:20:09.000000000 +0200
  104807. +++ uClibc/test/nptl/tst-mutex2.c 2014-02-03 12:32:57.000000000 +0100
  104808. @@ -13,9 +13,8 @@
  104809. Lesser General Public License for more details.
  104810. You should have received a copy of the GNU Lesser General Public
  104811. - License along with the GNU C Library; if not, write to the Free
  104812. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104813. - 02111-1307 USA. */
  104814. + License along with the GNU C Library; if not, see
  104815. + <http://www.gnu.org/licenses/>. */
  104816. #include <errno.h>
  104817. #include <pthread.h>
  104818. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex3.c uClibc/test/nptl/tst-mutex3.c
  104819. --- uClibc-0.9.33.2/test/nptl/tst-mutex3.c 2012-05-15 09:20:09.000000000 +0200
  104820. +++ uClibc/test/nptl/tst-mutex3.c 2014-02-03 12:32:57.000000000 +0100
  104821. @@ -13,9 +13,8 @@
  104822. Lesser General Public License for more details.
  104823. You should have received a copy of the GNU Lesser General Public
  104824. - License along with the GNU C Library; if not, write to the Free
  104825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104826. - 02111-1307 USA. */
  104827. + License along with the GNU C Library; if not, see
  104828. + <http://www.gnu.org/licenses/>. */
  104829. #include <errno.h>
  104830. #include <pthread.h>
  104831. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex4.c uClibc/test/nptl/tst-mutex4.c
  104832. --- uClibc-0.9.33.2/test/nptl/tst-mutex4.c 2012-05-15 09:20:09.000000000 +0200
  104833. +++ uClibc/test/nptl/tst-mutex4.c 2014-02-03 12:32:57.000000000 +0100
  104834. @@ -13,9 +13,8 @@
  104835. Lesser General Public License for more details.
  104836. You should have received a copy of the GNU Lesser General Public
  104837. - License along with the GNU C Library; if not, write to the Free
  104838. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104839. - 02111-1307 USA. */
  104840. + License along with the GNU C Library; if not, see
  104841. + <http://www.gnu.org/licenses/>. */
  104842. #include <errno.h>
  104843. #include <pthread.h>
  104844. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex5.c uClibc/test/nptl/tst-mutex5.c
  104845. --- uClibc-0.9.33.2/test/nptl/tst-mutex5.c 2012-05-15 09:20:09.000000000 +0200
  104846. +++ uClibc/test/nptl/tst-mutex5.c 2014-02-03 12:32:57.000000000 +0100
  104847. @@ -13,9 +13,8 @@
  104848. Lesser General Public License for more details.
  104849. You should have received a copy of the GNU Lesser General Public
  104850. - License along with the GNU C Library; if not, write to the Free
  104851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104852. - 02111-1307 USA. */
  104853. + License along with the GNU C Library; if not, see
  104854. + <http://www.gnu.org/licenses/>. */
  104855. #include <errno.h>
  104856. #include <pthread.h>
  104857. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex6.c uClibc/test/nptl/tst-mutex6.c
  104858. --- uClibc-0.9.33.2/test/nptl/tst-mutex6.c 2012-05-15 09:20:09.000000000 +0200
  104859. +++ uClibc/test/nptl/tst-mutex6.c 2014-02-03 12:32:57.000000000 +0100
  104860. @@ -13,9 +13,8 @@
  104861. Lesser General Public License for more details.
  104862. You should have received a copy of the GNU Lesser General Public
  104863. - License along with the GNU C Library; if not, write to the Free
  104864. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104865. - 02111-1307 USA. */
  104866. + License along with the GNU C Library; if not, see
  104867. + <http://www.gnu.org/licenses/>. */
  104868. #include <pthread.h>
  104869. #include <signal.h>
  104870. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex7.c uClibc/test/nptl/tst-mutex7.c
  104871. --- uClibc-0.9.33.2/test/nptl/tst-mutex7.c 2012-05-15 09:20:09.000000000 +0200
  104872. +++ uClibc/test/nptl/tst-mutex7.c 2014-02-03 12:32:57.000000000 +0100
  104873. @@ -13,9 +13,8 @@
  104874. Lesser General Public License for more details.
  104875. You should have received a copy of the GNU Lesser General Public
  104876. - License along with the GNU C Library; if not, write to the Free
  104877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104878. - 02111-1307 USA. */
  104879. + License along with the GNU C Library; if not, see
  104880. + <http://www.gnu.org/licenses/>. */
  104881. #include <pthread.h>
  104882. #include <stdio.h>
  104883. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex8.c uClibc/test/nptl/tst-mutex8.c
  104884. --- uClibc-0.9.33.2/test/nptl/tst-mutex8.c 2012-05-15 09:20:09.000000000 +0200
  104885. +++ uClibc/test/nptl/tst-mutex8.c 2014-02-03 12:32:57.000000000 +0100
  104886. @@ -13,9 +13,8 @@
  104887. Lesser General Public License for more details.
  104888. You should have received a copy of the GNU Lesser General Public
  104889. - License along with the GNU C Library; if not, write to the Free
  104890. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104891. - 02111-1307 USA. */
  104892. + License along with the GNU C Library; if not, see
  104893. + <http://www.gnu.org/licenses/>. */
  104894. /* This test checks behavior not required by POSIX. */
  104895. #include <errno.h>
  104896. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex9.c uClibc/test/nptl/tst-mutex9.c
  104897. --- uClibc-0.9.33.2/test/nptl/tst-mutex9.c 2012-05-15 09:20:09.000000000 +0200
  104898. +++ uClibc/test/nptl/tst-mutex9.c 2014-02-03 12:32:57.000000000 +0100
  104899. @@ -13,9 +13,8 @@
  104900. Lesser General Public License for more details.
  104901. You should have received a copy of the GNU Lesser General Public
  104902. - License along with the GNU C Library; if not, write to the Free
  104903. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104904. - 02111-1307 USA. */
  104905. + License along with the GNU C Library; if not, see
  104906. + <http://www.gnu.org/licenses/>. */
  104907. #include <errno.h>
  104908. #include <pthread.h>
  104909. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once1.c uClibc/test/nptl/tst-once1.c
  104910. --- uClibc-0.9.33.2/test/nptl/tst-once1.c 2012-05-15 09:20:09.000000000 +0200
  104911. +++ uClibc/test/nptl/tst-once1.c 2014-02-03 12:32:57.000000000 +0100
  104912. @@ -13,9 +13,8 @@
  104913. Lesser General Public License for more details.
  104914. You should have received a copy of the GNU Lesser General Public
  104915. - License along with the GNU C Library; if not, write to the Free
  104916. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104917. - 02111-1307 USA. */
  104918. + License along with the GNU C Library; if not, see
  104919. + <http://www.gnu.org/licenses/>. */
  104920. #include <pthread.h>
  104921. #include <stdio.h>
  104922. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once2.c uClibc/test/nptl/tst-once2.c
  104923. --- uClibc-0.9.33.2/test/nptl/tst-once2.c 2012-05-15 09:20:09.000000000 +0200
  104924. +++ uClibc/test/nptl/tst-once2.c 2014-02-03 12:32:57.000000000 +0100
  104925. @@ -13,9 +13,8 @@
  104926. Lesser General Public License for more details.
  104927. You should have received a copy of the GNU Lesser General Public
  104928. - License along with the GNU C Library; if not, write to the Free
  104929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104930. - 02111-1307 USA. */
  104931. + License along with the GNU C Library; if not, see
  104932. + <http://www.gnu.org/licenses/>. */
  104933. #include <pthread.h>
  104934. #include <stdio.h>
  104935. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once3.c uClibc/test/nptl/tst-once3.c
  104936. --- uClibc-0.9.33.2/test/nptl/tst-once3.c 2012-05-15 09:20:09.000000000 +0200
  104937. +++ uClibc/test/nptl/tst-once3.c 2014-02-03 12:32:57.000000000 +0100
  104938. @@ -13,9 +13,8 @@
  104939. Lesser General Public License for more details.
  104940. You should have received a copy of the GNU Lesser General Public
  104941. - License along with the GNU C Library; if not, write to the Free
  104942. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104943. - 02111-1307 USA. */
  104944. + License along with the GNU C Library; if not, see
  104945. + <http://www.gnu.org/licenses/>. */
  104946. #include <pthread.h>
  104947. #include <stdio.h>
  104948. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once4.c uClibc/test/nptl/tst-once4.c
  104949. --- uClibc-0.9.33.2/test/nptl/tst-once4.c 2012-05-15 09:20:09.000000000 +0200
  104950. +++ uClibc/test/nptl/tst-once4.c 2014-02-03 12:32:57.000000000 +0100
  104951. @@ -13,9 +13,8 @@
  104952. Lesser General Public License for more details.
  104953. You should have received a copy of the GNU Lesser General Public
  104954. - License along with the GNU C Library; if not, write to the Free
  104955. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104956. - 02111-1307 USA. */
  104957. + License along with the GNU C Library; if not, see
  104958. + <http://www.gnu.org/licenses/>. */
  104959. #include <pthread.h>
  104960. #include <stdio.h>
  104961. diff -Nur uClibc-0.9.33.2/test/nptl/tst-popen1.c uClibc/test/nptl/tst-popen1.c
  104962. --- uClibc-0.9.33.2/test/nptl/tst-popen1.c 2012-05-15 09:20:09.000000000 +0200
  104963. +++ uClibc/test/nptl/tst-popen1.c 2014-02-03 12:32:57.000000000 +0100
  104964. @@ -13,9 +13,8 @@
  104965. Lesser General Public License for more details.
  104966. You should have received a copy of the GNU Lesser General Public
  104967. - License along with the GNU C Library; if not, write to the Free
  104968. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104969. - 02111-1307 USA. */
  104970. + License along with the GNU C Library; if not, see
  104971. + <http://www.gnu.org/licenses/>. */
  104972. #include <errno.h>
  104973. #include <error.h>
  104974. diff -Nur uClibc-0.9.33.2/test/nptl/tst-raise1.c uClibc/test/nptl/tst-raise1.c
  104975. --- uClibc-0.9.33.2/test/nptl/tst-raise1.c 2012-05-15 09:20:09.000000000 +0200
  104976. +++ uClibc/test/nptl/tst-raise1.c 2014-02-03 12:32:57.000000000 +0100
  104977. @@ -13,9 +13,8 @@
  104978. Lesser General Public License for more details.
  104979. You should have received a copy of the GNU Lesser General Public
  104980. - License along with the GNU C Library; if not, write to the Free
  104981. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104982. - 02111-1307 USA. */
  104983. + License along with the GNU C Library; if not, see
  104984. + <http://www.gnu.org/licenses/>. */
  104985. #include <errno.h>
  104986. #include <error.h>
  104987. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock10.c uClibc/test/nptl/tst-rwlock10.c
  104988. --- uClibc-0.9.33.2/test/nptl/tst-rwlock10.c 2012-05-15 09:20:09.000000000 +0200
  104989. +++ uClibc/test/nptl/tst-rwlock10.c 2014-02-03 12:32:57.000000000 +0100
  104990. @@ -13,9 +13,8 @@
  104991. Lesser General Public License for more details.
  104992. You should have received a copy of the GNU Lesser General Public
  104993. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104994. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104995. - Boston, MA 02111-1307, USA. */
  104996. + License along with the GNU C Library; see the file COPYING.LIB. If
  104997. + not, see <http://www.gnu.org/licenses/>. */
  104998. #define INIT PTHREAD_RWLOCK_INITIALIZER
  104999. #include "tst-rwlock8.c"
  105000. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock11.c uClibc/test/nptl/tst-rwlock11.c
  105001. --- uClibc-0.9.33.2/test/nptl/tst-rwlock11.c 2012-05-15 09:20:09.000000000 +0200
  105002. +++ uClibc/test/nptl/tst-rwlock11.c 2014-02-03 12:32:57.000000000 +0100
  105003. @@ -13,9 +13,8 @@
  105004. Lesser General Public License for more details.
  105005. You should have received a copy of the GNU Lesser General Public
  105006. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105007. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105008. - Boston, MA 02111-1307, USA. */
  105009. + License along with the GNU C Library; see the file COPYING.LIB. If
  105010. + not, see <http://www.gnu.org/licenses/>. */
  105011. #define INIT PTHREAD_RWLOCK_INITIALIZER
  105012. #include "tst-rwlock9.c"
  105013. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock12.c uClibc/test/nptl/tst-rwlock12.c
  105014. --- uClibc-0.9.33.2/test/nptl/tst-rwlock12.c 2012-05-15 09:20:09.000000000 +0200
  105015. +++ uClibc/test/nptl/tst-rwlock12.c 2014-02-03 12:32:57.000000000 +0100
  105016. @@ -13,9 +13,8 @@
  105017. Lesser General Public License for more details.
  105018. You should have received a copy of the GNU Lesser General Public
  105019. - License along with the GNU C Library; if not, write to the Free
  105020. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105021. - 02111-1307 USA. */
  105022. + License along with the GNU C Library; if not, see
  105023. + <http://www.gnu.org/licenses/>. */
  105024. #include <errno.h>
  105025. #include <pthread.h>
  105026. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock13.c uClibc/test/nptl/tst-rwlock13.c
  105027. --- uClibc-0.9.33.2/test/nptl/tst-rwlock13.c 2012-05-15 09:20:09.000000000 +0200
  105028. +++ uClibc/test/nptl/tst-rwlock13.c 2014-02-03 12:32:57.000000000 +0100
  105029. @@ -12,9 +12,8 @@
  105030. Lesser General Public License for more details.
  105031. You should have received a copy of the GNU Lesser General Public
  105032. - License along with the GNU C Library; if not, write to the Free
  105033. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105034. - 02111-1307 USA. */
  105035. + License along with the GNU C Library; if not, see
  105036. + <http://www.gnu.org/licenses/>. */
  105037. #include <pthread.h>
  105038. #include <stdio.h>
  105039. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock14.c uClibc/test/nptl/tst-rwlock14.c
  105040. --- uClibc-0.9.33.2/test/nptl/tst-rwlock14.c 2012-05-15 09:20:09.000000000 +0200
  105041. +++ uClibc/test/nptl/tst-rwlock14.c 2014-02-03 12:32:57.000000000 +0100
  105042. @@ -13,9 +13,8 @@
  105043. Lesser General Public License for more details.
  105044. You should have received a copy of the GNU Lesser General Public
  105045. - License along with the GNU C Library; if not, write to the Free
  105046. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105047. - 02111-1307 USA. */
  105048. + License along with the GNU C Library; if not, see
  105049. + <http://www.gnu.org/licenses/>. */
  105050. #include <errno.h>
  105051. #include <pthread.h>
  105052. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock1.c uClibc/test/nptl/tst-rwlock1.c
  105053. --- uClibc-0.9.33.2/test/nptl/tst-rwlock1.c 2012-05-15 09:20:09.000000000 +0200
  105054. +++ uClibc/test/nptl/tst-rwlock1.c 2014-02-03 12:32:57.000000000 +0100
  105055. @@ -13,9 +13,8 @@
  105056. Lesser General Public License for more details.
  105057. You should have received a copy of the GNU Lesser General Public
  105058. - License along with the GNU C Library; if not, write to the Free
  105059. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105060. - 02111-1307 USA. */
  105061. + License along with the GNU C Library; if not, see
  105062. + <http://www.gnu.org/licenses/>. */
  105063. #include <pthread.h>
  105064. #include <stdio.h>
  105065. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock2.c uClibc/test/nptl/tst-rwlock2.c
  105066. --- uClibc-0.9.33.2/test/nptl/tst-rwlock2.c 2012-05-15 09:20:09.000000000 +0200
  105067. +++ uClibc/test/nptl/tst-rwlock2.c 2014-02-03 12:32:57.000000000 +0100
  105068. @@ -13,9 +13,8 @@
  105069. Lesser General Public License for more details.
  105070. You should have received a copy of the GNU Lesser General Public
  105071. - License along with the GNU C Library; if not, write to the Free
  105072. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105073. - 02111-1307 USA. */
  105074. + License along with the GNU C Library; if not, see
  105075. + <http://www.gnu.org/licenses/>. */
  105076. #include <errno.h>
  105077. #include <pthread.h>
  105078. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock3.c uClibc/test/nptl/tst-rwlock3.c
  105079. --- uClibc-0.9.33.2/test/nptl/tst-rwlock3.c 2012-05-15 09:20:09.000000000 +0200
  105080. +++ uClibc/test/nptl/tst-rwlock3.c 2014-02-03 12:32:57.000000000 +0100
  105081. @@ -13,9 +13,8 @@
  105082. Lesser General Public License for more details.
  105083. You should have received a copy of the GNU Lesser General Public
  105084. - License along with the GNU C Library; if not, write to the Free
  105085. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105086. - 02111-1307 USA. */
  105087. + License along with the GNU C Library; if not, see
  105088. + <http://www.gnu.org/licenses/>. */
  105089. /* This test case checks more than standard compliance. An
  105090. implementation may provide this service but it is not required to
  105091. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock4.c uClibc/test/nptl/tst-rwlock4.c
  105092. --- uClibc-0.9.33.2/test/nptl/tst-rwlock4.c 2012-05-15 09:20:09.000000000 +0200
  105093. +++ uClibc/test/nptl/tst-rwlock4.c 2014-02-03 12:32:57.000000000 +0100
  105094. @@ -13,9 +13,8 @@
  105095. Lesser General Public License for more details.
  105096. You should have received a copy of the GNU Lesser General Public
  105097. - License along with the GNU C Library; if not, write to the Free
  105098. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105099. - 02111-1307 USA. */
  105100. + License along with the GNU C Library; if not, see
  105101. + <http://www.gnu.org/licenses/>. */
  105102. #include <errno.h>
  105103. #include <pthread.h>
  105104. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock5.c uClibc/test/nptl/tst-rwlock5.c
  105105. --- uClibc-0.9.33.2/test/nptl/tst-rwlock5.c 2012-05-15 09:20:09.000000000 +0200
  105106. +++ uClibc/test/nptl/tst-rwlock5.c 2014-02-03 12:32:57.000000000 +0100
  105107. @@ -13,9 +13,8 @@
  105108. Lesser General Public License for more details.
  105109. You should have received a copy of the GNU Lesser General Public
  105110. - License along with the GNU C Library; if not, write to the Free
  105111. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105112. - 02111-1307 USA. */
  105113. + License along with the GNU C Library; if not, see
  105114. + <http://www.gnu.org/licenses/>. */
  105115. #include <pthread.h>
  105116. #include <signal.h>
  105117. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock6.c uClibc/test/nptl/tst-rwlock6.c
  105118. --- uClibc-0.9.33.2/test/nptl/tst-rwlock6.c 2012-05-15 09:20:09.000000000 +0200
  105119. +++ uClibc/test/nptl/tst-rwlock6.c 2014-02-03 12:32:57.000000000 +0100
  105120. @@ -13,9 +13,8 @@
  105121. Lesser General Public License for more details.
  105122. You should have received a copy of the GNU Lesser General Public
  105123. - License along with the GNU C Library; if not, write to the Free
  105124. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105125. - 02111-1307 USA. */
  105126. + License along with the GNU C Library; if not, see
  105127. + <http://www.gnu.org/licenses/>. */
  105128. #include <errno.h>
  105129. #include <pthread.h>
  105130. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock7.c uClibc/test/nptl/tst-rwlock7.c
  105131. --- uClibc-0.9.33.2/test/nptl/tst-rwlock7.c 2012-05-15 09:20:09.000000000 +0200
  105132. +++ uClibc/test/nptl/tst-rwlock7.c 2014-02-03 12:32:57.000000000 +0100
  105133. @@ -13,9 +13,8 @@
  105134. Lesser General Public License for more details.
  105135. You should have received a copy of the GNU Lesser General Public
  105136. - License along with the GNU C Library; if not, write to the Free
  105137. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105138. - 02111-1307 USA. */
  105139. + License along with the GNU C Library; if not, see
  105140. + <http://www.gnu.org/licenses/>. */
  105141. #include <errno.h>
  105142. #include <pthread.h>
  105143. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock8.c uClibc/test/nptl/tst-rwlock8.c
  105144. --- uClibc-0.9.33.2/test/nptl/tst-rwlock8.c 2012-05-15 09:20:09.000000000 +0200
  105145. +++ uClibc/test/nptl/tst-rwlock8.c 2014-02-03 12:32:57.000000000 +0100
  105146. @@ -13,9 +13,8 @@
  105147. Lesser General Public License for more details.
  105148. You should have received a copy of the GNU Lesser General Public
  105149. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105150. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105151. - Boston, MA 02111-1307, USA. */
  105152. + License along with the GNU C Library; see the file COPYING.LIB. If
  105153. + not, see <http://www.gnu.org/licenses/>. */
  105154. #include <errno.h>
  105155. #include <error.h>
  105156. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock9.c uClibc/test/nptl/tst-rwlock9.c
  105157. --- uClibc-0.9.33.2/test/nptl/tst-rwlock9.c 2012-05-15 09:20:09.000000000 +0200
  105158. +++ uClibc/test/nptl/tst-rwlock9.c 2014-02-03 12:32:57.000000000 +0100
  105159. @@ -13,9 +13,8 @@
  105160. Lesser General Public License for more details.
  105161. You should have received a copy of the GNU Lesser General Public
  105162. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105163. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105164. - Boston, MA 02111-1307, USA. */
  105165. + License along with the GNU C Library; see the file COPYING.LIB. If
  105166. + not, see <http://www.gnu.org/licenses/>. */
  105167. #include <errno.h>
  105168. #include <error.h>
  105169. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sched1.c uClibc/test/nptl/tst-sched1.c
  105170. --- uClibc-0.9.33.2/test/nptl/tst-sched1.c 2012-05-15 09:20:09.000000000 +0200
  105171. +++ uClibc/test/nptl/tst-sched1.c 2014-02-03 12:32:57.000000000 +0100
  105172. @@ -13,9 +13,8 @@
  105173. Lesser General Public License for more details.
  105174. You should have received a copy of the GNU Lesser General Public
  105175. - License along with the GNU C Library; if not, write to the Free
  105176. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105177. - 02111-1307 USA. */
  105178. + License along with the GNU C Library; if not, see
  105179. + <http://www.gnu.org/licenses/>. */
  105180. #include <pthread.h>
  105181. #include <stdio.h>
  105182. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem10.c uClibc/test/nptl/tst-sem10.c
  105183. --- uClibc-0.9.33.2/test/nptl/tst-sem10.c 2012-05-15 09:20:09.000000000 +0200
  105184. +++ uClibc/test/nptl/tst-sem10.c 2014-02-03 12:32:57.000000000 +0100
  105185. @@ -13,9 +13,8 @@
  105186. Lesser General Public License for more details.
  105187. You should have received a copy of the GNU Lesser General Public
  105188. - License along with the GNU C Library; if not, write to the Free
  105189. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105190. - 02111-1307 USA. */
  105191. + License along with the GNU C Library; if not, see
  105192. + <http://www.gnu.org/licenses/>. */
  105193. #include <errno.h>
  105194. #include <pthread.h>
  105195. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem1.c uClibc/test/nptl/tst-sem1.c
  105196. --- uClibc-0.9.33.2/test/nptl/tst-sem1.c 2012-05-15 09:20:09.000000000 +0200
  105197. +++ uClibc/test/nptl/tst-sem1.c 2014-02-03 12:32:57.000000000 +0100
  105198. @@ -13,9 +13,8 @@
  105199. Lesser General Public License for more details.
  105200. You should have received a copy of the GNU Lesser General Public
  105201. - License along with the GNU C Library; if not, write to the Free
  105202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105203. - 02111-1307 USA. */
  105204. + License along with the GNU C Library; if not, see
  105205. + <http://www.gnu.org/licenses/>. */
  105206. #include <errno.h>
  105207. #include <semaphore.h>
  105208. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem2.c uClibc/test/nptl/tst-sem2.c
  105209. --- uClibc-0.9.33.2/test/nptl/tst-sem2.c 2012-05-15 09:20:09.000000000 +0200
  105210. +++ uClibc/test/nptl/tst-sem2.c 2014-02-03 12:32:57.000000000 +0100
  105211. @@ -13,9 +13,8 @@
  105212. Lesser General Public License for more details.
  105213. You should have received a copy of the GNU Lesser General Public
  105214. - License along with the GNU C Library; if not, write to the Free
  105215. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105216. - 02111-1307 USA. */
  105217. + License along with the GNU C Library; if not, see
  105218. + <http://www.gnu.org/licenses/>. */
  105219. #include <errno.h>
  105220. #include <semaphore.h>
  105221. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem3.c uClibc/test/nptl/tst-sem3.c
  105222. --- uClibc-0.9.33.2/test/nptl/tst-sem3.c 2012-05-15 09:20:09.000000000 +0200
  105223. +++ uClibc/test/nptl/tst-sem3.c 2014-02-03 12:32:57.000000000 +0100
  105224. @@ -13,9 +13,8 @@
  105225. Lesser General Public License for more details.
  105226. You should have received a copy of the GNU Lesser General Public
  105227. - License along with the GNU C Library; if not, write to the Free
  105228. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105229. - 02111-1307 USA. */
  105230. + License along with the GNU C Library; if not, see
  105231. + <http://www.gnu.org/licenses/>. */
  105232. #include <errno.h>
  105233. #include <semaphore.h>
  105234. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem4.c uClibc/test/nptl/tst-sem4.c
  105235. --- uClibc-0.9.33.2/test/nptl/tst-sem4.c 2012-05-15 09:20:09.000000000 +0200
  105236. +++ uClibc/test/nptl/tst-sem4.c 2014-02-03 12:32:57.000000000 +0100
  105237. @@ -13,9 +13,8 @@
  105238. Lesser General Public License for more details.
  105239. You should have received a copy of the GNU Lesser General Public
  105240. - License along with the GNU C Library; if not, write to the Free
  105241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105242. - 02111-1307 USA. */
  105243. + License along with the GNU C Library; if not, see
  105244. + <http://www.gnu.org/licenses/>. */
  105245. #include <errno.h>
  105246. #include <fcntl.h>
  105247. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem5.c uClibc/test/nptl/tst-sem5.c
  105248. --- uClibc-0.9.33.2/test/nptl/tst-sem5.c 2012-05-15 09:20:09.000000000 +0200
  105249. +++ uClibc/test/nptl/tst-sem5.c 2014-02-03 12:32:57.000000000 +0100
  105250. @@ -13,9 +13,8 @@
  105251. Lesser General Public License for more details.
  105252. You should have received a copy of the GNU Lesser General Public
  105253. - License along with the GNU C Library; if not, write to the Free
  105254. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105255. - 02111-1307 USA. */
  105256. + License along with the GNU C Library; if not, see
  105257. + <http://www.gnu.org/licenses/>. */
  105258. #include <errno.h>
  105259. #include <semaphore.h>
  105260. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem6.c uClibc/test/nptl/tst-sem6.c
  105261. --- uClibc-0.9.33.2/test/nptl/tst-sem6.c 2012-05-15 09:20:09.000000000 +0200
  105262. +++ uClibc/test/nptl/tst-sem6.c 2014-02-03 12:32:57.000000000 +0100
  105263. @@ -13,9 +13,8 @@
  105264. Lesser General Public License for more details.
  105265. You should have received a copy of the GNU Lesser General Public
  105266. - License along with the GNU C Library; if not, write to the Free
  105267. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105268. - 02111-1307 USA. */
  105269. + License along with the GNU C Library; if not, see
  105270. + <http://www.gnu.org/licenses/>. */
  105271. #include <errno.h>
  105272. #include <semaphore.h>
  105273. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem7.c uClibc/test/nptl/tst-sem7.c
  105274. --- uClibc-0.9.33.2/test/nptl/tst-sem7.c 2012-05-15 09:20:09.000000000 +0200
  105275. +++ uClibc/test/nptl/tst-sem7.c 2014-02-03 12:32:57.000000000 +0100
  105276. @@ -13,9 +13,8 @@
  105277. Lesser General Public License for more details.
  105278. You should have received a copy of the GNU Lesser General Public
  105279. - License along with the GNU C Library; if not, write to the Free
  105280. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105281. - 02111-1307 USA. */
  105282. + License along with the GNU C Library; if not, see
  105283. + <http://www.gnu.org/licenses/>. */
  105284. #include <errno.h>
  105285. #include <fcntl.h>
  105286. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem8.c uClibc/test/nptl/tst-sem8.c
  105287. --- uClibc-0.9.33.2/test/nptl/tst-sem8.c 2012-05-15 09:20:09.000000000 +0200
  105288. +++ uClibc/test/nptl/tst-sem8.c 2014-02-03 12:32:57.000000000 +0100
  105289. @@ -13,9 +13,8 @@
  105290. Lesser General Public License for more details.
  105291. You should have received a copy of the GNU Lesser General Public
  105292. - License along with the GNU C Library; if not, write to the Free
  105293. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105294. - 02111-1307 USA. */
  105295. + License along with the GNU C Library; if not, see
  105296. + <http://www.gnu.org/licenses/>. */
  105297. #include <errno.h>
  105298. #include <fcntl.h>
  105299. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem9.c uClibc/test/nptl/tst-sem9.c
  105300. --- uClibc-0.9.33.2/test/nptl/tst-sem9.c 2012-05-15 09:20:09.000000000 +0200
  105301. +++ uClibc/test/nptl/tst-sem9.c 2014-02-03 12:32:57.000000000 +0100
  105302. @@ -13,9 +13,8 @@
  105303. Lesser General Public License for more details.
  105304. You should have received a copy of the GNU Lesser General Public
  105305. - License along with the GNU C Library; if not, write to the Free
  105306. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105307. - 02111-1307 USA. */
  105308. + License along with the GNU C Library; if not, see
  105309. + <http://www.gnu.org/licenses/>. */
  105310. #include <errno.h>
  105311. #include <fcntl.h>
  105312. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal1.c uClibc/test/nptl/tst-signal1.c
  105313. --- uClibc-0.9.33.2/test/nptl/tst-signal1.c 2012-05-15 09:20:09.000000000 +0200
  105314. +++ uClibc/test/nptl/tst-signal1.c 2014-02-03 12:32:57.000000000 +0100
  105315. @@ -13,9 +13,8 @@
  105316. Lesser General Public License for more details.
  105317. You should have received a copy of the GNU Lesser General Public
  105318. - License along with the GNU C Library; if not, write to the Free
  105319. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105320. - 02111-1307 USA. */
  105321. + License along with the GNU C Library; if not, see
  105322. + <http://www.gnu.org/licenses/>. */
  105323. #include <errno.h>
  105324. #include <pthread.h>
  105325. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal2.c uClibc/test/nptl/tst-signal2.c
  105326. --- uClibc-0.9.33.2/test/nptl/tst-signal2.c 2012-05-15 09:20:09.000000000 +0200
  105327. +++ uClibc/test/nptl/tst-signal2.c 2014-02-03 12:32:57.000000000 +0100
  105328. @@ -13,9 +13,8 @@
  105329. Lesser General Public License for more details.
  105330. You should have received a copy of the GNU Lesser General Public
  105331. - License along with the GNU C Library; if not, write to the Free
  105332. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105333. - 02111-1307 USA. */
  105334. + License along with the GNU C Library; if not, see
  105335. + <http://www.gnu.org/licenses/>. */
  105336. #include <errno.h>
  105337. #include <pthread.h>
  105338. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal3.c uClibc/test/nptl/tst-signal3.c
  105339. --- uClibc-0.9.33.2/test/nptl/tst-signal3.c 2012-05-15 09:20:09.000000000 +0200
  105340. +++ uClibc/test/nptl/tst-signal3.c 2014-02-03 12:32:57.000000000 +0100
  105341. @@ -13,9 +13,8 @@
  105342. Lesser General Public License for more details.
  105343. You should have received a copy of the GNU Lesser General Public
  105344. - License along with the GNU C Library; if not, write to the Free
  105345. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105346. - 02111-1307 USA. */
  105347. + License along with the GNU C Library; if not, see
  105348. + <http://www.gnu.org/licenses/>. */
  105349. #include <errno.h>
  105350. #include <pthread.h>
  105351. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal4.c uClibc/test/nptl/tst-signal4.c
  105352. --- uClibc-0.9.33.2/test/nptl/tst-signal4.c 2012-05-15 09:20:09.000000000 +0200
  105353. +++ uClibc/test/nptl/tst-signal4.c 2014-02-03 12:32:57.000000000 +0100
  105354. @@ -13,9 +13,8 @@
  105355. Lesser General Public License for more details.
  105356. You should have received a copy of the GNU Lesser General Public
  105357. - License along with the GNU C Library; if not, write to the Free
  105358. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105359. - 02111-1307 USA. */
  105360. + License along with the GNU C Library; if not, see
  105361. + <http://www.gnu.org/licenses/>. */
  105362. #include <errno.h>
  105363. #include <pthread.h>
  105364. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal5.c uClibc/test/nptl/tst-signal5.c
  105365. --- uClibc-0.9.33.2/test/nptl/tst-signal5.c 2012-05-15 09:20:09.000000000 +0200
  105366. +++ uClibc/test/nptl/tst-signal5.c 2014-02-03 12:32:57.000000000 +0100
  105367. @@ -13,9 +13,8 @@
  105368. Lesser General Public License for more details.
  105369. You should have received a copy of the GNU Lesser General Public
  105370. - License along with the GNU C Library; if not, write to the Free
  105371. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105372. - 02111-1307 USA. */
  105373. + License along with the GNU C Library; if not, see
  105374. + <http://www.gnu.org/licenses/>. */
  105375. #include <errno.h>
  105376. #include <pthread.h>
  105377. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal6.c uClibc/test/nptl/tst-signal6.c
  105378. --- uClibc-0.9.33.2/test/nptl/tst-signal6.c 2012-05-15 09:20:09.000000000 +0200
  105379. +++ uClibc/test/nptl/tst-signal6.c 2014-02-03 12:32:57.000000000 +0100
  105380. @@ -13,9 +13,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 <pthread.h>
  105389. #include <signal.h>
  105390. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal7.c uClibc/test/nptl/tst-signal7.c
  105391. --- uClibc-0.9.33.2/test/nptl/tst-signal7.c 2012-05-15 09:20:09.000000000 +0200
  105392. +++ uClibc/test/nptl/tst-signal7.c 2014-02-03 12:32:57.000000000 +0100
  105393. @@ -13,9 +13,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. #include <errno.h>
  105402. #include <pthreadP.h>
  105403. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin1.c uClibc/test/nptl/tst-spin1.c
  105404. --- uClibc-0.9.33.2/test/nptl/tst-spin1.c 2012-05-15 09:20:09.000000000 +0200
  105405. +++ uClibc/test/nptl/tst-spin1.c 2014-02-03 12:32:57.000000000 +0100
  105406. @@ -13,9 +13,8 @@
  105407. Lesser General Public License for more details.
  105408. You should have received a copy of the GNU Lesser General Public
  105409. - License along with the GNU C Library; if not, write to the Free
  105410. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105411. - 02111-1307 USA. */
  105412. + License along with the GNU C Library; if not, see
  105413. + <http://www.gnu.org/licenses/>. */
  105414. #include <pthread.h>
  105415. #include <stdio.h>
  105416. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin2.c uClibc/test/nptl/tst-spin2.c
  105417. --- uClibc-0.9.33.2/test/nptl/tst-spin2.c 2012-05-15 09:20:09.000000000 +0200
  105418. +++ uClibc/test/nptl/tst-spin2.c 2014-02-03 12:32:57.000000000 +0100
  105419. @@ -13,9 +13,8 @@
  105420. Lesser General Public License for more details.
  105421. You should have received a copy of the GNU Lesser General Public
  105422. - License along with the GNU C Library; if not, write to the Free
  105423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105424. - 02111-1307 USA. */
  105425. + License along with the GNU C Library; if not, see
  105426. + <http://www.gnu.org/licenses/>. */
  105427. #include <errno.h>
  105428. #include <pthread.h>
  105429. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin3.c uClibc/test/nptl/tst-spin3.c
  105430. --- uClibc-0.9.33.2/test/nptl/tst-spin3.c 2012-05-15 09:20:09.000000000 +0200
  105431. +++ uClibc/test/nptl/tst-spin3.c 2014-02-03 12:32:57.000000000 +0100
  105432. @@ -13,9 +13,8 @@
  105433. Lesser General Public License for more details.
  105434. You should have received a copy of the GNU Lesser General Public
  105435. - License along with the GNU C Library; if not, write to the Free
  105436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105437. - 02111-1307 USA. */
  105438. + License along with the GNU C Library; if not, see
  105439. + <http://www.gnu.org/licenses/>. */
  105440. #include <pthread.h>
  105441. #include <signal.h>
  105442. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack1.c uClibc/test/nptl/tst-stack1.c
  105443. --- uClibc-0.9.33.2/test/nptl/tst-stack1.c 2012-05-15 09:20:09.000000000 +0200
  105444. +++ uClibc/test/nptl/tst-stack1.c 2014-02-03 12:32:57.000000000 +0100
  105445. @@ -13,9 +13,8 @@
  105446. Lesser General Public License for more details.
  105447. You should have received a copy of the GNU Lesser General Public
  105448. - License along with the GNU C Library; if not, write to the Free
  105449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105450. - 02111-1307 USA. */
  105451. + License along with the GNU C Library; if not, see
  105452. + <http://www.gnu.org/licenses/>. */
  105453. #include <limits.h>
  105454. #include <pthread.h>
  105455. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack2.c uClibc/test/nptl/tst-stack2.c
  105456. --- uClibc-0.9.33.2/test/nptl/tst-stack2.c 2012-05-15 09:20:09.000000000 +0200
  105457. +++ uClibc/test/nptl/tst-stack2.c 2014-02-03 12:32:57.000000000 +0100
  105458. @@ -13,9 +13,8 @@
  105459. Lesser General Public License for more details.
  105460. You should have received a copy of the GNU Lesser General Public
  105461. - License along with the GNU C Library; if not, write to the Free
  105462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105463. - 02111-1307 USA. */
  105464. + License along with the GNU C Library; if not, see
  105465. + <http://www.gnu.org/licenses/>. */
  105466. /* Test whether it is possible to create a thread with PTHREAD_STACK_MIN
  105467. stack size. */
  105468. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack-align.h uClibc/test/nptl/tst-stack-align.h
  105469. --- uClibc-0.9.33.2/test/nptl/tst-stack-align.h 2012-05-15 09:20:09.000000000 +0200
  105470. +++ uClibc/test/nptl/tst-stack-align.h 2014-02-03 12:32:57.000000000 +0100
  105471. @@ -12,9 +12,8 @@
  105472. Lesser General Public License for more details.
  105473. You should have received a copy of the GNU Lesser General Public
  105474. - License along with the GNU C Library; if not, write to the Free
  105475. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105476. - 02111-1307 USA. */
  105477. + License along with the GNU C Library; if not, see
  105478. + <http://www.gnu.org/licenses/>. */
  105479. #include <stdio.h>
  105480. #include <stdint.h>
  105481. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stdio1.c uClibc/test/nptl/tst-stdio1.c
  105482. --- uClibc-0.9.33.2/test/nptl/tst-stdio1.c 2012-05-15 09:20:09.000000000 +0200
  105483. +++ uClibc/test/nptl/tst-stdio1.c 2014-02-03 12:32:57.000000000 +0100
  105484. @@ -13,9 +13,8 @@
  105485. Lesser General Public License for more details.
  105486. You should have received a copy of the GNU Lesser General Public
  105487. - License along with the GNU C Library; if not, write to the Free
  105488. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105489. - 02111-1307 USA. */
  105490. + License along with the GNU C Library; if not, see
  105491. + <http://www.gnu.org/licenses/>. */
  105492. #include <pthread.h>
  105493. #include <signal.h>
  105494. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stdio2.c uClibc/test/nptl/tst-stdio2.c
  105495. --- uClibc-0.9.33.2/test/nptl/tst-stdio2.c 2012-05-15 09:20:09.000000000 +0200
  105496. +++ uClibc/test/nptl/tst-stdio2.c 2014-02-03 12:32:57.000000000 +0100
  105497. @@ -13,9 +13,8 @@
  105498. Lesser General Public License for more details.
  105499. You should have received a copy of the GNU Lesser General Public
  105500. - License along with the GNU C Library; if not, write to the Free
  105501. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105502. - 02111-1307 USA. */
  105503. + License along with the GNU C Library; if not, see
  105504. + <http://www.gnu.org/licenses/>. */
  105505. #include <pthread.h>
  105506. #include <signal.h>
  105507. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sysconf.c uClibc/test/nptl/tst-sysconf.c
  105508. --- uClibc-0.9.33.2/test/nptl/tst-sysconf.c 2012-05-15 09:20:09.000000000 +0200
  105509. +++ uClibc/test/nptl/tst-sysconf.c 2014-02-03 12:32:57.000000000 +0100
  105510. @@ -13,9 +13,8 @@
  105511. Lesser General Public License for more details.
  105512. You should have received a copy of the GNU Lesser General Public
  105513. - License along with the GNU C Library; if not, write to the Free
  105514. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105515. - 02111-1307 USA. */
  105516. + License along with the GNU C Library; if not, see
  105517. + <http://www.gnu.org/licenses/>. */
  105518. #include <pthread.h>
  105519. #include <stdio.h>
  105520. diff -Nur uClibc-0.9.33.2/test/nptl/tst-timer4.c uClibc/test/nptl/tst-timer4.c
  105521. --- uClibc-0.9.33.2/test/nptl/tst-timer4.c 2012-05-15 09:20:09.000000000 +0200
  105522. +++ uClibc/test/nptl/tst-timer4.c 2014-02-03 12:32:57.000000000 +0100
  105523. @@ -14,9 +14,8 @@
  105524. Lesser General Public License for more details.
  105525. You should have received a copy of the GNU Lesser General Public
  105526. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105527. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105528. - Boston, MA 02111-1307, USA. */
  105529. + License along with the GNU C Library; see the file COPYING.LIB. If
  105530. + not, see <http://www.gnu.org/licenses/>. */
  105531. #include <errno.h>
  105532. #include <signal.h>
  105533. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls1.c uClibc/test/nptl/tst-tls1.c
  105534. --- uClibc-0.9.33.2/test/nptl/tst-tls1.c 2012-05-15 09:20:09.000000000 +0200
  105535. +++ uClibc/test/nptl/tst-tls1.c 2014-02-03 12:32:57.000000000 +0100
  105536. @@ -13,9 +13,8 @@
  105537. Lesser General Public License for more details.
  105538. You should have received a copy of the GNU Lesser General Public
  105539. - License along with the GNU C Library; if not, write to the Free
  105540. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105541. - 02111-1307 USA. */
  105542. + License along with the GNU C Library; if not, see
  105543. + <http://www.gnu.org/licenses/>. */
  105544. #include <pthread.h>
  105545. #include <stdio.h>
  105546. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls2.c uClibc/test/nptl/tst-tls2.c
  105547. --- uClibc-0.9.33.2/test/nptl/tst-tls2.c 2012-05-15 09:20:09.000000000 +0200
  105548. +++ uClibc/test/nptl/tst-tls2.c 2014-02-03 12:32:57.000000000 +0100
  105549. @@ -13,9 +13,8 @@
  105550. Lesser General Public License for more details.
  105551. You should have received a copy of the GNU Lesser General Public
  105552. - License along with the GNU C Library; if not, write to the Free
  105553. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105554. - 02111-1307 USA. */
  105555. + License along with the GNU C Library; if not, see
  105556. + <http://www.gnu.org/licenses/>. */
  105557. #include <errno.h>
  105558. #include <pthread.h>
  105559. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls3.c uClibc/test/nptl/tst-tls3.c
  105560. --- uClibc-0.9.33.2/test/nptl/tst-tls3.c 2012-05-15 09:20:09.000000000 +0200
  105561. +++ uClibc/test/nptl/tst-tls3.c 2014-02-03 12:32:57.000000000 +0100
  105562. @@ -13,9 +13,8 @@
  105563. Lesser General Public License for more details.
  105564. You should have received a copy of the GNU Lesser General Public
  105565. - License along with the GNU C Library; if not, write to the Free
  105566. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105567. - 02111-1307 USA. */
  105568. + License along with the GNU C Library; if not, see
  105569. + <http://www.gnu.org/licenses/>. */
  105570. #include <dlfcn.h>
  105571. #include <errno.h>
  105572. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls3mod.c uClibc/test/nptl/tst-tls3mod.c
  105573. --- uClibc-0.9.33.2/test/nptl/tst-tls3mod.c 2012-05-15 09:20:09.000000000 +0200
  105574. +++ uClibc/test/nptl/tst-tls3mod.c 2014-02-03 12:32:57.000000000 +0100
  105575. @@ -13,9 +13,8 @@
  105576. Lesser General Public License for more details.
  105577. You should have received a copy of the GNU Lesser General Public
  105578. - License along with the GNU C Library; if not, write to the Free
  105579. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105580. - 02111-1307 USA. */
  105581. + License along with the GNU C Library; if not, see
  105582. + <http://www.gnu.org/licenses/>. */
  105583. #include <pthread.h>
  105584. #include <semaphore.h>
  105585. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4.c uClibc/test/nptl/tst-tls4.c
  105586. --- uClibc-0.9.33.2/test/nptl/tst-tls4.c 2012-05-15 09:20:09.000000000 +0200
  105587. +++ uClibc/test/nptl/tst-tls4.c 2014-02-03 12:32:57.000000000 +0100
  105588. @@ -13,9 +13,8 @@
  105589. Lesser General Public License for more details.
  105590. You should have received a copy of the GNU Lesser General Public
  105591. - License along with the GNU C Library; if not, write to the Free
  105592. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105593. - 02111-1307 USA. */
  105594. + License along with the GNU C Library; if not, see
  105595. + <http://www.gnu.org/licenses/>. */
  105596. #include <dlfcn.h>
  105597. #include <errno.h>
  105598. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4moda.c uClibc/test/nptl/tst-tls4moda.c
  105599. --- uClibc-0.9.33.2/test/nptl/tst-tls4moda.c 2012-05-15 09:20:09.000000000 +0200
  105600. +++ uClibc/test/nptl/tst-tls4moda.c 2014-02-03 12:32:57.000000000 +0100
  105601. @@ -13,9 +13,8 @@
  105602. Lesser General Public License for more details.
  105603. You should have received a copy of the GNU Lesser General Public
  105604. - License along with the GNU C Library; if not, write to the Free
  105605. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105606. - 02111-1307 USA. */
  105607. + License along with the GNU C Library; if not, see
  105608. + <http://www.gnu.org/licenses/>. */
  105609. #include <stdio.h>
  105610. #include <stdlib.h>
  105611. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4modb.c uClibc/test/nptl/tst-tls4modb.c
  105612. --- uClibc-0.9.33.2/test/nptl/tst-tls4modb.c 2012-05-15 09:20:09.000000000 +0200
  105613. +++ uClibc/test/nptl/tst-tls4modb.c 2014-02-03 12:32:57.000000000 +0100
  105614. @@ -13,9 +13,8 @@
  105615. Lesser General Public License for more details.
  105616. You should have received a copy of the GNU Lesser General Public
  105617. - License along with the GNU C Library; if not, write to the Free
  105618. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105619. - 02111-1307 USA. */
  105620. + License along with the GNU C Library; if not, see
  105621. + <http://www.gnu.org/licenses/>. */
  105622. #include <stdio.h>
  105623. #include <stdlib.h>
  105624. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls5.c uClibc/test/nptl/tst-tls5.c
  105625. --- uClibc-0.9.33.2/test/nptl/tst-tls5.c 2012-05-15 09:20:09.000000000 +0200
  105626. +++ uClibc/test/nptl/tst-tls5.c 2014-02-03 12:32:57.000000000 +0100
  105627. @@ -13,9 +13,8 @@
  105628. Lesser General Public License for more details.
  105629. You should have received a copy of the GNU Lesser General Public
  105630. - License along with the GNU C Library; if not, write to the Free
  105631. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105632. - 02111-1307 USA. */
  105633. + License along with the GNU C Library; if not, see
  105634. + <http://www.gnu.org/licenses/>. */
  105635. /* Check alignment, overlapping and layout of TLS variables. */
  105636. #include <stdint.h>
  105637. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd1.c uClibc/test/nptl/tst-tsd1.c
  105638. --- uClibc-0.9.33.2/test/nptl/tst-tsd1.c 2012-05-15 09:20:09.000000000 +0200
  105639. +++ uClibc/test/nptl/tst-tsd1.c 2014-02-03 12:32:57.000000000 +0100
  105640. @@ -13,9 +13,8 @@
  105641. Lesser General Public License for more details.
  105642. You should have received a copy of the GNU Lesser General Public
  105643. - License along with the GNU C Library; if not, write to the Free
  105644. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105645. - 02111-1307 USA. */
  105646. + License along with the GNU C Library; if not, see
  105647. + <http://www.gnu.org/licenses/>. */
  105648. #include <pthread.h>
  105649. #include <stdio.h>
  105650. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd2.c uClibc/test/nptl/tst-tsd2.c
  105651. --- uClibc-0.9.33.2/test/nptl/tst-tsd2.c 2012-05-15 09:20:09.000000000 +0200
  105652. +++ uClibc/test/nptl/tst-tsd2.c 2014-02-03 12:32:57.000000000 +0100
  105653. @@ -13,9 +13,8 @@
  105654. Lesser General Public License for more details.
  105655. You should have received a copy of the GNU Lesser General Public
  105656. - License along with the GNU C Library; if not, write to the Free
  105657. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105658. - 02111-1307 USA. */
  105659. + License along with the GNU C Library; if not, see
  105660. + <http://www.gnu.org/licenses/>. */
  105661. #include <pthread.h>
  105662. #include <stdio.h>
  105663. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd3.c uClibc/test/nptl/tst-tsd3.c
  105664. --- uClibc-0.9.33.2/test/nptl/tst-tsd3.c 2012-05-15 09:20:09.000000000 +0200
  105665. +++ uClibc/test/nptl/tst-tsd3.c 2014-02-03 12:32:57.000000000 +0100
  105666. @@ -13,9 +13,8 @@
  105667. Lesser General Public License for more details.
  105668. You should have received a copy of the GNU Lesser General Public
  105669. - License along with the GNU C Library; if not, write to the Free
  105670. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105671. - 02111-1307 USA. */
  105672. + License along with the GNU C Library; if not, see
  105673. + <http://www.gnu.org/licenses/>. */
  105674. #include <limits.h>
  105675. #include <pthread.h>
  105676. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd4.c uClibc/test/nptl/tst-tsd4.c
  105677. --- uClibc-0.9.33.2/test/nptl/tst-tsd4.c 2012-05-15 09:20:09.000000000 +0200
  105678. +++ uClibc/test/nptl/tst-tsd4.c 2014-02-03 12:32:57.000000000 +0100
  105679. @@ -13,9 +13,8 @@
  105680. Lesser General Public License for more details.
  105681. You should have received a copy of the GNU Lesser General Public
  105682. - License along with the GNU C Library; if not, write to the Free
  105683. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105684. - 02111-1307 USA. */
  105685. + License along with the GNU C Library; if not, see
  105686. + <http://www.gnu.org/licenses/>. */
  105687. #include <limits.h>
  105688. #include <pthread.h>
  105689. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd5.c uClibc/test/nptl/tst-tsd5.c
  105690. --- uClibc-0.9.33.2/test/nptl/tst-tsd5.c 2012-05-15 09:20:09.000000000 +0200
  105691. +++ uClibc/test/nptl/tst-tsd5.c 2014-02-03 12:32:57.000000000 +0100
  105692. @@ -13,9 +13,8 @@
  105693. Lesser General Public License for more details.
  105694. You should have received a copy of the GNU Lesser General Public
  105695. - License along with the GNU C Library; if not, write to the Free
  105696. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105697. - 02111-1307 USA. */
  105698. + License along with the GNU C Library; if not, see
  105699. + <http://www.gnu.org/licenses/>. */
  105700. #include <pthread.h>
  105701. #include <stdio.h>
  105702. diff -Nur uClibc-0.9.33.2/test/nptl/tst-typesizes.c uClibc/test/nptl/tst-typesizes.c
  105703. --- uClibc-0.9.33.2/test/nptl/tst-typesizes.c 2012-05-15 09:20:09.000000000 +0200
  105704. +++ uClibc/test/nptl/tst-typesizes.c 2014-02-03 12:32:57.000000000 +0100
  105705. @@ -13,9 +13,8 @@
  105706. Lesser General Public License for more details.
  105707. You should have received a copy of the GNU Lesser General Public
  105708. - License along with the GNU C Library; if not, write to the Free
  105709. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105710. - 02111-1307 USA. */
  105711. + License along with the GNU C Library; if not, see
  105712. + <http://www.gnu.org/licenses/>. */
  105713. #include <stdio.h>
  105714. #include <pthreadP.h>
  105715. diff -Nur uClibc-0.9.33.2/test/nptl/tst-umask1.c uClibc/test/nptl/tst-umask1.c
  105716. --- uClibc-0.9.33.2/test/nptl/tst-umask1.c 2012-05-15 09:20:09.000000000 +0200
  105717. +++ uClibc/test/nptl/tst-umask1.c 2014-02-03 12:32:57.000000000 +0100
  105718. @@ -13,9 +13,8 @@
  105719. Lesser General Public License for more details.
  105720. You should have received a copy of the GNU Lesser General Public
  105721. - License along with the GNU C Library; if not, write to the Free
  105722. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105723. - 02111-1307 USA. */
  105724. + License along with the GNU C Library; if not, see
  105725. + <http://www.gnu.org/licenses/>. */
  105726. #include <fcntl.h>
  105727. #include <pthread.h>
  105728. diff -Nur uClibc-0.9.33.2/test/nptl/tst-unload.c uClibc/test/nptl/tst-unload.c
  105729. --- uClibc-0.9.33.2/test/nptl/tst-unload.c 2012-05-15 09:20:09.000000000 +0200
  105730. +++ uClibc/test/nptl/tst-unload.c 2014-02-03 12:32:57.000000000 +0100
  105731. @@ -13,9 +13,8 @@
  105732. Lesser General Public License for more details.
  105733. You should have received a copy of the GNU Lesser General Public
  105734. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105735. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105736. - Boston, MA 02111-1307, USA. */
  105737. + License along with the GNU C Library; see the file COPYING.LIB. If
  105738. + not, see <http://www.gnu.org/licenses/>. */
  105739. #include <dlfcn.h>
  105740. #include <stdio.h>
  105741. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork1.c uClibc/test/nptl/tst-vfork1.c
  105742. --- uClibc-0.9.33.2/test/nptl/tst-vfork1.c 2012-05-15 09:20:09.000000000 +0200
  105743. +++ uClibc/test/nptl/tst-vfork1.c 2014-02-03 12:32:57.000000000 +0100
  105744. @@ -14,9 +14,8 @@
  105745. Lesser General Public License for more details.
  105746. You should have received a copy of the GNU Lesser General Public
  105747. - License along with the GNU C Library; if not, write to the Free
  105748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105749. - 02111-1307 USA. */
  105750. + License along with the GNU C Library; if not, see
  105751. + <http://www.gnu.org/licenses/>. */
  105752. #include <errno.h>
  105753. #include <stdio.h>
  105754. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork1x.c uClibc/test/nptl/tst-vfork1x.c
  105755. --- uClibc-0.9.33.2/test/nptl/tst-vfork1x.c 2012-05-15 09:20:09.000000000 +0200
  105756. +++ uClibc/test/nptl/tst-vfork1x.c 2014-02-03 12:32:57.000000000 +0100
  105757. @@ -14,9 +14,8 @@
  105758. Lesser General Public License for more details.
  105759. You should have received a copy of the GNU Lesser General Public
  105760. - License along with the GNU C Library; if not, write to the Free
  105761. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105762. - 02111-1307 USA. */
  105763. + License along with the GNU C Library; if not, see
  105764. + <http://www.gnu.org/licenses/>. */
  105765. #include <errno.h>
  105766. #include <stdio.h>
  105767. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork2.c uClibc/test/nptl/tst-vfork2.c
  105768. --- uClibc-0.9.33.2/test/nptl/tst-vfork2.c 2012-05-15 09:20:09.000000000 +0200
  105769. +++ uClibc/test/nptl/tst-vfork2.c 2014-02-03 12:32:57.000000000 +0100
  105770. @@ -14,9 +14,8 @@
  105771. Lesser General Public License for more details.
  105772. You should have received a copy of the GNU Lesser General Public
  105773. - License along with the GNU C Library; if not, write to the Free
  105774. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105775. - 02111-1307 USA. */
  105776. + License along with the GNU C Library; if not, see
  105777. + <http://www.gnu.org/licenses/>. */
  105778. #include <errno.h>
  105779. #include <signal.h>
  105780. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork2x.c uClibc/test/nptl/tst-vfork2x.c
  105781. --- uClibc-0.9.33.2/test/nptl/tst-vfork2x.c 2012-05-15 09:20:09.000000000 +0200
  105782. +++ uClibc/test/nptl/tst-vfork2x.c 2014-02-03 12:32:57.000000000 +0100
  105783. @@ -14,9 +14,8 @@
  105784. Lesser General Public License for more details.
  105785. You should have received a copy of the GNU Lesser General Public
  105786. - License along with the GNU C Library; if not, write to the Free
  105787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105788. - 02111-1307 USA. */
  105789. + License along with the GNU C Library; if not, see
  105790. + <http://www.gnu.org/licenses/>. */
  105791. #include <errno.h>
  105792. #include <signal.h>
  105793. diff -Nur uClibc-0.9.33.2/test/pthread/Makefile uClibc/test/pthread/Makefile
  105794. --- uClibc-0.9.33.2/test/pthread/Makefile 2012-05-15 09:20:09.000000000 +0200
  105795. +++ uClibc/test/pthread/Makefile 2014-02-03 12:32:57.000000000 +0100
  105796. @@ -2,6 +2,7 @@
  105797. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105798. top_builddir=../../
  105799. +top_srcdir=../../
  105800. include ../Rules.mak
  105801. -include Makefile.in
  105802. include ../Test.mak
  105803. diff -Nur uClibc-0.9.33.2/test/pwd_grp/Makefile uClibc/test/pwd_grp/Makefile
  105804. --- uClibc-0.9.33.2/test/pwd_grp/Makefile 2012-05-15 09:20:09.000000000 +0200
  105805. +++ uClibc/test/pwd_grp/Makefile 2014-02-03 12:32:57.000000000 +0100
  105806. @@ -2,6 +2,7 @@
  105807. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105808. top_builddir=../../
  105809. +top_srcdir=../../
  105810. include ../Rules.mak
  105811. -include Makefile.in
  105812. include ../Test.mak
  105813. diff -Nur uClibc-0.9.33.2/test/regex/Makefile uClibc/test/regex/Makefile
  105814. --- uClibc-0.9.33.2/test/regex/Makefile 2012-05-15 09:20:09.000000000 +0200
  105815. +++ uClibc/test/regex/Makefile 2014-02-03 12:32:57.000000000 +0100
  105816. @@ -2,6 +2,7 @@
  105817. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105818. top_builddir=../../
  105819. +top_srcdir=../../
  105820. include ../Rules.mak
  105821. -include Makefile.in
  105822. include ../Test.mak
  105823. diff -Nur uClibc-0.9.33.2/test/regex/tst-regexloc.c uClibc/test/regex/tst-regexloc.c
  105824. --- uClibc-0.9.33.2/test/regex/tst-regexloc.c 2012-05-15 09:20:09.000000000 +0200
  105825. +++ uClibc/test/regex/tst-regexloc.c 2014-02-03 12:32:57.000000000 +0100
  105826. @@ -12,9 +12,8 @@
  105827. Lesser General Public License for more details.
  105828. You should have received a copy of the GNU Lesser General Public
  105829. - License along with the GNU C Library; if not, write to the Free
  105830. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105831. - 02111-1307 USA. */
  105832. + License along with the GNU C Library; if not, see
  105833. + <http://www.gnu.org/licenses/>. */
  105834. #include <sys/types.h>
  105835. #include <regex.h>
  105836. diff -Nur uClibc-0.9.33.2/test/rpc/Makefile uClibc/test/rpc/Makefile
  105837. --- uClibc-0.9.33.2/test/rpc/Makefile 2012-05-15 09:20:09.000000000 +0200
  105838. +++ uClibc/test/rpc/Makefile 2014-02-03 12:32:57.000000000 +0100
  105839. @@ -2,6 +2,7 @@
  105840. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105841. top_builddir=../../
  105842. +top_srcdir=../../
  105843. include ../Rules.mak
  105844. -include Makefile.in
  105845. include ../Test.mak
  105846. diff -Nur uClibc-0.9.33.2/test/Rules.mak uClibc/test/Rules.mak
  105847. --- uClibc-0.9.33.2/test/Rules.mak 2012-05-15 09:20:09.000000000 +0200
  105848. +++ uClibc/test/Rules.mak 2014-02-03 12:32:57.000000000 +0100
  105849. @@ -8,18 +8,34 @@
  105850. .SUFFIXES:
  105851. top_builddir ?= ../
  105852. +abs_top_builddir ?= $(shell cd $(top_builddir); pwd)/
  105853. TESTDIR=$(top_builddir)test/
  105854. -include $(top_builddir)/Rules.mak
  105855. -ifndef TEST_INSTALLED_UCLIBC
  105856. +include $(top_srcdir)Rules.mak
  105857. +ifeq ($(filter $(clean_targets) CLEAN_%,$(MAKECMDGOALS)),)
  105858. +ifeq ($(HAVE_DOT_CONFIG),)
  105859. +$(error no HAVE_DOT_CONFIG, failed to read .config)
  105860. +endif
  105861. +endif
  105862. +
  105863. ifdef UCLIBC_LDSO
  105864. ifeq (,$(findstring /,$(UCLIBC_LDSO)))
  105865. -UCLIBC_LDSO := $(top_builddir)lib/$(UCLIBC_LDSO)
  105866. +UCLIBC_LDSO := $(UCLIBC_LDSO)
  105867. +else
  105868. +UCLIBC_LDSO := $(notdir $(UCLIBC_LDSO))
  105869. endif
  105870. else
  105871. -UCLIBC_LDSO := $(firstword $(wildcard $(top_builddir)lib/ld*))
  105872. +UCLIBC_LDSO := $(notdir $(firstword $(wildcard $(top_builddir)lib/ld*)))
  105873. endif
  105874. +ifndef TEST_INSTALLED_UCLIBC
  105875. +ifeq ($(LDSO_SAFE_RUNPATH),y)
  105876. +UCLIBC_PATH := $(abs_top_builddir)lib
  105877. +else
  105878. +UCLIBC_PATH := $(top_builddir)lib
  105879. +endif
  105880. +else
  105881. +UCLIBC_PATH := $(RUNTIME_PREFIX)$(MULTILIB_DIR)
  105882. endif
  105883. #--------------------------------------------------------
  105884. # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
  105885. @@ -81,15 +97,14 @@
  105886. LDFLAGS += -Wl,-static -static-libgcc
  105887. endif
  105888. -LDFLAGS += -B$(top_builddir)lib -Wl,-rpath,$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib
  105889. -UCLIBC_LDSO_ABSPATH=$(shell pwd)
  105890. -ifdef TEST_INSTALLED_UCLIBC
  105891. -LDFLAGS += -Wl,-rpath,./
  105892. -UCLIBC_LDSO_ABSPATH=$(RUNTIME_PREFIX)$(MULTILIB_DIR)
  105893. +ifndef TEST_INSTALLED_UCLIBC
  105894. +LDFLAGS += -B$(UCLIBC_PATH) -Wl,-rpath,$(UCLIBC_PATH):$(shell pwd) -Wl,-rpath-link,$(UCLIBC_PATH):$(shell pwd)
  105895. +else
  105896. +LDFLAGS += -Wl,-rpath,$(shell pwd)
  105897. endif
  105898. ifeq ($(findstring -static,$(LDFLAGS)),)
  105899. -LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_LDSO_ABSPATH)/$(UCLIBC_LDSO)
  105900. +LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_PATH)/$(UCLIBC_LDSO)
  105901. endif
  105902. ifeq ($(LDSO_GNU_HASH_SUPPORT),y)
  105903. diff -Nur uClibc-0.9.33.2/test/setjmp/bug269-setjmp.c uClibc/test/setjmp/bug269-setjmp.c
  105904. --- uClibc-0.9.33.2/test/setjmp/bug269-setjmp.c 2012-05-15 09:20:09.000000000 +0200
  105905. +++ uClibc/test/setjmp/bug269-setjmp.c 2014-02-03 12:32:57.000000000 +0100
  105906. @@ -12,9 +12,8 @@
  105907. Lesser General Public License for more details.
  105908. You should have received a copy of the GNU Lesser General Public
  105909. - License along with the GNU C Library; if not, write to the Free
  105910. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105911. - 02111-1307 USA. */ ;
  105912. + License along with the GNU C Library; If not, see
  105913. + <http://www.gnu.org/licenses/>. */
  105914. /* Test case for Bugzilla # 269 */
  105915. diff -Nur uClibc-0.9.33.2/test/setjmp/Makefile uClibc/test/setjmp/Makefile
  105916. --- uClibc-0.9.33.2/test/setjmp/Makefile 2012-05-15 09:20:09.000000000 +0200
  105917. +++ uClibc/test/setjmp/Makefile 2014-02-03 12:32:57.000000000 +0100
  105918. @@ -2,6 +2,7 @@
  105919. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105920. top_builddir=../../
  105921. +top_srcdir=../../
  105922. include ../Rules.mak
  105923. -include Makefile.in
  105924. include ../Test.mak
  105925. diff -Nur uClibc-0.9.33.2/test/setjmp/tst-setjmp.c uClibc/test/setjmp/tst-setjmp.c
  105926. --- uClibc-0.9.33.2/test/setjmp/tst-setjmp.c 2012-05-15 09:20:09.000000000 +0200
  105927. +++ uClibc/test/setjmp/tst-setjmp.c 2014-02-03 12:32:57.000000000 +0100
  105928. @@ -12,9 +12,8 @@
  105929. Lesser General Public License for more details.
  105930. You should have received a copy of the GNU Lesser General Public
  105931. - License along with the GNU C Library; if not, write to the Free
  105932. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105933. - 02111-1307 USA. */
  105934. + License along with the GNU C Library; if not, see
  105935. + <http://www.gnu.org/licenses/>. */
  105936. #include <stdio.h>
  105937. #include <setjmp.h>
  105938. diff -Nur uClibc-0.9.33.2/test/signal/Makefile uClibc/test/signal/Makefile
  105939. --- uClibc-0.9.33.2/test/signal/Makefile 2012-05-15 09:20:09.000000000 +0200
  105940. +++ uClibc/test/signal/Makefile 2014-02-03 12:32:57.000000000 +0100
  105941. @@ -2,6 +2,7 @@
  105942. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105943. top_builddir=../../
  105944. +top_srcdir=../../
  105945. include ../Rules.mak
  105946. -include Makefile.in
  105947. include ../Test.mak
  105948. diff -Nur uClibc-0.9.33.2/test/signal/tst-raise.c uClibc/test/signal/tst-raise.c
  105949. --- uClibc-0.9.33.2/test/signal/tst-raise.c 2012-05-15 09:20:09.000000000 +0200
  105950. +++ uClibc/test/signal/tst-raise.c 2014-02-03 12:32:57.000000000 +0100
  105951. @@ -13,9 +13,8 @@
  105952. Lesser General Public License for more details.
  105953. You should have received a copy of the GNU Lesser General Public
  105954. - License along with the GNU C Library; if not, write to the Free
  105955. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105956. - 02111-1307 USA. */
  105957. + License along with the GNU C Library; if not, see
  105958. + <http://www.gnu.org/licenses/>. */
  105959. #include <errno.h>
  105960. #include <string.h>
  105961. diff -Nur uClibc-0.9.33.2/test/signal/tst-signalfd.c uClibc/test/signal/tst-signalfd.c
  105962. --- uClibc-0.9.33.2/test/signal/tst-signalfd.c 1970-01-01 01:00:00.000000000 +0100
  105963. +++ uClibc/test/signal/tst-signalfd.c 2014-02-03 12:32:57.000000000 +0100
  105964. @@ -0,0 +1,63 @@
  105965. +/* vi: set sw=4 ts=4 sts=4: */
  105966. +/*
  105967. + * signalfd test for uClibc
  105968. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  105969. + *
  105970. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105971. + */
  105972. +
  105973. +#include <stdio.h>
  105974. +#include <stdlib.h>
  105975. +#include <string.h>
  105976. +#include <unistd.h>
  105977. +#include <errno.h>
  105978. +#include <error.h>
  105979. +#include <signal.h>
  105980. +#include <sys/signalfd.h>
  105981. +#include <sys/fcntl.h>
  105982. +
  105983. +static int
  105984. +do_test(void)
  105985. +{
  105986. + int fd, ret, result = 0;
  105987. + struct signalfd_siginfo ssi;
  105988. + sigset_t mask;
  105989. +
  105990. + sigemptyset(&mask);
  105991. + sigaddset(&mask, SIGUSR1);
  105992. + sigprocmask(SIG_BLOCK, &mask, NULL);
  105993. +
  105994. + fd = signalfd(-1, &mask, SFD_NONBLOCK);
  105995. + if (fd < 0) {
  105996. + printf("signalfd() failed: %s\n", strerror(errno));
  105997. + result = 1;
  105998. + }
  105999. +
  106000. + /* this should return immediately with EAGAIN due to SFD_NONBLOCK */
  106001. + memset(&ssi, 0, sizeof(ssi));
  106002. + ret = read(fd, &ssi, sizeof(ssi));
  106003. + if (ret != -1 || errno != EAGAIN) {
  106004. + error(0, 0, "first read() returned %d", ret);
  106005. + result = 1;
  106006. + }
  106007. +
  106008. + kill(getpid(), SIGUSR1);
  106009. +
  106010. + /* this should return a struct ssi indicating receipt of SIGUSR1 */
  106011. + ret = read(fd, &ssi, sizeof(ssi));
  106012. + if (ret != sizeof(ssi)) {
  106013. + error(0, 0, "second read() returned %d", ret);
  106014. + result = 1;
  106015. + }
  106016. +
  106017. + if (ssi.ssi_signo != SIGUSR1) {
  106018. + error(0, 0, "ssi contains bogus signo");
  106019. + result = 1;
  106020. + }
  106021. +
  106022. + return result;
  106023. +}
  106024. +
  106025. +#define TIMEOUT 5
  106026. +#define TEST_FUNCTION do_test ()
  106027. +#include "../test-skeleton.c"
  106028. diff -Nur uClibc-0.9.33.2/test/signal/tst-sigsimple.c uClibc/test/signal/tst-sigsimple.c
  106029. --- uClibc-0.9.33.2/test/signal/tst-sigsimple.c 2012-05-15 09:20:09.000000000 +0200
  106030. +++ uClibc/test/signal/tst-sigsimple.c 2014-02-03 12:32:57.000000000 +0100
  106031. @@ -13,9 +13,8 @@
  106032. Lesser General Public License for more details.
  106033. You should have received a copy of the GNU Lesser General Public
  106034. - License along with the GNU C Library; if not, write to the Free
  106035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106036. - 02111-1307 USA. */
  106037. + License along with the GNU C Library; if not, see
  106038. + <http://www.gnu.org/licenses/>. */
  106039. #include <errno.h>
  106040. #include <signal.h>
  106041. diff -Nur uClibc-0.9.33.2/test/silly/Makefile uClibc/test/silly/Makefile
  106042. --- uClibc-0.9.33.2/test/silly/Makefile 2012-05-15 09:20:09.000000000 +0200
  106043. +++ uClibc/test/silly/Makefile 2014-02-03 12:32:57.000000000 +0100
  106044. @@ -2,6 +2,7 @@
  106045. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106046. top_builddir=../../
  106047. +top_srcdir=../../
  106048. include ../Rules.mak
  106049. -include Makefile.in
  106050. include ../Test.mak
  106051. diff -Nur uClibc-0.9.33.2/test/stat/Makefile uClibc/test/stat/Makefile
  106052. --- uClibc-0.9.33.2/test/stat/Makefile 2012-05-15 09:20:09.000000000 +0200
  106053. +++ uClibc/test/stat/Makefile 2014-02-03 12:32:57.000000000 +0100
  106054. @@ -2,6 +2,7 @@
  106055. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106056. top_builddir=../../
  106057. +top_srcdir=../../
  106058. include ../Rules.mak
  106059. -include Makefile.in
  106060. include ../Test.mak
  106061. diff -Nur uClibc-0.9.33.2/test/stdio/Makefile uClibc/test/stdio/Makefile
  106062. --- uClibc-0.9.33.2/test/stdio/Makefile 2012-05-15 09:20:09.000000000 +0200
  106063. +++ uClibc/test/stdio/Makefile 2014-02-03 12:32:57.000000000 +0100
  106064. @@ -2,6 +2,7 @@
  106065. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106066. top_builddir=../../
  106067. +top_srcdir=../../
  106068. include ../Rules.mak
  106069. -include Makefile.in
  106070. include ../Test.mak
  106071. diff -Nur uClibc-0.9.33.2/test/stdlib/Makefile uClibc/test/stdlib/Makefile
  106072. --- uClibc-0.9.33.2/test/stdlib/Makefile 2012-05-15 09:20:09.000000000 +0200
  106073. +++ uClibc/test/stdlib/Makefile 2014-02-03 12:32:57.000000000 +0100
  106074. @@ -2,6 +2,7 @@
  106075. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106076. top_builddir=../../
  106077. +top_srcdir=../../
  106078. include ../Rules.mak
  106079. -include Makefile.in
  106080. include ../Test.mak
  106081. diff -Nur uClibc-0.9.33.2/test/stdlib/testarc4random.c uClibc/test/stdlib/testarc4random.c
  106082. --- uClibc-0.9.33.2/test/stdlib/testarc4random.c 1970-01-01 01:00:00.000000000 +0100
  106083. +++ uClibc/test/stdlib/testarc4random.c 2014-02-03 12:32:57.000000000 +0100
  106084. @@ -0,0 +1,12 @@
  106085. +#include <stdlib.h>
  106086. +#include <stdio.h>
  106087. +
  106088. +int main(void)
  106089. +{
  106090. +#ifdef __UCLIBC_HAS_ARC4RANDOM__
  106091. + int random_number;
  106092. + random_number = arc4random() % 65536;
  106093. + printf("%d\n", random_number);
  106094. +#endif
  106095. + return 0;
  106096. +}
  106097. diff -Nur uClibc-0.9.33.2/test/stdlib/test-canon2.c uClibc/test/stdlib/test-canon2.c
  106098. --- uClibc-0.9.33.2/test/stdlib/test-canon2.c 2012-05-15 09:20:09.000000000 +0200
  106099. +++ uClibc/test/stdlib/test-canon2.c 2014-02-03 12:32:57.000000000 +0100
  106100. @@ -14,9 +14,8 @@
  106101. Lesser General Public License for more details.
  106102. You should have received a copy of the GNU Lesser General Public
  106103. - License along with the GNU C Library; if not, write to the Free
  106104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106105. - 02111-1307 USA. */
  106106. + License along with the GNU C Library; if not, see
  106107. + <http://www.gnu.org/licenses/>. */
  106108. #include <errno.h>
  106109. #include <string.h>
  106110. diff -Nur uClibc-0.9.33.2/test/stdlib/test-canon.c uClibc/test/stdlib/test-canon.c
  106111. --- uClibc-0.9.33.2/test/stdlib/test-canon.c 2012-05-15 09:20:09.000000000 +0200
  106112. +++ uClibc/test/stdlib/test-canon.c 2014-02-03 12:32:57.000000000 +0100
  106113. @@ -15,9 +15,8 @@
  106114. Lesser General Public License for more details.
  106115. You should have received a copy of the GNU Lesser General Public
  106116. - License along with the GNU C Library; if not, write to the Free
  106117. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106118. - 02111-1307 USA. */
  106119. + License along with the GNU C Library; if not, see
  106120. + <http://www.gnu.org/licenses/>. */
  106121. /* This file must be run from within a directory called "stdlib". */
  106122. diff -Nur uClibc-0.9.33.2/test/string/Makefile uClibc/test/string/Makefile
  106123. --- uClibc-0.9.33.2/test/string/Makefile 2012-05-15 09:20:09.000000000 +0200
  106124. +++ uClibc/test/string/Makefile 2014-02-03 12:32:57.000000000 +0100
  106125. @@ -2,6 +2,7 @@
  106126. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106127. top_builddir=../../
  106128. +top_srcdir=../../
  106129. include ../Rules.mak
  106130. -include Makefile.in
  106131. include ../Test.mak
  106132. diff -Nur uClibc-0.9.33.2/test/string/stratcliff.c uClibc/test/string/stratcliff.c
  106133. --- uClibc-0.9.33.2/test/string/stratcliff.c 2012-05-15 09:20:09.000000000 +0200
  106134. +++ uClibc/test/string/stratcliff.c 2014-02-03 12:32:57.000000000 +0100
  106135. @@ -14,9 +14,8 @@
  106136. Lesser General Public License for more details.
  106137. You should have received a copy of the GNU Lesser General Public
  106138. - License along with the GNU C Library; if not, write to the Free
  106139. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106140. - 02111-1307 USA. */
  106141. + License along with the GNU C Library; if not, see
  106142. + <http://www.gnu.org/licenses/>. */
  106143. #define _GNU_SOURCE 1
  106144. diff -Nur uClibc-0.9.33.2/test/string/testcopy.c uClibc/test/string/testcopy.c
  106145. --- uClibc-0.9.33.2/test/string/testcopy.c 2012-05-15 09:20:09.000000000 +0200
  106146. +++ uClibc/test/string/testcopy.c 2014-02-03 12:32:57.000000000 +0100
  106147. @@ -13,9 +13,8 @@
  106148. Lesser General Public License for more details.
  106149. You should have received a copy of the GNU Lesser General Public
  106150. - License along with the GNU C Library; if not, write to the Free
  106151. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106152. - 02111-1307 USA. */
  106153. + License along with the GNU C Library; if not, see
  106154. + <http://www.gnu.org/licenses/>. */
  106155. #include <stdlib.h>
  106156. #include <stdio.h>
  106157. diff -Nur uClibc-0.9.33.2/test/string/tester.c uClibc/test/string/tester.c
  106158. --- uClibc-0.9.33.2/test/string/tester.c 2012-05-15 09:20:09.000000000 +0200
  106159. +++ uClibc/test/string/tester.c 2014-02-03 12:32:57.000000000 +0100
  106160. @@ -13,9 +13,8 @@
  106161. Lesser General Public License for more details.
  106162. You should have received a copy of the GNU Lesser General Public
  106163. - License along with the GNU C Library; if not, write to the Free
  106164. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106165. - 02111-1307 USA. */
  106166. + License along with the GNU C Library; if not, see
  106167. + <http://www.gnu.org/licenses/>. */
  106168. #ifndef _GNU_SOURCE
  106169. #define _GNU_SOURCE
  106170. diff -Nur uClibc-0.9.33.2/test/string/test-ffs.c uClibc/test/string/test-ffs.c
  106171. --- uClibc-0.9.33.2/test/string/test-ffs.c 2012-05-15 09:20:09.000000000 +0200
  106172. +++ uClibc/test/string/test-ffs.c 2014-02-03 12:32:57.000000000 +0100
  106173. @@ -14,9 +14,8 @@
  106174. Lesser General Public License for more details.
  106175. You should have received a copy of the GNU Lesser General Public
  106176. - License along with the GNU C Library; if not, write to the Free
  106177. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106178. - 02111-1307 USA. */
  106179. + License along with the GNU C Library; if not, see
  106180. + <http://www.gnu.org/licenses/>. */
  106181. #include <stdlib.h>
  106182. #include <stdio.h>
  106183. diff -Nur uClibc-0.9.33.2/test/string/tst-bswap.c uClibc/test/string/tst-bswap.c
  106184. --- uClibc-0.9.33.2/test/string/tst-bswap.c 2012-05-15 09:20:09.000000000 +0200
  106185. +++ uClibc/test/string/tst-bswap.c 2014-02-03 12:32:57.000000000 +0100
  106186. @@ -13,9 +13,8 @@
  106187. Lesser General Public License for more details.
  106188. You should have received a copy of the GNU Lesser General Public
  106189. - License along with the GNU C Library; if not, write to the Free
  106190. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106191. - 02111-1307 USA. */
  106192. + License along with the GNU C Library; if not, see
  106193. + <http://www.gnu.org/licenses/>. */
  106194. #include <byteswap.h>
  106195. #include <stdio.h>
  106196. diff -Nur uClibc-0.9.33.2/test/string/tst-inlcall.c uClibc/test/string/tst-inlcall.c
  106197. --- uClibc-0.9.33.2/test/string/tst-inlcall.c 2012-05-15 09:20:09.000000000 +0200
  106198. +++ uClibc/test/string/tst-inlcall.c 2014-02-03 12:32:57.000000000 +0100
  106199. @@ -13,9 +13,8 @@
  106200. Lesser General Public License for more details.
  106201. You should have received a copy of the GNU Lesser General Public
  106202. - License along with the GNU C Library; if not, write to the Free
  106203. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106204. - 02111-1307 USA. */
  106205. + License along with the GNU C Library; if not, see
  106206. + <http://www.gnu.org/licenses/>. */
  106207. #ifndef _GNU_SOURCE
  106208. #define _GNU_SOURCE
  106209. diff -Nur uClibc-0.9.33.2/test/termios/Makefile uClibc/test/termios/Makefile
  106210. --- uClibc-0.9.33.2/test/termios/Makefile 2012-05-15 09:20:09.000000000 +0200
  106211. +++ uClibc/test/termios/Makefile 2014-02-03 12:32:57.000000000 +0100
  106212. @@ -2,6 +2,7 @@
  106213. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106214. top_builddir=../../
  106215. +top_srcdir=../../
  106216. include ../Rules.mak
  106217. -include Makefile.in
  106218. include ../Test.mak
  106219. diff -Nur uClibc-0.9.33.2/test/Test.mak uClibc/test/Test.mak
  106220. --- uClibc-0.9.33.2/test/Test.mak 2012-05-15 09:20:09.000000000 +0200
  106221. +++ uClibc/test/Test.mak 2014-02-03 12:32:57.000000000 +0100
  106222. @@ -35,7 +35,9 @@
  106223. CLEAN_TARGETS := $(U_TARGETS) $(G_TARGETS)
  106224. CLEAN_TARGETS += $(TESTS_DISABLED) $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED)
  106225. COMPILE_TARGETS := $(TARGETS)
  106226. -RUN_TARGETS := $(addsuffix .exe,$(TARGETS))
  106227. +# We sort the targets so uClibc and host-libc tests are run adjacent
  106228. +RUN_TARGETS := $(sort $(addsuffix .exe,$(TARGETS)))
  106229. +COMPILE_TARGETS := $(sort $(COMPILE_TARGETS))
  106230. # provide build rules even for disabled tests:
  106231. U_TARGETS += $(TESTS_DISABLED)
  106232. G_TARGETS += $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED)
  106233. @@ -99,13 +101,15 @@
  106234. $(U_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
  106235. $(showlink)
  106236. - $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$@) -c $@.c -o $@.o
  106237. + $(Q)$(CC) $(filter-out $(CFLAGS-OMIT-$@),$(CFLAGS)) $(EXTRA_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$@) -c $@.c -o $@.o
  106238. $(Q)$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$@)
  106239. $(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
  106240. $(showlink)
  106241. - $(Q)$(HOSTCC) $(HOST_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) -c $(patsubst %_glibc,%,$@).c -o $@.o
  106242. - $(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
  106243. + $(Q)$(HOSTCC) $(filter-out $(HOST_CFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_CFLAGS)) \
  106244. + $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  106245. + -c $(patsubst %_glibc,%,$@).c -o $@.o
  106246. + $(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) $(LDFLAGS_$@)
  106247. shell_%:
  106248. @@ -117,9 +121,11 @@
  106249. %.so: %.c
  106250. $(showlink)
  106251. $(Q)$(CC) \
  106252. - $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  106253. + $(filter-out $(CFLAGS-OMIT-$<),$(CFLAGS)) $(EXTRA_CFLAGS) \
  106254. + $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  106255. -fPIC -shared $< -o $@ -Wl,-soname,$@ \
  106256. - $(LDFLAGS) $(EXTRA_LIBS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
  106257. + $(filter-out $(LDFLAGS-OMIT-$<),$(LDFLAGS)) $(EXTRA_LIBS) \
  106258. + $(LDFLAGS_$(patsubst %_glibc,%,$@))
  106259. clean:
  106260. $(showclean)
  106261. diff -Nur uClibc-0.9.33.2/test/test-skeleton.c uClibc/test/test-skeleton.c
  106262. --- uClibc-0.9.33.2/test/test-skeleton.c 2012-05-15 09:20:09.000000000 +0200
  106263. +++ uClibc/test/test-skeleton.c 2014-02-03 12:32:57.000000000 +0100
  106264. @@ -14,9 +14,8 @@
  106265. Lesser General Public License for more details.
  106266. You should have received a copy of the GNU Lesser General Public
  106267. - License along with the GNU C Library; if not, write to the Free
  106268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106269. - 02111-1307 USA. */
  106270. + License along with the GNU C Library; if not, see
  106271. + <http://www.gnu.org/licenses/>. */
  106272. #include <errno.h>
  106273. #include <getopt.h>
  106274. @@ -104,7 +103,7 @@
  106275. create_temp_file (const char *base, char **filename)
  106276. {
  106277. char *fname;
  106278. - int fd;
  106279. + int _fd;
  106280. fname = (char *) malloc (strlen (test_dir) + 1 + strlen (base)
  106281. + sizeof ("XXXXXX"));
  106282. @@ -115,8 +114,8 @@
  106283. }
  106284. strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX");
  106285. - fd = mkstemp (fname);
  106286. - if (fd == -1)
  106287. + _fd = mkstemp (fname);
  106288. + if (_fd == -1)
  106289. {
  106290. printf ("cannot open temporary file '%s': %s\n", fname, strerror(errno));
  106291. free (fname);
  106292. @@ -127,13 +126,13 @@
  106293. if (filename != NULL)
  106294. *filename = fname;
  106295. - return fd;
  106296. + return _fd;
  106297. }
  106298. /* Timeout handler. We kill the child and exit with an error. */
  106299. static void
  106300. __attribute__ ((noreturn))
  106301. -timeout_handler (int sig __attribute__ ((unused)))
  106302. +signal_handler (int sig __attribute__ ((unused)))
  106303. {
  106304. int killed = 0;
  106305. int status;
  106306. @@ -168,6 +167,12 @@
  106307. CLEANUP_HANDLER;
  106308. #endif
  106309. + if (sig == SIGINT)
  106310. + {
  106311. + signal (sig, SIG_DFL);
  106312. + raise (sig);
  106313. + }
  106314. +
  106315. /* If we expected this signal: good! */
  106316. #ifdef EXPECTED_SIGNAL
  106317. if (EXPECTED_SIGNAL == SIGALRM)
  106318. @@ -190,6 +195,7 @@
  106319. exit (1);
  106320. }
  106321. +#ifdef __XXX_HANDLE_CTRL_C
  106322. static void
  106323. __attribute__ ((noreturn))
  106324. handler_killpid(int sig)
  106325. @@ -199,6 +205,7 @@
  106326. raise(sig); /* kill ourself */
  106327. _exit(128 + sig); /* paranoia */
  106328. }
  106329. +#endif
  106330. /* We provide the entry point here. */
  106331. int
  106332. @@ -345,18 +352,23 @@
  106333. exit (1);
  106334. }
  106335. +#ifdef __XXX_HANDLE_CTRL_C
  106336. signal (SIGTERM, handler_killpid);
  106337. signal (SIGINT, handler_killpid);
  106338. signal (SIGQUIT, handler_killpid);
  106339. +#endif
  106340. /* Set timeout. */
  106341. #ifndef TIMEOUT
  106342. /* Default timeout is two seconds. */
  106343. # define TIMEOUT 2
  106344. #endif
  106345. - signal (SIGALRM, timeout_handler);
  106346. + signal (SIGALRM, signal_handler);
  106347. alarm (TIMEOUT * timeoutfactor);
  106348. + /* Make sure we clean up if the wrapper gets interrupted. */
  106349. + signal (SIGINT, signal_handler);
  106350. +
  106351. /* Wait for the regular termination. */
  106352. termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
  106353. if (termpid == -1)
  106354. diff -Nur uClibc-0.9.33.2/test/testsuite.h uClibc/test/testsuite.h
  106355. --- uClibc-0.9.33.2/test/testsuite.h 2012-05-15 09:20:09.000000000 +0200
  106356. +++ uClibc/test/testsuite.h 2014-02-03 12:32:57.000000000 +0100
  106357. @@ -27,11 +27,12 @@
  106358. {
  106359. failures++;
  106360. - printf("\nFAILED TEST %lu: \n\t%s\n", (unsigned long)test_number, command);
  106361. + printf("\nFAILED TEST %lu: \n\t%s\nResult: %d",
  106362. + (unsigned long)test_number, command, result);
  106363. printf("AT LINE: %d, FILE: %s\n\n", line, file);
  106364. }
  106365. -void success_msg(int result, const char* command)
  106366. +void success_msg(int result __attribute__((unused)), const char* command __attribute__((unused)))
  106367. {
  106368. #if 0
  106369. printf("passed test: %s == 0\n", command);
  106370. diff -Nur uClibc-0.9.33.2/test/time/Makefile uClibc/test/time/Makefile
  106371. --- uClibc-0.9.33.2/test/time/Makefile 2012-05-15 09:20:09.000000000 +0200
  106372. +++ uClibc/test/time/Makefile 2014-02-03 12:32:57.000000000 +0100
  106373. @@ -2,6 +2,7 @@
  106374. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106375. top_builddir=../../
  106376. +top_srcdir=../../
  106377. include ../Rules.mak
  106378. -include Makefile.in
  106379. include ../Test.mak
  106380. diff -Nur uClibc-0.9.33.2/test/time/test_time.c uClibc/test/time/test_time.c
  106381. --- uClibc-0.9.33.2/test/time/test_time.c 2012-05-15 09:20:09.000000000 +0200
  106382. +++ uClibc/test/time/test_time.c 2014-02-03 12:32:57.000000000 +0100
  106383. @@ -12,9 +12,8 @@
  106384. Lesser General Public License for more details.
  106385. You should have received a copy of the GNU Lesser General Public
  106386. - License along with the GNU C Library; if not, write to the Free
  106387. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106388. - 02111-1307 USA. */
  106389. + License along with the GNU C Library; if not, see
  106390. + <http://www.gnu.org/licenses/>. */
  106391. #include <stdio.h>
  106392. #include <stdlib.h>
  106393. diff -Nur uClibc-0.9.33.2/test/time/tst-strptime.c uClibc/test/time/tst-strptime.c
  106394. --- uClibc-0.9.33.2/test/time/tst-strptime.c 2012-05-15 09:20:09.000000000 +0200
  106395. +++ uClibc/test/time/tst-strptime.c 2014-02-03 12:32:57.000000000 +0100
  106396. @@ -14,9 +14,8 @@
  106397. Lesser General Public License for more details.
  106398. You should have received a copy of the GNU Lesser General Public
  106399. - License along with the GNU C Library; if not, write to the Free
  106400. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106401. - 02111-1307 USA. */
  106402. + License along with the GNU C Library; if not, see
  106403. + <http://www.gnu.org/licenses/>. */
  106404. #include <locale.h>
  106405. #include <stdio.h>
  106406. diff -Nur uClibc-0.9.33.2/test/time/tst-timerfd.c uClibc/test/time/tst-timerfd.c
  106407. --- uClibc-0.9.33.2/test/time/tst-timerfd.c 1970-01-01 01:00:00.000000000 +0100
  106408. +++ uClibc/test/time/tst-timerfd.c 2014-02-03 12:32:57.000000000 +0100
  106409. @@ -0,0 +1,71 @@
  106410. +/* vi: set sw=4 ts=4 sts=4: */
  106411. +/*
  106412. + * timerfd test for uClibc
  106413. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  106414. + *
  106415. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106416. + */
  106417. +
  106418. +#include <stdio.h>
  106419. +#include <stdlib.h>
  106420. +#include <string.h>
  106421. +#include <unistd.h>
  106422. +#include <errno.h>
  106423. +#include <error.h>
  106424. +#include <signal.h>
  106425. +#include <stdint.h>
  106426. +#include <inttypes.h>
  106427. +#include <time.h>
  106428. +#include <sys/timerfd.h>
  106429. +#include <sys/fcntl.h>
  106430. +
  106431. +static int
  106432. +do_test(void)
  106433. +{
  106434. + int fd, ret, result = 0;
  106435. + struct itimerspec s;
  106436. + uint64_t val;
  106437. + time_t start, now;
  106438. +
  106439. + fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK);
  106440. + if (fd < 0) {
  106441. + perror("timerfd() failed");
  106442. + result = 1;
  106443. + }
  106444. + s.it_value.tv_sec = 1;
  106445. + s.it_value.tv_nsec = 0;
  106446. + s.it_interval.tv_sec = 0;
  106447. + s.it_interval.tv_nsec = 0;
  106448. + timerfd_settime(fd, 0, &s, NULL);
  106449. + start = time(NULL);
  106450. +
  106451. + /* this should return immediately with EAGAIN due to TFD_NONBLOCK */
  106452. + ret = read(fd, &val, sizeof(val));
  106453. + if (ret != -1 || errno != EAGAIN) {
  106454. + error(0, 0, "first read() returned %d", ret);
  106455. + result = 1;
  106456. + }
  106457. +
  106458. + /* let the timer expire, then check it again */
  106459. + do {
  106460. + now = time(NULL);
  106461. + } while (now - start < 2);
  106462. +
  106463. + ret = read(fd, &val, sizeof(val));
  106464. + if (ret != sizeof(val)) {
  106465. + error(0, 0, "second read() returned %d", ret);
  106466. + result = 1;
  106467. + }
  106468. +
  106469. + /* we are expecting a single expiration, since it_interval is 0 */
  106470. + if (val != 1) {
  106471. + error(0, 0, "wrong number of expirations: %" PRIx64, val);
  106472. + result = 1;
  106473. + }
  106474. +
  106475. + return result;
  106476. +}
  106477. +
  106478. +#define TIMEOUT 5
  106479. +#define TEST_FUNCTION do_test ()
  106480. +#include "../test-skeleton.c"
  106481. diff -Nur uClibc-0.9.33.2/test/time/tst-timezone.c uClibc/test/time/tst-timezone.c
  106482. --- uClibc-0.9.33.2/test/time/tst-timezone.c 2012-05-15 09:20:09.000000000 +0200
  106483. +++ uClibc/test/time/tst-timezone.c 2014-02-03 12:32:57.000000000 +0100
  106484. @@ -13,9 +13,8 @@
  106485. Lesser General Public License for more details.
  106486. You should have received a copy of the GNU Lesser General Public
  106487. - License along with the GNU C Library; if not, write to the Free
  106488. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106489. - 02111-1307 USA. */
  106490. + License along with the GNU C Library; if not, see
  106491. + <http://www.gnu.org/licenses/>. */
  106492. #include <time.h>
  106493. #include <stdio.h>
  106494. diff -Nur uClibc-0.9.33.2/test/tls/Makefile.in uClibc/test/tls/Makefile.in
  106495. --- uClibc-0.9.33.2/test/tls/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  106496. +++ uClibc/test/tls/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  106497. @@ -102,9 +102,9 @@
  106498. LDFLAGS_tst-tls7 := -ldl
  106499. LDFLAGS_tst-tls8 := -ldl
  106500. LDFLAGS_tst-tls9 := -ldl
  106501. -LDFLAGS_tst-tls10 := -Wl,-rpath-link=. tst-tlsmod8.so
  106502. -LDFLAGS_tst-tls11 := -Wl,-rpath-link=. tst-tlsmod10.so
  106503. -LDFLAGS_tst-tls12 := -Wl,-rpath-link=. tst-tlsmod12.so
  106504. +LDFLAGS_tst-tls10 := -Wl,-rpath-link=. tst-tlsmod8.so tst-tlsmod7.so
  106505. +LDFLAGS_tst-tls11 := -Wl,-rpath-link=. tst-tlsmod9.so tst-tlsmod10.so
  106506. +LDFLAGS_tst-tls12 := -Wl,-rpath-link=. tst-tlsmod11.so tst-tlsmod12.so
  106507. LDFLAGS_tst-tls13 := -ldl -Wl,-rpath-link=.
  106508. LDFLAGS_tst-tls14 := -ldl -Wl,-rpath-link=. tst-tlsmod14a.so
  106509. LDFLAGS_tst-tls15 := -ldl -Wl,-rpath-link=.
  106510. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls6.c uClibc/test/tls/tst-tls6.c
  106511. --- uClibc-0.9.33.2/test/tls/tst-tls6.c 2012-05-15 09:20:09.000000000 +0200
  106512. +++ uClibc/test/tls/tst-tls6.c 2014-02-15 14:18:15.000000000 +0100
  106513. @@ -38,13 +38,12 @@
  106514. time. The value of the first round is used. */
  106515. #ifdef __UCLIBC__
  106516. if (modid == -1)
  106517. - modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
  106518. - else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
  106519. - != (size_t) modid)
  106520. + modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
  106521. + else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
  106522. {
  106523. printf ("round %d: modid now %zu, initially %d\n",
  106524. i,
  106525. - ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
  106526. + ((struct dyn_elf *)h)->dyn->l_tls_modid,
  106527. modid);
  106528. result = 1;
  106529. }
  106530. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls7.c uClibc/test/tls/tst-tls7.c
  106531. --- uClibc-0.9.33.2/test/tls/tst-tls7.c 2012-05-15 09:20:09.000000000 +0200
  106532. +++ uClibc/test/tls/tst-tls7.c 2014-02-15 14:18:15.000000000 +0100
  106533. @@ -36,13 +36,12 @@
  106534. time. The value of the first round is used. */
  106535. #ifdef __UCLIBC__
  106536. if (modid == -1)
  106537. - modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
  106538. - else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
  106539. - != (size_t) modid)
  106540. + modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
  106541. + else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
  106542. {
  106543. printf ("round %d: modid now %zu, initially %d\n",
  106544. i,
  106545. - ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
  106546. + ((struct dyn_elf *)h)->dyn->l_tls_modid,
  106547. modid);
  106548. result = 1;
  106549. }
  106550. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls8.c uClibc/test/tls/tst-tls8.c
  106551. --- uClibc-0.9.33.2/test/tls/tst-tls8.c 2012-05-15 09:20:09.000000000 +0200
  106552. +++ uClibc/test/tls/tst-tls8.c 2014-02-15 14:18:15.000000000 +0100
  106553. @@ -41,13 +41,12 @@
  106554. time. The value of the first round is used. */
  106555. #ifdef __UCLIBC__
  106556. if (modid1 == (size_t) -1)
  106557. - modid1 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
  106558. - else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  106559. - != (size_t) modid1)
  106560. + modid1 = ((struct dyn_elf *) h1)->dyn->l_tls_modid;
  106561. + else if (((struct dyn_elf *)h1)->dyn->l_tls_modid != (size_t) modid1)
  106562. {
  106563. printf ("round %d: modid now %zd, initially %zd\n",
  106564. i,
  106565. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  106566. + ((struct dyn_elf *)h1)->dyn->l_tls_modid,
  106567. modid1);
  106568. result = 1;
  106569. }
  106570. @@ -85,23 +84,23 @@
  106571. time. The value of the first round is used. */
  106572. #ifdef __UCLIBC__
  106573. if (modid2 == (size_t) -1)
  106574. - modid2 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
  106575. - else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  106576. + modid2 = ((struct dyn_elf *)h2)->dyn->l_tls_modid;
  106577. + else if (((struct dyn_elf *)h2)->dyn->l_tls_modid
  106578. != (size_t) modid2)
  106579. {
  106580. printf ("round %d: modid now %zd, initially %zd\n",
  106581. i,
  106582. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  106583. + ((struct dyn_elf *)h2)->dyn->l_tls_modid,
  106584. modid2);
  106585. result = 1;
  106586. }
  106587. #else
  106588. if (modid2 == (size_t) -1)
  106589. - modid2 = ((struct link_map *) h1)->l_tls_modid;
  106590. - else if (((struct link_map *) h1)->l_tls_modid != modid2)
  106591. + modid2 = ((struct link_map *) h2)->l_tls_modid;
  106592. + else if (((struct link_map *) h2)->l_tls_modid != modid2)
  106593. {
  106594. printf ("round %d: modid now %zd, initially %zd\n",
  106595. - i, ((struct link_map *) h1)->l_tls_modid, modid2);
  106596. + i, ((struct link_map *) h2)->l_tls_modid, modid2);
  106597. result = 1;
  106598. }
  106599. #endif
  106600. @@ -139,12 +138,12 @@
  106601. We make sure that the module gets assigned the same ID every
  106602. time. The value of the first round is used. */
  106603. #ifdef __UCLIBC__
  106604. - if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  106605. + if (((struct dyn_elf *)h1)->dyn->l_tls_modid
  106606. != modid1)
  106607. {
  106608. printf ("round %d: modid now %zd, initially %zd\n",
  106609. i,
  106610. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  106611. + ((struct dyn_elf *)h1)->dyn->l_tls_modid,
  106612. modid1);
  106613. result = 1;
  106614. }
  106615. @@ -179,20 +178,20 @@
  106616. We make sure that the module gets assigned the same ID every
  106617. time. The value of the first round is used. */
  106618. #ifdef __UCLIBC__
  106619. - if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  106620. + if (((struct dyn_elf *)h2)->dyn->l_tls_modid
  106621. != modid2)
  106622. {
  106623. printf ("round %d: modid now %zd, initially %zd\n",
  106624. i,
  106625. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  106626. + ((struct dyn_elf *)h2)->dyn->l_tls_modid,
  106627. modid2);
  106628. result = 1;
  106629. }
  106630. #else
  106631. - if (((struct link_map *) h1)->l_tls_modid != modid2)
  106632. + if (((struct link_map *) h2)->l_tls_modid != modid2)
  106633. {
  106634. printf ("round %d: modid now %zd, initially %zd\n",
  106635. - i, ((struct link_map *) h1)->l_tls_modid, modid2);
  106636. + i, ((struct link_map *) h2)->l_tls_modid, modid2);
  106637. result = 1;
  106638. }
  106639. #endif
  106640. diff -Nur uClibc-0.9.33.2/test/unistd/Makefile uClibc/test/unistd/Makefile
  106641. --- uClibc-0.9.33.2/test/unistd/Makefile 2012-05-15 09:20:09.000000000 +0200
  106642. +++ uClibc/test/unistd/Makefile 2014-02-03 12:32:57.000000000 +0100
  106643. @@ -2,6 +2,7 @@
  106644. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106645. top_builddir=../../
  106646. +top_srcdir=../../
  106647. include ../Rules.mak
  106648. -include Makefile.in
  106649. include ../Test.mak
  106650. diff -Nur uClibc-0.9.33.2/test/unistd/Makefile.in uClibc/test/unistd/Makefile.in
  106651. --- uClibc-0.9.33.2/test/unistd/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  106652. +++ uClibc/test/unistd/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  106653. @@ -2,7 +2,10 @@
  106654. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  106655. ifeq ($(UCLIBC_HAS_LFS),)
  106656. -TESTS_DISABLED := tst-preadwrite64
  106657. +TESTS_DISABLED := tst-preadwrite64 tst-posix_fallocate64
  106658. +endif
  106659. +ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),)
  106660. +TESTS_DISABLED += tst-posix_fallocate
  106661. endif
  106662. OPTS_getopt := -abcXXX -9
  106663. OPTS_getopt_long := --add XXX --delete YYY --verbose
  106664. diff -Nur uClibc-0.9.33.2/test/unistd/tst-posix_fallocate64.c uClibc/test/unistd/tst-posix_fallocate64.c
  106665. --- uClibc-0.9.33.2/test/unistd/tst-posix_fallocate64.c 1970-01-01 01:00:00.000000000 +0100
  106666. +++ uClibc/test/unistd/tst-posix_fallocate64.c 2014-02-03 12:32:57.000000000 +0100
  106667. @@ -0,0 +1,2 @@
  106668. +#define TST_POSIX_FALLOCATE64
  106669. +#include "tst-posix_fallocate.c"
  106670. diff -Nur uClibc-0.9.33.2/test/unistd/tst-posix_fallocate.c uClibc/test/unistd/tst-posix_fallocate.c
  106671. --- uClibc-0.9.33.2/test/unistd/tst-posix_fallocate.c 1970-01-01 01:00:00.000000000 +0100
  106672. +++ uClibc/test/unistd/tst-posix_fallocate.c 2014-02-03 12:32:57.000000000 +0100
  106673. @@ -0,0 +1,127 @@
  106674. +#include <fcntl.h>
  106675. +#include <sys/stat.h>
  106676. +
  106677. +#ifndef TST_POSIX_FALLOCATE64
  106678. +# define stat64 stat
  106679. +# define fstat64 fstat
  106680. +# else
  106681. +# ifndef O_LARGEFILE
  106682. +# error no O_LARGEFILE but you want to test with LFS enabled
  106683. +# endif
  106684. +#endif
  106685. +
  106686. +static void do_prepare (void);
  106687. +#define PREPARE(argc, argv) do_prepare ()
  106688. +static int do_test (void);
  106689. +#define TEST_FUNCTION do_test ()
  106690. +#include <test-skeleton.c>
  106691. +
  106692. +static int fd;
  106693. +static void
  106694. +do_prepare (void)
  106695. +{
  106696. + fd = create_temp_file ("tst-posix_fallocate.", NULL);
  106697. + if (fd == -1)
  106698. + {
  106699. + printf ("cannot create temporary file: %m\n");
  106700. + exit (1);
  106701. + }
  106702. +}
  106703. +
  106704. +
  106705. +static int
  106706. +do_test (void)
  106707. +{
  106708. + struct stat64 st;
  106709. +
  106710. + if (fstat64 (fd, &st) != 0)
  106711. + {
  106712. + puts ("1st fstat failed");
  106713. + return 1;
  106714. + }
  106715. +
  106716. + if (st.st_size != 0)
  106717. + {
  106718. + puts ("file not created with size 0");
  106719. + return 1;
  106720. + }
  106721. +
  106722. + if (posix_fallocate (fd, 512, 768) != 0)
  106723. + {
  106724. + puts ("1st posix_fallocate call failed");
  106725. + return 1;
  106726. + }
  106727. +
  106728. + if (fstat64 (fd, &st) != 0)
  106729. + {
  106730. + puts ("2nd fstat failed");
  106731. + return 1;
  106732. + }
  106733. +
  106734. + if (st.st_size != 512 + 768)
  106735. + {
  106736. + printf ("file size after 1st posix_fallocate call is %llu, expected %u\n",
  106737. + (unsigned long long int) st.st_size, 512u + 768u);
  106738. + return 1;
  106739. + }
  106740. +
  106741. + if (posix_fallocate (fd, 0, 1024) != 0)
  106742. + {
  106743. + puts ("2nd posix_fallocate call failed");
  106744. + return 1;
  106745. + }
  106746. +
  106747. + if (fstat64 (fd, &st) != 0)
  106748. + {
  106749. + puts ("3rd fstat failed");
  106750. + return 1;
  106751. + }
  106752. +
  106753. + if (st.st_size != 512 + 768)
  106754. + {
  106755. + puts ("file size changed in 2nd posix_fallocate");
  106756. + return 1;
  106757. + }
  106758. +
  106759. + if (posix_fallocate (fd, 2048, 64) != 0)
  106760. + {
  106761. + puts ("3rd posix_fallocate call failed");
  106762. + return 1;
  106763. + }
  106764. +
  106765. + if (fstat64 (fd, &st) != 0)
  106766. + {
  106767. + puts ("4th fstat failed");
  106768. + return 1;
  106769. + }
  106770. +
  106771. + if (st.st_size != 2048 + 64)
  106772. + {
  106773. + printf ("file size after 3rd posix_fallocate call is %llu, expected %u\n",
  106774. + (unsigned long long int) st.st_size, 2048u + 64u);
  106775. + return 1;
  106776. + }
  106777. +#ifdef TST_POSIX_FALLOCATE64
  106778. + if (posix_fallocate64 (fd, 4097ULL, 4294967295ULL + 2ULL) != 0)
  106779. + {
  106780. + puts ("4th posix_fallocate call failed");
  106781. + return 1;
  106782. + }
  106783. +
  106784. + if (fstat64 (fd, &st) != 0)
  106785. + {
  106786. + puts ("5th fstat failed");
  106787. + return 1;
  106788. + }
  106789. +
  106790. + if (st.st_size != 4097ULL + 4294967295ULL + 2ULL)
  106791. + {
  106792. + printf ("file size after 4th posix_fallocate call is %llu, expected %llu\n",
  106793. + (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL);
  106794. + return 1;
  106795. + }
  106796. +#endif
  106797. + close (fd);
  106798. +
  106799. + return 0;
  106800. +}
  106801. diff -Nur uClibc-0.9.33.2/test/unistd/tst-preadwrite64.c uClibc/test/unistd/tst-preadwrite64.c
  106802. --- uClibc-0.9.33.2/test/unistd/tst-preadwrite64.c 2012-05-15 09:20:09.000000000 +0200
  106803. +++ uClibc/test/unistd/tst-preadwrite64.c 2014-02-03 12:32:57.000000000 +0100
  106804. @@ -14,9 +14,8 @@
  106805. Lesser General Public License for more details.
  106806. You should have received a copy of the GNU Lesser General Public
  106807. - License along with the GNU C Library; if not, write to the Free
  106808. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106809. - 02111-1307 USA. */
  106810. + License along with the GNU C Library; if not, see
  106811. + <http://www.gnu.org/licenses/>. */
  106812. #define PREAD pread64
  106813. #define PWRITE pwrite64
  106814. diff -Nur uClibc-0.9.33.2/test/unistd/tst-preadwrite.c uClibc/test/unistd/tst-preadwrite.c
  106815. --- uClibc-0.9.33.2/test/unistd/tst-preadwrite.c 2012-05-15 09:20:09.000000000 +0200
  106816. +++ uClibc/test/unistd/tst-preadwrite.c 2014-02-03 12:32:57.000000000 +0100
  106817. @@ -14,9 +14,8 @@
  106818. Lesser General Public License for more details.
  106819. You should have received a copy of the GNU Lesser General Public
  106820. - License along with the GNU C Library; if not, write to the Free
  106821. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106822. - 02111-1307 USA. */
  106823. + License along with the GNU C Library; if not, see
  106824. + <http://www.gnu.org/licenses/>. */
  106825. #include <errno.h>
  106826. #include <error.h>
  106827. diff -Nur uClibc-0.9.33.2/TODO uClibc/TODO
  106828. --- uClibc-0.9.33.2/TODO 2012-05-15 09:20:09.000000000 +0200
  106829. +++ uClibc/TODO 2014-02-03 12:32:56.000000000 +0100
  106830. @@ -88,6 +88,11 @@
  106831. *) Cleanup/scrub all the Makefile copyright junk
  106832. *) Fix dlopen, for both static and dynamic cases, and make it
  106833. fully comply with SuSv3
  106834. + *) check if sched_getcpu is only pulled in where it should be
  106835. + *) remove HANDLE_OLDER_RLIMIT, NEW_GETRLIMIT (conditionalize on
  106836. + ugetrlimit, it seems, else use the modern variant)
  106837. + *) simplify exec*() in the light of execvpe (perhaps single internal
  106838. + impl); USE_GNU for execvpe (and other GNU extensions, see psm).
  106839. TODO list for AFTER the uClibc 1.0.0 release:
  106840. @@ -180,3 +185,4 @@
  106841. b) Write a space-efficient gettext substitute, to avoid storing large amounts
  106842. of redundant data.
  106843. +
  106844. diff -Nur uClibc-0.9.33.2/utils/chroot_realpath.c uClibc/utils/chroot_realpath.c
  106845. --- uClibc-0.9.33.2/utils/chroot_realpath.c 2012-05-15 09:20:09.000000000 +0200
  106846. +++ uClibc/utils/chroot_realpath.c 2014-02-03 12:32:57.000000000 +0100
  106847. @@ -14,8 +14,7 @@
  106848. *
  106849. * You should have received a copy of the GNU Lesser General Public
  106850. * License along with this library; see the file COPYING.LIB. If not,
  106851. - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  106852. - * Boston, MA 02111-1307, USA.
  106853. + * see <http://www.gnu.org/licenses/>.
  106854. *
  106855. * 2005/09/12: Dan Howell (modified from realpath.c to emulate chroot)
  106856. */
  106857. diff -Nur uClibc-0.9.33.2/utils/getconf.c uClibc/utils/getconf.c
  106858. --- uClibc-0.9.33.2/utils/getconf.c 2012-05-15 09:20:09.000000000 +0200
  106859. +++ uClibc/utils/getconf.c 2014-02-03 12:32:57.000000000 +0100
  106860. @@ -12,10 +12,10 @@
  106861. GNU General Public License for more details.
  106862. You should have received a copy of the GNU General Public License
  106863. - along with this program; if not, write to the Free Software Foundation,
  106864. - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  106865. + along with this program; if not, see <http://www.gnu.org/licenses/>. */
  106866. #define _GNU_SOURCE 1
  106867. +#include "porting.h"
  106868. #include <unistd.h>
  106869. #include <errno.h>
  106870. #include <string.h>
  106871. @@ -1052,13 +1052,11 @@
  106872. };
  106873. static const int nspecs = sizeof (specs) / sizeof (specs[0]);
  106874. -#ifdef __UCLIBC_HAS___PROGNAME__
  106875. -extern const char *__progname;
  106876. -#else
  106877. -#define __progname "foo"
  106878. +#ifndef __UCLIBC_HAS___PROGNAME__
  106879. +static const char *__progname = "getconf";
  106880. #endif
  106881. -static void
  106882. +static attribute_noreturn void
  106883. usage (void)
  106884. {
  106885. fprintf (stderr,
  106886. @@ -1070,7 +1068,7 @@
  106887. }
  106888. -static void
  106889. +static attribute_noreturn void
  106890. print_all (const char *path)
  106891. {
  106892. register const struct conf *c;
  106893. diff -Nur uClibc-0.9.33.2/utils/iconv.c uClibc/utils/iconv.c
  106894. --- uClibc-0.9.33.2/utils/iconv.c 2012-05-15 09:20:09.000000000 +0200
  106895. +++ uClibc/utils/iconv.c 2014-02-03 12:32:57.000000000 +0100
  106896. @@ -12,8 +12,8 @@
  106897. * Library General Public License for more details.
  106898. *
  106899. * You should have received a copy of the GNU Library General Public
  106900. - * License along with this library; if not, write to the Free
  106901. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  106902. + * License along with this library; if not, see
  106903. + * <http://www.gnu.org/licenses/>.
  106904. */
  106905. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  106906. @@ -98,15 +98,22 @@
  106907. * Manuel
  106908. */
  106909. +/* keep libgen before string.h - and porting.h to use the
  106910. + * XPG version of basename */
  106911. +#include <libgen.h>
  106912. #include "porting.h"
  106913. #include <string.h>
  106914. #include <iconv.h>
  106915. #include <stdarg.h>
  106916. -#include <libgen.h>
  106917. #include <wchar.h>
  106918. #include "wchar.c" /* for _UC_iconv_t and __iconv_codesets */
  106919. -extern const unsigned char __iconv_codesets[];
  106920. +#ifdef L_iconv_main
  106921. +static
  106922. +#else
  106923. +extern
  106924. +#endif
  106925. +const unsigned char __iconv_codesets[];
  106926. #define IBUF BUFSIZ
  106927. #define OBUF BUFSIZ
  106928. diff -Nur uClibc-0.9.33.2/utils/ldconfig.c uClibc/utils/ldconfig.c
  106929. --- uClibc-0.9.33.2/utils/ldconfig.c 2012-05-15 09:20:09.000000000 +0200
  106930. +++ uClibc/utils/ldconfig.c 2014-02-03 12:32:57.000000000 +0100
  106931. @@ -57,8 +57,6 @@
  106932. /* Code indicating core file. */
  106933. #define CMAGIC 0421
  106934. -char *___strtok = NULL;
  106935. -
  106936. char *prog = NULL;
  106937. int debug = 0; /* debug mode */
  106938. int verbose = 0; /* verbose mode */
  106939. @@ -96,6 +94,7 @@
  106940. extern char *chroot_realpath(const char *chroot, const char *path,
  106941. char resolved_path[]);
  106942. +#if defined __UCLIBC_STATIC_LDCONFIG__ || !defined __UCLIBC_HAS_BSD_ERR__
  106943. /* These two are used internally -- you shouldn't need to use them */
  106944. static void verror_msg(const char *s, va_list p)
  106945. {
  106946. @@ -114,8 +113,7 @@
  106947. fprintf(stderr, "\n");
  106948. }
  106949. -static void err(int errnum, const char *s, ...) attribute_noreturn;
  106950. -static void err(int errnum, const char *s, ...)
  106951. +static attribute_noreturn void err(int errnum, const char *s, ...)
  106952. {
  106953. va_list p;
  106954. @@ -146,6 +144,9 @@
  106955. vperror_msg(s, p);
  106956. va_end(p);
  106957. }
  106958. +#else
  106959. +# include <err.h>
  106960. +#endif
  106961. static void *xmalloc(size_t size)
  106962. {
  106963. @@ -257,10 +258,10 @@
  106964. && N_MAGIC_SWAP(exec) != QMAGIC) {
  106965. elf_hdr = (ElfW(Ehdr) *) & exec;
  106966. if (elf_hdr->e_ident[0] != 0x7f ||
  106967. - strncmp((char *)elf_hdr->e_ident + 1, "ELF", 3) != 0)
  106968. + strncmp((const char *)elf_hdr->e_ident + 1, "ELF", 3) != 0)
  106969. {
  106970. /* silently ignore linker scripts */
  106971. - if (strncmp((char *)&exec, "/* GNU ld", 9) != 0)
  106972. + if (strncmp((const char *)&exec, "/* GNU ld", 9) != 0)
  106973. warnx("%s is not a shared library, skipping", buff);
  106974. } else {
  106975. /* always call readsoname to update type */
  106976. @@ -282,7 +283,7 @@
  106977. /* if the soname does not match the filename,
  106978. issue a warning, but only in debug mode. */
  106979. int len = strlen(good);
  106980. - if (debug && (strncmp(good, name, len) != 0
  106981. + if (debug && (strncmp((const char *)good, name, len) != 0
  106982. || (name[len] != '\0' && name[len] != '.')))
  106983. warnx("%s has inconsistent soname (%s)", buff, good);
  106984. }
  106985. @@ -784,8 +785,7 @@
  106986. }
  106987. #endif
  106988. -static void usage(void) attribute_noreturn;
  106989. -static void usage(void)
  106990. +static attribute_noreturn void usage(void)
  106991. {
  106992. fprintf(stderr,
  106993. #ifdef __LDSO_CACHE_SUPPORT__
  106994. diff -Nur uClibc-0.9.33.2/utils/ldd.c uClibc/utils/ldd.c
  106995. --- uClibc-0.9.33.2/utils/ldd.c 2012-05-15 09:20:09.000000000 +0200
  106996. +++ uClibc/utils/ldd.c 2014-02-03 12:32:57.000000000 +0100
  106997. @@ -20,6 +20,11 @@
  106998. #define ELFCLASSM ELFCLASS64
  106999. #endif
  107000. +#if defined(__arc__)
  107001. +#define MATCH_MACHINE(x) (x == EM_ARCOMPACT)
  107002. +#define ELFCLASSM ELFCLASS32
  107003. +#endif
  107004. +
  107005. #if defined(__arm__) || defined(__thumb__)
  107006. #define MATCH_MACHINE(x) (x == EM_ARM)
  107007. #define ELFCLASSM ELFCLASS32
  107008. @@ -63,6 +68,11 @@
  107009. #define ELFCLASSM ELFCLASS32
  107010. #endif
  107011. +#if defined(__metag__)
  107012. +#define MATCH_MACHINE(x) (x == EM_METAG)
  107013. +#define ELFCLASSM ELFCLASS32
  107014. +#endif
  107015. +
  107016. #if defined(__mips__)
  107017. #define MATCH_MACHINE(x) (x == EM_MIPS || x == EM_MIPS_RS3_LE)
  107018. #define ELFCLASSM ELFCLASS32
  107019. @@ -106,6 +116,11 @@
  107020. #define ELFCLASSM ELFCLASS32
  107021. #endif
  107022. +#if defined(__xtensa__)
  107023. +#define MATCH_MACHINE(x) (x == EM_XTENSA)
  107024. +#define ELFCLASSM ELFCLASS32
  107025. +#endif
  107026. +
  107027. #ifndef MATCH_MACHINE
  107028. # ifdef __linux__
  107029. # include <asm/elf.h>
  107030. @@ -127,7 +142,6 @@
  107031. #define ELFDATAM ELFDATA2MSB
  107032. #endif
  107033. -#define ARRAY_SIZE(v) (sizeof(v) / sizeof(*v))
  107034. #define TRUSTED_LDSO UCLIBC_RUNTIME_PREFIX "lib/" UCLIBC_LDSO
  107035. struct library {
  107036. @@ -145,7 +159,7 @@
  107037. static __inline__ uint32_t byteswap32_to_host(uint32_t value)
  107038. {
  107039. - if (byteswap == 1) {
  107040. + if (byteswap) {
  107041. return (bswap_32(value));
  107042. } else {
  107043. return (value);
  107044. @@ -153,7 +167,7 @@
  107045. }
  107046. static __inline__ uint64_t byteswap64_to_host(uint64_t value)
  107047. {
  107048. - if (byteswap == 1) {
  107049. + if (byteswap) {
  107050. return (bswap_64(value));
  107051. } else {
  107052. return (value);
  107053. @@ -232,14 +246,7 @@
  107054. }
  107055. /* Check if the target endianness matches the host's endianness */
  107056. - byteswap = 0;
  107057. - if (UCLIBC_ENDIAN_HOST == UCLIBC_ENDIAN_LITTLE) {
  107058. - if (ehdr->e_ident[5] == ELFDATA2MSB)
  107059. - byteswap = 1;
  107060. - } else if (UCLIBC_ENDIAN_HOST == UCLIBC_ENDIAN_BIG) {
  107061. - if (ehdr->e_ident[5] == ELFDATA2LSB)
  107062. - byteswap = 1;
  107063. - }
  107064. + byteswap = !(ehdr->e_ident[5] == ELFDATAM);
  107065. /* Be very lazy, and only byteswap the stuff we use */
  107066. if (byteswap) {
  107067. @@ -707,6 +714,7 @@
  107068. };
  107069. # ifdef __LDSO_STANDALONE_SUPPORT__
  107070. char * lib_path = getenv("LD_LIBRARY_PATH");
  107071. +
  107072. /* The 'extended' environment inclusing the LD_LIBRARY_PATH */
  107073. static char *ext_environment[ARRAY_SIZE(environment) + 1];
  107074. char **envp = (char **) environment;
  107075. diff -Nur uClibc-0.9.33.2/utils/Makefile.in uClibc/utils/Makefile.in
  107076. --- uClibc-0.9.33.2/utils/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  107077. +++ uClibc/utils/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  107078. @@ -10,6 +10,7 @@
  107079. CFLAGS-utils := \
  107080. $(SSP_ALL_CFLAGS) \
  107081. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  107082. -I$(top_srcdir)ldso/include \
  107083. -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
  107084. -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" \
  107085. @@ -36,8 +37,7 @@
  107086. # Need CFLAGS-utils explicitly, because the source file is not located in utils
  107087. CFLAGS-iconv := $(CFLAGS-utils) \
  107088. $(CFLAGS-utils-shared) \
  107089. - -I$(top_srcdir)libc/misc/wchar \
  107090. - -DL_iconv_main \
  107091. + -I$(top_srcdir)libc/misc/wchar
  107092. CFLAGS-locale := $(CFLAGS-utils)
  107093. CFLAGS-getconf :=$(CFLAGS-utils) \
  107094. @@ -56,9 +56,11 @@
  107095. $(UTILS_CONFIG_FLAGS-y)
  107096. BUILD_CFLAGS-ldconfig.host := \
  107097. -DBUILDING_LINKAGE \
  107098. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  107099. -I$(top_srcdir)ldso/include
  107100. BUILD_CFLAGS-ldd.host := \
  107101. -DBUILDING_LINKAGE \
  107102. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  107103. -I$(top_srcdir)ldso/include \
  107104. -include $(top_srcdir)include/elf.h
  107105. BUILD_CFLAGS-locale.host := \