0001-GfA-wrk-changes-and-setup.patch 346 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344
  1. From c551f18b3e88ab555b24376240d09e10da767311 Mon Sep 17 00:00:00 2001
  2. From: Reinhard Russinger <reinhard@russinger.at>
  3. Date: Sun, 18 Feb 2018 21:06:05 +0100
  4. Subject: [PATCH] GfA wrk changes and setup
  5. ---
  6. CrossCompile.sh | 41 ++
  7. MakeDTSUpdate.sh | 58 ++
  8. MakeIMAGE.sh | 106 ++++
  9. MakeLegalInfo.sh | 17 +
  10. MakeRootfsUpdate.sh | 73 +++
  11. MapImage.sh | 41 ++
  12. UpdateDTS.sh.in | 126 ++++
  13. UpdateRootfs.sh.in | 209 +++++++
  14. ...cache-flush-management-symbols-when-MULTI.patch | 34 +
  15. configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig | 447 +++++++++++++
  16. configs/Display001_4.4.104_rt21_Qt5.7_defconfig | 460 ++++++++++++++
  17. configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig | 449 +++++++++++++
  18. package/fontconfig/001-mtime-always-ok.patch | 12 +
  19. package/fontconfig/fontconfig.mk | 2 +-
  20. package/gcc/4.9.1/100-uclibc-conf.patch | 15 +
  21. package/gcc/4.9.1/301-missing-execinfo_h.patch | 13 +
  22. package/gcc/4.9.1/302-c99-snprintf.patch | 13 +
  23. package/gcc/4.9.1/810-arm-softfloat-libgcc.patch | 30 +
  24. package/gcc/4.9.1/830-arm_unbreak_armv4t.patch | 13 +
  25. .../840-microblaze-enable-dwarf-eh-support.patch | 169 +++++
  26. package/gcc/4.9.1/841-PR60102.patch | 388 ++++++++++++
  27. package/gcc/4.9.1/900-musl-support.patch | 696 +++++++++++++++++++++
  28. .../powerpc-link-with-math-lib.patch.conditional | 122 ++++
  29. package/gcc/4.9.3/100-uclibc-conf.patch | 15 +
  30. ...00-powerpc-link-with-math-lib.patch.conditional | 122 ++++
  31. package/gcc/4.9.3/111-pr65730.patch | 37 ++
  32. ...gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch | 29 +
  33. package/gcc/4.9.3/130-pr43538.patch | 25 +
  34. ...tizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch | 37 ++
  35. package/gcc/4.9.3/301-missing-execinfo_h.patch | 13 +
  36. package/gcc/4.9.3/810-arm-softfloat-libgcc.patch | 30 +
  37. package/gcc/4.9.3/830-arm_unbreak_armv4t.patch | 13 +
  38. .../840-microblaze-enable-dwarf-eh-support.patch | 169 +++++
  39. package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch | 255 ++++++++
  40. package/gcc/4.9.3/860-cilk-wchar.patch | 56 ++
  41. .../870-xtensa-add-mauto-litpools-option.patch | 290 +++++++++
  42. .../871-xtensa-reimplement-register-spilling.patch | 76 +++
  43. ...unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch | 33 +
  44. .../gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch | 40 ++
  45. .../gcc/4.9.3/874-xtensa-add-uclinux-support.patch | 174 ++++++
  46. .../gcc/4.9.3/880-nios2_legitimize_address.patch | 49 ++
  47. package/gcc/4.9.3/890-fix-m68k-compile.patch | 15 +
  48. package/gcc/4.9.3/900-musl-support.patch | 640 +++++++++++++++++++
  49. .../4.9.3/920-libgcc-remove-unistd-header.patch | 12 +
  50. .../930-libgcc-disable-split-stack-nothreads.patch | 14 +
  51. package/gcc/Config.in.host | 28 +
  52. package/gcc/gcc.hash | 4 +
  53. .../2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch | 174 ++++++
  54. .../glibc/2.18-svnr23787/0002-accept-make4.patch | 33 +
  55. .../glibc/2.18-svnr23787/0003-CVE-2014-6040.patch | 141 +++++
  56. .../glibc/2.18-svnr23787/0004-CVE-2014-9402.patch | 20 +
  57. .../glibc/2.18-svnr23787/0005-CVE-2015-1472.patch | 88 +++
  58. .../2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch | 174 ++++++
  59. .../glibc/2.19-svnr25243/0002-CVE-2014-6040.patch | 141 +++++
  60. .../glibc/2.19-svnr25243/0003-CVE-2014-9402.patch | 20 +
  61. .../glibc/2.19-svnr25243/0004-CVE-2015-1472.patch | 88 +++
  62. .../glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch | 236 +++++++
  63. .../0002-microblaze-include-unix-sysdep.h.patch | 43 ++
  64. package/glibc/glibc/Config.in | 56 ++
  65. package/glibc/glibc/glibc.hash | 8 +
  66. package/glibc/glibc/glibc.mk | 155 +++++
  67. package/glibc/glibc/nsswitch.conf | 13 +
  68. package/libmodbus/001-GfA-echo-rtu.patch | 105 ++++
  69. .../linux-017-omap_serial_for_rs485.patch | 12 +
  70. package/mutt/mutt.mk | 20 +-
  71. package/qt5/Config.in | 10 +-
  72. package/qt5/qt5.mk | 6 +-
  73. package/qt5/qt53d/qt53d.hash | 3 +-
  74. ...ndard-compiler-flags-for-the-host-build.__patch | 44 ++
  75. package/qt5/qt5base/Config.in | 2 +-
  76. package/qt5/qt5base/qmake.conf | 1 -
  77. package/qt5/qt5base/qt5base.hash | 3 +-
  78. package/qt5/qt5base/qt5base.mk | 15 +-
  79. package/qt5/qt5canvas3d/qt5canvas3d.hash | 3 +-
  80. package/qt5/qt5charts/Config.in | 18 +
  81. package/qt5/qt5charts/qt5charts.mk | 39 ++
  82. package/qt5/qt5connectivity/Config.in | 12 +-
  83. package/qt5/qt5connectivity/qt5connectivity.hash | 3 +-
  84. package/qt5/qt5connectivity/qt5connectivity.mk | 36 +-
  85. package/qt5/qt5datavis3d/Config.in | 17 +
  86. package/qt5/qt5datavis3d/qt5datavis3d.mk | 39 ++
  87. package/qt5/qt5declarative/qt5declarative.hash | 3 +-
  88. package/qt5/qt5enginio/qt5enginio.hash | 3 +-
  89. package/qt5/qt5enginio/qt5enginio.mk | 2 +-
  90. .../qt5graphicaleffects/qt5graphicaleffects.hash | 3 +-
  91. package/qt5/qt5imageformats/qt5imageformats.hash | 3 +-
  92. package/qt5/qt5location/qt5location.hash | 3 +-
  93. package/qt5/qt5multimedia/Config.in | 1 -
  94. package/qt5/qt5multimedia/qt5multimedia.hash | 3 +-
  95. package/qt5/qt5quickcontrols/qt5quickcontrols.hash | 3 +-
  96. .../qt5/qt5quickcontrols2/qt5quickcontrols2.hash | 3 +-
  97. package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk | 11 +-
  98. package/qt5/qt5sensors/qt5sensors.hash | 3 +-
  99. package/qt5/qt5serialbus/Config.in | 4 -
  100. package/qt5/qt5serialbus/qt5serialbus.hash | 3 +-
  101. package/qt5/qt5serialport/qt5serialport.hash | 3 +-
  102. package/qt5/qt5svg/qt5svg.hash | 3 +-
  103. .../0001-Disable-qdoc-needs-qtdeclarative.patch | 30 +
  104. package/qt5/qt5tools/qt5tools.hash | 2 -
  105. package/qt5/qt5tools/qt5tools.hash__ | 2 +
  106. package/qt5/qt5virtualkeyboard/Config.in | 10 +
  107. .../qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk | 39 ++
  108. package/qt5/qt5wayland/Config.in | 14 +
  109. package/qt5/qt5wayland/qt5wayland.mk | 35 ++
  110. package/qt5/qt5webchannel/qt5webchannel.hash | 3 +-
  111. .../001-chromium-glibc-2.24-issue.patch | 14 +
  112. .../001-delegate_frame_node_fence_sync.patch | 20 +
  113. package/qt5/qt5webengine/Config.in | 17 +
  114. .../patches_save/001-allow-arm-compiler.patch | 26 +
  115. .../patches_save/002-buildroot-python-bz2.patch | 11 +
  116. .../patches_save/002-move_icu_to_56_1.patch | 43 ++
  117. .../patches_save/003-egl_khr_reusable_sync.patch | 14 +
  118. .../patches_save/004-allow-egl-surface.patch | 166 +++++
  119. package/qt5/qt5webengine/qt5webengine.__hash | 2 +
  120. package/qt5/qt5webengine/qt5webengine.mk | 70 +++
  121. .../0004-Fix-linking-with-libpthread.patch | 34 +
  122. package/qt5/qt5webkit/Config.in | 6 +-
  123. package/qt5/qt5webkit/qt5webkit.hash | 3 +-
  124. package/qt5/qt5webkit/qt5webkit.mk | 22 +-
  125. package/qt5/qt5websockets/qt5websockets.hash | 3 +-
  126. package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash | 3 +-
  127. package/ti-gfx/S80ti-gfx | 10 +
  128. package/ti-gfx/powervr.ini | 4 +-
  129. package/ti-sgx-km/ti-sgx-km.mk | 7 +-
  130. package/ti-sgx-um/ti-sgx-um.mk | 1 +
  131. package/tinc/tinc.hash | 2 +-
  132. package/tinc/tinc.mk | 2 +-
  133. 127 files changed, 8019 insertions(+), 138 deletions(-)
  134. create mode 100755 CrossCompile.sh
  135. create mode 100755 MakeDTSUpdate.sh
  136. create mode 100755 MakeIMAGE.sh
  137. create mode 100755 MakeLegalInfo.sh
  138. create mode 100755 MakeRootfsUpdate.sh
  139. create mode 100755 MapImage.sh
  140. create mode 100644 UpdateDTS.sh.in
  141. create mode 100644 UpdateRootfs.sh.in
  142. create mode 100644 board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
  143. create mode 100644 configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
  144. create mode 100644 configs/Display001_4.4.104_rt21_Qt5.7_defconfig
  145. create mode 100644 configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
  146. create mode 100644 package/fontconfig/001-mtime-always-ok.patch
  147. create mode 100644 package/gcc/4.9.1/100-uclibc-conf.patch
  148. create mode 100644 package/gcc/4.9.1/301-missing-execinfo_h.patch
  149. create mode 100644 package/gcc/4.9.1/302-c99-snprintf.patch
  150. create mode 100644 package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
  151. create mode 100644 package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
  152. create mode 100644 package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
  153. create mode 100644 package/gcc/4.9.1/841-PR60102.patch
  154. create mode 100644 package/gcc/4.9.1/900-musl-support.patch
  155. create mode 100644 package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
  156. create mode 100644 package/gcc/4.9.3/100-uclibc-conf.patch
  157. create mode 100644 package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
  158. create mode 100644 package/gcc/4.9.3/111-pr65730.patch
  159. create mode 100644 package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
  160. create mode 100644 package/gcc/4.9.3/130-pr43538.patch
  161. create mode 100644 package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
  162. create mode 100644 package/gcc/4.9.3/301-missing-execinfo_h.patch
  163. create mode 100644 package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
  164. create mode 100644 package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
  165. create mode 100644 package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
  166. create mode 100644 package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
  167. create mode 100644 package/gcc/4.9.3/860-cilk-wchar.patch
  168. create mode 100644 package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
  169. create mode 100644 package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
  170. create mode 100644 package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
  171. create mode 100644 package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
  172. create mode 100644 package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
  173. create mode 100644 package/gcc/4.9.3/880-nios2_legitimize_address.patch
  174. create mode 100644 package/gcc/4.9.3/890-fix-m68k-compile.patch
  175. create mode 100644 package/gcc/4.9.3/900-musl-support.patch
  176. create mode 100644 package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
  177. create mode 100644 package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
  178. create mode 100644 package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
  179. create mode 100644 package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
  180. create mode 100644 package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
  181. create mode 100644 package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
  182. create mode 100644 package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
  183. create mode 100644 package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
  184. create mode 100644 package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
  185. create mode 100644 package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
  186. create mode 100644 package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
  187. create mode 100644 package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
  188. create mode 100644 package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
  189. create mode 100644 package/glibc/glibc/Config.in
  190. create mode 100644 package/glibc/glibc/glibc.hash
  191. create mode 100644 package/glibc/glibc/glibc.mk
  192. create mode 100644 package/glibc/glibc/nsswitch.conf
  193. create mode 100644 package/libmodbus/001-GfA-echo-rtu.patch
  194. create mode 100644 package/linux-headers/linux-017-omap_serial_for_rs485.patch
  195. create mode 100644 package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
  196. create mode 100644 package/qt5/qt5charts/Config.in
  197. create mode 100644 package/qt5/qt5charts/qt5charts.mk
  198. create mode 100644 package/qt5/qt5datavis3d/Config.in
  199. create mode 100644 package/qt5/qt5datavis3d/qt5datavis3d.mk
  200. create mode 100644 package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
  201. delete mode 100644 package/qt5/qt5tools/qt5tools.hash
  202. create mode 100644 package/qt5/qt5tools/qt5tools.hash__
  203. create mode 100644 package/qt5/qt5virtualkeyboard/Config.in
  204. create mode 100644 package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
  205. create mode 100644 package/qt5/qt5wayland/Config.in
  206. create mode 100644 package/qt5/qt5wayland/qt5wayland.mk
  207. create mode 100644 package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
  208. create mode 100644 package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
  209. create mode 100644 package/qt5/qt5webengine/Config.in
  210. create mode 100644 package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
  211. create mode 100644 package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
  212. create mode 100644 package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
  213. create mode 100644 package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
  214. create mode 100644 package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
  215. create mode 100644 package/qt5/qt5webengine/qt5webengine.__hash
  216. create mode 100644 package/qt5/qt5webengine/qt5webengine.mk
  217. create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
  218. diff --git a/CrossCompile.sh b/CrossCompile.sh
  219. new file mode 100755
  220. index 0000000..a2feabc
  221. --- /dev/null
  222. +++ b/CrossCompile.sh
  223. @@ -0,0 +1,41 @@
  224. +#! /bin/bash
  225. +#
  226. +#
  227. +
  228. +WRKDIR=`pwd`
  229. +CMDDIR=`dirname $0`
  230. +cd $CMDDIR
  231. +
  232. +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
  233. +echo $TOOLCHAIN
  234. +
  235. +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
  236. + export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
  237. +else
  238. + export SYSROOT=$TOOLCHAIN/usr/bin
  239. +fi
  240. +
  241. +export PATH=$PATH:$SYSROOT
  242. +
  243. +export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
  244. +export ARCH=arm
  245. +export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
  246. +export BB_KERNEL_SOURCES=$KERNELDIR
  247. +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
  248. +export CC_FULLPATH="${SYSROOT}${CROSS_COMPILE}"
  249. +#--- gnupru
  250. +export PASM=pasm
  251. +##export PSYSROOT=/home/ru/pru/pru-gcc/bin
  252. +export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
  253. +export PATH=$PSYSROOT:$PATH
  254. +
  255. +export PCROSS_COMPILE=pru-
  256. +export PARCH=pru
  257. +
  258. +cd $WRKDIR
  259. +if [ $# -eq "0" ]
  260. +then
  261. +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
  262. +else
  263. +$1
  264. +fi
  265. diff --git a/MakeDTSUpdate.sh b/MakeDTSUpdate.sh
  266. new file mode 100755
  267. index 0000000..f25b04b
  268. --- /dev/null
  269. +++ b/MakeDTSUpdate.sh
  270. @@ -0,0 +1,58 @@
  271. +#!/bin/bash
  272. +WRKDIR=/tmp/XXXUpdateDTS
  273. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  274. +UPDATE_BINARY=$WRKDIR/dest/UpdateDTS.tar.Z
  275. +UPDATE_FILENAME="../UpdateDTS_$BUILD.sh"
  276. +UPDATE_IN_SCRIPT="UpdateDTS.sh.in"
  277. +
  278. +rm -rf $WRKDIR
  279. +mkdir -p $WRKDIR/dest
  280. +
  281. +cp ./output/images/*.dtb $WRKDIR
  282. +
  283. +tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
  284. +
  285. +# Check for payload format option (default is binary).
  286. +binary=1
  287. +uuencode=0
  288. +
  289. +if [[ "$1" == '--binary' ]]; then
  290. + binary=1
  291. + uuencode=0
  292. + shift
  293. +fi
  294. +if [[ "$1" == '--uuencode' ]]; then
  295. + binary=0
  296. + uuencode=1
  297. + shift
  298. +fi
  299. +
  300. +if [[ ! -f $UPDATE_BINARY ]]; then
  301. + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
  302. + echo "Usage: $0 [--binary | --uuencode]"
  303. + exit 1
  304. +fi
  305. +
  306. +
  307. +if [[ $binary -ne 0 ]]; then
  308. + # Append binary data.
  309. + sed \
  310. + -e 's/uuencode=./uuencode=0/' \
  311. + -e 's/binary=./binary=1/' \
  312. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  313. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  314. +
  315. + cat $UPDATE_BINARY >> $UPDATE_FILENAME
  316. +fi
  317. +if [[ $uuencode -ne 0 ]]; then
  318. + # Append uuencoded data.
  319. + sed \
  320. + -e 's/uuencode=./uuencode=1/' \
  321. + -e 's/binary=./binary=0/' \
  322. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  323. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  324. +
  325. + cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
  326. +fi
  327. +
  328. +chmod a+x $UPDATE_FILENAME
  329. diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
  330. new file mode 100755
  331. index 0000000..4935386
  332. --- /dev/null
  333. +++ b/MakeIMAGE.sh
  334. @@ -0,0 +1,106 @@
  335. +#!/bin/sh
  336. +
  337. +SAVE_LC=$LC_ALL
  338. +export LC_ALL=C
  339. +
  340. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  341. +IMAGEFILE=../Display001_Build_$BUILD-img
  342. +
  343. +ROOTFSMNT=/tmp/XXXRootFs
  344. +
  345. +echo "Image: $IMAGEFILE"
  346. +#-- build imagefile
  347. +dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
  348. +dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
  349. +#-------------------------------------------------------
  350. +#-- create partitions BOOT rootfs !!! don't change !!!!
  351. +fdisk $IMAGEFILE << EOF
  352. +o
  353. +n
  354. +p
  355. +
  356. +
  357. ++300M
  358. +n
  359. +p
  360. +
  361. +
  362. +
  363. +t
  364. +1
  365. +c
  366. +a
  367. +1
  368. +p
  369. +w
  370. +EOF
  371. +echo "============="
  372. +#-- map partitions
  373. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  374. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  375. +
  376. +echo ">>>>>>>>>>>>>>>>>>"
  377. +echo $DRIVE1
  378. +echo $DRIVE2
  379. +echo ">>>>>>>>>>>>>>>>>>"
  380. +
  381. +kpartx -asv $IMAGEFILE
  382. +#-- mount partitions
  383. +umount /tmp/boot
  384. +umount /tmp/rootfs
  385. +
  386. +rm -rf /tmp/boot
  387. +rm -rf /tmp/rootfs
  388. +
  389. +mkdir /tmp/boot
  390. +mkdir /tmp/rootfs
  391. +
  392. +dd if=/dev/zero of=${DRIVE1} bs=1M count=1
  393. +mkfs.vfat -F 32 -n "boot" ${DRIVE1}
  394. +mount ${DRIVE1} /tmp/boot
  395. +
  396. +du -h ${DRIVE1}
  397. +
  398. +cp ./output/images/*.dtb /tmp/boot
  399. +cp ./output/images/uImage /tmp/boot
  400. +cp ./output/images/MLO /tmp/boot
  401. +cp ./output/images/u-boot.img /tmp/boot
  402. +
  403. +ls -alh /tmp/boot
  404. +
  405. +dd if=/dev/zero of=${DRIVE2} bs=1M count=1
  406. +mkfs.ext3 -L "rootfs" ${DRIVE2}
  407. +mount ${DRIVE2} /tmp/rootfs
  408. +
  409. +du -h ${DRIVE2}
  410. +sleep 5
  411. +
  412. +umount ${ROOTFSMNT}
  413. +rm -rf ${ROOTFSMNT}
  414. +mkdir -p ${ROOTFSMNT}
  415. +echo "Mount ====>> " ${ROOTFSMNT}
  416. +mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT}
  417. +
  418. +WRKDIR=`pwd`
  419. +cd ${ROOTFSMNT}
  420. +tar cf - . | (cd /tmp/rootfs && tar xBf -)
  421. +
  422. +cd ${WRKDIR}
  423. +umount ${ROOTFSMNT}
  424. +#tar -C /tmp/rootfs --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
  425. +
  426. +echo ""
  427. +
  428. +sync
  429. +sync
  430. +umount ${DRIVE1}
  431. +umount ${DRIVE2}
  432. +
  433. +#-- unmap partitions
  434. +kpartx -dsv $IMAGEFILE
  435. +#-- packen des Imagefiles
  436. +rm $IMAGEFILE.zip
  437. +zip -j $IMAGEFILE.zip $IMAGEFILE
  438. +
  439. +export LC_ALL=$SAVE_LC
  440. +
  441. diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh
  442. new file mode 100755
  443. index 0000000..429486f
  444. --- /dev/null
  445. +++ b/MakeLegalInfo.sh
  446. @@ -0,0 +1,17 @@
  447. +#!/bin/sh
  448. +
  449. +SAVE_LC=$LC_ALL
  450. +export LC_ALL=C
  451. +
  452. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  453. +IMAGEFILE=../Display001_Build_$BUILD-img
  454. +
  455. +#-- legalinfo erstellen
  456. +TMPWRKDIR=`pwd`
  457. +cd output
  458. +rm ../../Display001-$BUILD-legal-info.zip
  459. +zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/*
  460. +cd $TMPWRKDIR
  461. +
  462. +export LC_ALL=$SAVE_LC
  463. +
  464. \ No newline at end of file
  465. diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
  466. new file mode 100755
  467. index 0000000..99b77c9
  468. --- /dev/null
  469. +++ b/MakeRootfsUpdate.sh
  470. @@ -0,0 +1,73 @@
  471. +#!/bin/bash
  472. +WRKDIR=/tmp/XXXUpdateRootfs
  473. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  474. +UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
  475. +UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
  476. +UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
  477. +
  478. +ROOTFSMNT=/tmp/XXXRootFs
  479. +
  480. +sudo umount $ROOTFSMNT
  481. +sudo rm -rf $ROOTFSMNT
  482. +sudo mkdir -p $ROOTFSMNT
  483. +
  484. +sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
  485. +
  486. +rm -rf $WRKDIR
  487. +mkdir -p $WRKDIR/dest
  488. +
  489. +cp ./output/images/*.dtb $WRKDIR
  490. +cp ./output/images/uImage $WRKDIR
  491. +cp ./output/images/MLO $WRKDIR
  492. +cp ./output/images/u-boot.img $WRKDIR
  493. +
  494. +sudo tar -C $ROOTFSMNT -czvf $WRKDIR/rootfs.tar.gz ./
  495. +sudo umount $ROOTFSMNT
  496. +#cp ./output/images/rootfs.tar.gz $WRKDIR
  497. +
  498. +tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
  499. +
  500. +# Check for payload format option (default is binary).
  501. +binary=1
  502. +uuencode=0
  503. +
  504. +if [[ "$1" == '--binary' ]]; then
  505. + binary=1
  506. + uuencode=0
  507. + shift
  508. +fi
  509. +if [[ "$1" == '--uuencode' ]]; then
  510. + binary=0
  511. + uuencode=1
  512. + shift
  513. +fi
  514. +
  515. +if [[ ! -f $UPDATE_BINARY ]]; then
  516. + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
  517. + echo "Usage: $0 [--binary | --uuencode]"
  518. + exit 1
  519. +fi
  520. +
  521. +
  522. +if [[ $binary -ne 0 ]]; then
  523. + # Append binary data.
  524. + sed \
  525. + -e 's/uuencode=./uuencode=0/' \
  526. + -e 's/binary=./binary=1/' \
  527. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  528. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  529. +
  530. + cat $UPDATE_BINARY >> $UPDATE_FILENAME
  531. +fi
  532. +if [[ $uuencode -ne 0 ]]; then
  533. + # Append uuencoded data.
  534. + sed \
  535. + -e 's/uuencode=./uuencode=1/' \
  536. + -e 's/binary=./binary=0/' \
  537. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  538. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  539. +
  540. + cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
  541. +fi
  542. +
  543. +chmod a+x $UPDATE_FILENAME
  544. diff --git a/MapImage.sh b/MapImage.sh
  545. new file mode 100755
  546. index 0000000..8e87247
  547. --- /dev/null
  548. +++ b/MapImage.sh
  549. @@ -0,0 +1,41 @@
  550. +#!/bin/sh
  551. +
  552. +SAVE_LC=$LC_ALL
  553. +export LC_ALL=C
  554. +
  555. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  556. +IMAGEFILE=../Display001_Build_$BUILD-img
  557. +echo ">>> $IMAGEFILE <<<"
  558. +#-- map partitions
  559. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  560. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  561. +
  562. +echo ">>>>>>>>>>>>>>>>>>"
  563. +echo $DRIVE1
  564. +echo $DRIVE2
  565. +echo ">>>>>>>>>>>>>>>>>>"
  566. +
  567. +kpartx -asv $IMAGEFILE
  568. +#-- mount partitions
  569. +umount /tmp/boot
  570. +umount /tmp/rootfs
  571. +
  572. +rm -rf /tmp/boot
  573. +rm -rf /tmp/rootfs
  574. +
  575. +mkdir /tmp/boot
  576. +mkdir /tmp/rootfs
  577. +
  578. +mount ${DRIVE1} /tmp/boot
  579. +mount ${DRIVE2} /tmp/rootfs
  580. +
  581. +bash
  582. +
  583. +umount ${DRIVE1}
  584. +umount ${DRIVE2}
  585. +
  586. +#-- unmap partitions
  587. +kpartx -dsv $IMAGEFILE
  588. +
  589. +export LC_ALL=$SAVE_LC
  590. +
  591. \ No newline at end of file
  592. diff --git a/UpdateDTS.sh.in b/UpdateDTS.sh.in
  593. new file mode 100644
  594. index 0000000..3a5cb18
  595. --- /dev/null
  596. +++ b/UpdateDTS.sh.in
  597. @@ -0,0 +1,126 @@
  598. +#!/bin/sh
  599. +
  600. +uuencode=0
  601. +binary=1
  602. +
  603. +##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
  604. +TMP_PATH="/__GfA_UpdateDTS"
  605. +TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
  606. +
  607. +untar_payload ()
  608. +{
  609. +
  610. + echo "remove $TMP_PATH : "
  611. + rm -rf $TMP_PATH
  612. + echo ">> $? "
  613. + mkdir -p $TMP_PATH
  614. +
  615. + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
  616. + payload_start=$((match + 1))
  617. + if [[ $binary -ne 0 ]]; then
  618. + tail -n +$payload_start $0 | tar $TAR_PARAMETERS
  619. + fi
  620. + if [[ $uuencode -ne 0 ]]; then
  621. + tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
  622. + fi
  623. +}
  624. +
  625. +## --- Kommandos zum Installieren
  626. +## -- get bootpartition
  627. +such="root=/dev/mmcblk1"
  628. +grep -q $such /proc/cmdline
  629. +if [ $? == 0 ]
  630. +then
  631. + bootpart="/dev/mmcblk1p1"
  632. +else
  633. + bootpart="/dev/mmcblk0p1"
  634. +fi
  635. +
  636. +umount /mnt
  637. +mount $bootpart /mnt
  638. +
  639. +#--- Kernel MLO und Rootfs-Tarball entpacken
  640. +untar_payload
  641. +# ---
  642. +
  643. +cp $TMP_PATH/*.dtb /mnt
  644. +
  645. +echo "sync mmc be patient ...."
  646. +sync
  647. +sync
  648. +
  649. +# Get Graphics resolution and set dtb to the right resolution
  650. +BASEBOARD=`cat /tmp/BASEBOARD`
  651. +
  652. +DONE=0
  653. +YRES="$(fbset | awk '/geom/ {print $3}')"
  654. +XRES="$(fbset | awk '/geom/ {print $2}')"
  655. +
  656. +echo "XRES $XRES, YRES $YRES"
  657. +
  658. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  659. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  660. + echo "4.3 Inch Display 2"
  661. + sh /root/Display2To_4_3inch.sh
  662. + DONE=1
  663. +else
  664. + echo "4.3 Inch"
  665. + sh /root/DisplayTo_4_3inch.sh
  666. + DONE=1
  667. +fi
  668. +fi
  669. +
  670. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  671. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  672. + echo "7 Inch Display 2"
  673. + sh /root/Display2To_7inch.sh
  674. + DONE=1
  675. +else
  676. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  677. + echo "7 Inch Display 2 rs485"
  678. + sh /root/Display2To_7inch_rs485.sh
  679. + DONE=1
  680. +else
  681. + echo "7 Inch"
  682. + sh /root/DisplayTo_7inch.sh
  683. + DONE=1
  684. +fi
  685. +fi
  686. +fi
  687. +
  688. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  689. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  690. + echo "10 Inch Display 2"
  691. + sh /root/Display2To_10inch.sh
  692. + DONE=1
  693. +else
  694. + echo "10 Inch"
  695. + sh /root/DisplayTo_10inch.sh
  696. + DONE=1
  697. +fi
  698. +fi
  699. +
  700. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  701. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  702. + echo "10 Inch Display 2"
  703. + sh /root/Display2To_15inch.sh
  704. + DONE=1
  705. +else
  706. + echo "10 Inch"
  707. + sh /root/DisplayTo_15inch.sh
  708. + DONE=1
  709. +fi
  710. +fi
  711. +
  712. +if [ "$DONE" == "0" ]; then
  713. + echo "Unknown Display Resolution"
  714. +fi
  715. +
  716. +
  717. +
  718. +
  719. +#=================
  720. +echo "Update Done, pls. reboot System"
  721. +umount /mnt
  722. +echo "."
  723. +exit 0
  724. diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
  725. new file mode 100644
  726. index 0000000..2ee5587
  727. --- /dev/null
  728. +++ b/UpdateRootfs.sh.in
  729. @@ -0,0 +1,209 @@
  730. +#!/bin/sh
  731. +
  732. +uuencode=0
  733. +binary=1
  734. +
  735. +##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
  736. +TMP_PATH="/__GfA_Update"
  737. +TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
  738. +
  739. +untar_payload ()
  740. +{
  741. +
  742. + echo "remove $TMP_PATH : "
  743. + rm -rf $TMP_PATH
  744. + echo ">> $? "
  745. + mkdir -p $TMP_PATH
  746. +
  747. + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
  748. + payload_start=$((match + 1))
  749. + if [[ $binary -ne 0 ]]; then
  750. + tail -n +$payload_start $0 | tar $TAR_PARAMETERS
  751. + fi
  752. + if [[ $uuencode -ne 0 ]]; then
  753. + tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
  754. + fi
  755. +}
  756. +
  757. +## --- Kommandos zum Installieren
  758. +## -- get bootpartition
  759. +such="root=/dev/mmcblk1"
  760. +grep -q $such /proc/cmdline
  761. +if [ $? == 0 ]
  762. +then
  763. + bootpart="/dev/mmcblk1p1"
  764. +else
  765. + bootpart="/dev/mmcblk0p1"
  766. +fi
  767. +
  768. +umount /mnt
  769. +mount $bootpart /mnt
  770. +
  771. +## -- alte Firmwarebinaries löschen
  772. +#rm /root/btm*.bin
  773. +
  774. +#--- Kernel MLO und Rootfs-Tarball entpacken
  775. +untar_payload
  776. +# ---
  777. +
  778. +rm /mnt/rootfs.tar.gz
  779. +cp $TMP_PATH/MLO /mnt
  780. +cp $TMP_PATH/u-boot.img /mnt
  781. +cp $TMP_PATH/uImage /mnt
  782. +cp $TMP_PATH/*.dtb /mnt
  783. +
  784. +#rootfs auspacken
  785. +tar -C / --exclude=./tmp --exclude=./etc/inittab \
  786. + --exclude=./etc/network/interfaces \
  787. + --exclude=./etc/hosts --exclude=./etc/hostname \
  788. + --exclude=./etc/passwd --exclude=./etc/shadow \
  789. + --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
  790. + --exclude=./etc/hostapd.conf --exclude=./etc/wpa_supplicant.conf \
  791. + --exclude=./etc/init.d/M99tincd \
  792. + --exclude=./var/GfA/Display_GSM.ini \
  793. + --exclude=./var/cron/crontabs/root \
  794. + -xzvf $TMP_PATH/rootfs.tar.gz
  795. +
  796. +echo "sync mmc be patient ...."
  797. +sync
  798. +sync
  799. +
  800. +if [ -e /etc/init.d/S98usb_g_ether ]
  801. +then
  802. + cp /etc/init.d/S98usb_g_ether /etc/init.d/M98usb_g_ether
  803. + rm /etc/init.d/S98usb_g_ether
  804. +fi
  805. +
  806. +
  807. +if [ -e /etc/init.d/S80ti-sgx ]
  808. +then
  809. + rm /etc/init.d/S80ti-sgx
  810. +fi
  811. +
  812. +#echo "Update Firmware"
  813. +#echo "."
  814. +#/root/spi_tivia /root/btm43_0107.bin >/dev/null
  815. +#echo ".."
  816. +#echo "Update Firmware Done"
  817. +#/root/gfa_spi -v
  818. +#================================
  819. +#--create mountable run folder insted of link
  820. +RUNDIR=/run
  821. +if [ -L $RUNDIR ]; then
  822. + mv $RUNDIR $RUNDIR'_WRK'
  823. + mkdir $RUNDIR
  824. + mount -t tmpfs tmpfs $RUNDIR
  825. + WRKDIR=`pwd`
  826. + cd $RUNDIR'_WRK'
  827. + cp -a ./* $RUNDIR
  828. + cd $WRKDIR
  829. + rm $RUNDIR'_WRK'
  830. +fi
  831. +#--- craete missing nogroup group
  832. +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' /etc/group`
  833. +if [ -z "$GID_NOGROUP" ]; then
  834. + addgroup -S -g 65534 nogroup
  835. +fi
  836. +#--create missing users for mysql,
  837. +if [ -z `awk -F\: '/mysql/ {print $3}' /etc/passwd` ]; then
  838. + UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
  839. + echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> /etc/passwd
  840. +fi
  841. +#--create missing users for postgresql,
  842. +if [ -z `awk -F\: '/postgres/ {print $3}' /etc/passwd` ]; then
  843. + UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
  844. + GID_PG=`awk -F\: '/postgres/ {print $3}' /etc/group`
  845. + if [ -z "$GID_PG" ]; then
  846. + GID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/group`
  847. + echo "postgres:x:$GID_PG:" >> /etc/group
  848. + fi
  849. + echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> /etc/passwd
  850. +fi
  851. +#------------------
  852. +chown -Rv mysql:nogroup /var/mysql
  853. +chown -Rv postgres:postgres /var/lib/pgsql
  854. +#==============================================================================
  855. +# Get Graphics resolution and set dtb to the right resolution
  856. +BASEBOARD=`cat /tmp/BASEBOARD`
  857. +
  858. +DONE=0
  859. +YRES="$(fbset | awk '/geom/ {print $3}')"
  860. +XRES="$(fbset | awk '/geom/ {print $2}')"
  861. +
  862. +echo "XRES $XRES, YRES $YRES"
  863. +
  864. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  865. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  866. + echo "4.3 Inch Display 2"
  867. + sh /root/Display2To_4_3inch.sh
  868. + DONE=1
  869. +else
  870. + echo "4.3 Inch"
  871. + sh /root/DisplayTo_4_3inch.sh
  872. + DONE=1
  873. +fi
  874. +fi
  875. +
  876. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  877. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  878. + echo "7 Inch Display 2"
  879. + sh /root/Display2To_7inch.sh
  880. + DONE=1
  881. +else
  882. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  883. + echo "7 Inch Display 2 rs485"
  884. + sh /root/Display2To_7inch_rs485.sh
  885. + DONE=1
  886. +else
  887. + echo "7 Inch"
  888. + sh /root/DisplayTo_7inch.sh
  889. + DONE=1
  890. +fi
  891. +fi
  892. +fi
  893. +
  894. +if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
  895. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  896. + echo "5.7 Inch Display 2"
  897. + sh /root/Display2To_5_7inch.sh
  898. + DONE=1
  899. +else
  900. + echo "5.7 Inch"
  901. + sh /root/DisplayTo_5_7inch.sh
  902. + DONE=1
  903. +fi
  904. +fi
  905. +
  906. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  907. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  908. + echo "10 Inch Display 2"
  909. + sh /root/Display2To_10inch.sh
  910. + DONE=1
  911. +else
  912. + echo "10 Inch"
  913. + sh /root/DisplayTo_10inch.sh
  914. + DONE=1
  915. +fi
  916. +fi
  917. +
  918. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  919. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  920. + echo "15 Inch Display 2"
  921. + sh /root/Display2To_15inch.sh
  922. + DONE=1
  923. +else
  924. + echo "15 Inch"
  925. + sh /root/DisplayTo_15inch.sh
  926. + DONE=1
  927. +fi
  928. +fi
  929. +
  930. +if [ "$DONE" == "0" ]; then
  931. + echo "Unknown Display Resolution"
  932. +fi
  933. +
  934. +#=================
  935. +echo "Update Done, pls. reboot System"
  936. +umount /mnt
  937. +echo "."
  938. +exit 0
  939. diff --git a/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
  940. new file mode 100644
  941. index 0000000..1ca1e70
  942. --- /dev/null
  943. +++ b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
  944. @@ -0,0 +1,34 @@
  945. +From 29885f2f3d700341d322274db6ad085e601c0994 Mon Sep 17 00:00:00 2001
  946. +From: Pantelis Antoniou <panto@antoniou-consulting.com>
  947. +Date: Fri, 4 Jan 2013 00:32:33 +0200
  948. +Subject: [PATCH 3/3] arm: Export cache flush management symbols when
  949. + !MULTI_CACHE
  950. +
  951. +When compiling a kernel without CONFIG_MULTI_CACHE enabled the
  952. +dma access functions end up not being exported. Fix it.
  953. +
  954. +Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
  955. +---
  956. + arch/arm/kernel/setup.c | 9 +++++++++
  957. + 1 file changed, 9 insertions(+)
  958. +
  959. +diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
  960. +index da1d1aa..dcb678c 100644
  961. +--- a/arch/arm/kernel/setup.c
  962. ++++ b/arch/arm/kernel/setup.c
  963. +@@ -923,3 +923,12 @@ const struct seq_operations cpuinfo_op = {
  964. + .stop = c_stop,
  965. + .show = c_show
  966. + };
  967. ++
  968. ++/* export the cache management functions */
  969. ++#ifndef MULTI_CACHE
  970. ++
  971. ++EXPORT_SYMBOL(__glue(_CACHE,_dma_map_area));
  972. ++EXPORT_SYMBOL(__glue(_CACHE,_dma_unmap_area));
  973. ++EXPORT_SYMBOL(__glue(_CACHE,_dma_flush_range));
  974. ++
  975. ++#endif
  976. +--
  977. +1.7.10.4
  978. +
  979. diff --git a/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig b/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
  980. new file mode 100644
  981. index 0000000..3bd295f
  982. --- /dev/null
  983. +++ b/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
  984. @@ -0,0 +1,447 @@
  985. +BR2_arm=y
  986. +BR2_cortex_a8=y
  987. +BR2_ARM_INSTRUCTIONS_THUMB2=y
  988. +BR2_DL_DIR="~/buildroot_dl"
  989. +BR2_HOST_DIR="/opt/GfA/TC_L44104_C493_QT562"
  990. +# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
  991. +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
  992. +BR2_KERNEL_HEADERS_4_4=y
  993. +BR2_GLIBC_VERSION_2_24=y
  994. +BR2_BINUTILS_VERSION_2_27_X=y
  995. +BR2_GCC_VERSION_4_9_3=y
  996. +BR2_TOOLCHAIN_BUILDROOT_CXX=y
  997. +BR2_PACKAGE_HOST_GDB=y
  998. +BR2_PACKAGE_HOST_GDB_TUI=y
  999. +BR2_PACKAGE_HOST_GDB_PYTHON=y
  1000. +BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
  1001. +BR2_TARGET_OPTIMIZATION="-pipe"
  1002. +BR2_TARGET_GENERIC_HOSTNAME="GfA"
  1003. +BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
  1004. +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
  1005. +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
  1006. +BR2_TARGET_GENERIC_ROOT_PASSWD="root"
  1007. +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
  1008. +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
  1009. +# BR2_ENABLE_LOCALE_PURGE is not set
  1010. +BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
  1011. +BR2_TARGET_LOCALTIME="Europe/Vienna"
  1012. +BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
  1013. +BR2_LINUX_KERNEL=y
  1014. +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
  1015. +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel.tar.gz "
  1016. +BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.104_rt21"
  1017. +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
  1018. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.104_rt_defconfig"
  1019. +BR2_LINUX_KERNEL_UIMAGE=y
  1020. +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
  1021. +BR2_LINUX_KERNEL_DTS_SUPPORT=y
  1022. +BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
  1023. +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts"
  1024. +BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
  1025. +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
  1026. +BR2_PACKAGE_FFMPEG_GPL=y
  1027. +BR2_PACKAGE_FFMPEG_NONFREE=y
  1028. +BR2_PACKAGE_FFMPEG_FFPLAY=y
  1029. +BR2_PACKAGE_FFMPEG_FFSERVER=y
  1030. +BR2_PACKAGE_FFMPEG_FFPROBE=y
  1031. +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
  1032. +BR2_PACKAGE_FFMPEG_POSTPROC=y
  1033. +BR2_PACKAGE_GST1_PLUGINS_GOOD=y
  1034. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
  1035. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
  1036. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
  1037. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
  1038. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
  1039. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
  1040. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
  1041. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
  1042. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
  1043. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
  1044. +BR2_PACKAGE_GST1_PLUGINS_BAD=y
  1045. +BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
  1046. +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
  1047. +BR2_PACKAGE_MPD=y
  1048. +BR2_PACKAGE_MPLAYER=y
  1049. +BR2_PACKAGE_MPV=y
  1050. +BR2_PACKAGE_VLC=y
  1051. +BR2_PACKAGE_WAVPACK=y
  1052. +BR2_PACKAGE_GZIP=y
  1053. +BR2_PACKAGE_LZ4=y
  1054. +BR2_PACKAGE_LZIP=y
  1055. +BR2_PACKAGE_LZOP=y
  1056. +BR2_PACKAGE_P7ZIP=y
  1057. +BR2_PACKAGE_UNRAR=y
  1058. +BR2_PACKAGE_UNZIP=y
  1059. +BR2_PACKAGE_ZIP=y
  1060. +BR2_PACKAGE_GDB=y
  1061. +BR2_PACKAGE_GDB_DEBUGGER=y
  1062. +BR2_PACKAGE_STRACE=y
  1063. +BR2_PACKAGE_BINUTILS=y
  1064. +BR2_PACKAGE_BINUTILS_TARGET=y
  1065. +BR2_PACKAGE_CMAKE_CTEST=y
  1066. +BR2_PACKAGE_GETTEXT=y
  1067. +BR2_PACKAGE_MAKE=y
  1068. +BR2_PACKAGE_SED=y
  1069. +BR2_PACKAGE_CIFS_UTILS=y
  1070. +BR2_PACKAGE_DOSFSTOOLS=y
  1071. +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
  1072. +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
  1073. +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
  1074. +BR2_PACKAGE_E2FSPROGS=y
  1075. +BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
  1076. +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
  1077. +BR2_PACKAGE_F2FS_TOOLS=y
  1078. +BR2_PACKAGE_FLASHBENCH=y
  1079. +BR2_PACKAGE_MAKEDEVS=y
  1080. +BR2_PACKAGE_MMC_UTILS=y
  1081. +BR2_PACKAGE_DEJAVU=y
  1082. +BR2_PACKAGE_DIRECTFB=y
  1083. +BR2_PACKAGE_DIRECTFB_DIVINE=y
  1084. +BR2_PACKAGE_DIRECTFB_SAWMAN=y
  1085. +BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
  1086. +BR2_PACKAGE_EFL=y
  1087. +BR2_PACKAGE_EFL_FB=y
  1088. +BR2_PACKAGE_EFL_WEBP=y
  1089. +BR2_PACKAGE_FB_TEST_APP=y
  1090. +BR2_PACKAGE_FBTERM=y
  1091. +BR2_PACKAGE_FBV=y
  1092. +BR2_PACKAGE_LINUX_FUSION=y
  1093. +BR2_PACKAGE_PSPLASH=y
  1094. +BR2_PACKAGE_SDL_DIRECTFB=y
  1095. +BR2_PACKAGE_SDL_GFX=y
  1096. +BR2_PACKAGE_SDL_IMAGE=y
  1097. +BR2_PACKAGE_SDL_IMAGE_GIF=y
  1098. +BR2_PACKAGE_SDL_IMAGE_JPEG=y
  1099. +BR2_PACKAGE_SDL_IMAGE_LBM=y
  1100. +BR2_PACKAGE_SDL_IMAGE_PCX=y
  1101. +BR2_PACKAGE_SDL_IMAGE_PNG=y
  1102. +BR2_PACKAGE_SDL_IMAGE_PNM=y
  1103. +BR2_PACKAGE_SDL_IMAGE_TARGA=y
  1104. +BR2_PACKAGE_SDL_IMAGE_TIFF=y
  1105. +BR2_PACKAGE_SDL_IMAGE_WEBP=y
  1106. +BR2_PACKAGE_SDL_IMAGE_XCF=y
  1107. +BR2_PACKAGE_SDL_IMAGE_XPM=y
  1108. +BR2_PACKAGE_SDL_IMAGE_XV=y
  1109. +BR2_PACKAGE_SDL_MIXER=y
  1110. +BR2_PACKAGE_SDL_NET=y
  1111. +BR2_PACKAGE_SDL_SOUND=y
  1112. +BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
  1113. +BR2_PACKAGE_SDL_TTF=y
  1114. +BR2_PACKAGE_SDL2=y
  1115. +BR2_PACKAGE_SDL2_DIRECTFB=y
  1116. +BR2_PACKAGE_SDL2_GFX=y
  1117. +BR2_PACKAGE_SDL2_IMAGE=y
  1118. +BR2_PACKAGE_SDL2_TTF=y
  1119. +BR2_PACKAGE_QT5=y
  1120. +BR2_PACKAGE_QT5_VERSION_5_6=y
  1121. +BR2_PACKAGE_QT53D=y
  1122. +BR2_PACKAGE_QT5BASE_MYSQL=y
  1123. +BR2_PACKAGE_QT5BASE_PSQL=y
  1124. +BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
  1125. +BR2_PACKAGE_QT5BASE_LINUXFB=y
  1126. +BR2_PACKAGE_QT5BASE_EGLFS=y
  1127. +BR2_PACKAGE_QT5BASE_FONTCONFIG=y
  1128. +BR2_PACKAGE_QT5BASE_GIF=y
  1129. +BR2_PACKAGE_QT5BASE_JPEG=y
  1130. +BR2_PACKAGE_QT5BASE_PNG=y
  1131. +BR2_PACKAGE_QT5CANVAS3D=y
  1132. +BR2_PACKAGE_QT5CONNECTIVITY=y
  1133. +BR2_PACKAGE_QT5ENGINIO=y
  1134. +BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
  1135. +BR2_PACKAGE_QT5IMAGEFORMATS=y
  1136. +BR2_PACKAGE_QT5LOCATION=y
  1137. +BR2_PACKAGE_QT5MULTIMEDIA=y
  1138. +BR2_PACKAGE_QT5QUICKCONTROLS=y
  1139. +BR2_PACKAGE_QT5QUICKCONTROLS2=y
  1140. +BR2_PACKAGE_QT5SENSORS=y
  1141. +BR2_PACKAGE_QT5WAYLAND=y
  1142. +BR2_PACKAGE_QT5SERIALBUS=y
  1143. +BR2_PACKAGE_QT5SVG=y
  1144. +BR2_PACKAGE_QT5WEBENGINE=y
  1145. +BR2_PACKAGE_TEKUI=y
  1146. +BR2_PACKAGE_WESTON=y
  1147. +BR2_PACKAGE_AM33X_CM3=y
  1148. +BR2_PACKAGE_LINUX_FIRMWARE=y
  1149. +BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
  1150. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
  1151. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
  1152. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
  1153. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
  1154. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
  1155. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
  1156. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
  1157. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
  1158. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
  1159. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
  1160. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
  1161. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
  1162. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
  1163. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
  1164. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
  1165. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
  1166. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
  1167. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
  1168. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
  1169. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
  1170. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
  1171. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
  1172. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
  1173. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
  1174. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
  1175. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
  1176. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
  1177. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
  1178. +BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
  1179. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
  1180. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
  1181. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
  1182. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
  1183. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
  1184. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
  1185. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
  1186. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
  1187. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
  1188. +BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
  1189. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
  1190. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
  1191. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
  1192. +BR2_PACKAGE_AM335X_PRU_PACKAGE=y
  1193. +BR2_PACKAGE_DEVMEM2=y
  1194. +BR2_PACKAGE_EVTEST=y
  1195. +BR2_PACKAGE_I2C_TOOLS=y
  1196. +BR2_PACKAGE_INPUT_TOOLS=y
  1197. +BR2_PACKAGE_KBD=y
  1198. +BR2_PACKAGE_LIBUIO=y
  1199. +BR2_PACKAGE_LSUIO=y
  1200. +BR2_PACKAGE_PARTED=y
  1201. +BR2_PACKAGE_RS485CONF=y
  1202. +BR2_PACKAGE_SISPMCTL=y
  1203. +BR2_PACKAGE_SPI_TOOLS=y
  1204. +BR2_PACKAGE_TI_GFX=y
  1205. +BR2_PACKAGE_TI_GFX_EGLIMAGE=y
  1206. +BR2_PACKAGE_TI_GFX_ES8=y
  1207. +BR2_PACKAGE_TI_UTILS=y
  1208. +BR2_PACKAGE_USB_MODESWITCH_DATA=y
  1209. +BR2_PACKAGE_USBMOUNT=y
  1210. +BR2_PACKAGE_USBUTILS=y
  1211. +BR2_PACKAGE_NODEJS=y
  1212. +BR2_PACKAGE_NODEJS_NPM=y
  1213. +BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
  1214. +BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
  1215. +BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
  1216. +BR2_PACKAGE_PYTHON=y
  1217. +BR2_PACKAGE_PYTHON_BZIP2=y
  1218. +BR2_PACKAGE_PYTHON_BSDDB=y
  1219. +BR2_PACKAGE_PYTHON_CODECSCJK=y
  1220. +BR2_PACKAGE_PYTHON_CURSES=y
  1221. +BR2_PACKAGE_PYTHON_READLINE=y
  1222. +BR2_PACKAGE_PYTHON_SSL=y
  1223. +BR2_PACKAGE_PYTHON_SQLITE=y
  1224. +BR2_PACKAGE_PYTHON_PYEXPAT=y
  1225. +BR2_PACKAGE_PYTHON_HASHLIB=y
  1226. +BR2_PACKAGE_PYTHON_PYUDEV=y
  1227. +BR2_PACKAGE_TCL=y
  1228. +BR2_PACKAGE_EXPECT=y
  1229. +BR2_PACKAGE_TCLLIB=y
  1230. +BR2_PACKAGE_LIBMPD=y
  1231. +BR2_PACKAGE_OPUS=y
  1232. +BR2_PACKAGE_TAGLIB=y
  1233. +BR2_PACKAGE_LIBZIP=y
  1234. +BR2_PACKAGE_SNAPPY=y
  1235. +BR2_PACKAGE_SZIP=y
  1236. +BR2_PACKAGE_GNUTLS=y
  1237. +BR2_PACKAGE_GNUTLS_TOOLS=y
  1238. +BR2_PACKAGE_LIBNSS=y
  1239. +BR2_PACKAGE_LIBSHA1=y
  1240. +BR2_PACKAGE_LIBSSH2=y
  1241. +BR2_PACKAGE_OPENSSL_BIN=y
  1242. +BR2_PACKAGE_OPENSSL_ENGINES=y
  1243. +BR2_PACKAGE_MYSQL_SERVER=y
  1244. +BR2_PACKAGE_SQLITE_NO_SYNC=y
  1245. +BR2_PACKAGE_LIBCONFIG=y
  1246. +BR2_PACKAGE_CAIRO_TEE=y
  1247. +BR2_PACKAGE_GD=y
  1248. +BR2_PACKAGE_GD_ANNOTATE=y
  1249. +BR2_PACKAGE_GD_GD2COPYPAL=y
  1250. +BR2_PACKAGE_GD_GD2TOGIF=y
  1251. +BR2_PACKAGE_GD_GD2TOPNG=y
  1252. +BR2_PACKAGE_GD_GDCMPGIF=y
  1253. +BR2_PACKAGE_GD_GDPARTTOPNG=y
  1254. +BR2_PACKAGE_GD_GDTOPNG=y
  1255. +BR2_PACKAGE_GD_GIFTOGD2=y
  1256. +BR2_PACKAGE_GD_PNGTOGD=y
  1257. +BR2_PACKAGE_GD_PNGTOGD2=y
  1258. +BR2_PACKAGE_GD_WEBPNG=y
  1259. +BR2_PACKAGE_GDK_PIXBUF=y
  1260. +BR2_PACKAGE_HARFBUZZ=y
  1261. +BR2_PACKAGE_LIBJPEG=y
  1262. +BR2_PACKAGE_LIBDRM=y
  1263. +BR2_PACKAGE_LIBDRM_OMAP=y
  1264. +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
  1265. +BR2_PACKAGE_WEBP_DEMUX=y
  1266. +BR2_PACKAGE_DTC=y
  1267. +BR2_PACKAGE_DTC_PROGRAMS=y
  1268. +BR2_PACKAGE_LIBGUDEV=y
  1269. +BR2_PACKAGE_LIBHID=y
  1270. +BR2_PACKAGE_LIBIIO=y
  1271. +BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
  1272. +BR2_PACKAGE_LIBV4L=y
  1273. +BR2_PACKAGE_LIBXSLT=y
  1274. +BR2_PACKAGE_LIBMPEG2=y
  1275. +BR2_PACKAGE_LIBVPX=y
  1276. +BR2_PACKAGE_LIBYUV=y
  1277. +BR2_PACKAGE_CANFESTIVAL=y
  1278. +BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
  1279. +BR2_PACKAGE_CURL=y
  1280. +BR2_PACKAGE_LIBGSASL=y
  1281. +BR2_PACKAGE_LIBIDN=y
  1282. +BR2_PACKAGE_LIBIDN_BINARY=y
  1283. +BR2_PACKAGE_LIBMBUS=y
  1284. +BR2_PACKAGE_LIBMODBUS=y
  1285. +BR2_PACKAGE_LIBPJSIP=y
  1286. +BR2_PACKAGE_LIBRSYNC=y
  1287. +BR2_PACKAGE_LIBSOUP=y
  1288. +BR2_PACKAGE_LIBVNCSERVER=y
  1289. +BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
  1290. +BR2_PACKAGE_NEON=y
  1291. +BR2_PACKAGE_NEON_ZLIB=y
  1292. +BR2_PACKAGE_NEON_SSL=y
  1293. +BR2_PACKAGE_NEON_LIBXML2=y
  1294. +BR2_PACKAGE_NSS_PAM_LDAPD=y
  1295. +BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
  1296. +BR2_PACKAGE_BOOST_ATOMIC=y
  1297. +BR2_PACKAGE_BOOST_CHRONO=y
  1298. +BR2_PACKAGE_BOOST_CONTAINER=y
  1299. +BR2_PACKAGE_BOOST_CONTEXT=y
  1300. +BR2_PACKAGE_BOOST_COROUTINE=y
  1301. +BR2_PACKAGE_BOOST_COROUTINE2=y
  1302. +BR2_PACKAGE_BOOST_DATE_TIME=y
  1303. +BR2_PACKAGE_BOOST_EXCEPTION=y
  1304. +BR2_PACKAGE_BOOST_FILESYSTEM=y
  1305. +BR2_PACKAGE_BOOST_GRAPH=y
  1306. +BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
  1307. +BR2_PACKAGE_BOOST_IOSTREAMS=y
  1308. +BR2_PACKAGE_BOOST_LOCALE=y
  1309. +BR2_PACKAGE_BOOST_LOG=y
  1310. +BR2_PACKAGE_BOOST_MATH=y
  1311. +BR2_PACKAGE_BOOST_METAPARSE=y
  1312. +BR2_PACKAGE_BOOST_MPI=y
  1313. +BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
  1314. +BR2_PACKAGE_BOOST_PYTHON=y
  1315. +BR2_PACKAGE_BOOST_RANDOM=y
  1316. +BR2_PACKAGE_BOOST_REGEX=y
  1317. +BR2_PACKAGE_BOOST_SERIALIZATION=y
  1318. +BR2_PACKAGE_BOOST_SIGNALS=y
  1319. +BR2_PACKAGE_BOOST_SYSTEM=y
  1320. +BR2_PACKAGE_BOOST_THREAD=y
  1321. +BR2_PACKAGE_BOOST_TIMER=y
  1322. +BR2_PACKAGE_BOOST_TYPE_ERASURE=y
  1323. +BR2_PACKAGE_BOOST_WAVE=y
  1324. +BR2_PACKAGE_ELFUTILS=y
  1325. +BR2_PACKAGE_LIBCAP_TOOLS=y
  1326. +BR2_PACKAGE_LIBEVENT=y
  1327. +BR2_PACKAGE_POCO=y
  1328. +BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
  1329. +BR2_PACKAGE_POCO_ZIP=y
  1330. +BR2_PACKAGE_POCO_DATA_SQLITE=y
  1331. +BR2_PACKAGE_POCO_DATA_MYSQL=y
  1332. +BR2_PACKAGE_PROTOBUF=y
  1333. +BR2_PACKAGE_PROTOBUF_C=y
  1334. +BR2_PACKAGE_NCURSES_WCHAR=y
  1335. +BR2_PACKAGE_NCURSES_TARGET_PANEL=y
  1336. +BR2_PACKAGE_NCURSES_TARGET_FORM=y
  1337. +BR2_PACKAGE_NCURSES_TARGET_MENU=y
  1338. +BR2_PACKAGE_NCURSES_TARGET_PROGS=y
  1339. +BR2_PACKAGE_FETCHMAIL=y
  1340. +BR2_PACKAGE_HEIRLOOM_MAILX=y
  1341. +BR2_PACKAGE_LIBESMTP=y
  1342. +BR2_PACKAGE_MSMTP=y
  1343. +BR2_PACKAGE_MUTT=y
  1344. +BR2_PACKAGE_MUTT_IMAP=y
  1345. +BR2_PACKAGE_MUTT_POP3=y
  1346. +BR2_PACKAGE_BLUEZ5_UTILS=y
  1347. +BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
  1348. +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
  1349. +BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y
  1350. +BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
  1351. +BR2_PACKAGE_CAN_UTILS=y
  1352. +BR2_PACKAGE_CIVETWEB=y
  1353. +BR2_PACKAGE_CIVETWEB_WITH_LUA=y
  1354. +BR2_PACKAGE_CONNTRACK_TOOLS=y
  1355. +BR2_PACKAGE_CRDA=y
  1356. +BR2_PACKAGE_DHCP=y
  1357. +BR2_PACKAGE_DHCP_SERVER=y
  1358. +BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
  1359. +BR2_PACKAGE_DHCP_CLIENT=y
  1360. +BR2_PACKAGE_ETHTOOL=y
  1361. +BR2_PACKAGE_GESFTPSERVER=y
  1362. +BR2_PACKAGE_HOSTAPD=y
  1363. +BR2_PACKAGE_HOSTAPD_EAP=y
  1364. +BR2_PACKAGE_HOSTAPD_WPS=y
  1365. +BR2_PACKAGE_HTTPING=y
  1366. +BR2_PACKAGE_HTTPING_TFO=y
  1367. +BR2_PACKAGE_IFTOP=y
  1368. +BR2_PACKAGE_IFUPDOWN=y
  1369. +BR2_PACKAGE_IPROUTE2=y
  1370. +BR2_PACKAGE_IPSEC_TOOLS=y
  1371. +BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
  1372. +BR2_PACKAGE_IPTABLES=y
  1373. +BR2_PACKAGE_IW=y
  1374. +BR2_PACKAGE_MINIDLNA=y
  1375. +BR2_PACKAGE_NETPLUG=y
  1376. +BR2_PACKAGE_OPENSSH=y
  1377. +BR2_PACKAGE_OPENVPN=y
  1378. +BR2_PACKAGE_OPENVPN_SMALL=y
  1379. +BR2_PACKAGE_PPPD=y
  1380. +BR2_PACKAGE_PPPD_FILTER=y
  1381. +BR2_PACKAGE_PPPD_RADIUS=y
  1382. +BR2_PACKAGE_PPTP_LINUX=y
  1383. +BR2_PACKAGE_RSYNC=y
  1384. +BR2_PACKAGE_TINC=y
  1385. +BR2_PACKAGE_WGET=y
  1386. +BR2_PACKAGE_WIRELESS_TOOLS=y
  1387. +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
  1388. +BR2_PACKAGE_WPA_SUPPLICANT=y
  1389. +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
  1390. +BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
  1391. +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
  1392. +BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
  1393. +BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
  1394. +BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
  1395. +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
  1396. +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
  1397. +BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
  1398. +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
  1399. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
  1400. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
  1401. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
  1402. +BR2_PACKAGE_BASH=y
  1403. +BR2_PACKAGE_SCREEN=y
  1404. +BR2_PACKAGE_SUDO=y
  1405. +BR2_PACKAGE_ATTR=y
  1406. +BR2_PACKAGE_HTOP=y
  1407. +BR2_PACKAGE_KEYUTILS=y
  1408. +BR2_PACKAGE_POLKIT=y
  1409. +BR2_PACKAGE_UTIL_LINUX_SETTERM=y
  1410. +BR2_PACKAGE_JOE=y
  1411. +BR2_TARGET_ROOTFS_EXT2=y
  1412. +BR2_TARGET_ROOTFS_EXT2_4=y
  1413. +BR2_TARGET_ROOTFS_TAR_GZIP=y
  1414. +BR2_TARGET_UBOOT=y
  1415. +BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
  1416. +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
  1417. +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
  1418. +BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
  1419. +# BR2_TARGET_UBOOT_FORMAT_BIN is not set
  1420. +BR2_TARGET_UBOOT_FORMAT_IMG=y
  1421. +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
  1422. +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
  1423. +BR2_TARGET_UBOOT_SPL=y
  1424. +BR2_TARGET_UBOOT_SPL_NAME="MLO"
  1425. +BR2_PACKAGE_HOST_DOSFSTOOLS=y
  1426. +BR2_PACKAGE_HOST_DTC=y
  1427. +BR2_PACKAGE_HOST_GENIMAGE=y
  1428. +BR2_PACKAGE_HOST_MTOOLS=y
  1429. +BR2_PACKAGE_WT=y
  1430. +BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
  1431. +BR2_PACKAGE_GFA_ADDONS=y
  1432. diff --git a/configs/Display001_4.4.104_rt21_Qt5.7_defconfig b/configs/Display001_4.4.104_rt21_Qt5.7_defconfig
  1433. new file mode 100644
  1434. index 0000000..6dd9d9f
  1435. --- /dev/null
  1436. +++ b/configs/Display001_4.4.104_rt21_Qt5.7_defconfig
  1437. @@ -0,0 +1,460 @@
  1438. +BR2_arm=y
  1439. +BR2_cortex_a8=y
  1440. +BR2_ARM_INSTRUCTIONS_THUMB2=y
  1441. +BR2_DL_DIR="~/buildroot_dl"
  1442. +BR2_HOST_DIR="/opt/GfA/TC_L44104_C493_QT57"
  1443. +# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
  1444. +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
  1445. +BR2_KERNEL_HEADERS_4_4=y
  1446. +BR2_GLIBC_VERSION_2_24=y
  1447. +BR2_BINUTILS_VERSION_2_27_X=y
  1448. +BR2_GCC_VERSION_4_9_3=y
  1449. +BR2_TOOLCHAIN_BUILDROOT_CXX=y
  1450. +BR2_PACKAGE_HOST_GDB=y
  1451. +BR2_PACKAGE_HOST_GDB_TUI=y
  1452. +BR2_PACKAGE_HOST_GDB_PYTHON=y
  1453. +BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
  1454. +BR2_TARGET_OPTIMIZATION="-pipe"
  1455. +BR2_TARGET_GENERIC_HOSTNAME="GfA"
  1456. +BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
  1457. +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
  1458. +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
  1459. +BR2_TARGET_GENERIC_ROOT_PASSWD="root"
  1460. +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
  1461. +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
  1462. +# BR2_ENABLE_LOCALE_PURGE is not set
  1463. +BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
  1464. +BR2_TARGET_LOCALTIME="Europe/Vienna"
  1465. +BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
  1466. +BR2_LINUX_KERNEL=y
  1467. +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
  1468. +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel57.tar.gz "
  1469. +BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.104_rt21"
  1470. +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
  1471. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.104_rt_defconfig"
  1472. +BR2_LINUX_KERNEL_UIMAGE=y
  1473. +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
  1474. +BR2_LINUX_KERNEL_DTS_SUPPORT=y
  1475. +BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
  1476. +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7_rs485.dts"
  1477. +BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
  1478. +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
  1479. +BR2_PACKAGE_FFMPEG_GPL=y
  1480. +BR2_PACKAGE_FFMPEG_NONFREE=y
  1481. +BR2_PACKAGE_FFMPEG_FFPLAY=y
  1482. +BR2_PACKAGE_FFMPEG_FFSERVER=y
  1483. +BR2_PACKAGE_FFMPEG_FFPROBE=y
  1484. +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
  1485. +BR2_PACKAGE_FFMPEG_POSTPROC=y
  1486. +BR2_PACKAGE_GST1_PLUGINS_GOOD=y
  1487. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
  1488. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
  1489. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
  1490. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
  1491. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
  1492. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
  1493. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
  1494. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
  1495. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
  1496. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
  1497. +BR2_PACKAGE_GST1_PLUGINS_BAD=y
  1498. +BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
  1499. +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
  1500. +BR2_PACKAGE_MPD=y
  1501. +BR2_PACKAGE_MPLAYER=y
  1502. +BR2_PACKAGE_MPV=y
  1503. +BR2_PACKAGE_VLC=y
  1504. +BR2_PACKAGE_WAVPACK=y
  1505. +BR2_PACKAGE_GZIP=y
  1506. +BR2_PACKAGE_LZ4=y
  1507. +BR2_PACKAGE_LZIP=y
  1508. +BR2_PACKAGE_LZOP=y
  1509. +BR2_PACKAGE_P7ZIP=y
  1510. +BR2_PACKAGE_UNRAR=y
  1511. +BR2_PACKAGE_UNZIP=y
  1512. +BR2_PACKAGE_ZIP=y
  1513. +BR2_PACKAGE_GDB=y
  1514. +BR2_PACKAGE_GDB_DEBUGGER=y
  1515. +BR2_PACKAGE_STRACE=y
  1516. +BR2_PACKAGE_BINUTILS=y
  1517. +BR2_PACKAGE_BINUTILS_TARGET=y
  1518. +BR2_PACKAGE_CMAKE_CTEST=y
  1519. +BR2_PACKAGE_GETTEXT=y
  1520. +BR2_PACKAGE_GIT=y
  1521. +BR2_PACKAGE_MAKE=y
  1522. +BR2_PACKAGE_PATCH=y
  1523. +BR2_PACKAGE_SED=y
  1524. +BR2_PACKAGE_TREE=y
  1525. +BR2_PACKAGE_CIFS_UTILS=y
  1526. +BR2_PACKAGE_DOSFSTOOLS=y
  1527. +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
  1528. +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
  1529. +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
  1530. +BR2_PACKAGE_E2FSPROGS=y
  1531. +BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
  1532. +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
  1533. +BR2_PACKAGE_F2FS_TOOLS=y
  1534. +BR2_PACKAGE_FLASHBENCH=y
  1535. +BR2_PACKAGE_MAKEDEVS=y
  1536. +BR2_PACKAGE_MMC_UTILS=y
  1537. +BR2_PACKAGE_DEJAVU=y
  1538. +BR2_PACKAGE_FONT_AWESOME=y
  1539. +BR2_PACKAGE_DIRECTFB=y
  1540. +BR2_PACKAGE_DIRECTFB_DIVINE=y
  1541. +BR2_PACKAGE_DIRECTFB_SAWMAN=y
  1542. +BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
  1543. +BR2_PACKAGE_EFL=y
  1544. +BR2_PACKAGE_EFL_FB=y
  1545. +BR2_PACKAGE_EFL_WEBP=y
  1546. +BR2_PACKAGE_FB_TEST_APP=y
  1547. +BR2_PACKAGE_FBTERM=y
  1548. +BR2_PACKAGE_FBV=y
  1549. +BR2_PACKAGE_LINUX_FUSION=y
  1550. +BR2_PACKAGE_PSPLASH=y
  1551. +BR2_PACKAGE_SDL_DIRECTFB=y
  1552. +BR2_PACKAGE_SDL_GFX=y
  1553. +BR2_PACKAGE_SDL_IMAGE=y
  1554. +BR2_PACKAGE_SDL_IMAGE_GIF=y
  1555. +BR2_PACKAGE_SDL_IMAGE_JPEG=y
  1556. +BR2_PACKAGE_SDL_IMAGE_LBM=y
  1557. +BR2_PACKAGE_SDL_IMAGE_PCX=y
  1558. +BR2_PACKAGE_SDL_IMAGE_PNG=y
  1559. +BR2_PACKAGE_SDL_IMAGE_PNM=y
  1560. +BR2_PACKAGE_SDL_IMAGE_TARGA=y
  1561. +BR2_PACKAGE_SDL_IMAGE_TIFF=y
  1562. +BR2_PACKAGE_SDL_IMAGE_WEBP=y
  1563. +BR2_PACKAGE_SDL_IMAGE_XCF=y
  1564. +BR2_PACKAGE_SDL_IMAGE_XPM=y
  1565. +BR2_PACKAGE_SDL_IMAGE_XV=y
  1566. +BR2_PACKAGE_SDL_MIXER=y
  1567. +BR2_PACKAGE_SDL_NET=y
  1568. +BR2_PACKAGE_SDL_SOUND=y
  1569. +BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
  1570. +BR2_PACKAGE_SDL_TTF=y
  1571. +BR2_PACKAGE_SDL2=y
  1572. +BR2_PACKAGE_SDL2_DIRECTFB=y
  1573. +BR2_PACKAGE_SDL2_GFX=y
  1574. +BR2_PACKAGE_SDL2_IMAGE=y
  1575. +BR2_PACKAGE_SDL2_TTF=y
  1576. +BR2_PACKAGE_QT5=y
  1577. +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
  1578. +BR2_PACKAGE_QT5BASE_MYSQL=y
  1579. +BR2_PACKAGE_QT5BASE_PSQL=y
  1580. +BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
  1581. +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
  1582. +BR2_PACKAGE_QT5BASE_EGLFS=y
  1583. +BR2_PACKAGE_QT5BASE_FONTCONFIG=y
  1584. +BR2_PACKAGE_QT5BASE_GIF=y
  1585. +BR2_PACKAGE_QT5BASE_JPEG=y
  1586. +BR2_PACKAGE_QT5BASE_PNG=y
  1587. +BR2_PACKAGE_QT53D=y
  1588. +BR2_PACKAGE_QT5CANVAS3D=y
  1589. +BR2_PACKAGE_QT5CONNECTIVITY=y
  1590. +BR2_PACKAGE_QT5ENGINIO=y
  1591. +BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
  1592. +BR2_PACKAGE_QT5IMAGEFORMATS=y
  1593. +BR2_PACKAGE_QT5LOCATION=y
  1594. +BR2_PACKAGE_QT5MULTIMEDIA=y
  1595. +BR2_PACKAGE_QT5QUICKCONTROLS=y
  1596. +BR2_PACKAGE_QT5SENSORS=y
  1597. +BR2_PACKAGE_QT5SERIALBUS=y
  1598. +BR2_PACKAGE_QT5WAYLAND=y
  1599. +BR2_PACKAGE_QT5SVG=y
  1600. +BR2_PACKAGE_QT5TOOLS=y
  1601. +BR2_PACKAGE_QT5TOOLS_QTPATHS=y
  1602. +BR2_PACKAGE_QT5TOOLS_QTPLUGININFO=y
  1603. +BR2_PACKAGE_QT5WEBENGINE=y
  1604. +BR2_PACKAGE_QT5VIRTUALKEYBOARD=y
  1605. +BR2_PACKAGE_QT5CHARTS=y
  1606. +BR2_PACKAGE_QT5DATAVIS3D=y
  1607. +BR2_PACKAGE_QT5QUICKCONTROLS2=y
  1608. +BR2_PACKAGE_TEKUI=y
  1609. +BR2_PACKAGE_WESTON=y
  1610. +BR2_PACKAGE_AM33X_CM3=y
  1611. +BR2_PACKAGE_LINUX_FIRMWARE=y
  1612. +BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
  1613. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
  1614. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
  1615. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
  1616. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
  1617. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
  1618. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
  1619. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
  1620. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
  1621. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
  1622. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
  1623. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
  1624. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
  1625. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
  1626. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
  1627. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
  1628. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
  1629. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
  1630. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
  1631. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
  1632. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
  1633. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
  1634. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
  1635. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
  1636. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
  1637. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
  1638. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
  1639. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
  1640. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
  1641. +BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
  1642. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
  1643. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
  1644. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
  1645. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
  1646. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
  1647. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
  1648. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
  1649. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
  1650. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
  1651. +BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
  1652. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
  1653. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
  1654. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
  1655. +BR2_PACKAGE_AM335X_PRU_PACKAGE=y
  1656. +BR2_PACKAGE_DEVMEM2=y
  1657. +BR2_PACKAGE_EVTEST=y
  1658. +BR2_PACKAGE_I2C_TOOLS=y
  1659. +BR2_PACKAGE_INPUT_TOOLS=y
  1660. +BR2_PACKAGE_KBD=y
  1661. +BR2_PACKAGE_LIBUIO=y
  1662. +BR2_PACKAGE_LSUIO=y
  1663. +BR2_PACKAGE_PARTED=y
  1664. +BR2_PACKAGE_RS485CONF=y
  1665. +BR2_PACKAGE_SISPMCTL=y
  1666. +BR2_PACKAGE_SPI_TOOLS=y
  1667. +BR2_PACKAGE_TI_GFX=y
  1668. +BR2_PACKAGE_TI_GFX_EGLIMAGE=y
  1669. +BR2_PACKAGE_TI_GFX_ES8=y
  1670. +BR2_PACKAGE_TI_UTILS=y
  1671. +BR2_PACKAGE_USB_MODESWITCH_DATA=y
  1672. +BR2_PACKAGE_USBMOUNT=y
  1673. +BR2_PACKAGE_USBUTILS=y
  1674. +BR2_PACKAGE_NODEJS=y
  1675. +BR2_PACKAGE_NODEJS_NPM=y
  1676. +BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
  1677. +BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
  1678. +BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
  1679. +BR2_PACKAGE_PYTHON=y
  1680. +BR2_PACKAGE_PYTHON_BZIP2=y
  1681. +BR2_PACKAGE_PYTHON_BSDDB=y
  1682. +BR2_PACKAGE_PYTHON_CODECSCJK=y
  1683. +BR2_PACKAGE_PYTHON_CURSES=y
  1684. +BR2_PACKAGE_PYTHON_READLINE=y
  1685. +BR2_PACKAGE_PYTHON_SSL=y
  1686. +BR2_PACKAGE_PYTHON_SQLITE=y
  1687. +BR2_PACKAGE_PYTHON_PYEXPAT=y
  1688. +BR2_PACKAGE_PYTHON_HASHLIB=y
  1689. +BR2_PACKAGE_PYTHON_PAHO_MQTT=y
  1690. +BR2_PACKAGE_PYTHON_PYUDEV=y
  1691. +BR2_PACKAGE_TCL=y
  1692. +BR2_PACKAGE_EXPECT=y
  1693. +BR2_PACKAGE_TCLLIB=y
  1694. +BR2_PACKAGE_LIBMPD=y
  1695. +BR2_PACKAGE_OPUS=y
  1696. +BR2_PACKAGE_TAGLIB=y
  1697. +BR2_PACKAGE_LIBZIP=y
  1698. +BR2_PACKAGE_SNAPPY=y
  1699. +BR2_PACKAGE_SZIP=y
  1700. +BR2_PACKAGE_GNUTLS_TOOLS=y
  1701. +BR2_PACKAGE_LIBNSS=y
  1702. +BR2_PACKAGE_LIBSHA1=y
  1703. +BR2_PACKAGE_LIBSSH2=y
  1704. +BR2_PACKAGE_OPENSSL_BIN=y
  1705. +BR2_PACKAGE_OPENSSL_ENGINES=y
  1706. +BR2_PACKAGE_MYSQL_SERVER=y
  1707. +BR2_PACKAGE_SQLITE_NO_SYNC=y
  1708. +BR2_PACKAGE_LIBCONFIG=y
  1709. +BR2_PACKAGE_CAIRO_TEE=y
  1710. +BR2_PACKAGE_GD=y
  1711. +BR2_PACKAGE_GD_ANNOTATE=y
  1712. +BR2_PACKAGE_GD_GD2COPYPAL=y
  1713. +BR2_PACKAGE_GD_GD2TOGIF=y
  1714. +BR2_PACKAGE_GD_GD2TOPNG=y
  1715. +BR2_PACKAGE_GD_GDCMPGIF=y
  1716. +BR2_PACKAGE_GD_GDPARTTOPNG=y
  1717. +BR2_PACKAGE_GD_GDTOPNG=y
  1718. +BR2_PACKAGE_GD_GIFTOGD2=y
  1719. +BR2_PACKAGE_GD_PNGTOGD=y
  1720. +BR2_PACKAGE_GD_PNGTOGD2=y
  1721. +BR2_PACKAGE_GD_WEBPNG=y
  1722. +BR2_PACKAGE_GDK_PIXBUF=y
  1723. +BR2_PACKAGE_HARFBUZZ=y
  1724. +BR2_PACKAGE_LIBDRM=y
  1725. +BR2_PACKAGE_LIBDRM_OMAP=y
  1726. +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
  1727. +BR2_PACKAGE_WEBP_DEMUX=y
  1728. +BR2_PACKAGE_DTC=y
  1729. +BR2_PACKAGE_DTC_PROGRAMS=y
  1730. +BR2_PACKAGE_LIBGUDEV=y
  1731. +BR2_PACKAGE_LIBHID=y
  1732. +BR2_PACKAGE_LIBIIO=y
  1733. +BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
  1734. +BR2_PACKAGE_LIBV4L=y
  1735. +BR2_PACKAGE_JANSSON=y
  1736. +BR2_PACKAGE_LIBXSLT=y
  1737. +BR2_PACKAGE_LIBMPEG2=y
  1738. +BR2_PACKAGE_LIBVPX=y
  1739. +BR2_PACKAGE_LIBYUV=y
  1740. +BR2_PACKAGE_CANFESTIVAL=y
  1741. +BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
  1742. +BR2_PACKAGE_CURL=y
  1743. +BR2_PACKAGE_LIBGSASL=y
  1744. +BR2_PACKAGE_LIBIDN=y
  1745. +BR2_PACKAGE_LIBIDN_BINARY=y
  1746. +BR2_PACKAGE_LIBMBUS=y
  1747. +BR2_PACKAGE_LIBMICROHTTPD=y
  1748. +BR2_PACKAGE_LIBMICROHTTPD_SSL=y
  1749. +BR2_PACKAGE_LIBMODBUS=y
  1750. +BR2_PACKAGE_LIBPJSIP=y
  1751. +BR2_PACKAGE_LIBRSYNC=y
  1752. +BR2_PACKAGE_LIBSOUP=y
  1753. +BR2_PACKAGE_LIBVNCSERVER=y
  1754. +BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
  1755. +BR2_PACKAGE_NEON=y
  1756. +BR2_PACKAGE_NEON_ZLIB=y
  1757. +BR2_PACKAGE_NEON_SSL=y
  1758. +BR2_PACKAGE_NEON_LIBXML2=y
  1759. +BR2_PACKAGE_NSS_PAM_LDAPD=y
  1760. +BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
  1761. +BR2_PACKAGE_PAHO_MQTT_C=y
  1762. +BR2_PACKAGE_BOOST_ATOMIC=y
  1763. +BR2_PACKAGE_BOOST_CHRONO=y
  1764. +BR2_PACKAGE_BOOST_CONTAINER=y
  1765. +BR2_PACKAGE_BOOST_CONTEXT=y
  1766. +BR2_PACKAGE_BOOST_COROUTINE=y
  1767. +BR2_PACKAGE_BOOST_COROUTINE2=y
  1768. +BR2_PACKAGE_BOOST_DATE_TIME=y
  1769. +BR2_PACKAGE_BOOST_EXCEPTION=y
  1770. +BR2_PACKAGE_BOOST_FILESYSTEM=y
  1771. +BR2_PACKAGE_BOOST_GRAPH=y
  1772. +BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
  1773. +BR2_PACKAGE_BOOST_IOSTREAMS=y
  1774. +BR2_PACKAGE_BOOST_LOCALE=y
  1775. +BR2_PACKAGE_BOOST_LOG=y
  1776. +BR2_PACKAGE_BOOST_MATH=y
  1777. +BR2_PACKAGE_BOOST_METAPARSE=y
  1778. +BR2_PACKAGE_BOOST_MPI=y
  1779. +BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
  1780. +BR2_PACKAGE_BOOST_PYTHON=y
  1781. +BR2_PACKAGE_BOOST_RANDOM=y
  1782. +BR2_PACKAGE_BOOST_REGEX=y
  1783. +BR2_PACKAGE_BOOST_SERIALIZATION=y
  1784. +BR2_PACKAGE_BOOST_SIGNALS=y
  1785. +BR2_PACKAGE_BOOST_SYSTEM=y
  1786. +BR2_PACKAGE_BOOST_THREAD=y
  1787. +BR2_PACKAGE_BOOST_TIMER=y
  1788. +BR2_PACKAGE_BOOST_TYPE_ERASURE=y
  1789. +BR2_PACKAGE_BOOST_WAVE=y
  1790. +BR2_PACKAGE_ELFUTILS=y
  1791. +BR2_PACKAGE_LIBCAP_TOOLS=y
  1792. +BR2_PACKAGE_LIBEVENT=y
  1793. +BR2_PACKAGE_LIBICAL=y
  1794. +BR2_PACKAGE_POCO=y
  1795. +BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
  1796. +BR2_PACKAGE_POCO_ZIP=y
  1797. +BR2_PACKAGE_POCO_DATA_SQLITE=y
  1798. +BR2_PACKAGE_POCO_DATA_MYSQL=y
  1799. +BR2_PACKAGE_PROTOBUF=y
  1800. +BR2_PACKAGE_PROTOBUF_C=y
  1801. +BR2_PACKAGE_NCURSES_WCHAR=y
  1802. +BR2_PACKAGE_NCURSES_TARGET_PANEL=y
  1803. +BR2_PACKAGE_NCURSES_TARGET_FORM=y
  1804. +BR2_PACKAGE_NCURSES_TARGET_MENU=y
  1805. +BR2_PACKAGE_NCURSES_TARGET_PROGS=y
  1806. +BR2_PACKAGE_FETCHMAIL=y
  1807. +BR2_PACKAGE_HEIRLOOM_MAILX=y
  1808. +BR2_PACKAGE_LIBESMTP=y
  1809. +BR2_PACKAGE_MSMTP=y
  1810. +BR2_PACKAGE_MUTT=y
  1811. +BR2_PACKAGE_MUTT_IMAP=y
  1812. +BR2_PACKAGE_MUTT_POP3=y
  1813. +BR2_PACKAGE_CAN_UTILS=y
  1814. +BR2_PACKAGE_CIVETWEB=y
  1815. +BR2_PACKAGE_CIVETWEB_WITH_LUA=y
  1816. +BR2_PACKAGE_CONNTRACK_TOOLS=y
  1817. +BR2_PACKAGE_CRDA=y
  1818. +BR2_PACKAGE_DHCP=y
  1819. +BR2_PACKAGE_DHCP_SERVER=y
  1820. +BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
  1821. +BR2_PACKAGE_DHCP_CLIENT=y
  1822. +BR2_PACKAGE_ETHTOOL=y
  1823. +BR2_PACKAGE_GESFTPSERVER=y
  1824. +BR2_PACKAGE_HOSTAPD=y
  1825. +BR2_PACKAGE_HOSTAPD_EAP=y
  1826. +BR2_PACKAGE_HOSTAPD_WPS=y
  1827. +BR2_PACKAGE_HTTPING=y
  1828. +BR2_PACKAGE_HTTPING_TFO=y
  1829. +BR2_PACKAGE_IFTOP=y
  1830. +BR2_PACKAGE_IFUPDOWN=y
  1831. +BR2_PACKAGE_IPROUTE2=y
  1832. +BR2_PACKAGE_IPSEC_TOOLS=y
  1833. +BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
  1834. +BR2_PACKAGE_IPTABLES=y
  1835. +BR2_PACKAGE_IW=y
  1836. +BR2_PACKAGE_MINIDLNA=y
  1837. +BR2_PACKAGE_MOSQUITTO=y
  1838. +BR2_PACKAGE_NETPLUG=y
  1839. +BR2_PACKAGE_OPENSSH=y
  1840. +BR2_PACKAGE_OPENVPN=y
  1841. +BR2_PACKAGE_OPENVPN_SMALL=y
  1842. +BR2_PACKAGE_PPPD=y
  1843. +BR2_PACKAGE_PPPD_FILTER=y
  1844. +BR2_PACKAGE_PPPD_RADIUS=y
  1845. +BR2_PACKAGE_PPTP_LINUX=y
  1846. +BR2_PACKAGE_RSYNC=y
  1847. +BR2_PACKAGE_TINC=y
  1848. +BR2_PACKAGE_WGET=y
  1849. +BR2_PACKAGE_WIRELESS_TOOLS=y
  1850. +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
  1851. +BR2_PACKAGE_WPA_SUPPLICANT=y
  1852. +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
  1853. +BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
  1854. +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
  1855. +BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
  1856. +BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
  1857. +BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
  1858. +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
  1859. +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
  1860. +BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
  1861. +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
  1862. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
  1863. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
  1864. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
  1865. +BR2_PACKAGE_BASH=y
  1866. +BR2_PACKAGE_SCREEN=y
  1867. +BR2_PACKAGE_SUDO=y
  1868. +BR2_PACKAGE_ATTR=y
  1869. +BR2_PACKAGE_HTOP=y
  1870. +BR2_PACKAGE_KEYUTILS=y
  1871. +BR2_PACKAGE_POLKIT=y
  1872. +BR2_PACKAGE_UTIL_LINUX_SETTERM=y
  1873. +BR2_PACKAGE_JOE=y
  1874. +BR2_TARGET_ROOTFS_EXT2=y
  1875. +BR2_TARGET_ROOTFS_EXT2_4=y
  1876. +BR2_TARGET_ROOTFS_TAR_GZIP=y
  1877. +BR2_TARGET_UBOOT=y
  1878. +BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
  1879. +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
  1880. +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
  1881. +BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
  1882. +# BR2_TARGET_UBOOT_FORMAT_BIN is not set
  1883. +BR2_TARGET_UBOOT_FORMAT_IMG=y
  1884. +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
  1885. +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
  1886. +BR2_TARGET_UBOOT_SPL=y
  1887. +BR2_TARGET_UBOOT_SPL_NAME="MLO"
  1888. +BR2_PACKAGE_HOST_DOSFSTOOLS=y
  1889. +BR2_PACKAGE_HOST_DTC=y
  1890. +BR2_PACKAGE_HOST_GENIMAGE=y
  1891. +BR2_PACKAGE_HOST_MTOOLS=y
  1892. +BR2_PACKAGE_WT=y
  1893. +BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
  1894. +BR2_PACKAGE_GFA_ADDONS=y
  1895. +BR2_PACKAGE_QMLPLUGINS=y
  1896. +BR2_PACKAGE_PYTHON_UFW=y
  1897. +BR2_PACKAGE_LIBULFIUS=y
  1898. diff --git a/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig b/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
  1899. new file mode 100644
  1900. index 0000000..0b2d311
  1901. --- /dev/null
  1902. +++ b/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
  1903. @@ -0,0 +1,449 @@
  1904. +BR2_arm=y
  1905. +BR2_cortex_a8=y
  1906. +BR2_ARM_INSTRUCTIONS_THUMB2=y
  1907. +BR2_DL_DIR="~/buildroot_dl"
  1908. +BR2_HOST_DIR="/opt/GfA/TC_L4494_C493_QT562"
  1909. +# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
  1910. +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
  1911. +BR2_KERNEL_HEADERS_4_4=y
  1912. +BR2_GLIBC_VERSION_2_24=y
  1913. +BR2_BINUTILS_VERSION_2_27_X=y
  1914. +BR2_GCC_VERSION_4_9_3=y
  1915. +BR2_TOOLCHAIN_BUILDROOT_CXX=y
  1916. +BR2_PACKAGE_HOST_GDB=y
  1917. +BR2_PACKAGE_HOST_GDB_TUI=y
  1918. +BR2_PACKAGE_HOST_GDB_PYTHON=y
  1919. +BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
  1920. +BR2_TARGET_OPTIMIZATION="-pipe"
  1921. +BR2_TARGET_GENERIC_HOSTNAME="GfA"
  1922. +BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
  1923. +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
  1924. +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
  1925. +BR2_TARGET_GENERIC_ROOT_PASSWD="root"
  1926. +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
  1927. +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
  1928. +# BR2_ENABLE_LOCALE_PURGE is not set
  1929. +BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
  1930. +BR2_TARGET_LOCALTIME="Europe/Vienna"
  1931. +BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
  1932. +BR2_LINUX_KERNEL=y
  1933. +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
  1934. +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel.tar.gz "
  1935. +BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.94_rt19"
  1936. +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
  1937. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.94_rt_defconfig"
  1938. +BR2_LINUX_KERNEL_UIMAGE=y
  1939. +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
  1940. +BR2_LINUX_KERNEL_DTS_SUPPORT=y
  1941. +BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
  1942. +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts"
  1943. +BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
  1944. +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
  1945. +BR2_PACKAGE_FFMPEG_GPL=y
  1946. +BR2_PACKAGE_FFMPEG_NONFREE=y
  1947. +BR2_PACKAGE_FFMPEG_FFPLAY=y
  1948. +BR2_PACKAGE_FFMPEG_FFSERVER=y
  1949. +BR2_PACKAGE_FFMPEG_FFPROBE=y
  1950. +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
  1951. +BR2_PACKAGE_FFMPEG_POSTPROC=y
  1952. +BR2_PACKAGE_GST1_PLUGINS_GOOD=y
  1953. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
  1954. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
  1955. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
  1956. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
  1957. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
  1958. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
  1959. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
  1960. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
  1961. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
  1962. +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
  1963. +BR2_PACKAGE_GST1_PLUGINS_BAD=y
  1964. +BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
  1965. +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
  1966. +BR2_PACKAGE_MPD=y
  1967. +BR2_PACKAGE_MPLAYER=y
  1968. +BR2_PACKAGE_MPV=y
  1969. +BR2_PACKAGE_VLC=y
  1970. +BR2_PACKAGE_WAVPACK=y
  1971. +BR2_PACKAGE_GZIP=y
  1972. +BR2_PACKAGE_LZ4=y
  1973. +BR2_PACKAGE_LZIP=y
  1974. +BR2_PACKAGE_LZOP=y
  1975. +BR2_PACKAGE_P7ZIP=y
  1976. +BR2_PACKAGE_UNRAR=y
  1977. +BR2_PACKAGE_UNZIP=y
  1978. +BR2_PACKAGE_ZIP=y
  1979. +BR2_PACKAGE_GDB=y
  1980. +BR2_PACKAGE_GDB_DEBUGGER=y
  1981. +BR2_PACKAGE_STRACE=y
  1982. +BR2_PACKAGE_BINUTILS=y
  1983. +BR2_PACKAGE_BINUTILS_TARGET=y
  1984. +BR2_PACKAGE_CMAKE_CTEST=y
  1985. +BR2_PACKAGE_GETTEXT=y
  1986. +BR2_PACKAGE_MAKE=y
  1987. +BR2_PACKAGE_SED=y
  1988. +BR2_PACKAGE_CIFS_UTILS=y
  1989. +BR2_PACKAGE_DOSFSTOOLS=y
  1990. +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
  1991. +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
  1992. +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
  1993. +BR2_PACKAGE_E2FSPROGS=y
  1994. +BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
  1995. +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
  1996. +BR2_PACKAGE_F2FS_TOOLS=y
  1997. +BR2_PACKAGE_FLASHBENCH=y
  1998. +BR2_PACKAGE_MAKEDEVS=y
  1999. +BR2_PACKAGE_MMC_UTILS=y
  2000. +BR2_PACKAGE_DEJAVU=y
  2001. +BR2_PACKAGE_DIRECTFB=y
  2002. +BR2_PACKAGE_DIRECTFB_DIVINE=y
  2003. +BR2_PACKAGE_DIRECTFB_SAWMAN=y
  2004. +BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
  2005. +BR2_PACKAGE_EFL=y
  2006. +BR2_PACKAGE_EFL_FB=y
  2007. +BR2_PACKAGE_EFL_WEBP=y
  2008. +BR2_PACKAGE_FB_TEST_APP=y
  2009. +BR2_PACKAGE_FBTERM=y
  2010. +BR2_PACKAGE_FBV=y
  2011. +BR2_PACKAGE_LINUX_FUSION=y
  2012. +BR2_PACKAGE_PSPLASH=y
  2013. +BR2_PACKAGE_SDL_DIRECTFB=y
  2014. +BR2_PACKAGE_SDL_GFX=y
  2015. +BR2_PACKAGE_SDL_IMAGE=y
  2016. +BR2_PACKAGE_SDL_IMAGE_GIF=y
  2017. +BR2_PACKAGE_SDL_IMAGE_JPEG=y
  2018. +BR2_PACKAGE_SDL_IMAGE_LBM=y
  2019. +BR2_PACKAGE_SDL_IMAGE_PCX=y
  2020. +BR2_PACKAGE_SDL_IMAGE_PNG=y
  2021. +BR2_PACKAGE_SDL_IMAGE_PNM=y
  2022. +BR2_PACKAGE_SDL_IMAGE_TARGA=y
  2023. +BR2_PACKAGE_SDL_IMAGE_TIFF=y
  2024. +BR2_PACKAGE_SDL_IMAGE_WEBP=y
  2025. +BR2_PACKAGE_SDL_IMAGE_XCF=y
  2026. +BR2_PACKAGE_SDL_IMAGE_XPM=y
  2027. +BR2_PACKAGE_SDL_IMAGE_XV=y
  2028. +BR2_PACKAGE_SDL_MIXER=y
  2029. +BR2_PACKAGE_SDL_NET=y
  2030. +BR2_PACKAGE_SDL_SOUND=y
  2031. +BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
  2032. +BR2_PACKAGE_SDL_TTF=y
  2033. +BR2_PACKAGE_SDL2=y
  2034. +BR2_PACKAGE_SDL2_DIRECTFB=y
  2035. +BR2_PACKAGE_SDL2_GFX=y
  2036. +BR2_PACKAGE_SDL2_IMAGE=y
  2037. +BR2_PACKAGE_SDL2_TTF=y
  2038. +BR2_PACKAGE_QT5=y
  2039. +BR2_PACKAGE_QT5_VERSION_5_6=y
  2040. +BR2_PACKAGE_QT53D=y
  2041. +BR2_PACKAGE_QT5BASE_MYSQL=y
  2042. +BR2_PACKAGE_QT5BASE_PSQL=y
  2043. +BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
  2044. +BR2_PACKAGE_QT5BASE_LINUXFB=y
  2045. +BR2_PACKAGE_QT5BASE_EGLFS=y
  2046. +BR2_PACKAGE_QT5BASE_FONTCONFIG=y
  2047. +BR2_PACKAGE_QT5BASE_GIF=y
  2048. +BR2_PACKAGE_QT5BASE_JPEG=y
  2049. +BR2_PACKAGE_QT5BASE_PNG=y
  2050. +BR2_PACKAGE_QT5CANVAS3D=y
  2051. +BR2_PACKAGE_QT5CONNECTIVITY=y
  2052. +BR2_PACKAGE_QT5ENGINIO=y
  2053. +BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
  2054. +BR2_PACKAGE_QT5IMAGEFORMATS=y
  2055. +BR2_PACKAGE_QT5LOCATION=y
  2056. +BR2_PACKAGE_QT5MULTIMEDIA=y
  2057. +BR2_PACKAGE_QT5QUICKCONTROLS=y
  2058. +BR2_PACKAGE_QT5QUICKCONTROLS2=y
  2059. +BR2_PACKAGE_QT5SENSORS=y
  2060. +BR2_PACKAGE_QT5WAYLAND=y
  2061. +BR2_PACKAGE_QT5SERIALBUS=y
  2062. +BR2_PACKAGE_QT5SVG=y
  2063. +BR2_PACKAGE_QT5WEBENGINE=y
  2064. +BR2_PACKAGE_TEKUI=y
  2065. +BR2_PACKAGE_WESTON=y
  2066. +BR2_PACKAGE_AM33X_CM3=y
  2067. +BR2_PACKAGE_LINUX_FIRMWARE=y
  2068. +BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
  2069. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
  2070. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
  2071. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
  2072. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
  2073. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
  2074. +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
  2075. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
  2076. +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
  2077. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
  2078. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
  2079. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
  2080. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
  2081. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
  2082. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
  2083. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
  2084. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
  2085. +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
  2086. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
  2087. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
  2088. +BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
  2089. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
  2090. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
  2091. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
  2092. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
  2093. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
  2094. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
  2095. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
  2096. +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
  2097. +BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
  2098. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
  2099. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
  2100. +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
  2101. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
  2102. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
  2103. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
  2104. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
  2105. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
  2106. +BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
  2107. +BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
  2108. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
  2109. +BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
  2110. +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
  2111. +BR2_PACKAGE_AM335X_PRU_PACKAGE=y
  2112. +BR2_PACKAGE_DEVMEM2=y
  2113. +BR2_PACKAGE_EVTEST=y
  2114. +BR2_PACKAGE_I2C_TOOLS=y
  2115. +BR2_PACKAGE_INPUT_TOOLS=y
  2116. +BR2_PACKAGE_KBD=y
  2117. +BR2_PACKAGE_LIBUIO=y
  2118. +BR2_PACKAGE_LSUIO=y
  2119. +BR2_PACKAGE_PARTED=y
  2120. +BR2_PACKAGE_RS485CONF=y
  2121. +BR2_PACKAGE_SISPMCTL=y
  2122. +BR2_PACKAGE_SPI_TOOLS=y
  2123. +BR2_PACKAGE_TI_GFX=y
  2124. +BR2_PACKAGE_TI_GFX_EGLIMAGE=y
  2125. +BR2_PACKAGE_TI_GFX_ES8=y
  2126. +BR2_PACKAGE_TI_UTILS=y
  2127. +BR2_PACKAGE_USB_MODESWITCH_DATA=y
  2128. +BR2_PACKAGE_USBMOUNT=y
  2129. +BR2_PACKAGE_USBUTILS=y
  2130. +BR2_PACKAGE_NODEJS=y
  2131. +BR2_PACKAGE_NODEJS_NPM=y
  2132. +BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
  2133. +BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
  2134. +BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
  2135. +BR2_PACKAGE_PERL=y
  2136. +BR2_PACKAGE_PYTHON=y
  2137. +BR2_PACKAGE_PYTHON_BZIP2=y
  2138. +BR2_PACKAGE_PYTHON_BSDDB=y
  2139. +BR2_PACKAGE_PYTHON_CODECSCJK=y
  2140. +BR2_PACKAGE_PYTHON_CURSES=y
  2141. +BR2_PACKAGE_PYTHON_READLINE=y
  2142. +BR2_PACKAGE_PYTHON_SSL=y
  2143. +BR2_PACKAGE_PYTHON_SQLITE=y
  2144. +BR2_PACKAGE_PYTHON_PYEXPAT=y
  2145. +BR2_PACKAGE_PYTHON_HASHLIB=y
  2146. +BR2_PACKAGE_PYTHON_PYUDEV=y
  2147. +BR2_PACKAGE_TCL=y
  2148. +BR2_PACKAGE_EXPECT=y
  2149. +BR2_PACKAGE_TCLLIB=y
  2150. +BR2_PACKAGE_LIBMPD=y
  2151. +BR2_PACKAGE_OPUS=y
  2152. +BR2_PACKAGE_TAGLIB=y
  2153. +BR2_PACKAGE_LIBZIP=y
  2154. +BR2_PACKAGE_SNAPPY=y
  2155. +BR2_PACKAGE_SZIP=y
  2156. +BR2_PACKAGE_GNUTLS=y
  2157. +BR2_PACKAGE_GNUTLS_TOOLS=y
  2158. +BR2_PACKAGE_LIBNSS=y
  2159. +BR2_PACKAGE_LIBSHA1=y
  2160. +BR2_PACKAGE_LIBSSH2=y
  2161. +BR2_PACKAGE_OPENSSL_BIN=y
  2162. +BR2_PACKAGE_OPENSSL_ENGINES=y
  2163. +BR2_PACKAGE_MYSQL_SERVER=y
  2164. +BR2_PACKAGE_SQLITE_NO_SYNC=y
  2165. +BR2_PACKAGE_LIBCONFIG=y
  2166. +BR2_PACKAGE_CAIRO_TEE=y
  2167. +BR2_PACKAGE_GD=y
  2168. +BR2_PACKAGE_GD_ANNOTATE=y
  2169. +BR2_PACKAGE_GD_BDFTOGD=y
  2170. +BR2_PACKAGE_GD_GD2COPYPAL=y
  2171. +BR2_PACKAGE_GD_GD2TOGIF=y
  2172. +BR2_PACKAGE_GD_GD2TOPNG=y
  2173. +BR2_PACKAGE_GD_GDCMPGIF=y
  2174. +BR2_PACKAGE_GD_GDPARTTOPNG=y
  2175. +BR2_PACKAGE_GD_GDTOPNG=y
  2176. +BR2_PACKAGE_GD_GIFTOGD2=y
  2177. +BR2_PACKAGE_GD_PNGTOGD=y
  2178. +BR2_PACKAGE_GD_PNGTOGD2=y
  2179. +BR2_PACKAGE_GD_WEBPNG=y
  2180. +BR2_PACKAGE_GDK_PIXBUF=y
  2181. +BR2_PACKAGE_HARFBUZZ=y
  2182. +BR2_PACKAGE_LIBJPEG=y
  2183. +BR2_PACKAGE_LIBDRM=y
  2184. +BR2_PACKAGE_LIBDRM_OMAP=y
  2185. +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
  2186. +BR2_PACKAGE_WEBP_DEMUX=y
  2187. +BR2_PACKAGE_DTC=y
  2188. +BR2_PACKAGE_DTC_PROGRAMS=y
  2189. +BR2_PACKAGE_LIBGUDEV=y
  2190. +BR2_PACKAGE_LIBHID=y
  2191. +BR2_PACKAGE_LIBIIO=y
  2192. +BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
  2193. +BR2_PACKAGE_LIBV4L=y
  2194. +BR2_PACKAGE_LIBXSLT=y
  2195. +BR2_PACKAGE_LIBMPEG2=y
  2196. +BR2_PACKAGE_LIBVPX=y
  2197. +BR2_PACKAGE_LIBYUV=y
  2198. +BR2_PACKAGE_CANFESTIVAL=y
  2199. +BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
  2200. +BR2_PACKAGE_CURL=y
  2201. +BR2_PACKAGE_LIBGSASL=y
  2202. +BR2_PACKAGE_LIBIDN=y
  2203. +BR2_PACKAGE_LIBIDN_BINARY=y
  2204. +BR2_PACKAGE_LIBMBUS=y
  2205. +BR2_PACKAGE_LIBMODBUS=y
  2206. +BR2_PACKAGE_LIBPJSIP=y
  2207. +BR2_PACKAGE_LIBRSYNC=y
  2208. +BR2_PACKAGE_LIBSOUP=y
  2209. +BR2_PACKAGE_LIBVNCSERVER=y
  2210. +BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
  2211. +BR2_PACKAGE_NEON=y
  2212. +BR2_PACKAGE_NEON_ZLIB=y
  2213. +BR2_PACKAGE_NEON_SSL=y
  2214. +BR2_PACKAGE_NEON_LIBXML2=y
  2215. +BR2_PACKAGE_NSS_PAM_LDAPD=y
  2216. +BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
  2217. +BR2_PACKAGE_BOOST_ATOMIC=y
  2218. +BR2_PACKAGE_BOOST_CHRONO=y
  2219. +BR2_PACKAGE_BOOST_CONTAINER=y
  2220. +BR2_PACKAGE_BOOST_CONTEXT=y
  2221. +BR2_PACKAGE_BOOST_COROUTINE=y
  2222. +BR2_PACKAGE_BOOST_COROUTINE2=y
  2223. +BR2_PACKAGE_BOOST_DATE_TIME=y
  2224. +BR2_PACKAGE_BOOST_EXCEPTION=y
  2225. +BR2_PACKAGE_BOOST_FILESYSTEM=y
  2226. +BR2_PACKAGE_BOOST_GRAPH=y
  2227. +BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
  2228. +BR2_PACKAGE_BOOST_IOSTREAMS=y
  2229. +BR2_PACKAGE_BOOST_LOCALE=y
  2230. +BR2_PACKAGE_BOOST_LOG=y
  2231. +BR2_PACKAGE_BOOST_MATH=y
  2232. +BR2_PACKAGE_BOOST_METAPARSE=y
  2233. +BR2_PACKAGE_BOOST_MPI=y
  2234. +BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
  2235. +BR2_PACKAGE_BOOST_PYTHON=y
  2236. +BR2_PACKAGE_BOOST_RANDOM=y
  2237. +BR2_PACKAGE_BOOST_REGEX=y
  2238. +BR2_PACKAGE_BOOST_SERIALIZATION=y
  2239. +BR2_PACKAGE_BOOST_SIGNALS=y
  2240. +BR2_PACKAGE_BOOST_SYSTEM=y
  2241. +BR2_PACKAGE_BOOST_THREAD=y
  2242. +BR2_PACKAGE_BOOST_TIMER=y
  2243. +BR2_PACKAGE_BOOST_TYPE_ERASURE=y
  2244. +BR2_PACKAGE_BOOST_WAVE=y
  2245. +BR2_PACKAGE_ELFUTILS=y
  2246. +BR2_PACKAGE_LIBCAP_TOOLS=y
  2247. +BR2_PACKAGE_LIBEVENT=y
  2248. +BR2_PACKAGE_POCO=y
  2249. +BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
  2250. +BR2_PACKAGE_POCO_ZIP=y
  2251. +BR2_PACKAGE_POCO_DATA_SQLITE=y
  2252. +BR2_PACKAGE_POCO_DATA_MYSQL=y
  2253. +BR2_PACKAGE_PROTOBUF=y
  2254. +BR2_PACKAGE_PROTOBUF_C=y
  2255. +BR2_PACKAGE_NCURSES_WCHAR=y
  2256. +BR2_PACKAGE_NCURSES_TARGET_PANEL=y
  2257. +BR2_PACKAGE_NCURSES_TARGET_FORM=y
  2258. +BR2_PACKAGE_NCURSES_TARGET_MENU=y
  2259. +BR2_PACKAGE_NCURSES_TARGET_PROGS=y
  2260. +BR2_PACKAGE_FETCHMAIL=y
  2261. +BR2_PACKAGE_HEIRLOOM_MAILX=y
  2262. +BR2_PACKAGE_LIBESMTP=y
  2263. +BR2_PACKAGE_MSMTP=y
  2264. +BR2_PACKAGE_MUTT=y
  2265. +BR2_PACKAGE_MUTT_IMAP=y
  2266. +BR2_PACKAGE_MUTT_POP3=y
  2267. +BR2_PACKAGE_BLUEZ5_UTILS=y
  2268. +BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
  2269. +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
  2270. +BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y
  2271. +BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
  2272. +BR2_PACKAGE_CAN_UTILS=y
  2273. +BR2_PACKAGE_CIVETWEB=y
  2274. +BR2_PACKAGE_CIVETWEB_WITH_LUA=y
  2275. +BR2_PACKAGE_CONNTRACK_TOOLS=y
  2276. +BR2_PACKAGE_CRDA=y
  2277. +BR2_PACKAGE_DHCP=y
  2278. +BR2_PACKAGE_DHCP_SERVER=y
  2279. +BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
  2280. +BR2_PACKAGE_DHCP_CLIENT=y
  2281. +BR2_PACKAGE_ETHTOOL=y
  2282. +BR2_PACKAGE_GESFTPSERVER=y
  2283. +BR2_PACKAGE_HOSTAPD=y
  2284. +BR2_PACKAGE_HOSTAPD_EAP=y
  2285. +BR2_PACKAGE_HOSTAPD_WPS=y
  2286. +BR2_PACKAGE_HTTPING=y
  2287. +BR2_PACKAGE_HTTPING_TFO=y
  2288. +BR2_PACKAGE_IFTOP=y
  2289. +BR2_PACKAGE_IFUPDOWN=y
  2290. +BR2_PACKAGE_IPROUTE2=y
  2291. +BR2_PACKAGE_IPSEC_TOOLS=y
  2292. +BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
  2293. +BR2_PACKAGE_IPTABLES=y
  2294. +BR2_PACKAGE_IW=y
  2295. +BR2_PACKAGE_MINIDLNA=y
  2296. +BR2_PACKAGE_NETPLUG=y
  2297. +BR2_PACKAGE_OPENSSH=y
  2298. +BR2_PACKAGE_OPENVPN=y
  2299. +BR2_PACKAGE_OPENVPN_SMALL=y
  2300. +BR2_PACKAGE_PPPD=y
  2301. +BR2_PACKAGE_PPPD_FILTER=y
  2302. +BR2_PACKAGE_PPPD_RADIUS=y
  2303. +BR2_PACKAGE_PPTP_LINUX=y
  2304. +BR2_PACKAGE_RSYNC=y
  2305. +BR2_PACKAGE_TINC=y
  2306. +BR2_PACKAGE_WGET=y
  2307. +BR2_PACKAGE_WIRELESS_TOOLS=y
  2308. +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
  2309. +BR2_PACKAGE_WPA_SUPPLICANT=y
  2310. +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
  2311. +BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
  2312. +BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
  2313. +BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
  2314. +BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
  2315. +BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
  2316. +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
  2317. +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
  2318. +BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
  2319. +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
  2320. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
  2321. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
  2322. +BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
  2323. +BR2_PACKAGE_BASH=y
  2324. +BR2_PACKAGE_SCREEN=y
  2325. +BR2_PACKAGE_SUDO=y
  2326. +BR2_PACKAGE_ATTR=y
  2327. +BR2_PACKAGE_HTOP=y
  2328. +BR2_PACKAGE_KEYUTILS=y
  2329. +BR2_PACKAGE_POLKIT=y
  2330. +BR2_PACKAGE_UTIL_LINUX_SETTERM=y
  2331. +BR2_PACKAGE_JOE=y
  2332. +BR2_TARGET_ROOTFS_EXT2=y
  2333. +BR2_TARGET_ROOTFS_EXT2_4=y
  2334. +BR2_TARGET_ROOTFS_TAR_GZIP=y
  2335. +BR2_TARGET_UBOOT=y
  2336. +BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
  2337. +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
  2338. +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
  2339. +BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
  2340. +# BR2_TARGET_UBOOT_FORMAT_BIN is not set
  2341. +BR2_TARGET_UBOOT_FORMAT_IMG=y
  2342. +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
  2343. +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
  2344. +BR2_TARGET_UBOOT_SPL=y
  2345. +BR2_TARGET_UBOOT_SPL_NAME="MLO"
  2346. +BR2_PACKAGE_HOST_DOSFSTOOLS=y
  2347. +BR2_PACKAGE_HOST_DTC=y
  2348. +BR2_PACKAGE_HOST_GENIMAGE=y
  2349. +BR2_PACKAGE_HOST_MTOOLS=y
  2350. +BR2_PACKAGE_WT=y
  2351. +BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
  2352. +BR2_PACKAGE_GFA_ADDONS=y
  2353. diff --git a/package/fontconfig/001-mtime-always-ok.patch b/package/fontconfig/001-mtime-always-ok.patch
  2354. new file mode 100644
  2355. index 0000000..671c1f1
  2356. --- /dev/null
  2357. +++ b/package/fontconfig/001-mtime-always-ok.patch
  2358. @@ -0,0 +1,12 @@
  2359. +diff -Naurp a/src/fccache.c b/src/fccache.c
  2360. +--- a/src/fccache.c 2016-08-05 07:35:05.000000000 +0200
  2361. ++++ b/src/fccache.c 2017-11-26 00:51:18.800927077 +0100
  2362. +@@ -585,7 +585,7 @@ FcCacheTimeValid (FcConfig *config, FcCa
  2363. + FcCacheDir (cache), cache->checksum, (int) dir_stat->st_mtime);
  2364. + #endif
  2365. +
  2366. +- return cache->checksum == (int) dir_stat->st_mtime && fnano;
  2367. ++ return FcTrue;
  2368. + }
  2369. +
  2370. + static FcBool
  2371. diff --git a/package/fontconfig/fontconfig.mk b/package/fontconfig/fontconfig.mk
  2372. index 93f2a15..a470d1f 100644
  2373. --- a/package/fontconfig/fontconfig.mk
  2374. +++ b/package/fontconfig/fontconfig.mk
  2375. @@ -15,7 +15,7 @@ FONTCONFIG_LICENSE_FILES = COPYING
  2376. FONTCONFIG_CONF_OPTS = \
  2377. --with-arch=$(GNU_TARGET_NAME) \
  2378. - --with-cache-dir=/var/cache/fontconfig \
  2379. + --with-cache-dir=/fontconfig_cache \
  2380. --disable-docs
  2381. HOST_FONTCONFIG_CONF_OPTS = \
  2382. diff --git a/package/gcc/4.9.1/100-uclibc-conf.patch b/package/gcc/4.9.1/100-uclibc-conf.patch
  2383. new file mode 100644
  2384. index 0000000..d56bf0a
  2385. --- /dev/null
  2386. +++ b/package/gcc/4.9.1/100-uclibc-conf.patch
  2387. @@ -0,0 +1,15 @@
  2388. +Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
  2389. +===================================================================
  2390. +--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh 2009-04-09 17:00:19.000000000 +0200
  2391. ++++ gcc-4.8.0/contrib/regression/objs-gcc.sh 2013-03-23 17:39:04.000000000 +0100
  2392. +@@ -106,6 +106,10 @@
  2393. + then
  2394. + make all-gdb all-dejagnu all-ld || exit 1
  2395. + make install-gdb install-dejagnu install-ld || exit 1
  2396. ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
  2397. ++ then
  2398. ++ make all-gdb all-dejagnu all-ld || exit 1
  2399. ++ make install-gdb install-dejagnu install-ld || exit 1
  2400. + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
  2401. + make bootstrap || exit 1
  2402. + make install || exit 1
  2403. diff --git a/package/gcc/4.9.1/301-missing-execinfo_h.patch b/package/gcc/4.9.1/301-missing-execinfo_h.patch
  2404. new file mode 100644
  2405. index 0000000..00efda2
  2406. --- /dev/null
  2407. +++ b/package/gcc/4.9.1/301-missing-execinfo_h.patch
  2408. @@ -0,0 +1,13 @@
  2409. +Index: gcc-4.8.0/boehm-gc/include/gc.h
  2410. +===================================================================
  2411. +--- gcc-4.8.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200
  2412. ++++ gcc-4.8.0/boehm-gc/include/gc.h 2013-03-23 17:39:20.000000000 +0100
  2413. +@@ -503,7 +503,7 @@
  2414. + #if defined(__linux__) || defined(__GLIBC__)
  2415. + # include <features.h>
  2416. + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
  2417. +- && !defined(__ia64__)
  2418. ++ && !defined(__ia64__) && !defined(__UCLIBC__)
  2419. + # ifndef GC_HAVE_BUILTIN_BACKTRACE
  2420. + # define GC_HAVE_BUILTIN_BACKTRACE
  2421. + # endif
  2422. diff --git a/package/gcc/4.9.1/302-c99-snprintf.patch b/package/gcc/4.9.1/302-c99-snprintf.patch
  2423. new file mode 100644
  2424. index 0000000..cd4d2cc
  2425. --- /dev/null
  2426. +++ b/package/gcc/4.9.1/302-c99-snprintf.patch
  2427. @@ -0,0 +1,13 @@
  2428. +Index: gcc-4.8.0/libstdc++-v3/include/c_global/cstdio
  2429. +===================================================================
  2430. +--- gcc-4.8.0.orig/libstdc++-v3/include/c_global/cstdio 2013-02-03 18:54:05.000000000 +0100
  2431. ++++ gcc-4.8.0/libstdc++-v3/include/c_global/cstdio 2013-03-23 17:39:32.000000000 +0100
  2432. +@@ -138,7 +138,7 @@
  2433. + using ::vsprintf;
  2434. + } // namespace
  2435. +
  2436. +-#if _GLIBCXX_USE_C99
  2437. ++#if _GLIBCXX_USE_C99 || defined __UCLIBC__
  2438. +
  2439. + #undef snprintf
  2440. + #undef vfscanf
  2441. diff --git a/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
  2442. new file mode 100644
  2443. index 0000000..c8cb377
  2444. --- /dev/null
  2445. +++ b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
  2446. @@ -0,0 +1,30 @@
  2447. +Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
  2448. +===================================================================
  2449. +--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h 2013-01-10 21:38:27.000000000 +0100
  2450. ++++ gcc-4.8.0/gcc/config/arm/linux-elf.h 2013-03-23 17:40:00.000000000 +0100
  2451. +@@ -55,7 +55,7 @@
  2452. + %{shared:-lc} \
  2453. + %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
  2454. +
  2455. +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
  2456. ++#define LIBGCC_SPEC "-lgcc"
  2457. +
  2458. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  2459. +
  2460. +Index: gcc-4.8.0/libgcc/config/arm/t-linux
  2461. +===================================================================
  2462. +--- gcc-4.8.0.orig/libgcc/config/arm/t-linux 2012-03-22 16:14:46.000000000 +0100
  2463. ++++ gcc-4.8.0/libgcc/config/arm/t-linux 2013-03-23 17:40:54.000000000 +0100
  2464. +@@ -1,6 +1,11 @@
  2465. + LIB1ASMSRC = arm/lib1funcs.S
  2466. + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
  2467. +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
  2468. ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
  2469. ++ _arm_addsubdf3 _arm_addsubsf3 \
  2470. ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
  2471. ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
  2472. ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
  2473. ++ _arm_fixsfsi _arm_fixunssfsi
  2474. +
  2475. + # Just for these, we omit the frame pointer since it makes such a big
  2476. + # difference.
  2477. diff --git a/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
  2478. new file mode 100644
  2479. index 0000000..37f8f2a
  2480. --- /dev/null
  2481. +++ b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
  2482. @@ -0,0 +1,13 @@
  2483. +http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
  2484. +
  2485. +--- a/gcc/config/arm/linux-eabi.h
  2486. ++++ b/gcc/config/arm/linux-eabi.h
  2487. +@@ -45,7 +45,7 @@
  2488. + The ARM10TDMI core is the default for armv5t, so set
  2489. + SUBTARGET_CPU_DEFAULT to achieve this. */
  2490. + #undef SUBTARGET_CPU_DEFAULT
  2491. +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
  2492. ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
  2493. +
  2494. + /* TARGET_BIG_ENDIAN_DEFAULT is set in
  2495. + config.gcc for big endian configurations. */
  2496. diff --git a/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
  2497. new file mode 100644
  2498. index 0000000..e116e2b
  2499. --- /dev/null
  2500. +++ b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
  2501. @@ -0,0 +1,169 @@
  2502. +Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
  2503. +
  2504. +From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
  2505. +From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
  2506. +Date: Mon, 18 Jun 2012 20:18:13 +0200
  2507. +Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
  2508. +
  2509. +Changelog
  2510. +
  2511. +2013-03-18 Edgar E. Iglesias <edgar.iglesias@xilinx.com>
  2512. + David Holsgrove <david.holsgrove@xilinx.com>
  2513. +
  2514. + * common/config/microblaze/microblaze-common.c: Remove
  2515. + TARGET_EXCEPT_UNWIND_INFO definition.
  2516. + * config/microblaze/microblaze-protos.h: Add
  2517. + microblaze_eh_return prototype.
  2518. + * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
  2519. + microblaze_expand_epilogue, microblaze_return_addr): Handle
  2520. + calls_eh_return
  2521. + (microblaze_eh_return): New function.
  2522. + * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
  2523. + EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
  2524. + ASM_PREFERRED_EH_DATA_FORMAT
  2525. + * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
  2526. +
  2527. +Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
  2528. +Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
  2529. +---
  2530. + gcc/common/config/microblaze/microblaze-common.c | 3 ---
  2531. + gcc/config/microblaze/microblaze-protos.h | 1 +
  2532. + gcc/config/microblaze/microblaze.c | 29 ++++++++++++++++++++----
  2533. + gcc/config/microblaze/microblaze.h | 15 ++++++++++++
  2534. + gcc/config/microblaze/microblaze.md | 11 +++++++++
  2535. + 5 files changed, 52 insertions(+), 7 deletions(-)
  2536. +
  2537. +diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
  2538. +index 5835acc..85e6a53 100644
  2539. +--- a/gcc/common/config/microblaze/microblaze-common.c
  2540. ++++ b/gcc/common/config/microblaze/microblaze-common.c
  2541. +@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
  2542. + #undef TARGET_OPTION_OPTIMIZATION_TABLE
  2543. + #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
  2544. +
  2545. +-#undef TARGET_EXCEPT_UNWIND_INFO
  2546. +-#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
  2547. +-
  2548. + struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
  2549. +diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
  2550. +index c30ec72..260f4e4 100644
  2551. +--- a/gcc/config/microblaze/microblaze-protos.h
  2552. ++++ b/gcc/config/microblaze/microblaze-protos.h
  2553. +@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
  2554. + extern int symbol_mentioned_p (rtx);
  2555. + extern int label_mentioned_p (rtx);
  2556. + extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
  2557. ++extern void microblaze_eh_return (rtx op0);
  2558. + #endif /* RTX_CODE */
  2559. +
  2560. + /* Declare functions in microblaze-c.c. */
  2561. +diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
  2562. +index fe61fce..15166d3 100644
  2563. +--- a/gcc/config/microblaze/microblaze.c
  2564. ++++ b/gcc/config/microblaze/microblaze.c
  2565. +@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
  2566. + if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
  2567. + return 1;
  2568. +
  2569. ++ if (crtl->calls_eh_return
  2570. ++ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
  2571. ++ return 1;
  2572. ++ }
  2573. ++
  2574. + if (!crtl->is_leaf)
  2575. + {
  2576. + if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
  2577. +@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
  2578. + return 1;
  2579. + }
  2580. +
  2581. ++ if (crtl->calls_eh_return
  2582. ++ && (regno == EH_RETURN_DATA_REGNO (0)
  2583. ++ || regno == EH_RETURN_DATA_REGNO (1)))
  2584. ++ {
  2585. ++ return 1;
  2586. ++ }
  2587. ++
  2588. + return 0;
  2589. + }
  2590. +
  2591. +@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
  2592. + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
  2593. + }
  2594. +
  2595. ++ if (crtl->calls_eh_return)
  2596. ++ emit_insn (gen_addsi3 (stack_pointer_rtx,
  2597. ++ stack_pointer_rtx,
  2598. ++ gen_rtx_raw_REG (SImode,
  2599. ++ MB_EH_STACKADJ_REGNUM)));
  2600. ++
  2601. + emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
  2602. + MB_ABI_SUB_RETURN_ADDR_REGNUM)));
  2603. + }
  2604. +@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
  2605. + if (count != 0)
  2606. + return NULL_RTX;
  2607. +
  2608. +- return gen_rtx_PLUS (Pmode,
  2609. +- get_hard_reg_initial_val (Pmode,
  2610. +- MB_ABI_SUB_RETURN_ADDR_REGNUM),
  2611. +- GEN_INT (8));
  2612. ++ return get_hard_reg_initial_val (Pmode,
  2613. ++ MB_ABI_SUB_RETURN_ADDR_REGNUM);
  2614. ++}
  2615. ++
  2616. ++void microblaze_eh_return (rtx op0)
  2617. ++{
  2618. ++ emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
  2619. + }
  2620. +
  2621. + /* Queue an .ident string in the queue of top-level asm statements.
  2622. +diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
  2623. +index 4072283..5e9f49c 100644
  2624. +--- a/gcc/config/microblaze/microblaze.h
  2625. ++++ b/gcc/config/microblaze/microblaze.h
  2626. +@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
  2627. + #define INCOMING_RETURN_ADDR_RTX \
  2628. + gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
  2629. +
  2630. ++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */
  2631. ++#define RETURN_ADDR_OFFSET (8)
  2632. ++
  2633. ++/* Describe how we implement __builtin_eh_return. */
  2634. ++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
  2635. ++
  2636. ++#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM
  2637. ++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
  2638. ++
  2639. ++/* Select a format to encode pointers in exception handling data. CODE
  2640. ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
  2641. ++ true if the symbol may be affected by dynamic relocations. */
  2642. ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
  2643. ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
  2644. ++
  2645. + /* Use DWARF 2 debugging information by default. */
  2646. + #define DWARF2_DEBUGGING_INFO
  2647. + #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  2648. +diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
  2649. +index ed6131a..dc2405f 100644
  2650. +--- a/gcc/config/microblaze/microblaze.md
  2651. ++++ b/gcc/config/microblaze/microblaze.md
  2652. +@@ -2327,4 +2327,15 @@
  2653. + (set_attr "mode" "SI")
  2654. + (set_attr "length" "4")])
  2655. +
  2656. ++; This is used in compiling the unwind routines.
  2657. ++(define_expand "eh_return"
  2658. ++ [(use (match_operand 0 "general_operand" ""))]
  2659. ++ ""
  2660. ++ "
  2661. ++{
  2662. ++ microblaze_eh_return(operands[0]);
  2663. ++ DONE;
  2664. ++}")
  2665. ++
  2666. + (include "sync.md")
  2667. ++
  2668. +--
  2669. +1.8.3.2
  2670. +
  2671. diff --git a/package/gcc/4.9.1/841-PR60102.patch b/package/gcc/4.9.1/841-PR60102.patch
  2672. new file mode 100644
  2673. index 0000000..e34695d
  2674. --- /dev/null
  2675. +++ b/package/gcc/4.9.1/841-PR60102.patch
  2676. @@ -0,0 +1,388 @@
  2677. +From https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
  2678. +Target: 4.9.2
  2679. +
  2680. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  2681. +
  2682. +diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c gcc-4.9.1/gcc/config/rs6000/rs6000.c
  2683. +--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c 2014-08-05 14:53:37.294498582 -0300
  2684. ++++ gcc-4.9.1/gcc/config/rs6000/rs6000.c 2014-08-05 14:58:33.972555735 -0300
  2685. +@@ -1221,7 +1221,12 @@
  2686. + /* Soft frame pointer. */
  2687. + "sfp",
  2688. + /* HTM SPR registers. */
  2689. +- "tfhar", "tfiar", "texasr"
  2690. ++ "tfhar", "tfiar", "texasr",
  2691. ++ /* SPE High registers. */
  2692. ++ "0", "1", "2", "3", "4", "5", "6", "7",
  2693. ++ "8", "9", "10", "11", "12", "13", "14", "15",
  2694. ++ "16", "17", "18", "19", "20", "21", "22", "23",
  2695. ++ "24", "25", "26", "27", "28", "29", "30", "31"
  2696. + };
  2697. +
  2698. + #ifdef TARGET_REGNAMES
  2699. +@@ -1249,7 +1254,12 @@
  2700. + /* Soft frame pointer. */
  2701. + "sfp",
  2702. + /* HTM SPR registers. */
  2703. +- "tfhar", "tfiar", "texasr"
  2704. ++ "tfhar", "tfiar", "texasr",
  2705. ++ /* SPE High registers. */
  2706. ++ "%rh0", "%rh1", "%rh2", "%rh3", "%rh4", "%rh5", "%rh6", "%rh7",
  2707. ++ "%rh8", "%rh9", "%rh10", "%r11", "%rh12", "%rh13", "%rh14", "%rh15",
  2708. ++ "%rh16", "%rh17", "%rh18", "%rh19", "%rh20", "%rh21", "%rh22", "%rh23",
  2709. ++ "%rh24", "%rh25", "%rh26", "%rh27", "%rh28", "%rh29", "%rh30", "%rh31"
  2710. + };
  2711. + #endif
  2712. +
  2713. +@@ -31074,13 +31084,13 @@
  2714. + {
  2715. + if (BYTES_BIG_ENDIAN)
  2716. + {
  2717. +- parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
  2718. ++ parts[2 * i] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
  2719. + parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
  2720. + }
  2721. + else
  2722. + {
  2723. + parts[2 * i] = gen_rtx_REG (SImode, regno);
  2724. +- parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
  2725. ++ parts[2 * i + 1] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
  2726. + }
  2727. + }
  2728. +
  2729. +@@ -31100,11 +31110,11 @@
  2730. + rtx mem = gen_rtx_MEM (BLKmode, addr);
  2731. + rtx value = gen_int_mode (4, mode);
  2732. +
  2733. +- for (i = 1201; i < 1232; i++)
  2734. ++ for (i = FIRST_SPE_HIGH_REGNO; i < LAST_SPE_HIGH_REGNO+1; i++)
  2735. + {
  2736. +- int column = DWARF_REG_TO_UNWIND_COLUMN (i);
  2737. +- HOST_WIDE_INT offset
  2738. +- = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
  2739. ++ int column = DWARF_REG_TO_UNWIND_COLUMN
  2740. ++ (DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
  2741. ++ HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
  2742. +
  2743. + emit_move_insn (adjust_address (mem, mode, offset), value);
  2744. + }
  2745. +@@ -31123,9 +31133,9 @@
  2746. +
  2747. + for (i = FIRST_ALTIVEC_REGNO; i < LAST_ALTIVEC_REGNO+1; i++)
  2748. + {
  2749. +- int column = DWARF_REG_TO_UNWIND_COLUMN (i);
  2750. +- HOST_WIDE_INT offset
  2751. +- = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
  2752. ++ int column = DWARF_REG_TO_UNWIND_COLUMN
  2753. ++ (DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
  2754. ++ HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
  2755. +
  2756. + emit_move_insn (adjust_address (mem, mode, offset), value);
  2757. + }
  2758. +@@ -31157,9 +31167,8 @@
  2759. + return 99;
  2760. + if (regno == SPEFSCR_REGNO)
  2761. + return 612;
  2762. +- /* SPE high reg number. We get these values of regno from
  2763. +- rs6000_dwarf_register_span. */
  2764. +- gcc_assert (regno >= 1200 && regno < 1232);
  2765. ++ if (SPE_HIGH_REGNO_P (regno))
  2766. ++ return regno - FIRST_SPE_HIGH_REGNO + 1200;
  2767. + return regno;
  2768. + }
  2769. +
  2770. +diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h gcc-4.9.1/gcc/config/rs6000/rs6000.h
  2771. +--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h 2014-08-05 14:53:37.291498480 -0300
  2772. ++++ gcc-4.9.1/gcc/config/rs6000/rs6000.h 2014-08-05 14:58:33.974555802 -0300
  2773. +@@ -930,35 +930,36 @@
  2774. +
  2775. + The 3 HTM registers aren't also included in DWARF_FRAME_REGISTERS. */
  2776. +
  2777. +-#define FIRST_PSEUDO_REGISTER 117
  2778. ++#define FIRST_PSEUDO_REGISTER 149
  2779. +
  2780. + /* This must be included for pre gcc 3.0 glibc compatibility. */
  2781. + #define PRE_GCC3_DWARF_FRAME_REGISTERS 77
  2782. +
  2783. +-/* Add 32 dwarf columns for synthetic SPE registers. */
  2784. +-#define DWARF_FRAME_REGISTERS ((FIRST_PSEUDO_REGISTER - 4) + 32)
  2785. ++/* True if register is an SPE High register. */
  2786. ++#define SPE_HIGH_REGNO_P(N) \
  2787. ++ ((N) >= FIRST_SPE_HIGH_REGNO && (N) <= LAST_SPE_HIGH_REGNO)
  2788. ++
  2789. ++/* SPE high registers added as hard regs.
  2790. ++ The sfp register and 3 HTM registers
  2791. ++ aren't included in DWARF_FRAME_REGISTERS. */
  2792. ++#define DWARF_FRAME_REGISTERS (FIRST_PSEUDO_REGISTER - 4)
  2793. +
  2794. + /* The SPE has an additional 32 synthetic registers, with DWARF debug
  2795. + info numbering for these registers starting at 1200. While eh_frame
  2796. + register numbering need not be the same as the debug info numbering,
  2797. +- we choose to number these regs for eh_frame at 1200 too. This allows
  2798. +- future versions of the rs6000 backend to add hard registers and
  2799. +- continue to use the gcc hard register numbering for eh_frame. If the
  2800. +- extra SPE registers in eh_frame were numbered starting from the
  2801. +- current value of FIRST_PSEUDO_REGISTER, then if FIRST_PSEUDO_REGISTER
  2802. +- changed we'd need to introduce a mapping in DWARF_FRAME_REGNUM to
  2803. +- avoid invalidating older SPE eh_frame info.
  2804. ++ we choose to number these regs for eh_frame at 1200 too.
  2805. +
  2806. + We must map them here to avoid huge unwinder tables mostly consisting
  2807. + of unused space. */
  2808. + #define DWARF_REG_TO_UNWIND_COLUMN(r) \
  2809. +- ((r) > 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
  2810. ++ ((r) >= 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
  2811. +
  2812. + /* Use standard DWARF numbering for DWARF debugging information. */
  2813. + #define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
  2814. +
  2815. + /* Use gcc hard register numbering for eh_frame. */
  2816. +-#define DWARF_FRAME_REGNUM(REGNO) (REGNO)
  2817. ++#define DWARF_FRAME_REGNUM(REGNO) \
  2818. ++ (SPE_HIGH_REGNO_P (REGNO) ? ((REGNO) - FIRST_SPE_HIGH_REGNO + 1200) : (REGNO))
  2819. +
  2820. + /* Map register numbers held in the call frame info that gcc has
  2821. + collected using DWARF_FRAME_REGNUM to those that should be output in
  2822. +@@ -992,7 +993,10 @@
  2823. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2824. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2825. + 1, 1 \
  2826. +- , 1, 1, 1, 1, 1, 1 \
  2827. ++ , 1, 1, 1, 1, 1, 1, \
  2828. ++ /* SPE High registers. */ \
  2829. ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  2830. ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 \
  2831. + }
  2832. +
  2833. + /* 1 for registers not available across function calls.
  2834. +@@ -1012,7 +1016,10 @@
  2835. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2836. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2837. + 1, 1 \
  2838. +- , 1, 1, 1, 1, 1, 1 \
  2839. ++ , 1, 1, 1, 1, 1, 1, \
  2840. ++ /* SPE High registers. */ \
  2841. ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  2842. ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 \
  2843. + }
  2844. +
  2845. + /* Like `CALL_USED_REGISTERS' except this macro doesn't require that
  2846. +@@ -1031,7 +1038,10 @@
  2847. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2848. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2849. + 0, 0 \
  2850. +- , 0, 0, 0, 0, 0, 0 \
  2851. ++ , 0, 0, 0, 0, 0, 0, \
  2852. ++ /* SPE High registers. */ \
  2853. ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
  2854. ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  2855. + }
  2856. +
  2857. + #define TOTAL_ALTIVEC_REGS (LAST_ALTIVEC_REGNO - FIRST_ALTIVEC_REGNO + 1)
  2858. +@@ -1114,7 +1124,10 @@
  2859. + 96, 95, 94, 93, 92, 91, \
  2860. + 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, \
  2861. + 109, 110, \
  2862. +- 111, 112, 113, 114, 115, 116 \
  2863. ++ 111, 112, 113, 114, 115, 116, \
  2864. ++ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, \
  2865. ++ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, \
  2866. ++ 141, 142, 143, 144, 145, 146, 147, 148 \
  2867. + }
  2868. +
  2869. + /* True if register is floating-point. */
  2870. +@@ -1349,6 +1362,7 @@
  2871. + CR_REGS,
  2872. + NON_FLOAT_REGS,
  2873. + CA_REGS,
  2874. ++ SPE_HIGH_REGS,
  2875. + ALL_REGS,
  2876. + LIM_REG_CLASSES
  2877. + };
  2878. +@@ -1380,6 +1394,7 @@
  2879. + "CR_REGS", \
  2880. + "NON_FLOAT_REGS", \
  2881. + "CA_REGS", \
  2882. ++ "SPE_HIGH_REGS", \
  2883. + "ALL_REGS" \
  2884. + }
  2885. +
  2886. +@@ -1387,30 +1402,54 @@
  2887. + This is an initializer for a vector of HARD_REG_SET
  2888. + of length N_REG_CLASSES. */
  2889. +
  2890. +-#define REG_CLASS_CONTENTS \
  2891. +-{ \
  2892. +- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \
  2893. +- { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000 }, /* BASE_REGS */ \
  2894. +- { 0xffffffff, 0x00000000, 0x00000008, 0x00020000 }, /* GENERAL_REGS */ \
  2895. +- { 0x00000000, 0xffffffff, 0x00000000, 0x00000000 }, /* FLOAT_REGS */ \
  2896. +- { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff }, /* ALTIVEC_REGS */ \
  2897. +- { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff }, /* VSX_REGS */ \
  2898. +- { 0x00000000, 0x00000000, 0x00000000, 0x00002000 }, /* VRSAVE_REGS */ \
  2899. +- { 0x00000000, 0x00000000, 0x00000000, 0x00004000 }, /* VSCR_REGS */ \
  2900. +- { 0x00000000, 0x00000000, 0x00000000, 0x00008000 }, /* SPE_ACC_REGS */ \
  2901. +- { 0x00000000, 0x00000000, 0x00000000, 0x00010000 }, /* SPEFSCR_REGS */ \
  2902. +- { 0x00000000, 0x00000000, 0x00000000, 0x00040000 }, /* SPR_REGS */ \
  2903. +- { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000 }, /* NON_SPECIAL_REGS */ \
  2904. +- { 0x00000000, 0x00000000, 0x00000002, 0x00000000 }, /* LINK_REGS */ \
  2905. +- { 0x00000000, 0x00000000, 0x00000004, 0x00000000 }, /* CTR_REGS */ \
  2906. +- { 0x00000000, 0x00000000, 0x00000006, 0x00000000 }, /* LINK_OR_CTR_REGS */ \
  2907. +- { 0x00000000, 0x00000000, 0x00000006, 0x00002000 }, /* SPECIAL_REGS */ \
  2908. +- { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \
  2909. +- { 0x00000000, 0x00000000, 0x00000010, 0x00000000 }, /* CR0_REGS */ \
  2910. +- { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000 }, /* CR_REGS */ \
  2911. +- { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000 }, /* NON_FLOAT_REGS */ \
  2912. +- { 0x00000000, 0x00000000, 0x00001000, 0x00000000 }, /* CA_REGS */ \
  2913. +- { 0xffffffff, 0xffffffff, 0xfffffffe, 0x0007ffff } /* ALL_REGS */ \
  2914. ++#define REG_CLASS_CONTENTS \
  2915. ++{ \
  2916. ++ /* NO_REGS. */ \
  2917. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, \
  2918. ++ /* BASE_REGS. */ \
  2919. ++ { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000, 0x00000000 }, \
  2920. ++ /* GENERAL_REGS. */ \
  2921. ++ { 0xffffffff, 0x00000000, 0x00000008, 0x00020000, 0x00000000 }, \
  2922. ++ /* FLOAT_REGS. */ \
  2923. ++ { 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000 }, \
  2924. ++ /* ALTIVEC_REGS. */ \
  2925. ++ { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff, 0x00000000 }, \
  2926. ++ /* VSX_REGS. */ \
  2927. ++ { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff, 0x00000000 }, \
  2928. ++ /* VRSAVE_REGS. */ \
  2929. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00000000 }, \
  2930. ++ /* VSCR_REGS. */ \
  2931. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000 }, \
  2932. ++ /* SPE_ACC_REGS. */ \
  2933. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000 }, \
  2934. ++ /* SPEFSCR_REGS. */ \
  2935. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000 }, \
  2936. ++ /* SPR_REGS. */ \
  2937. ++ { 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00000000 }, \
  2938. ++ /* NON_SPECIAL_REGS. */ \
  2939. ++ { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000, 0x00000000 }, \
  2940. ++ /* LINK_REGS. */ \
  2941. ++ { 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000 }, \
  2942. ++ /* CTR_REGS. */ \
  2943. ++ { 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000 }, \
  2944. ++ /* LINK_OR_CTR_REGS. */ \
  2945. ++ { 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000 }, \
  2946. ++ /* SPECIAL_REGS. */ \
  2947. ++ { 0x00000000, 0x00000000, 0x00000006, 0x00002000, 0x00000000 }, \
  2948. ++ /* SPEC_OR_GEN_REGS. */ \
  2949. ++ { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000, 0x00000000 }, \
  2950. ++ /* CR0_REGS. */ \
  2951. ++ { 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000000 }, \
  2952. ++ /* CR_REGS. */ \
  2953. ++ { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000, 0x00000000 }, \
  2954. ++ /* NON_FLOAT_REGS. */ \
  2955. ++ { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000, 0x00000000 }, \
  2956. ++ /* CA_REGS. */ \
  2957. ++ { 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x00000000 }, \
  2958. ++ /* SPE_HIGH_REGS. */ \
  2959. ++ { 0x00000000, 0x00000000, 0x00000000, 0xffe00000, 0x001fffff }, \
  2960. ++ /* ALL_REGS. */ \
  2961. ++ { 0xffffffff, 0xffffffff, 0xfffffffe, 0xffe7ffff, 0x001fffff } \
  2962. + }
  2963. +
  2964. + /* The same information, inverted:
  2965. +@@ -2349,6 +2388,39 @@
  2966. + &rs6000_reg_names[114][0], /* tfhar */ \
  2967. + &rs6000_reg_names[115][0], /* tfiar */ \
  2968. + &rs6000_reg_names[116][0], /* texasr */ \
  2969. ++ \
  2970. ++ &rs6000_reg_names[117][0], /* SPE rh0. */ \
  2971. ++ &rs6000_reg_names[118][0], /* SPE rh1. */ \
  2972. ++ &rs6000_reg_names[119][0], /* SPE rh2. */ \
  2973. ++ &rs6000_reg_names[120][0], /* SPE rh3. */ \
  2974. ++ &rs6000_reg_names[121][0], /* SPE rh4. */ \
  2975. ++ &rs6000_reg_names[122][0], /* SPE rh5. */ \
  2976. ++ &rs6000_reg_names[123][0], /* SPE rh6. */ \
  2977. ++ &rs6000_reg_names[124][0], /* SPE rh7. */ \
  2978. ++ &rs6000_reg_names[125][0], /* SPE rh8. */ \
  2979. ++ &rs6000_reg_names[126][0], /* SPE rh9. */ \
  2980. ++ &rs6000_reg_names[127][0], /* SPE rh10. */ \
  2981. ++ &rs6000_reg_names[128][0], /* SPE rh11. */ \
  2982. ++ &rs6000_reg_names[129][0], /* SPE rh12. */ \
  2983. ++ &rs6000_reg_names[130][0], /* SPE rh13. */ \
  2984. ++ &rs6000_reg_names[131][0], /* SPE rh14. */ \
  2985. ++ &rs6000_reg_names[132][0], /* SPE rh15. */ \
  2986. ++ &rs6000_reg_names[133][0], /* SPE rh16. */ \
  2987. ++ &rs6000_reg_names[134][0], /* SPE rh17. */ \
  2988. ++ &rs6000_reg_names[135][0], /* SPE rh18. */ \
  2989. ++ &rs6000_reg_names[136][0], /* SPE rh19. */ \
  2990. ++ &rs6000_reg_names[137][0], /* SPE rh20. */ \
  2991. ++ &rs6000_reg_names[138][0], /* SPE rh21. */ \
  2992. ++ &rs6000_reg_names[139][0], /* SPE rh22. */ \
  2993. ++ &rs6000_reg_names[140][0], /* SPE rh22. */ \
  2994. ++ &rs6000_reg_names[141][0], /* SPE rh24. */ \
  2995. ++ &rs6000_reg_names[142][0], /* SPE rh25. */ \
  2996. ++ &rs6000_reg_names[143][0], /* SPE rh26. */ \
  2997. ++ &rs6000_reg_names[144][0], /* SPE rh27. */ \
  2998. ++ &rs6000_reg_names[145][0], /* SPE rh28. */ \
  2999. ++ &rs6000_reg_names[146][0], /* SPE rh29. */ \
  3000. ++ &rs6000_reg_names[147][0], /* SPE rh30. */ \
  3001. ++ &rs6000_reg_names[148][0], /* SPE rh31. */ \
  3002. + }
  3003. +
  3004. + /* Table of additional register names to use in user input. */
  3005. +@@ -2404,7 +2476,17 @@
  3006. + {"vs56", 101},{"vs57", 102},{"vs58", 103},{"vs59", 104}, \
  3007. + {"vs60", 105},{"vs61", 106},{"vs62", 107},{"vs63", 108}, \
  3008. + /* Transactional Memory Facility (HTM) Registers. */ \
  3009. +- {"tfhar", 114}, {"tfiar", 115}, {"texasr", 116} }
  3010. ++ {"tfhar", 114}, {"tfiar", 115}, {"texasr", 116}, \
  3011. ++ /* SPE high registers. */ \
  3012. ++ {"rh0", 117}, {"rh1", 118}, {"rh2", 119}, {"rh3", 120}, \
  3013. ++ {"rh4", 121}, {"rh5", 122}, {"rh6", 123}, {"rh7", 124}, \
  3014. ++ {"rh8", 125}, {"rh9", 126}, {"rh10", 127}, {"rh11", 128}, \
  3015. ++ {"rh12", 129}, {"rh13", 130}, {"rh14", 131}, {"rh15", 132}, \
  3016. ++ {"rh16", 133}, {"rh17", 134}, {"rh18", 135}, {"rh19", 136}, \
  3017. ++ {"rh20", 137}, {"rh21", 138}, {"rh22", 139}, {"rh23", 140}, \
  3018. ++ {"rh24", 141}, {"rh25", 142}, {"rh26", 143}, {"rh27", 144}, \
  3019. ++ {"rh28", 145}, {"rh29", 146}, {"rh30", 147}, {"rh31", 148}, \
  3020. ++}
  3021. +
  3022. + /* This is how to output an element of a case-vector that is relative. */
  3023. +
  3024. +diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md gcc-4.9.1/gcc/config/rs6000/rs6000.md
  3025. +--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md 2014-08-05 14:53:37.292498514 -0300
  3026. ++++ gcc-4.9.1/gcc/config/rs6000/rs6000.md 2014-08-05 14:58:33.977555904 -0300
  3027. +@@ -56,6 +56,8 @@
  3028. + (TFHAR_REGNO 114)
  3029. + (TFIAR_REGNO 115)
  3030. + (TEXASR_REGNO 116)
  3031. ++ (FIRST_SPE_HIGH_REGNO 117)
  3032. ++ (LAST_SPE_HIGH_REGNO 148)
  3033. + ])
  3034. +
  3035. + ;;
  3036. +diff -Nura gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c
  3037. +--- gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c 1969-12-31 21:00:00.000000000 -0300
  3038. ++++ gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c 2014-08-05 14:58:13.847873524 -0300
  3039. +@@ -0,0 +1,11 @@
  3040. ++/* { dg-do compile } */
  3041. ++/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
  3042. ++/* { dg-options "-mcpu=8548 -mspe -mabi=spe -g -mfloat-gprs=double" } */
  3043. ++
  3044. ++double
  3045. ++pr60102 (double x, int m)
  3046. ++{
  3047. ++ double y;
  3048. ++ y = m % 2 ? x : 1;
  3049. ++ return y;
  3050. ++}
  3051. +diff -Nura gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h
  3052. +--- gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h 2014-08-05 14:53:48.900892029 -0300
  3053. ++++ gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h 2014-08-05 14:58:33.979555972 -0300
  3054. +@@ -274,8 +274,8 @@
  3055. + #ifdef __SPE__
  3056. + for (i = 14; i < 32; i++)
  3057. + {
  3058. +- fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].how = REG_SAVED_OFFSET;
  3059. +- fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].loc.offset
  3060. ++ fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].how = REG_SAVED_OFFSET;
  3061. ++ fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].loc.offset
  3062. + = (long) &regs->vregs - new_cfa + 4 * i;
  3063. + }
  3064. + #endif
  3065. diff --git a/package/gcc/4.9.1/900-musl-support.patch b/package/gcc/4.9.1/900-musl-support.patch
  3066. new file mode 100644
  3067. index 0000000..5b3dfa5
  3068. --- /dev/null
  3069. +++ b/package/gcc/4.9.1/900-musl-support.patch
  3070. @@ -0,0 +1,696 @@
  3071. +Add musl support to gcc
  3072. +
  3073. +This patch comes from the musl-cross project at
  3074. +https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
  3075. +
  3076. + * the config.sub modifications have been removed, because Buildroot
  3077. + already overwrites all config.sub with a more recent config.sub
  3078. + that has musl support.
  3079. +
  3080. + * change to ensure that a dummy dynamic linker path
  3081. + MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
  3082. + otherwise building gcc for architectures not supported by musl was
  3083. + causing build failure. Bug reported upstream at
  3084. + https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
  3085. +
  3086. +[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
  3087. +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  3088. +---
  3089. +
  3090. +Index: b/fixincludes/mkfixinc.sh
  3091. +===================================================================
  3092. +--- a/fixincludes/mkfixinc.sh
  3093. ++++ b/fixincludes/mkfixinc.sh
  3094. +@@ -19,7 +19,8 @@
  3095. + powerpc-*-eabi* | \
  3096. + powerpc-*-rtems* | \
  3097. + powerpcle-*-eabisim* | \
  3098. +- powerpcle-*-eabi* )
  3099. ++ powerpcle-*-eabi* | \
  3100. ++ *-musl* )
  3101. + # IF there is no include fixing,
  3102. + # THEN create a no-op fixer and exit
  3103. + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
  3104. +Index: b/gcc/config.gcc
  3105. +===================================================================
  3106. +--- a/gcc/config.gcc
  3107. ++++ b/gcc/config.gcc
  3108. +@@ -594,7 +594,7 @@
  3109. + esac
  3110. +
  3111. + # Common C libraries.
  3112. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
  3113. ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
  3114. +
  3115. + # 32-bit x86 processors supported by --with-arch=. Each processor
  3116. + # MUST be separated by exactly one space.
  3117. +@@ -719,6 +719,9 @@
  3118. + *-*-*uclibc*)
  3119. + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
  3120. + ;;
  3121. ++ *-*-*musl*)
  3122. ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
  3123. ++ ;;
  3124. + *)
  3125. + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
  3126. + ;;
  3127. +@@ -2323,6 +2326,10 @@
  3128. + powerpc*-*-linux*paired*)
  3129. + tm_file="${tm_file} rs6000/750cl.h" ;;
  3130. + esac
  3131. ++ case ${target} in
  3132. ++ *-linux*-musl*)
  3133. ++ enable_secureplt=yes ;;
  3134. ++ esac
  3135. + if test x${enable_secureplt} = xyes; then
  3136. + tm_file="rs6000/secureplt.h ${tm_file}"
  3137. + fi
  3138. +Index: b/gcc/config/aarch64/aarch64-linux.h
  3139. +===================================================================
  3140. +--- a/gcc/config/aarch64/aarch64-linux.h
  3141. ++++ b/gcc/config/aarch64/aarch64-linux.h
  3142. +@@ -22,6 +22,8 @@
  3143. + #define GCC_AARCH64_LINUX_H
  3144. +
  3145. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
  3146. ++#undef MUSL_DYNAMIC_LINKER
  3147. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
  3148. +
  3149. + #define CPP_SPEC "%{pthread:-D_REENTRANT}"
  3150. +
  3151. +Index: b/gcc/config/arm/linux-eabi.h
  3152. +===================================================================
  3153. +--- a/gcc/config/arm/linux-eabi.h
  3154. ++++ b/gcc/config/arm/linux-eabi.h
  3155. +@@ -77,6 +77,23 @@
  3156. + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
  3157. + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
  3158. +
  3159. ++/* For ARM musl currently supports four dynamic linkers:
  3160. ++ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
  3161. ++ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
  3162. ++ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
  3163. ++ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
  3164. ++ musl does not support the legacy OABI mode.
  3165. ++ All the dynamic linkers live in /lib.
  3166. ++ We default to soft-float, EL. */
  3167. ++#undef MUSL_DYNAMIC_LINKER
  3168. ++#if TARGET_BIG_ENDIAN_DEFAULT
  3169. ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
  3170. ++#else
  3171. ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
  3172. ++#endif
  3173. ++#define MUSL_DYNAMIC_LINKER \
  3174. ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
  3175. ++
  3176. + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
  3177. + use the GNU/Linux version, not the generic BPABI version. */
  3178. + #undef LINK_SPEC
  3179. +Index: b/gcc/config/i386/linux.h
  3180. +===================================================================
  3181. +--- a/gcc/config/i386/linux.h
  3182. ++++ b/gcc/config/i386/linux.h
  3183. +@@ -21,3 +21,5 @@
  3184. +
  3185. + #define GNU_USER_LINK_EMULATION "elf_i386"
  3186. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  3187. ++#undef MUSL_DYNAMIC_LINKER
  3188. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
  3189. +Index: b/gcc/config/i386/linux64.h
  3190. +===================================================================
  3191. +--- a/gcc/config/i386/linux64.h
  3192. ++++ b/gcc/config/i386/linux64.h
  3193. +@@ -30,3 +30,10 @@
  3194. + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
  3195. + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
  3196. + #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
  3197. ++
  3198. ++#undef MUSL_DYNAMIC_LINKER32
  3199. ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
  3200. ++#undef MUSL_DYNAMIC_LINKER64
  3201. ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
  3202. ++#undef MUSL_DYNAMIC_LINKERX32
  3203. ++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
  3204. +Index: b/gcc/config/linux.h
  3205. +===================================================================
  3206. +--- a/gcc/config/linux.h
  3207. ++++ b/gcc/config/linux.h
  3208. +@@ -32,10 +32,12 @@
  3209. + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
  3210. + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
  3211. + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
  3212. ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
  3213. + #else
  3214. + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
  3215. + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
  3216. + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
  3217. ++#define OPTION_MUSL (linux_libc == LIBC_MUSL)
  3218. + #endif
  3219. +
  3220. + #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
  3221. +@@ -53,18 +55,21 @@
  3222. + uClibc or Bionic is the default C library and whether
  3223. + -muclibc or -mglibc or -mbionic has been passed to change the default. */
  3224. +
  3225. +-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
  3226. +- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
  3227. ++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
  3228. ++ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
  3229. +
  3230. + #if DEFAULT_LIBC == LIBC_GLIBC
  3231. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  3232. +- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
  3233. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  3234. ++ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
  3235. + #elif DEFAULT_LIBC == LIBC_UCLIBC
  3236. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  3237. +- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
  3238. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  3239. ++ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
  3240. + #elif DEFAULT_LIBC == LIBC_BIONIC
  3241. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  3242. +- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
  3243. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  3244. ++ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
  3245. ++#elif DEFAULT_LIBC == LIBC_MUSL
  3246. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  3247. ++ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
  3248. + #else
  3249. + #error "Unsupported DEFAULT_LIBC"
  3250. + #endif /* DEFAULT_LIBC */
  3251. +@@ -82,23 +87,103 @@
  3252. + #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
  3253. + #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
  3254. +
  3255. ++/* Musl dynamic linker paths must be defined on a per-architecture
  3256. ++ basis, for each architecture supported by Musl. However, in order
  3257. ++ to let other architectures continue to build with other C
  3258. ++ libraries, we provide a dummy definition of the following defines. */
  3259. ++#define MUSL_DYNAMIC_LINKER "invalid"
  3260. ++#define MUSL_DYNAMIC_LINKER32 "invalid"
  3261. ++#define MUSL_DYNAMIC_LINKER64 "invalid"
  3262. ++#define MUSL_DYNAMIC_LINKERX32 "invalid"
  3263. ++
  3264. + #define GNU_USER_DYNAMIC_LINKER \
  3265. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
  3266. +- BIONIC_DYNAMIC_LINKER)
  3267. ++ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
  3268. + #define GNU_USER_DYNAMIC_LINKER32 \
  3269. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
  3270. +- BIONIC_DYNAMIC_LINKER32)
  3271. ++ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
  3272. + #define GNU_USER_DYNAMIC_LINKER64 \
  3273. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
  3274. +- BIONIC_DYNAMIC_LINKER64)
  3275. ++ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
  3276. + #define GNU_USER_DYNAMIC_LINKERX32 \
  3277. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
  3278. +- BIONIC_DYNAMIC_LINKERX32)
  3279. ++ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
  3280. +
  3281. + /* Whether we have Bionic libc runtime */
  3282. + #undef TARGET_HAS_BIONIC
  3283. + #define TARGET_HAS_BIONIC (OPTION_BIONIC)
  3284. +
  3285. ++/* musl avoids problematic includes by rearranging the include directories.
  3286. ++ * Unfortunately, this is mostly duplicated from cppdefault.c */
  3287. ++#if DEFAULT_LIBC == LIBC_MUSL
  3288. ++#define INCLUDE_DEFAULTS_MUSL_GPP \
  3289. ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
  3290. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
  3291. ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
  3292. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
  3293. ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
  3294. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
  3295. ++
  3296. ++#ifdef LOCAL_INCLUDE_DIR
  3297. ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \
  3298. ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
  3299. ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
  3300. ++#else
  3301. ++#define INCLUDE_DEFAULTS_MUSL_LOCAL
  3302. ++#endif
  3303. ++
  3304. ++#ifdef PREFIX_INCLUDE_DIR
  3305. ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \
  3306. ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
  3307. ++#else
  3308. ++#define INCLUDE_DEFAULTS_MUSL_PREFIX
  3309. ++#endif
  3310. ++
  3311. ++#ifdef CROSS_INCLUDE_DIR
  3312. ++#define INCLUDE_DEFAULTS_MUSL_CROSS \
  3313. ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
  3314. ++#else
  3315. ++#define INCLUDE_DEFAULTS_MUSL_CROSS
  3316. ++#endif
  3317. ++
  3318. ++#ifdef TOOL_INCLUDE_DIR
  3319. ++#define INCLUDE_DEFAULTS_MUSL_TOOL \
  3320. ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
  3321. ++#else
  3322. ++#define INCLUDE_DEFAULTS_MUSL_TOOL
  3323. ++#endif
  3324. ++
  3325. ++#ifdef NATIVE_SYSTEM_HEADER_DIR
  3326. ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \
  3327. ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
  3328. ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
  3329. ++#else
  3330. ++#define INCLUDE_DEFAULTS_MUSL_NATIVE
  3331. ++#endif
  3332. ++
  3333. ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
  3334. ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
  3335. ++# define INCLUDE_DEFAULTS_MUSL_LOCAL
  3336. ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
  3337. ++# define INCLUDE_DEFAULTS_MUSL_NATIVE
  3338. ++#else
  3339. ++# undef INCLUDE_DEFAULTS_MUSL_CROSS
  3340. ++# define INCLUDE_DEFAULTS_MUSL_CROSS
  3341. ++#endif
  3342. ++
  3343. ++#undef INCLUDE_DEFAULTS
  3344. ++#define INCLUDE_DEFAULTS \
  3345. ++ { \
  3346. ++ INCLUDE_DEFAULTS_MUSL_GPP \
  3347. ++ INCLUDE_DEFAULTS_MUSL_PREFIX \
  3348. ++ INCLUDE_DEFAULTS_MUSL_CROSS \
  3349. ++ INCLUDE_DEFAULTS_MUSL_TOOL \
  3350. ++ INCLUDE_DEFAULTS_MUSL_NATIVE \
  3351. ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
  3352. ++ { 0, 0, 0, 0, 0, 0 } \
  3353. ++ }
  3354. ++#endif
  3355. ++
  3356. + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
  3357. + /* This is a *uclinux* target. We don't define below macros to normal linux
  3358. + versions, because doing so would require *uclinux* targets to include
  3359. +Index: b/gcc/config/linux.opt
  3360. +===================================================================
  3361. +--- a/gcc/config/linux.opt
  3362. ++++ b/gcc/config/linux.opt
  3363. +@@ -30,3 +30,7 @@
  3364. + muclibc
  3365. + Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
  3366. + Use uClibc C library
  3367. ++
  3368. ++mmusl
  3369. ++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
  3370. ++Use musl C library
  3371. +Index: b/gcc/config/microblaze/linux.h
  3372. +===================================================================
  3373. +--- a/gcc/config/microblaze/linux.h
  3374. ++++ b/gcc/config/microblaze/linux.h
  3375. +@@ -25,7 +25,23 @@
  3376. + #undef TLS_NEEDS_GOT
  3377. + #define TLS_NEEDS_GOT 1
  3378. +
  3379. +-#define DYNAMIC_LINKER "/lib/ld.so.1"
  3380. ++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
  3381. ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
  3382. ++#else
  3383. ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
  3384. ++#endif
  3385. ++
  3386. ++#undef MUSL_DYNAMIC_LINKER
  3387. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
  3388. ++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  3389. ++
  3390. ++#if DEFAULT_LIBC == LIBC_MUSL
  3391. ++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
  3392. ++#else
  3393. ++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
  3394. ++#endif
  3395. ++
  3396. ++
  3397. + #undef SUBTARGET_EXTRA_SPECS
  3398. + #define SUBTARGET_EXTRA_SPECS \
  3399. + { "dynamic_linker", DYNAMIC_LINKER }
  3400. +Index: b/gcc/config/rs6000/linux64.h
  3401. +===================================================================
  3402. +--- a/gcc/config/rs6000/linux64.h
  3403. ++++ b/gcc/config/rs6000/linux64.h
  3404. +@@ -375,17 +375,23 @@
  3405. + #endif
  3406. + #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
  3407. + #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
  3408. ++#undef MUSL_DYNAMIC_LINKER32
  3409. ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
  3410. ++#undef MUSL_DYNAMIC_LINKER64
  3411. ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
  3412. + #if DEFAULT_LIBC == LIBC_UCLIBC
  3413. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
  3414. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
  3415. + #elif DEFAULT_LIBC == LIBC_GLIBC
  3416. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
  3417. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
  3418. ++#elif DEFAULT_LIBC == LIBC_MUSL
  3419. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
  3420. + #else
  3421. + #error "Unsupported DEFAULT_LIBC"
  3422. + #endif
  3423. + #define GNU_USER_DYNAMIC_LINKER32 \
  3424. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
  3425. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
  3426. + #define GNU_USER_DYNAMIC_LINKER64 \
  3427. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
  3428. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
  3429. +
  3430. + #undef DEFAULT_ASM_ENDIAN
  3431. + #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  3432. +Index: b/gcc/config/rs6000/secureplt.h
  3433. +===================================================================
  3434. +--- a/gcc/config/rs6000/secureplt.h
  3435. ++++ b/gcc/config/rs6000/secureplt.h
  3436. +@@ -18,3 +18,4 @@
  3437. + <http://www.gnu.org/licenses/>. */
  3438. +
  3439. + #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
  3440. ++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
  3441. +Index: b/gcc/config/rs6000/sysv4.h
  3442. +===================================================================
  3443. +--- a/gcc/config/rs6000/sysv4.h
  3444. ++++ b/gcc/config/rs6000/sysv4.h
  3445. +@@ -537,6 +537,9 @@
  3446. + #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
  3447. + #define CC1_SECURE_PLT_DEFAULT_SPEC ""
  3448. + #endif
  3449. ++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
  3450. ++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
  3451. ++#endif
  3452. +
  3453. + /* Pass -G xxx to the compiler. */
  3454. + #define CC1_SPEC "%{G*} %(cc1_cpu)" \
  3455. +@@ -585,7 +588,8 @@
  3456. +
  3457. + /* Override the default target of the linker. */
  3458. + #define LINK_TARGET_SPEC \
  3459. +- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
  3460. ++ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
  3461. ++ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
  3462. +
  3463. + /* Any specific OS flags. */
  3464. + #define LINK_OS_SPEC "\
  3465. +@@ -763,15 +767,18 @@
  3466. +
  3467. + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  3468. + #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
  3469. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
  3470. + #if DEFAULT_LIBC == LIBC_UCLIBC
  3471. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
  3472. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
  3473. ++#elif DEFAULT_LIBC == LIBC_MUSL
  3474. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
  3475. + #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
  3476. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
  3477. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
  3478. + #else
  3479. + #error "Unsupported DEFAULT_LIBC"
  3480. + #endif
  3481. + #define GNU_USER_DYNAMIC_LINKER \
  3482. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
  3483. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
  3484. +
  3485. + #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
  3486. + %{rdynamic:-export-dynamic} \
  3487. +@@ -894,6 +901,7 @@
  3488. + { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
  3489. + { "link_os_default", LINK_OS_DEFAULT_SPEC }, \
  3490. + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
  3491. ++ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
  3492. + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \
  3493. + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
  3494. + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
  3495. +Index: b/gcc/config/sh/linux.h
  3496. +===================================================================
  3497. +--- a/gcc/config/sh/linux.h
  3498. ++++ b/gcc/config/sh/linux.h
  3499. +@@ -43,7 +43,15 @@
  3500. +
  3501. + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  3502. +
  3503. ++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
  3504. ++#define MUSL_DYNAMIC_LINKER_E "eb"
  3505. ++#else
  3506. ++#define MUSL_DYNAMIC_LINKER_E
  3507. ++#endif
  3508. ++
  3509. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  3510. ++#undef MUSL_DYNAMIC_LINKER
  3511. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
  3512. +
  3513. + #undef SUBTARGET_LINK_EMUL_SUFFIX
  3514. + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
  3515. +Index: b/gcc/configure
  3516. +===================================================================
  3517. +--- a/gcc/configure
  3518. ++++ b/gcc/configure
  3519. +@@ -27300,6 +27300,9 @@
  3520. + else
  3521. + gcc_cv_libc_provides_ssp=no
  3522. + case "$target" in
  3523. ++ *-*-musl*)
  3524. ++ # All versions of musl provide stack protector
  3525. ++ gcc_cv_libc_provides_ssp=yes;;
  3526. + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
  3527. + # glibc 2.4 and later provides __stack_chk_fail and
  3528. + # either __stack_chk_guard, or TLS access to stack guard canary.
  3529. +@@ -27332,6 +27335,7 @@
  3530. + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
  3531. + # simply assert that glibc does provide this, which is true for all
  3532. + # realistically usable GNU/Hurd configurations.
  3533. ++ # All supported versions of musl provide it as well
  3534. + gcc_cv_libc_provides_ssp=yes;;
  3535. + *-*-darwin* | *-*-freebsd*)
  3536. + ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
  3537. +@@ -27421,6 +27425,9 @@
  3538. + gcc_cv_target_dl_iterate_phdr=no
  3539. + fi
  3540. + ;;
  3541. ++ *-linux-musl*)
  3542. ++ gcc_cv_target_dl_iterate_phdr=yes
  3543. ++ ;;
  3544. + esac
  3545. +
  3546. + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
  3547. +Index: b/gcc/configure.ac
  3548. +===================================================================
  3549. +--- a/gcc/configure.ac
  3550. ++++ b/gcc/configure.ac
  3551. +@@ -5001,6 +5001,9 @@
  3552. + gcc_cv_libc_provides_ssp,
  3553. + [gcc_cv_libc_provides_ssp=no
  3554. + case "$target" in
  3555. ++ *-*-musl*)
  3556. ++ # All versions of musl provide stack protector
  3557. ++ gcc_cv_libc_provides_ssp=yes;;
  3558. + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
  3559. + # glibc 2.4 and later provides __stack_chk_fail and
  3560. + # either __stack_chk_guard, or TLS access to stack guard canary.
  3561. +@@ -5027,6 +5030,7 @@
  3562. + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
  3563. + # simply assert that glibc does provide this, which is true for all
  3564. + # realistically usable GNU/Hurd configurations.
  3565. ++ # All supported versions of musl provide it as well
  3566. + gcc_cv_libc_provides_ssp=yes;;
  3567. + *-*-darwin* | *-*-freebsd*)
  3568. + AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
  3569. +@@ -5093,6 +5097,9 @@
  3570. + gcc_cv_target_dl_iterate_phdr=no
  3571. + fi
  3572. + ;;
  3573. ++ *-linux-musl*)
  3574. ++ gcc_cv_target_dl_iterate_phdr=yes
  3575. ++ ;;
  3576. + esac
  3577. + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
  3578. + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
  3579. +Index: b/gcc/ginclude/stddef.h
  3580. +===================================================================
  3581. +--- a/gcc/ginclude/stddef.h
  3582. ++++ b/gcc/ginclude/stddef.h
  3583. +@@ -181,6 +181,7 @@
  3584. + #ifndef _GCC_SIZE_T
  3585. + #ifndef _SIZET_
  3586. + #ifndef __size_t
  3587. ++#ifndef __DEFINED_size_t /* musl */
  3588. + #define __size_t__ /* BeOS */
  3589. + #define __SIZE_T__ /* Cray Unicos/Mk */
  3590. + #define _SIZE_T
  3591. +@@ -197,6 +198,7 @@
  3592. + #define ___int_size_t_h
  3593. + #define _GCC_SIZE_T
  3594. + #define _SIZET_
  3595. ++#define __DEFINED_size_t /* musl */
  3596. + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
  3597. + || defined(__FreeBSD_kernel__)
  3598. + /* __size_t is a typedef on FreeBSD 5, must not trash it. */
  3599. +@@ -214,6 +216,7 @@
  3600. + typedef long ssize_t;
  3601. + #endif /* __BEOS__ */
  3602. + #endif /* !(defined (__GNUG__) && defined (size_t)) */
  3603. ++#endif /* __DEFINED_size_t */
  3604. + #endif /* __size_t */
  3605. + #endif /* _SIZET_ */
  3606. + #endif /* _GCC_SIZE_T */
  3607. +Index: b/libgcc/unwind-dw2-fde-dip.c
  3608. +===================================================================
  3609. +--- a/libgcc/unwind-dw2-fde-dip.c
  3610. ++++ b/libgcc/unwind-dw2-fde-dip.c
  3611. +@@ -46,33 +46,13 @@
  3612. + #include "unwind-compat.h"
  3613. + #include "gthr.h"
  3614. +
  3615. +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  3616. +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
  3617. +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
  3618. +-# define USE_PT_GNU_EH_FRAME
  3619. +-#endif
  3620. +-
  3621. +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  3622. +- && defined(__BIONIC__)
  3623. +-# define USE_PT_GNU_EH_FRAME
  3624. +-#endif
  3625. +-
  3626. +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  3627. +- && defined(__FreeBSD__) && __FreeBSD__ >= 7
  3628. +-# define ElfW __ElfN
  3629. +-# define USE_PT_GNU_EH_FRAME
  3630. +-#endif
  3631. +-
  3632. +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  3633. +- && defined(__OpenBSD__)
  3634. +-# define ElfW(type) Elf_##type
  3635. +-# define USE_PT_GNU_EH_FRAME
  3636. +-#endif
  3637. +-
  3638. +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  3639. +- && defined(TARGET_DL_ITERATE_PHDR) \
  3640. +- && defined(__sun__) && defined(__svr4__)
  3641. ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
  3642. + # define USE_PT_GNU_EH_FRAME
  3643. ++# ifdef __OpenBSD__
  3644. ++# define ElfW(type) Elf_##type
  3645. ++# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
  3646. ++# define ElfW __ElfN
  3647. ++# endif
  3648. + #endif
  3649. +
  3650. + #if defined(USE_PT_GNU_EH_FRAME)
  3651. +Index: b/libgomp/config/posix/time.c
  3652. +===================================================================
  3653. +--- a/libgomp/config/posix/time.c
  3654. ++++ b/libgomp/config/posix/time.c
  3655. +@@ -28,6 +28,8 @@
  3656. + The following implementation uses the most simple POSIX routines.
  3657. + If present, POSIX 4 clocks should be used instead. */
  3658. +
  3659. ++#define _POSIX_C_SOURCE 199309L /* for clocks */
  3660. ++
  3661. + #include "libgomp.h"
  3662. + #include <unistd.h>
  3663. + #if TIME_WITH_SYS_TIME
  3664. +Index: b/libitm/config/arm/hwcap.cc
  3665. +===================================================================
  3666. +--- a/libitm/config/arm/hwcap.cc
  3667. ++++ b/libitm/config/arm/hwcap.cc
  3668. +@@ -40,7 +40,11 @@
  3669. +
  3670. + #ifdef __linux__
  3671. + #include <unistd.h>
  3672. ++#ifdef __GLIBC__
  3673. + #include <sys/fcntl.h>
  3674. ++#else
  3675. ++#include <fcntl.h>
  3676. ++#endif
  3677. + #include <elf.h>
  3678. +
  3679. + static void __attribute__((constructor))
  3680. +Index: b/libitm/config/linux/x86/tls.h
  3681. +===================================================================
  3682. +--- a/libitm/config/linux/x86/tls.h
  3683. ++++ b/libitm/config/linux/x86/tls.h
  3684. +@@ -25,16 +25,19 @@
  3685. + #ifndef LIBITM_X86_TLS_H
  3686. + #define LIBITM_X86_TLS_H 1
  3687. +
  3688. +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
  3689. ++#if defined(__GLIBC_PREREQ)
  3690. ++#if __GLIBC_PREREQ(2, 10)
  3691. + /* Use slots in the TCB head rather than __thread lookups.
  3692. + GLIBC has reserved words 10 through 13 for TM. */
  3693. + #define HAVE_ARCH_GTM_THREAD 1
  3694. + #define HAVE_ARCH_GTM_THREAD_DISP 1
  3695. + #endif
  3696. ++#endif
  3697. +
  3698. + #include "config/generic/tls.h"
  3699. +
  3700. +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
  3701. ++#if defined(__GLIBC_PREREQ)
  3702. ++#if __GLIBC_PREREQ(2, 10)
  3703. + namespace GTM HIDDEN {
  3704. +
  3705. + #ifdef __x86_64__
  3706. +@@ -101,5 +104,6 @@
  3707. +
  3708. + } // namespace GTM
  3709. + #endif /* >= GLIBC 2.10 */
  3710. ++#endif
  3711. +
  3712. + #endif // LIBITM_X86_TLS_H
  3713. +Index: b/libstdc++-v3/configure.host
  3714. +===================================================================
  3715. +--- a/libstdc++-v3/configure.host
  3716. ++++ b/libstdc++-v3/configure.host
  3717. +@@ -264,6 +264,13 @@
  3718. + os_include_dir="os/bsd/freebsd"
  3719. + ;;
  3720. + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
  3721. ++ # check for musl by target
  3722. ++ case "${host_os}" in
  3723. ++ *-musl*)
  3724. ++ os_include_dir="os/generic"
  3725. ++ ;;
  3726. ++ *)
  3727. ++
  3728. + if [ "$uclibc" = "yes" ]; then
  3729. + os_include_dir="os/uclibc"
  3730. + elif [ "$bionic" = "yes" ]; then
  3731. +@@ -272,6 +279,9 @@
  3732. + os_include_dir="os/gnu-linux"
  3733. + fi
  3734. + ;;
  3735. ++
  3736. ++ esac
  3737. ++ ;;
  3738. + hpux*)
  3739. + os_include_dir="os/hpux"
  3740. + ;;
  3741. +Index: b/gcc/config/mips/linux64.h
  3742. +===================================================================
  3743. +--- a/gcc/config/mips/linux64.h
  3744. ++++ b/gcc/config/mips/linux64.h
  3745. +@@ -41,4 +41,4 @@
  3746. + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
  3747. + #define GNU_USER_DYNAMIC_LINKERN32 \
  3748. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
  3749. +- BIONIC_DYNAMIC_LINKERN32)
  3750. ++ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
  3751. +Index: b/gcc/config/mips/linux.h
  3752. +===================================================================
  3753. +--- a/gcc/config/mips/linux.h
  3754. ++++ b/gcc/config/mips/linux.h
  3755. +@@ -23,3 +23,11 @@
  3756. + #undef UCLIBC_DYNAMIC_LINKER
  3757. + #define UCLIBC_DYNAMIC_LINKER \
  3758. + "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
  3759. ++
  3760. ++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
  3761. ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
  3762. ++#else
  3763. ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
  3764. ++#endif
  3765. ++#undef MUSL_DYNAMIC_LINKER
  3766. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
  3767. diff --git a/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
  3768. new file mode 100644
  3769. index 0000000..b7094fe
  3770. --- /dev/null
  3771. +++ b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
  3772. @@ -0,0 +1,122 @@
  3773. +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
  3774. +
  3775. +On glibc the libc.so carries a copy of the math function copysignl() but
  3776. +on uClibc math functions like copysignl() live in libm. Since libgcc_s
  3777. +contains unresolved symbols, any attempt to link against libgcc_s
  3778. +without explicitely specifying -lm fails, resulting in a broken
  3779. +bootstrap of the compiler.
  3780. +
  3781. +Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
  3782. +
  3783. +---
  3784. + libgcc/Makefile.in | 4 +++-
  3785. + libgcc/configure | 32 ++++++++++++++++++++++++++++++++
  3786. + libgcc/configure.ac | 21 +++++++++++++++++++++
  3787. + 3 files changed, 56 insertions(+), 1 deletion(-)
  3788. +
  3789. +Index: gcc-4.8.0/libgcc/Makefile.in
  3790. +===================================================================
  3791. +--- gcc-4.8.0.orig/libgcc/Makefile.in 2013-02-04 20:06:20.000000000 +0100
  3792. ++++ gcc-4.8.0/libgcc/Makefile.in 2013-03-24 09:12:43.000000000 +0100
  3793. +@@ -41,6 +41,7 @@
  3794. + decimal_float = @decimal_float@
  3795. + enable_decimal_float = @enable_decimal_float@
  3796. + fixed_point = @fixed_point@
  3797. ++LIBGCC_LIBM = @LIBGCC_LIBM@
  3798. +
  3799. + host_noncanonical = @host_noncanonical@
  3800. + target_noncanonical = @target_noncanonical@
  3801. +@@ -927,9 +928,10 @@
  3802. + @multilib_dir@,$(MULTIDIR),$(subst \
  3803. + @shlib_objs@,$(objects) libgcc.a,$(subst \
  3804. + @shlib_base_name@,libgcc_s,$(subst \
  3805. ++ @libgcc_libm@,$(LIBGCC_LIBM),$(subst \
  3806. + @shlib_map_file@,$(mapfile),$(subst \
  3807. + @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
  3808. +- @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
  3809. ++ @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
  3810. +
  3811. + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
  3812. + # @multilib_flags@ is still needed because this may use
  3813. +Index: gcc-4.8.0/libgcc/configure
  3814. +===================================================================
  3815. +--- gcc-4.8.0.orig/libgcc/configure 2012-11-05 00:08:42.000000000 +0100
  3816. ++++ gcc-4.8.0/libgcc/configure 2013-03-24 09:12:43.000000000 +0100
  3817. +@@ -564,6 +564,7 @@
  3818. + tmake_file
  3819. + sfp_machine_header
  3820. + set_use_emutls
  3821. ++LIBGCC_LIBM
  3822. + set_have_cc_tls
  3823. + vis_hide
  3824. + fixed_point
  3825. +@@ -4481,6 +4482,37 @@
  3826. + fi
  3827. + fi
  3828. +
  3829. ++# On powerpc libgcc_s references copysignl which is a libm function but
  3830. ++# glibc apparently also provides it via libc as opposed to uClibc where
  3831. ++# it lives in libm.
  3832. ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
  3833. ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
  3834. ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
  3835. ++ echo $ECHO_N "(cached) $ECHO_C" >&6
  3836. ++else
  3837. ++
  3838. ++ echo '#include <features.h>' > conftest.c
  3839. ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
  3840. ++ libgcc_cv_copysignl_lib="-lc"
  3841. ++ if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
  3842. ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
  3843. ++ (eval $ac_try) 2>&5
  3844. ++ ac_status=$?
  3845. ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
  3846. ++ (exit $ac_status); }; }
  3847. ++ then
  3848. ++ libgcc_cv_copysignl_lib="-lm"
  3849. ++ fi
  3850. ++ rm -f conftest.*
  3851. ++
  3852. ++fi
  3853. ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
  3854. ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
  3855. ++
  3856. ++case /${libgcc_cv_copysignl_lib}/ in
  3857. ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
  3858. ++ *) LIBGCC_LIBM= ;;
  3859. ++esac
  3860. +
  3861. + # Conditionalize the makefile for this target machine.
  3862. + tmake_file_=
  3863. +Index: gcc-4.8.0/libgcc/configure.ac
  3864. +===================================================================
  3865. +--- gcc-4.8.0.orig/libgcc/configure.ac 2012-10-15 15:10:30.000000000 +0200
  3866. ++++ gcc-4.8.0/libgcc/configure.ac 2013-03-24 09:12:43.000000000 +0100
  3867. +@@ -326,6 +326,27 @@
  3868. + fi
  3869. + AC_SUBST(set_have_cc_tls)
  3870. +
  3871. ++# On powerpc libgcc_s references copysignl which is a libm function but
  3872. ++# glibc apparently also provides it via libc as opposed to uClibc where
  3873. ++# it lives in libm.
  3874. ++AC_CACHE_CHECK
  3875. ++ libgcc_cv_copysignl_lib,
  3876. ++ echo '#include <features.h>' > conftest.c
  3877. ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
  3878. ++ libgcc_cv_copysignl_lib="-lc"
  3879. ++ if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
  3880. ++ then
  3881. ++ libgcc_cv_copysignl_lib="-lm"
  3882. ++ fi
  3883. ++ rm -f conftest.*
  3884. ++ ])
  3885. ++
  3886. ++case /${libgcc_cv_copysignl_lib}/ in
  3887. ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
  3888. ++ *) LIBGCC_LIBM= ;;
  3889. ++esac
  3890. ++AC_SUBST(LIBGCC_LIBM)
  3891. ++
  3892. + # See if we have emulated thread-local storage.
  3893. + GCC_CHECK_EMUTLS
  3894. + set_use_emutls=
  3895. diff --git a/package/gcc/4.9.3/100-uclibc-conf.patch b/package/gcc/4.9.3/100-uclibc-conf.patch
  3896. new file mode 100644
  3897. index 0000000..d56bf0a
  3898. --- /dev/null
  3899. +++ b/package/gcc/4.9.3/100-uclibc-conf.patch
  3900. @@ -0,0 +1,15 @@
  3901. +Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
  3902. +===================================================================
  3903. +--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh 2009-04-09 17:00:19.000000000 +0200
  3904. ++++ gcc-4.8.0/contrib/regression/objs-gcc.sh 2013-03-23 17:39:04.000000000 +0100
  3905. +@@ -106,6 +106,10 @@
  3906. + then
  3907. + make all-gdb all-dejagnu all-ld || exit 1
  3908. + make install-gdb install-dejagnu install-ld || exit 1
  3909. ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
  3910. ++ then
  3911. ++ make all-gdb all-dejagnu all-ld || exit 1
  3912. ++ make install-gdb install-dejagnu install-ld || exit 1
  3913. + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
  3914. + make bootstrap || exit 1
  3915. + make install || exit 1
  3916. diff --git a/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
  3917. new file mode 100644
  3918. index 0000000..b7094fe
  3919. --- /dev/null
  3920. +++ b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
  3921. @@ -0,0 +1,122 @@
  3922. +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
  3923. +
  3924. +On glibc the libc.so carries a copy of the math function copysignl() but
  3925. +on uClibc math functions like copysignl() live in libm. Since libgcc_s
  3926. +contains unresolved symbols, any attempt to link against libgcc_s
  3927. +without explicitely specifying -lm fails, resulting in a broken
  3928. +bootstrap of the compiler.
  3929. +
  3930. +Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
  3931. +
  3932. +---
  3933. + libgcc/Makefile.in | 4 +++-
  3934. + libgcc/configure | 32 ++++++++++++++++++++++++++++++++
  3935. + libgcc/configure.ac | 21 +++++++++++++++++++++
  3936. + 3 files changed, 56 insertions(+), 1 deletion(-)
  3937. +
  3938. +Index: gcc-4.8.0/libgcc/Makefile.in
  3939. +===================================================================
  3940. +--- gcc-4.8.0.orig/libgcc/Makefile.in 2013-02-04 20:06:20.000000000 +0100
  3941. ++++ gcc-4.8.0/libgcc/Makefile.in 2013-03-24 09:12:43.000000000 +0100
  3942. +@@ -41,6 +41,7 @@
  3943. + decimal_float = @decimal_float@
  3944. + enable_decimal_float = @enable_decimal_float@
  3945. + fixed_point = @fixed_point@
  3946. ++LIBGCC_LIBM = @LIBGCC_LIBM@
  3947. +
  3948. + host_noncanonical = @host_noncanonical@
  3949. + target_noncanonical = @target_noncanonical@
  3950. +@@ -927,9 +928,10 @@
  3951. + @multilib_dir@,$(MULTIDIR),$(subst \
  3952. + @shlib_objs@,$(objects) libgcc.a,$(subst \
  3953. + @shlib_base_name@,libgcc_s,$(subst \
  3954. ++ @libgcc_libm@,$(LIBGCC_LIBM),$(subst \
  3955. + @shlib_map_file@,$(mapfile),$(subst \
  3956. + @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
  3957. +- @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
  3958. ++ @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
  3959. +
  3960. + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
  3961. + # @multilib_flags@ is still needed because this may use
  3962. +Index: gcc-4.8.0/libgcc/configure
  3963. +===================================================================
  3964. +--- gcc-4.8.0.orig/libgcc/configure 2012-11-05 00:08:42.000000000 +0100
  3965. ++++ gcc-4.8.0/libgcc/configure 2013-03-24 09:12:43.000000000 +0100
  3966. +@@ -564,6 +564,7 @@
  3967. + tmake_file
  3968. + sfp_machine_header
  3969. + set_use_emutls
  3970. ++LIBGCC_LIBM
  3971. + set_have_cc_tls
  3972. + vis_hide
  3973. + fixed_point
  3974. +@@ -4481,6 +4482,37 @@
  3975. + fi
  3976. + fi
  3977. +
  3978. ++# On powerpc libgcc_s references copysignl which is a libm function but
  3979. ++# glibc apparently also provides it via libc as opposed to uClibc where
  3980. ++# it lives in libm.
  3981. ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
  3982. ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
  3983. ++if test "${libgcc_cv_copysignl_lib+set}" = set; then
  3984. ++ echo $ECHO_N "(cached) $ECHO_C" >&6
  3985. ++else
  3986. ++
  3987. ++ echo '#include <features.h>' > conftest.c
  3988. ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
  3989. ++ libgcc_cv_copysignl_lib="-lc"
  3990. ++ if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
  3991. ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
  3992. ++ (eval $ac_try) 2>&5
  3993. ++ ac_status=$?
  3994. ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
  3995. ++ (exit $ac_status); }; }
  3996. ++ then
  3997. ++ libgcc_cv_copysignl_lib="-lm"
  3998. ++ fi
  3999. ++ rm -f conftest.*
  4000. ++
  4001. ++fi
  4002. ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
  4003. ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
  4004. ++
  4005. ++case /${libgcc_cv_copysignl_lib}/ in
  4006. ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
  4007. ++ *) LIBGCC_LIBM= ;;
  4008. ++esac
  4009. +
  4010. + # Conditionalize the makefile for this target machine.
  4011. + tmake_file_=
  4012. +Index: gcc-4.8.0/libgcc/configure.ac
  4013. +===================================================================
  4014. +--- gcc-4.8.0.orig/libgcc/configure.ac 2012-10-15 15:10:30.000000000 +0200
  4015. ++++ gcc-4.8.0/libgcc/configure.ac 2013-03-24 09:12:43.000000000 +0100
  4016. +@@ -326,6 +326,27 @@
  4017. + fi
  4018. + AC_SUBST(set_have_cc_tls)
  4019. +
  4020. ++# On powerpc libgcc_s references copysignl which is a libm function but
  4021. ++# glibc apparently also provides it via libc as opposed to uClibc where
  4022. ++# it lives in libm.
  4023. ++AC_CACHE_CHECK
  4024. ++ libgcc_cv_copysignl_lib,
  4025. ++ echo '#include <features.h>' > conftest.c
  4026. ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
  4027. ++ libgcc_cv_copysignl_lib="-lc"
  4028. ++ if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
  4029. ++ then
  4030. ++ libgcc_cv_copysignl_lib="-lm"
  4031. ++ fi
  4032. ++ rm -f conftest.*
  4033. ++ ])
  4034. ++
  4035. ++case /${libgcc_cv_copysignl_lib}/ in
  4036. ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
  4037. ++ *) LIBGCC_LIBM= ;;
  4038. ++esac
  4039. ++AC_SUBST(LIBGCC_LIBM)
  4040. ++
  4041. + # See if we have emulated thread-local storage.
  4042. + GCC_CHECK_EMUTLS
  4043. + set_use_emutls=
  4044. diff --git a/package/gcc/4.9.3/111-pr65730.patch b/package/gcc/4.9.3/111-pr65730.patch
  4045. new file mode 100644
  4046. index 0000000..f195e30
  4047. --- /dev/null
  4048. +++ b/package/gcc/4.9.3/111-pr65730.patch
  4049. @@ -0,0 +1,37 @@
  4050. +From b9a7775674d91c7af8043a83211ffeaa576327d7 Mon Sep 17 00:00:00 2001
  4051. +From: Max Filippov <jcmvbkbc@gmail.com>
  4052. +Date: Fri, 10 Apr 2015 17:46:30 +0300
  4053. +Subject: [PATCH] Fix PR target/65730
  4054. +
  4055. +2015-05-20 Max Filippov <jcmvbkbc@gmail.com>
  4056. +gcc/
  4057. + * config/xtensa/xtensa.c (init_alignment_context): Replace MULT
  4058. + by BITS_PER_UNIT with ASHIFT by exact_log2 (BITS_PER_UNIT).
  4059. +
  4060. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  4061. +---
  4062. +Backported from: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223452
  4063. +Changes to ChangeLog are dropped.
  4064. +
  4065. + gcc/config/xtensa/xtensa.c | 5 +++--
  4066. + 1 file changed, 3 insertions(+), 2 deletions(-)
  4067. +
  4068. +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
  4069. +index eb039ba..7296e36 100644
  4070. +--- a/gcc/config/xtensa/xtensa.c
  4071. ++++ b/gcc/config/xtensa/xtensa.c
  4072. +@@ -1461,8 +1461,9 @@ init_alignment_context (struct alignment_context *ac, rtx mem)
  4073. + if (ac->shift != NULL_RTX)
  4074. + {
  4075. + /* Shift is the byte count, but we need the bitcount. */
  4076. +- ac->shift = expand_simple_binop (SImode, MULT, ac->shift,
  4077. +- GEN_INT (BITS_PER_UNIT),
  4078. ++ gcc_assert (exact_log2 (BITS_PER_UNIT) >= 0);
  4079. ++ ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift,
  4080. ++ GEN_INT (exact_log2 (BITS_PER_UNIT)),
  4081. + NULL_RTX, 1, OPTAB_DIRECT);
  4082. + ac->modemask = expand_simple_binop (SImode, ASHIFT,
  4083. + GEN_INT (GET_MODE_MASK (mode)),
  4084. +--
  4085. +1.8.1.4
  4086. +
  4087. diff --git a/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
  4088. new file mode 100644
  4089. index 0000000..c11ad35
  4090. --- /dev/null
  4091. +++ b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
  4092. @@ -0,0 +1,29 @@
  4093. +From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001
  4094. +From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
  4095. +Date: Fri, 6 Nov 2015 14:27:23 +0100
  4096. +Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit
  4097. +
  4098. +Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate
  4099. +64-bit binaries by default.
  4100. +
  4101. +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
  4102. +---
  4103. + gcc/config.gcc | 2 +-
  4104. + 2 files changed, 4 insertions(+), 1 deletion(-)
  4105. +
  4106. +diff --git a/gcc/config.gcc b/gcc/config.gcc
  4107. +index 4a7cbd2..9cc765e 100644
  4108. +--- a/gcc/config.gcc
  4109. ++++ b/gcc/config.gcc
  4110. +@@ -439,7 +439,7 @@ powerpc*-*-*)
  4111. + cpu_type=rs6000
  4112. + extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h"
  4113. + case x$with_cpu in
  4114. +- xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500)
  4115. ++ xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
  4116. + cpu_is_64bit=yes
  4117. + ;;
  4118. + esac
  4119. +--
  4120. +2.6.2
  4121. +
  4122. diff --git a/package/gcc/4.9.3/130-pr43538.patch b/package/gcc/4.9.3/130-pr43538.patch
  4123. new file mode 100644
  4124. index 0000000..19e57bb
  4125. --- /dev/null
  4126. +++ b/package/gcc/4.9.3/130-pr43538.patch
  4127. @@ -0,0 +1,25 @@
  4128. +From c037df1be41f8daf4d581d7ffa4ec8cfa640bccf Mon Sep 17 00:00:00 2001
  4129. +From: glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>
  4130. +Date: Fri, 25 Apr 2014 08:03:08 +0000
  4131. +Subject: [PATCH] 2014-04-25 Marc Glisse <marc.glisse@inria.fr>
  4132. +
  4133. + PR target/43538
  4134. + * mt-gnu: Don't reset CXXFLAGS_FOR_TARGET.
  4135. +
  4136. +
  4137. +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209784 138bc75d-0d04-0410-961f-82ee72b054a4
  4138. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  4139. +---
  4140. + config/mt-gnu | 2 +-
  4141. + 1 file changed, 1 insertion(+), 1 deletion(-)
  4142. +
  4143. +diff --git a/config/mt-gnu b/config/mt-gnu
  4144. +index 15bf417..5c696f5 100644
  4145. +--- a/config/mt-gnu
  4146. ++++ b/config/mt-gnu
  4147. +@@ -1 +1 @@
  4148. +-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
  4149. ++CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE
  4150. +--
  4151. +2.1.4
  4152. +
  4153. diff --git a/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
  4154. new file mode 100644
  4155. index 0000000..55f3228
  4156. --- /dev/null
  4157. +++ b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
  4158. @@ -0,0 +1,37 @@
  4159. +From 3c536954a67a883630f4a7513a27f02a892c3dcb Mon Sep 17 00:00:00 2001
  4160. +From: Evgeniy Stepanov <eugeni.stepanov@gmail.com>
  4161. +Date: Tue, 21 Oct 2014 21:08:13 +0000
  4162. +Subject: [PATCH] [sanitizer] Fix build with _FILE_OFFSET_BITS=64.
  4163. +
  4164. +Sanitizer source is not affected by _FILE_OFFSET_BITS in general,
  4165. +but this one file must be built with 32-bit off_t. More details in the code.
  4166. +
  4167. +git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@220328 91177308-0d34-0410-b5e6-96231b3b80d8
  4168. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  4169. +---
  4170. + lib/sanitizer_common/sanitizer_platform_limits_posix.cc | 8 ++++++++
  4171. + 1 file changed, 8 insertions(+)
  4172. +
  4173. +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
  4174. +index bbc1108..fc09522 100644
  4175. +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
  4176. ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
  4177. +@@ -13,7 +13,15 @@
  4178. +
  4179. + #include "sanitizer_platform.h"
  4180. + #if SANITIZER_LINUX || SANITIZER_MAC
  4181. ++// Tests in this file assume that off_t-dependent data structures match the
  4182. ++// libc ABI. For example, struct dirent here is what readdir() function (as
  4183. ++// exported from libc) returns, and not the user-facing "dirent", which
  4184. ++// depends on _FILE_OFFSET_BITS setting.
  4185. ++// To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below.
  4186. ++#ifdef _FILE_OFFSET_BITS
  4187. ++#undef _FILE_OFFSET_BITS
  4188. ++#endif
  4189. +
  4190. + #include "sanitizer_internal_defs.h"
  4191. + #include "sanitizer_platform_limits_posix.h"
  4192. +
  4193. +--
  4194. +2.1.4
  4195. +
  4196. diff --git a/package/gcc/4.9.3/301-missing-execinfo_h.patch b/package/gcc/4.9.3/301-missing-execinfo_h.patch
  4197. new file mode 100644
  4198. index 0000000..00efda2
  4199. --- /dev/null
  4200. +++ b/package/gcc/4.9.3/301-missing-execinfo_h.patch
  4201. @@ -0,0 +1,13 @@
  4202. +Index: gcc-4.8.0/boehm-gc/include/gc.h
  4203. +===================================================================
  4204. +--- gcc-4.8.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200
  4205. ++++ gcc-4.8.0/boehm-gc/include/gc.h 2013-03-23 17:39:20.000000000 +0100
  4206. +@@ -503,7 +503,7 @@
  4207. + #if defined(__linux__) || defined(__GLIBC__)
  4208. + # include <features.h>
  4209. + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
  4210. +- && !defined(__ia64__)
  4211. ++ && !defined(__ia64__) && !defined(__UCLIBC__)
  4212. + # ifndef GC_HAVE_BUILTIN_BACKTRACE
  4213. + # define GC_HAVE_BUILTIN_BACKTRACE
  4214. + # endif
  4215. diff --git a/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
  4216. new file mode 100644
  4217. index 0000000..c8cb377
  4218. --- /dev/null
  4219. +++ b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
  4220. @@ -0,0 +1,30 @@
  4221. +Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
  4222. +===================================================================
  4223. +--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h 2013-01-10 21:38:27.000000000 +0100
  4224. ++++ gcc-4.8.0/gcc/config/arm/linux-elf.h 2013-03-23 17:40:00.000000000 +0100
  4225. +@@ -55,7 +55,7 @@
  4226. + %{shared:-lc} \
  4227. + %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
  4228. +
  4229. +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
  4230. ++#define LIBGCC_SPEC "-lgcc"
  4231. +
  4232. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  4233. +
  4234. +Index: gcc-4.8.0/libgcc/config/arm/t-linux
  4235. +===================================================================
  4236. +--- gcc-4.8.0.orig/libgcc/config/arm/t-linux 2012-03-22 16:14:46.000000000 +0100
  4237. ++++ gcc-4.8.0/libgcc/config/arm/t-linux 2013-03-23 17:40:54.000000000 +0100
  4238. +@@ -1,6 +1,11 @@
  4239. + LIB1ASMSRC = arm/lib1funcs.S
  4240. + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
  4241. +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
  4242. ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
  4243. ++ _arm_addsubdf3 _arm_addsubsf3 \
  4244. ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
  4245. ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
  4246. ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
  4247. ++ _arm_fixsfsi _arm_fixunssfsi
  4248. +
  4249. + # Just for these, we omit the frame pointer since it makes such a big
  4250. + # difference.
  4251. diff --git a/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
  4252. new file mode 100644
  4253. index 0000000..37f8f2a
  4254. --- /dev/null
  4255. +++ b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
  4256. @@ -0,0 +1,13 @@
  4257. +http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
  4258. +
  4259. +--- a/gcc/config/arm/linux-eabi.h
  4260. ++++ b/gcc/config/arm/linux-eabi.h
  4261. +@@ -45,7 +45,7 @@
  4262. + The ARM10TDMI core is the default for armv5t, so set
  4263. + SUBTARGET_CPU_DEFAULT to achieve this. */
  4264. + #undef SUBTARGET_CPU_DEFAULT
  4265. +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
  4266. ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
  4267. +
  4268. + /* TARGET_BIG_ENDIAN_DEFAULT is set in
  4269. + config.gcc for big endian configurations. */
  4270. diff --git a/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
  4271. new file mode 100644
  4272. index 0000000..e116e2b
  4273. --- /dev/null
  4274. +++ b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
  4275. @@ -0,0 +1,169 @@
  4276. +Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
  4277. +
  4278. +From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
  4279. +From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
  4280. +Date: Mon, 18 Jun 2012 20:18:13 +0200
  4281. +Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
  4282. +
  4283. +Changelog
  4284. +
  4285. +2013-03-18 Edgar E. Iglesias <edgar.iglesias@xilinx.com>
  4286. + David Holsgrove <david.holsgrove@xilinx.com>
  4287. +
  4288. + * common/config/microblaze/microblaze-common.c: Remove
  4289. + TARGET_EXCEPT_UNWIND_INFO definition.
  4290. + * config/microblaze/microblaze-protos.h: Add
  4291. + microblaze_eh_return prototype.
  4292. + * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
  4293. + microblaze_expand_epilogue, microblaze_return_addr): Handle
  4294. + calls_eh_return
  4295. + (microblaze_eh_return): New function.
  4296. + * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
  4297. + EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
  4298. + ASM_PREFERRED_EH_DATA_FORMAT
  4299. + * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
  4300. +
  4301. +Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
  4302. +Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
  4303. +---
  4304. + gcc/common/config/microblaze/microblaze-common.c | 3 ---
  4305. + gcc/config/microblaze/microblaze-protos.h | 1 +
  4306. + gcc/config/microblaze/microblaze.c | 29 ++++++++++++++++++++----
  4307. + gcc/config/microblaze/microblaze.h | 15 ++++++++++++
  4308. + gcc/config/microblaze/microblaze.md | 11 +++++++++
  4309. + 5 files changed, 52 insertions(+), 7 deletions(-)
  4310. +
  4311. +diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
  4312. +index 5835acc..85e6a53 100644
  4313. +--- a/gcc/common/config/microblaze/microblaze-common.c
  4314. ++++ b/gcc/common/config/microblaze/microblaze-common.c
  4315. +@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
  4316. + #undef TARGET_OPTION_OPTIMIZATION_TABLE
  4317. + #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
  4318. +
  4319. +-#undef TARGET_EXCEPT_UNWIND_INFO
  4320. +-#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
  4321. +-
  4322. + struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
  4323. +diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
  4324. +index c30ec72..260f4e4 100644
  4325. +--- a/gcc/config/microblaze/microblaze-protos.h
  4326. ++++ b/gcc/config/microblaze/microblaze-protos.h
  4327. +@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
  4328. + extern int symbol_mentioned_p (rtx);
  4329. + extern int label_mentioned_p (rtx);
  4330. + extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
  4331. ++extern void microblaze_eh_return (rtx op0);
  4332. + #endif /* RTX_CODE */
  4333. +
  4334. + /* Declare functions in microblaze-c.c. */
  4335. +diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
  4336. +index fe61fce..15166d3 100644
  4337. +--- a/gcc/config/microblaze/microblaze.c
  4338. ++++ b/gcc/config/microblaze/microblaze.c
  4339. +@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
  4340. + if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
  4341. + return 1;
  4342. +
  4343. ++ if (crtl->calls_eh_return
  4344. ++ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
  4345. ++ return 1;
  4346. ++ }
  4347. ++
  4348. + if (!crtl->is_leaf)
  4349. + {
  4350. + if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
  4351. +@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
  4352. + return 1;
  4353. + }
  4354. +
  4355. ++ if (crtl->calls_eh_return
  4356. ++ && (regno == EH_RETURN_DATA_REGNO (0)
  4357. ++ || regno == EH_RETURN_DATA_REGNO (1)))
  4358. ++ {
  4359. ++ return 1;
  4360. ++ }
  4361. ++
  4362. + return 0;
  4363. + }
  4364. +
  4365. +@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
  4366. + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
  4367. + }
  4368. +
  4369. ++ if (crtl->calls_eh_return)
  4370. ++ emit_insn (gen_addsi3 (stack_pointer_rtx,
  4371. ++ stack_pointer_rtx,
  4372. ++ gen_rtx_raw_REG (SImode,
  4373. ++ MB_EH_STACKADJ_REGNUM)));
  4374. ++
  4375. + emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
  4376. + MB_ABI_SUB_RETURN_ADDR_REGNUM)));
  4377. + }
  4378. +@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
  4379. + if (count != 0)
  4380. + return NULL_RTX;
  4381. +
  4382. +- return gen_rtx_PLUS (Pmode,
  4383. +- get_hard_reg_initial_val (Pmode,
  4384. +- MB_ABI_SUB_RETURN_ADDR_REGNUM),
  4385. +- GEN_INT (8));
  4386. ++ return get_hard_reg_initial_val (Pmode,
  4387. ++ MB_ABI_SUB_RETURN_ADDR_REGNUM);
  4388. ++}
  4389. ++
  4390. ++void microblaze_eh_return (rtx op0)
  4391. ++{
  4392. ++ emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
  4393. + }
  4394. +
  4395. + /* Queue an .ident string in the queue of top-level asm statements.
  4396. +diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
  4397. +index 4072283..5e9f49c 100644
  4398. +--- a/gcc/config/microblaze/microblaze.h
  4399. ++++ b/gcc/config/microblaze/microblaze.h
  4400. +@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
  4401. + #define INCOMING_RETURN_ADDR_RTX \
  4402. + gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
  4403. +
  4404. ++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */
  4405. ++#define RETURN_ADDR_OFFSET (8)
  4406. ++
  4407. ++/* Describe how we implement __builtin_eh_return. */
  4408. ++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
  4409. ++
  4410. ++#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM
  4411. ++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
  4412. ++
  4413. ++/* Select a format to encode pointers in exception handling data. CODE
  4414. ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
  4415. ++ true if the symbol may be affected by dynamic relocations. */
  4416. ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
  4417. ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
  4418. ++
  4419. + /* Use DWARF 2 debugging information by default. */
  4420. + #define DWARF2_DEBUGGING_INFO
  4421. + #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  4422. +diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
  4423. +index ed6131a..dc2405f 100644
  4424. +--- a/gcc/config/microblaze/microblaze.md
  4425. ++++ b/gcc/config/microblaze/microblaze.md
  4426. +@@ -2327,4 +2327,15 @@
  4427. + (set_attr "mode" "SI")
  4428. + (set_attr "length" "4")])
  4429. +
  4430. ++; This is used in compiling the unwind routines.
  4431. ++(define_expand "eh_return"
  4432. ++ [(use (match_operand 0 "general_operand" ""))]
  4433. ++ ""
  4434. ++ "
  4435. ++{
  4436. ++ microblaze_eh_return(operands[0]);
  4437. ++ DONE;
  4438. ++}")
  4439. ++
  4440. + (include "sync.md")
  4441. ++
  4442. +--
  4443. +1.8.3.2
  4444. +
  4445. diff --git a/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
  4446. new file mode 100644
  4447. index 0000000..d103af1
  4448. --- /dev/null
  4449. +++ b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
  4450. @@ -0,0 +1,255 @@
  4451. +Allow C99-depending features of libstdc++ with uClibc
  4452. +
  4453. +The libstdc++ code is fairly restrictive on how it checks for C99
  4454. +compatibility: it requires *complete* C99 support to enable certain
  4455. +features. For example, uClibc provides a good number of C99 features,
  4456. +but not C99 complex number support. For this reason, libstdc++
  4457. +completely disables many the standard C++ methods that can in fact
  4458. +work because uClibc provides the necessary functions.
  4459. +
  4460. +This patch is similar and highly inspired from
  4461. +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in
  4462. +a way that doesn't involve changing the configure.ac script, as
  4463. +autoreconfiguring gcc is complicated. It simply relies on the fact
  4464. +that uClibc defines the __UCLIBC__ definition.
  4465. +
  4466. +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  4467. +[Gustavo: update for 4.9.3]
  4468. +
  4469. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h
  4470. +--- gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h 2014-01-02 19:30:10.000000000 -0300
  4471. ++++ gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h 2015-06-27 06:46:04.420022179 -0300
  4472. +@@ -70,7 +70,7 @@
  4473. + __builtin_va_list __args;
  4474. + __builtin_va_start(__args, __fmt);
  4475. +
  4476. +-#ifdef _GLIBCXX_USE_C99
  4477. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4478. + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  4479. + #else
  4480. + const int __ret = __builtin_vsprintf(__out, __fmt, __args);
  4481. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h
  4482. +--- gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h 2014-01-02 19:30:10.000000000 -0300
  4483. ++++ gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h 2015-06-27 06:46:04.465023743 -0300
  4484. +@@ -88,7 +88,7 @@
  4485. + __builtin_va_list __args;
  4486. + __builtin_va_start(__args, __fmt);
  4487. +
  4488. +-#ifdef _GLIBCXX_USE_C99
  4489. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4490. + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  4491. + #else
  4492. + const int __ret = __builtin_vsprintf(__out, __fmt, __args);
  4493. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h
  4494. +--- gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h 2015-05-28 13:27:46.000000000 -0300
  4495. ++++ gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h 2015-06-27 06:49:04.741284648 -0300
  4496. +@@ -2844,7 +2844,7 @@
  4497. + _GLIBCXX_END_NAMESPACE_VERSION
  4498. + } // namespace
  4499. +
  4500. +-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99)
  4501. ++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))
  4502. +
  4503. + #include <ext/string_conversions.h>
  4504. +
  4505. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc
  4506. +--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2014-01-02 19:30:10.000000000 -0300
  4507. ++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2015-06-27 06:46:04.466023777 -0300
  4508. +@@ -572,7 +572,7 @@
  4509. + {
  4510. + const locale __loc = __io.getloc();
  4511. + const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
  4512. +-#ifdef _GLIBCXX_USE_C99
  4513. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4514. + // First try a buffer perhaps big enough.
  4515. + int __cs_size = 64;
  4516. + char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
  4517. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc
  4518. +--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc 2014-01-02 19:30:10.000000000 -0300
  4519. ++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc 2015-06-27 06:46:04.466023777 -0300
  4520. +@@ -987,7 +987,7 @@
  4521. + char __fbuf[16];
  4522. + __num_base::_S_format_float(__io, __fbuf, __mod);
  4523. +
  4524. +-#ifdef _GLIBCXX_USE_C99
  4525. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4526. + // First try a buffer perhaps big enough (most probably sufficient
  4527. + // for non-ios_base::fixed outputs)
  4528. + int __cs_size = __max_digits * 3;
  4529. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h
  4530. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h 2014-01-02 19:30:10.000000000 -0300
  4531. ++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h 2015-06-27 06:46:04.466023777 -0300
  4532. +@@ -56,7 +56,7 @@
  4533. + using std::floor;
  4534. + using std::fmod;
  4535. +
  4536. +-#if _GLIBCXX_USE_C99
  4537. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4538. + using std::fpclassify;
  4539. + using std::isfinite;
  4540. + using std::isinf;
  4541. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h
  4542. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h 2014-01-02 19:30:10.000000000 -0300
  4543. ++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h 2015-06-27 06:46:04.466023777 -0300
  4544. +@@ -103,7 +103,7 @@
  4545. + using std::wmemset;
  4546. + using std::wcsftime;
  4547. +
  4548. +-#if _GLIBCXX_USE_C99
  4549. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4550. + using std::wcstold;
  4551. + using std::wcstoll;
  4552. + using std::wcstoull;
  4553. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio gcc-4.9.3/libstdc++-v3/include/c_global/cstdio
  4554. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio 2014-01-23 18:17:15.000000000 -0300
  4555. ++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdio 2015-06-27 06:46:04.481024298 -0300
  4556. +@@ -146,7 +146,7 @@
  4557. + using ::vsprintf;
  4558. + } // namespace
  4559. +
  4560. +-#if _GLIBCXX_USE_C99
  4561. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4562. +
  4563. + #undef snprintf
  4564. + #undef vfscanf
  4565. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib
  4566. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib 2014-01-02 19:30:10.000000000 -0300
  4567. ++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib 2015-06-27 06:46:04.466023777 -0300
  4568. +@@ -182,7 +182,7 @@
  4569. + _GLIBCXX_END_NAMESPACE_VERSION
  4570. + } // namespace
  4571. +
  4572. +-#if _GLIBCXX_USE_C99
  4573. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4574. +
  4575. + #undef _Exit
  4576. + #undef llabs
  4577. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar gcc-4.9.3/libstdc++-v3/include/c_global/cwchar
  4578. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar 2014-01-02 19:30:10.000000000 -0300
  4579. ++++ gcc-4.9.3/libstdc++-v3/include/c_global/cwchar 2015-06-27 06:46:04.466023777 -0300
  4580. +@@ -232,7 +232,7 @@
  4581. + _GLIBCXX_END_NAMESPACE_VERSION
  4582. + } // namespace
  4583. +
  4584. +-#if _GLIBCXX_USE_C99
  4585. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4586. +
  4587. + #undef wcstold
  4588. + #undef wcstoll
  4589. +@@ -289,7 +289,7 @@
  4590. + using std::vwscanf;
  4591. + #endif
  4592. +
  4593. +-#if _GLIBCXX_USE_C99
  4594. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4595. + using std::wcstold;
  4596. + using std::wcstoll;
  4597. + using std::wcstoull;
  4598. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio gcc-4.9.3/libstdc++-v3/include/c_std/cstdio
  4599. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio 2014-01-02 19:30:10.000000000 -0300
  4600. ++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdio 2015-06-27 06:46:04.480024263 -0300
  4601. +@@ -144,7 +144,7 @@
  4602. + using ::vsprintf;
  4603. + } // namespace std
  4604. +
  4605. +-#if _GLIBCXX_USE_C99
  4606. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4607. +
  4608. + #undef snprintf
  4609. + #undef vfscanf
  4610. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib
  4611. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib 2014-01-02 19:30:10.000000000 -0300
  4612. ++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib 2015-06-27 06:46:04.480024263 -0300
  4613. +@@ -180,7 +180,7 @@
  4614. + _GLIBCXX_END_NAMESPACE_VERSION
  4615. + } // namespace
  4616. +
  4617. +-#if _GLIBCXX_USE_C99
  4618. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4619. +
  4620. + #undef _Exit
  4621. + #undef llabs
  4622. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar gcc-4.9.3/libstdc++-v3/include/c_std/cwchar
  4623. +--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar 2014-01-02 19:30:10.000000000 -0300
  4624. ++++ gcc-4.9.3/libstdc++-v3/include/c_std/cwchar 2015-06-27 06:46:04.480024263 -0300
  4625. +@@ -228,7 +228,7 @@
  4626. + _GLIBCXX_END_NAMESPACE_VERSION
  4627. + } // namespace
  4628. +
  4629. +-#if _GLIBCXX_USE_C99
  4630. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4631. +
  4632. + #undef wcstold
  4633. + #undef wcstoll
  4634. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h gcc-4.9.3/libstdc++-v3/include/ext/vstring.h
  4635. +--- gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h 2014-01-02 19:30:10.000000000 -0300
  4636. ++++ gcc-4.9.3/libstdc++-v3/include/ext/vstring.h 2015-06-27 06:46:04.480024263 -0300
  4637. +@@ -2680,7 +2680,7 @@
  4638. + _GLIBCXX_END_NAMESPACE_VERSION
  4639. + } // namespace
  4640. +
  4641. +-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99))
  4642. ++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)))
  4643. +
  4644. + #include <ext/string_conversions.h>
  4645. +
  4646. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio gcc-4.9.3/libstdc++-v3/include/tr1/cstdio
  4647. +--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio 2014-01-02 19:30:10.000000000 -0300
  4648. ++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdio 2015-06-27 06:46:04.480024263 -0300
  4649. +@@ -33,7 +33,7 @@
  4650. +
  4651. + #include <cstdio>
  4652. +
  4653. +-#if _GLIBCXX_USE_C99
  4654. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4655. +
  4656. + namespace std _GLIBCXX_VISIBILITY(default)
  4657. + {
  4658. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib
  4659. +--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib 2014-01-02 19:30:10.000000000 -0300
  4660. ++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib 2015-06-27 06:46:04.480024263 -0300
  4661. +@@ -35,7 +35,7 @@
  4662. +
  4663. + #if _GLIBCXX_HOSTED
  4664. +
  4665. +-#if _GLIBCXX_USE_C99
  4666. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4667. +
  4668. + namespace std _GLIBCXX_VISIBILITY(default)
  4669. + {
  4670. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar gcc-4.9.3/libstdc++-v3/include/tr1/cwchar
  4671. +--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar 2014-01-02 19:30:10.000000000 -0300
  4672. ++++ gcc-4.9.3/libstdc++-v3/include/tr1/cwchar 2015-06-27 06:46:04.480024263 -0300
  4673. +@@ -52,7 +52,7 @@
  4674. + using std::vwscanf;
  4675. + #endif
  4676. +
  4677. +-#if _GLIBCXX_USE_C99
  4678. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4679. + using std::wcstold;
  4680. + using std::wcstoll;
  4681. + using std::wcstoull;
  4682. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h
  4683. +--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h 2014-01-02 19:30:10.000000000 -0300
  4684. ++++ gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h 2015-06-27 06:46:04.481024298 -0300
  4685. +@@ -33,7 +33,7 @@
  4686. +
  4687. + #if _GLIBCXX_HOSTED
  4688. +
  4689. +-#if _GLIBCXX_USE_C99
  4690. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4691. +
  4692. + using std::tr1::atoll;
  4693. + using std::tr1::strtoll;
  4694. +diff -Nura gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc
  4695. +--- gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc 2014-01-02 19:30:10.000000000 -0300
  4696. ++++ gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc 2015-06-27 06:46:04.481024298 -0300
  4697. +@@ -788,7 +788,7 @@
  4698. + int __n __attribute__ ((__unused__)),
  4699. + const char* __fmt, _Tp __s) const throw ()
  4700. + {
  4701. +-#ifdef _GLIBCXX_USE_C99
  4702. ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
  4703. + std::snprintf(__buf, __n, __fmt, __s);
  4704. + #else
  4705. + std::sprintf(__buf, __fmt, __s);
  4706. diff --git a/package/gcc/4.9.3/860-cilk-wchar.patch b/package/gcc/4.9.3/860-cilk-wchar.patch
  4707. new file mode 100644
  4708. index 0000000..1837405
  4709. --- /dev/null
  4710. +++ b/package/gcc/4.9.3/860-cilk-wchar.patch
  4711. @@ -0,0 +1,56 @@
  4712. +[PATCH] cilk: fix build without wchar
  4713. +
  4714. +When building against uClibc with wchar support disabled, WCHAR_MIN and
  4715. +WCHAR_MAX are not defined leading to compilation errors.
  4716. +
  4717. +Fix it by only including the wchar code if available.
  4718. +
  4719. +Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  4720. +---
  4721. + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++
  4722. + 1 file changed, 8 insertions(+)
  4723. +
  4724. +Index: host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
  4725. +===================================================================
  4726. +--- host-gcc-final-4.9.2.orig/libcilkrts/include/cilk/reducer_min_max.h
  4727. ++++ host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
  4728. +@@ -3154,7 +3154,9 @@
  4729. + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN)
  4730. + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0)
  4731. + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN)
  4732. ++#ifdef WCHAR_MIN
  4733. + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN)
  4734. ++#endif
  4735. + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN)
  4736. + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0)
  4737. + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN)
  4738. +@@ -3306,7 +3308,9 @@
  4739. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN)
  4740. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0)
  4741. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN)
  4742. ++#ifdef WCHAR_MIN
  4743. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN)
  4744. ++#endif
  4745. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN)
  4746. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0)
  4747. + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN)
  4748. +@@ -3432,7 +3436,9 @@
  4749. + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX)
  4750. + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX)
  4751. + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX)
  4752. ++#ifdef WCHAR_MAX
  4753. + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX)
  4754. ++#endif
  4755. + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX)
  4756. + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX)
  4757. + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX)
  4758. +@@ -3584,7 +3590,9 @@
  4759. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX)
  4760. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX)
  4761. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX)
  4762. ++#ifdef WCHAR_MAX
  4763. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX)
  4764. ++#endif
  4765. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX)
  4766. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX)
  4767. + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX)
  4768. diff --git a/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
  4769. new file mode 100644
  4770. index 0000000..aa1376c
  4771. --- /dev/null
  4772. +++ b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
  4773. @@ -0,0 +1,290 @@
  4774. +From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001
  4775. +From: Max Filippov <jcmvbkbc@gmail.com>
  4776. +Date: Thu, 6 Aug 2015 01:16:02 +0300
  4777. +Subject: [PATCH] xtensa: add -mauto-litpools option
  4778. +
  4779. +With support from assembler this option allows compiling huge functions,
  4780. +where single literal pool at the beginning of a function may not be
  4781. +reachable by L32R instructions at its end.
  4782. +
  4783. +Currently assembler --auto-litpools option cannot deal with literals
  4784. +used from multiple locations separated by more than 256 KBytes of code.
  4785. +Don't turn constants into literals, instead use MOVI instruction to load
  4786. +them into registers and let the assembler turn them into literals as
  4787. +necessary.
  4788. +
  4789. +2015-08-12 Max Filippov <jcmvbkbc@gmail.com>
  4790. +gcc/
  4791. + * config/xtensa/constraints.md (define_constraint "Y"): New
  4792. + constraint.
  4793. + * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools.
  4794. + * config/xtensa/linux.h (ASM_SPEC): Likewise.
  4795. + * config/xtensa/predicates.md (move_operand): Match constants
  4796. + and symbols in the presence of TARGET_AUTO_LITPOOLS.
  4797. + * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow
  4798. + immediate references to TLS data.
  4799. + (xtensa_emit_move_sequence): Don't force constants to memory in
  4800. + the presence of TARGET_AUTO_LITPOOLS.
  4801. + (print_operand): Add 'y' format, same as default, but capable of
  4802. + printing SF mode constants as well.
  4803. + * config/xtensa/xtensa.md (movsi_internal, movhi_internal)
  4804. + (movsf_internal): Add movi pattern that loads literal.
  4805. + (movsf, movdf): Don't force constants to memory in the presence
  4806. + of TARGET_AUTO_LITPOOLS.
  4807. + (movdf_internal): Add 'Y' constraint.
  4808. + * config/xtensa/xtensa.opt (mauto-litpools): New option.
  4809. +
  4810. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  4811. +---
  4812. +Backported from: r226828
  4813. +Changes to ChangeLogs and documentation are dropped.
  4814. +
  4815. + gcc/config/xtensa/constraints.md | 5 +++++
  4816. + gcc/config/xtensa/elf.h | 4 +++-
  4817. + gcc/config/xtensa/linux.h | 4 +++-
  4818. + gcc/config/xtensa/predicates.md | 3 ++-
  4819. + gcc/config/xtensa/xtensa.c | 19 ++++++++++++++++++-
  4820. + gcc/config/xtensa/xtensa.md | 35 +++++++++++++++++++----------------
  4821. + gcc/config/xtensa/xtensa.opt | 4 ++++
  4822. + 7 files changed, 54 insertions(+), 20 deletions(-)
  4823. +
  4824. +diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md
  4825. +index 30f4c1f..773d4f9 100644
  4826. +--- a/gcc/config/xtensa/constraints.md
  4827. ++++ b/gcc/config/xtensa/constraints.md
  4828. +@@ -111,6 +111,11 @@
  4829. + (and (match_code "const_int")
  4830. + (match_test "xtensa_mask_immediate (ival)")))
  4831. +
  4832. ++(define_constraint "Y"
  4833. ++ "A constant that can be used in relaxed MOVI instructions."
  4834. ++ (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
  4835. ++ (match_test "TARGET_AUTO_LITPOOLS")))
  4836. ++
  4837. + ;; Memory constraints. Do not use define_memory_constraint here. Doing so
  4838. + ;; causes reload to force some constants into the constant pool, but since
  4839. + ;; the Xtensa constant pool can only be accessed with L32R instructions, it
  4840. +diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h
  4841. +index e59bede..12056f7 100644
  4842. +--- a/gcc/config/xtensa/elf.h
  4843. ++++ b/gcc/config/xtensa/elf.h
  4844. +@@ -48,7 +48,9 @@ along with GCC; see the file COPYING3. If not see
  4845. + %{mtarget-align:--target-align} \
  4846. + %{mno-target-align:--no-target-align} \
  4847. + %{mlongcalls:--longcalls} \
  4848. +- %{mno-longcalls:--no-longcalls}"
  4849. ++ %{mno-longcalls:--no-longcalls} \
  4850. ++ %{mauto-litpools:--auto-litpools} \
  4851. ++ %{mno-auto-litpools:--no-auto-litpools}"
  4852. +
  4853. + #undef LIB_SPEC
  4854. + #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal"
  4855. +diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h
  4856. +index 675aacf..5b0243a 100644
  4857. +--- a/gcc/config/xtensa/linux.h
  4858. ++++ b/gcc/config/xtensa/linux.h
  4859. +@@ -42,7 +42,9 @@ along with GCC; see the file COPYING3. If not see
  4860. + %{mtarget-align:--target-align} \
  4861. + %{mno-target-align:--no-target-align} \
  4862. + %{mlongcalls:--longcalls} \
  4863. +- %{mno-longcalls:--no-longcalls}"
  4864. ++ %{mno-longcalls:--no-longcalls} \
  4865. ++ %{mauto-litpools:--auto-litpools} \
  4866. ++ %{mno-auto-litpools:--no-auto-litpools}"
  4867. +
  4868. + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  4869. +
  4870. +diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md
  4871. +index e02209e..d7dfa11 100644
  4872. +--- a/gcc/config/xtensa/predicates.md
  4873. ++++ b/gcc/config/xtensa/predicates.md
  4874. +@@ -142,7 +142,8 @@
  4875. + (match_test "GET_MODE_CLASS (mode) == MODE_INT
  4876. + && xtensa_simm12b (INTVAL (op))"))
  4877. + (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
  4878. +- (match_test "TARGET_CONST16 && CONSTANT_P (op)
  4879. ++ (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS)
  4880. ++ && CONSTANT_P (op)
  4881. + && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0")))))
  4882. +
  4883. + ;; Accept the floating point constant 1 in the appropriate mode.
  4884. +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
  4885. +index eb039ba..206ff80 100644
  4886. +--- a/gcc/config/xtensa/xtensa.c
  4887. ++++ b/gcc/config/xtensa/xtensa.c
  4888. +@@ -501,6 +501,9 @@ xtensa_valid_move (machine_mode mode, rtx *operands)
  4889. + {
  4890. + int dst_regnum = xt_true_regnum (operands[0]);
  4891. +
  4892. ++ if (xtensa_tls_referenced_p (operands[1]))
  4893. ++ return FALSE;
  4894. ++
  4895. + /* The stack pointer can only be assigned with a MOVSP opcode. */
  4896. + if (dst_regnum == STACK_POINTER_REGNUM)
  4897. + return !TARGET_WINDOWED_ABI
  4898. +@@ -1069,7 +1072,7 @@ xtensa_emit_move_sequence (rtx *operands, machine_mode mode)
  4899. + return 1;
  4900. + }
  4901. +
  4902. +- if (! TARGET_CONST16)
  4903. ++ if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16)
  4904. + {
  4905. + src = force_const_mem (SImode, src);
  4906. + operands[1] = src;
  4907. +@@ -2449,6 +2452,20 @@ print_operand (FILE *file, rtx x, int letter)
  4908. + }
  4909. + break;
  4910. +
  4911. ++ case 'y':
  4912. ++ if (GET_CODE (x) == CONST_DOUBLE &&
  4913. ++ GET_MODE (x) == SFmode)
  4914. ++ {
  4915. ++ REAL_VALUE_TYPE r;
  4916. ++ long l;
  4917. ++ REAL_VALUE_FROM_CONST_DOUBLE (r, x);
  4918. ++ REAL_VALUE_TO_TARGET_SINGLE (r, l);
  4919. ++ fprintf (file, "0x%08lx", l);
  4920. ++ break;
  4921. ++ }
  4922. ++
  4923. ++ /* fall through */
  4924. ++
  4925. + default:
  4926. + if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
  4927. + fprintf (file, "%s", reg_names[xt_true_regnum (x)]);
  4928. +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
  4929. +index 6d84384..0e673a3 100644
  4930. +--- a/gcc/config/xtensa/xtensa.md
  4931. ++++ b/gcc/config/xtensa/xtensa.md
  4932. +@@ -761,8 +761,8 @@
  4933. + })
  4934. +
  4935. + (define_insn "movsi_internal"
  4936. +- [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A")
  4937. +- (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))]
  4938. ++ [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A")
  4939. ++ (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))]
  4940. + "xtensa_valid_move (SImode, operands)"
  4941. + "@
  4942. + movi.n\t%0, %x1
  4943. +@@ -774,15 +774,16 @@
  4944. + mov\t%0, %1
  4945. + movsp\t%0, %1
  4946. + movi\t%0, %x1
  4947. ++ movi\t%0, %1
  4948. + const16\t%0, %t1\;const16\t%0, %b1
  4949. + %v1l32r\t%0, %1
  4950. + %v1l32i\t%0, %1
  4951. + %v0s32i\t%1, %0
  4952. + rsr\t%0, ACCLO
  4953. + wsr\t%1, ACCLO"
  4954. +- [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr")
  4955. ++ [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr")
  4956. + (set_attr "mode" "SI")
  4957. +- (set_attr "length" "2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")])
  4958. ++ (set_attr "length" "2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")])
  4959. +
  4960. + ;; 16-bit Integer moves
  4961. +
  4962. +@@ -796,21 +797,22 @@
  4963. + })
  4964. +
  4965. + (define_insn "movhi_internal"
  4966. +- [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A")
  4967. +- (match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))]
  4968. ++ [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A")
  4969. ++ (match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))]
  4970. + "xtensa_valid_move (HImode, operands)"
  4971. + "@
  4972. + movi.n\t%0, %x1
  4973. + mov.n\t%0, %1
  4974. + mov\t%0, %1
  4975. + movi\t%0, %x1
  4976. ++ movi\t%0, %1
  4977. + %v1l16ui\t%0, %1
  4978. + %v0s16i\t%1, %0
  4979. + rsr\t%0, ACCLO
  4980. + wsr\t%1, ACCLO"
  4981. +- [(set_attr "type" "move,move,move,move,load,store,rsr,wsr")
  4982. ++ [(set_attr "type" "move,move,move,move,move,load,store,rsr,wsr")
  4983. + (set_attr "mode" "HI")
  4984. +- (set_attr "length" "2,2,3,3,3,3,3,3")])
  4985. ++ (set_attr "length" "2,2,3,3,3,3,3,3,3")])
  4986. +
  4987. + ;; 8-bit Integer moves
  4988. +
  4989. +@@ -881,7 +883,7 @@
  4990. + (match_operand:SF 1 "general_operand" ""))]
  4991. + ""
  4992. + {
  4993. +- if (!TARGET_CONST16 && CONSTANT_P (operands[1]))
  4994. ++ if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1]))
  4995. + operands[1] = force_const_mem (SFmode, operands[1]);
  4996. +
  4997. + if ((!register_operand (operands[0], SFmode)
  4998. +@@ -896,8 +898,8 @@
  4999. + })
  5000. +
  5001. + (define_insn "movsf_internal"
  5002. +- [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U")
  5003. +- (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))]
  5004. ++ [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U")
  5005. ++ (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))]
  5006. + "((register_operand (operands[0], SFmode)
  5007. + || register_operand (operands[1], SFmode))
  5008. + && !(FP_REG_P (xt_true_regnum (operands[0]))
  5009. +@@ -912,13 +914,14 @@
  5010. + mov\t%0, %1
  5011. + wfr\t%0, %1
  5012. + rfr\t%0, %1
  5013. ++ movi\t%0, %y1
  5014. + const16\t%0, %t1\;const16\t%0, %b1
  5015. + %v1l32r\t%0, %1
  5016. + %v1l32i\t%0, %1
  5017. + %v0s32i\t%1, %0"
  5018. +- [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store")
  5019. ++ [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store")
  5020. + (set_attr "mode" "SF")
  5021. +- (set_attr "length" "3,3,3,2,2,2,3,3,3,6,3,3,3")])
  5022. ++ (set_attr "length" "3,3,3,2,2,2,3,3,3,3,6,3,3,3")])
  5023. +
  5024. + (define_insn "*lsiu"
  5025. + [(set (match_operand:SF 0 "register_operand" "=f")
  5026. +@@ -991,7 +994,7 @@
  5027. + (match_operand:DF 1 "general_operand" ""))]
  5028. + ""
  5029. + {
  5030. +- if (CONSTANT_P (operands[1]) && !TARGET_CONST16)
  5031. ++ if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS)
  5032. + operands[1] = force_const_mem (DFmode, operands[1]);
  5033. +
  5034. + if (!register_operand (operands[0], DFmode)
  5035. +@@ -1002,8 +1005,8 @@
  5036. + })
  5037. +
  5038. + (define_insn_and_split "movdf_internal"
  5039. +- [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U")
  5040. +- (match_operand:DF 1 "move_operand" "r,iF,T,U,r"))]
  5041. ++ [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U")
  5042. ++ (match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))]
  5043. + "register_operand (operands[0], DFmode)
  5044. + || register_operand (operands[1], DFmode)"
  5045. + "#"
  5046. +diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt
  5047. +index 2fd6cee..21c6e96 100644
  5048. +--- a/gcc/config/xtensa/xtensa.opt
  5049. ++++ b/gcc/config/xtensa/xtensa.opt
  5050. +@@ -38,6 +38,10 @@ mtext-section-literals
  5051. + Target
  5052. + Intersperse literal pools with code in the text section
  5053. +
  5054. ++mauto-litpools
  5055. ++Target Report Mask(AUTO_LITPOOLS)
  5056. ++Relax literals in assembler and place them automatically in the text section
  5057. ++
  5058. + mserialize-volatile
  5059. + Target Report Mask(SERIALIZE_VOLATILE)
  5060. + -mno-serialize-volatile Do not serialize volatile memory references with MEMW instructions
  5061. +--
  5062. +1.8.1.4
  5063. +
  5064. diff --git a/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
  5065. new file mode 100644
  5066. index 0000000..abc7a08
  5067. --- /dev/null
  5068. +++ b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
  5069. @@ -0,0 +1,76 @@
  5070. +From 05154174b369505238b759cf80d595d8cfc8c731 Mon Sep 17 00:00:00 2001
  5071. +From: Max Filippov <jcmvbkbc@gmail.com>
  5072. +Date: Mon, 10 Aug 2015 21:35:20 +0300
  5073. +Subject: [PATCH 1/3] xtensa: reimplement register spilling
  5074. +
  5075. +Spilling windowed registers in userspace is much easier, more portable,
  5076. +less error-prone and equally effective as in kernel. Now that register
  5077. +spilling syscall is considered obsolete in the xtensa linux kernel
  5078. +replace it with CALL12 followed by series of ENTRY in libgcc.
  5079. +
  5080. +2015-08-18 Max Filippov <jcmvbkbc@gmail.com>
  5081. +libgcc/
  5082. + * config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use
  5083. + CALL12 followed by series of ENTRY to spill windowed registers.
  5084. + (__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill
  5085. + instead of making linux spill syscall.
  5086. +
  5087. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  5088. +---
  5089. +Backported from: r226962
  5090. +
  5091. + libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++-------
  5092. + 1 file changed, 23 insertions(+), 7 deletions(-)
  5093. +
  5094. +diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S
  5095. +index 3ac8c1d..2e678af 100644
  5096. +--- a/libgcc/config/xtensa/lib2funcs.S
  5097. ++++ b/libgcc/config/xtensa/lib2funcs.S
  5098. +@@ -33,10 +33,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  5099. + .global __xtensa_libgcc_window_spill
  5100. + .type __xtensa_libgcc_window_spill,@function
  5101. + __xtensa_libgcc_window_spill:
  5102. +- entry sp, 32
  5103. +- movi a2, 0
  5104. +- syscall
  5105. ++ entry sp, 48
  5106. ++#if XCHAL_NUM_AREGS > 16
  5107. ++ call12 1f
  5108. ++ retw
  5109. ++ .align 4
  5110. ++1:
  5111. ++ .rept (XCHAL_NUM_AREGS - 24) / 12
  5112. ++ _entry sp, 48
  5113. ++ mov a12, a0
  5114. ++ .endr
  5115. ++ _entry sp, 16
  5116. ++#if XCHAL_NUM_AREGS % 12 == 0
  5117. ++ mov a4, a4
  5118. ++#elif XCHAL_NUM_AREGS % 12 == 4
  5119. ++ mov a8, a8
  5120. ++#elif XCHAL_NUM_AREGS % 12 == 8
  5121. ++ mov a12, a12
  5122. ++#endif
  5123. ++ retw
  5124. ++#else
  5125. ++ mov a8, a8
  5126. + retw
  5127. ++#endif
  5128. + .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill
  5129. +
  5130. +
  5131. +@@ -58,10 +77,7 @@ __xtensa_nonlocal_goto:
  5132. + entry sp, 32
  5133. +
  5134. + /* Flush registers. */
  5135. +- mov a5, a2
  5136. +- movi a2, 0
  5137. +- syscall
  5138. +- mov a2, a5
  5139. ++ call8 __xtensa_libgcc_window_spill
  5140. +
  5141. + /* Because the save area for a0-a3 is stored one frame below
  5142. + the one identified by a2, the only way to restore those
  5143. +--
  5144. +1.8.1.4
  5145. +
  5146. diff --git a/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
  5147. new file mode 100644
  5148. index 0000000..f23a5c0
  5149. --- /dev/null
  5150. +++ b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
  5151. @@ -0,0 +1,33 @@
  5152. +From f66206679a0ad604f13673559f230160cd3d1189 Mon Sep 17 00:00:00 2001
  5153. +From: Max Filippov <jcmvbkbc@gmail.com>
  5154. +Date: Fri, 14 Aug 2015 02:45:02 +0300
  5155. +Subject: [PATCH 2/3] xtensa: use unwind-dw2-fde-dip instead of unwind-dw2-fde
  5156. +
  5157. +This allows having exception cleanup code in binaries that don't
  5158. +register their unwind tables.
  5159. +
  5160. +2015-08-18 Max Filippov <jcmvbkbc@gmail.com>
  5161. +libgcc/
  5162. + * config/xtensa/t-xtensa (LIB2ADDEH): Replace unwind-dw2-fde
  5163. + with unwind-dw2-fde-dip.
  5164. +
  5165. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  5166. +---
  5167. +Backported from: r226963
  5168. +
  5169. + libgcc/config/xtensa/t-xtensa | 2 +-
  5170. + 1 file changed, 1 insertion(+), 1 deletion(-)
  5171. +
  5172. +diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa
  5173. +index 27399e6..66d0eb3 100644
  5174. +--- a/libgcc/config/xtensa/t-xtensa
  5175. ++++ b/libgcc/config/xtensa/t-xtensa
  5176. +@@ -13,4 +13,4 @@ LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \
  5177. + LIB2ADD = $(srcdir)/config/xtensa/lib2funcs.S
  5178. +
  5179. + LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \
  5180. +- $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
  5181. ++ $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
  5182. +--
  5183. +1.8.1.4
  5184. +
  5185. diff --git a/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
  5186. new file mode 100644
  5187. index 0000000..dc40513
  5188. --- /dev/null
  5189. +++ b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
  5190. @@ -0,0 +1,40 @@
  5191. +From 15c7c4d39b317f0d902ef28fd43eca5c3369f891 Mon Sep 17 00:00:00 2001
  5192. +From: Max Filippov <jcmvbkbc@gmail.com>
  5193. +Date: Sat, 15 Aug 2015 05:12:11 +0300
  5194. +Subject: [PATCH 3/3] xtensa: fix _Unwind_GetCFA
  5195. +
  5196. +Returning context->cfa in _Unwind_GetCFA makes CFA point one stack frame
  5197. +higher than what was actually used by code at context->ra. This results
  5198. +in invalid CFA value in signal frames and premature unwinding completion
  5199. +in forced unwinding used by uClibc NPTL thread cancellation.
  5200. +Returning context->sp from _Unwind_GetCFA makes all CFA values valid and
  5201. +matching code that used them.
  5202. +
  5203. +2015-08-18 Max Filippov <jcmvbkbc@gmail.com>
  5204. +libgcc/
  5205. + * config/xtensa/unwind-dw2-xtensa.c (_Unwind_GetCFA): Return
  5206. + context->sp instead of context->cfa.
  5207. +
  5208. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  5209. +---
  5210. +Backported from: r226964
  5211. +
  5212. + libgcc/config/xtensa/unwind-dw2-xtensa.c | 2 +-
  5213. + 1 file changed, 1 insertion(+), 1 deletion(-)
  5214. +
  5215. +diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c
  5216. +index 35f7797..ef6b900 100644
  5217. +--- a/libgcc/config/xtensa/unwind-dw2-xtensa.c
  5218. ++++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c
  5219. +@@ -130,7 +130,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
  5220. + _Unwind_Word
  5221. + _Unwind_GetCFA (struct _Unwind_Context *context)
  5222. + {
  5223. +- return (_Unwind_Ptr) context->cfa;
  5224. ++ return (_Unwind_Ptr) context->sp;
  5225. + }
  5226. +
  5227. + /* Overwrite the saved value for register INDEX in CONTEXT with VAL. */
  5228. +--
  5229. +1.8.1.4
  5230. +
  5231. diff --git a/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
  5232. new file mode 100644
  5233. index 0000000..23db3d8
  5234. --- /dev/null
  5235. +++ b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
  5236. @@ -0,0 +1,174 @@
  5237. +From 70c2cb98fb129b4766b5da0f945dc41fd568c77a Mon Sep 17 00:00:00 2001
  5238. +From: Max Filippov <jcmvbkbc@gmail.com>
  5239. +Date: Sat, 22 Aug 2015 08:44:26 +0300
  5240. +Subject: [PATCH] xtensa: add uclinux support
  5241. +
  5242. +2015-10-03 Max Filippov <jcmvbkbc@gmail.com>
  5243. +gcc/
  5244. + * config.gcc (xtensa*-*-uclinux*): New configuration.
  5245. + * config/xtensa/uclinux.h: New file.
  5246. + * config/xtensa/uclinux.opt: New file.
  5247. +
  5248. +libgcc/
  5249. + * config.host (xtensa*-*-uclinux*): New configuration.
  5250. +
  5251. +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  5252. +---
  5253. +Backported from: r228450
  5254. +
  5255. + gcc/config.gcc | 5 ++++
  5256. + gcc/config/xtensa/uclinux.h | 69 +++++++++++++++++++++++++++++++++++++++++++
  5257. + gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++
  5258. + libgcc/config.host | 5 ++++
  5259. + 4 files changed, 111 insertions(+)
  5260. + create mode 100644 gcc/config/xtensa/uclinux.h
  5261. + create mode 100644 gcc/config/xtensa/uclinux.opt
  5262. +
  5263. +diff --git a/gcc/config.gcc b/gcc/config.gcc
  5264. +index c52f5a8..56797bd 100644
  5265. +--- a/gcc/config.gcc
  5266. ++++ b/gcc/config.gcc
  5267. +@@ -2995,6 +2995,11 @@ xtensa*-*-linux*)
  5268. + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
  5269. + tmake_file="${tmake_file} xtensa/t-xtensa"
  5270. + ;;
  5271. ++xtensa*-*-uclinux*)
  5272. ++ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
  5273. ++ tmake_file="${tmake_file} xtensa/t-xtensa"
  5274. ++ extra_options="${extra_options} xtensa/uclinux.opt"
  5275. ++ ;;
  5276. + am33_2.0-*-linux*)
  5277. + tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
  5278. + gas=yes gnu_ld=yes
  5279. +diff --git a/gcc/config/xtensa/uclinux.h b/gcc/config/xtensa/uclinux.h
  5280. +new file mode 100644
  5281. +index 0000000..4606020
  5282. +--- /dev/null
  5283. ++++ b/gcc/config/xtensa/uclinux.h
  5284. +@@ -0,0 +1,69 @@
  5285. ++/* Xtensa uClinux configuration.
  5286. ++ Derived from the configuration for GCC for Intel i386 running Linux.
  5287. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc.
  5288. ++
  5289. ++This file is part of GCC.
  5290. ++
  5291. ++GCC is free software; you can redistribute it and/or modify it under
  5292. ++the terms of the GNU General Public License as published by the Free
  5293. ++Software Foundation; either version 3, or (at your option) any later
  5294. ++version.
  5295. ++
  5296. ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  5297. ++WARRANTY; without even the implied warranty of MERCHANTABILITY or
  5298. ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  5299. ++for more details.
  5300. ++
  5301. ++You should have received a copy of the GNU General Public License
  5302. ++along with GCC; see the file COPYING3. If not see
  5303. ++<http://www.gnu.org/licenses/>. */
  5304. ++
  5305. ++#undef TARGET_OS_CPP_BUILTINS
  5306. ++#define TARGET_OS_CPP_BUILTINS() \
  5307. ++ do \
  5308. ++ { \
  5309. ++ GNU_USER_TARGET_OS_CPP_BUILTINS (); \
  5310. ++ builtin_define ("__uClinux__"); \
  5311. ++ } \
  5312. ++ while (0)
  5313. ++
  5314. ++#undef SUBTARGET_CPP_SPEC
  5315. ++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
  5316. ++
  5317. ++#undef SIZE_TYPE
  5318. ++#define SIZE_TYPE "unsigned int"
  5319. ++
  5320. ++#undef PTRDIFF_TYPE
  5321. ++#define PTRDIFF_TYPE "int"
  5322. ++
  5323. ++#undef WCHAR_TYPE
  5324. ++#define WCHAR_TYPE "long int"
  5325. ++
  5326. ++#undef WCHAR_TYPE_SIZE
  5327. ++#define WCHAR_TYPE_SIZE 32
  5328. ++
  5329. ++#undef ASM_SPEC
  5330. ++#define ASM_SPEC \
  5331. ++ "%{mtext-section-literals:--text-section-literals} \
  5332. ++ %{mno-text-section-literals:--no-text-section-literals} \
  5333. ++ %{mtarget-align:--target-align} \
  5334. ++ %{mno-target-align:--no-target-align} \
  5335. ++ %{mlongcalls:--longcalls} \
  5336. ++ %{mno-longcalls:--no-longcalls} \
  5337. ++ %{mauto-litpools:--auto-litpools} \
  5338. ++ %{mno-auto-litpools:--no-auto-litpools}"
  5339. ++
  5340. ++#undef LINK_SPEC
  5341. ++#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}"
  5342. ++
  5343. ++#undef LOCAL_LABEL_PREFIX
  5344. ++#define LOCAL_LABEL_PREFIX "."
  5345. ++
  5346. ++/* Always enable "-fpic" for Xtensa Linux. */
  5347. ++#define XTENSA_ALWAYS_PIC 1
  5348. ++
  5349. ++#undef TARGET_LIBC_HAS_FUNCTION
  5350. ++#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
  5351. ++
  5352. ++#undef DBX_REGISTER_NUMBER
  5353. ++
  5354. +diff --git a/gcc/config/xtensa/uclinux.opt b/gcc/config/xtensa/uclinux.opt
  5355. +new file mode 100644
  5356. +index 0000000..95ef777
  5357. +--- /dev/null
  5358. ++++ b/gcc/config/xtensa/uclinux.opt
  5359. +@@ -0,0 +1,32 @@
  5360. ++; Xtensa uClinux options.
  5361. ++
  5362. ++; Copyright (C) 2015 Free Software Foundation, Inc.
  5363. ++;
  5364. ++; This file is part of GCC.
  5365. ++;
  5366. ++; GCC is free software; you can redistribute it and/or modify it under
  5367. ++; the terms of the GNU General Public License as published by the Free
  5368. ++; Software Foundation; either version 3, or (at your option) any later
  5369. ++; version.
  5370. ++;
  5371. ++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  5372. ++; WARRANTY; without even the implied warranty of MERCHANTABILITY or
  5373. ++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  5374. ++; for more details.
  5375. ++;
  5376. ++; You should have received a copy of the GNU General Public License
  5377. ++; along with GCC; see the file COPYING3. If not see
  5378. ++; <http://www.gnu.org/licenses/>.
  5379. ++
  5380. ++; See the GCC internals manual (options.texi) for a description of
  5381. ++; this file's format.
  5382. ++
  5383. ++; Please try to keep this file in ASCII collating order.
  5384. ++
  5385. ++elf2flt
  5386. ++Driver
  5387. ++
  5388. ++elf2flt=
  5389. ++Driver JoinedOrMissing
  5390. ++
  5391. ++; This comment is to ensure we retain the blank line above.
  5392. +diff --git a/libgcc/config.host b/libgcc/config.host
  5393. +index 2c64756..2ee92c1 100644
  5394. +--- a/libgcc/config.host
  5395. ++++ b/libgcc/config.host
  5396. +@@ -1295,6 +1295,11 @@ xtensa*-*-linux*)
  5397. + tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
  5398. + md_unwind_header=xtensa/linux-unwind.h
  5399. + ;;
  5400. ++xtensa*-*-uclinux*)
  5401. ++ tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
  5402. ++ md_unwind_header=xtensa/linux-unwind.h
  5403. ++ extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o"
  5404. ++ ;;
  5405. + am33_2.0-*-linux*)
  5406. + # Don't need crtbeginT.o from *-*-linux* default.
  5407. + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
  5408. +--
  5409. +1.8.1.4
  5410. +
  5411. diff --git a/package/gcc/4.9.3/880-nios2_legitimize_address.patch b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
  5412. new file mode 100644
  5413. index 0000000..4623f29
  5414. --- /dev/null
  5415. +++ b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
  5416. @@ -0,0 +1,49 @@
  5417. +From b0ea54f3f995754881e0ea6651133aa7b58eeaa2 Mon Sep 17 00:00:00 2001
  5418. +From: cltang <cltang@138bc75d-0d04-0410-961f-82ee72b054a4>
  5419. +Date: Tue, 22 Sep 2015 12:23:20 +0000
  5420. +Subject: [PATCH] nios2_legitimize_address 2015-09-22 Chung-Lin Tang
  5421. + <cltang@codesourcery.com>
  5422. +
  5423. + Backport from mainline
  5424. + 2015-09-22 Chung-Lin Tang <cltang@codesourcery.com>
  5425. +
  5426. + * config/nios2/nios2.c (nios2_legitimize_address): When handling
  5427. + 'reg + reloc' cases, allow first operand to be non-REG, and use
  5428. + force_reg() to enforce address pattern.
  5429. +
  5430. +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@228013 138bc75d-0d04-0410-961f-82ee72b054a4
  5431. +
  5432. +Fixes:
  5433. +http://autobuild.buildroot.net/results/901/90186d1fe134b804c0101554296b1235dc0ccbb0
  5434. +
  5435. +[backported to 4.9.3]
  5436. +Signed-off-by: Romain Naour <romain.naour@gmail.com>
  5437. +---
  5438. + gcc/config/nios2/nios2.c | 4 ++--
  5439. + 1 file changed, 2 insertions(+), 2 deletions(-)
  5440. +
  5441. +diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
  5442. +index 047b615..41dd6f9 100644
  5443. +--- a/gcc/config/nios2/nios2.c
  5444. ++++ b/gcc/config/nios2/nios2.c
  5445. +@@ -1786,15 +1786,15 @@ nios2_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
  5446. +
  5447. + Which will be output as '%tls_le(var+48)(r23)' in assembly. */
  5448. + if (GET_CODE (x) == PLUS
  5449. +- && GET_CODE (XEXP (x, 0)) == REG
  5450. + && GET_CODE (XEXP (x, 1)) == CONST)
  5451. + {
  5452. +- rtx unspec, offset, reg = XEXP (x, 0);
  5453. ++ rtx unspec, offset;
  5454. + split_const (XEXP (x, 1), &unspec, &offset);
  5455. + if (GET_CODE (unspec) == UNSPEC
  5456. + && !nios2_large_offset_p (XINT (unspec, 1))
  5457. + && offset != const0_rtx)
  5458. + {
  5459. ++ rtx reg = force_reg (Pmode, XEXP (x, 0));
  5460. + unspec = copy_rtx (unspec);
  5461. + XVECEXP (unspec, 0, 0)
  5462. + = plus_constant (Pmode, XVECEXP (unspec, 0, 0), INTVAL (offset));
  5463. +--
  5464. +2.5.0
  5465. +
  5466. diff --git a/package/gcc/4.9.3/890-fix-m68k-compile.patch b/package/gcc/4.9.3/890-fix-m68k-compile.patch
  5467. new file mode 100644
  5468. index 0000000..140977b
  5469. --- /dev/null
  5470. +++ b/package/gcc/4.9.3/890-fix-m68k-compile.patch
  5471. @@ -0,0 +1,15 @@
  5472. +remove unused header, which breaks the toolchain building
  5473. +
  5474. +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
  5475. +
  5476. +diff -Nur gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.3/libgcc/config/m68k/linux-atomic.c
  5477. +--- gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c 2014-01-02 23:25:22.000000000 +0100
  5478. ++++ gcc-4.9.3/libgcc/config/m68k/linux-atomic.c 2016-03-18 22:24:40.000000000 +0100
  5479. +@@ -33,7 +33,6 @@
  5480. + using the kernel helper defined below. There is no support for
  5481. + 64-bit operations yet. */
  5482. +
  5483. +-#include <asm/unistd.h>
  5484. + #include <stdbool.h>
  5485. +
  5486. + #ifndef __NR_atomic_cmpxchg_32
  5487. diff --git a/package/gcc/4.9.3/900-musl-support.patch b/package/gcc/4.9.3/900-musl-support.patch
  5488. new file mode 100644
  5489. index 0000000..90f64de
  5490. --- /dev/null
  5491. +++ b/package/gcc/4.9.3/900-musl-support.patch
  5492. @@ -0,0 +1,640 @@
  5493. +Add musl support to gcc
  5494. +
  5495. +This patch comes from the musl-cross project at
  5496. +https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
  5497. +
  5498. + * the config.sub modifications have been removed, because Buildroot
  5499. + already overwrites all config.sub with a more recent config.sub
  5500. + that has musl support.
  5501. +
  5502. + * change to ensure that a dummy dynamic linker path
  5503. + MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
  5504. + otherwise building gcc for architectures not supported by musl was
  5505. + causing build failure. Bug reported upstream at
  5506. + https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
  5507. +
  5508. + * change the USE_PT_GNU_EH_FRAME logic to keep the existing gcc logic
  5509. + and only add the musl one as an addition, not as a replacement. Not
  5510. + doing this breaks C++ exception handling with glibc, because
  5511. + USE_PT_GNU_EH_FRAME doesn't get defined due to the configure script
  5512. + not testing dl_iterate_phdr() on any system except Solaris.
  5513. +
  5514. +[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
  5515. +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  5516. +---
  5517. +
  5518. +Index: b/fixincludes/mkfixinc.sh
  5519. +===================================================================
  5520. +--- a/fixincludes/mkfixinc.sh
  5521. ++++ b/fixincludes/mkfixinc.sh
  5522. +@@ -19,7 +19,8 @@
  5523. + powerpc-*-eabi* | \
  5524. + powerpc-*-rtems* | \
  5525. + powerpcle-*-eabisim* | \
  5526. +- powerpcle-*-eabi* )
  5527. ++ powerpcle-*-eabi* | \
  5528. ++ *-musl* )
  5529. + # IF there is no include fixing,
  5530. + # THEN create a no-op fixer and exit
  5531. + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
  5532. +Index: b/gcc/config.gcc
  5533. +===================================================================
  5534. +--- a/gcc/config.gcc
  5535. ++++ b/gcc/config.gcc
  5536. +@@ -594,7 +594,7 @@
  5537. + esac
  5538. +
  5539. + # Common C libraries.
  5540. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
  5541. ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
  5542. +
  5543. + # 32-bit x86 processors supported by --with-arch=. Each processor
  5544. + # MUST be separated by exactly one space.
  5545. +@@ -719,6 +719,9 @@
  5546. + *-*-*uclibc*)
  5547. + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
  5548. + ;;
  5549. ++ *-*-*musl*)
  5550. ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
  5551. ++ ;;
  5552. + *)
  5553. + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
  5554. + ;;
  5555. +@@ -2322,6 +2325,10 @@
  5556. + powerpc*-*-linux*paired*)
  5557. + tm_file="${tm_file} rs6000/750cl.h" ;;
  5558. + esac
  5559. ++ case ${target} in
  5560. ++ *-linux*-musl*)
  5561. ++ enable_secureplt=yes ;;
  5562. ++ esac
  5563. + if test x${enable_secureplt} = xyes; then
  5564. + tm_file="rs6000/secureplt.h ${tm_file}"
  5565. + fi
  5566. +Index: b/gcc/config/aarch64/aarch64-linux.h
  5567. +===================================================================
  5568. +--- a/gcc/config/aarch64/aarch64-linux.h
  5569. ++++ b/gcc/config/aarch64/aarch64-linux.h
  5570. +@@ -22,6 +22,8 @@
  5571. + #define GCC_AARCH64_LINUX_H
  5572. +
  5573. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
  5574. ++#undef MUSL_DYNAMIC_LINKER
  5575. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
  5576. +
  5577. + #define CPP_SPEC "%{pthread:-D_REENTRANT}"
  5578. +
  5579. +Index: b/gcc/config/arm/linux-eabi.h
  5580. +===================================================================
  5581. +--- a/gcc/config/arm/linux-eabi.h
  5582. ++++ b/gcc/config/arm/linux-eabi.h
  5583. +@@ -77,6 +77,23 @@
  5584. + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
  5585. + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
  5586. +
  5587. ++/* For ARM musl currently supports four dynamic linkers:
  5588. ++ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
  5589. ++ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
  5590. ++ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
  5591. ++ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
  5592. ++ musl does not support the legacy OABI mode.
  5593. ++ All the dynamic linkers live in /lib.
  5594. ++ We default to soft-float, EL. */
  5595. ++#undef MUSL_DYNAMIC_LINKER
  5596. ++#if TARGET_BIG_ENDIAN_DEFAULT
  5597. ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
  5598. ++#else
  5599. ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
  5600. ++#endif
  5601. ++#define MUSL_DYNAMIC_LINKER \
  5602. ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
  5603. ++
  5604. + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
  5605. + use the GNU/Linux version, not the generic BPABI version. */
  5606. + #undef LINK_SPEC
  5607. +Index: b/gcc/config/i386/linux.h
  5608. +===================================================================
  5609. +--- a/gcc/config/i386/linux.h
  5610. ++++ b/gcc/config/i386/linux.h
  5611. +@@ -21,3 +21,5 @@
  5612. +
  5613. + #define GNU_USER_LINK_EMULATION "elf_i386"
  5614. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  5615. ++#undef MUSL_DYNAMIC_LINKER
  5616. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
  5617. +Index: b/gcc/config/i386/linux64.h
  5618. +===================================================================
  5619. +--- a/gcc/config/i386/linux64.h
  5620. ++++ b/gcc/config/i386/linux64.h
  5621. +@@ -30,3 +30,10 @@
  5622. + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
  5623. + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
  5624. + #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
  5625. ++
  5626. ++#undef MUSL_DYNAMIC_LINKER32
  5627. ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
  5628. ++#undef MUSL_DYNAMIC_LINKER64
  5629. ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
  5630. ++#undef MUSL_DYNAMIC_LINKERX32
  5631. ++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
  5632. +Index: b/gcc/config/linux.h
  5633. +===================================================================
  5634. +--- a/gcc/config/linux.h
  5635. ++++ b/gcc/config/linux.h
  5636. +@@ -32,10 +32,12 @@
  5637. + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
  5638. + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
  5639. + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
  5640. ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
  5641. + #else
  5642. + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
  5643. + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
  5644. + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
  5645. ++#define OPTION_MUSL (linux_libc == LIBC_MUSL)
  5646. + #endif
  5647. +
  5648. + #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
  5649. +@@ -53,18 +55,21 @@
  5650. + uClibc or Bionic is the default C library and whether
  5651. + -muclibc or -mglibc or -mbionic has been passed to change the default. */
  5652. +
  5653. +-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
  5654. +- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
  5655. ++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
  5656. ++ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
  5657. +
  5658. + #if DEFAULT_LIBC == LIBC_GLIBC
  5659. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  5660. +- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
  5661. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  5662. ++ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
  5663. + #elif DEFAULT_LIBC == LIBC_UCLIBC
  5664. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  5665. +- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
  5666. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  5667. ++ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
  5668. + #elif DEFAULT_LIBC == LIBC_BIONIC
  5669. +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
  5670. +- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
  5671. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  5672. ++ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
  5673. ++#elif DEFAULT_LIBC == LIBC_MUSL
  5674. ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
  5675. ++ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
  5676. + #else
  5677. + #error "Unsupported DEFAULT_LIBC"
  5678. + #endif /* DEFAULT_LIBC */
  5679. +@@ -82,23 +87,103 @@
  5680. + #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
  5681. + #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
  5682. +
  5683. ++/* Musl dynamic linker paths must be defined on a per-architecture
  5684. ++ basis, for each architecture supported by Musl. However, in order
  5685. ++ to let other architectures continue to build with other C
  5686. ++ libraries, we provide a dummy definition of the following defines. */
  5687. ++#define MUSL_DYNAMIC_LINKER "invalid"
  5688. ++#define MUSL_DYNAMIC_LINKER32 "invalid"
  5689. ++#define MUSL_DYNAMIC_LINKER64 "invalid"
  5690. ++#define MUSL_DYNAMIC_LINKERX32 "invalid"
  5691. ++
  5692. + #define GNU_USER_DYNAMIC_LINKER \
  5693. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
  5694. +- BIONIC_DYNAMIC_LINKER)
  5695. ++ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
  5696. + #define GNU_USER_DYNAMIC_LINKER32 \
  5697. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
  5698. +- BIONIC_DYNAMIC_LINKER32)
  5699. ++ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
  5700. + #define GNU_USER_DYNAMIC_LINKER64 \
  5701. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
  5702. +- BIONIC_DYNAMIC_LINKER64)
  5703. ++ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
  5704. + #define GNU_USER_DYNAMIC_LINKERX32 \
  5705. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
  5706. +- BIONIC_DYNAMIC_LINKERX32)
  5707. ++ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
  5708. +
  5709. + /* Whether we have Bionic libc runtime */
  5710. + #undef TARGET_HAS_BIONIC
  5711. + #define TARGET_HAS_BIONIC (OPTION_BIONIC)
  5712. +
  5713. ++/* musl avoids problematic includes by rearranging the include directories.
  5714. ++ * Unfortunately, this is mostly duplicated from cppdefault.c */
  5715. ++#if DEFAULT_LIBC == LIBC_MUSL
  5716. ++#define INCLUDE_DEFAULTS_MUSL_GPP \
  5717. ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
  5718. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
  5719. ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
  5720. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
  5721. ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
  5722. ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
  5723. ++
  5724. ++#ifdef LOCAL_INCLUDE_DIR
  5725. ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \
  5726. ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
  5727. ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
  5728. ++#else
  5729. ++#define INCLUDE_DEFAULTS_MUSL_LOCAL
  5730. ++#endif
  5731. ++
  5732. ++#ifdef PREFIX_INCLUDE_DIR
  5733. ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \
  5734. ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
  5735. ++#else
  5736. ++#define INCLUDE_DEFAULTS_MUSL_PREFIX
  5737. ++#endif
  5738. ++
  5739. ++#ifdef CROSS_INCLUDE_DIR
  5740. ++#define INCLUDE_DEFAULTS_MUSL_CROSS \
  5741. ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
  5742. ++#else
  5743. ++#define INCLUDE_DEFAULTS_MUSL_CROSS
  5744. ++#endif
  5745. ++
  5746. ++#ifdef TOOL_INCLUDE_DIR
  5747. ++#define INCLUDE_DEFAULTS_MUSL_TOOL \
  5748. ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
  5749. ++#else
  5750. ++#define INCLUDE_DEFAULTS_MUSL_TOOL
  5751. ++#endif
  5752. ++
  5753. ++#ifdef NATIVE_SYSTEM_HEADER_DIR
  5754. ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \
  5755. ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
  5756. ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
  5757. ++#else
  5758. ++#define INCLUDE_DEFAULTS_MUSL_NATIVE
  5759. ++#endif
  5760. ++
  5761. ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
  5762. ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
  5763. ++# define INCLUDE_DEFAULTS_MUSL_LOCAL
  5764. ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
  5765. ++# define INCLUDE_DEFAULTS_MUSL_NATIVE
  5766. ++#else
  5767. ++# undef INCLUDE_DEFAULTS_MUSL_CROSS
  5768. ++# define INCLUDE_DEFAULTS_MUSL_CROSS
  5769. ++#endif
  5770. ++
  5771. ++#undef INCLUDE_DEFAULTS
  5772. ++#define INCLUDE_DEFAULTS \
  5773. ++ { \
  5774. ++ INCLUDE_DEFAULTS_MUSL_GPP \
  5775. ++ INCLUDE_DEFAULTS_MUSL_PREFIX \
  5776. ++ INCLUDE_DEFAULTS_MUSL_CROSS \
  5777. ++ INCLUDE_DEFAULTS_MUSL_TOOL \
  5778. ++ INCLUDE_DEFAULTS_MUSL_NATIVE \
  5779. ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
  5780. ++ { 0, 0, 0, 0, 0, 0 } \
  5781. ++ }
  5782. ++#endif
  5783. ++
  5784. + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
  5785. + /* This is a *uclinux* target. We don't define below macros to normal linux
  5786. + versions, because doing so would require *uclinux* targets to include
  5787. +Index: b/gcc/config/linux.opt
  5788. +===================================================================
  5789. +--- a/gcc/config/linux.opt
  5790. ++++ b/gcc/config/linux.opt
  5791. +@@ -30,3 +30,7 @@
  5792. + muclibc
  5793. + Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
  5794. + Use uClibc C library
  5795. ++
  5796. ++mmusl
  5797. ++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
  5798. ++Use musl C library
  5799. +Index: b/gcc/config/microblaze/linux.h
  5800. +===================================================================
  5801. +--- a/gcc/config/microblaze/linux.h
  5802. ++++ b/gcc/config/microblaze/linux.h
  5803. +@@ -25,7 +25,23 @@
  5804. + #undef TLS_NEEDS_GOT
  5805. + #define TLS_NEEDS_GOT 1
  5806. +
  5807. +-#define DYNAMIC_LINKER "/lib/ld.so.1"
  5808. ++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
  5809. ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
  5810. ++#else
  5811. ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
  5812. ++#endif
  5813. ++
  5814. ++#undef MUSL_DYNAMIC_LINKER
  5815. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
  5816. ++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  5817. ++
  5818. ++#if DEFAULT_LIBC == LIBC_MUSL
  5819. ++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
  5820. ++#else
  5821. ++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
  5822. ++#endif
  5823. ++
  5824. ++
  5825. + #undef SUBTARGET_EXTRA_SPECS
  5826. + #define SUBTARGET_EXTRA_SPECS \
  5827. + { "dynamic_linker", DYNAMIC_LINKER }
  5828. +Index: b/gcc/config/rs6000/linux64.h
  5829. +===================================================================
  5830. +--- a/gcc/config/rs6000/linux64.h
  5831. ++++ b/gcc/config/rs6000/linux64.h
  5832. +@@ -375,17 +375,23 @@
  5833. + #endif
  5834. + #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
  5835. + #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
  5836. ++#undef MUSL_DYNAMIC_LINKER32
  5837. ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
  5838. ++#undef MUSL_DYNAMIC_LINKER64
  5839. ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
  5840. + #if DEFAULT_LIBC == LIBC_UCLIBC
  5841. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
  5842. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
  5843. + #elif DEFAULT_LIBC == LIBC_GLIBC
  5844. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
  5845. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
  5846. ++#elif DEFAULT_LIBC == LIBC_MUSL
  5847. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
  5848. + #else
  5849. + #error "Unsupported DEFAULT_LIBC"
  5850. + #endif
  5851. + #define GNU_USER_DYNAMIC_LINKER32 \
  5852. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
  5853. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
  5854. + #define GNU_USER_DYNAMIC_LINKER64 \
  5855. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
  5856. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
  5857. +
  5858. + #undef DEFAULT_ASM_ENDIAN
  5859. + #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  5860. +Index: b/gcc/config/rs6000/secureplt.h
  5861. +===================================================================
  5862. +--- a/gcc/config/rs6000/secureplt.h
  5863. ++++ b/gcc/config/rs6000/secureplt.h
  5864. +@@ -18,3 +18,4 @@
  5865. + <http://www.gnu.org/licenses/>. */
  5866. +
  5867. + #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
  5868. ++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
  5869. +Index: b/gcc/config/rs6000/sysv4.h
  5870. +===================================================================
  5871. +--- a/gcc/config/rs6000/sysv4.h
  5872. ++++ b/gcc/config/rs6000/sysv4.h
  5873. +@@ -537,6 +537,9 @@
  5874. + #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
  5875. + #define CC1_SECURE_PLT_DEFAULT_SPEC ""
  5876. + #endif
  5877. ++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
  5878. ++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
  5879. ++#endif
  5880. +
  5881. + /* Pass -G xxx to the compiler. */
  5882. + #define CC1_SPEC "%{G*} %(cc1_cpu)" \
  5883. +@@ -585,7 +588,8 @@
  5884. +
  5885. + /* Override the default target of the linker. */
  5886. + #define LINK_TARGET_SPEC \
  5887. +- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
  5888. ++ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
  5889. ++ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
  5890. +
  5891. + /* Any specific OS flags. */
  5892. + #define LINK_OS_SPEC "\
  5893. +@@ -763,15 +767,18 @@
  5894. +
  5895. + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  5896. + #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
  5897. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
  5898. + #if DEFAULT_LIBC == LIBC_UCLIBC
  5899. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
  5900. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
  5901. ++#elif DEFAULT_LIBC == LIBC_MUSL
  5902. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
  5903. + #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
  5904. +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
  5905. ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
  5906. + #else
  5907. + #error "Unsupported DEFAULT_LIBC"
  5908. + #endif
  5909. + #define GNU_USER_DYNAMIC_LINKER \
  5910. +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
  5911. ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
  5912. +
  5913. + #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
  5914. + %{rdynamic:-export-dynamic} \
  5915. +@@ -894,6 +901,7 @@
  5916. + { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
  5917. + { "link_os_default", LINK_OS_DEFAULT_SPEC }, \
  5918. + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
  5919. ++ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
  5920. + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \
  5921. + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
  5922. + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
  5923. +Index: b/gcc/config/sh/linux.h
  5924. +===================================================================
  5925. +--- a/gcc/config/sh/linux.h
  5926. ++++ b/gcc/config/sh/linux.h
  5927. +@@ -43,7 +43,15 @@
  5928. +
  5929. + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  5930. +
  5931. ++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
  5932. ++#define MUSL_DYNAMIC_LINKER_E "eb"
  5933. ++#else
  5934. ++#define MUSL_DYNAMIC_LINKER_E
  5935. ++#endif
  5936. ++
  5937. + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
  5938. ++#undef MUSL_DYNAMIC_LINKER
  5939. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
  5940. +
  5941. + #undef SUBTARGET_LINK_EMUL_SUFFIX
  5942. + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
  5943. +Index: b/gcc/configure
  5944. +===================================================================
  5945. +--- a/gcc/configure
  5946. ++++ b/gcc/configure
  5947. +@@ -27449,6 +27453,9 @@
  5948. + gcc_cv_target_dl_iterate_phdr=no
  5949. + fi
  5950. + ;;
  5951. ++ *-linux-musl*)
  5952. ++ gcc_cv_target_dl_iterate_phdr=yes
  5953. ++ ;;
  5954. + esac
  5955. +
  5956. + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
  5957. +Index: b/gcc/configure.ac
  5958. +===================================================================
  5959. +--- a/gcc/configure.ac
  5960. ++++ b/gcc/configure.ac
  5961. +@@ -5108,6 +5112,9 @@
  5962. + gcc_cv_target_dl_iterate_phdr=no
  5963. + fi
  5964. + ;;
  5965. ++ *-linux-musl*)
  5966. ++ gcc_cv_target_dl_iterate_phdr=yes
  5967. ++ ;;
  5968. + esac
  5969. + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
  5970. + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
  5971. +Index: b/gcc/ginclude/stddef.h
  5972. +===================================================================
  5973. +--- a/gcc/ginclude/stddef.h
  5974. ++++ b/gcc/ginclude/stddef.h
  5975. +@@ -181,6 +181,7 @@
  5976. + #ifndef _GCC_SIZE_T
  5977. + #ifndef _SIZET_
  5978. + #ifndef __size_t
  5979. ++#ifndef __DEFINED_size_t /* musl */
  5980. + #define __size_t__ /* BeOS */
  5981. + #define __SIZE_T__ /* Cray Unicos/Mk */
  5982. + #define _SIZE_T
  5983. +@@ -197,6 +198,7 @@
  5984. + #define ___int_size_t_h
  5985. + #define _GCC_SIZE_T
  5986. + #define _SIZET_
  5987. ++#define __DEFINED_size_t /* musl */
  5988. + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
  5989. + || defined(__FreeBSD_kernel__)
  5990. + /* __size_t is a typedef on FreeBSD 5, must not trash it. */
  5991. +@@ -214,6 +216,7 @@
  5992. + typedef long ssize_t;
  5993. + #endif /* __BEOS__ */
  5994. + #endif /* !(defined (__GNUG__) && defined (size_t)) */
  5995. ++#endif /* __DEFINED_size_t */
  5996. + #endif /* __size_t */
  5997. + #endif /* _SIZET_ */
  5998. + #endif /* _GCC_SIZE_T */
  5999. +Index: b/libgcc/unwind-dw2-fde-dip.c
  6000. +===================================================================
  6001. +--- a/libgcc/unwind-dw2-fde-dip.c
  6002. ++++ b/libgcc/unwind-dw2-fde-dip.c
  6003. +@@ -73,6 +73,13 @@
  6004. + && defined(TARGET_DL_ITERATE_PHDR) \
  6005. + && defined(__sun__) && defined(__svr4__)
  6006. + # define USE_PT_GNU_EH_FRAME
  6007. ++ #endif
  6008. ++
  6009. ++/* For musl libc, TARGET_DL_ITERATE_PHDR gets defined by the configure
  6010. ++ script. */
  6011. ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
  6012. ++ && defined(TARGET_DL_ITERATE_PHDR)
  6013. ++# define USE_PT_GNU_EH_FRAME
  6014. + #endif
  6015. +
  6016. + #if defined(USE_PT_GNU_EH_FRAME)
  6017. +Index: b/libgomp/config/posix/time.c
  6018. +===================================================================
  6019. +--- a/libgomp/config/posix/time.c
  6020. ++++ b/libgomp/config/posix/time.c
  6021. +@@ -28,6 +28,8 @@
  6022. + The following implementation uses the most simple POSIX routines.
  6023. + If present, POSIX 4 clocks should be used instead. */
  6024. +
  6025. ++#define _POSIX_C_SOURCE 199309L /* for clocks */
  6026. ++
  6027. + #include "libgomp.h"
  6028. + #include <unistd.h>
  6029. + #if TIME_WITH_SYS_TIME
  6030. +Index: b/libitm/config/arm/hwcap.cc
  6031. +===================================================================
  6032. +--- a/libitm/config/arm/hwcap.cc
  6033. ++++ b/libitm/config/arm/hwcap.cc
  6034. +@@ -40,7 +40,11 @@
  6035. +
  6036. + #ifdef __linux__
  6037. + #include <unistd.h>
  6038. ++#ifdef __GLIBC__
  6039. + #include <sys/fcntl.h>
  6040. ++#else
  6041. ++#include <fcntl.h>
  6042. ++#endif
  6043. + #include <elf.h>
  6044. +
  6045. + static void __attribute__((constructor))
  6046. +Index: b/libitm/config/linux/x86/tls.h
  6047. +===================================================================
  6048. +--- a/libitm/config/linux/x86/tls.h
  6049. ++++ b/libitm/config/linux/x86/tls.h
  6050. +@@ -25,16 +25,19 @@
  6051. + #ifndef LIBITM_X86_TLS_H
  6052. + #define LIBITM_X86_TLS_H 1
  6053. +
  6054. +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
  6055. ++#if defined(__GLIBC_PREREQ)
  6056. ++#if __GLIBC_PREREQ(2, 10)
  6057. + /* Use slots in the TCB head rather than __thread lookups.
  6058. + GLIBC has reserved words 10 through 13 for TM. */
  6059. + #define HAVE_ARCH_GTM_THREAD 1
  6060. + #define HAVE_ARCH_GTM_THREAD_DISP 1
  6061. + #endif
  6062. ++#endif
  6063. +
  6064. + #include "config/generic/tls.h"
  6065. +
  6066. +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
  6067. ++#if defined(__GLIBC_PREREQ)
  6068. ++#if __GLIBC_PREREQ(2, 10)
  6069. + namespace GTM HIDDEN {
  6070. +
  6071. + #ifdef __x86_64__
  6072. +@@ -101,5 +104,6 @@
  6073. +
  6074. + } // namespace GTM
  6075. + #endif /* >= GLIBC 2.10 */
  6076. ++#endif
  6077. +
  6078. + #endif // LIBITM_X86_TLS_H
  6079. +Index: b/libstdc++-v3/configure.host
  6080. +===================================================================
  6081. +--- a/libstdc++-v3/configure.host
  6082. ++++ b/libstdc++-v3/configure.host
  6083. +@@ -264,6 +264,13 @@
  6084. + os_include_dir="os/bsd/freebsd"
  6085. + ;;
  6086. + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
  6087. ++ # check for musl by target
  6088. ++ case "${host_os}" in
  6089. ++ *-musl*)
  6090. ++ os_include_dir="os/generic"
  6091. ++ ;;
  6092. ++ *)
  6093. ++
  6094. + if [ "$uclibc" = "yes" ]; then
  6095. + os_include_dir="os/uclibc"
  6096. + elif [ "$bionic" = "yes" ]; then
  6097. +@@ -272,6 +279,9 @@
  6098. + os_include_dir="os/gnu-linux"
  6099. + fi
  6100. + ;;
  6101. ++
  6102. ++ esac
  6103. ++ ;;
  6104. + hpux*)
  6105. + os_include_dir="os/hpux"
  6106. + ;;
  6107. +Index: b/gcc/config/mips/linux64.h
  6108. +===================================================================
  6109. +--- a/gcc/config/mips/linux64.h
  6110. ++++ b/gcc/config/mips/linux64.h
  6111. +@@ -41,4 +41,4 @@
  6112. + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
  6113. + #define GNU_USER_DYNAMIC_LINKERN32 \
  6114. + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
  6115. +- BIONIC_DYNAMIC_LINKERN32)
  6116. ++ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
  6117. +Index: b/gcc/config/mips/linux.h
  6118. +===================================================================
  6119. +--- a/gcc/config/mips/linux.h
  6120. ++++ b/gcc/config/mips/linux.h
  6121. +@@ -23,3 +23,11 @@
  6122. + #undef UCLIBC_DYNAMIC_LINKER
  6123. + #define UCLIBC_DYNAMIC_LINKER \
  6124. + "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
  6125. ++
  6126. ++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
  6127. ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
  6128. ++#else
  6129. ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
  6130. ++#endif
  6131. ++#undef MUSL_DYNAMIC_LINKER
  6132. ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
  6133. diff --git a/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
  6134. new file mode 100644
  6135. index 0000000..df5372b
  6136. --- /dev/null
  6137. +++ b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
  6138. @@ -0,0 +1,12 @@
  6139. +Upstream status: In progress
  6140. +
  6141. +--- a/libgcc/config/nios2/linux-atomic.c
  6142. ++++ b/libgcc/config/nios2/linux-atomic.c
  6143. +@@ -20,7 +20,6 @@
  6144. + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  6145. + <http://www.gnu.org/licenses/>. */
  6146. +
  6147. +-#include <asm/unistd.h>
  6148. + #define EFAULT 14
  6149. + #define EBUSY 16
  6150. + #define ENOSYS 38
  6151. diff --git a/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
  6152. new file mode 100644
  6153. index 0000000..670cf8d
  6154. --- /dev/null
  6155. +++ b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
  6156. @@ -0,0 +1,14 @@
  6157. +disable split-stack for non-thread builds
  6158. +
  6159. +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
  6160. +
  6161. +diff -Nur gcc-4.9.3.orig/libgcc/config/t-stack gcc-4.9.3/libgcc/config/t-stack
  6162. +--- gcc-4.9.3.orig/libgcc/config/t-stack 2010-10-01 21:31:49.000000000 +0200
  6163. ++++ gcc-4.9.3/libgcc/config/t-stack 2016-03-07 01:34:32.000000000 +0100
  6164. +@@ -1,4 +1,6 @@
  6165. + # Makefile fragment to provide generic support for -fsplit-stack.
  6166. + # This should be used in config.host for any host which supports
  6167. + # -fsplit-stack.
  6168. ++ifeq ($(enable_threads),yes)
  6169. + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
  6170. ++endif
  6171. diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
  6172. index d10798b..db0473e 100644
  6173. --- a/package/gcc/Config.in.host
  6174. +++ b/package/gcc/Config.in.host
  6175. @@ -36,6 +36,32 @@ choice
  6176. depends on BR2_arc
  6177. select BR2_TOOLCHAIN_GCC_AT_LEAST_6
  6178. + config BR2_GCC_VERSION_4_9_1
  6179. + bool "gcc 4.9.1"
  6180. + # Broken or unsupported architectures
  6181. + depends on !BR2_arc
  6182. + # Broken or unsupported ARM cores
  6183. + depends on !BR2_cortex_a17
  6184. + # Unsupported for MIPS R6
  6185. + depends on !BR2_mips_32r6 && !BR2_mips_64r6
  6186. + # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
  6187. + select BR2_GCC_NEEDS_MPC
  6188. + select BR2_GCC_SUPPORTS_GRAPHITE
  6189. + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  6190. +
  6191. + config BR2_GCC_VERSION_4_9_3
  6192. + bool "gcc 4.9.3"
  6193. + # Broken or unsupported architectures
  6194. + depends on !BR2_arc
  6195. + # Broken or unsupported ARM cores
  6196. + depends on !BR2_cortex_a17
  6197. + # Unsupported for MIPS R6
  6198. + depends on !BR2_mips_32r6 && !BR2_mips_64r6
  6199. + # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
  6200. + select BR2_GCC_NEEDS_MPC
  6201. + select BR2_GCC_SUPPORTS_GRAPHITE
  6202. + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
  6203. +
  6204. config BR2_GCC_VERSION_4_9_X
  6205. bool "gcc 4.9.x"
  6206. # Broken or unsupported architectures
  6207. @@ -95,6 +121,8 @@ config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
  6208. config BR2_GCC_VERSION
  6209. string
  6210. default "4.8.5" if BR2_GCC_VERSION_4_8_X
  6211. + default "4.9.1" if BR2_GCC_VERSION_4_9_1
  6212. + default "4.9.3" if BR2_GCC_VERSION_4_9_3
  6213. default "4.9.4" if BR2_GCC_VERSION_4_9_X
  6214. default "5.4.0" if BR2_GCC_VERSION_5_X
  6215. default "6.2.0" if BR2_GCC_VERSION_6_X
  6216. diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
  6217. index e5d96f4..1b53e1b 100644
  6218. --- a/package/gcc/gcc.hash
  6219. +++ b/package/gcc/gcc.hash
  6220. @@ -4,6 +4,10 @@ sha512 78696b287d46aacd6f150920da376ea32f58ad9f0dafd2d3b7fa6dbdd8dd7afe659108d1
  6221. sha512 dfcb737073191e628231031a3571ec77ee760a59377630f4a6e4fdfa66f9ddad39fde47e3f0f227eb43cdf90e0d34cde5abdc9ac892c1e111a911062a66c9189 gcc-4.7.4.tar.bz2
  6222. # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.5/sha512.sum
  6223. sha512 47fdfeca0c0a624cdec9c4ae47137d056c918d5c386d4b96985bb3c8172aba377cb66cbcc30e80832fd244a7d98f562c20198056915c70cfef0977545073a8ea gcc-4.8.5.tar.bz2
  6224. +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.1/sha512.sum
  6225. +sha512 8598106a4b7c03bb4d6e29fa1bfa9ee6b6390d1f1bca86c1ccd27aed830ae1d126daa50c4041016cbfa76090dd66c51f1ce06958b8ccd6c3be51eae875125593 gcc-4.9.1.tar.bz2
  6226. +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.3/sha512.sum
  6227. +sha512 9ac57377a6975fc7adac704ec81355262b9f537def6955576753b87715470a20ee6a2a3144a79cc8fcba3443f7b44c7337d79d704b522d053f54f79aa6b442df gcc-4.9.3.tar.bz2
  6228. # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.4/sha512.sum
  6229. sha512 93abb78e16277454f41a8e9810f41f66c0fdffdc539a762ff6b67d3037f78db971378683fd2ebf707d1d51c059fad2161fe42d110c330027f40214b7db0f3efe gcc-4.9.4.tar.bz2
  6230. # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.4.0/sha512.sum
  6231. diff --git a/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
  6232. new file mode 100644
  6233. index 0000000..da2f49d
  6234. --- /dev/null
  6235. +++ b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
  6236. @@ -0,0 +1,174 @@
  6237. +From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
  6238. +Modified for eglibc.
  6239. +
  6240. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6241. +
  6242. +WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  6243. +EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
  6244. +SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
  6245. +
  6246. +CVE-2014-7817:
  6247. +
  6248. +The function wordexp() fails to properly handle the WRDE_NOCMD
  6249. +flag when processing arithmetic inputs in the form of "$((... ``))"
  6250. +where "..." can be anything valid. The backticks in the arithmetic
  6251. +epxression are evaluated by in a shell even if WRDE_NOCMD forbade
  6252. +command substitution. This allows an attacker to attempt to pass
  6253. +dangerous commands via constructs of the above form, and bypass
  6254. +the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
  6255. +in parse_arith(). The patch also hardens parse_backticks() and
  6256. +parse_comm() to check for WRDE_NOCMD flag and return an error instead
  6257. +of ever running a shell.
  6258. +
  6259. +We expand the testsuite and add 3 new regression tests of roughtly
  6260. +the same form but with a couple of nested levels.
  6261. +
  6262. +On top of the 3 new tests we add fork validation to the WRDE_NOCMD
  6263. +testing. If any forks are detected during the execution of a wordexp()
  6264. +call with WRDE_NOCMD, the test is marked as failed. This is slightly
  6265. +heuristic since vfork might be used, but it provides a higher level
  6266. +of assurance that no shells were executed as part of command substitution
  6267. +with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
  6268. +libdl, instead we use the public implementation namespace function
  6269. +__register_atfork (already part of the public ABI for libpthread).
  6270. +
  6271. +Tested on x86_64 with no regressions.
  6272. +
  6273. +2014-10-27 Carlos O'Donell <carlos@redhat.com>
  6274. +
  6275. + * wordexp-test.c (__dso_handle): Add prototype.
  6276. + (__register_atfork): Likewise.
  6277. + (__app_register_atfork): New function.
  6278. + (registered_forks): New global.
  6279. + (register_fork): New function.
  6280. + (test_case): Add 3 new tests for WRDE_CMDSUB.
  6281. + (main): Call __app_register_atfork.
  6282. + (testit): If WRDE_NOCMD set registered_forks to zero, run test, and
  6283. + if fork count is non-zero fail the test.
  6284. + * posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
  6285. + is set and parsing '`'.
  6286. + (parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
  6287. + (parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
  6288. + parsing '`'.
  6289. +
  6290. +diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
  6291. +index 4957006..5ce2a1b 100644
  6292. +--- a/libc/posix/wordexp-test.c
  6293. ++++ b/libc/posix/wordexp-test.c
  6294. +@@ -27,6 +27,25 @@
  6295. +
  6296. + #define IFS " \n\t"
  6297. +
  6298. ++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
  6299. ++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
  6300. ++
  6301. ++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
  6302. ++{
  6303. ++ return __register_atfork (prepare, parent, child,
  6304. ++ &__dso_handle == NULL ? NULL : __dso_handle);
  6305. ++}
  6306. ++
  6307. ++/* Number of forks seen. */
  6308. ++static int registered_forks;
  6309. ++
  6310. ++/* For each fork increment the fork count. */
  6311. ++static void
  6312. ++register_fork (void)
  6313. ++{
  6314. ++ registered_forks++;
  6315. ++}
  6316. ++
  6317. + struct test_case_struct
  6318. + {
  6319. + int retval;
  6320. +@@ -206,6 +225,12 @@ struct test_case_struct
  6321. + { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
  6322. + { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
  6323. + { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
  6324. ++ /* Test for CVE-2014-7817. We test 3 combinations of command
  6325. ++ substitution inside an arithmetic expression to make sure that
  6326. ++ no commands are executed and error is returned. */
  6327. ++ { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6328. ++ { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6329. ++ { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6330. +
  6331. + { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
  6332. + };
  6333. +@@ -258,6 +283,15 @@ main (int argc, char *argv[])
  6334. + return -1;
  6335. + }
  6336. +
  6337. ++ /* If we are not allowed to do command substitution, we install
  6338. ++ fork handlers to verify that no forks happened. No forks should
  6339. ++ happen at all if command substitution is disabled. */
  6340. ++ if (__app_register_atfork (register_fork, NULL, NULL) != 0)
  6341. ++ {
  6342. ++ printf ("Failed to register fork handler.\n");
  6343. ++ return -1;
  6344. ++ }
  6345. ++
  6346. + for (test = 0; test_case[test].retval != -1; test++)
  6347. + if (testit (&test_case[test]))
  6348. + ++fail;
  6349. +@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
  6350. +
  6351. + printf ("Test %d (%s): ", ++tests, tc->words);
  6352. +
  6353. ++ if (tc->flags & WRDE_NOCMD)
  6354. ++ registered_forks = 0;
  6355. ++
  6356. + if (tc->flags & WRDE_APPEND)
  6357. + {
  6358. + /* initial wordexp() call, to be appended to */
  6359. +@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
  6360. + }
  6361. + retval = wordexp (tc->words, &we, tc->flags);
  6362. +
  6363. ++ if ((tc->flags & WRDE_NOCMD)
  6364. ++ && (registered_forks > 0))
  6365. ++ {
  6366. ++ printf ("FAILED fork called for WRDE_NOCMD\n");
  6367. ++ return 1;
  6368. ++ }
  6369. ++
  6370. + if (tc->flags & WRDE_DOOFFS)
  6371. + start_offs = sav_we.we_offs;
  6372. +
  6373. +diff --git a/posix/wordexp.c b/posix/wordexp.c
  6374. +index b6b65dd..d6a158f 100644
  6375. +--- a/libc/posix/wordexp.c
  6376. ++++ b/libc/posix/wordexp.c
  6377. +@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
  6378. + break;
  6379. +
  6380. + case '`':
  6381. ++ if (flags & WRDE_NOCMD)
  6382. ++ {
  6383. ++ free (expr);
  6384. ++ return WRDE_NOCMD;
  6385. ++ }
  6386. ++
  6387. + (*offset)++;
  6388. + error = parse_backtick (&expr, &expr_length, &expr_maxlen,
  6389. + words, offset, flags, NULL, NULL, NULL);
  6390. +@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
  6391. + size_t comm_maxlen;
  6392. + char *comm = w_newword (&comm_length, &comm_maxlen);
  6393. +
  6394. ++ /* Do nothing if command substitution should not succeed. */
  6395. ++ if (flags & WRDE_NOCMD)
  6396. ++ return WRDE_CMDSUB;
  6397. ++
  6398. + for (; words[*offset]; ++(*offset))
  6399. + {
  6400. + switch (words[*offset])
  6401. +@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
  6402. + switch (words[*offset])
  6403. + {
  6404. + case '`':
  6405. ++ if (flags & WRDE_NOCMD)
  6406. ++ return WRDE_NOCMD;
  6407. ++
  6408. + /* Go -- give the script to the shell */
  6409. + error = exec_comm (comm, word, word_length, max_length, flags,
  6410. + pwordexp, ifs, ifs_white);
  6411. diff --git a/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
  6412. new file mode 100644
  6413. index 0000000..4f426f2
  6414. --- /dev/null
  6415. +++ b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
  6416. @@ -0,0 +1,33 @@
  6417. +Backport upstream patch (28d708c44bc47b56f6551ff285f78edcf61c208a) to accept
  6418. +make-4.0 or newer.
  6419. +We patch both configure and configure.in files so if we ever have to run
  6420. +autoreconf in the glibc source, then the fix will be propagated properly.
  6421. +
  6422. +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
  6423. +
  6424. +Index: glibc-2.18-svnr23787/libc/configure
  6425. +===================================================================
  6426. +--- glibc-2.18-svnr23787.orig/libc/configure
  6427. ++++ glibc-2.18-svnr23787/libc/configure
  6428. +@@ -4772,7 +4772,7 @@ $as_echo_n "checking version of $MAKE...
  6429. + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
  6430. + case $ac_prog_version in
  6431. + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
  6432. +- 3.79* | 3.[89]*)
  6433. ++ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
  6434. + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
  6435. + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
  6436. +
  6437. +Index: glibc-2.18-svnr23787/libc/configure.in
  6438. +===================================================================
  6439. +--- glibc-2.18-svnr23787.orig/libc/configure.in
  6440. ++++ glibc-2.18-svnr23787/libc/configure.in
  6441. +@@ -989,7 +989,7 @@ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}g
  6442. + critic_missing="$critic_missing gcc")
  6443. + AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
  6444. + [GNU Make[^0-9]*\([0-9][0-9.]*\)],
  6445. +- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
  6446. ++ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
  6447. +
  6448. + AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
  6449. + [GNU gettext.* \([0-9]*\.[0-9.]*\)],
  6450. diff --git a/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
  6451. new file mode 100644
  6452. index 0000000..f447dcd
  6453. --- /dev/null
  6454. +++ b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
  6455. @@ -0,0 +1,141 @@
  6456. +Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
  6457. +See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
  6458. +
  6459. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6460. +
  6461. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
  6462. +--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c 2015-01-08 16:05:53.918823240 -0300
  6463. ++++ eglibc-2.19/libc/iconvdata/ibm1364.c 2015-01-08 16:06:02.781555143 -0300
  6464. +@@ -220,7 +220,8 @@
  6465. + ++rp2; \
  6466. + \
  6467. + uint32_t res; \
  6468. +- if (__builtin_expect (ch < rp2->start, 0) \
  6469. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6470. ++ || __builtin_expect (ch < rp2->start, 0) \
  6471. + || (res = DB_TO_UCS4[ch + rp2->idx], \
  6472. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6473. + { \
  6474. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
  6475. +--- eglibc-2.19.orig/libc/iconvdata/ibm932.c 2015-01-08 16:05:53.910818967 -0300
  6476. ++++ eglibc-2.19/libc/iconvdata/ibm932.c 2015-01-08 16:06:02.781555143 -0300
  6477. +@@ -73,11 +73,12 @@
  6478. + } \
  6479. + \
  6480. + ch = (ch * 0x100) + inptr[1]; \
  6481. ++ /* ch was less than 0xfd. */ \
  6482. ++ assert (ch < 0xfd00); \
  6483. + while (ch > rp2->end) \
  6484. + ++rp2; \
  6485. + \
  6486. +- if (__builtin_expect (rp2 == NULL, 0) \
  6487. +- || __builtin_expect (ch < rp2->start, 0) \
  6488. ++ if (__builtin_expect (ch < rp2->start, 0) \
  6489. + || (res = __ibm932db_to_ucs4[ch + rp2->idx], \
  6490. + __builtin_expect (res, '\1') == 0 && ch !=0)) \
  6491. + { \
  6492. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
  6493. +--- eglibc-2.19.orig/libc/iconvdata/ibm933.c 2015-01-08 16:05:53.917822706 -0300
  6494. ++++ eglibc-2.19/libc/iconvdata/ibm933.c 2015-01-08 16:06:02.781555143 -0300
  6495. +@@ -161,7 +161,7 @@
  6496. + while (ch > rp2->end) \
  6497. + ++rp2; \
  6498. + \
  6499. +- if (__builtin_expect (rp2 == NULL, 0) \
  6500. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6501. + || __builtin_expect (ch < rp2->start, 0) \
  6502. + || (res = __ibm933db_to_ucs4[ch + rp2->idx], \
  6503. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6504. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
  6505. +--- eglibc-2.19.orig/libc/iconvdata/ibm935.c 2015-01-08 16:05:53.921824843 -0300
  6506. ++++ eglibc-2.19/libc/iconvdata/ibm935.c 2015-01-08 16:06:02.782555677 -0300
  6507. +@@ -161,7 +161,7 @@
  6508. + while (ch > rp2->end) \
  6509. + ++rp2; \
  6510. + \
  6511. +- if (__builtin_expect (rp2 == NULL, 0) \
  6512. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6513. + || __builtin_expect (ch < rp2->start, 0) \
  6514. + || (res = __ibm935db_to_ucs4[ch + rp2->idx], \
  6515. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6516. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
  6517. +--- eglibc-2.19.orig/libc/iconvdata/ibm937.c 2015-01-08 16:05:53.915821638 -0300
  6518. ++++ eglibc-2.19/libc/iconvdata/ibm937.c 2015-01-08 16:06:02.782555677 -0300
  6519. +@@ -161,7 +161,7 @@
  6520. + while (ch > rp2->end) \
  6521. + ++rp2; \
  6522. + \
  6523. +- if (__builtin_expect (rp2 == NULL, 0) \
  6524. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6525. + || __builtin_expect (ch < rp2->start, 0) \
  6526. + || (res = __ibm937db_to_ucs4[ch + rp2->idx], \
  6527. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6528. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
  6529. +--- eglibc-2.19.orig/libc/iconvdata/ibm939.c 2015-01-08 16:05:53.917822706 -0300
  6530. ++++ eglibc-2.19/libc/iconvdata/ibm939.c 2015-01-08 16:06:02.782555677 -0300
  6531. +@@ -161,7 +161,7 @@
  6532. + while (ch > rp2->end) \
  6533. + ++rp2; \
  6534. + \
  6535. +- if (__builtin_expect (rp2 == NULL, 0) \
  6536. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6537. + || __builtin_expect (ch < rp2->start, 0) \
  6538. + || (res = __ibm939db_to_ucs4[ch + rp2->idx], \
  6539. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6540. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
  6541. +--- eglibc-2.19.orig/libc/iconvdata/ibm943.c 2015-01-08 16:05:53.918823240 -0300
  6542. ++++ eglibc-2.19/libc/iconvdata/ibm943.c 2015-01-08 16:06:02.782555677 -0300
  6543. +@@ -74,11 +74,12 @@
  6544. + } \
  6545. + \
  6546. + ch = (ch * 0x100) + inptr[1]; \
  6547. ++ /* ch was less than 0xfd. */ \
  6548. ++ assert (ch < 0xfd00); \
  6549. + while (ch > rp2->end) \
  6550. + ++rp2; \
  6551. + \
  6552. +- if (__builtin_expect (rp2 == NULL, 0) \
  6553. +- || __builtin_expect (ch < rp2->start, 0) \
  6554. ++ if (__builtin_expect (ch < rp2->start, 0) \
  6555. + || (res = __ibm943db_to_ucs4[ch + rp2->idx], \
  6556. + __builtin_expect (res, '\1') == 0 && ch !=0)) \
  6557. + { \
  6558. +diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
  6559. +--- eglibc-2.19.orig/libc/iconvdata/Makefile 2015-01-08 16:05:53.903815227 -0300
  6560. ++++ eglibc-2.19/libc/iconvdata/Makefile 2015-01-08 16:06:02.782555677 -0300
  6561. +@@ -303,6 +303,7 @@
  6562. + $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
  6563. + $(addprefix $(objpfx),$(modules.so)) \
  6564. + $(common-objdir)/iconv/iconv_prog TESTS
  6565. ++ iconv_modules="$(modules)" \
  6566. + $(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
  6567. +
  6568. + $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
  6569. +diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
  6570. +--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh 2015-01-08 16:05:53.894810420 -0300
  6571. ++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh 2015-01-08 16:06:02.782555677 -0300
  6572. +@@ -188,6 +188,24 @@
  6573. +
  6574. + done < TESTS2
  6575. +
  6576. ++# Check for crashes in decoders.
  6577. ++printf '\016\377\377\377\377\377\377\377' > $temp1
  6578. ++for from in $iconv_modules ; do
  6579. ++ echo $ac_n "test decoder $from $ac_c"
  6580. ++ PROG=`eval echo $ICONV`
  6581. ++ if $PROG < $temp1 >/dev/null 2>&1 ; then
  6582. ++ : # fall through
  6583. ++ else
  6584. ++ status=$?
  6585. ++ if test $status -gt 1 ; then
  6586. ++ echo "/FAILED"
  6587. ++ failed=1
  6588. ++ continue
  6589. ++ fi
  6590. ++ fi
  6591. ++ echo "OK"
  6592. ++done
  6593. ++
  6594. + exit $failed
  6595. + # Local Variables:
  6596. + # mode:shell-script
  6597. diff --git a/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
  6598. new file mode 100644
  6599. index 0000000..c7aa12c
  6600. --- /dev/null
  6601. +++ b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
  6602. @@ -0,0 +1,20 @@
  6603. +Fix CVE-2014-9402 - denial of service in getnetbyname function.
  6604. +Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
  6605. +See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
  6606. +
  6607. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6608. +
  6609. +diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
  6610. +--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c 2015-01-08 16:12:35.024977879 -0300
  6611. ++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c 2015-01-08 16:12:42.543992357 -0300
  6612. +@@ -398,8 +398,8 @@
  6613. +
  6614. + case BYNAME:
  6615. + {
  6616. +- char **ap = result->n_aliases++;
  6617. +- while (*ap != NULL)
  6618. ++ char **ap;
  6619. ++ for (ap = result->n_aliases; *ap != NULL; ++ap)
  6620. + {
  6621. + /* Check each alias name for being of the forms:
  6622. + 4.3.2.1.in-addr.arpa = net 1.2.3.4
  6623. diff --git a/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
  6624. new file mode 100644
  6625. index 0000000..a0da626
  6626. --- /dev/null
  6627. +++ b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
  6628. @@ -0,0 +1,88 @@
  6629. +Fix CVE-2015-1472 - heap buffer overflow in wscanf
  6630. +Backport from upstream:
  6631. +https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
  6632. +See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
  6633. +
  6634. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6635. +
  6636. +diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
  6637. +index aece3f2..8a2eb9e 100644
  6638. +--- a/libc/stdio-common/tst-sscanf.c
  6639. ++++ b/libc/stdio-common/tst-sscanf.c
  6640. +@@ -233,5 +233,38 @@ main (void)
  6641. + }
  6642. + }
  6643. +
  6644. ++ /* BZ #16618
  6645. ++ The test will segfault during SSCANF if the buffer overflow
  6646. ++ is not fixed. The size of `s` is such that it forces the use
  6647. ++ of malloc internally and this triggers the incorrect computation.
  6648. ++ Thus the value for SIZE is arbitrariy high enough that malloc
  6649. ++ is used. */
  6650. ++ {
  6651. ++#define SIZE 131072
  6652. ++ CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
  6653. ++ if (s == NULL)
  6654. ++ abort ();
  6655. ++ for (size_t i = 0; i < SIZE; i++)
  6656. ++ s[i] = L('0');
  6657. ++ s[SIZE] = L('\0');
  6658. ++ int i = 42;
  6659. ++ /* Scan multi-digit zero into `i`. */
  6660. ++ if (SSCANF (s, L("%d"), &i) != 1)
  6661. ++ {
  6662. ++ printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
  6663. ++ result = 1;
  6664. ++ }
  6665. ++ if (i != 0)
  6666. ++ {
  6667. ++ printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
  6668. ++ result = 1;
  6669. ++ }
  6670. ++ free (s);
  6671. ++ if (result != 1)
  6672. ++ printf ("PASS: bug16618: Did not crash.\n");
  6673. ++#undef SIZE
  6674. ++ }
  6675. ++
  6676. ++
  6677. + return result;
  6678. + }
  6679. +diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
  6680. +index cd129a8..0e204e7 100644
  6681. +--- a/libc/stdio-common/vfscanf.c
  6682. ++++ b/libc/stdio-common/vfscanf.c
  6683. +@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
  6684. + if (__glibc_unlikely (wpsize == wpmax)) \
  6685. + { \
  6686. + CHAR_T *old = wp; \
  6687. +- size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \
  6688. +- ? UCHAR_MAX + 1 : 2 * wpmax); \
  6689. +- if (use_malloc || !__libc_use_alloca (newsize)) \
  6690. ++ bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
  6691. ++ size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax); \
  6692. ++ size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX; \
  6693. ++ if (!__libc_use_alloca (newsize)) \
  6694. + { \
  6695. + wp = realloc (use_malloc ? wp : NULL, newsize); \
  6696. + if (wp == NULL) \
  6697. +@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
  6698. + } \
  6699. + if (! use_malloc) \
  6700. + MEMCPY (wp, old, wpsize); \
  6701. +- wpmax = newsize; \
  6702. ++ wpmax = wpneed; \
  6703. + use_malloc = true; \
  6704. + } \
  6705. + else \
  6706. + { \
  6707. + size_t s = wpmax * sizeof (CHAR_T); \
  6708. +- wp = (CHAR_T *) extend_alloca (wp, s, \
  6709. +- newsize * sizeof (CHAR_T)); \
  6710. ++ wp = (CHAR_T *) extend_alloca (wp, s, newsize); \
  6711. + wpmax = s / sizeof (CHAR_T); \
  6712. + if (old != NULL) \
  6713. + MEMCPY (wp, old, wpsize); \
  6714. +--
  6715. +1.9.4
  6716. +
  6717. diff --git a/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
  6718. new file mode 100644
  6719. index 0000000..da2f49d
  6720. --- /dev/null
  6721. +++ b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
  6722. @@ -0,0 +1,174 @@
  6723. +From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
  6724. +Modified for eglibc.
  6725. +
  6726. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6727. +
  6728. +WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
  6729. +EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
  6730. +SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
  6731. +
  6732. +CVE-2014-7817:
  6733. +
  6734. +The function wordexp() fails to properly handle the WRDE_NOCMD
  6735. +flag when processing arithmetic inputs in the form of "$((... ``))"
  6736. +where "..." can be anything valid. The backticks in the arithmetic
  6737. +epxression are evaluated by in a shell even if WRDE_NOCMD forbade
  6738. +command substitution. This allows an attacker to attempt to pass
  6739. +dangerous commands via constructs of the above form, and bypass
  6740. +the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
  6741. +in parse_arith(). The patch also hardens parse_backticks() and
  6742. +parse_comm() to check for WRDE_NOCMD flag and return an error instead
  6743. +of ever running a shell.
  6744. +
  6745. +We expand the testsuite and add 3 new regression tests of roughtly
  6746. +the same form but with a couple of nested levels.
  6747. +
  6748. +On top of the 3 new tests we add fork validation to the WRDE_NOCMD
  6749. +testing. If any forks are detected during the execution of a wordexp()
  6750. +call with WRDE_NOCMD, the test is marked as failed. This is slightly
  6751. +heuristic since vfork might be used, but it provides a higher level
  6752. +of assurance that no shells were executed as part of command substitution
  6753. +with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
  6754. +libdl, instead we use the public implementation namespace function
  6755. +__register_atfork (already part of the public ABI for libpthread).
  6756. +
  6757. +Tested on x86_64 with no regressions.
  6758. +
  6759. +2014-10-27 Carlos O'Donell <carlos@redhat.com>
  6760. +
  6761. + * wordexp-test.c (__dso_handle): Add prototype.
  6762. + (__register_atfork): Likewise.
  6763. + (__app_register_atfork): New function.
  6764. + (registered_forks): New global.
  6765. + (register_fork): New function.
  6766. + (test_case): Add 3 new tests for WRDE_CMDSUB.
  6767. + (main): Call __app_register_atfork.
  6768. + (testit): If WRDE_NOCMD set registered_forks to zero, run test, and
  6769. + if fork count is non-zero fail the test.
  6770. + * posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
  6771. + is set and parsing '`'.
  6772. + (parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
  6773. + (parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
  6774. + parsing '`'.
  6775. +
  6776. +diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
  6777. +index 4957006..5ce2a1b 100644
  6778. +--- a/libc/posix/wordexp-test.c
  6779. ++++ b/libc/posix/wordexp-test.c
  6780. +@@ -27,6 +27,25 @@
  6781. +
  6782. + #define IFS " \n\t"
  6783. +
  6784. ++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
  6785. ++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
  6786. ++
  6787. ++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
  6788. ++{
  6789. ++ return __register_atfork (prepare, parent, child,
  6790. ++ &__dso_handle == NULL ? NULL : __dso_handle);
  6791. ++}
  6792. ++
  6793. ++/* Number of forks seen. */
  6794. ++static int registered_forks;
  6795. ++
  6796. ++/* For each fork increment the fork count. */
  6797. ++static void
  6798. ++register_fork (void)
  6799. ++{
  6800. ++ registered_forks++;
  6801. ++}
  6802. ++
  6803. + struct test_case_struct
  6804. + {
  6805. + int retval;
  6806. +@@ -206,6 +225,12 @@ struct test_case_struct
  6807. + { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
  6808. + { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
  6809. + { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
  6810. ++ /* Test for CVE-2014-7817. We test 3 combinations of command
  6811. ++ substitution inside an arithmetic expression to make sure that
  6812. ++ no commands are executed and error is returned. */
  6813. ++ { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6814. ++ { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6815. ++ { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
  6816. +
  6817. + { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
  6818. + };
  6819. +@@ -258,6 +283,15 @@ main (int argc, char *argv[])
  6820. + return -1;
  6821. + }
  6822. +
  6823. ++ /* If we are not allowed to do command substitution, we install
  6824. ++ fork handlers to verify that no forks happened. No forks should
  6825. ++ happen at all if command substitution is disabled. */
  6826. ++ if (__app_register_atfork (register_fork, NULL, NULL) != 0)
  6827. ++ {
  6828. ++ printf ("Failed to register fork handler.\n");
  6829. ++ return -1;
  6830. ++ }
  6831. ++
  6832. + for (test = 0; test_case[test].retval != -1; test++)
  6833. + if (testit (&test_case[test]))
  6834. + ++fail;
  6835. +@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
  6836. +
  6837. + printf ("Test %d (%s): ", ++tests, tc->words);
  6838. +
  6839. ++ if (tc->flags & WRDE_NOCMD)
  6840. ++ registered_forks = 0;
  6841. ++
  6842. + if (tc->flags & WRDE_APPEND)
  6843. + {
  6844. + /* initial wordexp() call, to be appended to */
  6845. +@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
  6846. + }
  6847. + retval = wordexp (tc->words, &we, tc->flags);
  6848. +
  6849. ++ if ((tc->flags & WRDE_NOCMD)
  6850. ++ && (registered_forks > 0))
  6851. ++ {
  6852. ++ printf ("FAILED fork called for WRDE_NOCMD\n");
  6853. ++ return 1;
  6854. ++ }
  6855. ++
  6856. + if (tc->flags & WRDE_DOOFFS)
  6857. + start_offs = sav_we.we_offs;
  6858. +
  6859. +diff --git a/posix/wordexp.c b/posix/wordexp.c
  6860. +index b6b65dd..d6a158f 100644
  6861. +--- a/libc/posix/wordexp.c
  6862. ++++ b/libc/posix/wordexp.c
  6863. +@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
  6864. + break;
  6865. +
  6866. + case '`':
  6867. ++ if (flags & WRDE_NOCMD)
  6868. ++ {
  6869. ++ free (expr);
  6870. ++ return WRDE_NOCMD;
  6871. ++ }
  6872. ++
  6873. + (*offset)++;
  6874. + error = parse_backtick (&expr, &expr_length, &expr_maxlen,
  6875. + words, offset, flags, NULL, NULL, NULL);
  6876. +@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
  6877. + size_t comm_maxlen;
  6878. + char *comm = w_newword (&comm_length, &comm_maxlen);
  6879. +
  6880. ++ /* Do nothing if command substitution should not succeed. */
  6881. ++ if (flags & WRDE_NOCMD)
  6882. ++ return WRDE_CMDSUB;
  6883. ++
  6884. + for (; words[*offset]; ++(*offset))
  6885. + {
  6886. + switch (words[*offset])
  6887. +@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
  6888. + switch (words[*offset])
  6889. + {
  6890. + case '`':
  6891. ++ if (flags & WRDE_NOCMD)
  6892. ++ return WRDE_NOCMD;
  6893. ++
  6894. + /* Go -- give the script to the shell */
  6895. + error = exec_comm (comm, word, word_length, max_length, flags,
  6896. + pwordexp, ifs, ifs_white);
  6897. diff --git a/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
  6898. new file mode 100644
  6899. index 0000000..f447dcd
  6900. --- /dev/null
  6901. +++ b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
  6902. @@ -0,0 +1,141 @@
  6903. +Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
  6904. +See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
  6905. +
  6906. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  6907. +
  6908. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
  6909. +--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c 2015-01-08 16:05:53.918823240 -0300
  6910. ++++ eglibc-2.19/libc/iconvdata/ibm1364.c 2015-01-08 16:06:02.781555143 -0300
  6911. +@@ -220,7 +220,8 @@
  6912. + ++rp2; \
  6913. + \
  6914. + uint32_t res; \
  6915. +- if (__builtin_expect (ch < rp2->start, 0) \
  6916. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6917. ++ || __builtin_expect (ch < rp2->start, 0) \
  6918. + || (res = DB_TO_UCS4[ch + rp2->idx], \
  6919. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6920. + { \
  6921. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
  6922. +--- eglibc-2.19.orig/libc/iconvdata/ibm932.c 2015-01-08 16:05:53.910818967 -0300
  6923. ++++ eglibc-2.19/libc/iconvdata/ibm932.c 2015-01-08 16:06:02.781555143 -0300
  6924. +@@ -73,11 +73,12 @@
  6925. + } \
  6926. + \
  6927. + ch = (ch * 0x100) + inptr[1]; \
  6928. ++ /* ch was less than 0xfd. */ \
  6929. ++ assert (ch < 0xfd00); \
  6930. + while (ch > rp2->end) \
  6931. + ++rp2; \
  6932. + \
  6933. +- if (__builtin_expect (rp2 == NULL, 0) \
  6934. +- || __builtin_expect (ch < rp2->start, 0) \
  6935. ++ if (__builtin_expect (ch < rp2->start, 0) \
  6936. + || (res = __ibm932db_to_ucs4[ch + rp2->idx], \
  6937. + __builtin_expect (res, '\1') == 0 && ch !=0)) \
  6938. + { \
  6939. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
  6940. +--- eglibc-2.19.orig/libc/iconvdata/ibm933.c 2015-01-08 16:05:53.917822706 -0300
  6941. ++++ eglibc-2.19/libc/iconvdata/ibm933.c 2015-01-08 16:06:02.781555143 -0300
  6942. +@@ -161,7 +161,7 @@
  6943. + while (ch > rp2->end) \
  6944. + ++rp2; \
  6945. + \
  6946. +- if (__builtin_expect (rp2 == NULL, 0) \
  6947. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6948. + || __builtin_expect (ch < rp2->start, 0) \
  6949. + || (res = __ibm933db_to_ucs4[ch + rp2->idx], \
  6950. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6951. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
  6952. +--- eglibc-2.19.orig/libc/iconvdata/ibm935.c 2015-01-08 16:05:53.921824843 -0300
  6953. ++++ eglibc-2.19/libc/iconvdata/ibm935.c 2015-01-08 16:06:02.782555677 -0300
  6954. +@@ -161,7 +161,7 @@
  6955. + while (ch > rp2->end) \
  6956. + ++rp2; \
  6957. + \
  6958. +- if (__builtin_expect (rp2 == NULL, 0) \
  6959. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6960. + || __builtin_expect (ch < rp2->start, 0) \
  6961. + || (res = __ibm935db_to_ucs4[ch + rp2->idx], \
  6962. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6963. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
  6964. +--- eglibc-2.19.orig/libc/iconvdata/ibm937.c 2015-01-08 16:05:53.915821638 -0300
  6965. ++++ eglibc-2.19/libc/iconvdata/ibm937.c 2015-01-08 16:06:02.782555677 -0300
  6966. +@@ -161,7 +161,7 @@
  6967. + while (ch > rp2->end) \
  6968. + ++rp2; \
  6969. + \
  6970. +- if (__builtin_expect (rp2 == NULL, 0) \
  6971. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6972. + || __builtin_expect (ch < rp2->start, 0) \
  6973. + || (res = __ibm937db_to_ucs4[ch + rp2->idx], \
  6974. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6975. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
  6976. +--- eglibc-2.19.orig/libc/iconvdata/ibm939.c 2015-01-08 16:05:53.917822706 -0300
  6977. ++++ eglibc-2.19/libc/iconvdata/ibm939.c 2015-01-08 16:06:02.782555677 -0300
  6978. +@@ -161,7 +161,7 @@
  6979. + while (ch > rp2->end) \
  6980. + ++rp2; \
  6981. + \
  6982. +- if (__builtin_expect (rp2 == NULL, 0) \
  6983. ++ if (__builtin_expect (rp2->start == 0xffff, 0) \
  6984. + || __builtin_expect (ch < rp2->start, 0) \
  6985. + || (res = __ibm939db_to_ucs4[ch + rp2->idx], \
  6986. + __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
  6987. +diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
  6988. +--- eglibc-2.19.orig/libc/iconvdata/ibm943.c 2015-01-08 16:05:53.918823240 -0300
  6989. ++++ eglibc-2.19/libc/iconvdata/ibm943.c 2015-01-08 16:06:02.782555677 -0300
  6990. +@@ -74,11 +74,12 @@
  6991. + } \
  6992. + \
  6993. + ch = (ch * 0x100) + inptr[1]; \
  6994. ++ /* ch was less than 0xfd. */ \
  6995. ++ assert (ch < 0xfd00); \
  6996. + while (ch > rp2->end) \
  6997. + ++rp2; \
  6998. + \
  6999. +- if (__builtin_expect (rp2 == NULL, 0) \
  7000. +- || __builtin_expect (ch < rp2->start, 0) \
  7001. ++ if (__builtin_expect (ch < rp2->start, 0) \
  7002. + || (res = __ibm943db_to_ucs4[ch + rp2->idx], \
  7003. + __builtin_expect (res, '\1') == 0 && ch !=0)) \
  7004. + { \
  7005. +diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
  7006. +--- eglibc-2.19.orig/libc/iconvdata/Makefile 2015-01-08 16:05:53.903815227 -0300
  7007. ++++ eglibc-2.19/libc/iconvdata/Makefile 2015-01-08 16:06:02.782555677 -0300
  7008. +@@ -303,6 +303,7 @@
  7009. + $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
  7010. + $(addprefix $(objpfx),$(modules.so)) \
  7011. + $(common-objdir)/iconv/iconv_prog TESTS
  7012. ++ iconv_modules="$(modules)" \
  7013. + $(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
  7014. +
  7015. + $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
  7016. +diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
  7017. +--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh 2015-01-08 16:05:53.894810420 -0300
  7018. ++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh 2015-01-08 16:06:02.782555677 -0300
  7019. +@@ -188,6 +188,24 @@
  7020. +
  7021. + done < TESTS2
  7022. +
  7023. ++# Check for crashes in decoders.
  7024. ++printf '\016\377\377\377\377\377\377\377' > $temp1
  7025. ++for from in $iconv_modules ; do
  7026. ++ echo $ac_n "test decoder $from $ac_c"
  7027. ++ PROG=`eval echo $ICONV`
  7028. ++ if $PROG < $temp1 >/dev/null 2>&1 ; then
  7029. ++ : # fall through
  7030. ++ else
  7031. ++ status=$?
  7032. ++ if test $status -gt 1 ; then
  7033. ++ echo "/FAILED"
  7034. ++ failed=1
  7035. ++ continue
  7036. ++ fi
  7037. ++ fi
  7038. ++ echo "OK"
  7039. ++done
  7040. ++
  7041. + exit $failed
  7042. + # Local Variables:
  7043. + # mode:shell-script
  7044. diff --git a/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
  7045. new file mode 100644
  7046. index 0000000..c7aa12c
  7047. --- /dev/null
  7048. +++ b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
  7049. @@ -0,0 +1,20 @@
  7050. +Fix CVE-2014-9402 - denial of service in getnetbyname function.
  7051. +Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
  7052. +See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
  7053. +
  7054. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  7055. +
  7056. +diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
  7057. +--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c 2015-01-08 16:12:35.024977879 -0300
  7058. ++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c 2015-01-08 16:12:42.543992357 -0300
  7059. +@@ -398,8 +398,8 @@
  7060. +
  7061. + case BYNAME:
  7062. + {
  7063. +- char **ap = result->n_aliases++;
  7064. +- while (*ap != NULL)
  7065. ++ char **ap;
  7066. ++ for (ap = result->n_aliases; *ap != NULL; ++ap)
  7067. + {
  7068. + /* Check each alias name for being of the forms:
  7069. + 4.3.2.1.in-addr.arpa = net 1.2.3.4
  7070. diff --git a/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
  7071. new file mode 100644
  7072. index 0000000..a0da626
  7073. --- /dev/null
  7074. +++ b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
  7075. @@ -0,0 +1,88 @@
  7076. +Fix CVE-2015-1472 - heap buffer overflow in wscanf
  7077. +Backport from upstream:
  7078. +https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
  7079. +See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
  7080. +
  7081. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  7082. +
  7083. +diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
  7084. +index aece3f2..8a2eb9e 100644
  7085. +--- a/libc/stdio-common/tst-sscanf.c
  7086. ++++ b/libc/stdio-common/tst-sscanf.c
  7087. +@@ -233,5 +233,38 @@ main (void)
  7088. + }
  7089. + }
  7090. +
  7091. ++ /* BZ #16618
  7092. ++ The test will segfault during SSCANF if the buffer overflow
  7093. ++ is not fixed. The size of `s` is such that it forces the use
  7094. ++ of malloc internally and this triggers the incorrect computation.
  7095. ++ Thus the value for SIZE is arbitrariy high enough that malloc
  7096. ++ is used. */
  7097. ++ {
  7098. ++#define SIZE 131072
  7099. ++ CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
  7100. ++ if (s == NULL)
  7101. ++ abort ();
  7102. ++ for (size_t i = 0; i < SIZE; i++)
  7103. ++ s[i] = L('0');
  7104. ++ s[SIZE] = L('\0');
  7105. ++ int i = 42;
  7106. ++ /* Scan multi-digit zero into `i`. */
  7107. ++ if (SSCANF (s, L("%d"), &i) != 1)
  7108. ++ {
  7109. ++ printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
  7110. ++ result = 1;
  7111. ++ }
  7112. ++ if (i != 0)
  7113. ++ {
  7114. ++ printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
  7115. ++ result = 1;
  7116. ++ }
  7117. ++ free (s);
  7118. ++ if (result != 1)
  7119. ++ printf ("PASS: bug16618: Did not crash.\n");
  7120. ++#undef SIZE
  7121. ++ }
  7122. ++
  7123. ++
  7124. + return result;
  7125. + }
  7126. +diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
  7127. +index cd129a8..0e204e7 100644
  7128. +--- a/libc/stdio-common/vfscanf.c
  7129. ++++ b/libc/stdio-common/vfscanf.c
  7130. +@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
  7131. + if (__glibc_unlikely (wpsize == wpmax)) \
  7132. + { \
  7133. + CHAR_T *old = wp; \
  7134. +- size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \
  7135. +- ? UCHAR_MAX + 1 : 2 * wpmax); \
  7136. +- if (use_malloc || !__libc_use_alloca (newsize)) \
  7137. ++ bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
  7138. ++ size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax); \
  7139. ++ size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX; \
  7140. ++ if (!__libc_use_alloca (newsize)) \
  7141. + { \
  7142. + wp = realloc (use_malloc ? wp : NULL, newsize); \
  7143. + if (wp == NULL) \
  7144. +@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
  7145. + } \
  7146. + if (! use_malloc) \
  7147. + MEMCPY (wp, old, wpsize); \
  7148. +- wpmax = newsize; \
  7149. ++ wpmax = wpneed; \
  7150. + use_malloc = true; \
  7151. + } \
  7152. + else \
  7153. + { \
  7154. + size_t s = wpmax * sizeof (CHAR_T); \
  7155. +- wp = (CHAR_T *) extend_alloca (wp, s, \
  7156. +- newsize * sizeof (CHAR_T)); \
  7157. ++ wp = (CHAR_T *) extend_alloca (wp, s, newsize); \
  7158. + wpmax = s / sizeof (CHAR_T); \
  7159. + if (old != NULL) \
  7160. + MEMCPY (wp, old, wpsize); \
  7161. +--
  7162. +1.9.4
  7163. +
  7164. diff --git a/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
  7165. new file mode 100644
  7166. index 0000000..19b8b6e
  7167. --- /dev/null
  7168. +++ b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
  7169. @@ -0,0 +1,236 @@
  7170. +Fetched from gentoo glibc patchball
  7171. +Original patch filename: 10_all_glibc-CVE-2015-7547.patch
  7172. +Based on: https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
  7173. +
  7174. +Fixes:
  7175. +CVE-2015-7547 - glibc getaddrinfo stack-based buffer overflow.
  7176. +
  7177. +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
  7178. +
  7179. +--- a/resolv/nss_dns/dns-host.c
  7180. ++++ b/resolv/nss_dns/dns-host.c
  7181. +@@ -1031,7 +1031,10 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
  7182. + int h_namelen = 0;
  7183. +
  7184. + if (ancount == 0)
  7185. +- return NSS_STATUS_NOTFOUND;
  7186. ++ {
  7187. ++ *h_errnop = HOST_NOT_FOUND;
  7188. ++ return NSS_STATUS_NOTFOUND;
  7189. ++ }
  7190. +
  7191. + while (ancount-- > 0 && cp < end_of_message && had_error == 0)
  7192. + {
  7193. +@@ -1208,7 +1211,14 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
  7194. + /* Special case here: if the resolver sent a result but it only
  7195. + contains a CNAME while we are looking for a T_A or T_AAAA record,
  7196. + we fail with NOTFOUND instead of TRYAGAIN. */
  7197. +- return canon == NULL ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
  7198. ++ if (canon != NULL)
  7199. ++ {
  7200. ++ *h_errnop = HOST_NOT_FOUND;
  7201. ++ return NSS_STATUS_NOTFOUND;
  7202. ++ }
  7203. ++
  7204. ++ *h_errnop = NETDB_INTERNAL;
  7205. ++ return NSS_STATUS_TRYAGAIN;
  7206. + }
  7207. +
  7208. +
  7209. +@@ -1242,8 +1252,15 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
  7210. + &pat, &buffer, &buflen,
  7211. + errnop, h_errnop, ttlp,
  7212. + &first);
  7213. ++ /* Use the second response status in some cases. */
  7214. + if (status != NSS_STATUS_SUCCESS && status2 != NSS_STATUS_NOTFOUND)
  7215. + status = status2;
  7216. ++ /* Do not return a truncated second response (unless it was
  7217. ++ unavoidable e.g. unrecoverable TRYAGAIN). */
  7218. ++ if (status == NSS_STATUS_SUCCESS
  7219. ++ && (status2 == NSS_STATUS_TRYAGAIN
  7220. ++ && *errnop == ERANGE && *h_errnop != NO_RECOVERY))
  7221. ++ status = NSS_STATUS_TRYAGAIN;
  7222. + }
  7223. +
  7224. + return status;
  7225. +--- a/resolv/res_query.c
  7226. ++++ b/resolv/res_query.c
  7227. +@@ -396,6 +396,7 @@ __libc_res_nsearch(res_state statp,
  7228. + {
  7229. + free (*answerp2);
  7230. + *answerp2 = NULL;
  7231. ++ *nanswerp2 = 0;
  7232. + *answerp2_malloced = 0;
  7233. + }
  7234. + }
  7235. +@@ -447,6 +448,7 @@ __libc_res_nsearch(res_state statp,
  7236. + {
  7237. + free (*answerp2);
  7238. + *answerp2 = NULL;
  7239. ++ *nanswerp2 = 0;
  7240. + *answerp2_malloced = 0;
  7241. + }
  7242. +
  7243. +@@ -521,6 +523,7 @@ __libc_res_nsearch(res_state statp,
  7244. + {
  7245. + free (*answerp2);
  7246. + *answerp2 = NULL;
  7247. ++ *nanswerp2 = 0;
  7248. + *answerp2_malloced = 0;
  7249. + }
  7250. + if (saved_herrno != -1)
  7251. +--- a/resolv/res_send.c
  7252. ++++ b/resolv/res_send.c
  7253. +@@ -639,11 +639,7 @@ send_vc(res_state statp,
  7254. + {
  7255. + const HEADER *hp = (HEADER *) buf;
  7256. + const HEADER *hp2 = (HEADER *) buf2;
  7257. +- u_char *ans = *ansp;
  7258. +- int orig_anssizp = *anssizp;
  7259. +- // XXX REMOVE
  7260. +- // int anssiz = *anssizp;
  7261. +- HEADER *anhp = (HEADER *) ans;
  7262. ++ HEADER *anhp = (HEADER *) *ansp;
  7263. + struct sockaddr *nsap = get_nsaddr (statp, ns);
  7264. + int truncating, connreset, n;
  7265. + /* On some architectures compiler might emit a warning indicating
  7266. +@@ -767,35 +763,6 @@ send_vc(res_state statp,
  7267. + assert (anscp != NULL || ansp2 == NULL);
  7268. + thisresplenp = &resplen;
  7269. + } else {
  7270. +- if (*anssizp != MAXPACKET) {
  7271. +- /* No buffer allocated for the first
  7272. +- reply. We can try to use the rest
  7273. +- of the user-provided buffer. */
  7274. +-#if __GNUC_PREREQ (4, 7)
  7275. +- DIAG_PUSH_NEEDS_COMMENT;
  7276. +- DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
  7277. +-#endif
  7278. +-#if _STRING_ARCH_unaligned
  7279. +- *anssizp2 = orig_anssizp - resplen;
  7280. +- *ansp2 = *ansp + resplen;
  7281. +-#else
  7282. +- int aligned_resplen
  7283. +- = ((resplen + __alignof__ (HEADER) - 1)
  7284. +- & ~(__alignof__ (HEADER) - 1));
  7285. +- *anssizp2 = orig_anssizp - aligned_resplen;
  7286. +- *ansp2 = *ansp + aligned_resplen;
  7287. +-#endif
  7288. +-#if __GNUC_PREREQ (4, 7)
  7289. +- DIAG_POP_NEEDS_COMMENT;
  7290. +-#endif
  7291. +- } else {
  7292. +- /* The first reply did not fit into the
  7293. +- user-provided buffer. Maybe the second
  7294. +- answer will. */
  7295. +- *anssizp2 = orig_anssizp;
  7296. +- *ansp2 = *ansp;
  7297. +- }
  7298. +-
  7299. + thisanssizp = anssizp2;
  7300. + thisansp = ansp2;
  7301. + thisresplenp = resplen2;
  7302. +@@ -804,10 +771,14 @@ send_vc(res_state statp,
  7303. + anhp = (HEADER *) *thisansp;
  7304. +
  7305. + *thisresplenp = rlen;
  7306. +- if (rlen > *thisanssizp) {
  7307. +- /* Yes, we test ANSCP here. If we have two buffers
  7308. +- both will be allocatable. */
  7309. +- if (__glibc_likely (anscp != NULL)) {
  7310. ++ /* Is the answer buffer too small? */
  7311. ++ if (*thisanssizp < rlen) {
  7312. ++ /* If the current buffer is not the the static
  7313. ++ user-supplied buffer then we can reallocate
  7314. ++ it. */
  7315. ++ if (thisansp != NULL && thisansp != ansp) {
  7316. ++ /* Always allocate MAXPACKET, callers expect
  7317. ++ this specific size. */
  7318. + u_char *newp = malloc (MAXPACKET);
  7319. + if (newp == NULL) {
  7320. + *terrno = ENOMEM;
  7321. +@@ -957,8 +928,6 @@ send_dg(res_state statp,
  7322. + {
  7323. + const HEADER *hp = (HEADER *) buf;
  7324. + const HEADER *hp2 = (HEADER *) buf2;
  7325. +- u_char *ans = *ansp;
  7326. +- int orig_anssizp = *anssizp;
  7327. + struct timespec now, timeout, finish;
  7328. + struct pollfd pfd[1];
  7329. + int ptimeout;
  7330. +@@ -1154,50 +1123,48 @@ send_dg(res_state statp,
  7331. + assert (anscp != NULL || ansp2 == NULL);
  7332. + thisresplenp = &resplen;
  7333. + } else {
  7334. +- if (*anssizp != MAXPACKET) {
  7335. +- /* No buffer allocated for the first
  7336. +- reply. We can try to use the rest
  7337. +- of the user-provided buffer. */
  7338. +-#if _STRING_ARCH_unaligned
  7339. +- *anssizp2 = orig_anssizp - resplen;
  7340. +- *ansp2 = *ansp + resplen;
  7341. +-#else
  7342. +- int aligned_resplen
  7343. +- = ((resplen + __alignof__ (HEADER) - 1)
  7344. +- & ~(__alignof__ (HEADER) - 1));
  7345. +- *anssizp2 = orig_anssizp - aligned_resplen;
  7346. +- *ansp2 = *ansp + aligned_resplen;
  7347. +-#endif
  7348. +- } else {
  7349. +- /* The first reply did not fit into the
  7350. +- user-provided buffer. Maybe the second
  7351. +- answer will. */
  7352. +- *anssizp2 = orig_anssizp;
  7353. +- *ansp2 = *ansp;
  7354. +- }
  7355. +-
  7356. + thisanssizp = anssizp2;
  7357. + thisansp = ansp2;
  7358. + thisresplenp = resplen2;
  7359. + }
  7360. +
  7361. + if (*thisanssizp < MAXPACKET
  7362. +- /* Yes, we test ANSCP here. If we have two buffers
  7363. +- both will be allocatable. */
  7364. +- && anscp
  7365. ++ /* If the current buffer is not the the static
  7366. ++ user-supplied buffer then we can reallocate
  7367. ++ it. */
  7368. ++ && (thisansp != NULL && thisansp != ansp)
  7369. + #ifdef FIONREAD
  7370. ++ /* Is the size too small? */
  7371. + && (ioctl (pfd[0].fd, FIONREAD, thisresplenp) < 0
  7372. + || *thisanssizp < *thisresplenp)
  7373. + #endif
  7374. + ) {
  7375. ++ /* Always allocate MAXPACKET, callers expect
  7376. ++ this specific size. */
  7377. + u_char *newp = malloc (MAXPACKET);
  7378. + if (newp != NULL) {
  7379. +- *anssizp = MAXPACKET;
  7380. +- *thisansp = ans = newp;
  7381. ++ *thisanssizp = MAXPACKET;
  7382. ++ *thisansp = newp;
  7383. + if (thisansp == ansp2)
  7384. + *ansp2_malloced = 1;
  7385. + }
  7386. + }
  7387. ++ /* We could end up with truncation if anscp was NULL
  7388. ++ (not allowed to change caller's buffer) and the
  7389. ++ response buffer size is too small. This isn't a
  7390. ++ reliable way to detect truncation because the ioctl
  7391. ++ may be an inaccurate report of the UDP message size.
  7392. ++ Therefore we use this only to issue debug output.
  7393. ++ To do truncation accurately with UDP we need
  7394. ++ MSG_TRUNC which is only available on Linux. We
  7395. ++ can abstract out the Linux-specific feature in the
  7396. ++ future to detect truncation. */
  7397. ++ if (__glibc_unlikely (*thisanssizp < *thisresplenp)) {
  7398. ++ Dprint(statp->options & RES_DEBUG,
  7399. ++ (stdout, ";; response may be truncated (UDP)\n")
  7400. ++ );
  7401. ++ }
  7402. ++
  7403. + HEADER *anhp = (HEADER *) *thisansp;
  7404. + socklen_t fromlen = sizeof(struct sockaddr_in6);
  7405. + assert (sizeof(from) <= fromlen);
  7406. diff --git a/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
  7407. new file mode 100644
  7408. index 0000000..28f4b6e
  7409. --- /dev/null
  7410. +++ b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
  7411. @@ -0,0 +1,43 @@
  7412. +From 8415fb8d4f05c023b9d79e44dff197cc285fd1e5 Mon Sep 17 00:00:00 2001
  7413. +From: Mike Frysinger <vapier@gentoo.org>
  7414. +Date: Thu, 6 Aug 2015 02:10:46 -0400
  7415. +Subject: [PATCH] microblaze: include unix/sysdep.h
  7416. +
  7417. +The semi-recent SYSCALL_CANCEL inclusion broke microblaze due to the
  7418. +sysdep.h header not including the unix/sysdep.h header. Include it
  7419. +here like all other ports.
  7420. +
  7421. +(cherry picked from commit 5d5de49c3ccd69f65b801f1ca490a0112d1cbd7d)
  7422. +
  7423. +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  7424. +[edited to remove ChangeLog modifications, which cause conflicts.]
  7425. +---
  7426. + sysdeps/unix/sysv/linux/microblaze/sysdep.h | 7 ++++++-
  7427. + 2 files changed, 12 insertions(+), 1 deletion(-)
  7428. +
  7429. +diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
  7430. +index 83c0340..9d5c542 100644
  7431. +--- a/sysdeps/unix/sysv/linux/microblaze/sysdep.h
  7432. ++++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
  7433. +@@ -16,8 +16,11 @@
  7434. + License along with the GNU C Library; if not, see
  7435. + <http://www.gnu.org/licenses/>. */
  7436. +
  7437. ++#ifndef _LINUX_MICROBLAZE_SYSDEP_H
  7438. ++#define _LINUX_MICROBLAZE_SYSDEP_H 1
  7439. ++
  7440. ++#include <sysdeps/unix/sysdep.h>
  7441. + #include <sysdeps/microblaze/sysdep.h>
  7442. +-#include <sys/syscall.h>
  7443. +
  7444. + /* Defines RTLD_PRIVATE_ERRNO. */
  7445. + #include <dl-sysdep.h>
  7446. +@@ -305,3 +308,5 @@ SYSCALL_ERROR_LABEL_DCL: \
  7447. + # define PTR_DEMANGLE(var) (void) (var)
  7448. +
  7449. + #endif /* not __ASSEMBLER__ */
  7450. ++
  7451. ++#endif /* _LINUX_MICROBLAZE_SYSDEP_H */
  7452. +--
  7453. +2.6.4
  7454. +
  7455. diff --git a/package/glibc/glibc/Config.in b/package/glibc/glibc/Config.in
  7456. new file mode 100644
  7457. index 0000000..0565162
  7458. --- /dev/null
  7459. +++ b/package/glibc/glibc/Config.in
  7460. @@ -0,0 +1,56 @@
  7461. +if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
  7462. +
  7463. +config BR2_PACKAGE_EGLIBC
  7464. + bool
  7465. + default y
  7466. + select BR2_PACKAGE_LINUX_HEADERS
  7467. +
  7468. +choice
  7469. + prompt "eglibc version"
  7470. + default BR2_EGLIBC_VERSION_2_18
  7471. +
  7472. +config BR2_EGLIBC_VERSION_2_18
  7473. + bool "2.18-svnr23787"
  7474. + # Build breakage
  7475. + depends on !BR2_sparc
  7476. +
  7477. +config BR2_EGLIBC_VERSION_2_19
  7478. + bool "2.19-svnr25243"
  7479. + # Build breakage
  7480. + depends on !BR2_powerpc_SPE
  7481. +
  7482. +endchoice
  7483. +
  7484. +endif
  7485. +
  7486. +if BR2_TOOLCHAIN_BUILDROOT_GLIBC
  7487. +
  7488. +config BR2_PACKAGE_GLIBC
  7489. + bool
  7490. + default y
  7491. + select BR2_PACKAGE_LINUX_HEADERS
  7492. +
  7493. +choice
  7494. + prompt "glibc version"
  7495. + default BR2_GLIBC_VERSION_2_22
  7496. +
  7497. +config BR2_GLIBC_VERSION_2_22
  7498. + bool "2.22"
  7499. + # No support for pthread barriers on < v9 ISA
  7500. + depends on !BR2_sparc
  7501. +
  7502. +config BR2_GLIBC_VERSION_2_23
  7503. + bool "2.23"
  7504. + # No support for pthread barriers on < v9 ISA
  7505. + depends on !BR2_sparc
  7506. +
  7507. +endchoice
  7508. +
  7509. +endif
  7510. +
  7511. +config BR2_GLIBC_VERSION_STRING
  7512. + string
  7513. + default "2.18-svnr23787" if BR2_EGLIBC_VERSION_2_18
  7514. + default "2.19-svnr25243" if BR2_EGLIBC_VERSION_2_19
  7515. + default "2.22" if BR2_GLIBC_VERSION_2_22
  7516. + default "2.23" if BR2_GLIBC_VERSION_2_23
  7517. diff --git a/package/glibc/glibc/glibc.hash b/package/glibc/glibc/glibc.hash
  7518. new file mode 100644
  7519. index 0000000..b04f214
  7520. --- /dev/null
  7521. +++ b/package/glibc/glibc/glibc.hash
  7522. @@ -0,0 +1,8 @@
  7523. +# Locally calculated after checking pgp signature (glibc)
  7524. +# http://downloads.yoctoproject.org/releases/eglibc/*.{md5,sha1} (eglibc)
  7525. +md5 b395b021422a027d89884992e91734fc eglibc-2.18-svnr23787.tar.bz2
  7526. +sha1 224d9e655e8f0ad04ffde47b97a11c64e2255b56 eglibc-2.18-svnr23787.tar.bz2
  7527. +md5 197836c2ba42fb146e971222647198dd eglibc-2.19-svnr25243.tar.bz2
  7528. +sha1 8013c1935b46fd50d2d1fbfad3b0af362b75fb28 eglibc-2.19-svnr25243.tar.bz2
  7529. +sha256 eb731406903befef1d8f878a46be75ef862b9056ab0cde1626d08a7a05328948 glibc-2.22.tar.xz
  7530. +sha256 94efeb00e4603c8546209cefb3e1a50a5315c86fa9b078b6fad758e187ce13e9 glibc-2.23.tar.xz
  7531. diff --git a/package/glibc/glibc/glibc.mk b/package/glibc/glibc/glibc.mk
  7532. new file mode 100644
  7533. index 0000000..4a9ba0e
  7534. --- /dev/null
  7535. +++ b/package/glibc/glibc/glibc.mk
  7536. @@ -0,0 +1,155 @@
  7537. +################################################################################
  7538. +#
  7539. +# glibc/eglibc
  7540. +#
  7541. +################################################################################
  7542. +
  7543. +GLIBC_VERSION = $(call qstrip,$(BR2_GLIBC_VERSION_STRING))
  7544. +
  7545. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_EGLIBC),y)
  7546. +GLIBC_SITE = http://downloads.yoctoproject.org/releases/eglibc
  7547. +GLIBC_SOURCE = eglibc-$(GLIBC_VERSION).tar.bz2
  7548. +GLIBC_SRC_SUBDIR = libc
  7549. +else
  7550. +GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
  7551. +GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
  7552. +GLIBC_SRC_SUBDIR = .
  7553. +endif
  7554. +
  7555. +GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
  7556. +GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
  7557. +
  7558. +# glibc is part of the toolchain so disable the toolchain dependency
  7559. +GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
  7560. +
  7561. +# Before (e)glibc is configured, we must have the first stage
  7562. +# cross-compiler and the kernel headers
  7563. +GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk
  7564. +
  7565. +GLIBC_SUBDIR = build
  7566. +
  7567. +GLIBC_INSTALL_STAGING = YES
  7568. +
  7569. +GLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install
  7570. +
  7571. +# Thumb build is broken, build in ARM mode
  7572. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
  7573. +GLIBC_EXTRA_CFLAGS += -marm
  7574. +endif
  7575. +
  7576. +# MIPS64 defaults to n32 so pass the correct -mabi if
  7577. +# we are using a different ABI. OABI32 is also used
  7578. +# in MIPS so we pass -mabi=32 in this case as well
  7579. +# even though it's not strictly necessary.
  7580. +ifeq ($(BR2_MIPS_NABI64),y)
  7581. +GLIBC_EXTRA_CFLAGS += -mabi=64
  7582. +else ifeq ($(BR2_MIPS_OABI32),y)
  7583. +GLIBC_EXTRA_CFLAGS += -mabi=32
  7584. +endif
  7585. +
  7586. +ifeq ($(BR2_ENABLE_DEBUG),y)
  7587. +GLIBC_EXTRA_CFLAGS += -g
  7588. +endif
  7589. +
  7590. +# The stubs.h header is not installed by install-headers, but is
  7591. +# needed for the gcc build. An empty stubs.h will work, as explained
  7592. +# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick
  7593. +# is used by Crosstool-NG.
  7594. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y)
  7595. +define GLIBC_ADD_MISSING_STUB_H
  7596. + mkdir -p $(STAGING_DIR)/usr/include/gnu
  7597. + touch $(STAGING_DIR)/usr/include/gnu/stubs.h
  7598. +endef
  7599. +endif
  7600. +
  7601. +# Even though we use the autotools-package infrastructure, we have to
  7602. +# override the default configure commands for several reasons:
  7603. +#
  7604. +# 1. We have to build out-of-tree, but we can't use the same
  7605. +# 'symbolic link to configure' used with the gcc packages.
  7606. +#
  7607. +# 2. We have to execute the configure script with bash and not sh.
  7608. +#
  7609. +# Note that as mentionned in
  7610. +# http://patches.openembedded.org/patch/38849/, eglibc/glibc must be
  7611. +# built with -O2, so we pass our own CFLAGS and CXXFLAGS below.
  7612. +define GLIBC_CONFIGURE_CMDS
  7613. + mkdir -p $(@D)/build
  7614. + # Do the configuration
  7615. + (cd $(@D)/build; \
  7616. + $(TARGET_CONFIGURE_OPTS) \
  7617. + CFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \
  7618. + CXXFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" \
  7619. + $(SHELL) $(@D)/$(GLIBC_SRC_SUBDIR)/configure \
  7620. + ac_cv_path_BASH_SHELL=/bin/bash \
  7621. + libc_cv_forced_unwind=yes \
  7622. + libc_cv_ssp=no \
  7623. + --target=$(GNU_TARGET_NAME) \
  7624. + --host=$(GNU_TARGET_NAME) \
  7625. + --build=$(GNU_HOST_NAME) \
  7626. + --prefix=/usr \
  7627. + --enable-shared \
  7628. + $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \
  7629. + $(if $(BR2_x86_64),--enable-lock-elision) \
  7630. + --with-pkgversion="Buildroot" \
  7631. + --without-cvs \
  7632. + --disable-profile \
  7633. + --without-gd \
  7634. + --enable-obsolete-rpc \
  7635. + --enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \
  7636. + --with-headers=$(STAGING_DIR)/usr/include)
  7637. + $(GLIBC_ADD_MISSING_STUB_H)
  7638. +endef
  7639. +
  7640. +
  7641. +#
  7642. +# We also override the install to target commands since we only want
  7643. +# to install the libraries, and nothing more.
  7644. +#
  7645. +
  7646. +GLIBC_LIBS_LIB = \
  7647. + ld*.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* \
  7648. + libnsl.so.* libpthread.so.* libresolv.so.* librt.so.* libutil.so.* \
  7649. + libnss_files.so.* libnss_dns.so.*
  7650. +
  7651. +ifeq ($(BR2_PACKAGE_GDB),y)
  7652. +GLIBC_LIBS_LIB += libthread_db.so.*
  7653. +endif
  7654. +
  7655. +define GLIBC_INSTALL_TARGET_CMDS
  7656. + for libs in $(GLIBC_LIBS_LIB); do \
  7657. + $(call copy_toolchain_lib_root,$(STAGING_DIR)/,,lib,$$libs,/lib) ; \
  7658. + done
  7659. +endef
  7660. +
  7661. +# MIPS R6 requires to have NaN2008 support which is currently not
  7662. +# supported by the Linux kernel. In order to prevent building the
  7663. +# glibc against kernels not having NaN2008 support on platforms that
  7664. +# requires it, glibc currently checks for an (inexisting) 10.0.0
  7665. +# kernel headers version.
  7666. +#
  7667. +# Since in practice the kernel support for NaN2008 is not really
  7668. +# required for things to work properly, we adjust the glibc check to
  7669. +# make it believe that NaN2008 support was added in the kernel
  7670. +# starting from version 4.0.0.
  7671. +#
  7672. +# In general the compatibility issues introduced by mis-matched NaN
  7673. +# encodings will not cause a problem as signalling NaNs are rarely used
  7674. +# in average code. For MIPS R6 there isn't actually any compatibility
  7675. +# issue as the hardware is always NaN2008 and software is always
  7676. +# NaN2008. The problem only comes from when older MIPS code is linked in
  7677. +# via a DSO and multiple NaN encodings are introduced. Since Buildroot
  7678. +# is intended to have all code built from source then this scenario is
  7679. +# highly unlikely. The failure mode, if it ever occurs, would be either
  7680. +# that a signalling NaN fails to raise an invalid operation exception or
  7681. +# (more likely) an ordinary NaN raises an invalid operation exception.
  7682. +ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y)
  7683. +define GLIBC_FIX_MIPS_R6
  7684. + $(SED) 's#10.0.0#4.0.0#' \
  7685. + $(@D)/sysdeps/unix/sysv/linux/mips/configure \
  7686. + $(@D)/sysdeps/unix/sysv/linux/mips/configure.ac
  7687. +endef
  7688. +GLIBC_POST_EXTRACT_HOOKS += GLIBC_FIX_MIPS_R6
  7689. +endif
  7690. +
  7691. +$(eval $(autotools-package))
  7692. diff --git a/package/glibc/glibc/nsswitch.conf b/package/glibc/glibc/nsswitch.conf
  7693. new file mode 100644
  7694. index 0000000..5c38491
  7695. --- /dev/null
  7696. +++ b/package/glibc/glibc/nsswitch.conf
  7697. @@ -0,0 +1,13 @@
  7698. +# /etc/nsswitch.conf
  7699. +
  7700. +passwd: files
  7701. +group: files
  7702. +shadow: files
  7703. +
  7704. +hosts: files dns
  7705. +networks: files dns
  7706. +
  7707. +protocols: files
  7708. +services: files
  7709. +ethers: files
  7710. +rpc: files
  7711. diff --git a/package/libmodbus/001-GfA-echo-rtu.patch b/package/libmodbus/001-GfA-echo-rtu.patch
  7712. new file mode 100644
  7713. index 0000000..386172f
  7714. --- /dev/null
  7715. +++ b/package/libmodbus/001-GfA-echo-rtu.patch
  7716. @@ -0,0 +1,105 @@
  7717. +diff -Naur a/src/modbus-rtu.c b/src/modbus-rtu.c
  7718. +--- a/src/modbus-rtu.c 2017-10-11 23:07:11.623017506 +0200
  7719. ++++ b/src/modbus-rtu.c 2017-10-11 23:07:20.495035402 +0200
  7720. +@@ -257,6 +257,27 @@
  7721. + }
  7722. + #endif
  7723. +
  7724. ++
  7725. ++ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
  7726. ++ ssize_t w, r, i;
  7727. ++ uint8_t rb[req_length];
  7728. ++
  7729. ++ // Transmit
  7730. ++ w = write(ctx->s, req, req_length);
  7731. ++
  7732. ++ // Read back written bytes if hw has echo
  7733. ++ r = 0;
  7734. ++ while (r < w)
  7735. ++ r += read(ctx->s, rb + r, w - r);
  7736. ++ if (ctx->debug) {
  7737. ++ for (i = 0; i < r; ++i)
  7738. ++ fprintf(stderr, "|%02X|", rb[i]);
  7739. ++ fprintf(stderr, "\n");
  7740. ++ }
  7741. ++
  7742. ++ return w;
  7743. ++}
  7744. ++
  7745. + ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)
  7746. + {
  7747. + #if defined(_WIN32)
  7748. +@@ -264,7 +285,14 @@
  7749. + DWORD n_bytes = 0;
  7750. + return (WriteFile(ctx_rtu->w_ser.fd, req, req_length, &n_bytes, NULL)) ? n_bytes : -1;
  7751. + #else
  7752. +- return write(ctx->s, req, req_length);
  7753. ++ modbus_rtu_t *ctx_rtu = ctx->backend_data;
  7754. ++ ssize_t w;
  7755. ++
  7756. ++ if(!ctx_rtu->echohw)
  7757. ++ w = write(ctx->s, req, req_length);
  7758. ++ else
  7759. ++ w = _modbus_rtu_write_n_read(ctx, req, req_length);
  7760. ++ return w;
  7761. + #endif
  7762. + }
  7763. +
  7764. +@@ -772,6 +800,30 @@
  7765. + }
  7766. + }
  7767. +
  7768. ++
  7769. ++int modbus_rtu_set_echohw_mode(modbus_t* ctx, uint8_t mode) {
  7770. ++ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
  7771. ++ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
  7772. ++ rtu->echohw= mode;
  7773. ++ return 0;
  7774. ++ }
  7775. ++ /* Wrong backend and invalid mode specified */
  7776. ++ errno = EINVAL;
  7777. ++ return -1;
  7778. ++
  7779. ++}
  7780. ++
  7781. ++int modbus_rtu_get_echohw_mode(modbus_t* ctx) {
  7782. ++ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
  7783. ++ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
  7784. ++ return rtu->echohw;
  7785. ++ }
  7786. ++ /* Wrong backend and invalid mode specified */
  7787. ++ errno = EINVAL;
  7788. ++ return -1;
  7789. ++
  7790. ++}
  7791. ++
  7792. + void _modbus_rtu_close(modbus_t *ctx)
  7793. + {
  7794. + /* Closes the file descriptor in RTU mode */
  7795. +diff -Naur a/src/modbus-rtu.h b/src/modbus-rtu.h
  7796. +--- a/src/modbus-rtu.h 2017-10-11 23:07:11.623017506 +0200
  7797. ++++ b/src/modbus-rtu.h 2017-10-11 23:07:20.495035402 +0200
  7798. +@@ -37,6 +37,12 @@
  7799. + int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);
  7800. + int modbus_rtu_get_serial_mode(modbus_t *ctx);
  7801. +
  7802. ++#define MODBUS_RTU_HAS_ECHOHW 1
  7803. ++#define MODBUS_RTU_NO_ECHOHW 0
  7804. ++
  7805. ++int modbus_rtu_set_echohw_mode(modbus_t *ctx, uint8_t mode);
  7806. ++int modbus_rtu_get_echohw_mode(modbus_t *ctx);
  7807. ++
  7808. + MODBUS_END_DECLS
  7809. +
  7810. + #endif /* _MODBUS_RTU_H_ */
  7811. +diff -Naur a/src/modbus-rtu-private.h b/src/modbus-rtu-private.h
  7812. +--- a/src/modbus-rtu-private.h 2017-10-11 23:07:11.623017506 +0200
  7813. ++++ b/src/modbus-rtu-private.h 2017-10-11 23:07:20.495035402 +0200
  7814. +@@ -81,6 +81,7 @@
  7815. + #if HAVE_DECL_TIOCSRS485
  7816. + int serial_mode;
  7817. + #endif
  7818. ++ uint8_t echohw;
  7819. + } modbus_rtu_t;
  7820. +
  7821. + #endif /* _MODBUS_RTU_PRIVATE_H_ */
  7822. diff --git a/package/linux-headers/linux-017-omap_serial_for_rs485.patch b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
  7823. new file mode 100644
  7824. index 0000000..38b7ffa
  7825. --- /dev/null
  7826. +++ b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
  7827. @@ -0,0 +1,12 @@
  7828. +--- a/include/uapi/linux/serial.h 2016-11-08 16:38:32.000000000 +0100
  7829. ++++ b/include/uapi/linux/serial.h 2017-02-18 14:27:23.569732653 +0100
  7830. +@@ -119,7 +119,8 @@ struct serial_rs485 {
  7831. + #define SER_RS485_RX_DURING_TX (1 << 4)
  7832. + __u32 delay_rts_before_send; /* Delay before send (milliseconds) */
  7833. + __u32 delay_rts_after_send; /* Delay after send (milliseconds) */
  7834. +- __u32 padding[5]; /* Memory is cheap, new structs
  7835. ++ __u32 udelay_before_enable_tx;/* Delay before switching to tx direction */
  7836. ++ __u32 padding[4]; /* Memory is cheap, new structs
  7837. + are a royal PITA .. */
  7838. + };
  7839. +
  7840. diff --git a/package/mutt/mutt.mk b/package/mutt/mutt.mk
  7841. index cd44ca1..dab73cf 100644
  7842. --- a/package/mutt/mutt.mk
  7843. +++ b/package/mutt/mutt.mk
  7844. @@ -9,7 +9,8 @@ MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads
  7845. MUTT_LICENSE = GPLv2+
  7846. MUTT_LICENSE_FILES = GPL
  7847. MUTT_DEPENDENCIES = ncurses
  7848. -MUTT_CONF_OPTS = --disable-smtp
  7849. +#MUTT_CONF_OPTS = --disable-smtp
  7850. +MUTT_CONF_OPTS = --enable-smtp
  7851. MUTT_AUTORECONF = YES
  7852. ifeq ($(BR2_PACKAGE_LIBICONV),y)
  7853. @@ -37,16 +38,17 @@ MUTT_CONF_OPTS += --disable-pop
  7854. endif
  7855. # SSL support is only used by imap or pop3 module
  7856. -ifneq ($(BR2_PACKAGET_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),)
  7857. -ifeq ($(BR2_PACKAGE_OPENSSL),y)
  7858. +#ifneq ($(BR2_PACKAGET_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),)
  7859. +#ifeq ($(BR2_PACKAGE_OPENSSL),y)
  7860. MUTT_DEPENDENCIES += openssl
  7861. MUTT_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr
  7862. -else
  7863. -MUTT_CONF_OPTS += --without-ssl
  7864. -endif
  7865. -else
  7866. -MUTT_CONF_OPTS += --without-ssl
  7867. -endif
  7868. +MUTT_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr
  7869. +#else
  7870. +#MUTT_CONF_OPTS += --without-ssl
  7871. +#endif
  7872. +#else
  7873. +#MUTT_CONF_OPTS += --without-ssl
  7874. +#endif
  7875. # Avoid running tests to check for:
  7876. # - target system is *BSD
  7877. diff --git a/package/qt5/Config.in b/package/qt5/Config.in
  7878. index 234dfdd..fb57d25 100644
  7879. --- a/package/qt5/Config.in
  7880. +++ b/package/qt5/Config.in
  7881. @@ -31,6 +31,7 @@ menuconfig BR2_PACKAGE_QT5
  7882. if BR2_PACKAGE_QT5
  7883. source "package/qt5/qt5base/Config.in"
  7884. +source "package/qt5/qt53d/Config.in"
  7885. source "package/qt5/qt5canvas3d/Config.in"
  7886. source "package/qt5/qt5connectivity/Config.in"
  7887. source "package/qt5/qt5declarative/Config.in"
  7888. @@ -41,17 +42,20 @@ source "package/qt5/qt5location/Config.in"
  7889. source "package/qt5/qt5multimedia/Config.in"
  7890. source "package/qt5/qt5quickcontrols/Config.in"
  7891. source "package/qt5/qt5sensors/Config.in"
  7892. +source "package/qt5/qt5serialbus/Config.in"
  7893. source "package/qt5/qt5serialport/Config.in"
  7894. +source "package/qt5/qt5wayland/Config.in"
  7895. source "package/qt5/qt5svg/Config.in"
  7896. source "package/qt5/qt5tools/Config.in"
  7897. source "package/qt5/qt5webchannel/Config.in"
  7898. source "package/qt5/qt5websockets/Config.in"
  7899. source "package/qt5/qt5x11extras/Config.in"
  7900. +source "package/qt5/qt5webengine/Config.in"
  7901. source "package/qt5/qt5xmlpatterns/Config.in"
  7902. -comment "technology preview"
  7903. -source "package/qt5/qt53d/Config.in"
  7904. +source "package/qt5/qt5virtualkeyboard/Config.in"
  7905. +source "package/qt5/qt5charts/Config.in"
  7906. +source "package/qt5/qt5datavis3d/Config.in"
  7907. source "package/qt5/qt5quickcontrols2/Config.in"
  7908. -source "package/qt5/qt5serialbus/Config.in"
  7909. comment "legacy compatibility"
  7910. source "package/qt5/qt5script/Config.in"
  7911. source "package/qt5/qt5webkit/Config.in"
  7912. diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
  7913. index d25f663..0710ef4 100644
  7914. --- a/package/qt5/qt5.mk
  7915. +++ b/package/qt5/qt5.mk
  7916. @@ -1,6 +1,8 @@
  7917. -QT5_VERSION_MAJOR = 5.6
  7918. -QT5_VERSION = $(QT5_VERSION_MAJOR).2
  7919. +QT5_VERSION_MAJOR = 5.7
  7920. +QT5_VERSION = $(QT5_VERSION_MAJOR).0
  7921. QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
  7922. +##QT5_VERSION = $(QT5_VERSION_MAJOR).1
  7923. +##QT5_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules
  7924. include $(sort $(wildcard package/qt5/*/*.mk))
  7925. define QT5_LA_PRL_FILES_FIXUP
  7926. diff --git a/package/qt5/qt53d/qt53d.hash b/package/qt5/qt53d/qt53d.hash
  7927. index 7179380..f59a671 100644
  7928. --- a/package/qt5/qt53d/qt53d.hash
  7929. +++ b/package/qt5/qt53d/qt53d.hash
  7930. @@ -1,2 +1 @@
  7931. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qt3d-opensource-src-5.6.2.tar.xz.mirrorlist
  7932. -sha256 a21786db6e0f5c6c70213fe1a3530ed3d7f28f28401a0f793970e9bc860ce941 qt3d-opensource-src-5.6.2.tar.xz
  7933. +sha256 a8248a1779b561ea450e92345e8187bacac359df0e92ad61a1ad7652bb233e29 qt3d-opensource-src-5.7.0.tar.xz
  7934. diff --git a/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
  7935. new file mode 100644
  7936. index 0000000..54e4db8
  7937. --- /dev/null
  7938. +++ b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
  7939. @@ -0,0 +1,44 @@
  7940. +From e69e69519661954716d59bfa5bbd0626515cfda9 Mon Sep 17 00:00:00 2001
  7941. +From: Peter Seiderer <ps.report@gmx.net>
  7942. +Date: Thu, 3 Mar 2016 15:17:31 +0100
  7943. +Subject: [PATCH] Disable c++ standard compiler flags for the host build
  7944. +MIME-Version: 1.0
  7945. +Content-Type: text/plain; charset=UTF-8
  7946. +Content-Transfer-Encoding: 8bit
  7947. +
  7948. +There is no test for c++ standard support for the host build
  7949. +(only for the target compiler/build) which leads to trouble
  7950. +in some cross compiling environments (old host compiler, new
  7951. +cross compiler):
  7952. +
  7953. + g++: error: unrecognized command line option ‘-std=c++1z’
  7954. +
  7955. +So disable c++ standard compiler flags unconditionally for host builds.
  7956. +
  7957. +Task-number: QTBUG-51644
  7958. +Change-Id: Ifb3042e125fe199a7e081740d1171d26ccacf0c5
  7959. +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
  7960. +Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
  7961. +---
  7962. + mkspecs/features/default_post.prf | 5 ++++-
  7963. + 1 file changed, 4 insertions(+), 1 deletion(-)
  7964. +
  7965. +diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
  7966. +index cd8d885..561c8f4 100644
  7967. +--- a/mkspecs/features/default_post.prf
  7968. ++++ b/mkspecs/features/default_post.prf
  7969. +@@ -95,7 +95,10 @@ breakpad {
  7970. + !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
  7971. + }
  7972. +
  7973. +-c++11|c++14|c++1z {
  7974. ++# Disable special compiler flags for host builds (needs to be changed for 5.7
  7975. ++# to fall back to c++11 because since 5.7 c++11 is required everywhere,
  7976. ++# including host builds).
  7977. ++if(!host_build|!cross_compile):if(c++11|c++14|c++1z) {
  7978. + c++1z: cxxstd = CXX1Z
  7979. + else: c++14: cxxstd = CXX14
  7980. + else: cxxstd = CXX11
  7981. +--
  7982. +2.1.4
  7983. +
  7984. diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in
  7985. index 7244fbe..64a7f65 100644
  7986. --- a/package/qt5/qt5base/Config.in
  7987. +++ b/package/qt5/qt5base/Config.in
  7988. @@ -180,7 +180,7 @@ config BR2_PACKAGE_QT5BASE_DIRECTFB
  7989. bool "directfb support"
  7990. depends on BR2_PACKAGE_DIRECTFB
  7991. -comment "directfb backend available if directfb is enabled"
  7992. +comment "directfb backend if directb is enabled"
  7993. depends on !BR2_PACKAGE_DIRECTFB
  7994. config BR2_PACKAGE_QT5BASE_XCB
  7995. diff --git a/package/qt5/qt5base/qmake.conf b/package/qt5/qt5base/qmake.conf
  7996. index 49cf898..2152d3c 100644
  7997. --- a/package/qt5/qt5base/qmake.conf
  7998. +++ b/package/qt5/qt5base/qmake.conf
  7999. @@ -19,7 +19,6 @@ QMAKE_CXXFLAGS_RELEASE += -O3
  8000. CONFIG += nostrip
  8001. QMAKE_LIBS += -lrt -lpthread -ldl
  8002. -QMAKE_CFLAGS_ISYSTEM =
  8003. include(../common/linux_device_post.conf)
  8004. load(qt_config)
  8005. diff --git a/package/qt5/qt5base/qt5base.hash b/package/qt5/qt5base/qt5base.hash
  8006. index 9808e9b..6795b60 100644
  8007. --- a/package/qt5/qt5base/qt5base.hash
  8008. +++ b/package/qt5/qt5base/qt5base.hash
  8009. @@ -1,2 +1 @@
  8010. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz.mirrorlist
  8011. -sha256 2f6eae93c5d982fe0a387a01aeb3435571433e23e9d9d9246741faf51f1ee787 qtbase-opensource-src-5.6.2.tar.xz
  8012. +sha256 3e7b6d123cab23a587ccbc45173296b33786faa409dba0494e4658fda3ede646 qtbase-opensource-src-5.7.0.tar.xz
  8013. diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk
  8014. index 23dba2a..81666d6 100644
  8015. --- a/package/qt5/qt5base/qt5base.mk
  8016. +++ b/package/qt5/qt5base/qt5base.mk
  8017. @@ -20,21 +20,16 @@ QT5BASE_INSTALL_STAGING = YES
  8018. # want to use the one packaged in Buildroot
  8019. QT5BASE_CONFIGURE_OPTS += \
  8020. -optimized-qmake \
  8021. + -no-kms \
  8022. -no-cups \
  8023. + -no-nis \
  8024. -no-iconv \
  8025. -system-zlib \
  8026. -system-pcre \
  8027. + -system-harfbuzz \
  8028. -no-pch \
  8029. -shared
  8030. -# Uses libgbm from mesa3d
  8031. -ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
  8032. -QT5BASE_CONFIGURE_OPTS += -kms -gbm
  8033. -QT5BASE_DEPENDENCIES += mesa3d
  8034. -else
  8035. -QT5BASE_CONFIGURE_OPTS += -no-kms
  8036. -endif
  8037. -
  8038. ifeq ($(BR2_ENABLE_DEBUG),y)
  8039. QT5BASE_CONFIGURE_OPTS += -debug
  8040. else
  8041. @@ -58,10 +53,6 @@ ifneq ($(QT5BASE_CONFIG_FILE),)
  8042. QT5BASE_CONFIGURE_OPTS += -qconfig buildroot
  8043. endif
  8044. -ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
  8045. -QT5BASE_DEPENDENCIES += udev
  8046. -endif
  8047. -
  8048. # Qt5 SQL Plugins
  8049. ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)
  8050. ifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y)
  8051. diff --git a/package/qt5/qt5canvas3d/qt5canvas3d.hash b/package/qt5/qt5canvas3d/qt5canvas3d.hash
  8052. index 01819e4..2d13e40 100644
  8053. --- a/package/qt5/qt5canvas3d/qt5canvas3d.hash
  8054. +++ b/package/qt5/qt5canvas3d/qt5canvas3d.hash
  8055. @@ -1,2 +1 @@
  8056. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtcanvas3d-opensource-src-5.6.2.tar.xz.mirrorlist
  8057. -sha256 d7584d006b03f99692ccabce922e755a6f12bb1ed1fbc99c2b84842b9e0aa0ad qtcanvas3d-opensource-src-5.6.2.tar.xz
  8058. +sha256 7871b3fd4c1a561c5b3eb57746e8504bc5d8fa626f9df578e619f9e823e3bd97 qtcanvas3d-opensource-src-5.7.0.tar.xz
  8059. diff --git a/package/qt5/qt5charts/Config.in b/package/qt5/qt5charts/Config.in
  8060. new file mode 100644
  8061. index 0000000..d354bb2
  8062. --- /dev/null
  8063. +++ b/package/qt5/qt5charts/Config.in
  8064. @@ -0,0 +1,18 @@
  8065. +config BR2_PACKAGE_QT5CHARTS
  8066. + bool "qt5charts"
  8067. + select BR2_PACKAGE_QT5DECLARATIVE
  8068. + select BR2_PACKAGE_QT5DECLARATIVE_QUICK
  8069. + select BR2_PACKAGE_QT5BASE_WIDGETS
  8070. + depends on BR2_PACKAGE_QT5_GL_AVAILABLE
  8071. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  8072. + help
  8073. + Qt is a cross-platform application and UI framework for
  8074. + developers using C++.
  8075. +
  8076. + This package corresponds to the qt5charts module.
  8077. +
  8078. + http://qt.io
  8079. +
  8080. +comment "qt5charts needs an OpenGL-capable backend"
  8081. + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
  8082. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  8083. diff --git a/package/qt5/qt5charts/qt5charts.mk b/package/qt5/qt5charts/qt5charts.mk
  8084. new file mode 100644
  8085. index 0000000..c813354
  8086. --- /dev/null
  8087. +++ b/package/qt5/qt5charts/qt5charts.mk
  8088. @@ -0,0 +1,39 @@
  8089. +################################################################################
  8090. +#
  8091. +# qt5charts
  8092. +#
  8093. +################################################################################
  8094. +
  8095. +QT5CHARTS_VERSION = $(QT5_VERSION)
  8096. +QT5CHARTS_SITE = $(QT5_SITE)
  8097. +QT5CHARTS_SOURCE = qtcharts-opensource-src-$(QT5CHARTS_VERSION).tar.xz
  8098. +QT5CHARTS_DEPENDENCIES = qt5base qt5declarative
  8099. +QT5CHARTS_INSTALL_STAGING = YES
  8100. +
  8101. +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
  8102. +QT5CHARTS_LICENSE = GPLv3
  8103. +QT5CHARTS_LICENSE_FILES = LICENSE.GPL3
  8104. +else
  8105. +QT5CHARTS_LICENSE = Commercial license
  8106. +QT5CHARTS_REDISTRIBUTE = NO
  8107. +endif
  8108. +
  8109. +define QT5CHARTS_CONFIGURE_CMDS
  8110. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
  8111. +endef
  8112. +
  8113. +define QT5CHARTS_BUILD_CMDS
  8114. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  8115. +endef
  8116. +
  8117. +define QT5CHARTS_INSTALL_STAGING_CMDS
  8118. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  8119. + $(QT5_LA_PRL_FILES_FIXUP)
  8120. +endef
  8121. +
  8122. +define QT5CHARTS_INSTALL_TARGET_CMDS
  8123. + cp -dpfr $(STAGING_DIR)/usr/lib/libQt5Charts.so.* $(TARGET_DIR)/usr/lib/
  8124. + cp -dpfr $(STAGING_DIR)/usr/qml/QtCharts $(TARGET_DIR)/usr/qml/
  8125. +endef
  8126. +
  8127. +$(eval $(generic-package))
  8128. diff --git a/package/qt5/qt5connectivity/Config.in b/package/qt5/qt5connectivity/Config.in
  8129. index fa9b911..d529ea7 100644
  8130. --- a/package/qt5/qt5connectivity/Config.in
  8131. +++ b/package/qt5/qt5connectivity/Config.in
  8132. @@ -1,9 +1,13 @@
  8133. config BR2_PACKAGE_QT5CONNECTIVITY
  8134. bool "qt5connectivity"
  8135. + select BR2_PACKAGE_BLUEZ_UTILS
  8136. select BR2_PACKAGE_QT5BASE
  8137. select BR2_PACKAGE_QT5BASE_CONCURRENT
  8138. select BR2_PACKAGE_QT5BASE_DBUS
  8139. - depends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS
  8140. + depends on !BR2_STATIC_LIBS # bluez_utils
  8141. + depends on BR2_USE_WCHAR # bluez_utils
  8142. + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils
  8143. + depends on BR2_USE_MMU # bluez_utils
  8144. help
  8145. Qt is a cross-platform application and UI framework for
  8146. developers using C++.
  8147. @@ -12,6 +16,6 @@ config BR2_PACKAGE_QT5CONNECTIVITY
  8148. http://qt.io
  8149. -comment "qt5connectivity needs neard and/or bluez(5)_utils"
  8150. - depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ_UTILS && \
  8151. - !BR2_PACKAGE_BLUEZ5_UTILS
  8152. +comment "qt5connectivity needs a toolchain w/ wchar, threads, dynamic library"
  8153. + depends on BR2_USE_MMU
  8154. + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
  8155. diff --git a/package/qt5/qt5connectivity/qt5connectivity.hash b/package/qt5/qt5connectivity/qt5connectivity.hash
  8156. index 4574f3d..00b7c20 100644
  8157. --- a/package/qt5/qt5connectivity/qt5connectivity.hash
  8158. +++ b/package/qt5/qt5connectivity/qt5connectivity.hash
  8159. @@ -1,2 +1 @@
  8160. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtconnectivity-opensource-src-5.6.2.tar.xz.mirrorlist
  8161. -sha256 1b672923e0703d62f605ccec97b454b1a04c1f0db47f54b687d009e84eabedf9 qtconnectivity-opensource-src-5.6.2.tar.xz
  8162. +sha256 9844ca7ec5be187a77dfd7e95051fb267006f6c77157ecb0b8ceeac103a32703 qtconnectivity-opensource-src-5.7.0.tar.xz
  8163. diff --git a/package/qt5/qt5connectivity/qt5connectivity.mk b/package/qt5/qt5connectivity/qt5connectivity.mk
  8164. index 0f7257d..936bc6f 100644
  8165. --- a/package/qt5/qt5connectivity/qt5connectivity.mk
  8166. +++ b/package/qt5/qt5connectivity/qt5connectivity.mk
  8167. @@ -7,7 +7,7 @@
  8168. QT5CONNECTIVITY_VERSION = $(QT5_VERSION)
  8169. QT5CONNECTIVITY_SITE = $(QT5_SITE)
  8170. QT5CONNECTIVITY_SOURCE = qtconnectivity-opensource-src-$(QT5CONNECTIVITY_VERSION).tar.xz
  8171. -QT5CONNECTIVITY_DEPENDENCIES = qt5base
  8172. +QT5CONNECTIVITY_DEPENDENCIES = bluez_utils qt5base
  8173. QT5CONNECTIVITY_INSTALL_STAGING = YES
  8174. ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
  8175. @@ -18,10 +18,9 @@ QT5CONNECTIVITY_LICENSE = Commercial license
  8176. QT5CONNECTIVITY_REDISTRIBUTE = NO
  8177. endif
  8178. -QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative)
  8179. -QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ_UTILS),bluez_utils)
  8180. -QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils)
  8181. -QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard)
  8182. +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
  8183. +QT5CONNECTIVITY_DEPENDENCIES += qt5declarative
  8184. +endif
  8185. define QT5CONNECTIVITY_CONFIGURE_CMDS
  8186. (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
  8187. @@ -37,36 +36,15 @@ define QT5CONNECTIVITY_INSTALL_STAGING_CMDS
  8188. endef
  8189. ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
  8190. -ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
  8191. -define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS
  8192. +define QT5CONNECTIVITY_INSTALL_TARGET_QMLS
  8193. cp -dpfr $(STAGING_DIR)/usr/qml/QtBluetooth $(TARGET_DIR)/usr/qml/
  8194. endef
  8195. endif
  8196. -ifeq ($(BR2_PACKAGE_NEARD),y)
  8197. -define QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS
  8198. - cp -dpfr $(STAGING_DIR)/usr/qml/QtNfc $(TARGET_DIR)/usr/qml/
  8199. -endef
  8200. -endif
  8201. -endif
  8202. -ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
  8203. -define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH
  8204. +define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
  8205. cp -dpf $(STAGING_DIR)/usr/lib/libQt5Bluetooth.so.* $(TARGET_DIR)/usr/lib
  8206. cp -dpf $(STAGING_DIR)/usr/bin/sdpscanner $(TARGET_DIR)/usr/bin
  8207. -endef
  8208. -endif
  8209. -
  8210. -ifeq ($(BR2_PACKAGE_NEARD),y)
  8211. -define QT5CONNECTIVITY_INSTALL_TARGET_NFC
  8212. - cp -dpf $(STAGING_DIR)/usr/lib/libQt5Nfc.so.* $(TARGET_DIR)/usr/lib
  8213. -endef
  8214. -endif
  8215. -
  8216. -define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
  8217. - $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH)
  8218. - $(QT5CONNECTIVITY_INSTALL_TARGET_NFC)
  8219. - $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS)
  8220. - $(QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS)
  8221. + $(QT5CONNECTIVITY_INSTALL_TARGET_QMLS)
  8222. endef
  8223. $(eval $(generic-package))
  8224. diff --git a/package/qt5/qt5datavis3d/Config.in b/package/qt5/qt5datavis3d/Config.in
  8225. new file mode 100644
  8226. index 0000000..c7aca95
  8227. --- /dev/null
  8228. +++ b/package/qt5/qt5datavis3d/Config.in
  8229. @@ -0,0 +1,17 @@
  8230. +config BR2_PACKAGE_QT5DATAVIS3D
  8231. + bool "qt5datavis3d"
  8232. + select BR2_PACKAGE_QT5DECLARATIVE
  8233. + select BR2_PACKAGE_QT5DECLARATIVE_QUICK
  8234. + depends on BR2_PACKAGE_QT5_GL_AVAILABLE
  8235. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  8236. + help
  8237. + Qt is a cross-platform application and UI framework for
  8238. + developers using C++.
  8239. +
  8240. + This package corresponds to the qt5datavis3d module.
  8241. +
  8242. + http://qt.io
  8243. +
  8244. +comment "qt5canvas3d needs an OpenGL-capable backend"
  8245. + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
  8246. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  8247. diff --git a/package/qt5/qt5datavis3d/qt5datavis3d.mk b/package/qt5/qt5datavis3d/qt5datavis3d.mk
  8248. new file mode 100644
  8249. index 0000000..9101148
  8250. --- /dev/null
  8251. +++ b/package/qt5/qt5datavis3d/qt5datavis3d.mk
  8252. @@ -0,0 +1,39 @@
  8253. +################################################################################
  8254. +#
  8255. +# qt5datavis3d
  8256. +#
  8257. +################################################################################
  8258. +
  8259. +QT5DATAVIS3D_VERSION = $(QT5_VERSION)
  8260. +QT5DATAVIS3D_SITE = $(QT5_SITE)
  8261. +QT5DATAVIS3D_SOURCE = qtdatavis3d-opensource-src-$(QT5DATAVIS3D_VERSION).tar.xz
  8262. +QT5DATAVIS3D_DEPENDENCIES = qt5base qt5declarative
  8263. +QT5DATAVIS3D_INSTALL_STAGING = YES
  8264. +
  8265. +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
  8266. +QT5DATAVIS3D_LICENSE = GPLv3
  8267. +QT5DATAVIS3D_LICENSE_FILES = LICENSE.GPL3
  8268. +else
  8269. +QT5DATAVIS3D_LICENSE = Commercial license
  8270. +QT5DATAVIS3D_REDISTRIBUTE = NO
  8271. +endif
  8272. +
  8273. +define QT5DATAVIS3D_CONFIGURE_CMDS
  8274. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
  8275. +endef
  8276. +
  8277. +define QT5DATAVIS3D_BUILD_CMDS
  8278. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  8279. +endef
  8280. +
  8281. +define QT5DATAVIS3D_INSTALL_STAGING_CMDS
  8282. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  8283. + $(QT5_LA_PRL_FILES_FIXUP)
  8284. +endef
  8285. +
  8286. +define QT5DATAVIS3D_INSTALL_TARGET_CMDS
  8287. + cp -dpfr $(STAGING_DIR)/usr/lib/libQt5DataVisualization.so.* $(TARGET_DIR)/usr/lib
  8288. + cp -dpfr $(STAGING_DIR)/usr/qml/QtDataVisualization $(TARGET_DIR)/usr/qml/
  8289. +endef
  8290. +
  8291. +$(eval $(generic-package))
  8292. diff --git a/package/qt5/qt5declarative/qt5declarative.hash b/package/qt5/qt5declarative/qt5declarative.hash
  8293. index d8d3a68..6779669 100644
  8294. --- a/package/qt5/qt5declarative/qt5declarative.hash
  8295. +++ b/package/qt5/qt5declarative/qt5declarative.hash
  8296. @@ -1,2 +1 @@
  8297. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtdeclarative-opensource-src-5.6.2.tar.xz.mirrorlist
  8298. -sha256 0086a986bc36b398ba518c404d08cdff0a0d7978c30aa3fa2ab73d71654209da qtdeclarative-opensource-src-5.6.2.tar.xz
  8299. +sha256 86de6239f3aee2e5f561c16ad7b6e47d8f341c293d4ed11c85acbc21888cf9f4 qtdeclarative-opensource-src-5.7.0.tar.xz
  8300. diff --git a/package/qt5/qt5enginio/qt5enginio.hash b/package/qt5/qt5enginio/qt5enginio.hash
  8301. index 9951834..95f507c 100644
  8302. --- a/package/qt5/qt5enginio/qt5enginio.hash
  8303. +++ b/package/qt5/qt5enginio/qt5enginio.hash
  8304. @@ -1,2 +1 @@
  8305. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtenginio-opensource-src-1.6.2.tar.xz.mirrorlist
  8306. -sha256 90ffc38d214a75ab0ef90a4760843f12bc073ae49c17de24c677d1d403bddcc3 qtenginio-opensource-src-1.6.2.tar.xz
  8307. +sha256 627ddcfbbfc3ec1a83c9dbb5f24287b5cd6cb5d3b9d09af4d1c444c6ac147f0c qtenginio-opensource-src-1.6.0.tar.xz
  8308. diff --git a/package/qt5/qt5enginio/qt5enginio.mk b/package/qt5/qt5enginio/qt5enginio.mk
  8309. index ada5fa7..b858d1c 100644
  8310. --- a/package/qt5/qt5enginio/qt5enginio.mk
  8311. +++ b/package/qt5/qt5enginio/qt5enginio.mk
  8312. @@ -6,7 +6,7 @@
  8313. # Qt5Enginio does not follow Qt versionning
  8314. # see https://bugreports.qt.io/browse/QTBUG-50111
  8315. -QT5ENGINIO_VERSION = 1.6.2
  8316. +QT5ENGINIO_VERSION = 1.6.0
  8317. QT5ENGINIO_SITE = $(QT5_SITE)
  8318. QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz
  8319. QT5ENGINIO_DEPENDENCIES = openssl qt5base
  8320. diff --git a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
  8321. index ae29e3b..7c79a99 100644
  8322. --- a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
  8323. +++ b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
  8324. @@ -1,2 +1 @@
  8325. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtgraphicaleffects-opensource-src-5.6.2.tar.xz.mirrorlist
  8326. -sha256 1e9f0fac2c72a812d396db74b2d9d12f513d2ec9135d5982ca85aee7f00be75e qtgraphicaleffects-opensource-src-5.6.2.tar.xz
  8327. +sha256 c816539ce345e502425a94c624332df78f53aeebc460d76b53b79b59cb938de7 qtgraphicaleffects-opensource-src-5.7.0.tar.xz
  8328. diff --git a/package/qt5/qt5imageformats/qt5imageformats.hash b/package/qt5/qt5imageformats/qt5imageformats.hash
  8329. index 54b58e4..b65be40 100644
  8330. --- a/package/qt5/qt5imageformats/qt5imageformats.hash
  8331. +++ b/package/qt5/qt5imageformats/qt5imageformats.hash
  8332. @@ -1,2 +1 @@
  8333. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtimageformats-opensource-src-5.6.2.tar.xz.mirrorlist
  8334. -sha256 4fb153be62dac393cbcebab65040b3b9d6edecd1ebbe5e543401b0e45bd147e4 qtimageformats-opensource-src-5.6.2.tar.xz
  8335. +sha256 ef3344a44194d1414be585f8c8a652ffe217c663a22b6e26d3bb5e114f3f62e5 qtimageformats-opensource-src-5.7.0.tar.xz
  8336. diff --git a/package/qt5/qt5location/qt5location.hash b/package/qt5/qt5location/qt5location.hash
  8337. index 374952f..074168e 100644
  8338. --- a/package/qt5/qt5location/qt5location.hash
  8339. +++ b/package/qt5/qt5location/qt5location.hash
  8340. @@ -1,2 +1 @@
  8341. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtlocation-opensource-src-5.6.2.tar.xz.mirrorlist
  8342. -sha256 7a8995206ed0220f943a33c037527a1a8243d5386f5ca77bf88152675c28d23a qtlocation-opensource-src-5.6.2.tar.xz
  8343. +sha256 70273367342493a77c050f033a92d96e79925aa70308746e9681d8661f4aa865 qtlocation-opensource-src-5.7.0.tar.xz
  8344. diff --git a/package/qt5/qt5multimedia/Config.in b/package/qt5/qt5multimedia/Config.in
  8345. index 7549b35..59c3984 100644
  8346. --- a/package/qt5/qt5multimedia/Config.in
  8347. +++ b/package/qt5/qt5multimedia/Config.in
  8348. @@ -3,7 +3,6 @@ config BR2_PACKAGE_QT5MULTIMEDIA
  8349. select BR2_PACKAGE_QT5BASE
  8350. select BR2_PACKAGE_QT5BASE_GUI
  8351. select BR2_PACKAGE_QT5BASE_NETWORK
  8352. - select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL
  8353. help
  8354. Qt is a cross-platform application and UI framework for
  8355. developers using C++.
  8356. diff --git a/package/qt5/qt5multimedia/qt5multimedia.hash b/package/qt5/qt5multimedia/qt5multimedia.hash
  8357. index 56a11fb..1a85f95 100644
  8358. --- a/package/qt5/qt5multimedia/qt5multimedia.hash
  8359. +++ b/package/qt5/qt5multimedia/qt5multimedia.hash
  8360. @@ -1,2 +1 @@
  8361. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtmultimedia-opensource-src-5.6.2.tar.xz.mirrorlist
  8362. -sha256 cb9a70a7c6c0eb5be4a3fcaf9590863479e95a255308bbf07d5b7aa303bb8caf qtmultimedia-opensource-src-5.6.2.tar.xz
  8363. +sha256 05ae705bda224a600b06e390aa7b1448c4a6a52d2d37842d2121fb4a5d84b559 qtmultimedia-opensource-src-5.7.0.tar.xz
  8364. diff --git a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
  8365. index 6db589d..cf438f8 100644
  8366. --- a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
  8367. +++ b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
  8368. @@ -1,2 +1 @@
  8369. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols-opensource-src-5.6.2.tar.xz.mirrorlist
  8370. -sha256 5ed0f2292be10222dfb1b57a05472798fd759279f65455d91c02ef4fb746102c qtquickcontrols-opensource-src-5.6.2.tar.xz
  8371. +sha256 d8e19a77100fff109585ccc62116e63dd11ce9486056a8eb5b64159b7ecdec32 qtquickcontrols-opensource-src-5.7.0.tar.xz
  8372. diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
  8373. index 0d85d48..c43afd7 100644
  8374. --- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
  8375. +++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
  8376. @@ -1,2 +1 @@
  8377. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols2-opensource-src-5.6.2.tar.xz.mirrorlist
  8378. -sha256 09dc1710aa4701aebe145829eb99bab94d0870cf578f7dddcec0af92286dfec1 qtquickcontrols2-opensource-src-5.6.2.tar.xz
  8379. +sha256 63f5b0777992c32bd602b88de657e202cd6d5e8ba0371c6d5da16fb8c7481045 qtquickcontrols2-opensource-src-5.7.0.tar.xz
  8380. diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
  8381. index a5ad3f6..23bbb2c 100644
  8382. --- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
  8383. +++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
  8384. @@ -31,10 +31,15 @@ define QT5QUICKCONTROLS2_INSTALL_STAGING_CMDS
  8385. endef
  8386. define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS
  8387. - cp -dpf $(STAGING_DIR)/usr/lib/libQt5LabsTemplates.so.* $(TARGET_DIR)/usr/lib
  8388. - cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs
  8389. + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickTemplates2.so.* $(TARGET_DIR)/usr/lib
  8390. + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickControls2.so.* $(TARGET_DIR)/usr/lib
  8391. cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs
  8392. - cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs
  8393. +# cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/platform $(TARGET_DIR)/usr/qml/Qt/labs
  8394. + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/folderlistmodel $(TARGET_DIR)/usr/qml/Qt/labs
  8395. + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/settings $(TARGET_DIR)/usr/qml/Qt/labs
  8396. + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls.2 $(TARGET_DIR)/usr/qml/QtQuick
  8397. + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Templates.2 $(TARGET_DIR)/usr/qml/QtQuick
  8398. + $(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES)
  8399. endef
  8400. $(eval $(generic-package))
  8401. diff --git a/package/qt5/qt5sensors/qt5sensors.hash b/package/qt5/qt5sensors/qt5sensors.hash
  8402. index 65cd127..ec62e3b 100644
  8403. --- a/package/qt5/qt5sensors/qt5sensors.hash
  8404. +++ b/package/qt5/qt5sensors/qt5sensors.hash
  8405. @@ -1,2 +1 @@
  8406. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsensors-opensource-src-5.6.2.tar.xz.mirrorlist
  8407. -sha256 a7809081aab4f2f0d7a4f40c3abb02e1690bb390d1dd410d7c6c5019a5053427 qtsensors-opensource-src-5.6.2.tar.xz
  8408. +sha256 283dcc66a24c4367e865fa8301b6ea04d0cb78bd0f166fd09a6bb42e1e3731be qtsensors-opensource-src-5.7.0.tar.xz
  8409. diff --git a/package/qt5/qt5serialbus/Config.in b/package/qt5/qt5serialbus/Config.in
  8410. index f5b713d..504141c 100644
  8411. --- a/package/qt5/qt5serialbus/Config.in
  8412. +++ b/package/qt5/qt5serialbus/Config.in
  8413. @@ -1,6 +1,5 @@
  8414. config BR2_PACKAGE_QT5SERIALBUS
  8415. bool "qt5serialbus"
  8416. - depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD
  8417. select BR2_PACKAGE_QT5BASE
  8418. select BR2_PACKAGE_QT5SERIALPORT
  8419. help
  8420. @@ -10,6 +9,3 @@ config BR2_PACKAGE_QT5SERIALBUS
  8421. This package corresponds to the qt5serialbus module.
  8422. http://qt.io
  8423. -
  8424. -comment "qt5serialbus needs headers >= 3.6"
  8425. - depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
  8426. diff --git a/package/qt5/qt5serialbus/qt5serialbus.hash b/package/qt5/qt5serialbus/qt5serialbus.hash
  8427. index 308c365..0597219 100644
  8428. --- a/package/qt5/qt5serialbus/qt5serialbus.hash
  8429. +++ b/package/qt5/qt5serialbus/qt5serialbus.hash
  8430. @@ -1,2 +1 @@
  8431. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialbus-opensource-src-5.6.2.tar.xz.mirrorlist
  8432. -sha256 b39260091691532382935ed51de9ead8e66cfb5f7a6e5410c17cd0695ccaf826 qtserialbus-opensource-src-5.6.2.tar.xz
  8433. +sha256 2c437ace393e9dcf170990b519cec59c5cbcfc3c830e46116abb52549dc15d38 qtserialbus-opensource-src-5.7.0.tar.xz
  8434. diff --git a/package/qt5/qt5serialport/qt5serialport.hash b/package/qt5/qt5serialport/qt5serialport.hash
  8435. index 2458e5d..7751d64 100644
  8436. --- a/package/qt5/qt5serialport/qt5serialport.hash
  8437. +++ b/package/qt5/qt5serialport/qt5serialport.hash
  8438. @@ -1,2 +1 @@
  8439. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialport-opensource-src-5.6.2.tar.xz.mirrorlist
  8440. -sha256 af76281bad2c2bd283189635316b46091f6712134b845ae1b9e3016eec94f376 qtserialport-opensource-src-5.6.2.tar.xz
  8441. +sha256 5ce150d843a243854736489d4a71205a8ca8dc8f93626ec29d1aa7a249a08265 qtserialport-opensource-src-5.7.0.tar.xz
  8442. diff --git a/package/qt5/qt5svg/qt5svg.hash b/package/qt5/qt5svg/qt5svg.hash
  8443. index 0c9e9eb..0c3a9ff 100644
  8444. --- a/package/qt5/qt5svg/qt5svg.hash
  8445. +++ b/package/qt5/qt5svg/qt5svg.hash
  8446. @@ -1,2 +1 @@
  8447. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsvg-opensource-src-5.6.2.tar.xz.mirrorlist
  8448. -sha256 f7a361bf661b31ae7779513559dd0b774171911bc57f5cfb6bed6878ddc8bc4e qtsvg-opensource-src-5.6.2.tar.xz
  8449. +sha256 a1f89f035aed48bf8843ff1880c4b54dc2e3a5160dbd743aec03e13831cdd881 qtsvg-opensource-src-5.7.0.tar.xz
  8450. diff --git a/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
  8451. new file mode 100644
  8452. index 0000000..61cbdfe
  8453. --- /dev/null
  8454. +++ b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
  8455. @@ -0,0 +1,30 @@
  8456. +From acdb24783322bb6e69df61cf04df2b2e47a06ad2 Mon Sep 17 00:00:00 2001
  8457. +From: Peter Seiderer <ps.report@gmx.net>
  8458. +Date: Tue, 29 Mar 2016 13:37:09 +0200
  8459. +Subject: [PATCH] Disable qdoc (needs qtdeclarative).
  8460. +
  8461. +Fixes:
  8462. +
  8463. + Project ERROR: Unknown module(s) in QT: qmldevtools-private
  8464. + Makefile:63: recipe for target 'sub-qdoc-qmake_all' failed
  8465. +
  8466. +Signed-off-by: Peter Seiderer <ps.report@gmx.net>
  8467. +---
  8468. + src/src.pro | 1 -
  8469. + 1 file changed, 1 deletion(-)
  8470. +
  8471. +diff --git a/src/src.pro b/src/src.pro
  8472. +index 387d54f..494898f 100644
  8473. +--- a/src/src.pro
  8474. ++++ b/src/src.pro
  8475. +@@ -14,7 +14,6 @@ qtHaveModule(widgets) {
  8476. + }
  8477. +
  8478. + SUBDIRS += linguist \
  8479. +- qdoc \
  8480. + qtplugininfo
  8481. + if(!android|android_app):!ios: SUBDIRS += qtpaths
  8482. +
  8483. +--
  8484. +2.1.4
  8485. +
  8486. diff --git a/package/qt5/qt5tools/qt5tools.hash b/package/qt5/qt5tools/qt5tools.hash
  8487. deleted file mode 100644
  8488. index cc11b28..0000000
  8489. --- a/package/qt5/qt5tools/qt5tools.hash
  8490. +++ /dev/null
  8491. @@ -1,2 +0,0 @@
  8492. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist
  8493. -sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz
  8494. diff --git a/package/qt5/qt5tools/qt5tools.hash__ b/package/qt5/qt5tools/qt5tools.hash__
  8495. new file mode 100644
  8496. index 0000000..cc11b28
  8497. --- /dev/null
  8498. +++ b/package/qt5/qt5tools/qt5tools.hash__
  8499. @@ -0,0 +1,2 @@
  8500. +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist
  8501. +sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz
  8502. diff --git a/package/qt5/qt5virtualkeyboard/Config.in b/package/qt5/qt5virtualkeyboard/Config.in
  8503. new file mode 100644
  8504. index 0000000..803b937
  8505. --- /dev/null
  8506. +++ b/package/qt5/qt5virtualkeyboard/Config.in
  8507. @@ -0,0 +1,10 @@
  8508. +config BR2_PACKAGE_QT5VIRTUALKEYBOARD
  8509. + bool "qt5virtualkeyboard"
  8510. + select BR2_PACKAGE_QT5BASE
  8511. + help
  8512. + Qt is a cross-platform application and UI framework for
  8513. + developers using C++.
  8514. +
  8515. + This package corresponds to the qt5virtualkeyboard module.
  8516. +
  8517. + http://qt.io
  8518. \ No newline at end of file
  8519. diff --git a/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
  8520. new file mode 100644
  8521. index 0000000..bedefc5
  8522. --- /dev/null
  8523. +++ b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
  8524. @@ -0,0 +1,39 @@
  8525. +################################################################################
  8526. +#
  8527. +# qt5virtualkeyboard
  8528. +#
  8529. +################################################################################
  8530. +
  8531. +QT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION)
  8532. +QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE)
  8533. +QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-opensource-src-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz
  8534. +QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5base qt5declarative
  8535. +QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES
  8536. +
  8537. +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
  8538. +QT5VIRTUALKEYBOARD_LICENSE = GPLv3
  8539. +QT5VIRTUALKEYBOARD_LICENSE_FILES = LICENSE.GPL3
  8540. +else
  8541. +QT5VIRTUALKEYBOARD_LICENSE = Commercial license
  8542. +QT5VIRTUALKEYBOARD_REDISTRIBUTE = NO
  8543. +endif
  8544. +
  8545. +define QT5VIRTUALKEYBOARD_CONFIGURE_CMDS
  8546. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake CONFIG+=disable-desktop)
  8547. +endef
  8548. +
  8549. +define QT5VIRTUALKEYBOARD_BUILD_CMDS
  8550. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  8551. +endef
  8552. +
  8553. +define QT5VIRTUALKEYBOARD_INSTALL_STAGING_CMDS
  8554. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  8555. +endef
  8556. +
  8557. +define QT5VIRTUALKEYBOARD_INSTALL_TARGET_CMDS
  8558. + cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so $(TARGET_DIR)/usr/lib/qt/plugins/platforminputcontexts
  8559. + cp -dpfrv $(STAGING_DIR)/usr/qml/QtQuick/VirtualKeyboard $(TARGET_DIR)/usr/qml/QtQuick/
  8560. +
  8561. +endef
  8562. +
  8563. +$(eval $(generic-package))
  8564. diff --git a/package/qt5/qt5wayland/Config.in b/package/qt5/qt5wayland/Config.in
  8565. new file mode 100644
  8566. index 0000000..dbb67b7
  8567. --- /dev/null
  8568. +++ b/package/qt5/qt5wayland/Config.in
  8569. @@ -0,0 +1,14 @@
  8570. +config BR2_PACKAGE_QT5WAYLAND
  8571. + bool "qt5wayland"
  8572. + select BR2_PACKAGE_QT5BASE
  8573. + select BR2_PACKAGE_QT5DECLARATIVE
  8574. + select BR2_PACKAGE_QT5JSBACKEND
  8575. + depends on BR2_PACKAGE_WAYLAND
  8576. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  8577. + help
  8578. + Qt is a cross-platform application and UI framework for
  8579. + developers using C++.
  8580. +
  8581. + This package corresponds to the qt5wayland module.
  8582. +
  8583. + http://qt.io
  8584. \ No newline at end of file
  8585. diff --git a/package/qt5/qt5wayland/qt5wayland.mk b/package/qt5/qt5wayland/qt5wayland.mk
  8586. new file mode 100644
  8587. index 0000000..436934d
  8588. --- /dev/null
  8589. +++ b/package/qt5/qt5wayland/qt5wayland.mk
  8590. @@ -0,0 +1,35 @@
  8591. +# (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake -r CONFIG+=wayland-compositor )
  8592. +################################################################################
  8593. +#
  8594. +# qt5wayland
  8595. +#
  8596. +################################################################################
  8597. +
  8598. +QT5WAYLAND_VERSION = $(QT5_VERSION)
  8599. +QT5WAYLAND_SITE = $(QT5_SITE)
  8600. +QT5WAYLAND_SOURCE = qtwayland-opensource-src-$(QT5WAYLAND_VERSION).tar.xz
  8601. +QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland
  8602. +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
  8603. +QT5WAYLAND_DEPENDENCIES += libegl
  8604. +endif
  8605. +QT5WAYLAND_INSTALL_STAGING = YES
  8606. +
  8607. +define QT5WAYLAND_CONFIGURE_CMDS
  8608. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
  8609. +endef
  8610. +
  8611. +define QT5WAYLAND_BUILD_CMDS
  8612. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  8613. +endef
  8614. +
  8615. +define QT5WAYLAND_INSTALL_STAGING_CMDS
  8616. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  8617. +endef
  8618. +
  8619. +define QT5WAYLAND_INSTALL_TARGET_CMDS
  8620. + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WaylandClient.so* $(TARGET_DIR)/usr/lib
  8621. + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/wayland-*-client $(TARGET_DIR)/usr/lib/qt/plugins
  8622. + cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforms/libqwayland-*.so $(TARGET_DIR)/usr/lib/qt/plugins/platforms
  8623. +endef
  8624. +
  8625. +$(eval $(generic-package))
  8626. diff --git a/package/qt5/qt5webchannel/qt5webchannel.hash b/package/qt5/qt5webchannel/qt5webchannel.hash
  8627. index 0f9eaae..c4fc230 100644
  8628. --- a/package/qt5/qt5webchannel/qt5webchannel.hash
  8629. +++ b/package/qt5/qt5webchannel/qt5webchannel.hash
  8630. @@ -1,2 +1 @@
  8631. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebchannel-opensource-src-5.6.2.tar.xz.mirrorlist
  8632. -sha256 700efdef5f51bdb77093f4db212afe275ad35a710ea08ba0e9e9cbc8f09f1a52 qtwebchannel-opensource-src-5.6.2.tar.xz
  8633. +sha256 3ab4cd177cc742ee5015f2b7f943c16ce13380b840f824436b5005485b749816 qtwebchannel-opensource-src-5.7.0.tar.xz
  8634. diff --git a/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
  8635. new file mode 100644
  8636. index 0000000..f3d5bda
  8637. --- /dev/null
  8638. +++ b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
  8639. @@ -0,0 +1,14 @@
  8640. +--- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp 2016-05-26 15:53:47.000000000 +0200
  8641. ++++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp 2016-11-19 00:19:49.894527354 +0100
  8642. +@@ -39,6 +39,11 @@
  8643. +
  8644. + #include <sys/mman.h>
  8645. +
  8646. ++#if OS(LINUX) && defined(MADV_FREE)
  8647. ++// glibc 2.24 issues in qtwebengine
  8648. ++#undef MADV_FREE
  8649. ++#endif
  8650. ++
  8651. + #ifndef MADV_FREE
  8652. + #define MADV_FREE MADV_DONTNEED
  8653. + #endif
  8654. diff --git a/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
  8655. new file mode 100644
  8656. index 0000000..c7bdcff
  8657. --- /dev/null
  8658. +++ b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
  8659. @@ -0,0 +1,20 @@
  8660. +--- a/src/core/delegated_frame_node.cpp 2016-03-03 17:02:28.000000000 +0100
  8661. ++++ b/src/core/delegated_frame_node.cpp 2016-04-09 21:01:03.502390661 +0200
  8662. +@@ -194,7 +194,7 @@
  8663. + case gfx::TransferableFence::NoSync:
  8664. + break;
  8665. + case gfx::TransferableFence::EglSync:
  8666. +-#ifdef EGL_KHR_reusable_sync
  8667. ++#ifdef EGL_KHR_fence_sync
  8668. + {
  8669. + static bool resolved = false;
  8670. + static PFNEGLCLIENTWAITSYNCKHRPROC eglClientWaitSyncKHR = 0;
  8671. +@@ -235,7 +235,7 @@
  8672. + case gfx::TransferableFence::NoSync:
  8673. + break;
  8674. + case gfx::TransferableFence::EglSync:
  8675. +-#ifdef EGL_KHR_reusable_sync
  8676. ++#ifdef EGL_KHR_fence_sync
  8677. + {
  8678. + static bool resolved = false;
  8679. + static PFNEGLDESTROYSYNCKHRPROC eglDestroySyncKHR = 0;
  8680. diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in
  8681. new file mode 100644
  8682. index 0000000..b630a85
  8683. --- /dev/null
  8684. +++ b/package/qt5/qt5webengine/Config.in
  8685. @@ -0,0 +1,17 @@
  8686. +config BR2_PACKAGE_QT5WEBENGINE
  8687. + bool "qt5webengine"
  8688. + select BR2_PACKAGE_QT5BASE
  8689. + select BR2_PACKAGE_QT5BASE_GUI
  8690. +# select BR2_PACKAGE_QT5BASE_FONTCONFIG
  8691. + select BR2_PACKAGE_QT5BASE_DBUS
  8692. + select BR2_PACKAGE_QT5BASE_ICU
  8693. + select BR2_PACKAGE_QT5WEBCHANNEL
  8694. + select BR2_PACKAGE_OPENSSL
  8695. + select BR2_PACKAGE_LIBCAP
  8696. + select BR2_PACKAGE_QT5DECLARATIVE
  8697. + select BR2_PACKAGE_QT5DECLARATIVE_QUICK
  8698. + help
  8699. + Qt is a cross-platform application and UI framework for
  8700. + developers using C++.
  8701. +
  8702. + This package corresponds to the qt5webengine module.
  8703. diff --git a/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
  8704. new file mode 100644
  8705. index 0000000..bb8aa69
  8706. --- /dev/null
  8707. +++ b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
  8708. @@ -0,0 +1,26 @@
  8709. +diff '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*ninja*' -Naur qt5_a/src/3rdparty/chromium/build/common.gypi qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi
  8710. +--- qt5_a/src/3rdparty/chromium/build/common.gypi 2015-10-13 06:36:43.000000000 +0200
  8711. ++++ qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi 2016-02-09 16:37:54.729166157 +0100
  8712. +@@ -2294,7 +2294,7 @@
  8713. + }],
  8714. + ],
  8715. + # Change the default to hard once the armhf transition is complete.
  8716. +- 'arm_float_abi%': 'softfp',
  8717. ++ 'arm_float_abi%': 'hard',
  8718. + 'arm_thumb%': 1,
  8719. + }],
  8720. +
  8721. +--- qt5webengine-5.5.1/tools/qmake/mkspecs/features/functions.prf 2015-10-13 06:36:55.000000000 +0200
  8722. ++++ qt5_we_b/tools/qmake/mkspecs/features/functions.prf 2016-02-09 21:44:30.829783885 +0100
  8723. +@@ -12,9 +12,9 @@
  8724. + return(false)
  8725. + }
  8726. +
  8727. +- linux-g++*:!isGCCVersionSupported(): return(false)
  8728. ++ linux*g++*:!isGCCVersionSupported(): return(false)
  8729. + !isPythonVersionSupported(): return(false)
  8730. +- linux-g++*|win32-msvc2013|macx-clang: return(true)
  8731. ++ linux*g++*|win32-msvc2013|macx-clang: return(true)
  8732. + boot2qt: return(true)
  8733. +
  8734. + skipBuild("Qt WebEngine can currently only be built for Linux (GCC), Windows (MSVC 2013), OS X (XCode 5.1+) or Qt for Device Creation.")
  8735. diff --git a/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
  8736. new file mode 100644
  8737. index 0000000..b780f49
  8738. --- /dev/null
  8739. +++ b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
  8740. @@ -0,0 +1,11 @@
  8741. +--- a/src/3rdparty/chromium/v8/tools/js2c.py 2016-03-03 15:48:36.000000000 +0100
  8742. ++++ b/src/3rdparty/chromium/v8/tools/js2c.py 2016-04-28 15:56:42.219174252 +0200
  8743. +@@ -34,7 +34,7 @@
  8744. + import os, re, sys, string
  8745. + import optparse
  8746. + import jsmin
  8747. +-import bz2
  8748. ++##import bz2
  8749. + import textwrap
  8750. +
  8751. +
  8752. diff --git a/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
  8753. new file mode 100644
  8754. index 0000000..a917a9c
  8755. --- /dev/null
  8756. +++ b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
  8757. @@ -0,0 +1,43 @@
  8758. +--- qt5webengine-5.5.1/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h 2015-10-13 06:36:26.000000000 +0200
  8759. ++++ qt5_b/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h 2016-02-11 12:06:28.304679220 +0100
  8760. +@@ -57,7 +57,7 @@
  8761. + * This value will change in the subsequent releases of ICU
  8762. + * @stable ICU 2.4
  8763. + */
  8764. +-#define U_ICU_VERSION_MAJOR_NUM 52
  8765. ++#define U_ICU_VERSION_MAJOR_NUM 56
  8766. +
  8767. + /** The current ICU minor version as an integer.
  8768. + * This value will change in the subsequent releases of ICU
  8769. +@@ -83,7 +83,7 @@
  8770. + * This value will change in the subsequent releases of ICU
  8771. + * @stable ICU 2.6
  8772. + */
  8773. +-#define U_ICU_VERSION_SUFFIX _52
  8774. ++#define U_ICU_VERSION_SUFFIX _56
  8775. +
  8776. + /**
  8777. + * \def U_DEF2_ICU_ENTRY_POINT_RENAME
  8778. +@@ -118,19 +118,19 @@
  8779. + * This value will change in the subsequent releases of ICU
  8780. + * @stable ICU 2.4
  8781. + */
  8782. +-#define U_ICU_VERSION "52.1"
  8783. ++#define U_ICU_VERSION "56.1"
  8784. +
  8785. + /** The current ICU library major/minor version as a string without dots, for library name suffixes.
  8786. + * This value will change in the subsequent releases of ICU
  8787. + * @stable ICU 2.6
  8788. + */
  8789. +-#define U_ICU_VERSION_SHORT "52"
  8790. ++#define U_ICU_VERSION_SHORT "56"
  8791. +
  8792. + #ifndef U_HIDE_INTERNAL_API
  8793. + /** Data version in ICU4C.
  8794. + * @internal ICU 4.4 Internal Use Only
  8795. + **/
  8796. +-#define U_ICU_DATA_VERSION "52.1"
  8797. ++#define U_ICU_DATA_VERSION "56.1"
  8798. + #endif /* U_HIDE_INTERNAL_API */
  8799. +
  8800. + /*===========================================================================
  8801. diff --git a/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
  8802. new file mode 100644
  8803. index 0000000..8d633d9
  8804. --- /dev/null
  8805. +++ b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
  8806. @@ -0,0 +1,14 @@
  8807. +--- qt5webengine-5.5.1/src/core/delegated_frame_node.cpp 2015-10-13 06:36:54.000000000 +0200
  8808. ++++ qt5_b/src/core/delegated_frame_node.cpp 2016-02-11 13:27:42.142167151 +0100
  8809. +@@ -76,6 +76,11 @@
  8810. + #include <EGL/eglext.h>
  8811. + #endif
  8812. +
  8813. ++#ifdef EGL_KHR_reusable_sync
  8814. ++#undef EGL_KHR_reusable_sync
  8815. ++#endif
  8816. ++
  8817. ++
  8818. + namespace QtWebEngineCore {
  8819. +
  8820. + class MailboxTexture : public QSGTexture, protected QOpenGLFunctions {
  8821. diff --git a/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
  8822. new file mode 100644
  8823. index 0000000..604cb88
  8824. --- /dev/null
  8825. +++ b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
  8826. @@ -0,0 +1,166 @@
  8827. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc
  8828. +--- qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc 2015-10-13 06:36:48.000000000 +0200
  8829. ++++ qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc 2016-02-12 17:58:52.694043375 +0100
  8830. +@@ -142,7 +142,7 @@
  8831. + }
  8832. +
  8833. + TEST_F(FileProxyTest, CreateOrOpen_AbandonedCreate) {
  8834. +- bool prev = ThreadRestrictions::SetIOAllowed(false);
  8835. ++ bool prev = ThreadRestrictions::SetIOAllowed(true);
  8836. + {
  8837. + FileProxy proxy(file_task_runner());
  8838. + proxy.CreateOrOpen(
  8839. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc
  8840. +--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc 2015-10-13 06:36:47.000000000 +0200
  8841. ++++ qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc 2016-02-12 17:53:52.118534482 +0100
  8842. +@@ -745,7 +745,7 @@
  8843. +
  8844. + // If the UI thread blocks, the whole UI is unresponsive.
  8845. + // Do not allow disk IO from the UI thread.
  8846. +- base::ThreadRestrictions::SetIOAllowed(false);
  8847. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8848. + base::ThreadRestrictions::DisallowWaiting();
  8849. + return result_code_;
  8850. + }
  8851. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc
  8852. +--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc 2015-10-13 06:36:46.000000000 +0200
  8853. ++++ qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc 2016-02-12 17:52:40.717701092 +0100
  8854. +@@ -39,7 +39,7 @@
  8855. + // Though this thread is called the "IO" thread, it actually just routes
  8856. + // messages around; it shouldn't be allowed to perform any blocking disk
  8857. + // I/O.
  8858. +- base::ThreadRestrictions::SetIOAllowed(false);
  8859. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8860. + base::ThreadRestrictions::DisallowWaiting();
  8861. + }
  8862. + }
  8863. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc
  8864. +--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc 2015-10-13 06:36:51.000000000 +0200
  8865. ++++ qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc 2016-02-12 17:57:04.280777854 +0100
  8866. +@@ -39,7 +39,7 @@
  8867. +
  8868. + virtual void SetUp() {
  8869. + // Make the main thread not to allow IO.
  8870. +- base::ThreadRestrictions::SetIOAllowed(false);
  8871. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8872. +
  8873. + // Start the D-Bus thread.
  8874. + dbus_thread_.reset(new base::Thread("D-Bus Thread"));
  8875. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc
  8876. +--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc 2015-10-13 06:36:51.000000000 +0200
  8877. ++++ qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc 2016-02-12 17:54:33.659019384 +0100
  8878. +@@ -61,7 +61,7 @@
  8879. +
  8880. + virtual void SetUp() {
  8881. + // Make the main thread not to allow IO.
  8882. +- base::ThreadRestrictions::SetIOAllowed(false);
  8883. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8884. +
  8885. + // Start the D-Bus thread.
  8886. + dbus_thread_.reset(new base::Thread("D-Bus Thread"));
  8887. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc
  8888. +--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc 2015-10-13 06:36:51.000000000 +0200
  8889. ++++ qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc 2016-02-12 17:57:54.025358691 +0100
  8890. +@@ -51,7 +51,7 @@
  8891. +
  8892. + virtual void SetUp() {
  8893. + // Make the main thread not to allow IO.
  8894. +- base::ThreadRestrictions::SetIOAllowed(false);
  8895. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8896. +
  8897. + // Start the D-Bus thread.
  8898. + dbus_thread_.reset(new base::Thread("D-Bus Thread"));
  8899. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc
  8900. +--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc 2015-10-13 06:36:51.000000000 +0200
  8901. ++++ qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc 2016-02-12 17:55:57.519998395 +0100
  8902. +@@ -32,7 +32,7 @@
  8903. + base::StatisticsRecorder::Initialize();
  8904. +
  8905. + // Make the main thread not to allow IO.
  8906. +- base::ThreadRestrictions::SetIOAllowed(false);
  8907. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8908. +
  8909. + // Start the D-Bus thread.
  8910. + dbus_thread_.reset(new base::Thread("D-Bus Thread"));
  8911. +@@ -161,7 +161,7 @@
  8912. + void SafeServiceStop(TestService* test_service) {
  8913. + base::ThreadRestrictions::SetIOAllowed(true);
  8914. + test_service->Stop();
  8915. +- base::ThreadRestrictions::SetIOAllowed(false);
  8916. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8917. + }
  8918. +
  8919. + base::MessageLoop message_loop_;
  8920. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc
  8921. +--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc 2015-10-13 06:36:53.000000000 +0200
  8922. ++++ qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc 2016-02-12 18:00:05.358889970 +0100
  8923. +@@ -758,7 +758,7 @@
  8924. + scoped_refptr<base::SequencedWorkerPool> pool(
  8925. + new base::SequencedWorkerPool(1, "StreamTest"));
  8926. +
  8927. +- bool prev = base::ThreadRestrictions::SetIOAllowed(false);
  8928. ++ bool prev = base::ThreadRestrictions::SetIOAllowed(true);
  8929. + scoped_ptr<FileStream> stream(new FileStream(pool.get()));
  8930. + int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
  8931. + base::File::FLAG_ASYNC;
  8932. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc
  8933. +--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc 2015-10-13 06:36:53.000000000 +0200
  8934. ++++ qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc 2016-02-12 18:00:56.359484236 +0100
  8935. +@@ -67,7 +67,7 @@
  8936. + void NetworkConfigWatcherMacThread::Init() {
  8937. + // Disallow IO to make sure NetworkConfigWatcherMacThread's helper thread does
  8938. + // not perform blocking operations.
  8939. +- base::ThreadRestrictions::SetIOAllowed(false);
  8940. ++ base::ThreadRestrictions::SetIOAllowed(true);
  8941. +
  8942. + delegate_->Init();
  8943. +
  8944. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc
  8945. +--- qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc 2015-10-13 06:36:53.000000000 +0200
  8946. ++++ qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc 2016-02-12 18:02:24.724514006 +0100
  8947. +@@ -463,7 +463,7 @@
  8948. + base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
  8949. + net::TestCompletionCallback cb;
  8950. +
  8951. +- bool prev = base::ThreadRestrictions::SetIOAllowed(false);
  8952. ++ bool prev = base::ThreadRestrictions::SetIOAllowed(true);
  8953. + scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl(
  8954. + cache_path_, cache_thread.task_runner(), NULL));
  8955. + int rv = cache->Init(cb.callback());
  8956. +@@ -1972,7 +1972,7 @@
  8957. + base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
  8958. +
  8959. + net::TestCompletionCallback cb;
  8960. +- bool prev = base::ThreadRestrictions::SetIOAllowed(false);
  8961. ++ bool prev = base::ThreadRestrictions::SetIOAllowed(true);
  8962. + base::FilePath path(cache_path_);
  8963. + int rv = disk_cache::CreateCacheBackend(net::DISK_CACHE,
  8964. + net::CACHE_BACKEND_BLOCKFILE,
  8965. +diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/core/gl_surface_qt.cpp qt5_b/src/core/gl_surface_qt.cpp
  8966. +--- qt5webengine-5.5.1/src/core/gl_surface_qt.cpp 2015-10-13 06:36:54.000000000 +0200
  8967. ++++ qt5_b/src/core/gl_surface_qt.cpp 2016-02-14 11:38:43.661776602 +0100
  8968. +@@ -513,15 +513,20 @@
  8969. + return NULL;
  8970. + #endif
  8971. + }
  8972. +- case kGLImplementationEGLGLES2: {
  8973. ++ case kGLImplementationEGLGLES2: {
  8974. + scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
  8975. + if (!surface->Initialize())
  8976. + return NULL;
  8977. + return surface;
  8978. + }
  8979. +- default:
  8980. +- Q_UNREACHABLE();
  8981. +- return NULL;
  8982. ++ default: {
  8983. ++ scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
  8984. ++ if (!surface->Initialize())
  8985. ++ return NULL;
  8986. ++ return surface;
  8987. ++ }
  8988. ++// Q_UNREACHABLE();
  8989. ++// return NULL;
  8990. + }
  8991. + }
  8992. +
  8993. diff --git a/package/qt5/qt5webengine/qt5webengine.__hash b/package/qt5/qt5webengine/qt5webengine.__hash
  8994. new file mode 100644
  8995. index 0000000..b5ecd88
  8996. --- /dev/null
  8997. +++ b/package/qt5/qt5webengine/qt5webengine.__hash
  8998. @@ -0,0 +1,2 @@
  8999. +# Hash from: http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/qtwebengine-opensource-src-5.5.1.tar.xz.mirrorlist
  9000. +sha256 7c4d328dd305991aaf0c3450615f4a8e5d80152194bee6f5925bd8d3477e2b90 qtwebengine-opensource-src-5.5.1.tar.xz
  9001. diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
  9002. new file mode 100644
  9003. index 0000000..98c67a6
  9004. --- /dev/null
  9005. +++ b/package/qt5/qt5webengine/qt5webengine.mk
  9006. @@ -0,0 +1,70 @@
  9007. +################################################################################
  9008. +#
  9009. +# qt5webengine
  9010. +#
  9011. +################################################################################
  9012. +
  9013. +QT5WEBENGINE_VERSION = $(QT5_VERSION)
  9014. +QT5WEBENGINE_SITE = $(QT5_SITE)
  9015. +QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz
  9016. +QT5WEBENGINE_DEPENDENCIES = qt5base qt5declarative qt5webchannel libcap openssl host-gperf
  9017. +QT5WEBENGINE_INSTALL_STAGING = YES
  9018. +
  9019. +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
  9020. +QT5WEBENGINE_LICENSE = GPLv3 with exception or LGPLv3 or GPLv2
  9021. +# Source files contain references to LGPL_EXCEPTION.txt but it is not included
  9022. +# in the archive.
  9023. +QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.GPLv3 LICENSE.LGPL3
  9024. +else
  9025. +QT5WEBENGINE_LICENSE = Commercial license
  9026. +QT5WEBENGINE_REDISTRIBUTE = NO
  9027. +endif
  9028. +
  9029. +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
  9030. +QT5WEBENGINE_DEPENDENCIES += qt5declarative
  9031. +endif
  9032. +
  9033. +define QT5WEBENGINE_CONFIGURE_CMDS
  9034. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake WEBENGINE_CONFIG+=use_proprietary_codecs)
  9035. +endef
  9036. +
  9037. +define QT5WEBENGINE_BUILD_CMDS
  9038. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  9039. +endef
  9040. +
  9041. +define QT5WEBENGINE_INSTALL_STAGING_CMDS
  9042. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  9043. + $(QT5_LA_PRL_FILES_FIXUP)
  9044. +endef
  9045. +
  9046. +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
  9047. +define QT5WEBENGINE_INSTALL_TARGET_QMLS
  9048. + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
  9049. +endef
  9050. +endif
  9051. +
  9052. +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)
  9053. +define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES
  9054. + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/
  9055. +endef
  9056. +endif
  9057. +
  9058. +ifneq ($(BR2_STATIC_LIBS),y)
  9059. +define QT5WEBENGINE_INSTALL_TARGET_LIBS
  9060. + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
  9061. + #cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/qtwebengine $(TARGET_DIR)/usr/lib/qt/plugins/
  9062. + cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/
  9063. + mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales
  9064. + cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales/* $(TARGET_DIR)/usr/translations/qtwebengine_locales/
  9065. + mkdir -p $(TARGET_DIR)/usr/resources
  9066. + cp -dpfr $(STAGING_DIR)/usr/resources/* $(TARGET_DIR)/usr/resources/
  9067. +endef
  9068. +endif
  9069. +
  9070. +define QT5WEBENGINE_INSTALL_TARGET_CMDS
  9071. + $(QT5WEBENGINE_INSTALL_TARGET_LIBS)
  9072. + $(QT5WEBENGINE_INSTALL_TARGET_QMLS)
  9073. + $(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES)
  9074. +endef
  9075. +
  9076. +$(eval $(generic-package))
  9077. diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
  9078. new file mode 100644
  9079. index 0000000..b7b6791
  9080. --- /dev/null
  9081. +++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
  9082. @@ -0,0 +1,34 @@
  9083. +From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
  9084. +From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
  9085. +Date: Mon, 22 Feb 2016 10:57:32 +0100
  9086. +Subject: [PATCH] Fix linking with libpthread
  9087. +
  9088. +WebKit use libpthread directly but is depending on other qt modules
  9089. +causing it to be linked against, which might break unless -lpthread
  9090. +is last. Instead just add it explicitly after the static libraries.
  9091. +
  9092. +Upstream-Status: Backport from 5.7 branch
  9093. +
  9094. +Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
  9095. +Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
  9096. +Signed-off-by: Jonathan Liu <net147@gmail.com>
  9097. +Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
  9098. +---
  9099. + Tools/qmake/mkspecs/features/default_post.prf | 1 +
  9100. + 1 file changed, 1 insertion(+)
  9101. +
  9102. +diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
  9103. +index 67276b7..39bb3f7 100644
  9104. +--- a/Tools/qmake/mkspecs/features/default_post.prf
  9105. ++++ b/Tools/qmake/mkspecs/features/default_post.prf
  9106. +@@ -201,6 +201,7 @@ needToLink() {
  9107. + linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
  9108. + LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
  9109. + }
  9110. ++ posix:!darwin: LIBS += -lpthread
  9111. + }
  9112. +
  9113. + creating_module {
  9114. +--
  9115. +2.7.1
  9116. +
  9117. diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
  9118. index 48aaf94..7add5f9 100644
  9119. --- a/package/qt5/qt5webkit/Config.in
  9120. +++ b/package/qt5/qt5webkit/Config.in
  9121. @@ -23,6 +23,6 @@ config BR2_PACKAGE_QT5WEBKIT
  9122. http://qt.io
  9123. comment "qt5webkit needs a toolchain w/ dynamic library"
  9124. - depends on BR2_STATIC_LIBS
  9125. - depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  9126. - depends on !BR2_BINFMT_FLAT
  9127. + depends on BR2_STATIC_LIBS
  9128. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
  9129. + depends on !BR2_BINFMT_FLAT
  9130. diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
  9131. index 96b8bdd..47e93c0 100644
  9132. --- a/package/qt5/qt5webkit/qt5webkit.hash
  9133. +++ b/package/qt5/qt5webkit/qt5webkit.hash
  9134. @@ -1,2 +1 @@
  9135. -# locally computed
  9136. -sha256 bdd659573e7e75cd4ad57b7160a7353d98d21a6fef06e4fb9e114a5b1f1e9dab qt5webkit-b35917bcb44d7f200af0f4ac68a126fa0aa8d93d.tar.gz
  9137. +sha256 1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
  9138. diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
  9139. index 378cdf7..629e40a 100644
  9140. --- a/package/qt5/qt5webkit/qt5webkit.mk
  9141. +++ b/package/qt5/qt5webkit/qt5webkit.mk
  9142. @@ -4,13 +4,11 @@
  9143. #
  9144. ################################################################################
  9145. -QT5WEBKIT_VERSION = b35917bcb44d7f200af0f4ac68a126fa0aa8d93d
  9146. +QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
  9147. # Using GitHub since it supports downloading tarballs from random commits.
  9148. # The http://code.qt.io/cgit/qt/qtwebkit.git/ repo doesn't allow to do so.
  9149. QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
  9150. -QT5WEBKIT_DEPENDENCIES = \
  9151. - host-bison host-flex host-gperf host-python host-ruby \
  9152. - qt5base sqlite
  9153. +QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
  9154. QT5WEBKIT_INSTALL_STAGING = YES
  9155. QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
  9156. @@ -33,16 +31,6 @@ ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
  9157. QT5WEBKIT_DEPENDENCIES += qt5declarative
  9158. endif
  9159. -# QtWebkit's build system uses python, but only supports python2. We work
  9160. -# around this by forcing python2 early in the PATH, via a python->python2
  9161. -# symlink.
  9162. -QT5WEBKIT_ENV = PATH=$(@D)/host-bin:$(BR_PATH)
  9163. -define QT5WEBKIT_PYTHON2_SYMLINK
  9164. - mkdir -p $(@D)/host-bin
  9165. - ln -sf $(HOST_DIR)/usr/bin/python2 $(@D)/host-bin/python
  9166. -endef
  9167. -QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
  9168. -
  9169. # Since we get the source from git, generated header files are not included.
  9170. # qmake detects that header file generation (using the syncqt tool) must be
  9171. # done based on the existence of a .git directory (cfr. the git_build config
  9172. @@ -51,15 +39,15 @@ QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
  9173. # create an empty .git directory.
  9174. define QT5WEBKIT_CONFIGURE_CMDS
  9175. mkdir -p $(@D)/.git
  9176. - (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/usr/bin/qmake)
  9177. + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
  9178. endef
  9179. define QT5WEBKIT_BUILD_CMDS
  9180. - $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D)
  9181. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
  9182. endef
  9183. define QT5WEBKIT_INSTALL_STAGING_CMDS
  9184. - $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D) install
  9185. + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
  9186. $(QT5_LA_PRL_FILES_FIXUP)
  9187. endef
  9188. diff --git a/package/qt5/qt5websockets/qt5websockets.hash b/package/qt5/qt5websockets/qt5websockets.hash
  9189. index 3443476..067bd6f 100644
  9190. --- a/package/qt5/qt5websockets/qt5websockets.hash
  9191. +++ b/package/qt5/qt5websockets/qt5websockets.hash
  9192. @@ -1,2 +1 @@
  9193. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebsockets-opensource-src-5.6.2.tar.xz.mirrorlist
  9194. -sha256 3cd9d4bbff8e6be5e252f00fc9ecb9ac2d8a193020288c7d1e82583daeb5ba35 qtwebsockets-opensource-src-5.6.2.tar.xz
  9195. +sha256 741be11a907f82807a786e6a53ae7316c0b3864491b692e8719c381e0f158b43 qtwebsockets-opensource-src-5.7.0.tar.xz
  9196. diff --git a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
  9197. index fa4e97f..f0f369d 100644
  9198. --- a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
  9199. +++ b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
  9200. @@ -1,2 +1 @@
  9201. -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtxmlpatterns-opensource-src-5.6.2.tar.xz.mirrorlist
  9202. -sha256 7c6df3eebf188d8ce6822a22cebbc63da5ac27047cf1bd7236d5b988244782cc qtxmlpatterns-opensource-src-5.6.2.tar.xz
  9203. +sha256 38882a4ea5d711be07d10695759359045f7f9d64727a65e1d5e6515d55c7e20b qtxmlpatterns-opensource-src-5.7.0.tar.xz
  9204. diff --git a/package/ti-gfx/S80ti-gfx b/package/ti-gfx/S80ti-gfx
  9205. index fc5999a..a204815 100644
  9206. --- a/package/ti-gfx/S80ti-gfx
  9207. +++ b/package/ti-gfx/S80ti-gfx
  9208. @@ -3,6 +3,8 @@
  9209. start() {
  9210. echo "ti-gfx: starting pvr driver"
  9211. + TMPFB=`mktemp`
  9212. + cat /dev/fb0 > $TMPFB
  9213. BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')"
  9214. YRES="$(fbset | awk '/geom/ {print $3}')"
  9215. # Set RGBA ordering to something the drivers like
  9216. @@ -22,6 +24,14 @@ start() {
  9217. mknod /dev/pvrsrvkm c $pvr_maj 0
  9218. chmod 600 /dev/pvrsrvkm
  9219. + #-- cursor off
  9220. + echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty0
  9221. + # -- disa screensaver
  9222. + echo 0 > /sys/class/graphics/fb0/blank
  9223. +
  9224. + cat $TMPFB > /dev/fb0
  9225. + rm $TMPFB
  9226. +
  9227. if ! /usr/bin/pvrsrvctl --start --no-module; then
  9228. echo "ti-gfx: unable to start server"
  9229. fi
  9230. diff --git a/package/ti-gfx/powervr.ini b/package/ti-gfx/powervr.ini
  9231. index 8d2d853..cceecdd 100644
  9232. --- a/package/ti-gfx/powervr.ini
  9233. +++ b/package/ti-gfx/powervr.ini
  9234. @@ -1,2 +1,4 @@
  9235. [default]
  9236. -WindowSystem=libpvrPVR2D_FRONTWSEGL.so
  9237. +#WindowSystem=libpvrPVR2D_FRONTWSEGL.so
  9238. +WindowSystem=libpvrPVR2D_FLIPWSEGL.so
  9239. +ParamBufferSize=16777216
  9240. diff --git a/package/ti-sgx-km/ti-sgx-km.mk b/package/ti-sgx-km/ti-sgx-km.mk
  9241. index 48c8a6d..05e1cca 100644
  9242. --- a/package/ti-sgx-km/ti-sgx-km.mk
  9243. +++ b/package/ti-sgx-km/ti-sgx-km.mk
  9244. @@ -5,7 +5,8 @@
  9245. ################################################################################
  9246. # This correpsonds to SDK 02.00.00.00
  9247. -TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
  9248. +#TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
  9249. +TI_SGX_KM_VERSION = remotes/origin/ti-img-sgx/1.14.3699939/k4.4
  9250. TI_SGX_KM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-linux.git
  9251. TI_SGX_KM_LICENSE = GPLv2
  9252. TI_SGX_KM_LICENSE_FILES = GPL-COPYING
  9253. @@ -18,7 +19,7 @@ TI_SGX_KM_MAKE_OPTS = \
  9254. PVR_NULLDRM=1
  9255. ifeq ($(BR2_PACKAGE_TI_SGX_AM335X),y)
  9256. -TI_SGX_KM_PLATFORM_NAME = omap335x
  9257. +TI_SGX_KM_PLATFORM_NAME = omap
  9258. else ifeq ($(BR2_PACKAGE_TI_SGX_AM437X),y)
  9259. TI_SGX_KM_PLATFORM_NAME = omap437x
  9260. else ifeq ($(BR2_PACKAGE_TI_SGX_AM4430),y)
  9261. @@ -38,6 +39,8 @@ define TI_SGX_KM_INSTALL_TARGET_CMDS
  9262. $(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \
  9263. DISCIMAGE=$(TARGET_DIR) \
  9264. kbuild_install -C $(@D)/$(TI_SGX_KM_SUBDIR)
  9265. + echo ">>>>>>>>>"
  9266. + sleep 10
  9267. endef
  9268. $(eval $(generic-package))
  9269. diff --git a/package/ti-sgx-um/ti-sgx-um.mk b/package/ti-sgx-um/ti-sgx-um.mk
  9270. index d5c50a0..76a7663 100644
  9271. --- a/package/ti-sgx-um/ti-sgx-um.mk
  9272. +++ b/package/ti-sgx-um/ti-sgx-um.mk
  9273. @@ -6,6 +6,7 @@
  9274. # This correpsonds to SDK 02.00.00.00
  9275. TI_SGX_UM_VERSION = e15f1543bab4de9e8927a2c4934addf3fd16ffcb
  9276. +#TI_SGX_UM_VERSION = glsdk_7.04.00.03
  9277. TI_SGX_UM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git
  9278. TI_SGX_UM_LICENSE = TI TSPA License
  9279. TI_SGX_UM_LICENSE_FILES = OMAP5-Linux-Graphics-DDK-UM-Manifest.doc
  9280. diff --git a/package/tinc/tinc.hash b/package/tinc/tinc.hash
  9281. index 0cccbbf..ca0ff41 100644
  9282. --- a/package/tinc/tinc.hash
  9283. +++ b/package/tinc/tinc.hash
  9284. @@ -1,2 +1,2 @@
  9285. # Locally calculated after checking pgp signature
  9286. -sha256 0b502699360f09ce2128a39cf02abca07bfc699fc02ce829b3a90cf5e1e8b344 tinc-1.0.28.tar.gz
  9287. +sha256 d3cbc82e6e07975a2ccc0b369d07e30fc3324e71e240dca8781ce9a4f629519b tinc-1.0.31.tar.gz
  9288. diff --git a/package/tinc/tinc.mk b/package/tinc/tinc.mk
  9289. index fb15c34..3cc05fa 100644
  9290. --- a/package/tinc/tinc.mk
  9291. +++ b/package/tinc/tinc.mk
  9292. @@ -4,7 +4,7 @@
  9293. #
  9294. ################################################################################
  9295. -TINC_VERSION = 1.0.28
  9296. +TINC_VERSION = 1.0.31
  9297. TINC_SITE = http://www.tinc-vpn.org/packages
  9298. TINC_DEPENDENCIES = lzo openssl zlib
  9299. TINC_LICENSE = GPLv2+ with OpenSSL exception
  9300. --
  9301. 2.7.4