500-avr32.patch 1.6 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178301793018030181301823018330184301853018630187301883018930190301913019230193301943019530196301973019830199302003020130202302033020430205302063020730208302093021030211302123021330214302153021630217302183021930220302213022230223302243022530226302273022830229302303023130232302333023430235302363023730238302393024030241302423024330244302453024630247302483024930250302513025230253302543025530256302573025830259302603026130262302633026430265302663026730268302693027030271302723027330274302753027630277302783027930280302813028230283302843028530286302873028830289302903029130292302933029430295302963029730298302993030030301303023030330304303053030630307303083030930310303113031230313303143031530316303173031830319303203032130322303233032430325303263032730328303293033030331303323033330334303353033630337303383033930340303413034230343303443034530346303473034830349303503035130352303533035430355303563035730358303593036030361303623036330364303653036630367303683036930370303713037230373303743037530376303773037830379303803038130382303833038430385303863038730388303893039030391303923039330394303953039630397303983039930400304013040230403304043040530406304073040830409304103041130412304133041430415304163041730418304193042030421304223042330424304253042630427304283042930430304313043230433304343043530436304373043830439304403044130442304433044430445304463044730448304493045030451304523045330454304553045630457304583045930460304613046230463304643046530466304673046830469304703047130472304733047430475304763047730478304793048030481304823048330484304853048630487304883048930490304913049230493304943049530496304973049830499305003050130502305033050430505305063050730508305093051030511305123051330514305153051630517305183051930520305213052230523305243052530526305273052830529305303053130532305333053430535305363053730538305393054030541305423054330544305453054630547305483054930550305513055230553305543055530556305573055830559305603056130562305633056430565305663056730568305693057030571305723057330574305753057630577305783057930580305813058230583305843058530586305873058830589305903059130592305933059430595305963059730598305993060030601306023060330604306053060630607306083060930610306113061230613306143061530616306173061830619306203062130622306233062430625306263062730628306293063030631306323063330634306353063630637306383063930640306413064230643306443064530646306473064830649306503065130652306533065430655306563065730658306593066030661306623066330664306653066630667306683066930670306713067230673306743067530676306773067830679306803068130682306833068430685306863068730688306893069030691306923069330694306953069630697306983069930700307013070230703307043070530706307073070830709307103071130712307133071430715307163071730718307193072030721307223072330724307253072630727307283072930730307313073230733307343073530736307373073830739307403074130742307433074430745307463074730748307493075030751307523075330754307553075630757307583075930760307613076230763307643076530766307673076830769307703077130772307733077430775307763077730778307793078030781307823078330784307853078630787307883078930790307913079230793307943079530796307973079830799308003080130802308033080430805308063080730808308093081030811308123081330814308153081630817308183081930820308213082230823308243082530826308273082830829308303083130832308333083430835308363083730838308393084030841308423084330844308453084630847308483084930850308513085230853308543085530856308573085830859308603086130862308633086430865308663086730868308693087030871308723087330874308753087630877308783087930880308813088230883308843088530886308873088830889308903089130892308933089430895308963089730898308993090030901309023090330904309053090630907309083090930910309113091230913309143091530916309173091830919309203092130922309233092430925309263092730928309293093030931309323093330934309353093630937309383093930940309413094230943309443094530946309473094830949309503095130952309533095430955309563095730958309593096030961309623096330964309653096630967309683096930970309713097230973309743097530976309773097830979309803098130982309833098430985309863098730988309893099030991309923099330994309953099630997309983099931000310013100231003310043100531006310073100831009310103101131012310133101431015310163101731018310193102031021310223102331024310253102631027310283102931030310313103231033310343103531036310373103831039310403104131042310433104431045310463104731048310493105031051310523105331054310553105631057310583105931060310613106231063310643106531066310673106831069310703107131072310733107431075310763107731078310793108031081310823108331084310853108631087310883108931090310913109231093310943109531096310973109831099311003110131102311033110431105311063110731108311093111031111311123111331114311153111631117311183111931120311213112231123311243112531126311273112831129311303113131132311333113431135311363113731138311393114031141311423114331144311453114631147311483114931150311513115231153311543115531156311573115831159311603116131162311633116431165311663116731168311693117031171311723117331174311753117631177311783117931180311813118231183311843118531186311873118831189311903119131192311933119431195311963119731198311993120031201312023120331204312053120631207312083120931210312113121231213312143121531216312173121831219312203122131222312233122431225312263122731228312293123031231312323123331234312353123631237312383123931240312413124231243312443124531246312473124831249312503125131252312533125431255312563125731258312593126031261312623126331264312653126631267312683126931270312713127231273312743127531276312773127831279312803128131282312833128431285312863128731288312893129031291312923129331294312953129631297312983129931300313013130231303313043130531306313073130831309313103131131312313133131431315313163131731318313193132031321313223132331324313253132631327313283132931330313313133231333313343133531336313373133831339313403134131342313433134431345313463134731348313493135031351313523135331354313553135631357313583135931360313613136231363313643136531366313673136831369313703137131372313733137431375313763137731378313793138031381313823138331384313853138631387313883138931390313913139231393313943139531396313973139831399314003140131402314033140431405314063140731408314093141031411314123141331414314153141631417314183141931420314213142231423314243142531426314273142831429314303143131432314333143431435314363143731438314393144031441314423144331444314453144631447314483144931450314513145231453314543145531456314573145831459314603146131462314633146431465314663146731468314693147031471314723147331474314753147631477314783147931480314813148231483314843148531486314873148831489314903149131492314933149431495314963149731498314993150031501315023150331504315053150631507315083150931510315113151231513315143151531516315173151831519315203152131522315233152431525315263152731528315293153031531315323153331534315353153631537315383153931540315413154231543315443154531546315473154831549315503155131552315533155431555315563155731558315593156031561315623156331564315653156631567315683156931570315713157231573315743157531576315773157831579315803158131582315833158431585315863158731588315893159031591315923159331594315953159631597315983159931600316013160231603316043160531606316073160831609316103161131612316133161431615316163161731618316193162031621316223162331624316253162631627316283162931630316313163231633316343163531636316373163831639316403164131642316433164431645316463164731648316493165031651316523165331654316553165631657316583165931660316613166231663316643166531666316673166831669316703167131672316733167431675316763167731678316793168031681316823168331684316853168631687316883168931690316913169231693316943169531696316973169831699317003170131702317033170431705317063170731708317093171031711317123171331714317153171631717317183171931720317213172231723317243172531726317273172831729317303173131732317333173431735317363173731738317393174031741317423174331744317453174631747317483174931750317513175231753317543175531756317573175831759317603176131762317633176431765317663176731768317693177031771317723177331774317753177631777317783177931780317813178231783317843178531786317873178831789317903179131792317933179431795317963179731798317993180031801318023180331804318053180631807318083180931810318113181231813318143181531816318173181831819318203182131822318233182431825318263182731828318293183031831318323183331834318353183631837318383183931840318413184231843318443184531846318473184831849318503185131852318533185431855318563185731858318593186031861318623186331864318653186631867318683186931870318713187231873318743187531876318773187831879318803188131882318833188431885318863188731888318893189031891318923189331894318953189631897318983189931900319013190231903319043190531906319073190831909319103191131912319133191431915319163191731918319193192031921319223192331924319253192631927319283192931930319313193231933319343193531936319373193831939319403194131942319433194431945319463194731948319493195031951319523195331954319553195631957319583195931960319613196231963319643196531966319673196831969319703197131972319733197431975319763197731978319793198031981319823198331984319853198631987319883198931990319913199231993319943199531996319973199831999320003200132002320033200432005320063200732008320093201032011320123201332014320153201632017320183201932020320213202232023320243202532026320273202832029320303203132032320333203432035320363203732038320393204032041320423204332044320453204632047320483204932050320513205232053320543205532056320573205832059320603206132062320633206432065320663206732068320693207032071320723207332074320753207632077320783207932080320813208232083320843208532086320873208832089320903209132092320933209432095320963209732098320993210032101321023210332104321053210632107321083210932110321113211232113321143211532116321173211832119321203212132122321233212432125321263212732128321293213032131321323213332134321353213632137321383213932140321413214232143321443214532146321473214832149321503215132152321533215432155321563215732158321593216032161321623216332164321653216632167321683216932170321713217232173321743217532176321773217832179321803218132182321833218432185321863218732188321893219032191321923219332194321953219632197321983219932200322013220232203322043220532206322073220832209322103221132212322133221432215322163221732218322193222032221322223222332224322253222632227322283222932230322313223232233322343223532236322373223832239322403224132242322433224432245322463224732248322493225032251322523225332254322553225632257322583225932260322613226232263322643226532266322673226832269322703227132272322733227432275322763227732278322793228032281322823228332284322853228632287322883228932290322913229232293322943229532296322973229832299323003230132302323033230432305323063230732308323093231032311323123231332314323153231632317323183231932320323213232232323323243232532326323273232832329323303233132332323333233432335323363233732338323393234032341323423234332344323453234632347323483234932350323513235232353323543235532356323573235832359323603236132362323633236432365323663236732368323693237032371323723237332374323753237632377323783237932380323813238232383323843238532386323873238832389323903239132392323933239432395323963239732398323993240032401324023240332404324053240632407324083240932410324113241232413324143241532416324173241832419324203242132422324233242432425324263242732428324293243032431324323243332434324353243632437324383243932440324413244232443324443244532446324473244832449324503245132452324533245432455324563245732458324593246032461324623246332464324653246632467324683246932470324713247232473324743247532476324773247832479324803248132482324833248432485324863248732488324893249032491324923249332494324953249632497324983249932500325013250232503325043250532506325073250832509325103251132512325133251432515325163251732518325193252032521325223252332524325253252632527325283252932530325313253232533325343253532536325373253832539325403254132542325433254432545325463254732548325493255032551325523255332554325553255632557325583255932560325613256232563325643256532566325673256832569325703257132572325733257432575325763257732578325793258032581325823258332584325853258632587325883258932590325913259232593325943259532596325973259832599326003260132602326033260432605326063260732608326093261032611326123261332614326153261632617326183261932620326213262232623326243262532626326273262832629326303263132632326333263432635326363263732638326393264032641326423264332644326453264632647326483264932650326513265232653326543265532656326573265832659326603266132662326633266432665326663266732668326693267032671326723267332674326753267632677326783267932680326813268232683326843268532686326873268832689326903269132692326933269432695326963269732698326993270032701327023270332704327053270632707327083270932710327113271232713327143271532716327173271832719327203272132722327233272432725327263272732728327293273032731327323273332734327353273632737327383273932740327413274232743327443274532746327473274832749327503275132752327533275432755327563275732758327593276032761327623276332764327653276632767327683276932770327713277232773327743277532776327773277832779327803278132782327833278432785327863278732788327893279032791327923279332794327953279632797327983279932800328013280232803328043280532806328073280832809328103281132812328133281432815328163281732818328193282032821328223282332824328253282632827328283282932830328313283232833328343283532836328373283832839328403284132842328433284432845328463284732848328493285032851328523285332854328553285632857328583285932860328613286232863328643286532866328673286832869328703287132872328733287432875328763287732878328793288032881328823288332884328853288632887328883288932890328913289232893328943289532896328973289832899329003290132902329033290432905329063290732908329093291032911329123291332914329153291632917329183291932920329213292232923329243292532926329273292832929329303293132932329333293432935329363293732938329393294032941329423294332944329453294632947329483294932950329513295232953329543295532956329573295832959329603296132962329633296432965329663296732968329693297032971329723297332974329753297632977329783297932980329813298232983329843298532986329873298832989329903299132992329933299432995329963299732998329993300033001330023300333004330053300633007330083300933010330113301233013330143301533016330173301833019330203302133022330233302433025330263302733028330293303033031330323303333034330353303633037330383303933040330413304233043330443304533046330473304833049330503305133052330533305433055330563305733058330593306033061330623306333064330653306633067330683306933070330713307233073330743307533076330773307833079330803308133082330833308433085330863308733088330893309033091330923309333094330953309633097330983309933100331013310233103331043310533106331073310833109331103311133112331133311433115331163311733118331193312033121331223312333124331253312633127331283312933130331313313233133331343313533136331373313833139331403314133142331433314433145331463314733148331493315033151331523315333154331553315633157331583315933160331613316233163331643316533166331673316833169331703317133172331733317433175331763317733178331793318033181331823318333184331853318633187331883318933190331913319233193331943319533196331973319833199332003320133202332033320433205332063320733208332093321033211332123321333214332153321633217332183321933220332213322233223332243322533226332273322833229332303323133232332333323433235332363323733238332393324033241332423324333244332453324633247332483324933250332513325233253332543325533256332573325833259332603326133262332633326433265332663326733268332693327033271332723327333274332753327633277332783327933280332813328233283332843328533286332873328833289332903329133292332933329433295332963329733298332993330033301333023330333304333053330633307333083330933310333113331233313333143331533316333173331833319333203332133322333233332433325333263332733328333293333033331333323333333334333353333633337333383333933340333413334233343333443334533346333473334833349333503335133352333533335433355333563335733358333593336033361333623336333364333653336633367333683336933370333713337233373333743337533376333773337833379333803338133382333833338433385333863338733388333893339033391333923339333394333953339633397333983339933400334013340233403334043340533406334073340833409334103341133412334133341433415334163341733418334193342033421334223342333424334253342633427334283342933430334313343233433334343343533436334373343833439334403344133442334433344433445334463344733448334493345033451334523345333454334553345633457334583345933460334613346233463334643346533466334673346833469334703347133472334733347433475334763347733478334793348033481334823348333484334853348633487334883348933490334913349233493334943349533496334973349833499335003350133502335033350433505335063350733508335093351033511335123351333514335153351633517335183351933520335213352233523335243352533526335273352833529335303353133532335333353433535335363353733538335393354033541335423354333544335453354633547335483354933550335513355233553335543355533556335573355833559335603356133562335633356433565335663356733568335693357033571335723357333574335753357633577335783357933580335813358233583335843358533586335873358833589335903359133592335933359433595335963359733598335993360033601336023360333604336053360633607336083360933610336113361233613336143361533616336173361833619336203362133622336233362433625336263362733628336293363033631336323363333634336353363633637336383363933640336413364233643336443364533646336473364833649336503365133652336533365433655336563365733658336593366033661336623366333664336653366633667336683366933670336713367233673336743367533676336773367833679336803368133682336833368433685336863368733688336893369033691336923369333694336953369633697336983369933700337013370233703337043370533706337073370833709337103371133712337133371433715337163371733718337193372033721337223372333724337253372633727337283372933730337313373233733337343373533736337373373833739337403374133742337433374433745337463374733748337493375033751337523375333754337553375633757337583375933760337613376233763337643376533766337673376833769337703377133772337733377433775337763377733778337793378033781337823378333784337853378633787337883378933790337913379233793337943379533796337973379833799338003380133802338033380433805338063380733808338093381033811338123381333814338153381633817338183381933820338213382233823338243382533826338273382833829338303383133832338333383433835338363383733838338393384033841338423384333844338453384633847338483384933850338513385233853338543385533856338573385833859338603386133862338633386433865338663386733868338693387033871338723387333874338753387633877338783387933880338813388233883338843388533886338873388833889338903389133892338933389433895338963389733898338993390033901339023390333904339053390633907339083390933910339113391233913339143391533916339173391833919339203392133922339233392433925339263392733928339293393033931339323393333934339353393633937339383393933940339413394233943339443394533946339473394833949339503395133952339533395433955339563395733958339593396033961339623396333964339653396633967339683396933970339713397233973339743397533976339773397833979339803398133982339833398433985339863398733988339893399033991339923399333994339953399633997339983399934000340013400234003340043400534006340073400834009340103401134012340133401434015340163401734018340193402034021340223402334024340253402634027340283402934030340313403234033340343403534036340373403834039340403404134042340433404434045340463404734048340493405034051340523405334054340553405634057340583405934060340613406234063340643406534066340673406834069340703407134072340733407434075340763407734078340793408034081340823408334084340853408634087340883408934090340913409234093340943409534096340973409834099341003410134102341033410434105341063410734108341093411034111341123411334114341153411634117341183411934120341213412234123341243412534126341273412834129341303413134132341333413434135341363413734138341393414034141341423414334144341453414634147341483414934150341513415234153341543415534156341573415834159341603416134162341633416434165341663416734168341693417034171341723417334174341753417634177341783417934180341813418234183341843418534186341873418834189341903419134192341933419434195341963419734198341993420034201342023420334204342053420634207342083420934210342113421234213342143421534216342173421834219342203422134222342233422434225342263422734228342293423034231342323423334234342353423634237342383423934240342413424234243342443424534246342473424834249342503425134252342533425434255342563425734258342593426034261342623426334264342653426634267342683426934270342713427234273342743427534276342773427834279342803428134282342833428434285342863428734288342893429034291342923429334294342953429634297342983429934300343013430234303343043430534306343073430834309343103431134312343133431434315343163431734318343193432034321343223432334324343253432634327343283432934330343313433234333343343433534336343373433834339343403434134342343433434434345343463434734348343493435034351343523435334354343553435634357343583435934360343613436234363343643436534366343673436834369343703437134372343733437434375343763437734378343793438034381343823438334384343853438634387343883438934390343913439234393343943439534396343973439834399344003440134402344033440434405344063440734408344093441034411344123441334414344153441634417344183441934420344213442234423344243442534426344273442834429344303443134432344333443434435344363443734438344393444034441344423444334444344453444634447344483444934450344513445234453344543445534456344573445834459344603446134462344633446434465344663446734468344693447034471344723447334474344753447634477344783447934480344813448234483344843448534486344873448834489344903449134492344933449434495344963449734498344993450034501345023450334504345053450634507345083450934510345113451234513345143451534516345173451834519345203452134522345233452434525345263452734528345293453034531345323453334534345353453634537345383453934540345413454234543345443454534546345473454834549345503455134552345533455434555345563455734558345593456034561345623456334564345653456634567345683456934570345713457234573345743457534576345773457834579345803458134582345833458434585345863458734588345893459034591345923459334594345953459634597345983459934600346013460234603346043460534606346073460834609346103461134612346133461434615346163461734618346193462034621346223462334624346253462634627346283462934630346313463234633346343463534636346373463834639346403464134642346433464434645346463464734648346493465034651346523465334654346553465634657346583465934660346613466234663346643466534666346673466834669346703467134672346733467434675346763467734678346793468034681346823468334684346853468634687346883468934690346913469234693346943469534696346973469834699347003470134702347033470434705347063470734708347093471034711347123471334714347153471634717347183471934720347213472234723347243472534726347273472834729347303473134732347333473434735347363473734738347393474034741347423474334744347453474634747347483474934750347513475234753347543475534756347573475834759347603476134762347633476434765347663476734768347693477034771347723477334774347753477634777347783477934780347813478234783347843478534786347873478834789347903479134792347933479434795347963479734798347993480034801348023480334804348053480634807348083480934810348113481234813348143481534816348173481834819348203482134822348233482434825348263482734828348293483034831348323483334834348353483634837348383483934840348413484234843348443484534846348473484834849348503485134852348533485434855348563485734858348593486034861348623486334864348653486634867348683486934870348713487234873348743487534876348773487834879348803488134882348833488434885348863488734888348893489034891348923489334894348953489634897348983489934900349013490234903349043490534906349073490834909349103491134912349133491434915349163491734918349193492034921349223492334924349253492634927349283492934930349313493234933349343493534936349373493834939349403494134942349433494434945349463494734948349493495034951349523495334954349553495634957349583495934960349613496234963349643496534966349673496834969349703497134972349733497434975349763497734978349793498034981349823498334984349853498634987349883498934990349913499234993349943499534996349973499834999350003500135002350033500435005350063500735008350093501035011350123501335014350153501635017350183501935020350213502235023350243502535026350273502835029350303503135032350333503435035350363503735038350393504035041350423504335044350453504635047350483504935050350513505235053350543505535056350573505835059350603506135062350633506435065350663506735068350693507035071350723507335074350753507635077350783507935080350813508235083350843508535086350873508835089350903509135092350933509435095350963509735098350993510035101351023510335104351053510635107351083510935110351113511235113351143511535116351173511835119351203512135122351233512435125351263512735128351293513035131351323513335134351353513635137351383513935140351413514235143351443514535146351473514835149351503515135152351533515435155351563515735158351593516035161351623516335164351653516635167351683516935170351713517235173351743517535176351773517835179351803518135182351833518435185351863518735188351893519035191351923519335194351953519635197351983519935200352013520235203352043520535206352073520835209352103521135212352133521435215352163521735218352193522035221352223522335224352253522635227352283522935230352313523235233352343523535236352373523835239352403524135242352433524435245352463524735248352493525035251352523525335254352553525635257352583525935260352613526235263352643526535266352673526835269352703527135272352733527435275352763527735278352793528035281352823528335284352853528635287352883528935290352913529235293352943529535296352973529835299353003530135302353033530435305353063530735308353093531035311353123531335314353153531635317353183531935320353213532235323353243532535326353273532835329353303533135332353333533435335353363533735338353393534035341353423534335344353453534635347353483534935350353513535235353353543535535356353573535835359353603536135362353633536435365353663536735368353693537035371353723537335374353753537635377353783537935380353813538235383353843538535386353873538835389353903539135392353933539435395353963539735398353993540035401354023540335404354053540635407354083540935410354113541235413354143541535416354173541835419354203542135422354233542435425354263542735428354293543035431354323543335434354353543635437354383543935440354413544235443354443544535446354473544835449354503545135452354533545435455354563545735458354593546035461354623546335464354653546635467354683546935470354713547235473354743547535476354773547835479354803548135482354833548435485354863548735488354893549035491354923549335494354953549635497354983549935500355013550235503355043550535506355073550835509355103551135512355133551435515355163551735518355193552035521355223552335524355253552635527355283552935530355313553235533355343553535536355373553835539355403554135542355433554435545355463554735548355493555035551355523555335554355553555635557355583555935560355613556235563355643556535566355673556835569355703557135572355733557435575355763557735578355793558035581355823558335584355853558635587355883558935590355913559235593355943559535596355973559835599356003560135602356033560435605356063560735608356093561035611356123561335614356153561635617356183561935620356213562235623356243562535626356273562835629356303563135632356333563435635356363563735638356393564035641356423564335644356453564635647356483564935650356513565235653356543565535656356573565835659356603566135662356633566435665356663566735668356693567035671356723567335674356753567635677356783567935680356813568235683356843568535686356873568835689356903569135692356933569435695356963569735698356993570035701357023570335704357053570635707357083570935710357113571235713357143571535716357173571835719357203572135722357233572435725357263572735728357293573035731357323573335734357353573635737357383573935740357413574235743357443574535746357473574835749357503575135752357533575435755357563575735758357593576035761357623576335764357653576635767357683576935770357713577235773357743577535776357773577835779357803578135782357833578435785357863578735788357893579035791357923579335794357953579635797357983579935800358013580235803358043580535806358073580835809358103581135812358133581435815358163581735818358193582035821358223582335824358253582635827358283582935830358313583235833358343583535836358373583835839358403584135842358433584435845358463584735848358493585035851358523585335854358553585635857358583585935860358613586235863358643586535866358673586835869358703587135872358733587435875358763587735878358793588035881358823588335884358853588635887358883588935890358913589235893358943589535896358973589835899359003590135902359033590435905359063590735908359093591035911359123591335914359153591635917359183591935920359213592235923359243592535926359273592835929359303593135932359333593435935359363593735938359393594035941359423594335944359453594635947359483594935950359513595235953359543595535956359573595835959359603596135962359633596435965359663596735968359693597035971359723597335974359753597635977359783597935980359813598235983359843598535986359873598835989359903599135992359933599435995359963599735998359993600036001360023600336004360053600636007360083600936010360113601236013360143601536016360173601836019360203602136022360233602436025360263602736028360293603036031360323603336034360353603636037360383603936040360413604236043360443604536046360473604836049360503605136052360533605436055360563605736058360593606036061360623606336064360653606636067360683606936070360713607236073360743607536076360773607836079360803608136082360833608436085360863608736088360893609036091360923609336094360953609636097360983609936100361013610236103361043610536106361073610836109361103611136112361133611436115361163611736118361193612036121361223612336124361253612636127361283612936130361313613236133361343613536136361373613836139361403614136142361433614436145361463614736148361493615036151361523615336154361553615636157361583615936160361613616236163361643616536166361673616836169361703617136172361733617436175361763617736178361793618036181361823618336184361853618636187361883618936190361913619236193361943619536196361973619836199362003620136202362033620436205362063620736208362093621036211362123621336214362153621636217362183621936220362213622236223362243622536226362273622836229362303623136232362333623436235362363623736238362393624036241362423624336244362453624636247362483624936250362513625236253362543625536256362573625836259362603626136262362633626436265362663626736268362693627036271362723627336274362753627636277362783627936280362813628236283362843628536286362873628836289362903629136292362933629436295362963629736298362993630036301363023630336304363053630636307363083630936310363113631236313363143631536316363173631836319363203632136322363233632436325363263632736328363293633036331363323633336334363353633636337363383633936340363413634236343363443634536346363473634836349363503635136352363533635436355363563635736358363593636036361363623636336364363653636636367363683636936370363713637236373363743637536376363773637836379363803638136382363833638436385363863638736388363893639036391363923639336394363953639636397363983639936400364013640236403364043640536406364073640836409364103641136412364133641436415364163641736418364193642036421364223642336424364253642636427364283642936430364313643236433364343643536436364373643836439364403644136442364433644436445364463644736448364493645036451364523645336454364553645636457364583645936460364613646236463364643646536466364673646836469364703647136472364733647436475364763647736478364793648036481364823648336484364853648636487364883648936490364913649236493364943649536496364973649836499365003650136502365033650436505365063650736508365093651036511365123651336514365153651636517365183651936520365213652236523365243652536526365273652836529365303653136532365333653436535365363653736538365393654036541365423654336544365453654636547365483654936550365513655236553365543655536556365573655836559365603656136562365633656436565365663656736568365693657036571365723657336574365753657636577365783657936580365813658236583365843658536586365873658836589365903659136592365933659436595365963659736598365993660036601366023660336604366053660636607366083660936610366113661236613366143661536616366173661836619366203662136622366233662436625366263662736628366293663036631366323663336634366353663636637366383663936640366413664236643366443664536646366473664836649366503665136652366533665436655366563665736658366593666036661366623666336664366653666636667366683666936670366713667236673366743667536676366773667836679366803668136682366833668436685366863668736688366893669036691366923669336694366953669636697366983669936700367013670236703367043670536706367073670836709367103671136712367133671436715367163671736718367193672036721367223672336724367253672636727367283672936730367313673236733367343673536736367373673836739367403674136742367433674436745367463674736748367493675036751367523675336754367553675636757367583675936760367613676236763367643676536766367673676836769367703677136772367733677436775367763677736778367793678036781367823678336784367853678636787367883678936790367913679236793367943679536796367973679836799368003680136802368033680436805368063680736808368093681036811368123681336814368153681636817368183681936820368213682236823368243682536826368273682836829368303683136832368333683436835368363683736838368393684036841368423684336844368453684636847368483684936850368513685236853368543685536856368573685836859368603686136862368633686436865368663686736868368693687036871368723687336874368753687636877368783687936880368813688236883368843688536886368873688836889368903689136892368933689436895368963689736898368993690036901369023690336904369053690636907369083690936910369113691236913369143691536916369173691836919369203692136922369233692436925369263692736928369293693036931369323693336934369353693636937369383693936940369413694236943369443694536946369473694836949369503695136952369533695436955369563695736958369593696036961369623696336964369653696636967369683696936970369713697236973369743697536976369773697836979369803698136982369833698436985369863698736988369893699036991369923699336994369953699636997369983699937000370013700237003370043700537006370073700837009370103701137012370133701437015370163701737018370193702037021370223702337024370253702637027370283702937030370313703237033370343703537036370373703837039370403704137042370433704437045370463704737048370493705037051370523705337054370553705637057370583705937060370613706237063370643706537066370673706837069370703707137072370733707437075370763707737078370793708037081370823708337084370853708637087370883708937090370913709237093370943709537096370973709837099371003710137102371033710437105371063710737108371093711037111371123711337114371153711637117371183711937120371213712237123371243712537126371273712837129371303713137132371333713437135371363713737138371393714037141371423714337144371453714637147371483714937150371513715237153371543715537156371573715837159371603716137162371633716437165371663716737168371693717037171371723717337174371753717637177371783717937180371813718237183371843718537186371873718837189371903719137192371933719437195371963719737198371993720037201372023720337204372053720637207372083720937210372113721237213372143721537216372173721837219372203722137222372233722437225372263722737228372293723037231372323723337234372353723637237372383723937240372413724237243372443724537246372473724837249372503725137252372533725437255372563725737258372593726037261372623726337264372653726637267372683726937270372713727237273372743727537276372773727837279372803728137282372833728437285372863728737288372893729037291372923729337294372953729637297372983729937300373013730237303373043730537306373073730837309373103731137312373133731437315373163731737318373193732037321373223732337324373253732637327373283732937330373313733237333373343733537336373373733837339373403734137342373433734437345373463734737348373493735037351373523735337354373553735637357373583735937360373613736237363373643736537366373673736837369373703737137372373733737437375373763737737378373793738037381373823738337384373853738637387373883738937390373913739237393373943739537396373973739837399374003740137402374033740437405374063740737408374093741037411374123741337414374153741637417374183741937420374213742237423374243742537426374273742837429374303743137432374333743437435374363743737438374393744037441374423744337444374453744637447374483744937450374513745237453374543745537456374573745837459374603746137462374633746437465374663746737468374693747037471374723747337474374753747637477374783747937480374813748237483374843748537486374873748837489374903749137492374933749437495374963749737498374993750037501375023750337504375053750637507375083750937510375113751237513375143751537516375173751837519375203752137522375233752437525375263752737528375293753037531375323753337534375353753637537375383753937540375413754237543375443754537546375473754837549375503755137552375533755437555375563755737558375593756037561375623756337564375653756637567375683756937570375713757237573375743757537576375773757837579375803758137582375833758437585375863758737588375893759037591375923759337594375953759637597375983759937600376013760237603376043760537606376073760837609376103761137612376133761437615376163761737618376193762037621376223762337624376253762637627376283762937630376313763237633376343763537636376373763837639376403764137642376433764437645376463764737648376493765037651376523765337654376553765637657376583765937660376613766237663376643766537666376673766837669376703767137672376733767437675376763767737678376793768037681376823768337684376853768637687376883768937690376913769237693376943769537696376973769837699377003770137702377033770437705377063770737708377093771037711377123771337714377153771637717377183771937720377213772237723377243772537726377273772837729377303773137732377333773437735377363773737738377393774037741377423774337744377453774637747377483774937750377513775237753377543775537756377573775837759377603776137762377633776437765377663776737768377693777037771377723777337774377753777637777377783777937780377813778237783377843778537786377873778837789377903779137792377933779437795377963779737798377993780037801378023780337804378053780637807378083780937810378113781237813378143781537816378173781837819378203782137822378233782437825378263782737828378293783037831378323783337834378353783637837378383783937840378413784237843378443784537846378473784837849378503785137852378533785437855378563785737858378593786037861378623786337864378653786637867378683786937870378713787237873378743787537876378773787837879378803788137882378833788437885378863788737888378893789037891378923789337894378953789637897378983789937900379013790237903379043790537906379073790837909379103791137912379133791437915379163791737918379193792037921379223792337924379253792637927379283792937930379313793237933379343793537936379373793837939379403794137942379433794437945379463794737948379493795037951379523795337954379553795637957379583795937960379613796237963379643796537966379673796837969379703797137972379733797437975379763797737978379793798037981379823798337984379853798637987379883798937990379913799237993379943799537996379973799837999380003800138002380033800438005380063800738008380093801038011380123801338014380153801638017380183801938020380213802238023380243802538026380273802838029380303803138032380333803438035380363803738038380393804038041380423804338044380453804638047380483804938050380513805238053380543805538056380573805838059380603806138062380633806438065380663806738068380693807038071380723807338074380753807638077380783807938080380813808238083380843808538086380873808838089380903809138092380933809438095380963809738098380993810038101381023810338104381053810638107381083810938110381113811238113381143811538116381173811838119381203812138122381233812438125381263812738128381293813038131381323813338134381353813638137381383813938140381413814238143381443814538146381473814838149381503815138152381533815438155381563815738158381593816038161381623816338164381653816638167381683816938170381713817238173381743817538176381773817838179381803818138182381833818438185381863818738188381893819038191381923819338194381953819638197381983819938200382013820238203382043820538206382073820838209382103821138212382133821438215382163821738218382193822038221382223822338224382253822638227382283822938230382313823238233382343823538236382373823838239382403824138242382433824438245382463824738248382493825038251382523825338254382553825638257382583825938260382613826238263382643826538266382673826838269382703827138272382733827438275382763827738278382793828038281382823828338284382853828638287382883828938290382913829238293382943829538296382973829838299383003830138302383033830438305383063830738308383093831038311383123831338314383153831638317383183831938320383213832238323383243832538326383273832838329383303833138332383333833438335383363833738338383393834038341383423834338344383453834638347383483834938350383513835238353383543835538356383573835838359383603836138362383633836438365383663836738368383693837038371383723837338374383753837638377383783837938380383813838238383383843838538386383873838838389383903839138392383933839438395383963839738398383993840038401384023840338404384053840638407384083840938410384113841238413384143841538416384173841838419384203842138422384233842438425384263842738428384293843038431384323843338434384353843638437384383843938440384413844238443384443844538446384473844838449384503845138452384533845438455384563845738458384593846038461384623846338464384653846638467384683846938470384713847238473384743847538476384773847838479384803848138482384833848438485384863848738488384893849038491384923849338494384953849638497384983849938500385013850238503385043850538506385073850838509385103851138512385133851438515385163851738518385193852038521385223852338524385253852638527385283852938530385313853238533385343853538536385373853838539385403854138542385433854438545385463854738548385493855038551385523855338554385553855638557385583855938560385613856238563385643856538566385673856838569385703857138572385733857438575385763857738578385793858038581385823858338584385853858638587385883858938590385913859238593385943859538596385973859838599386003860138602386033860438605386063860738608386093861038611386123861338614386153861638617386183861938620386213862238623386243862538626386273862838629386303863138632386333863438635386363863738638386393864038641386423864338644386453864638647386483864938650386513865238653386543865538656386573865838659386603866138662386633866438665386663866738668386693867038671386723867338674386753867638677386783867938680386813868238683386843868538686386873868838689386903869138692386933869438695386963869738698386993870038701387023870338704387053870638707387083870938710387113871238713387143871538716387173871838719387203872138722387233872438725387263872738728387293873038731387323873338734387353873638737387383873938740387413874238743387443874538746387473874838749387503875138752387533875438755387563875738758387593876038761387623876338764387653876638767387683876938770387713877238773387743877538776387773877838779387803878138782387833878438785387863878738788387893879038791387923879338794387953879638797387983879938800388013880238803388043880538806388073880838809388103881138812388133881438815388163881738818388193882038821388223882338824388253882638827388283882938830388313883238833388343883538836388373883838839388403884138842388433884438845388463884738848388493885038851388523885338854388553885638857388583885938860388613886238863388643886538866388673886838869388703887138872388733887438875388763887738878388793888038881388823888338884388853888638887388883888938890388913889238893388943889538896388973889838899389003890138902389033890438905389063890738908389093891038911389123891338914389153891638917389183891938920389213892238923389243892538926389273892838929389303893138932389333893438935389363893738938389393894038941389423894338944389453894638947389483894938950389513895238953389543895538956389573895838959389603896138962389633896438965389663896738968389693897038971389723897338974389753897638977389783897938980389813898238983389843898538986389873898838989389903899138992389933899438995389963899738998389993900039001390023900339004390053900639007390083900939010390113901239013390143901539016390173901839019390203902139022390233902439025390263902739028390293903039031390323903339034390353903639037390383903939040390413904239043390443904539046390473904839049390503905139052390533905439055390563905739058390593906039061390623906339064390653906639067390683906939070390713907239073390743907539076390773907839079390803908139082390833908439085390863908739088390893909039091390923909339094390953909639097390983909939100391013910239103391043910539106391073910839109391103911139112391133911439115391163911739118391193912039121391223912339124391253912639127391283912939130391313913239133391343913539136391373913839139391403914139142391433914439145391463914739148391493915039151391523915339154391553915639157391583915939160391613916239163391643916539166391673916839169391703917139172391733917439175391763917739178391793918039181391823918339184391853918639187391883918939190391913919239193391943919539196391973919839199392003920139202392033920439205392063920739208392093921039211392123921339214392153921639217392183921939220392213922239223392243922539226392273922839229392303923139232392333923439235392363923739238392393924039241392423924339244392453924639247392483924939250392513925239253392543925539256392573925839259392603926139262392633926439265392663926739268392693927039271392723927339274392753927639277392783927939280392813928239283392843928539286392873928839289392903929139292392933929439295392963929739298392993930039301393023930339304393053930639307393083930939310393113931239313393143931539316393173931839319393203932139322393233932439325393263932739328393293933039331393323933339334393353933639337393383933939340393413934239343393443934539346393473934839349393503935139352393533935439355393563935739358393593936039361393623936339364393653936639367393683936939370393713937239373393743937539376393773937839379393803938139382393833938439385393863938739388393893939039391393923939339394393953939639397393983939939400394013940239403394043940539406394073940839409394103941139412394133941439415394163941739418394193942039421394223942339424394253942639427394283942939430394313943239433394343943539436394373943839439394403944139442394433944439445394463944739448394493945039451394523945339454394553945639457394583945939460394613946239463394643946539466394673946839469394703947139472394733947439475394763947739478394793948039481394823948339484394853948639487394883948939490394913949239493394943949539496394973949839499395003950139502395033950439505395063950739508395093951039511395123951339514395153951639517395183951939520395213952239523395243952539526395273952839529395303953139532395333953439535395363953739538395393954039541395423954339544395453954639547395483954939550395513955239553395543955539556395573955839559395603956139562395633956439565395663956739568395693957039571395723957339574395753957639577395783957939580395813958239583395843958539586395873958839589395903959139592395933959439595395963959739598395993960039601396023960339604396053960639607396083960939610396113961239613396143961539616396173961839619396203962139622396233962439625396263962739628396293963039631396323963339634396353963639637396383963939640396413964239643396443964539646396473964839649396503965139652396533965439655396563965739658396593966039661396623966339664396653966639667396683966939670396713967239673396743967539676396773967839679396803968139682396833968439685396863968739688396893969039691396923969339694396953969639697396983969939700397013970239703397043970539706397073970839709397103971139712397133971439715397163971739718397193972039721397223972339724397253972639727397283972939730397313973239733397343973539736397373973839739397403974139742397433974439745397463974739748397493975039751397523975339754397553975639757397583975939760397613976239763397643976539766397673976839769397703977139772397733977439775397763977739778397793978039781397823978339784397853978639787397883978939790397913979239793397943979539796397973979839799398003980139802398033980439805398063980739808398093981039811398123981339814398153981639817398183981939820398213982239823398243982539826398273982839829398303983139832398333983439835398363983739838398393984039841398423984339844398453984639847398483984939850398513985239853398543985539856398573985839859398603986139862398633986439865398663986739868398693987039871398723987339874398753987639877398783987939880398813988239883398843988539886398873988839889398903989139892398933989439895398963989739898398993990039901399023990339904399053990639907399083990939910399113991239913399143991539916399173991839919399203992139922399233992439925399263992739928399293993039931399323993339934399353993639937399383993939940399413994239943399443994539946399473994839949399503995139952399533995439955399563995739958399593996039961399623996339964399653996639967399683996939970399713997239973399743997539976399773997839979399803998139982399833998439985399863998739988399893999039991399923999339994399953999639997399983999940000400014000240003400044000540006400074000840009400104001140012400134001440015400164001740018400194002040021400224002340024400254002640027400284002940030400314003240033400344003540036400374003840039400404004140042400434004440045400464004740048400494005040051400524005340054400554005640057400584005940060400614006240063400644006540066400674006840069400704007140072400734007440075400764007740078400794008040081400824008340084400854008640087400884008940090400914009240093400944009540096400974009840099401004010140102401034010440105401064010740108401094011040111401124011340114401154011640117401184011940120401214012240123401244012540126401274012840129401304013140132401334013440135401364013740138401394014040141401424014340144401454014640147401484014940150401514015240153401544015540156401574015840159401604016140162401634016440165401664016740168401694017040171401724017340174401754017640177401784017940180401814018240183401844018540186401874018840189401904019140192401934019440195401964019740198401994020040201402024020340204402054020640207402084020940210402114021240213402144021540216402174021840219402204022140222402234022440225402264022740228402294023040231402324023340234402354023640237402384023940240402414024240243402444024540246402474024840249402504025140252402534025440255402564025740258402594026040261402624026340264402654026640267402684026940270402714027240273402744027540276402774027840279402804028140282402834028440285402864028740288402894029040291402924029340294402954029640297402984029940300403014030240303403044030540306403074030840309403104031140312403134031440315403164031740318403194032040321403224032340324403254032640327403284032940330403314033240333403344033540336403374033840339403404034140342403434034440345403464034740348403494035040351403524035340354403554035640357403584035940360403614036240363403644036540366403674036840369403704037140372403734037440375403764037740378403794038040381403824038340384403854038640387403884038940390403914039240393403944039540396403974039840399404004040140402404034040440405404064040740408404094041040411404124041340414404154041640417404184041940420404214042240423404244042540426404274042840429404304043140432404334043440435404364043740438404394044040441404424044340444404454044640447404484044940450404514045240453404544045540456404574045840459404604046140462404634046440465404664046740468404694047040471404724047340474404754047640477404784047940480404814048240483404844048540486404874048840489404904049140492404934049440495404964049740498404994050040501405024050340504405054050640507405084050940510405114051240513405144051540516405174051840519405204052140522405234052440525405264052740528405294053040531405324053340534405354053640537405384053940540405414054240543405444054540546405474054840549405504055140552405534055440555405564055740558405594056040561405624056340564405654056640567405684056940570405714057240573405744057540576405774057840579405804058140582405834058440585405864058740588405894059040591405924059340594405954059640597405984059940600406014060240603406044060540606406074060840609406104061140612406134061440615406164061740618406194062040621406224062340624406254062640627406284062940630406314063240633406344063540636406374063840639406404064140642406434064440645406464064740648406494065040651406524065340654406554065640657406584065940660406614066240663406644066540666406674066840669406704067140672406734067440675406764067740678406794068040681406824068340684406854068640687406884068940690406914069240693406944069540696406974069840699407004070140702407034070440705407064070740708407094071040711407124071340714407154071640717407184071940720407214072240723407244072540726407274072840729407304073140732407334073440735407364073740738407394074040741407424074340744407454074640747407484074940750407514075240753407544075540756407574075840759407604076140762407634076440765407664076740768407694077040771407724077340774407754077640777407784077940780407814078240783407844078540786407874078840789407904079140792407934079440795407964079740798407994080040801408024080340804408054080640807408084080940810408114081240813408144081540816408174081840819408204082140822408234082440825408264082740828408294083040831408324083340834408354083640837408384083940840408414084240843408444084540846408474084840849408504085140852408534085440855408564085740858408594086040861408624086340864408654086640867408684086940870408714087240873408744087540876408774087840879408804088140882408834088440885408864088740888408894089040891408924089340894408954089640897408984089940900409014090240903409044090540906409074090840909409104091140912409134091440915409164091740918409194092040921409224092340924409254092640927409284092940930409314093240933409344093540936409374093840939409404094140942409434094440945409464094740948409494095040951409524095340954409554095640957409584095940960409614096240963409644096540966409674096840969409704097140972409734097440975409764097740978409794098040981409824098340984409854098640987409884098940990409914099240993409944099540996409974099840999410004100141002410034100441005410064100741008410094101041011410124101341014410154101641017410184101941020410214102241023410244102541026410274102841029410304103141032410334103441035410364103741038410394104041041410424104341044410454104641047410484104941050410514105241053410544105541056410574105841059410604106141062410634106441065410664106741068410694107041071410724107341074410754107641077410784107941080410814108241083410844108541086410874108841089410904109141092410934109441095410964109741098410994110041101411024110341104411054110641107411084110941110411114111241113411144111541116411174111841119411204112141122411234112441125411264112741128411294113041131411324113341134411354113641137411384113941140411414114241143411444114541146411474114841149411504115141152411534115441155411564115741158411594116041161411624116341164411654116641167411684116941170411714117241173411744117541176411774117841179411804118141182411834118441185411864118741188411894119041191411924119341194411954119641197411984119941200412014120241203412044120541206412074120841209412104121141212412134121441215412164121741218412194122041221412224122341224412254122641227412284122941230412314123241233412344123541236412374123841239412404124141242412434124441245412464124741248412494125041251412524125341254412554125641257412584125941260412614126241263412644126541266412674126841269412704127141272412734127441275412764127741278412794128041281412824128341284412854128641287412884128941290412914129241293412944129541296412974129841299413004130141302413034130441305413064130741308413094131041311413124131341314413154131641317413184131941320413214132241323413244132541326413274132841329413304133141332413334133441335413364133741338413394134041341413424134341344413454134641347413484134941350413514135241353413544135541356413574135841359413604136141362413634136441365413664136741368413694137041371413724137341374413754137641377413784137941380413814138241383413844138541386413874138841389413904139141392413934139441395413964139741398413994140041401414024140341404414054140641407414084140941410414114141241413414144141541416414174141841419414204142141422414234142441425414264142741428414294143041431414324143341434414354143641437414384143941440414414144241443414444144541446414474144841449414504145141452414534145441455414564145741458414594146041461414624146341464414654146641467414684146941470414714147241473414744147541476414774147841479414804148141482414834148441485414864148741488414894149041491414924149341494414954149641497414984149941500415014150241503415044150541506415074150841509415104151141512415134151441515415164151741518415194152041521415224152341524415254152641527415284152941530415314153241533415344153541536415374153841539415404154141542415434154441545415464154741548415494155041551415524155341554415554155641557415584155941560415614156241563415644156541566415674156841569415704157141572415734157441575415764157741578415794158041581415824158341584415854158641587415884158941590415914159241593415944159541596415974159841599416004160141602416034160441605416064160741608416094161041611416124161341614416154161641617416184161941620416214162241623416244162541626416274162841629416304163141632416334163441635416364163741638416394164041641416424164341644416454164641647416484164941650416514165241653416544165541656416574165841659416604166141662416634166441665416664166741668416694167041671416724167341674416754167641677416784167941680416814168241683416844168541686416874168841689416904169141692416934169441695416964169741698416994170041701417024170341704417054170641707417084170941710417114171241713417144171541716417174171841719417204172141722417234172441725417264172741728417294173041731417324173341734417354173641737417384173941740417414174241743417444174541746417474174841749417504175141752417534175441755417564175741758417594176041761417624176341764417654176641767417684176941770417714177241773417744177541776417774177841779417804178141782417834178441785417864178741788417894179041791417924179341794417954179641797417984179941800418014180241803418044180541806418074180841809418104181141812418134181441815418164181741818418194182041821418224182341824418254182641827418284182941830418314183241833418344183541836418374183841839418404184141842418434184441845418464184741848418494185041851418524185341854418554185641857418584185941860418614186241863418644186541866418674186841869418704187141872418734187441875418764187741878418794188041881418824188341884418854188641887418884188941890418914189241893418944189541896418974189841899419004190141902419034190441905419064190741908419094191041911419124191341914419154191641917419184191941920419214192241923419244192541926419274192841929419304193141932419334193441935419364193741938419394194041941419424194341944419454194641947419484194941950419514195241953419544195541956419574195841959419604196141962419634196441965419664196741968419694197041971419724197341974419754197641977419784197941980419814198241983419844198541986419874198841989419904199141992419934199441995419964199741998419994200042001420024200342004420054200642007420084200942010420114201242013420144201542016420174201842019420204202142022420234202442025420264202742028420294203042031420324203342034420354203642037420384203942040420414204242043420444204542046420474204842049420504205142052420534205442055420564205742058420594206042061420624206342064420654206642067420684206942070420714207242073420744207542076420774207842079420804208142082420834208442085420864208742088420894209042091420924209342094420954209642097420984209942100421014210242103421044210542106421074210842109421104211142112421134211442115421164211742118421194212042121421224212342124421254212642127421284212942130421314213242133421344213542136421374213842139421404214142142421434214442145421464214742148421494215042151421524215342154421554215642157421584215942160421614216242163421644216542166421674216842169421704217142172421734217442175421764217742178421794218042181421824218342184421854218642187421884218942190421914219242193421944219542196421974219842199422004220142202422034220442205422064220742208422094221042211422124221342214422154221642217422184221942220422214222242223422244222542226422274222842229422304223142232422334223442235422364223742238422394224042241422424224342244422454224642247422484224942250422514225242253422544225542256422574225842259422604226142262422634226442265422664226742268422694227042271422724227342274422754227642277422784227942280422814228242283422844228542286422874228842289422904229142292422934229442295422964229742298422994230042301423024230342304423054230642307423084230942310423114231242313423144231542316423174231842319423204232142322423234232442325423264232742328423294233042331423324233342334423354233642337423384233942340423414234242343423444234542346423474234842349423504235142352423534235442355423564235742358423594236042361423624236342364423654236642367423684236942370423714237242373423744237542376423774237842379423804238142382423834238442385423864238742388423894239042391423924239342394423954239642397423984239942400424014240242403424044240542406424074240842409424104241142412424134241442415424164241742418424194242042421424224242342424424254242642427424284242942430424314243242433424344243542436424374243842439424404244142442424434244442445424464244742448424494245042451424524245342454424554245642457424584245942460424614246242463424644246542466424674246842469424704247142472424734247442475424764247742478424794248042481424824248342484424854248642487424884248942490424914249242493424944249542496424974249842499425004250142502425034250442505425064250742508425094251042511425124251342514425154251642517425184251942520425214252242523425244252542526425274252842529425304253142532425334253442535425364253742538425394254042541425424254342544425454254642547425484254942550425514255242553425544255542556425574255842559425604256142562425634256442565425664256742568425694257042571425724257342574425754257642577425784257942580425814258242583425844258542586425874258842589425904259142592425934259442595425964259742598425994260042601426024260342604426054260642607426084260942610426114261242613426144261542616426174261842619426204262142622426234262442625426264262742628426294263042631426324263342634426354263642637426384263942640426414264242643426444264542646426474264842649426504265142652426534265442655426564265742658426594266042661426624266342664426654266642667426684266942670426714267242673426744267542676426774267842679426804268142682426834268442685426864268742688426894269042691426924269342694426954269642697426984269942700427014270242703427044270542706427074270842709427104271142712427134271442715427164271742718427194272042721427224272342724427254272642727427284272942730427314273242733427344273542736427374273842739427404274142742427434274442745427464274742748427494275042751427524275342754427554275642757427584275942760427614276242763427644276542766427674276842769427704277142772427734277442775427764277742778427794278042781427824278342784427854278642787427884278942790427914279242793427944279542796427974279842799428004280142802428034280442805428064280742808428094281042811428124281342814428154281642817428184281942820428214282242823428244282542826428274282842829428304283142832428334283442835428364283742838428394284042841428424284342844428454284642847428484284942850428514285242853428544285542856428574285842859428604286142862428634286442865428664286742868428694287042871428724287342874428754287642877428784287942880428814288242883428844288542886428874288842889428904289142892428934289442895428964289742898428994290042901429024290342904429054290642907429084290942910429114291242913429144291542916429174291842919429204292142922429234292442925429264292742928429294293042931429324293342934429354293642937429384293942940429414294242943429444294542946429474294842949429504295142952429534295442955429564295742958429594296042961429624296342964429654296642967429684296942970429714297242973429744297542976429774297842979429804298142982429834298442985429864298742988429894299042991429924299342994429954299642997429984299943000430014300243003430044300543006430074300843009430104301143012430134301443015430164301743018430194302043021430224302343024430254302643027430284302943030430314303243033430344303543036430374303843039430404304143042430434304443045430464304743048430494305043051430524305343054430554305643057430584305943060430614306243063430644306543066430674306843069430704307143072430734307443075430764307743078430794308043081430824308343084430854308643087430884308943090430914309243093430944309543096430974309843099431004310143102431034310443105431064310743108431094311043111431124311343114431154311643117431184311943120431214312243123431244312543126431274312843129431304313143132431334313443135431364313743138431394314043141431424314343144431454314643147431484314943150431514315243153431544315543156431574315843159431604316143162431634316443165431664316743168431694317043171431724317343174431754317643177431784317943180431814318243183431844318543186431874318843189431904319143192431934319443195431964319743198431994320043201432024320343204432054320643207432084320943210432114321243213432144321543216432174321843219432204322143222432234322443225432264322743228432294323043231432324323343234432354323643237432384323943240432414324243243432444324543246432474324843249432504325143252432534325443255432564325743258432594326043261432624326343264432654326643267432684326943270432714327243273432744327543276432774327843279432804328143282432834328443285432864328743288432894329043291432924329343294432954329643297432984329943300433014330243303433044330543306433074330843309433104331143312433134331443315433164331743318433194332043321433224332343324433254332643327433284332943330433314333243333433344333543336433374333843339433404334143342433434334443345433464334743348433494335043351433524335343354433554335643357433584335943360433614336243363433644336543366433674336843369433704337143372433734337443375433764337743378433794338043381433824338343384433854338643387433884338943390433914339243393433944339543396433974339843399434004340143402434034340443405434064340743408434094341043411434124341343414434154341643417434184341943420434214342243423434244342543426434274342843429434304343143432434334343443435434364343743438434394344043441434424344343444434454344643447434484344943450434514345243453434544345543456434574345843459434604346143462434634346443465434664346743468434694347043471434724347343474434754347643477434784347943480434814348243483434844348543486434874348843489434904349143492434934349443495434964349743498434994350043501435024350343504435054350643507435084350943510435114351243513435144351543516435174351843519435204352143522435234352443525435264352743528435294353043531435324353343534435354353643537435384353943540435414354243543435444354543546435474354843549435504355143552435534355443555435564355743558435594356043561435624356343564435654356643567435684356943570435714357243573435744357543576435774357843579435804358143582435834358443585435864358743588435894359043591435924359343594435954359643597435984359943600436014360243603436044360543606436074360843609436104361143612436134361443615436164361743618436194362043621436224362343624436254362643627436284362943630436314363243633436344363543636436374363843639436404364143642436434364443645436464364743648436494365043651436524365343654436554365643657436584365943660436614366243663436644366543666436674366843669436704367143672436734367443675436764367743678436794368043681436824368343684436854368643687436884368943690436914369243693436944369543696436974369843699437004370143702437034370443705437064370743708437094371043711437124371343714437154371643717437184371943720437214372243723437244372543726437274372843729437304373143732437334373443735437364373743738437394374043741437424374343744437454374643747437484374943750437514375243753437544375543756437574375843759437604376143762437634376443765437664376743768437694377043771437724377343774437754377643777437784377943780437814378243783437844378543786437874378843789437904379143792437934379443795437964379743798437994380043801438024380343804438054380643807438084380943810438114381243813438144381543816438174381843819438204382143822438234382443825438264382743828438294383043831438324383343834438354383643837438384383943840438414384243843438444384543846438474384843849438504385143852438534385443855438564385743858438594386043861438624386343864438654386643867438684386943870438714387243873438744387543876438774387843879438804388143882438834388443885438864388743888438894389043891438924389343894438954389643897438984389943900439014390243903439044390543906439074390843909439104391143912439134391443915439164391743918439194392043921439224392343924439254392643927439284392943930439314393243933439344393543936439374393843939439404394143942439434394443945439464394743948439494395043951439524395343954439554395643957439584395943960439614396243963439644396543966439674396843969439704397143972439734397443975439764397743978439794398043981439824398343984439854398643987439884398943990439914399243993439944399543996439974399843999440004400144002440034400444005440064400744008440094401044011440124401344014440154401644017440184401944020440214402244023440244402544026440274402844029440304403144032440334403444035440364403744038440394404044041440424404344044440454404644047440484404944050440514405244053440544405544056440574405844059440604406144062440634406444065440664406744068440694407044071440724407344074440754407644077440784407944080440814408244083440844408544086440874408844089440904409144092440934409444095440964409744098440994410044101441024410344104441054410644107441084410944110441114411244113441144411544116441174411844119441204412144122441234412444125441264412744128441294413044131441324413344134441354413644137441384413944140441414414244143441444414544146441474414844149441504415144152441534415444155441564415744158441594416044161441624416344164441654416644167441684416944170441714417244173441744417544176441774417844179441804418144182441834418444185441864418744188441894419044191441924419344194441954419644197441984419944200442014420244203442044420544206442074420844209442104421144212442134421444215442164421744218442194422044221442224422344224442254422644227442284422944230442314423244233442344423544236442374423844239442404424144242442434424444245442464424744248442494425044251442524425344254442554425644257442584425944260442614426244263442644426544266442674426844269442704427144272442734427444275442764427744278442794428044281442824428344284442854428644287442884428944290442914429244293442944429544296442974429844299443004430144302443034430444305443064430744308443094431044311443124431344314443154431644317443184431944320443214432244323443244432544326443274432844329443304433144332443334433444335443364433744338443394434044341443424434344344443454434644347443484434944350443514435244353443544435544356443574435844359443604436144362443634436444365443664436744368443694437044371443724437344374443754437644377443784437944380443814438244383443844438544386443874438844389443904439144392443934439444395443964439744398443994440044401444024440344404444054440644407444084440944410444114441244413444144441544416444174441844419444204442144422444234442444425444264442744428444294443044431444324443344434444354443644437444384443944440444414444244443444444444544446444474444844449444504445144452444534445444455444564445744458444594446044461444624446344464444654446644467444684446944470444714447244473444744447544476444774447844479444804448144482444834448444485444864448744488444894449044491444924449344494444954449644497444984449944500445014450244503445044450544506445074450844509445104451144512445134451444515445164451744518445194452044521445224452344524445254452644527445284452944530445314453244533445344453544536445374453844539445404454144542445434454444545445464454744548445494455044551445524455344554445554455644557445584455944560445614456244563445644456544566445674456844569445704457144572445734457444575445764457744578445794458044581445824458344584445854458644587445884458944590445914459244593445944459544596445974459844599446004460144602446034460444605446064460744608446094461044611446124461344614446154461644617446184461944620446214462244623446244462544626446274462844629446304463144632446334463444635446364463744638446394464044641446424464344644446454464644647446484464944650446514465244653446544465544656446574465844659446604466144662446634466444665446664466744668446694467044671446724467344674446754467644677446784467944680446814468244683446844468544686446874468844689446904469144692446934469444695446964469744698446994470044701447024470344704447054470644707447084470944710447114471244713447144471544716447174471844719447204472144722447234472444725447264472744728447294473044731447324473344734447354473644737447384473944740447414474244743447444474544746447474474844749447504475144752447534475444755447564475744758447594476044761447624476344764447654476644767447684476944770447714477244773447744477544776447774477844779447804478144782447834478444785447864478744788447894479044791447924479344794447954479644797447984479944800448014480244803448044480544806448074480844809448104481144812448134481444815448164481744818448194482044821448224482344824448254482644827448284482944830448314483244833448344483544836448374483844839448404484144842448434484444845448464484744848448494485044851448524485344854448554485644857448584485944860448614486244863448644486544866448674486844869448704487144872448734487444875448764487744878448794488044881448824488344884448854488644887448884488944890448914489244893448944489544896448974489844899449004490144902449034490444905449064490744908449094491044911449124491344914449154491644917449184491944920449214492244923449244492544926449274492844929449304493144932449334493444935449364493744938449394494044941449424494344944449454494644947449484494944950449514495244953449544495544956449574495844959449604496144962449634496444965449664496744968449694497044971449724497344974449754497644977449784497944980449814498244983449844498544986449874498844989449904499144992449934499444995449964499744998449994500045001450024500345004450054500645007450084500945010450114501245013450144501545016450174501845019450204502145022450234502445025450264502745028450294503045031450324503345034450354503645037450384503945040450414504245043450444504545046450474504845049450504505145052450534505445055450564505745058450594506045061450624506345064450654506645067450684506945070450714507245073450744507545076450774507845079450804508145082450834508445085450864508745088450894509045091450924509345094450954509645097450984509945100451014510245103451044510545106451074510845109451104511145112451134511445115451164511745118451194512045121451224512345124451254512645127451284512945130451314513245133451344513545136451374513845139451404514145142451434514445145451464514745148451494515045151451524515345154451554515645157451584515945160451614516245163451644516545166451674516845169451704517145172451734517445175451764517745178451794518045181451824518345184451854518645187451884518945190451914519245193451944519545196451974519845199452004520145202452034520445205452064520745208452094521045211452124521345214452154521645217452184521945220452214522245223452244522545226452274522845229452304523145232452334523445235452364523745238452394524045241452424524345244452454524645247452484524945250452514525245253452544525545256452574525845259452604526145262452634526445265452664526745268452694527045271452724527345274452754527645277452784527945280452814528245283452844528545286452874528845289452904529145292452934529445295452964529745298452994530045301453024530345304453054530645307453084530945310453114531245313453144531545316453174531845319453204532145322453234532445325453264532745328453294533045331453324533345334453354533645337453384533945340453414534245343453444534545346453474534845349453504535145352453534535445355453564535745358453594536045361453624536345364453654536645367453684536945370453714537245373453744537545376453774537845379453804538145382453834538445385453864538745388453894539045391453924539345394453954539645397453984539945400454014540245403454044540545406454074540845409454104541145412454134541445415454164541745418454194542045421454224542345424454254542645427454284542945430454314543245433454344543545436454374543845439454404544145442454434544445445454464544745448454494545045451454524545345454454554545645457454584545945460454614546245463454644546545466454674546845469454704547145472454734547445475454764547745478454794548045481454824548345484454854548645487454884548945490454914549245493454944549545496454974549845499455004550145502455034550445505455064550745508455094551045511455124551345514455154551645517455184551945520455214552245523455244552545526455274552845529455304553145532455334553445535455364553745538455394554045541455424554345544455454554645547455484554945550455514555245553455544555545556455574555845559455604556145562455634556445565455664556745568455694557045571455724557345574455754557645577455784557945580455814558245583455844558545586455874558845589455904559145592455934559445595455964559745598455994560045601456024560345604456054560645607456084560945610456114561245613456144561545616456174561845619456204562145622456234562445625456264562745628456294563045631456324563345634456354563645637456384563945640456414564245643456444564545646456474564845649456504565145652456534565445655456564565745658456594566045661456624566345664456654566645667456684566945670456714567245673456744567545676456774567845679456804568145682456834568445685456864568745688456894569045691456924569345694456954569645697456984569945700457014570245703457044570545706457074570845709457104571145712457134571445715457164571745718457194572045721457224572345724457254572645727457284572945730457314573245733457344573545736457374573845739457404574145742457434574445745457464574745748457494575045751457524575345754457554575645757457584575945760457614576245763457644576545766457674576845769457704577145772457734577445775457764577745778457794578045781457824578345784457854578645787457884578945790457914579245793457944579545796457974579845799458004580145802458034580445805458064580745808458094581045811458124581345814458154581645817458184581945820458214582245823458244582545826458274582845829458304583145832458334583445835458364583745838458394584045841458424584345844458454584645847458484584945850458514585245853458544585545856458574585845859458604586145862458634586445865458664586745868458694587045871458724587345874458754587645877458784587945880458814588245883458844588545886458874588845889458904589145892458934589445895458964589745898458994590045901459024590345904459054590645907459084590945910459114591245913459144591545916459174591845919459204592145922459234592445925459264592745928459294593045931459324593345934459354593645937459384593945940459414594245943459444594545946459474594845949459504595145952459534595445955459564595745958459594596045961459624596345964459654596645967459684596945970459714597245973459744597545976459774597845979459804598145982459834598445985459864598745988459894599045991459924599345994459954599645997459984599946000460014600246003460044600546006460074600846009460104601146012460134601446015460164601746018460194602046021460224602346024460254602646027460284602946030460314603246033460344603546036460374603846039460404604146042460434604446045460464604746048460494605046051460524605346054460554605646057460584605946060460614606246063460644606546066460674606846069460704607146072460734607446075460764607746078460794608046081460824608346084460854608646087460884608946090460914609246093460944609546096460974609846099461004610146102461034610446105461064610746108461094611046111461124611346114461154611646117461184611946120461214612246123461244612546126461274612846129461304613146132461334613446135461364613746138461394614046141461424614346144461454614646147461484614946150461514615246153461544615546156461574615846159461604616146162461634616446165461664616746168461694617046171461724617346174461754617646177461784617946180461814618246183461844618546186461874618846189461904619146192461934619446195461964619746198461994620046201462024620346204462054620646207462084620946210462114621246213462144621546216462174621846219462204622146222462234622446225462264622746228462294623046231462324623346234462354623646237462384623946240462414624246243462444624546246462474624846249462504625146252462534625446255462564625746258462594626046261462624626346264462654626646267462684626946270462714627246273462744627546276462774627846279462804628146282462834628446285462864628746288462894629046291462924629346294462954629646297462984629946300463014630246303463044630546306463074630846309463104631146312463134631446315463164631746318463194632046321463224632346324463254632646327463284632946330463314633246333463344633546336463374633846339463404634146342463434634446345463464634746348463494635046351463524635346354463554635646357463584635946360463614636246363463644636546366463674636846369463704637146372463734637446375463764637746378463794638046381463824638346384463854638646387463884638946390463914639246393463944639546396463974639846399464004640146402464034640446405464064640746408464094641046411464124641346414464154641646417464184641946420464214642246423464244642546426464274642846429464304643146432464334643446435464364643746438464394644046441464424644346444464454644646447464484644946450464514645246453464544645546456464574645846459464604646146462464634646446465464664646746468464694647046471464724647346474464754647646477464784647946480464814648246483464844648546486464874648846489464904649146492464934649446495464964649746498464994650046501465024650346504465054650646507465084650946510465114651246513465144651546516465174651846519465204652146522465234652446525465264652746528465294653046531465324653346534465354653646537465384653946540465414654246543465444654546546465474654846549465504655146552465534655446555465564655746558465594656046561465624656346564465654656646567465684656946570465714657246573465744657546576465774657846579465804658146582465834658446585465864658746588465894659046591465924659346594465954659646597465984659946600466014660246603466044660546606466074660846609466104661146612466134661446615466164661746618466194662046621466224662346624466254662646627466284662946630466314663246633466344663546636466374663846639466404664146642466434664446645466464664746648466494665046651466524665346654466554665646657466584665946660466614666246663466644666546666466674666846669466704667146672466734667446675466764667746678466794668046681466824668346684466854668646687466884668946690466914669246693466944669546696466974669846699467004670146702467034670446705467064670746708467094671046711467124671346714467154671646717467184671946720467214672246723467244672546726467274672846729467304673146732467334673446735467364673746738467394674046741467424674346744467454674646747467484674946750467514675246753467544675546756467574675846759467604676146762467634676446765467664676746768467694677046771467724677346774467754677646777467784677946780467814678246783467844678546786467874678846789467904679146792467934679446795467964679746798467994680046801468024680346804468054680646807468084680946810468114681246813468144681546816468174681846819468204682146822468234682446825468264682746828468294683046831468324683346834468354683646837468384683946840468414684246843468444684546846468474684846849468504685146852468534685446855468564685746858468594686046861468624686346864468654686646867468684686946870468714687246873468744687546876468774687846879468804688146882468834688446885468864688746888468894689046891468924689346894468954689646897468984689946900469014690246903469044690546906469074690846909469104691146912469134691446915469164691746918469194692046921469224692346924469254692646927469284692946930469314693246933469344693546936469374693846939469404694146942469434694446945469464694746948469494695046951469524695346954469554695646957469584695946960469614696246963469644696546966469674696846969469704697146972469734697446975469764697746978469794698046981469824698346984469854698646987469884698946990469914699246993469944699546996469974699846999470004700147002470034700447005470064700747008470094701047011470124701347014470154701647017470184701947020470214702247023470244702547026470274702847029470304703147032470334703447035470364703747038470394704047041470424704347044470454704647047470484704947050470514705247053470544705547056470574705847059470604706147062470634706447065470664706747068470694707047071470724707347074470754707647077470784707947080470814708247083470844708547086470874708847089470904709147092470934709447095470964709747098470994710047101471024710347104471054710647107471084710947110471114711247113471144711547116471174711847119471204712147122471234712447125471264712747128471294713047131471324713347134471354713647137471384713947140471414714247143471444714547146471474714847149471504715147152471534715447155471564715747158471594716047161471624716347164471654716647167471684716947170471714717247173471744717547176471774717847179471804718147182471834718447185471864718747188471894719047191471924719347194471954719647197471984719947200472014720247203472044720547206472074720847209472104721147212472134721447215472164721747218472194722047221472224722347224472254722647227472284722947230472314723247233472344723547236472374723847239472404724147242472434724447245472464724747248472494725047251472524725347254472554725647257472584725947260472614726247263472644726547266472674726847269472704727147272472734727447275472764727747278472794728047281472824728347284472854728647287472884728947290472914729247293472944729547296472974729847299473004730147302473034730447305473064730747308473094731047311473124731347314473154731647317473184731947320473214732247323473244732547326473274732847329473304733147332473334733447335473364733747338473394734047341473424734347344473454734647347473484734947350473514735247353473544735547356473574735847359473604736147362473634736447365473664736747368473694737047371473724737347374473754737647377473784737947380473814738247383473844738547386473874738847389473904739147392473934739447395473964739747398473994740047401474024740347404474054740647407474084740947410474114741247413474144741547416474174741847419474204742147422474234742447425474264742747428474294743047431474324743347434474354743647437474384743947440474414744247443474444744547446474474744847449474504745147452474534745447455474564745747458474594746047461474624746347464474654746647467474684746947470474714747247473474744747547476474774747847479474804748147482474834748447485474864748747488474894749047491474924749347494474954749647497474984749947500475014750247503475044750547506475074750847509475104751147512475134751447515475164751747518475194752047521475224752347524475254752647527475284752947530475314753247533475344753547536475374753847539475404754147542475434754447545475464754747548475494755047551475524755347554475554755647557475584755947560475614756247563475644756547566475674756847569475704757147572475734757447575475764757747578475794758047581475824758347584475854758647587475884758947590475914759247593475944759547596475974759847599476004760147602476034760447605476064760747608476094761047611476124761347614476154761647617476184761947620476214762247623476244762547626476274762847629476304763147632476334763447635476364763747638476394764047641476424764347644476454764647647476484764947650476514765247653476544765547656476574765847659476604766147662476634766447665476664766747668476694767047671476724767347674476754767647677476784767947680476814768247683476844768547686476874768847689476904769147692476934769447695476964769747698476994770047701477024770347704477054770647707477084770947710477114771247713477144771547716477174771847719477204772147722477234772447725477264772747728477294773047731477324773347734477354773647737477384773947740477414774247743477444774547746477474774847749477504775147752477534775447755477564775747758477594776047761477624776347764477654776647767477684776947770477714777247773477744777547776477774777847779477804778147782477834778447785477864778747788477894779047791477924779347794477954779647797477984779947800478014780247803478044780547806478074780847809478104781147812478134781447815478164781747818478194782047821478224782347824478254782647827478284782947830478314783247833478344783547836478374783847839478404784147842478434784447845478464784747848478494785047851478524785347854478554785647857478584785947860478614786247863478644786547866478674786847869478704787147872478734787447875478764787747878478794788047881478824788347884478854788647887478884788947890478914789247893478944789547896478974789847899479004790147902479034790447905479064790747908479094791047911479124791347914479154791647917479184791947920479214792247923479244792547926479274792847929479304793147932479334793447935479364793747938479394794047941479424794347944479454794647947479484794947950479514795247953479544795547956479574795847959479604796147962479634796447965479664796747968479694797047971479724797347974479754797647977479784797947980479814798247983479844798547986479874798847989479904799147992479934799447995479964799747998479994800048001480024800348004480054800648007480084800948010480114801248013480144801548016480174801848019480204802148022480234802448025480264802748028480294803048031480324803348034480354803648037480384803948040480414804248043480444804548046480474804848049480504805148052480534805448055480564805748058480594806048061480624806348064480654806648067480684806948070480714807248073480744807548076480774807848079480804808148082480834808448085480864808748088480894809048091480924809348094480954809648097480984809948100481014810248103481044810548106481074810848109481104811148112481134811448115481164811748118481194812048121481224812348124481254812648127481284812948130481314813248133481344813548136481374813848139481404814148142481434814448145481464814748148481494815048151481524815348154481554815648157481584815948160481614816248163481644816548166481674816848169481704817148172481734817448175481764817748178481794818048181481824818348184481854818648187481884818948190481914819248193481944819548196481974819848199482004820148202482034820448205482064820748208482094821048211482124821348214482154821648217482184821948220482214822248223482244822548226482274822848229482304823148232482334823448235482364823748238482394824048241482424824348244482454824648247482484824948250482514825248253482544825548256482574825848259482604826148262482634826448265482664826748268482694827048271482724827348274482754827648277482784827948280482814828248283482844828548286482874828848289482904829148292482934829448295482964829748298482994830048301483024830348304483054830648307483084830948310483114831248313483144831548316483174831848319483204832148322483234832448325483264832748328483294833048331483324833348334483354833648337483384833948340483414834248343483444834548346483474834848349483504835148352483534835448355483564835748358483594836048361483624836348364483654836648367483684836948370483714837248373483744837548376483774837848379483804838148382483834838448385483864838748388483894839048391483924839348394483954839648397483984839948400484014840248403484044840548406484074840848409484104841148412484134841448415484164841748418484194842048421484224842348424484254842648427484284842948430484314843248433484344843548436484374843848439484404844148442484434844448445484464844748448484494845048451484524845348454484554845648457484584845948460484614846248463484644846548466484674846848469484704847148472484734847448475484764847748478484794848048481484824848348484484854848648487484884848948490484914849248493484944849548496484974849848499485004850148502485034850448505485064850748508485094851048511485124851348514485154851648517485184851948520485214852248523485244852548526485274852848529485304853148532485334853448535485364853748538485394854048541485424854348544485454854648547485484854948550485514855248553485544855548556485574855848559485604856148562485634856448565485664856748568485694857048571485724857348574485754857648577485784857948580485814858248583485844858548586485874858848589485904859148592485934859448595485964859748598485994860048601486024860348604486054860648607486084860948610486114861248613486144861548616486174861848619486204862148622486234862448625486264862748628486294863048631486324863348634486354863648637486384863948640486414864248643486444864548646486474864848649486504865148652486534865448655486564865748658486594866048661486624866348664486654866648667486684866948670486714867248673486744867548676486774867848679486804868148682486834868448685486864868748688486894869048691486924869348694486954869648697486984869948700487014870248703487044870548706487074870848709487104871148712487134871448715487164871748718487194872048721487224872348724487254872648727487284872948730487314873248733487344873548736487374873848739487404874148742487434874448745487464874748748487494875048751487524875348754487554875648757487584875948760487614876248763487644876548766487674876848769487704877148772487734877448775487764877748778487794878048781487824878348784487854878648787487884878948790487914879248793487944879548796487974879848799488004880148802488034880448805488064880748808488094881048811488124881348814488154881648817488184881948820488214882248823488244882548826488274882848829488304883148832488334883448835488364883748838488394884048841488424884348844488454884648847488484884948850488514885248853488544885548856488574885848859488604886148862488634886448865488664886748868488694887048871488724887348874488754887648877488784887948880488814888248883488844888548886488874888848889488904889148892488934889448895488964889748898488994890048901489024890348904489054890648907489084890948910489114891248913489144891548916489174891848919489204892148922489234892448925489264892748928489294893048931489324893348934489354893648937489384893948940489414894248943489444894548946489474894848949489504895148952489534895448955489564895748958489594896048961489624896348964489654896648967489684896948970489714897248973489744897548976489774897848979489804898148982489834898448985489864898748988489894899048991489924899348994489954899648997489984899949000490014900249003490044900549006490074900849009490104901149012490134901449015490164901749018490194902049021490224902349024490254902649027490284902949030490314903249033490344903549036490374903849039490404904149042490434904449045490464904749048490494905049051490524905349054490554905649057490584905949060490614906249063490644906549066490674906849069490704907149072490734907449075490764907749078490794908049081490824908349084490854908649087490884908949090490914909249093490944909549096490974909849099491004910149102491034910449105491064910749108491094911049111491124911349114491154911649117491184911949120491214912249123491244912549126491274912849129491304913149132491334913449135491364913749138491394914049141491424914349144491454914649147491484914949150491514915249153491544915549156491574915849159491604916149162491634916449165491664916749168491694917049171491724917349174491754917649177491784917949180491814918249183491844918549186491874918849189491904919149192491934919449195491964919749198491994920049201492024920349204492054920649207492084920949210492114921249213492144921549216492174921849219492204922149222492234922449225492264922749228492294923049231492324923349234492354923649237492384923949240492414924249243492444924549246492474924849249492504925149252492534925449255492564925749258492594926049261492624926349264492654926649267492684926949270492714927249273492744927549276492774927849279492804928149282492834928449285492864928749288492894929049291492924929349294492954929649297492984929949300493014930249303493044930549306493074930849309493104931149312493134931449315493164931749318493194932049321493224932349324493254932649327493284932949330493314933249333493344933549336493374933849339493404934149342493434934449345493464934749348493494935049351493524935349354493554935649357493584935949360493614936249363493644936549366493674936849369493704937149372493734937449375493764937749378493794938049381493824938349384493854938649387493884938949390493914939249393493944939549396493974939849399494004940149402494034940449405494064940749408494094941049411494124941349414494154941649417494184941949420494214942249423494244942549426494274942849429494304943149432494334943449435494364943749438494394944049441494424944349444494454944649447494484944949450494514945249453494544945549456494574945849459494604946149462494634946449465494664946749468494694947049471494724947349474494754947649477494784947949480494814948249483494844948549486494874948849489494904949149492494934949449495494964949749498494994950049501495024950349504495054950649507495084950949510495114951249513495144951549516495174951849519495204952149522495234952449525495264952749528495294953049531495324953349534495354953649537495384953949540495414954249543495444954549546495474954849549495504955149552495534955449555495564955749558495594956049561495624956349564495654956649567495684956949570495714957249573495744957549576495774957849579495804958149582495834958449585495864958749588495894959049591495924959349594495954959649597495984959949600496014960249603496044960549606496074960849609496104961149612496134961449615496164961749618496194962049621496224962349624496254962649627496284962949630496314963249633496344963549636496374963849639496404964149642496434964449645496464964749648496494965049651496524965349654496554965649657496584965949660496614966249663496644966549666496674966849669496704967149672496734967449675496764967749678496794968049681496824968349684496854968649687496884968949690496914969249693496944969549696496974969849699497004970149702497034970449705497064970749708497094971049711497124971349714497154971649717497184971949720497214972249723497244972549726497274972849729497304973149732497334973449735497364973749738497394974049741497424974349744497454974649747497484974949750497514975249753497544975549756497574975849759497604976149762497634976449765497664976749768497694977049771497724977349774497754977649777497784977949780497814978249783497844978549786497874978849789497904979149792497934979449795497964979749798497994980049801498024980349804498054980649807498084980949810498114981249813498144981549816498174981849819498204982149822498234982449825498264982749828498294983049831498324983349834498354983649837498384983949840498414984249843498444984549846498474984849849498504985149852498534985449855498564985749858498594986049861498624986349864498654986649867498684986949870498714987249873498744987549876498774987849879498804988149882498834988449885498864988749888498894989049891498924989349894498954989649897498984989949900499014990249903499044990549906499074990849909499104991149912499134991449915499164991749918499194992049921499224992349924499254992649927499284992949930499314993249933499344993549936499374993849939499404994149942499434994449945499464994749948499494995049951499524995349954499554995649957499584995949960499614996249963499644996549966499674996849969499704997149972499734997449975499764997749978499794998049981499824998349984499854998649987499884998949990499914999249993499944999549996499974999849999500005000150002500035000450005500065000750008500095001050011500125001350014500155001650017500185001950020500215002250023500245002550026500275002850029500305003150032500335003450035500365003750038500395004050041500425004350044500455004650047500485004950050500515005250053500545005550056500575005850059500605006150062500635006450065500665006750068500695007050071500725007350074500755007650077500785007950080500815008250083500845008550086500875008850089500905009150092500935009450095500965009750098500995010050101501025010350104501055010650107501085010950110501115011250113501145011550116501175011850119501205012150122501235012450125501265012750128501295013050131501325013350134501355013650137501385013950140501415014250143501445014550146501475014850149501505015150152501535015450155501565015750158501595016050161501625016350164501655016650167501685016950170501715017250173501745017550176501775017850179501805018150182501835018450185501865018750188501895019050191501925019350194501955019650197501985019950200502015020250203502045020550206502075020850209502105021150212502135021450215502165021750218502195022050221502225022350224502255022650227502285022950230502315023250233502345023550236502375023850239502405024150242502435024450245502465024750248502495025050251502525025350254502555025650257502585025950260502615026250263502645026550266502675026850269502705027150272502735027450275502765027750278502795028050281502825028350284502855028650287502885028950290502915029250293502945029550296502975029850299503005030150302503035030450305503065030750308503095031050311503125031350314503155031650317503185031950320503215032250323503245032550326503275032850329503305033150332503335033450335503365033750338503395034050341503425034350344503455034650347503485034950350503515035250353503545035550356503575035850359503605036150362503635036450365503665036750368503695037050371503725037350374503755037650377503785037950380503815038250383503845038550386503875038850389503905039150392503935039450395503965039750398503995040050401504025040350404504055040650407504085040950410504115041250413504145041550416504175041850419504205042150422504235042450425504265042750428504295043050431504325043350434504355043650437504385043950440504415044250443504445044550446504475044850449504505045150452504535045450455504565045750458504595046050461504625046350464504655046650467504685046950470504715047250473504745047550476504775047850479504805048150482504835048450485504865048750488504895049050491504925049350494504955049650497504985049950500505015050250503505045050550506505075050850509505105051150512505135051450515505165051750518505195052050521505225052350524505255052650527505285052950530505315053250533505345053550536505375053850539505405054150542505435054450545505465054750548505495055050551505525055350554505555055650557505585055950560505615056250563505645056550566505675056850569505705057150572505735057450575505765057750578505795058050581505825058350584505855058650587505885058950590505915059250593505945059550596505975059850599506005060150602506035060450605506065060750608506095061050611506125061350614506155061650617506185061950620506215062250623506245062550626506275062850629506305063150632506335063450635506365063750638506395064050641506425064350644506455064650647506485064950650506515065250653506545065550656506575065850659506605066150662506635066450665506665066750668506695067050671506725067350674506755067650677506785067950680506815068250683506845068550686506875068850689506905069150692506935069450695506965069750698506995070050701507025070350704507055070650707507085070950710507115071250713507145071550716507175071850719507205072150722507235072450725507265072750728507295073050731507325073350734507355073650737507385073950740507415074250743507445074550746507475074850749507505075150752507535075450755507565075750758507595076050761507625076350764507655076650767507685076950770507715077250773507745077550776507775077850779507805078150782507835078450785507865078750788507895079050791507925079350794507955079650797507985079950800508015080250803508045080550806508075080850809508105081150812508135081450815508165081750818508195082050821508225082350824508255082650827508285082950830508315083250833508345083550836508375083850839508405084150842508435084450845508465084750848508495085050851508525085350854508555085650857508585085950860508615086250863508645086550866508675086850869508705087150872508735087450875508765087750878508795088050881508825088350884508855088650887508885088950890508915089250893508945089550896508975089850899509005090150902509035090450905509065090750908509095091050911509125091350914509155091650917509185091950920509215092250923509245092550926509275092850929509305093150932509335093450935509365093750938509395094050941509425094350944509455094650947509485094950950509515095250953509545095550956509575095850959509605096150962509635096450965509665096750968509695097050971509725097350974509755097650977509785097950980509815098250983509845098550986509875098850989509905099150992509935099450995509965099750998509995100051001510025100351004510055100651007510085100951010510115101251013510145101551016510175101851019510205102151022510235102451025510265102751028510295103051031510325103351034510355103651037510385103951040510415104251043510445104551046510475104851049510505105151052510535105451055510565105751058510595106051061510625106351064510655106651067510685106951070510715107251073510745107551076510775107851079510805108151082510835108451085510865108751088510895109051091510925109351094510955109651097510985109951100511015110251103511045110551106511075110851109511105111151112511135111451115511165111751118511195112051121511225112351124511255112651127511285112951130511315113251133511345113551136511375113851139511405114151142511435114451145511465114751148511495115051151511525115351154511555115651157511585115951160511615116251163511645116551166511675116851169511705117151172511735117451175511765117751178511795118051181511825118351184511855118651187511885118951190511915119251193511945119551196511975119851199512005120151202512035120451205512065120751208512095121051211512125121351214512155121651217512185121951220512215122251223512245122551226512275122851229512305123151232512335123451235512365123751238512395124051241512425124351244512455124651247512485124951250512515125251253512545125551256512575125851259512605126151262512635126451265512665126751268512695127051271512725127351274512755127651277512785127951280512815128251283512845128551286512875128851289512905129151292512935129451295512965129751298512995130051301513025130351304513055130651307513085130951310513115131251313513145131551316513175131851319513205132151322513235132451325513265132751328513295133051331513325133351334513355133651337513385133951340513415134251343513445134551346513475134851349513505135151352513535135451355513565135751358513595136051361513625136351364513655136651367513685136951370513715137251373513745137551376513775137851379513805138151382513835138451385513865138751388513895139051391513925139351394513955139651397513985139951400514015140251403514045140551406514075140851409514105141151412514135141451415514165141751418514195142051421514225142351424514255142651427514285142951430514315143251433514345143551436514375143851439514405144151442514435144451445514465144751448514495145051451514525145351454514555145651457514585145951460514615146251463514645146551466514675146851469514705147151472514735147451475514765147751478514795148051481514825148351484514855148651487514885148951490514915149251493514945149551496514975149851499515005150151502515035150451505515065150751508515095151051511515125151351514515155151651517515185151951520515215152251523515245152551526515275152851529515305153151532515335153451535515365153751538515395154051541515425154351544515455154651547515485154951550515515155251553515545155551556515575155851559515605156151562515635156451565515665156751568515695157051571515725157351574515755157651577515785157951580515815158251583515845158551586515875158851589515905159151592515935159451595515965159751598515995160051601516025160351604516055160651607516085160951610516115161251613516145161551616516175161851619516205162151622516235162451625516265162751628516295163051631516325163351634516355163651637516385163951640516415164251643516445164551646516475164851649516505165151652516535165451655516565165751658516595166051661516625166351664516655166651667516685166951670516715167251673516745167551676516775167851679516805168151682516835168451685516865168751688516895169051691516925169351694516955169651697516985169951700517015170251703517045170551706517075170851709517105171151712517135171451715517165171751718517195172051721517225172351724517255172651727517285172951730517315173251733517345173551736517375173851739517405174151742517435174451745517465174751748517495175051751517525175351754517555175651757517585175951760517615176251763517645176551766517675176851769517705177151772517735177451775517765177751778517795178051781517825178351784517855178651787517885178951790517915179251793517945179551796517975179851799518005180151802518035180451805518065180751808518095181051811518125181351814518155181651817518185181951820518215182251823518245182551826518275182851829518305183151832518335183451835518365183751838518395184051841518425184351844518455184651847518485184951850518515185251853518545185551856518575185851859518605186151862518635186451865518665186751868518695187051871518725187351874518755187651877518785187951880518815188251883518845188551886518875188851889518905189151892518935189451895518965189751898518995190051901519025190351904519055190651907519085190951910519115191251913519145191551916519175191851919519205192151922519235192451925519265192751928519295193051931519325193351934519355193651937519385193951940519415194251943519445194551946519475194851949519505195151952519535195451955519565195751958519595196051961519625196351964519655196651967519685196951970519715197251973519745197551976519775197851979519805198151982519835198451985519865198751988519895199051991519925199351994519955199651997519985199952000520015200252003520045200552006520075200852009520105201152012520135201452015520165201752018520195202052021520225202352024520255202652027520285202952030520315203252033520345203552036520375203852039520405204152042520435204452045520465204752048520495205052051520525205352054520555205652057520585205952060520615206252063520645206552066520675206852069520705207152072520735207452075520765207752078520795208052081520825208352084520855208652087520885208952090520915209252093520945209552096520975209852099521005210152102521035210452105521065210752108521095211052111521125211352114521155211652117521185211952120521215212252123521245212552126521275212852129521305213152132521335213452135521365213752138521395214052141521425214352144521455214652147521485214952150521515215252153521545215552156521575215852159521605216152162521635216452165521665216752168521695217052171521725217352174521755217652177521785217952180521815218252183521845218552186521875218852189521905219152192521935219452195521965219752198521995220052201522025220352204522055220652207522085220952210522115221252213522145221552216522175221852219522205222152222522235222452225522265222752228522295223052231522325223352234522355223652237522385223952240522415224252243522445224552246522475224852249522505225152252522535225452255522565225752258522595226052261522625226352264522655226652267522685226952270522715227252273522745227552276522775227852279522805228152282522835228452285522865228752288522895229052291522925229352294522955229652297522985229952300523015230252303523045230552306523075230852309523105231152312523135231452315523165231752318523195232052321523225232352324523255232652327523285232952330523315233252333523345233552336523375233852339523405234152342523435234452345523465234752348523495235052351523525235352354523555235652357523585235952360523615236252363523645236552366523675236852369523705237152372523735237452375523765237752378523795238052381523825238352384523855238652387523885238952390523915239252393523945239552396523975239852399524005240152402524035240452405524065240752408524095241052411524125241352414524155241652417524185241952420524215242252423524245242552426524275242852429524305243152432524335243452435524365243752438524395244052441524425244352444524455244652447524485244952450524515245252453524545245552456524575245852459524605246152462524635246452465524665246752468524695247052471524725247352474524755247652477524785247952480524815248252483524845248552486524875248852489524905249152492524935249452495524965249752498524995250052501525025250352504525055250652507525085250952510525115251252513525145251552516525175251852519525205252152522525235252452525525265252752528525295253052531525325253352534525355253652537525385253952540525415254252543525445254552546525475254852549525505255152552525535255452555525565255752558525595256052561525625256352564525655256652567525685256952570525715257252573525745257552576525775257852579525805258152582525835258452585525865258752588525895259052591525925259352594525955259652597525985259952600526015260252603526045260552606526075260852609526105261152612526135261452615526165261752618526195262052621526225262352624526255262652627526285262952630526315263252633526345263552636526375263852639526405264152642526435264452645526465264752648526495265052651526525265352654526555265652657526585265952660526615266252663526645266552666526675266852669526705267152672526735267452675526765267752678526795268052681526825268352684526855268652687526885268952690526915269252693526945269552696526975269852699527005270152702527035270452705527065270752708527095271052711527125271352714527155271652717527185271952720527215272252723527245272552726527275272852729
  1. --- a/bfd/archures.c
  2. +++ b/bfd/archures.c
  3. @@ -346,6 +346,11 @@ DESCRIPTION
  4. .#define bfd_mach_avr4 4
  5. .#define bfd_mach_avr5 5
  6. .#define bfd_mach_avr6 6
  7. +. bfd_arch_avr32, {* Atmel AVR32 *}
  8. +.#define bfd_mach_avr32_ap 7000
  9. +.#define bfd_mach_avr32_uc 3000
  10. +.#define bfd_mach_avr32_ucr1 3001
  11. +.#define bfd_mach_avr32_ucr2 3002
  12. . bfd_arch_bfin, {* ADI Blackfin *}
  13. .#define bfd_mach_bfin 1
  14. . bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
  15. @@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
  16. extern const bfd_arch_info_type bfd_arc_arch;
  17. extern const bfd_arch_info_type bfd_arm_arch;
  18. extern const bfd_arch_info_type bfd_avr_arch;
  19. +extern const bfd_arch_info_type bfd_avr32_arch;
  20. extern const bfd_arch_info_type bfd_bfin_arch;
  21. extern const bfd_arch_info_type bfd_cr16_arch;
  22. extern const bfd_arch_info_type bfd_cr16c_arch;
  23. @@ -509,6 +515,7 @@ static const bfd_arch_info_type * const
  24. &bfd_arc_arch,
  25. &bfd_arm_arch,
  26. &bfd_avr_arch,
  27. + &bfd_avr32_arch,
  28. &bfd_bfin_arch,
  29. &bfd_cr16_arch,
  30. &bfd_cr16c_arch,
  31. --- a/bfd/config.bfd
  32. +++ b/bfd/config.bfd
  33. @@ -335,6 +335,10 @@ case "${targ}" in
  34. targ_underscore=yes
  35. ;;
  36. + avr32-*-*)
  37. + targ_defvec=bfd_elf32_avr32_vec
  38. + ;;
  39. +
  40. c30-*-*aout* | tic30-*-*aout*)
  41. targ_defvec=tic30_aout_vec
  42. ;;
  43. --- a/bfd/configure.in
  44. +++ b/bfd/configure.in
  45. @@ -619,6 +619,7 @@ do
  46. bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
  47. bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
  48. bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
  49. + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
  50. bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
  51. bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
  52. bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
  53. --- /dev/null
  54. +++ b/bfd/cpu-avr32.c
  55. @@ -0,0 +1,51 @@
  56. +/* BFD library support routines for AVR32.
  57. + Copyright 2003-2006 Atmel Corporation.
  58. +
  59. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  60. +
  61. + This is part of BFD, the Binary File Descriptor library.
  62. +
  63. + This program is free software; you can redistribute it and/or modify
  64. + it under the terms of the GNU General Public License as published by
  65. + the Free Software Foundation; either version 2 of the License, or
  66. + (at your option) any later version.
  67. +
  68. + This program is distributed in the hope that it will be useful,
  69. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  70. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  71. + GNU General Public License for more details.
  72. +
  73. + You should have received a copy of the GNU General Public License
  74. + along with this program; if not, write to the Free Software
  75. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  76. +
  77. +#include "bfd.h"
  78. +#include "sysdep.h"
  79. +#include "libbfd.h"
  80. +
  81. +#define N(machine, print, default, next) \
  82. + { \
  83. + 32, /* 32 bits in a word */ \
  84. + 32, /* 32 bits in an address */ \
  85. + 8, /* 8 bits in a byte */ \
  86. + bfd_arch_avr32, /* architecture */ \
  87. + machine, /* machine */ \
  88. + "avr32", /* arch name */ \
  89. + print, /* printable name */ \
  90. + 1, /* section align power */ \
  91. + default, /* the default machine? */ \
  92. + bfd_default_compatible, \
  93. + bfd_default_scan, \
  94. + next, \
  95. + }
  96. +
  97. +static const bfd_arch_info_type cpu_info[] =
  98. +{
  99. + N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
  100. + N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
  101. + N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
  102. + N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
  103. +};
  104. +
  105. +const bfd_arch_info_type bfd_avr32_arch =
  106. + N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
  107. --- /dev/null
  108. +++ b/bfd/elf32-avr32.c
  109. @@ -0,0 +1,3915 @@
  110. +/* AVR32-specific support for 32-bit ELF.
  111. + Copyright 2003-2006 Atmel Corporation.
  112. +
  113. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  114. +
  115. + This file is part of BFD, the Binary File Descriptor library.
  116. +
  117. + This program is free software; you can redistribute it and/or modify
  118. + it under the terms of the GNU General Public License as published by
  119. + the Free Software Foundation; either version 2 of the License, or
  120. + (at your option) any later version.
  121. +
  122. + This program is distributed in the hope that it will be useful,
  123. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  124. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  125. + GNU General Public License for more details.
  126. +
  127. + You should have received a copy of the GNU General Public License
  128. + along with this program; if not, write to the Free Software
  129. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  130. +
  131. +#include "bfd.h"
  132. +#include "sysdep.h"
  133. +#include "bfdlink.h"
  134. +#include "libbfd.h"
  135. +#include "elf-bfd.h"
  136. +#include "elf/avr32.h"
  137. +#include "elf32-avr32.h"
  138. +
  139. +#define xDEBUG
  140. +#define xRELAX_DEBUG
  141. +
  142. +#ifdef DEBUG
  143. +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
  144. +#else
  145. +# define pr_debug(fmt, args...) do { } while (0)
  146. +#endif
  147. +
  148. +#ifdef RELAX_DEBUG
  149. +# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
  150. +#else
  151. +# define RDBG(fmt, args...) do { } while (0)
  152. +#endif
  153. +
  154. +/* When things go wrong, we want it to blow up, damnit! */
  155. +#undef BFD_ASSERT
  156. +#undef abort
  157. +#define BFD_ASSERT(expr) \
  158. + do \
  159. + { \
  160. + if (!(expr)) \
  161. + { \
  162. + bfd_assert(__FILE__, __LINE__); \
  163. + abort(); \
  164. + } \
  165. + } \
  166. + while (0)
  167. +
  168. +/* The name of the dynamic interpreter. This is put in the .interp section. */
  169. +#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
  170. +
  171. +#define AVR32_GOT_HEADER_SIZE 8
  172. +#define AVR32_FUNCTION_STUB_SIZE 8
  173. +
  174. +#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
  175. +#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
  176. +#define ELF_R_SYM(x) ELF32_R_SYM(x)
  177. +
  178. +#define NOP_OPCODE 0xd703
  179. +
  180. +
  181. +/* Mapping between BFD relocations and ELF relocations */
  182. +
  183. +static reloc_howto_type *
  184. +bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
  185. +
  186. +static reloc_howto_type *
  187. +bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
  188. +
  189. +static void
  190. +avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
  191. +
  192. +/* Generic HOWTO */
  193. +#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
  194. + HOWTO(name, align, size, bitsize, pcrel, bitpos, \
  195. + complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
  196. + FALSE, 0, mask, pcrel)
  197. +
  198. +static reloc_howto_type elf_avr32_howto_table[] = {
  199. + /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
  200. + GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
  201. +
  202. + GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  203. + GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
  204. + GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
  205. + GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
  206. + GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
  207. + GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
  208. +
  209. + /* Difference between two symbol (sym2 - sym1). The reloc encodes
  210. + the value of sym1. The field contains the difference before any
  211. + relaxing is done. */
  212. + GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  213. + GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
  214. + GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
  215. +
  216. + GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
  217. + GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
  218. + GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
  219. +
  220. + GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
  221. + GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
  222. + GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
  223. + GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
  224. + GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
  225. +
  226. + GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
  227. + GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
  228. + GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
  229. + GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
  230. + GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
  231. + GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
  232. + GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
  233. + GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
  234. + GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
  235. +
  236. + GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
  237. + GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
  238. +
  239. + GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  240. + GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
  241. + GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
  242. + GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
  243. + GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
  244. + GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
  245. + GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
  246. +
  247. + GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  248. + GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
  249. + GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
  250. + GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
  251. +
  252. + GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
  253. + GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  254. + GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
  255. +
  256. + GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
  257. +
  258. + GENH(R_AVR32_15S, 2, 2, 15, FALSE, 0, signed, 0x00007fff),
  259. +};
  260. +
  261. +struct elf_reloc_map
  262. +{
  263. + bfd_reloc_code_real_type bfd_reloc_val;
  264. + unsigned char elf_reloc_val;
  265. +};
  266. +
  267. +static const struct elf_reloc_map avr32_reloc_map[] =
  268. +{
  269. + { BFD_RELOC_NONE, R_AVR32_NONE },
  270. +
  271. + { BFD_RELOC_32, R_AVR32_32 },
  272. + { BFD_RELOC_16, R_AVR32_16 },
  273. + { BFD_RELOC_8, R_AVR32_8 },
  274. + { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
  275. + { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
  276. + { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
  277. + { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
  278. + { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
  279. + { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
  280. + { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
  281. + { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
  282. + { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
  283. +
  284. + { BFD_RELOC_AVR32_21S, R_AVR32_21S },
  285. + { BFD_RELOC_AVR32_16U, R_AVR32_16U },
  286. + { BFD_RELOC_AVR32_16S, R_AVR32_16S },
  287. + { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
  288. + { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
  289. + { BFD_RELOC_AVR32_8S, R_AVR32_8S },
  290. +
  291. + { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
  292. + { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
  293. + { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
  294. + { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
  295. + { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
  296. + { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
  297. + { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
  298. + { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
  299. +
  300. + { BFD_RELOC_HI16, R_AVR32_HI16 },
  301. + { BFD_RELOC_LO16, R_AVR32_LO16 },
  302. +
  303. + { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
  304. + { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
  305. + { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
  306. + { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
  307. + { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
  308. + { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
  309. + /* GOT7UW should never be generated by the assembler */
  310. +
  311. + { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
  312. + { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
  313. + { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
  314. + { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
  315. +
  316. + { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
  317. +
  318. + { BFD_RELOC_AVR32_15S, R_AVR32_15S },
  319. +};
  320. +
  321. +static reloc_howto_type *
  322. +bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  323. + bfd_reloc_code_real_type code)
  324. +{
  325. + unsigned int i;
  326. +
  327. + for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
  328. + {
  329. + if (avr32_reloc_map[i].bfd_reloc_val == code)
  330. + return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
  331. + }
  332. +
  333. + return NULL;
  334. +}
  335. +
  336. +static reloc_howto_type *
  337. +bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  338. + const char *r_name)
  339. +{
  340. + unsigned int i;
  341. +
  342. + for (i = 0;
  343. + i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
  344. + i++)
  345. + if (elf_avr32_howto_table[i].name != NULL
  346. + && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
  347. + return &elf_avr32_howto_table[i];
  348. +
  349. + return NULL;
  350. +}
  351. +
  352. +/* Set the howto pointer for an AVR32 ELF reloc. */
  353. +static void
  354. +avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
  355. + arelent *cache_ptr,
  356. + Elf_Internal_Rela *dst)
  357. +{
  358. + unsigned int r_type;
  359. +
  360. + r_type = ELF32_R_TYPE (dst->r_info);
  361. + BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
  362. + cache_ptr->howto = &elf_avr32_howto_table[r_type];
  363. +}
  364. +
  365. +
  366. +/* AVR32 ELF linker hash table and associated hash entries. */
  367. +
  368. +static struct bfd_hash_entry *
  369. +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  370. + struct bfd_hash_table *table,
  371. + const char *string);
  372. +static void
  373. +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  374. + struct elf_link_hash_entry *dir,
  375. + struct elf_link_hash_entry *ind);
  376. +static struct bfd_link_hash_table *
  377. +avr32_elf_link_hash_table_create(bfd *abfd);
  378. +
  379. +/*
  380. + Try to limit memory usage to something reasonable when sorting the
  381. + GOT. If just a couple of entries end up getting more references
  382. + than this, it won't affect performance at all, but if there are many
  383. + of them, we could end up with the wrong symbols being assigned the
  384. + first GOT entries.
  385. +*/
  386. +#define MAX_NR_GOT_HOLES 2048
  387. +
  388. +/*
  389. + AVR32 GOT entry. We need to keep track of refcounts and offsets
  390. + simultaneously, since we need the offsets during relaxation, and we
  391. + also want to be able to drop GOT entries during relaxation. In
  392. + addition to this, we want to keep the list of GOT entries sorted so
  393. + that we can keep the most-used entries at the lowest offsets.
  394. +*/
  395. +struct got_entry
  396. +{
  397. + struct got_entry *next;
  398. + struct got_entry **pprev;
  399. + int refcount;
  400. + bfd_signed_vma offset;
  401. +};
  402. +
  403. +struct elf_avr32_link_hash_entry
  404. +{
  405. + struct elf_link_hash_entry root;
  406. +
  407. + /* Number of runtime relocations against this symbol. */
  408. + unsigned int possibly_dynamic_relocs;
  409. +
  410. + /* If there are anything but R_AVR32_GOT18 relocations against this
  411. + symbol, it means that someone may be taking the address of the
  412. + function, and we should therefore not create a stub. */
  413. + bfd_boolean no_fn_stub;
  414. +
  415. + /* If there is a R_AVR32_32 relocation in a read-only section
  416. + against this symbol, we could be in trouble. If we're linking a
  417. + shared library or this symbol is defined in one, it means we must
  418. + emit a run-time reloc for it and that's not allowed in read-only
  419. + sections. */
  420. + asection *readonly_reloc_sec;
  421. + bfd_vma readonly_reloc_offset;
  422. +
  423. + /* Record which frag (if any) contains the symbol. This is used
  424. + during relaxation in order to avoid having to update all symbols
  425. + whenever we move something. For local symbols, this information
  426. + is in the local_sym_frag member of struct elf_obj_tdata. */
  427. + struct fragment *sym_frag;
  428. +};
  429. +#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
  430. +
  431. +struct elf_avr32_link_hash_table
  432. +{
  433. + struct elf_link_hash_table root;
  434. +
  435. + /* Shortcuts to get to dynamic linker sections. */
  436. + asection *sgot;
  437. + asection *srelgot;
  438. + asection *sstub;
  439. +
  440. + /* We use a variation of Pigeonhole Sort to sort the GOT. After the
  441. + initial refcounts have been determined, we initialize
  442. + nr_got_holes to the highest refcount ever seen and allocate an
  443. + array of nr_got_holes entries for got_hole. Each GOT entry is
  444. + then stored in this array at the index given by its refcount.
  445. +
  446. + When a GOT entry has its refcount decremented during relaxation,
  447. + it is moved to a lower index in the got_hole array.
  448. + */
  449. + struct got_entry **got_hole;
  450. + int nr_got_holes;
  451. +
  452. + /* Dynamic relocations to local symbols. Only used when linking a
  453. + shared library and -Bsymbolic is not given. */
  454. + unsigned int local_dynamic_relocs;
  455. +
  456. + bfd_boolean relocations_analyzed;
  457. + bfd_boolean symbols_adjusted;
  458. + bfd_boolean repeat_pass;
  459. + bfd_boolean direct_data_refs;
  460. + unsigned int relax_iteration;
  461. + unsigned int relax_pass;
  462. +};
  463. +#define avr32_elf_hash_table(p) \
  464. + ((struct elf_avr32_link_hash_table *)((p)->hash))
  465. +
  466. +static struct bfd_hash_entry *
  467. +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  468. + struct bfd_hash_table *table,
  469. + const char *string)
  470. +{
  471. + struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
  472. +
  473. + /* Allocate the structure if it hasn't already been allocated by a
  474. + subclass */
  475. + if (ret == NULL)
  476. + ret = (struct elf_avr32_link_hash_entry *)
  477. + bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
  478. +
  479. + if (ret == NULL)
  480. + return NULL;
  481. +
  482. + memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
  483. +
  484. + /* Give the superclass a chance */
  485. + ret = (struct elf_avr32_link_hash_entry *)
  486. + _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
  487. +
  488. + return (struct bfd_hash_entry *)ret;
  489. +}
  490. +
  491. +/* Copy data from an indirect symbol to its direct symbol, hiding the
  492. + old indirect symbol. Process additional relocation information.
  493. + Also called for weakdefs, in which case we just let
  494. + _bfd_elf_link_hash_copy_indirect copy the flags for us. */
  495. +
  496. +static void
  497. +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  498. + struct elf_link_hash_entry *dir,
  499. + struct elf_link_hash_entry *ind)
  500. +{
  501. + struct elf_avr32_link_hash_entry *edir, *eind;
  502. +
  503. + _bfd_elf_link_hash_copy_indirect (info, dir, ind);
  504. +
  505. + if (ind->root.type != bfd_link_hash_indirect)
  506. + return;
  507. +
  508. + edir = (struct elf_avr32_link_hash_entry *)dir;
  509. + eind = (struct elf_avr32_link_hash_entry *)ind;
  510. +
  511. + edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
  512. + edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
  513. +}
  514. +
  515. +static struct bfd_link_hash_table *
  516. +avr32_elf_link_hash_table_create(bfd *abfd)
  517. +{
  518. + struct elf_avr32_link_hash_table *ret;
  519. +
  520. + ret = bfd_zmalloc(sizeof(*ret));
  521. + if (ret == NULL)
  522. + return NULL;
  523. +
  524. + if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
  525. + avr32_elf_link_hash_newfunc,
  526. + sizeof (struct elf_avr32_link_hash_entry)))
  527. + {
  528. + free(ret);
  529. + return NULL;
  530. + }
  531. +
  532. + /* Prevent the BFD core from creating bogus got_entry pointers */
  533. + ret->root.init_got_refcount.glist = NULL;
  534. + ret->root.init_plt_refcount.glist = NULL;
  535. + ret->root.init_got_offset.glist = NULL;
  536. + ret->root.init_plt_offset.glist = NULL;
  537. +
  538. + return &ret->root.root;
  539. +}
  540. +
  541. +
  542. +/* Initial analysis and creation of dynamic sections and symbols */
  543. +
  544. +static asection *
  545. +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  546. + unsigned int align_power);
  547. +static struct elf_link_hash_entry *
  548. +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  549. + const char *name, asection *sec,
  550. + bfd_vma offset);
  551. +static bfd_boolean
  552. +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
  553. +static bfd_boolean
  554. +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
  555. +static bfd_boolean
  556. +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  557. + const Elf_Internal_Rela *relocs);
  558. +static bfd_boolean
  559. +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  560. + struct elf_link_hash_entry *h);
  561. +
  562. +static asection *
  563. +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  564. + unsigned int align_power)
  565. +{
  566. + asection *sec;
  567. +
  568. + sec = bfd_make_section(dynobj, name);
  569. + if (!sec
  570. + || !bfd_set_section_flags(dynobj, sec, flags)
  571. + || !bfd_set_section_alignment(dynobj, sec, align_power))
  572. + return NULL;
  573. +
  574. + return sec;
  575. +}
  576. +
  577. +static struct elf_link_hash_entry *
  578. +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  579. + const char *name, asection *sec,
  580. + bfd_vma offset)
  581. +{
  582. + struct bfd_link_hash_entry *bh = NULL;
  583. + struct elf_link_hash_entry *h;
  584. + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  585. +
  586. + if (!(_bfd_generic_link_add_one_symbol
  587. + (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
  588. + bed->collect, &bh)))
  589. + return NULL;
  590. +
  591. + h = (struct elf_link_hash_entry *)bh;
  592. + h->def_regular = 1;
  593. + h->type = STT_OBJECT;
  594. + h->other = STV_HIDDEN;
  595. +
  596. + return h;
  597. +}
  598. +
  599. +static bfd_boolean
  600. +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
  601. +{
  602. + struct elf_avr32_link_hash_table *htab;
  603. + flagword flags;
  604. + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  605. +
  606. + htab = avr32_elf_hash_table(info);
  607. + flags = bed->dynamic_sec_flags;
  608. +
  609. + if (htab->sgot)
  610. + return TRUE;
  611. +
  612. + htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
  613. + if (!htab->srelgot)
  614. + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  615. + flags | SEC_READONLY, 2);
  616. +
  617. + if (!htab->sgot || !htab->srelgot)
  618. + return FALSE;
  619. +
  620. + htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
  621. + htab->sgot, 0);
  622. + if (!htab->root.hgot)
  623. + return FALSE;
  624. +
  625. + /* Make room for the GOT header */
  626. + htab->sgot->size += bed->got_header_size;
  627. +
  628. + return TRUE;
  629. +}
  630. +
  631. +/* (1) Create all dynamic (i.e. linker generated) sections that we may
  632. + need during the link */
  633. +
  634. +static bfd_boolean
  635. +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
  636. +{
  637. + struct elf_avr32_link_hash_table *htab;
  638. + flagword flags;
  639. + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  640. +
  641. + pr_debug("(1) create dynamic sections\n");
  642. +
  643. + htab = avr32_elf_hash_table(info);
  644. + flags = bed->dynamic_sec_flags;
  645. +
  646. + if (!avr32_elf_create_got_section (dynobj, info))
  647. + return FALSE;
  648. +
  649. + if (!htab->sstub)
  650. + htab->sstub = create_dynamic_section(dynobj, ".stub",
  651. + flags | SEC_READONLY | SEC_CODE, 2);
  652. +
  653. + if (!htab->sstub)
  654. + return FALSE;
  655. +
  656. + return TRUE;
  657. +}
  658. +
  659. +/* (2) Go through all the relocs and count any potential GOT- or
  660. + PLT-references to each symbol */
  661. +
  662. +static bfd_boolean
  663. +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  664. + const Elf_Internal_Rela *relocs)
  665. +{
  666. + Elf_Internal_Shdr *symtab_hdr;
  667. + struct elf_avr32_link_hash_table *htab;
  668. + struct elf_link_hash_entry **sym_hashes;
  669. + const Elf_Internal_Rela *rel, *rel_end;
  670. + struct got_entry **local_got_ents;
  671. + struct got_entry *got;
  672. + const struct elf_backend_data *bed = get_elf_backend_data (abfd);
  673. + asection *sgot;
  674. + bfd *dynobj;
  675. +
  676. + pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
  677. + abfd->filename, sec->name, sec->size);
  678. +
  679. + if (info->relocatable)
  680. + return TRUE;
  681. +
  682. + dynobj = elf_hash_table(info)->dynobj;
  683. + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  684. + sym_hashes = elf_sym_hashes(abfd);
  685. + htab = avr32_elf_hash_table(info);
  686. + local_got_ents = elf_local_got_ents(abfd);
  687. + sgot = htab->sgot;
  688. +
  689. + rel_end = relocs + sec->reloc_count;
  690. + for (rel = relocs; rel < rel_end; rel++)
  691. + {
  692. + unsigned long r_symndx, r_type;
  693. + struct elf_avr32_link_hash_entry *h;
  694. +
  695. + r_symndx = ELF32_R_SYM(rel->r_info);
  696. + r_type = ELF32_R_TYPE(rel->r_info);
  697. +
  698. + /* Local symbols use local_got_ents, while others store the same
  699. + information in the hash entry */
  700. + if (r_symndx < symtab_hdr->sh_info)
  701. + {
  702. + pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
  703. + h = NULL;
  704. + }
  705. + else
  706. + {
  707. + h = (struct elf_avr32_link_hash_entry *)
  708. + sym_hashes[r_symndx - symtab_hdr->sh_info];
  709. + while (h->root.type == bfd_link_hash_indirect
  710. + || h->root.type == bfd_link_hash_warning)
  711. + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
  712. + pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
  713. + }
  714. +
  715. + /* Some relocs require special sections to be created. */
  716. + switch (r_type)
  717. + {
  718. + case R_AVR32_GOT32:
  719. + case R_AVR32_GOT16:
  720. + case R_AVR32_GOT8:
  721. + case R_AVR32_GOT21S:
  722. + case R_AVR32_GOT18SW:
  723. + case R_AVR32_GOT16S:
  724. + case R_AVR32_GOT7UW:
  725. + case R_AVR32_LDA_GOT:
  726. + case R_AVR32_GOTCALL:
  727. + if (rel->r_addend)
  728. + {
  729. + if (info->callbacks->reloc_dangerous
  730. + (info, _("Non-zero addend on GOT-relative relocation"),
  731. + abfd, sec, rel->r_offset) == FALSE)
  732. + return FALSE;
  733. + }
  734. + /* fall through */
  735. + case R_AVR32_GOTPC:
  736. + if (dynobj == NULL)
  737. + elf_hash_table(info)->dynobj = dynobj = abfd;
  738. + if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
  739. + return FALSE;
  740. + break;
  741. + case R_AVR32_32:
  742. + /* We may need to create .rela.dyn later on. */
  743. + if (dynobj == NULL
  744. + && (info->shared || h != NULL)
  745. + && (sec->flags & SEC_ALLOC))
  746. + elf_hash_table(info)->dynobj = dynobj = abfd;
  747. + break;
  748. + }
  749. +
  750. + if (h != NULL && r_type != R_AVR32_GOT18SW)
  751. + h->no_fn_stub = TRUE;
  752. +
  753. + switch (r_type)
  754. + {
  755. + case R_AVR32_GOT32:
  756. + case R_AVR32_GOT16:
  757. + case R_AVR32_GOT8:
  758. + case R_AVR32_GOT21S:
  759. + case R_AVR32_GOT18SW:
  760. + case R_AVR32_GOT16S:
  761. + case R_AVR32_GOT7UW:
  762. + case R_AVR32_LDA_GOT:
  763. + case R_AVR32_GOTCALL:
  764. + if (h != NULL)
  765. + {
  766. + got = h->root.got.glist;
  767. + if (!got)
  768. + {
  769. + got = bfd_zalloc(abfd, sizeof(struct got_entry));
  770. + if (!got)
  771. + return FALSE;
  772. + h->root.got.glist = got;
  773. + }
  774. + }
  775. + else
  776. + {
  777. + if (!local_got_ents)
  778. + {
  779. + bfd_size_type size;
  780. + bfd_size_type i;
  781. + struct got_entry *tmp_entry;
  782. +
  783. + size = symtab_hdr->sh_info;
  784. + size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
  785. + local_got_ents = bfd_zalloc(abfd, size);
  786. + if (!local_got_ents)
  787. + return FALSE;
  788. +
  789. + elf_local_got_ents(abfd) = local_got_ents;
  790. +
  791. + tmp_entry = (struct got_entry *)(local_got_ents
  792. + + symtab_hdr->sh_info);
  793. + for (i = 0; i < symtab_hdr->sh_info; i++)
  794. + local_got_ents[i] = &tmp_entry[i];
  795. + }
  796. +
  797. + got = local_got_ents[r_symndx];
  798. + }
  799. +
  800. + got->refcount++;
  801. + if (got->refcount > htab->nr_got_holes)
  802. + htab->nr_got_holes = got->refcount;
  803. + break;
  804. +
  805. + case R_AVR32_32:
  806. + if ((info->shared || h != NULL)
  807. + && (sec->flags & SEC_ALLOC))
  808. + {
  809. + if (htab->srelgot == NULL)
  810. + {
  811. + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  812. + bed->dynamic_sec_flags
  813. + | SEC_READONLY, 2);
  814. + if (htab->srelgot == NULL)
  815. + return FALSE;
  816. + }
  817. +
  818. + if (sec->flags & SEC_READONLY
  819. + && !h->readonly_reloc_sec)
  820. + {
  821. + h->readonly_reloc_sec = sec;
  822. + h->readonly_reloc_offset = rel->r_offset;
  823. + }
  824. +
  825. + if (h != NULL)
  826. + {
  827. + pr_debug("Non-GOT reference to symbol %s\n",
  828. + h->root.root.root.string);
  829. + h->possibly_dynamic_relocs++;
  830. + }
  831. + else
  832. + {
  833. + pr_debug("Non-GOT reference to local symbol %lu\n",
  834. + r_symndx);
  835. + htab->local_dynamic_relocs++;
  836. + }
  837. + }
  838. +
  839. + break;
  840. +
  841. + /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
  842. + }
  843. + }
  844. +
  845. + return TRUE;
  846. +}
  847. +
  848. +/* (3) Adjust a symbol defined by a dynamic object and referenced by a
  849. + regular object. The current definition is in some section of the
  850. + dynamic object, but we're not including those sections. We have to
  851. + change the definition to something the rest of the link can
  852. + understand. */
  853. +
  854. +static bfd_boolean
  855. +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  856. + struct elf_link_hash_entry *h)
  857. +{
  858. + struct elf_avr32_link_hash_table *htab;
  859. + struct elf_avr32_link_hash_entry *havr;
  860. + bfd *dynobj;
  861. +
  862. + pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
  863. +
  864. + htab = avr32_elf_hash_table(info);
  865. + havr = (struct elf_avr32_link_hash_entry *)h;
  866. + dynobj = elf_hash_table(info)->dynobj;
  867. +
  868. + /* Make sure we know what is going on here. */
  869. + BFD_ASSERT (dynobj != NULL
  870. + && (h->u.weakdef != NULL
  871. + || (h->def_dynamic
  872. + && h->ref_regular
  873. + && !h->def_regular)));
  874. +
  875. + /* We don't want dynamic relocations in read-only sections. */
  876. + if (havr->readonly_reloc_sec)
  877. + {
  878. + if (info->callbacks->reloc_dangerous
  879. + (info, _("dynamic relocation in read-only section"),
  880. + havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
  881. + havr->readonly_reloc_offset) == FALSE)
  882. + return FALSE;
  883. + }
  884. +
  885. + /* If this is a function, create a stub if possible and set the
  886. + symbol to the stub location. */
  887. + if (0 && !havr->no_fn_stub)
  888. + {
  889. + if (!h->def_regular)
  890. + {
  891. + asection *s = htab->sstub;
  892. +
  893. + BFD_ASSERT(s != NULL);
  894. +
  895. + h->root.u.def.section = s;
  896. + h->root.u.def.value = s->size;
  897. + h->plt.offset = s->size;
  898. + s->size += AVR32_FUNCTION_STUB_SIZE;
  899. +
  900. + return TRUE;
  901. + }
  902. + }
  903. + else if (h->type == STT_FUNC)
  904. + {
  905. + /* This will set the entry for this symbol in the GOT to 0, and
  906. + the dynamic linker will take care of this. */
  907. + h->root.u.def.value = 0;
  908. + return TRUE;
  909. + }
  910. +
  911. + /* If this is a weak symbol, and there is a real definition, the
  912. + processor independent code will have arranged for us to see the
  913. + real definition first, and we can just use the same value. */
  914. + if (h->u.weakdef != NULL)
  915. + {
  916. + BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
  917. + || h->u.weakdef->root.type == bfd_link_hash_defweak);
  918. + h->root.u.def.section = h->u.weakdef->root.u.def.section;
  919. + h->root.u.def.value = h->u.weakdef->root.u.def.value;
  920. + return TRUE;
  921. + }
  922. +
  923. + /* This is a reference to a symbol defined by a dynamic object which
  924. + is not a function. */
  925. +
  926. + return TRUE;
  927. +}
  928. +
  929. +
  930. +/* Garbage-collection of unused sections */
  931. +
  932. +static asection *
  933. +avr32_elf_gc_mark_hook(asection *sec,
  934. + struct bfd_link_info *info ATTRIBUTE_UNUSED,
  935. + Elf_Internal_Rela *rel,
  936. + struct elf_link_hash_entry *h,
  937. + Elf_Internal_Sym *sym)
  938. +{
  939. + if (h)
  940. + {
  941. + switch (ELF32_R_TYPE(rel->r_info))
  942. + {
  943. + /* TODO: VTINHERIT/VTENTRY */
  944. + default:
  945. + switch (h->root.type)
  946. + {
  947. + case bfd_link_hash_defined:
  948. + case bfd_link_hash_defweak:
  949. + return h->root.u.def.section;
  950. +
  951. + case bfd_link_hash_common:
  952. + return h->root.u.c.p->section;
  953. +
  954. + default:
  955. + break;
  956. + }
  957. + }
  958. + }
  959. + else
  960. + return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
  961. +
  962. + return NULL;
  963. +}
  964. +
  965. +/* Update the GOT entry reference counts for the section being removed. */
  966. +static bfd_boolean
  967. +avr32_elf_gc_sweep_hook(bfd *abfd,
  968. + struct bfd_link_info *info ATTRIBUTE_UNUSED,
  969. + asection *sec,
  970. + const Elf_Internal_Rela *relocs)
  971. +{
  972. + Elf_Internal_Shdr *symtab_hdr;
  973. + struct elf_avr32_link_hash_entry **sym_hashes;
  974. + struct got_entry **local_got_ents;
  975. + const Elf_Internal_Rela *rel, *relend;
  976. +
  977. + if (!(sec->flags & SEC_ALLOC))
  978. + return TRUE;
  979. +
  980. + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  981. + sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
  982. + local_got_ents = elf_local_got_ents(abfd);
  983. +
  984. + relend = relocs + sec->reloc_count;
  985. + for (rel = relocs; rel < relend; rel++)
  986. + {
  987. + unsigned long r_symndx;
  988. + unsigned int r_type;
  989. + struct elf_avr32_link_hash_entry *h = NULL;
  990. +
  991. + r_symndx = ELF32_R_SYM(rel->r_info);
  992. + if (r_symndx >= symtab_hdr->sh_info)
  993. + {
  994. + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
  995. + while (h->root.root.type == bfd_link_hash_indirect
  996. + || h->root.root.type == bfd_link_hash_warning)
  997. + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
  998. + }
  999. +
  1000. + r_type = ELF32_R_TYPE(rel->r_info);
  1001. +
  1002. + switch (r_type)
  1003. + {
  1004. + case R_AVR32_GOT32:
  1005. + case R_AVR32_GOT16:
  1006. + case R_AVR32_GOT8:
  1007. + case R_AVR32_GOT21S:
  1008. + case R_AVR32_GOT18SW:
  1009. + case R_AVR32_GOT16S:
  1010. + case R_AVR32_GOT7UW:
  1011. + case R_AVR32_LDA_GOT:
  1012. + case R_AVR32_GOTCALL:
  1013. + if (h)
  1014. + h->root.got.glist->refcount--;
  1015. + else
  1016. + local_got_ents[r_symndx]->refcount--;
  1017. + break;
  1018. +
  1019. + case R_AVR32_32:
  1020. + if (info->shared || h)
  1021. + {
  1022. + if (h)
  1023. + h->possibly_dynamic_relocs--;
  1024. + else
  1025. + avr32_elf_hash_table(info)->local_dynamic_relocs--;
  1026. + }
  1027. +
  1028. + default:
  1029. + break;
  1030. + }
  1031. + }
  1032. +
  1033. + return TRUE;
  1034. +}
  1035. +
  1036. +/* Sizing and refcounting of dynamic sections */
  1037. +
  1038. +static void
  1039. +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
  1040. +static void
  1041. +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
  1042. +static void
  1043. +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
  1044. +static bfd_boolean
  1045. +assign_got_offsets(struct elf_avr32_link_hash_table *htab);
  1046. +static bfd_boolean
  1047. +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
  1048. +static bfd_boolean
  1049. +avr32_elf_size_dynamic_sections (bfd *output_bfd,
  1050. + struct bfd_link_info *info);
  1051. +
  1052. +static void
  1053. +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
  1054. +{
  1055. + /* Any entries with got_refcount > htab->nr_got_holes end up in the
  1056. + * last pigeonhole without any sorting. We expect the number of such
  1057. + * entries to be small, so it is very unlikely to affect
  1058. + * performance. */
  1059. + int entry = got->refcount;
  1060. +
  1061. + if (entry > htab->nr_got_holes)
  1062. + entry = htab->nr_got_holes;
  1063. +
  1064. + got->pprev = &htab->got_hole[entry];
  1065. + got->next = htab->got_hole[entry];
  1066. +
  1067. + if (got->next)
  1068. + got->next->pprev = &got->next;
  1069. +
  1070. + htab->got_hole[entry] = got;
  1071. +}
  1072. +
  1073. +/* Decrement the refcount of a GOT entry and update its position in
  1074. + the pigeonhole array. */
  1075. +static void
  1076. +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
  1077. +{
  1078. + BFD_ASSERT(got->refcount > 0);
  1079. +
  1080. + if (got->next)
  1081. + got->next->pprev = got->pprev;
  1082. +
  1083. + *(got->pprev) = got->next;
  1084. + got->refcount--;
  1085. + insert_got_entry(htab, got);
  1086. +}
  1087. +
  1088. +static void
  1089. +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
  1090. +{
  1091. + if (got->next)
  1092. + got->next->pprev = got->pprev;
  1093. +
  1094. + *(got->pprev) = got->next;
  1095. + got->refcount++;
  1096. + insert_got_entry(htab, got);
  1097. +
  1098. + BFD_ASSERT(got->refcount > 0);
  1099. +}
  1100. +
  1101. +/* Assign offsets to all GOT entries we intend to keep. The entries
  1102. + that are referenced most often are placed at low offsets so that we
  1103. + can use compact instructions as much as possible.
  1104. +
  1105. + Returns TRUE if any offsets or the total size of the GOT changed. */
  1106. +
  1107. +static bfd_boolean
  1108. +assign_got_offsets(struct elf_avr32_link_hash_table *htab)
  1109. +{
  1110. + struct got_entry *got;
  1111. + bfd_size_type got_size = 0;
  1112. + bfd_boolean changed = FALSE;
  1113. + bfd_signed_vma offset;
  1114. + int i;
  1115. +
  1116. + /* The GOT header provides the address of the DYNAMIC segment, so
  1117. + we need that even if the GOT is otherwise empty. */
  1118. + if (htab->root.dynamic_sections_created)
  1119. + got_size = AVR32_GOT_HEADER_SIZE;
  1120. +
  1121. + for (i = htab->nr_got_holes; i > 0; i--)
  1122. + {
  1123. + got = htab->got_hole[i];
  1124. + while (got)
  1125. + {
  1126. + if (got->refcount > 0)
  1127. + {
  1128. + offset = got_size;
  1129. + if (got->offset != offset)
  1130. + {
  1131. + RDBG("GOT offset changed: %ld -> %ld\n",
  1132. + got->offset, offset);
  1133. + changed = TRUE;
  1134. + }
  1135. + got->offset = offset;
  1136. + got_size += 4;
  1137. + }
  1138. + got = got->next;
  1139. + }
  1140. + }
  1141. +
  1142. + if (htab->sgot->size != got_size)
  1143. + {
  1144. + RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
  1145. + got_size);
  1146. + changed = TRUE;
  1147. + }
  1148. + htab->sgot->size = got_size;
  1149. +
  1150. + RDBG("assign_got_offsets: total size %lu (%s)\n",
  1151. + got_size, changed ? "changed" : "no change");
  1152. +
  1153. + return changed;
  1154. +}
  1155. +
  1156. +static bfd_boolean
  1157. +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
  1158. +{
  1159. + struct bfd_link_info *info = _info;
  1160. + struct elf_avr32_link_hash_table *htab;
  1161. + struct elf_avr32_link_hash_entry *havr;
  1162. + struct got_entry *got;
  1163. +
  1164. + pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
  1165. +
  1166. + if (h->root.type == bfd_link_hash_indirect)
  1167. + return TRUE;
  1168. +
  1169. + if (h->root.type == bfd_link_hash_warning)
  1170. + /* When warning symbols are created, they **replace** the "real"
  1171. + entry in the hash table, thus we never get to see the real
  1172. + symbol in a hash traversal. So look at it now. */
  1173. + h = (struct elf_link_hash_entry *) h->root.u.i.link;
  1174. +
  1175. + htab = avr32_elf_hash_table(info);
  1176. + havr = (struct elf_avr32_link_hash_entry *)h;
  1177. +
  1178. + got = h->got.glist;
  1179. +
  1180. + /* If got is NULL, the symbol is never referenced through the GOT */
  1181. + if (got && got->refcount > 0)
  1182. + {
  1183. + insert_got_entry(htab, got);
  1184. +
  1185. + /* Shared libraries need relocs for all GOT entries unless the
  1186. + symbol is forced local or -Bsymbolic is used. Others need
  1187. + relocs for everything that is not guaranteed to be defined in
  1188. + a regular object. */
  1189. + if ((info->shared
  1190. + && !info->symbolic
  1191. + && h->dynindx != -1)
  1192. + || (htab->root.dynamic_sections_created
  1193. + && h->def_dynamic
  1194. + && !h->def_regular))
  1195. + htab->srelgot->size += sizeof(Elf32_External_Rela);
  1196. + }
  1197. +
  1198. + if (havr->possibly_dynamic_relocs
  1199. + && (info->shared
  1200. + || (elf_hash_table(info)->dynamic_sections_created
  1201. + && h->def_dynamic
  1202. + && !h->def_regular)))
  1203. + {
  1204. + pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
  1205. + havr->possibly_dynamic_relocs, h->root.root.string);
  1206. + htab->srelgot->size += (havr->possibly_dynamic_relocs
  1207. + * sizeof(Elf32_External_Rela));
  1208. + }
  1209. +
  1210. + return TRUE;
  1211. +}
  1212. +
  1213. +/* (4) Calculate the sizes of the linker-generated sections and
  1214. + allocate memory for them. */
  1215. +
  1216. +static bfd_boolean
  1217. +avr32_elf_size_dynamic_sections (bfd *output_bfd,
  1218. + struct bfd_link_info *info)
  1219. +{
  1220. + struct elf_avr32_link_hash_table *htab;
  1221. + bfd *dynobj;
  1222. + asection *s;
  1223. + bfd *ibfd;
  1224. + bfd_boolean relocs;
  1225. +
  1226. + pr_debug("(4) size dynamic sections\n");
  1227. +
  1228. + htab = avr32_elf_hash_table(info);
  1229. + dynobj = htab->root.dynobj;
  1230. + BFD_ASSERT(dynobj != NULL);
  1231. +
  1232. + if (htab->root.dynamic_sections_created)
  1233. + {
  1234. + /* Initialize the contents of the .interp section to the name of
  1235. + the dynamic loader */
  1236. + if (info->executable)
  1237. + {
  1238. + s = bfd_get_section_by_name(dynobj, ".interp");
  1239. + BFD_ASSERT(s != NULL);
  1240. + s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
  1241. + s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
  1242. + }
  1243. + }
  1244. +
  1245. + if (htab->nr_got_holes > 0)
  1246. + {
  1247. + /* Allocate holes for the pigeonhole sort algorithm */
  1248. + pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
  1249. +
  1250. + /* Limit the memory usage by clipping the number of pigeonholes
  1251. + * at a predefined maximum. All entries with a higher refcount
  1252. + * will end up in the last pigeonhole. */
  1253. + if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
  1254. + {
  1255. + htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
  1256. +
  1257. + pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
  1258. + htab->nr_got_holes);
  1259. + }
  1260. + htab->got_hole = bfd_zalloc(output_bfd,
  1261. + sizeof(struct got_entry *)
  1262. + * (htab->nr_got_holes + 1));
  1263. + if (!htab->got_hole)
  1264. + return FALSE;
  1265. +
  1266. + /* Set up .got offsets for local syms. */
  1267. + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
  1268. + {
  1269. + struct got_entry **local_got;
  1270. + struct got_entry **end_local_got;
  1271. + Elf_Internal_Shdr *symtab_hdr;
  1272. + bfd_size_type locsymcount;
  1273. +
  1274. + pr_debug(" (4a) processing file %s...\n", ibfd->filename);
  1275. +
  1276. + BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
  1277. +
  1278. + local_got = elf_local_got_ents(ibfd);
  1279. + if (!local_got)
  1280. + continue;
  1281. +
  1282. + symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
  1283. + locsymcount = symtab_hdr->sh_info;
  1284. + end_local_got = local_got + locsymcount;
  1285. +
  1286. + for (; local_got < end_local_got; ++local_got)
  1287. + insert_got_entry(htab, *local_got);
  1288. + }
  1289. + }
  1290. +
  1291. + /* Allocate global sym .got entries and space for global sym
  1292. + dynamic relocs */
  1293. + elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
  1294. +
  1295. + /* Now that we have sorted the GOT entries, we are ready to
  1296. + assign offsets and determine the initial size of the GOT. */
  1297. + if (htab->sgot)
  1298. + assign_got_offsets(htab);
  1299. +
  1300. + /* Allocate space for local sym dynamic relocs */
  1301. + BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
  1302. + if (htab->local_dynamic_relocs)
  1303. + htab->srelgot->size += (htab->local_dynamic_relocs
  1304. + * sizeof(Elf32_External_Rela));
  1305. +
  1306. + /* We now have determined the sizes of the various dynamic
  1307. + sections. Allocate memory for them. */
  1308. + relocs = FALSE;
  1309. + for (s = dynobj->sections; s; s = s->next)
  1310. + {
  1311. + if ((s->flags & SEC_LINKER_CREATED) == 0)
  1312. + continue;
  1313. +
  1314. + if (s == htab->sgot
  1315. + || s == htab->sstub)
  1316. + {
  1317. + /* Strip this section if we don't need it */
  1318. + }
  1319. + else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
  1320. + {
  1321. + if (s->size != 0)
  1322. + relocs = TRUE;
  1323. +
  1324. + s->reloc_count = 0;
  1325. + }
  1326. + else
  1327. + {
  1328. + /* It's not one of our sections */
  1329. + continue;
  1330. + }
  1331. +
  1332. + if (s->size == 0)
  1333. + {
  1334. + /* Strip unneeded sections */
  1335. + pr_debug("Stripping section %s from output...\n", s->name);
  1336. + /* deleted function in 2.17
  1337. + _bfd_strip_section_from_output(info, s);
  1338. + */
  1339. + continue;
  1340. + }
  1341. +
  1342. + s->contents = bfd_zalloc(dynobj, s->size);
  1343. + if (s->contents == NULL)
  1344. + return FALSE;
  1345. + }
  1346. +
  1347. + if (htab->root.dynamic_sections_created)
  1348. + {
  1349. + /* Add some entries to the .dynamic section. We fill in the
  1350. + values later, in sh_elf_finish_dynamic_sections, but we
  1351. + must add the entries now so that we get the correct size for
  1352. + the .dynamic section. The DT_DEBUG entry is filled in by the
  1353. + dynamic linker and used by the debugger. */
  1354. +#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
  1355. +
  1356. + if (!add_dynamic_entry(DT_PLTGOT, 0))
  1357. + return FALSE;
  1358. + if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
  1359. + return FALSE;
  1360. +
  1361. + if (info->executable)
  1362. + {
  1363. + if (!add_dynamic_entry(DT_DEBUG, 0))
  1364. + return FALSE;
  1365. + }
  1366. + if (relocs)
  1367. + {
  1368. + if (!add_dynamic_entry(DT_RELA, 0)
  1369. + || !add_dynamic_entry(DT_RELASZ, 0)
  1370. + || !add_dynamic_entry(DT_RELAENT,
  1371. + sizeof(Elf32_External_Rela)))
  1372. + return FALSE;
  1373. + }
  1374. + }
  1375. +#undef add_dynamic_entry
  1376. +
  1377. + return TRUE;
  1378. +}
  1379. +
  1380. +
  1381. +/* Access to internal relocations, section contents and symbols.
  1382. + (stolen from the xtensa port) */
  1383. +
  1384. +static Elf_Internal_Rela *
  1385. +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
  1386. +static void
  1387. +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
  1388. +static void
  1389. +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
  1390. +static bfd_byte *
  1391. +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
  1392. +/*
  1393. +static void
  1394. +pin_contents (asection *sec, bfd_byte *contents);
  1395. +*/
  1396. +static void
  1397. +release_contents (asection *sec, bfd_byte *contents);
  1398. +static Elf_Internal_Sym *
  1399. +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
  1400. +/*
  1401. +static void
  1402. +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
  1403. +*/
  1404. +static void
  1405. +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
  1406. +
  1407. +/* During relaxation, we need to modify relocations, section contents,
  1408. + and symbol definitions, and we need to keep the original values from
  1409. + being reloaded from the input files, i.e., we need to "pin" the
  1410. + modified values in memory. We also want to continue to observe the
  1411. + setting of the "keep-memory" flag. The following functions wrap the
  1412. + standard BFD functions to take care of this for us. */
  1413. +
  1414. +static Elf_Internal_Rela *
  1415. +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
  1416. +{
  1417. + /* _bfd_elf_link_read_relocs knows about caching, so no need for us
  1418. + to be clever here. */
  1419. + return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
  1420. +}
  1421. +
  1422. +static void
  1423. +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
  1424. +{
  1425. + elf_section_data (sec)->relocs = internal_relocs;
  1426. +}
  1427. +
  1428. +static void
  1429. +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
  1430. +{
  1431. + if (internal_relocs
  1432. + && elf_section_data (sec)->relocs != internal_relocs)
  1433. + free (internal_relocs);
  1434. +}
  1435. +
  1436. +static bfd_byte *
  1437. +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
  1438. +{
  1439. + bfd_byte *contents;
  1440. + bfd_size_type sec_size;
  1441. +
  1442. + sec_size = bfd_get_section_limit (abfd, sec);
  1443. + contents = elf_section_data (sec)->this_hdr.contents;
  1444. +
  1445. + if (contents == NULL && sec_size != 0)
  1446. + {
  1447. + if (!bfd_malloc_and_get_section (abfd, sec, &contents))
  1448. + {
  1449. + if (contents)
  1450. + free (contents);
  1451. + return NULL;
  1452. + }
  1453. + if (keep_memory)
  1454. + elf_section_data (sec)->this_hdr.contents = contents;
  1455. + }
  1456. + return contents;
  1457. +}
  1458. +
  1459. +/*
  1460. +static void
  1461. +pin_contents (asection *sec, bfd_byte *contents)
  1462. +{
  1463. + elf_section_data (sec)->this_hdr.contents = contents;
  1464. +}
  1465. +*/
  1466. +static void
  1467. +release_contents (asection *sec, bfd_byte *contents)
  1468. +{
  1469. + if (contents && elf_section_data (sec)->this_hdr.contents != contents)
  1470. + free (contents);
  1471. +}
  1472. +
  1473. +static Elf_Internal_Sym *
  1474. +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
  1475. +{
  1476. + Elf_Internal_Shdr *symtab_hdr;
  1477. + Elf_Internal_Sym *isymbuf;
  1478. + size_t locsymcount;
  1479. +
  1480. + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
  1481. + locsymcount = symtab_hdr->sh_info;
  1482. +
  1483. + isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
  1484. + if (isymbuf == NULL && locsymcount != 0)
  1485. + {
  1486. + isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
  1487. + NULL, NULL, NULL);
  1488. + if (isymbuf && keep_memory)
  1489. + symtab_hdr->contents = (unsigned char *) isymbuf;
  1490. + }
  1491. +
  1492. + return isymbuf;
  1493. +}
  1494. +
  1495. +/*
  1496. +static void
  1497. +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
  1498. +{
  1499. + elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
  1500. +}
  1501. +
  1502. +*/
  1503. +static void
  1504. +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
  1505. +{
  1506. + if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
  1507. + != (unsigned char *)isymbuf))
  1508. + free (isymbuf);
  1509. +}
  1510. +
  1511. + /* Data structures used during relaxation. */
  1512. +
  1513. +enum relax_state_id {
  1514. + RS_ERROR = -1,
  1515. + RS_NONE = 0,
  1516. + RS_ALIGN,
  1517. + RS_CPENT,
  1518. + RS_PIC_CALL,
  1519. + RS_PIC_MCALL,
  1520. + RS_PIC_RCALL2,
  1521. + RS_PIC_RCALL1,
  1522. + RS_PIC_LDA,
  1523. + RS_PIC_LDW4,
  1524. + RS_PIC_LDW3,
  1525. + RS_PIC_SUB5,
  1526. + RS_NOPIC_MCALL,
  1527. + RS_NOPIC_RCALL2,
  1528. + RS_NOPIC_RCALL1,
  1529. + RS_NOPIC_LDW4,
  1530. + RS_NOPIC_LDDPC,
  1531. + RS_NOPIC_SUB5,
  1532. + RS_NOPIC_MOV2,
  1533. + RS_NOPIC_MOV1,
  1534. + RS_RCALL2,
  1535. + RS_RCALL1,
  1536. + RS_BRC2,
  1537. + RS_BRC1,
  1538. + RS_BRAL,
  1539. + RS_RJMP,
  1540. + RS_MAX,
  1541. +};
  1542. +
  1543. +enum reference_type {
  1544. + REF_ABSOLUTE,
  1545. + REF_PCREL,
  1546. + REF_CPOOL,
  1547. + REF_GOT,
  1548. +};
  1549. +
  1550. +struct relax_state
  1551. +{
  1552. + const char *name;
  1553. + enum relax_state_id id;
  1554. + enum relax_state_id direct;
  1555. + enum relax_state_id next;
  1556. + enum relax_state_id prev;
  1557. +
  1558. + enum reference_type reftype;
  1559. +
  1560. + unsigned int r_type;
  1561. +
  1562. + bfd_vma opcode;
  1563. + bfd_vma opcode_mask;
  1564. +
  1565. + bfd_signed_vma range_min;
  1566. + bfd_signed_vma range_max;
  1567. +
  1568. + bfd_size_type size;
  1569. +};
  1570. +
  1571. +/*
  1572. + * This is for relocs that
  1573. + * a) has an addend or is of type R_AVR32_DIFF32, and
  1574. + * b) references a different section than it's in, and
  1575. + * c) references a section that is relaxable
  1576. + *
  1577. + * as well as relocs that references the constant pool, in which case
  1578. + * the add_frag member points to the frag containing the constant pool
  1579. + * entry.
  1580. + *
  1581. + * Such relocs must be fixed up whenever we delete any code. Sections
  1582. + * that don't have any relocs with all of the above properties don't
  1583. + * have any additional reloc data, but sections that do will have
  1584. + * additional data for all its relocs.
  1585. + */
  1586. +struct avr32_reloc_data
  1587. +{
  1588. + struct fragment *add_frag;
  1589. + struct fragment *sub_frag;
  1590. +};
  1591. +
  1592. +/*
  1593. + * A 'fragment' is a relaxable entity, that is, code may be added or
  1594. + * deleted at the end of a fragment. When this happens, all subsequent
  1595. + * fragments in the list will have their offsets updated.
  1596. + */
  1597. +struct fragment
  1598. +{
  1599. + enum relax_state_id state;
  1600. + enum relax_state_id initial_state;
  1601. +
  1602. + Elf_Internal_Rela *rela;
  1603. + bfd_size_type size;
  1604. + bfd_vma offset;
  1605. + int size_adjust;
  1606. + int offset_adjust;
  1607. + bfd_boolean has_grown;
  1608. +
  1609. + /* Only used by constant pool entries. When this drops to zero, the
  1610. + frag is discarded (i.e. size_adjust is set to -4.) */
  1611. + int refcount;
  1612. +};
  1613. +
  1614. +struct avr32_relax_data
  1615. +{
  1616. + unsigned int frag_count;
  1617. + struct fragment *frag;
  1618. + struct avr32_reloc_data *reloc_data;
  1619. +
  1620. + /* TRUE if this section has one or more relaxable relocations */
  1621. + bfd_boolean is_relaxable;
  1622. + unsigned int iteration;
  1623. +};
  1624. +
  1625. +struct avr32_section_data
  1626. +{
  1627. + struct bfd_elf_section_data elf;
  1628. + struct avr32_relax_data relax_data;
  1629. +};
  1630. +
  1631. + /* Relax state definitions */
  1632. +
  1633. +#define PIC_MOV2_OPCODE 0xe0600000
  1634. +#define PIC_MOV2_MASK 0xe1e00000
  1635. +#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
  1636. +#define PIC_MOV2_RANGE_MAX (1048575 * 4)
  1637. +#define PIC_MCALL_OPCODE 0xf0160000
  1638. +#define PIC_MCALL_MASK 0xffff0000
  1639. +#define PIC_MCALL_RANGE_MIN (-131072)
  1640. +#define PIC_MCALL_RANGE_MAX (131068)
  1641. +#define RCALL2_OPCODE 0xe0a00000
  1642. +#define RCALL2_MASK 0xe1ef0000
  1643. +#define RCALL2_RANGE_MIN (-2097152)
  1644. +#define RCALL2_RANGE_MAX (2097150)
  1645. +#define RCALL1_OPCODE 0xc00c0000
  1646. +#define RCALL1_MASK 0xf00c0000
  1647. +#define RCALL1_RANGE_MIN (-1024)
  1648. +#define RCALL1_RANGE_MAX (1022)
  1649. +#define PIC_LDW4_OPCODE 0xecf00000
  1650. +#define PIC_LDW4_MASK 0xfff00000
  1651. +#define PIC_LDW4_RANGE_MIN (-32768)
  1652. +#define PIC_LDW4_RANGE_MAX (32767)
  1653. +#define PIC_LDW3_OPCODE 0x6c000000
  1654. +#define PIC_LDW3_MASK 0xfe000000
  1655. +#define PIC_LDW3_RANGE_MIN (0)
  1656. +#define PIC_LDW3_RANGE_MAX (124)
  1657. +#define SUB5_PC_OPCODE 0xfec00000
  1658. +#define SUB5_PC_MASK 0xfff00000
  1659. +#define SUB5_PC_RANGE_MIN (-32768)
  1660. +#define SUB5_PC_RANGE_MAX (32767)
  1661. +#define NOPIC_MCALL_OPCODE 0xf01f0000
  1662. +#define NOPIC_MCALL_MASK 0xffff0000
  1663. +#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
  1664. +#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
  1665. +#define NOPIC_LDW4_OPCODE 0xfef00000
  1666. +#define NOPIC_LDW4_MASK 0xfff00000
  1667. +#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
  1668. +#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
  1669. +#define LDDPC_OPCODE 0x48000000
  1670. +#define LDDPC_MASK 0xf8000000
  1671. +#define LDDPC_RANGE_MIN 0
  1672. +#define LDDPC_RANGE_MAX 508
  1673. +
  1674. +#define NOPIC_MOV2_OPCODE 0xe0600000
  1675. +#define NOPIC_MOV2_MASK 0xe1e00000
  1676. +#define NOPIC_MOV2_RANGE_MIN (-1048576)
  1677. +#define NOPIC_MOV2_RANGE_MAX (1048575)
  1678. +#define NOPIC_MOV1_OPCODE 0x30000000
  1679. +#define NOPIC_MOV1_MASK 0xf0000000
  1680. +#define NOPIC_MOV1_RANGE_MIN (-128)
  1681. +#define NOPIC_MOV1_RANGE_MAX (127)
  1682. +
  1683. +/* Only brc2 variants with cond[3] == 0 is considered, since the
  1684. + others are not relaxable. bral is a special case and is handled
  1685. + separately. */
  1686. +#define BRC2_OPCODE 0xe0800000
  1687. +#define BRC2_MASK 0xe1e80000
  1688. +#define BRC2_RANGE_MIN (-2097152)
  1689. +#define BRC2_RANGE_MAX (2097150)
  1690. +#define BRC1_OPCODE 0xc0000000
  1691. +#define BRC1_MASK 0xf0080000
  1692. +#define BRC1_RANGE_MIN (-256)
  1693. +#define BRC1_RANGE_MAX (254)
  1694. +#define BRAL_OPCODE 0xe08f0000
  1695. +#define BRAL_MASK 0xe1ef0000
  1696. +#define BRAL_RANGE_MIN BRC2_RANGE_MIN
  1697. +#define BRAL_RANGE_MAX BRC2_RANGE_MAX
  1698. +#define RJMP_OPCODE 0xc0080000
  1699. +#define RJMP_MASK 0xf00c0000
  1700. +#define RJMP_RANGE_MIN (-1024)
  1701. +#define RJMP_RANGE_MAX (1022)
  1702. +
  1703. +/* Define a relax state using the GOT */
  1704. +#define RG(id, dir, next, prev, r_type, opc, size) \
  1705. + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
  1706. + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
  1707. + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
  1708. +/* Define a relax state using the Constant Pool */
  1709. +#define RC(id, dir, next, prev, r_type, opc, size) \
  1710. + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
  1711. + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
  1712. + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
  1713. +
  1714. +/* Define a relax state using pc-relative direct reference */
  1715. +#define RP(id, dir, next, prev, r_type, opc, size) \
  1716. + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
  1717. + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
  1718. + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
  1719. +
  1720. +/* Define a relax state using non-pc-relative direct reference */
  1721. +#define RD(id, dir, next, prev, r_type, opc, size) \
  1722. + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
  1723. + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
  1724. + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
  1725. +
  1726. +/* Define a relax state that will be handled specially */
  1727. +#define RS(id, r_type, size) \
  1728. + { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
  1729. + R_AVR32_##r_type, 0, 0, 0, 0, size }
  1730. +
  1731. +const struct relax_state relax_state[RS_MAX] = {
  1732. + RS(NONE, NONE, 0),
  1733. + RS(ALIGN, ALIGN, 0),
  1734. + RS(CPENT, 32_CPENT, 4),
  1735. +
  1736. + RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
  1737. + RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
  1738. + RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
  1739. + RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
  1740. +
  1741. + RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
  1742. + RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
  1743. + RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
  1744. + RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
  1745. +
  1746. + RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
  1747. + RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
  1748. + RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
  1749. +
  1750. + RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
  1751. + RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
  1752. + RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
  1753. + RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
  1754. + RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
  1755. +
  1756. + RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
  1757. + RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
  1758. + RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
  1759. + RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
  1760. + RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
  1761. + RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
  1762. +};
  1763. +
  1764. +static bfd_boolean
  1765. +avr32_elf_new_section_hook(bfd *abfd, asection *sec)
  1766. +{
  1767. + struct avr32_section_data *sdata;
  1768. +
  1769. + sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
  1770. + if (!sdata)
  1771. + return FALSE;
  1772. +
  1773. + sec->used_by_bfd = sdata;
  1774. + return _bfd_elf_new_section_hook(abfd, sec);
  1775. +}
  1776. +
  1777. +static struct avr32_relax_data *
  1778. +avr32_relax_data(asection *sec)
  1779. +{
  1780. + struct avr32_section_data *sdata;
  1781. +
  1782. + BFD_ASSERT(sec->used_by_bfd);
  1783. +
  1784. + sdata = (struct avr32_section_data *)elf_section_data(sec);
  1785. + return &sdata->relax_data;
  1786. +}
  1787. +
  1788. + /* Link-time relaxation */
  1789. +
  1790. +static bfd_boolean
  1791. +avr32_elf_relax_section(bfd *abfd, asection *sec,
  1792. + struct bfd_link_info *info, bfd_boolean *again);
  1793. +
  1794. +enum relax_pass_id {
  1795. + RELAX_PASS_SIZE_FRAGS,
  1796. + RELAX_PASS_MOVE_DATA,
  1797. +};
  1798. +
  1799. +/* Stolen from the xtensa port */
  1800. +static int
  1801. +internal_reloc_compare (const void *ap, const void *bp)
  1802. +{
  1803. + const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
  1804. + const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
  1805. +
  1806. + if (a->r_offset != b->r_offset)
  1807. + return (a->r_offset - b->r_offset);
  1808. +
  1809. + /* We don't need to sort on these criteria for correctness,
  1810. + but enforcing a more strict ordering prevents unstable qsort
  1811. + from behaving differently with different implementations.
  1812. + Without the code below we get correct but different results
  1813. + on Solaris 2.7 and 2.8. We would like to always produce the
  1814. + same results no matter the host. */
  1815. +
  1816. + if (a->r_info != b->r_info)
  1817. + return (a->r_info - b->r_info);
  1818. +
  1819. + return (a->r_addend - b->r_addend);
  1820. +}
  1821. +
  1822. +static enum relax_state_id
  1823. +get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
  1824. + const Elf_Internal_Rela *rela)
  1825. +{
  1826. + bfd_byte *contents;
  1827. + bfd_vma insn;
  1828. + enum relax_state_id rs = RS_NONE;
  1829. +
  1830. + contents = retrieve_contents(abfd, sec, info->keep_memory);
  1831. + if (!contents)
  1832. + return RS_ERROR;
  1833. +
  1834. + insn = bfd_get_32(abfd, contents + rela->r_offset);
  1835. + if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
  1836. + rs = RS_RCALL2;
  1837. + else if ((insn & BRAL_MASK) == BRAL_OPCODE)
  1838. + /* Optimizing bral -> rjmp gets us into all kinds of
  1839. + trouble with jump tables. Better not do it. */
  1840. + rs = RS_NONE;
  1841. + else if ((insn & BRC2_MASK) == BRC2_OPCODE)
  1842. + rs = RS_BRC2;
  1843. +
  1844. + release_contents(sec, contents);
  1845. +
  1846. + return rs;
  1847. +}
  1848. +
  1849. +static enum relax_state_id
  1850. +get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
  1851. + const Elf_Internal_Rela *rela)
  1852. +{
  1853. + switch (ELF_R_TYPE(rela->r_info))
  1854. + {
  1855. + case R_AVR32_GOTCALL:
  1856. + return RS_PIC_CALL;
  1857. + case R_AVR32_GOT18SW:
  1858. + return RS_PIC_MCALL;
  1859. + case R_AVR32_LDA_GOT:
  1860. + return RS_PIC_LDA;
  1861. + case R_AVR32_GOT16S:
  1862. + return RS_PIC_LDW4;
  1863. + case R_AVR32_CPCALL:
  1864. + return RS_NOPIC_MCALL;
  1865. + case R_AVR32_16_CP:
  1866. + return RS_NOPIC_LDW4;
  1867. + case R_AVR32_9W_CP:
  1868. + return RS_NOPIC_LDDPC;
  1869. + case R_AVR32_ALIGN:
  1870. + return RS_ALIGN;
  1871. + case R_AVR32_32_CPENT:
  1872. + return RS_CPENT;
  1873. + case R_AVR32_22H_PCREL:
  1874. + return get_pcrel22_relax_state(abfd, sec, info, rela);
  1875. + case R_AVR32_9H_PCREL:
  1876. + return RS_BRC1;
  1877. + default:
  1878. + return RS_NONE;
  1879. + }
  1880. +}
  1881. +
  1882. +static bfd_boolean
  1883. +reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
  1884. +{
  1885. + switch (ELF_R_TYPE(rela->r_info))
  1886. + {
  1887. + case R_AVR32_CPCALL:
  1888. + case R_AVR32_16_CP:
  1889. + case R_AVR32_9W_CP:
  1890. + return TRUE;
  1891. + default:
  1892. + return FALSE;
  1893. + }
  1894. +}
  1895. +
  1896. +static struct fragment *
  1897. +new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
  1898. + struct avr32_relax_data *rd, enum relax_state_id state,
  1899. + Elf_Internal_Rela *rela)
  1900. +{
  1901. + struct fragment *frag;
  1902. + bfd_size_type r_size;
  1903. + bfd_vma r_offset;
  1904. + unsigned int i = rd->frag_count;
  1905. +
  1906. + BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
  1907. +
  1908. + rd->frag_count++;
  1909. + frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
  1910. + if (!frag)
  1911. + return NULL;
  1912. + rd->frag = frag;
  1913. +
  1914. + frag += i;
  1915. + memset(frag, 0, sizeof(struct fragment));
  1916. +
  1917. + if (state == RS_ALIGN)
  1918. + r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
  1919. + & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
  1920. + else
  1921. + r_size = relax_state[state].size;
  1922. +
  1923. + if (rela)
  1924. + r_offset = rela->r_offset;
  1925. + else
  1926. + r_offset = sec->size;
  1927. +
  1928. + if (i == 0)
  1929. + {
  1930. + frag->offset = 0;
  1931. + frag->size = r_offset + r_size;
  1932. + }
  1933. + else
  1934. + {
  1935. + frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
  1936. + frag->size = r_offset + r_size - frag->offset;
  1937. + }
  1938. +
  1939. + if (state != RS_CPENT)
  1940. + /* Make sure we don't discard this frag */
  1941. + frag->refcount = 1;
  1942. +
  1943. + frag->initial_state = frag->state = state;
  1944. + frag->rela = rela;
  1945. +
  1946. + return frag;
  1947. +}
  1948. +
  1949. +static struct fragment *
  1950. +find_frag(asection *sec, bfd_vma offset)
  1951. +{
  1952. + struct fragment *first, *last;
  1953. + struct avr32_relax_data *rd = avr32_relax_data(sec);
  1954. +
  1955. + if (rd->frag_count == 0)
  1956. + return NULL;
  1957. +
  1958. + first = &rd->frag[0];
  1959. + last = &rd->frag[rd->frag_count - 1];
  1960. +
  1961. + /* This may be a reloc referencing the end of a section. The last
  1962. + frag will never have a reloc associated with it, so its size will
  1963. + never change, thus the offset adjustment of the last frag will
  1964. + always be the same as the offset adjustment of the end of the
  1965. + section. */
  1966. + if (offset == sec->size)
  1967. + {
  1968. + BFD_ASSERT(last->offset + last->size == sec->size);
  1969. + BFD_ASSERT(!last->rela);
  1970. + return last;
  1971. + }
  1972. +
  1973. + while (first <= last)
  1974. + {
  1975. + struct fragment *mid;
  1976. +
  1977. + mid = (last - first) / 2 + first;
  1978. + if ((mid->offset + mid->size) <= offset)
  1979. + first = mid + 1;
  1980. + else if (mid->offset > offset)
  1981. + last = mid - 1;
  1982. + else
  1983. + return mid;
  1984. + }
  1985. +
  1986. + return NULL;
  1987. +}
  1988. +
  1989. +/* Look through all relocs in a section and determine if any relocs
  1990. + may be affected by relaxation in other sections. If so, allocate
  1991. + an array of additional relocation data which links the affected
  1992. + relocations to the frag(s) where the relaxation may occur.
  1993. +
  1994. + This function also links cpool references to cpool entries and
  1995. + increments the refcount of the latter when this happens. */
  1996. +
  1997. +static bfd_boolean
  1998. +allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
  1999. + struct bfd_link_info *info)
  2000. +{
  2001. + Elf_Internal_Shdr *symtab_hdr;
  2002. + Elf_Internal_Sym *isymbuf = NULL;
  2003. + struct avr32_relax_data *rd;
  2004. + unsigned int i;
  2005. + bfd_boolean ret = FALSE;
  2006. +
  2007. + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  2008. + rd = avr32_relax_data(sec);
  2009. +
  2010. + RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
  2011. +
  2012. + for (i = 0; i < sec->reloc_count; i++)
  2013. + {
  2014. + Elf_Internal_Rela *rel = &relocs[i];
  2015. + asection *sym_sec;
  2016. + unsigned long r_symndx;
  2017. + bfd_vma sym_value;
  2018. +
  2019. + if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
  2020. + && !reloc_is_cpool_ref(rel))
  2021. + continue;
  2022. +
  2023. + r_symndx = ELF_R_SYM(rel->r_info);
  2024. +
  2025. + if (r_symndx < symtab_hdr->sh_info)
  2026. + {
  2027. + Elf_Internal_Sym *isym;
  2028. +
  2029. + if (!isymbuf)
  2030. + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
  2031. + if (!isymbuf)
  2032. + return FALSE;
  2033. +
  2034. + isym = &isymbuf[r_symndx];
  2035. + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
  2036. + sym_value = isym->st_value;
  2037. + }
  2038. + else
  2039. + {
  2040. + struct elf_link_hash_entry *h;
  2041. +
  2042. + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
  2043. +
  2044. + while (h->root.type == bfd_link_hash_indirect
  2045. + || h->root.type == bfd_link_hash_warning)
  2046. + h = (struct elf_link_hash_entry *)h->root.u.i.link;
  2047. +
  2048. + if (h->root.type != bfd_link_hash_defined
  2049. + && h->root.type != bfd_link_hash_defweak)
  2050. + continue;
  2051. +
  2052. + sym_sec = h->root.u.def.section;
  2053. + sym_value = h->root.u.def.value;
  2054. + }
  2055. +
  2056. + if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
  2057. + {
  2058. + bfd_size_type size;
  2059. + struct fragment *frag;
  2060. +
  2061. + if (!rd->reloc_data)
  2062. + {
  2063. + size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
  2064. + rd->reloc_data = bfd_zalloc(abfd, size);
  2065. + if (!rd->reloc_data)
  2066. + goto out;
  2067. + }
  2068. +
  2069. + RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
  2070. + i, rel->r_offset, sym_value, rel->r_addend);
  2071. +
  2072. + frag = find_frag(sym_sec, sym_value + rel->r_addend);
  2073. + BFD_ASSERT(frag);
  2074. + rd->reloc_data[i].add_frag = frag;
  2075. +
  2076. + RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
  2077. + frag->rela ? frag->rela->r_offset : sym_sec->size);
  2078. +
  2079. + if (reloc_is_cpool_ref(rel))
  2080. + {
  2081. + BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
  2082. + frag->refcount++;
  2083. + }
  2084. +
  2085. + if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
  2086. + {
  2087. + bfd_byte *contents;
  2088. + bfd_signed_vma diff;
  2089. +
  2090. + contents = retrieve_contents(abfd, sec, info->keep_memory);
  2091. + if (!contents)
  2092. + goto out;
  2093. +
  2094. + diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
  2095. + frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
  2096. + BFD_ASSERT(frag);
  2097. + rd->reloc_data[i].sub_frag = frag;
  2098. +
  2099. + release_contents(sec, contents);
  2100. + }
  2101. + }
  2102. + }
  2103. +
  2104. + ret = TRUE;
  2105. +
  2106. + out:
  2107. + release_local_syms(abfd, isymbuf);
  2108. + return ret;
  2109. +}
  2110. +
  2111. +static bfd_boolean
  2112. +global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
  2113. + struct bfd_link_info *info ATTRIBUTE_UNUSED)
  2114. +{
  2115. + struct fragment *frag;
  2116. + asection *sec;
  2117. +
  2118. + if (havr->root.root.type != bfd_link_hash_defined
  2119. + && havr->root.root.type != bfd_link_hash_defweak)
  2120. + return TRUE;
  2121. +
  2122. + sec = havr->root.root.u.def.section;
  2123. + if (bfd_is_const_section(sec)
  2124. + || !avr32_relax_data(sec)->is_relaxable)
  2125. + return TRUE;
  2126. +
  2127. + frag = find_frag(sec, havr->root.root.u.def.value);
  2128. + if (!frag)
  2129. + {
  2130. + unsigned int i;
  2131. + struct avr32_relax_data *rd = avr32_relax_data(sec);
  2132. +
  2133. + RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
  2134. + sec->owner->filename, havr->root.root.root.string,
  2135. + sec->name, havr->root.root.u.def.value, sec->size);
  2136. + for (i = 0; i < rd->frag_count; i++)
  2137. + RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
  2138. + rd->frag[i].offset + rd->frag[i].size);
  2139. + }
  2140. + BFD_ASSERT(frag);
  2141. +
  2142. + havr->sym_frag = frag;
  2143. + return TRUE;
  2144. +}
  2145. +
  2146. +static bfd_boolean
  2147. +analyze_relocations(struct bfd_link_info *info)
  2148. +{
  2149. + bfd *abfd;
  2150. + asection *sec;
  2151. +
  2152. + /* Divide all relaxable sections into fragments */
  2153. + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
  2154. + {
  2155. + if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
  2156. + {
  2157. + if (!(*info->callbacks->warning)
  2158. + (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
  2159. + return FALSE;
  2160. + continue;
  2161. + }
  2162. +
  2163. + for (sec = abfd->sections; sec; sec = sec->next)
  2164. + {
  2165. + struct avr32_relax_data *rd;
  2166. + struct fragment *frag;
  2167. + Elf_Internal_Rela *relocs;
  2168. + unsigned int i;
  2169. + bfd_boolean ret = TRUE;
  2170. +
  2171. + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
  2172. + continue;
  2173. +
  2174. + rd = avr32_relax_data(sec);
  2175. +
  2176. + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
  2177. + if (!relocs)
  2178. + return FALSE;
  2179. +
  2180. + qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
  2181. + internal_reloc_compare);
  2182. +
  2183. + for (i = 0; i < sec->reloc_count; i++)
  2184. + {
  2185. + enum relax_state_id state;
  2186. +
  2187. + ret = FALSE;
  2188. + state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
  2189. + if (state == RS_ERROR)
  2190. + break;
  2191. +
  2192. + if (state)
  2193. + {
  2194. + frag = new_frag(abfd, sec, rd, state, &relocs[i]);
  2195. + if (!frag)
  2196. + break;
  2197. +
  2198. + pin_internal_relocs(sec, relocs);
  2199. + rd->is_relaxable = TRUE;
  2200. + }
  2201. +
  2202. + ret = TRUE;
  2203. + }
  2204. +
  2205. + release_internal_relocs(sec, relocs);
  2206. + if (!ret)
  2207. + return ret;
  2208. +
  2209. + if (rd->is_relaxable)
  2210. + {
  2211. + frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
  2212. + if (!frag)
  2213. + return FALSE;
  2214. + }
  2215. + }
  2216. + }
  2217. +
  2218. + /* Link each global symbol to the fragment where it's defined. */
  2219. + elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
  2220. +
  2221. + /* Do the same for local symbols. */
  2222. + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
  2223. + {
  2224. + Elf_Internal_Sym *isymbuf, *isym;
  2225. + struct fragment **local_sym_frag;
  2226. + unsigned int i, sym_count;
  2227. +
  2228. + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
  2229. + if (sym_count == 0)
  2230. + continue;
  2231. +
  2232. + local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
  2233. + if (!local_sym_frag)
  2234. + return FALSE;
  2235. + elf_tdata(abfd)->local_sym_frag = local_sym_frag;
  2236. +
  2237. + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
  2238. + if (!isymbuf)
  2239. + return FALSE;
  2240. +
  2241. + for (i = 0; i < sym_count; i++)
  2242. + {
  2243. + struct avr32_relax_data *rd;
  2244. + struct fragment *frag;
  2245. + asection *sec;
  2246. +
  2247. + isym = &isymbuf[i];
  2248. +
  2249. + sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
  2250. + if (!sec)
  2251. + continue;
  2252. +
  2253. + rd = avr32_relax_data(sec);
  2254. + if (!rd->is_relaxable)
  2255. + continue;
  2256. +
  2257. + frag = find_frag(sec, isym->st_value);
  2258. + BFD_ASSERT(frag);
  2259. +
  2260. + local_sym_frag[i] = frag;
  2261. + }
  2262. +
  2263. + release_local_syms(abfd, isymbuf);
  2264. + }
  2265. +
  2266. + /* And again for relocs with addends and constant pool references */
  2267. + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
  2268. + for (sec = abfd->sections; sec; sec = sec->next)
  2269. + {
  2270. + Elf_Internal_Rela *relocs;
  2271. + bfd_boolean ret;
  2272. +
  2273. + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
  2274. + continue;
  2275. +
  2276. + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
  2277. + if (!relocs)
  2278. + return FALSE;
  2279. +
  2280. + ret = allocate_reloc_data(abfd, sec, relocs, info);
  2281. +
  2282. + release_internal_relocs(sec, relocs);
  2283. + if (ret == FALSE)
  2284. + return ret;
  2285. + }
  2286. +
  2287. + return TRUE;
  2288. +}
  2289. +
  2290. +static bfd_boolean
  2291. +rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
  2292. + bfd_vma symval, bfd_vma addr, struct got_entry *got,
  2293. + struct avr32_reloc_data *ind_data,
  2294. + bfd_signed_vma offset_adjust)
  2295. +{
  2296. + bfd_signed_vma target = 0;
  2297. +
  2298. + switch (rs->reftype)
  2299. + {
  2300. + case REF_ABSOLUTE:
  2301. + target = symval;
  2302. + break;
  2303. + case REF_PCREL:
  2304. + target = symval - addr;
  2305. + break;
  2306. + case REF_CPOOL:
  2307. + /* cpool frags are always in the same section and always after
  2308. + all frags referring to it. So it's always correct to add in
  2309. + offset_adjust here. */
  2310. + target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
  2311. + + offset_adjust - frag->offset - frag->offset_adjust);
  2312. + break;
  2313. + case REF_GOT:
  2314. + target = got->offset;
  2315. + break;
  2316. + default:
  2317. + abort();
  2318. + }
  2319. +
  2320. + if (target >= rs->range_min && target <= rs->range_max)
  2321. + return TRUE;
  2322. + else
  2323. + return FALSE;
  2324. +}
  2325. +
  2326. +static bfd_boolean
  2327. +avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
  2328. +{
  2329. + struct elf_avr32_link_hash_table *htab;
  2330. + struct avr32_relax_data *rd;
  2331. + Elf_Internal_Shdr *symtab_hdr;
  2332. + Elf_Internal_Rela *relocs = NULL;
  2333. + Elf_Internal_Sym *isymbuf = NULL;
  2334. + struct got_entry **local_got_ents;
  2335. + struct fragment **local_sym_frag;
  2336. + bfd_boolean ret = FALSE;
  2337. + bfd_signed_vma delta = 0;
  2338. + unsigned int i;
  2339. +
  2340. + htab = avr32_elf_hash_table(info);
  2341. + rd = avr32_relax_data(sec);
  2342. +
  2343. + if (sec == htab->sgot)
  2344. + {
  2345. + RDBG("Relaxing GOT section (vma: 0x%lx)\n",
  2346. + sec->output_section->vma + sec->output_offset);
  2347. + if (assign_got_offsets(htab))
  2348. + htab->repeat_pass = TRUE;
  2349. + return TRUE;
  2350. + }
  2351. +
  2352. + if (!rd->is_relaxable)
  2353. + return TRUE;
  2354. +
  2355. + if (!sec->rawsize)
  2356. + sec->rawsize = sec->size;
  2357. +
  2358. + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  2359. + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
  2360. + if (!relocs)
  2361. + goto out;
  2362. +
  2363. + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
  2364. + if (!isymbuf)
  2365. + goto out;
  2366. +
  2367. + local_got_ents = elf_local_got_ents(abfd);
  2368. + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
  2369. +
  2370. + RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
  2371. + abfd->filename, sec->name,
  2372. + sec->output_section->vma + sec->output_offset, sec->size);
  2373. +
  2374. + for (i = 0; i < rd->frag_count; i++)
  2375. + {
  2376. + struct fragment *frag = &rd->frag[i];
  2377. + struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
  2378. + const struct relax_state *state, *next_state;
  2379. + struct fragment *target_frag = NULL;
  2380. + asection *sym_sec = NULL;
  2381. + Elf_Internal_Rela *rela;
  2382. + struct got_entry *got;
  2383. + bfd_vma symval, r_offset, addend, addr;
  2384. + bfd_signed_vma size_adjust = 0, distance;
  2385. + unsigned long r_symndx;
  2386. + bfd_boolean defined = TRUE, dynamic = FALSE;
  2387. + unsigned char sym_type;
  2388. +
  2389. + frag->offset_adjust += delta;
  2390. + state = next_state = &relax_state[frag->state];
  2391. + rela = frag->rela;
  2392. +
  2393. + BFD_ASSERT(state->id == frag->state);
  2394. +
  2395. + RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
  2396. + (frag->offset_adjust < 0)?'-':'+',
  2397. + abs(frag->offset_adjust), state->name, state->size);
  2398. +
  2399. + if (!rela)
  2400. + {
  2401. + RDBG(": no reloc, ignoring\n");
  2402. + continue;
  2403. + }
  2404. +
  2405. + BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
  2406. + BFD_ASSERT(state != RS_NONE);
  2407. +
  2408. + r_offset = rela->r_offset + frag->offset_adjust;
  2409. + addr = sec->output_section->vma + sec->output_offset + r_offset;
  2410. +
  2411. + switch (frag->state)
  2412. + {
  2413. + case RS_ALIGN:
  2414. + size_adjust = ((addr + (1 << rela->r_addend) - 1)
  2415. + & ~((1 << rela->r_addend) - 1));
  2416. + size_adjust -= (sec->output_section->vma + sec->output_offset
  2417. + + frag->offset + frag->offset_adjust
  2418. + + frag->size + frag->size_adjust);
  2419. +
  2420. + RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
  2421. + frag->size + frag->size_adjust + size_adjust);
  2422. + break;
  2423. +
  2424. + case RS_CPENT:
  2425. + if (frag->refcount == 0 && frag->size_adjust == 0)
  2426. + {
  2427. + RDBG(": discarding frag\n");
  2428. + size_adjust = -4;
  2429. + }
  2430. + else if (frag->refcount > 0 && frag->size_adjust < 0)
  2431. + {
  2432. + RDBG(": un-discarding frag\n");
  2433. + size_adjust = 4;
  2434. + }
  2435. + break;
  2436. +
  2437. + default:
  2438. + if (rd->reloc_data)
  2439. + r_data = &rd->reloc_data[frag->rela - relocs];
  2440. +
  2441. + /* If this is a cpool reference, we want the symbol that the
  2442. + cpool entry refers to, not the symbol for the cpool entry
  2443. + itself, as we already know what frag it's in. */
  2444. + if (relax_state[frag->initial_state].reftype == REF_CPOOL)
  2445. + {
  2446. + Elf_Internal_Rela *irela = r_data->add_frag->rela;
  2447. +
  2448. + r_symndx = ELF_R_SYM(irela->r_info);
  2449. + addend = irela->r_addend;
  2450. +
  2451. + /* The constant pool must be in the same section as the
  2452. + reloc referring to it. */
  2453. + BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
  2454. +
  2455. + ind_data = r_data;
  2456. + r_data = &rd->reloc_data[irela - relocs];
  2457. + }
  2458. + else
  2459. + {
  2460. + r_symndx = ELF_R_SYM(rela->r_info);
  2461. + addend = rela->r_addend;
  2462. + }
  2463. +
  2464. + /* Get the value of the symbol referred to by the reloc. */
  2465. + if (r_symndx < symtab_hdr->sh_info)
  2466. + {
  2467. + Elf_Internal_Sym *isym;
  2468. +
  2469. + isym = isymbuf + r_symndx;
  2470. + symval = 0;
  2471. +
  2472. + RDBG(" local sym %lu: ", r_symndx);
  2473. +
  2474. + if (isym->st_shndx == SHN_UNDEF)
  2475. + defined = FALSE;
  2476. + else if (isym->st_shndx == SHN_ABS)
  2477. + sym_sec = bfd_abs_section_ptr;
  2478. + else if (isym->st_shndx == SHN_COMMON)
  2479. + sym_sec = bfd_com_section_ptr;
  2480. + else
  2481. + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
  2482. +
  2483. + symval = isym->st_value;
  2484. + sym_type = ELF_ST_TYPE(isym->st_info);
  2485. + target_frag = local_sym_frag[r_symndx];
  2486. +
  2487. + if (local_got_ents)
  2488. + got = local_got_ents[r_symndx];
  2489. + else
  2490. + got = NULL;
  2491. + }
  2492. + else
  2493. + {
  2494. + /* Global symbol */
  2495. + unsigned long index;
  2496. + struct elf_link_hash_entry *h;
  2497. + struct elf_avr32_link_hash_entry *havr;
  2498. +
  2499. + index = r_symndx - symtab_hdr->sh_info;
  2500. + h = elf_sym_hashes(abfd)[index];
  2501. + BFD_ASSERT(h != NULL);
  2502. +
  2503. + while (h->root.type == bfd_link_hash_indirect
  2504. + || h->root.type == bfd_link_hash_warning)
  2505. + h = (struct elf_link_hash_entry *)h->root.u.i.link;
  2506. +
  2507. + havr = (struct elf_avr32_link_hash_entry *)h;
  2508. + got = h->got.glist;
  2509. +
  2510. + symval = 0;
  2511. +
  2512. + RDBG(" %s: ", h->root.root.string);
  2513. +
  2514. + if (h->root.type != bfd_link_hash_defined
  2515. + && h->root.type != bfd_link_hash_defweak)
  2516. + {
  2517. + RDBG("(undef)");
  2518. + defined = FALSE;
  2519. + }
  2520. + else if ((info->shared && !info->symbolic && h->dynindx != -1)
  2521. + || (htab->root.dynamic_sections_created
  2522. + && h->def_dynamic && !h->def_regular))
  2523. + {
  2524. + RDBG("(dynamic)");
  2525. + dynamic = TRUE;
  2526. + sym_sec = h->root.u.def.section;
  2527. + }
  2528. + else
  2529. + {
  2530. + sym_sec = h->root.u.def.section;
  2531. + symval = h->root.u.def.value;
  2532. + target_frag = havr->sym_frag;
  2533. + }
  2534. +
  2535. + sym_type = h->type;
  2536. + }
  2537. +
  2538. + /* Thanks to elf32-ppc for this one. */
  2539. + if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
  2540. + {
  2541. + /* At this stage in linking, no SEC_MERGE symbol has been
  2542. + adjusted, so all references to such symbols need to be
  2543. + passed through _bfd_merged_section_offset. (Later, in
  2544. + relocate_section, all SEC_MERGE symbols *except* for
  2545. + section symbols have been adjusted.)
  2546. +
  2547. + SEC_MERGE sections are not relaxed by us, as they
  2548. + shouldn't contain any code. */
  2549. +
  2550. + BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
  2551. +
  2552. + /* gas may reduce relocations against symbols in SEC_MERGE
  2553. + sections to a relocation against the section symbol when
  2554. + the original addend was zero. When the reloc is against
  2555. + a section symbol we should include the addend in the
  2556. + offset passed to _bfd_merged_section_offset, since the
  2557. + location of interest is the original symbol. On the
  2558. + other hand, an access to "sym+addend" where "sym" is not
  2559. + a section symbol should not include the addend; Such an
  2560. + access is presumed to be an offset from "sym"; The
  2561. + location of interest is just "sym". */
  2562. + RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
  2563. + (sym_type == STT_SECTION)?"section":"not section",
  2564. + sym_sec->output_section->vma + sym_sec->output_offset,
  2565. + symval, addend);
  2566. +
  2567. + if (sym_type == STT_SECTION)
  2568. + symval += addend;
  2569. +
  2570. + symval = (_bfd_merged_section_offset
  2571. + (abfd, &sym_sec,
  2572. + elf_section_data(sym_sec)->sec_info, symval));
  2573. +
  2574. + if (sym_type != STT_SECTION)
  2575. + symval += addend;
  2576. + }
  2577. + else
  2578. + symval += addend;
  2579. +
  2580. + if (defined && !dynamic)
  2581. + {
  2582. + RDBG("0x%lx+0x%lx",
  2583. + sym_sec->output_section->vma + sym_sec->output_offset,
  2584. + symval);
  2585. + symval += sym_sec->output_section->vma + sym_sec->output_offset;
  2586. + }
  2587. +
  2588. + if (r_data && r_data->add_frag)
  2589. + /* If the add_frag pointer is set, it means that this reloc
  2590. + has an addend that may be affected by relaxation. */
  2591. + target_frag = r_data->add_frag;
  2592. +
  2593. + if (target_frag)
  2594. + {
  2595. + symval += target_frag->offset_adjust;
  2596. +
  2597. + /* If target_frag comes after this frag in the same
  2598. + section, we should assume that it will be moved by
  2599. + the same amount we are. */
  2600. + if ((target_frag - rd->frag) < (int)rd->frag_count
  2601. + && target_frag > frag)
  2602. + symval += delta;
  2603. + }
  2604. +
  2605. + distance = symval - addr;
  2606. +
  2607. + /* First, try to make a direct reference. If the symbol is
  2608. + dynamic or undefined, we must take care not to change its
  2609. + reference type, that is, we can't make it direct.
  2610. +
  2611. + Also, it seems like some sections may actually be resized
  2612. + after the relaxation code is done, so we can't really
  2613. + trust that our "distance" is correct. There's really no
  2614. + easy solution to this problem, so we'll just disallow
  2615. + direct references to SEC_DATA sections.
  2616. +
  2617. + Oh, and .bss isn't actually SEC_DATA, so we disallow
  2618. + !SEC_HAS_CONTENTS as well. */
  2619. + if (!dynamic && defined
  2620. + && (htab->direct_data_refs
  2621. + || (!(sym_sec->flags & SEC_DATA)
  2622. + && (sym_sec->flags & SEC_HAS_CONTENTS)))
  2623. + && next_state->direct)
  2624. + {
  2625. + next_state = &relax_state[next_state->direct];
  2626. + RDBG(" D-> %s", next_state->name);
  2627. + }
  2628. +
  2629. + /* Iterate backwards until we find a state that fits. */
  2630. + while (next_state->prev
  2631. + && !rs_is_good_enough(next_state, frag, symval, addr,
  2632. + got, ind_data, delta))
  2633. + {
  2634. + next_state = &relax_state[next_state->prev];
  2635. + RDBG(" P-> %s", next_state->name);
  2636. + }
  2637. +
  2638. + /* Then try to find the best possible state. */
  2639. + while (next_state->next)
  2640. + {
  2641. + const struct relax_state *candidate;
  2642. +
  2643. + candidate = &relax_state[next_state->next];
  2644. + if (!rs_is_good_enough(candidate, frag, symval, addr, got,
  2645. + ind_data, delta))
  2646. + break;
  2647. +
  2648. + next_state = candidate;
  2649. + RDBG(" N-> %s", next_state->name);
  2650. + }
  2651. +
  2652. + RDBG(" [size %ld]\n", next_state->size);
  2653. +
  2654. + BFD_ASSERT(next_state->id);
  2655. + BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
  2656. +
  2657. + size_adjust = next_state->size - state->size;
  2658. +
  2659. + /* There's a theoretical possibility that shrinking one frag
  2660. + may cause another to grow, which may cause the first one to
  2661. + grow as well, and we're back where we started. Avoid this
  2662. + scenario by disallowing a frag that has grown to ever
  2663. + shrink again. */
  2664. + if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
  2665. + {
  2666. + if (frag->has_grown)
  2667. + next_state = state;
  2668. + else
  2669. + unref_got_entry(htab, got);
  2670. + }
  2671. + else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
  2672. + {
  2673. + ref_got_entry(htab, got);
  2674. + frag->has_grown = TRUE;
  2675. + }
  2676. + else if (state->reftype == REF_CPOOL
  2677. + && next_state->reftype != REF_CPOOL)
  2678. + {
  2679. + if (frag->has_grown)
  2680. + next_state = state;
  2681. + else
  2682. + ind_data->add_frag->refcount--;
  2683. + }
  2684. + else if (state->reftype != REF_CPOOL
  2685. + && next_state->reftype == REF_CPOOL)
  2686. + {
  2687. + ind_data->add_frag->refcount++;
  2688. + frag->has_grown = TRUE;
  2689. + }
  2690. + else
  2691. + {
  2692. + if (frag->has_grown && size_adjust < 0)
  2693. + next_state = state;
  2694. + else if (size_adjust > 0)
  2695. + frag->has_grown = TRUE;
  2696. + }
  2697. +
  2698. + size_adjust = next_state->size - state->size;
  2699. + frag->state = next_state->id;
  2700. +
  2701. + break;
  2702. + }
  2703. +
  2704. + if (size_adjust)
  2705. + htab->repeat_pass = TRUE;
  2706. +
  2707. + frag->size_adjust += size_adjust;
  2708. + sec->size += size_adjust;
  2709. + delta += size_adjust;
  2710. +
  2711. + BFD_ASSERT((frag->offset + frag->offset_adjust
  2712. + + frag->size + frag->size_adjust)
  2713. + == (frag[1].offset + frag[1].offset_adjust + delta));
  2714. + }
  2715. +
  2716. + ret = TRUE;
  2717. +
  2718. + out:
  2719. + release_local_syms(abfd, isymbuf);
  2720. + release_internal_relocs(sec, relocs);
  2721. + return ret;
  2722. +}
  2723. +
  2724. +static bfd_boolean
  2725. +adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
  2726. + struct bfd_link_info *info ATTRIBUTE_UNUSED)
  2727. +{
  2728. + struct elf_link_hash_entry *h = &havr->root;
  2729. +
  2730. + if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
  2731. + || h->root.type == bfd_link_hash_defweak))
  2732. + {
  2733. + RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
  2734. + h->root.root.string, h->root.u.def.value,
  2735. + h->root.u.def.value + havr->sym_frag->offset_adjust);
  2736. + h->root.u.def.value += havr->sym_frag->offset_adjust;
  2737. + }
  2738. + return TRUE;
  2739. +}
  2740. +
  2741. +static bfd_boolean
  2742. +adjust_syms(struct bfd_link_info *info)
  2743. +{
  2744. + struct elf_avr32_link_hash_table *htab;
  2745. + bfd *abfd;
  2746. +
  2747. + htab = avr32_elf_hash_table(info);
  2748. + elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
  2749. +
  2750. + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
  2751. + {
  2752. + Elf_Internal_Sym *isymbuf;
  2753. + struct fragment **local_sym_frag, *frag;
  2754. + unsigned int i, sym_count;
  2755. +
  2756. + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
  2757. + if (sym_count == 0)
  2758. + continue;
  2759. +
  2760. + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
  2761. + if (!isymbuf)
  2762. + return FALSE;
  2763. +
  2764. + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
  2765. +
  2766. + for (i = 0; i < sym_count; i++)
  2767. + {
  2768. + frag = local_sym_frag[i];
  2769. + if (frag)
  2770. + {
  2771. + RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
  2772. + abfd->filename, i, isymbuf[i].st_value,
  2773. + isymbuf[i].st_value + frag->offset_adjust);
  2774. + isymbuf[i].st_value += frag->offset_adjust;
  2775. + }
  2776. + }
  2777. +
  2778. + release_local_syms(abfd, isymbuf);
  2779. + }
  2780. +
  2781. + htab->symbols_adjusted = TRUE;
  2782. + return TRUE;
  2783. +}
  2784. +
  2785. +static bfd_boolean
  2786. +adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
  2787. +{
  2788. + struct avr32_relax_data *rd;
  2789. + Elf_Internal_Rela *relocs;
  2790. + Elf_Internal_Shdr *symtab_hdr;
  2791. + unsigned int i;
  2792. + bfd_boolean ret = FALSE;
  2793. +
  2794. + rd = avr32_relax_data(sec);
  2795. + if (!rd->reloc_data)
  2796. + return TRUE;
  2797. +
  2798. + RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
  2799. + sec->reloc_count);
  2800. +
  2801. + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
  2802. + if (!relocs)
  2803. + return FALSE;
  2804. +
  2805. + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  2806. +
  2807. + for (i = 0; i < sec->reloc_count; i++)
  2808. + {
  2809. + Elf_Internal_Rela *rela = &relocs[i];
  2810. + struct avr32_reloc_data *r_data = &rd->reloc_data[i];
  2811. + struct fragment *sym_frag;
  2812. + unsigned long r_symndx;
  2813. +
  2814. + if (r_data->add_frag)
  2815. + {
  2816. + r_symndx = ELF_R_SYM(rela->r_info);
  2817. +
  2818. + if (r_symndx < symtab_hdr->sh_info)
  2819. + sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
  2820. + else
  2821. + {
  2822. + struct elf_link_hash_entry *h;
  2823. +
  2824. + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
  2825. +
  2826. + while (h->root.type == bfd_link_hash_indirect
  2827. + || h->root.type == bfd_link_hash_warning)
  2828. + h = (struct elf_link_hash_entry *)h->root.u.i.link;
  2829. +
  2830. + BFD_ASSERT(h->root.type == bfd_link_hash_defined
  2831. + || h->root.type == bfd_link_hash_defweak);
  2832. +
  2833. + sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
  2834. + }
  2835. +
  2836. + RDBG(" addend: 0x%08lx -> 0x%08lx\n",
  2837. + rela->r_addend,
  2838. + rela->r_addend + r_data->add_frag->offset_adjust
  2839. + - (sym_frag ? sym_frag->offset_adjust : 0));
  2840. +
  2841. + /* If this is against a section symbol, we won't find any
  2842. + sym_frag, so we'll just adjust the addend. */
  2843. + rela->r_addend += r_data->add_frag->offset_adjust;
  2844. + if (sym_frag)
  2845. + rela->r_addend -= sym_frag->offset_adjust;
  2846. +
  2847. + if (r_data->sub_frag)
  2848. + {
  2849. + bfd_byte *contents;
  2850. + bfd_signed_vma diff;
  2851. +
  2852. + contents = retrieve_contents(abfd, sec, info->keep_memory);
  2853. + if (!contents)
  2854. + goto out;
  2855. +
  2856. + /* I realize now that sub_frag is misnamed. It's
  2857. + actually add_frag which is subtracted in this
  2858. + case... */
  2859. + diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
  2860. + diff += (r_data->sub_frag->offset_adjust
  2861. + - r_data->add_frag->offset_adjust);
  2862. + bfd_put_32(abfd, diff, contents + rela->r_offset);
  2863. +
  2864. + RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
  2865. +
  2866. + release_contents(sec, contents);
  2867. + }
  2868. + }
  2869. + else
  2870. + BFD_ASSERT(!r_data->sub_frag);
  2871. + }
  2872. +
  2873. + ret = TRUE;
  2874. +
  2875. + out:
  2876. + release_internal_relocs(sec, relocs);
  2877. + return ret;
  2878. +}
  2879. +
  2880. +static bfd_boolean
  2881. +avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
  2882. +{
  2883. + struct elf_avr32_link_hash_table *htab;
  2884. + struct avr32_relax_data *rd;
  2885. + struct fragment *frag, *fragend;
  2886. + Elf_Internal_Rela *relocs = NULL;
  2887. + bfd_byte *contents = NULL;
  2888. + unsigned int i;
  2889. + bfd_boolean ret = FALSE;
  2890. +
  2891. + htab = avr32_elf_hash_table(info);
  2892. + rd = avr32_relax_data(sec);
  2893. +
  2894. + if (!htab->symbols_adjusted)
  2895. + if (!adjust_syms(info))
  2896. + return FALSE;
  2897. +
  2898. + if (rd->is_relaxable)
  2899. + {
  2900. + /* Resize the section first, so that we can be sure that enough
  2901. + memory is allocated in case the section has grown. */
  2902. + if (sec->size > sec->rawsize
  2903. + && elf_section_data(sec)->this_hdr.contents)
  2904. + {
  2905. + /* We must not use cached data if the section has grown. */
  2906. + free(elf_section_data(sec)->this_hdr.contents);
  2907. + elf_section_data(sec)->this_hdr.contents = NULL;
  2908. + }
  2909. +
  2910. + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
  2911. + if (!relocs)
  2912. + goto out;
  2913. + contents = retrieve_contents(abfd, sec, info->keep_memory);
  2914. + if (!contents)
  2915. + goto out;
  2916. +
  2917. + fragend = rd->frag + rd->frag_count;
  2918. +
  2919. + RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
  2920. + abfd->filename, sec->name, relocs, contents);
  2921. +
  2922. + /* First, move the data into place. We must take care to move
  2923. + frags in the right order so that we don't accidentally
  2924. + overwrite parts of the next frag. */
  2925. + for (frag = rd->frag; frag < fragend; frag++)
  2926. + {
  2927. + RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
  2928. + frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
  2929. + abs(frag->offset_adjust),
  2930. + frag->size, frag->size_adjust >= 0 ? '+' : '-',
  2931. + abs(frag->size_adjust));
  2932. + if (frag->offset_adjust > 0)
  2933. + {
  2934. + struct fragment *prev = frag - 1;
  2935. + struct fragment *last;
  2936. +
  2937. + for (last = frag; last < fragend && last->offset_adjust > 0;
  2938. + last++) ;
  2939. +
  2940. + if (last == fragend)
  2941. + last--;
  2942. +
  2943. + for (frag = last; frag != prev; frag--)
  2944. + {
  2945. + if (frag->offset_adjust
  2946. + && frag->size + frag->size_adjust > 0)
  2947. + {
  2948. + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
  2949. + frag->offset, frag->offset + frag->offset_adjust,
  2950. + frag->size + frag->size_adjust);
  2951. + memmove(contents + frag->offset + frag->offset_adjust,
  2952. + contents + frag->offset,
  2953. + frag->size + frag->size_adjust);
  2954. + }
  2955. + }
  2956. + frag = last;
  2957. + }
  2958. + else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
  2959. + {
  2960. + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
  2961. + frag->offset, frag->offset + frag->offset_adjust,
  2962. + frag->size + frag->size_adjust);
  2963. + memmove(contents + frag->offset + frag->offset_adjust,
  2964. + contents + frag->offset,
  2965. + frag->size + frag->size_adjust);
  2966. + }
  2967. + }
  2968. +
  2969. + i = 0;
  2970. +
  2971. + for (frag = rd->frag; frag < fragend; frag++)
  2972. + {
  2973. + const struct relax_state *state, *istate;
  2974. + struct avr32_reloc_data *r_data = NULL;
  2975. +
  2976. + istate = &relax_state[frag->initial_state];
  2977. + state = &relax_state[frag->state];
  2978. +
  2979. + if (rd->reloc_data)
  2980. + r_data = &rd->reloc_data[frag->rela - relocs];
  2981. +
  2982. + BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
  2983. + BFD_ASSERT(state->reftype != REF_CPOOL
  2984. + || r_data->add_frag->refcount > 0);
  2985. +
  2986. + if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
  2987. + {
  2988. + struct fragment *ifrag;
  2989. +
  2990. + /* An indirect reference through the cpool has been
  2991. + converted to a direct reference. We must update the
  2992. + reloc to point to the symbol itself instead of the
  2993. + constant pool entry. The reloc type will be updated
  2994. + later. */
  2995. + ifrag = r_data->add_frag;
  2996. + frag->rela->r_info = ifrag->rela->r_info;
  2997. + frag->rela->r_addend = ifrag->rela->r_addend;
  2998. +
  2999. + /* Copy the reloc data so the addend will be adjusted
  3000. + correctly later. */
  3001. + *r_data = rd->reloc_data[ifrag->rela - relocs];
  3002. + }
  3003. +
  3004. + /* Move all relocs covered by this frag. */
  3005. + if (frag->rela)
  3006. + BFD_ASSERT(&relocs[i] <= frag->rela);
  3007. + else
  3008. + BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
  3009. +
  3010. + if (frag == rd->frag)
  3011. + BFD_ASSERT(i == 0);
  3012. + else
  3013. + BFD_ASSERT(&relocs[i] > frag[-1].rela);
  3014. +
  3015. + /* If non-null, frag->rela is the last relocation in the
  3016. + fragment. frag->rela can only be null in the last
  3017. + fragment, so in that case, we'll just do the rest. */
  3018. + for (; (i < sec->reloc_count
  3019. + && (!frag->rela || &relocs[i] <= frag->rela)); i++)
  3020. + {
  3021. + RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
  3022. + relocs[i].r_offset + frag->offset_adjust);
  3023. + relocs[i].r_offset += frag->offset_adjust;
  3024. + }
  3025. +
  3026. + if (frag->refcount == 0)
  3027. + {
  3028. + /* If this frag is to be discarded, make sure we won't
  3029. + relocate it later on. */
  3030. + BFD_ASSERT(frag->state == RS_CPENT);
  3031. + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
  3032. + R_AVR32_NONE);
  3033. + }
  3034. + else if (frag->state == RS_ALIGN)
  3035. + {
  3036. + bfd_vma addr, addr_end;
  3037. +
  3038. + addr = frag->rela->r_offset;
  3039. + addr_end = (frag->offset + frag->offset_adjust
  3040. + + frag->size + frag->size_adjust);
  3041. +
  3042. + /* If the section is executable, insert NOPs.
  3043. + Otherwise, insert zeroes. */
  3044. + if (sec->flags & SEC_CODE)
  3045. + {
  3046. + if (addr & 1)
  3047. + {
  3048. + bfd_put_8(abfd, 0, contents + addr);
  3049. + addr++;
  3050. + }
  3051. +
  3052. + BFD_ASSERT(!((addr_end - addr) & 1));
  3053. +
  3054. + while (addr < addr_end)
  3055. + {
  3056. + bfd_put_16(abfd, NOP_OPCODE, contents + addr);
  3057. + addr += 2;
  3058. + }
  3059. + }
  3060. + else
  3061. + memset(contents + addr, 0, addr_end - addr);
  3062. + }
  3063. + else if (state->opcode_mask)
  3064. + {
  3065. + bfd_vma insn;
  3066. +
  3067. + /* Update the opcode and the relocation type unless it's a
  3068. + "special" relax state (i.e. RS_NONE, RS_ALIGN or
  3069. + RS_CPENT.), in which case the opcode mask is zero. */
  3070. + insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
  3071. + insn &= ~state->opcode_mask;
  3072. + insn |= state->opcode;
  3073. + RDBG(" 0x%lx: inserting insn %08lx\n",
  3074. + frag->rela->r_offset, insn);
  3075. + bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
  3076. +
  3077. + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
  3078. + state->r_type);
  3079. + }
  3080. +
  3081. + if ((frag + 1) == fragend)
  3082. + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
  3083. + + frag->size_adjust) == sec->size);
  3084. + else
  3085. + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
  3086. + + frag->size_adjust)
  3087. + == (frag[1].offset + frag[1].offset_adjust));
  3088. + }
  3089. + }
  3090. +
  3091. + /* Adjust reloc addends and DIFF32 differences */
  3092. + if (!adjust_relocs(abfd, sec, info))
  3093. + return FALSE;
  3094. +
  3095. + ret = TRUE;
  3096. +
  3097. + out:
  3098. + release_contents(sec, contents);
  3099. + release_internal_relocs(sec, relocs);
  3100. + return ret;
  3101. +}
  3102. +
  3103. +static bfd_boolean
  3104. +avr32_elf_relax_section(bfd *abfd, asection *sec,
  3105. + struct bfd_link_info *info, bfd_boolean *again)
  3106. +{
  3107. + struct elf_avr32_link_hash_table *htab;
  3108. + struct avr32_relax_data *rd;
  3109. +
  3110. + *again = FALSE;
  3111. + if (info->relocatable)
  3112. + return TRUE;
  3113. +
  3114. + htab = avr32_elf_hash_table(info);
  3115. + if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
  3116. + && sec != htab->sgot)
  3117. + return TRUE;
  3118. +
  3119. + if (!htab->relocations_analyzed)
  3120. + {
  3121. + if (!analyze_relocations(info))
  3122. + return FALSE;
  3123. + htab->relocations_analyzed = TRUE;
  3124. + }
  3125. +
  3126. + rd = avr32_relax_data(sec);
  3127. +
  3128. + if (rd->iteration != htab->relax_iteration)
  3129. + {
  3130. + if (!htab->repeat_pass)
  3131. + htab->relax_pass++;
  3132. + htab->relax_iteration++;
  3133. + htab->repeat_pass = FALSE;
  3134. + }
  3135. +
  3136. + rd->iteration++;
  3137. +
  3138. + switch (htab->relax_pass)
  3139. + {
  3140. + case RELAX_PASS_SIZE_FRAGS:
  3141. + if (!avr32_size_frags(abfd, sec, info))
  3142. + return FALSE;
  3143. + *again = TRUE;
  3144. + break;
  3145. + case RELAX_PASS_MOVE_DATA:
  3146. + if (!avr32_move_data(abfd, sec, info))
  3147. + return FALSE;
  3148. + break;
  3149. + }
  3150. +
  3151. + return TRUE;
  3152. +}
  3153. +
  3154. +
  3155. +/* Relocation */
  3156. +
  3157. +static bfd_reloc_status_type
  3158. +avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
  3159. + bfd_signed_vma relocation, reloc_howto_type *howto);
  3160. +static bfd_reloc_status_type
  3161. +avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
  3162. + asection *input_section, bfd_byte *contents,
  3163. + Elf_Internal_Rela *rel, bfd_vma value);
  3164. +static bfd_boolean
  3165. +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
  3166. + bfd *input_bfd, asection *input_section,
  3167. + bfd_byte *contents, Elf_Internal_Rela *relocs,
  3168. + Elf_Internal_Sym *local_syms,
  3169. + asection **local_sections);
  3170. +
  3171. +
  3172. +#define symbol_address(symbol) \
  3173. + symbol->value + symbol->section->output_section->vma \
  3174. + + symbol->section->output_offset
  3175. +
  3176. +#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
  3177. + do \
  3178. + { \
  3179. + unsigned long x; \
  3180. + x = bfd_get_##size (abfd, data + reloc_entry->address); \
  3181. + x &= ~reloc_entry->howto->dst_mask; \
  3182. + x |= field & reloc_entry->howto->dst_mask; \
  3183. + bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
  3184. + } \
  3185. + while(0)
  3186. +
  3187. +static bfd_reloc_status_type
  3188. +avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
  3189. + Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
  3190. + bfd_signed_vma relocation,
  3191. + reloc_howto_type *howto)
  3192. +{
  3193. + bfd_vma reloc_u;
  3194. +
  3195. + /* We take "complain_overflow_dont" to mean "don't complain on
  3196. + alignment either". This way, we don't have to special-case
  3197. + R_AVR32_HI16 */
  3198. + if (howto->complain_on_overflow == complain_overflow_dont)
  3199. + return bfd_reloc_ok;
  3200. +
  3201. + /* Check if the value is correctly aligned */
  3202. + if (relocation & ((1 << howto->rightshift) - 1))
  3203. + {
  3204. + RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
  3205. + sec->owner->filename, sec->name, rela->r_offset,
  3206. + howto->name, relocation, howto->rightshift);
  3207. + return bfd_reloc_overflow;
  3208. + }
  3209. +
  3210. + /* Now, get rid of the unnecessary bits */
  3211. + relocation >>= howto->rightshift;
  3212. + reloc_u = (bfd_vma)relocation;
  3213. +
  3214. + switch (howto->complain_on_overflow)
  3215. + {
  3216. + case complain_overflow_unsigned:
  3217. + case complain_overflow_bitfield:
  3218. + if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
  3219. + {
  3220. + RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
  3221. + sec->owner->filename, sec->name, rela->r_offset,
  3222. + howto->name, reloc_u, howto->bitsize);
  3223. + RDBG("reloc vma: 0x%lx\n",
  3224. + sec->output_section->vma + sec->output_offset + rela->r_offset);
  3225. +
  3226. + return bfd_reloc_overflow;
  3227. + }
  3228. + break;
  3229. + case complain_overflow_signed:
  3230. + if (relocation > (1 << (howto->bitsize - 1)) - 1)
  3231. + {
  3232. + RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
  3233. + sec->owner->filename, sec->name, rela->r_offset,
  3234. + howto->name, reloc_u, howto->bitsize);
  3235. + RDBG("reloc vma: 0x%lx\n",
  3236. + sec->output_section->vma + sec->output_offset + rela->r_offset);
  3237. +
  3238. + return bfd_reloc_overflow;
  3239. + }
  3240. + if (relocation < -(1 << (howto->bitsize - 1)))
  3241. + {
  3242. + RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
  3243. + sec->owner->filename, sec->name, rela->r_offset,
  3244. + howto->name, -relocation, howto->bitsize);
  3245. + RDBG("reloc vma: 0x%lx\n",
  3246. + sec->output_section->vma + sec->output_offset + rela->r_offset);
  3247. +
  3248. + return bfd_reloc_overflow;
  3249. + }
  3250. + break;
  3251. + default:
  3252. + abort();
  3253. + }
  3254. +
  3255. + return bfd_reloc_ok;
  3256. +}
  3257. +
  3258. +
  3259. +static bfd_reloc_status_type
  3260. +avr32_final_link_relocate(reloc_howto_type *howto,
  3261. + bfd *input_bfd,
  3262. + asection *input_section,
  3263. + bfd_byte *contents,
  3264. + Elf_Internal_Rela *rel,
  3265. + bfd_vma value)
  3266. +{
  3267. + bfd_vma field;
  3268. + bfd_vma relocation;
  3269. + bfd_reloc_status_type status;
  3270. + bfd_byte *p = contents + rel->r_offset;
  3271. + unsigned long x;
  3272. +
  3273. + pr_debug(" (6b) final link relocate\n");
  3274. +
  3275. + /* Sanity check the address */
  3276. + if (rel->r_offset > input_section->size)
  3277. + {
  3278. + (*_bfd_error_handler)
  3279. + ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
  3280. + input_bfd, input_section, rel->r_offset, input_section->size);
  3281. + return bfd_reloc_outofrange;
  3282. + }
  3283. +
  3284. + relocation = value + rel->r_addend;
  3285. +
  3286. + if (howto->pc_relative)
  3287. + {
  3288. + bfd_vma addr;
  3289. +
  3290. + addr = input_section->output_section->vma
  3291. + + input_section->output_offset + rel->r_offset;
  3292. + addr &= ~0UL << howto->rightshift;
  3293. + relocation -= addr;
  3294. + }
  3295. +
  3296. + switch (ELF32_R_TYPE(rel->r_info))
  3297. + {
  3298. + case R_AVR32_16N_PCREL:
  3299. + /* sub reg, pc, . - (sym + addend) */
  3300. + relocation = -relocation;
  3301. + break;
  3302. + }
  3303. +
  3304. + status = avr32_check_reloc_value(input_section, rel, relocation, howto);
  3305. +
  3306. + relocation >>= howto->rightshift;
  3307. + if (howto->bitsize == 21)
  3308. + field = (relocation & 0xffff)
  3309. + | ((relocation & 0x10000) << 4)
  3310. + | ((relocation & 0x1e0000) << 8);
  3311. + else if (howto->bitsize == 12)
  3312. + field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
  3313. + else if (howto->bitsize == 10)
  3314. + field = ((relocation & 0xff) << 4)
  3315. + | ((relocation & 0x300) >> 8);
  3316. + else
  3317. + field = relocation << howto->bitpos;
  3318. +
  3319. + switch (howto->size)
  3320. + {
  3321. + case 0:
  3322. + x = bfd_get_8 (input_bfd, p);
  3323. + x &= ~howto->dst_mask;
  3324. + x |= field & howto->dst_mask;
  3325. + bfd_put_8 (input_bfd, (bfd_vma) x, p);
  3326. + break;
  3327. + case 1:
  3328. + x = bfd_get_16 (input_bfd, p);
  3329. + x &= ~howto->dst_mask;
  3330. + x |= field & howto->dst_mask;
  3331. + bfd_put_16 (input_bfd, (bfd_vma) x, p);
  3332. + break;
  3333. + case 2:
  3334. + x = bfd_get_32 (input_bfd, p);
  3335. + x &= ~howto->dst_mask;
  3336. + x |= field & howto->dst_mask;
  3337. + bfd_put_32 (input_bfd, (bfd_vma) x, p);
  3338. + break;
  3339. + default:
  3340. + abort();
  3341. + }
  3342. +
  3343. + return status;
  3344. +}
  3345. +
  3346. +/* (6) Apply relocations to the normal (non-dynamic) sections */
  3347. +
  3348. +static bfd_boolean
  3349. +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
  3350. + bfd *input_bfd, asection *input_section,
  3351. + bfd_byte *contents, Elf_Internal_Rela *relocs,
  3352. + Elf_Internal_Sym *local_syms,
  3353. + asection **local_sections)
  3354. +{
  3355. + struct elf_avr32_link_hash_table *htab;
  3356. + Elf_Internal_Shdr *symtab_hdr;
  3357. + Elf_Internal_Rela *rel, *relend;
  3358. + struct elf_link_hash_entry **sym_hashes;
  3359. + struct got_entry **local_got_ents;
  3360. + asection *sgot;
  3361. + asection *srelgot;
  3362. +
  3363. + pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
  3364. + input_bfd->filename, input_section->name, input_section->size);
  3365. +
  3366. + /* If we're doing a partial link, we don't have to do anything since
  3367. + we're using RELA relocations */
  3368. + if (info->relocatable)
  3369. + return TRUE;
  3370. +
  3371. + htab = avr32_elf_hash_table(info);
  3372. + symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
  3373. + sym_hashes = elf_sym_hashes(input_bfd);
  3374. + local_got_ents = elf_local_got_ents(input_bfd);
  3375. + sgot = htab->sgot;
  3376. + srelgot = htab->srelgot;
  3377. +
  3378. + relend = relocs + input_section->reloc_count;
  3379. + for (rel = relocs; rel < relend; rel++)
  3380. + {
  3381. + unsigned long r_type, r_symndx;
  3382. + reloc_howto_type *howto;
  3383. + Elf_Internal_Sym *sym = NULL;
  3384. + struct elf_link_hash_entry *h = NULL;
  3385. + asection *sec = NULL;
  3386. + bfd_vma value;
  3387. + bfd_vma offset;
  3388. + bfd_reloc_status_type status;
  3389. +
  3390. + r_type = ELF32_R_TYPE(rel->r_info);
  3391. + r_symndx = ELF32_R_SYM(rel->r_info);
  3392. +
  3393. + if (r_type == R_AVR32_NONE
  3394. + || r_type == R_AVR32_ALIGN
  3395. + || r_type == R_AVR32_DIFF32
  3396. + || r_type == R_AVR32_DIFF16
  3397. + || r_type == R_AVR32_DIFF8)
  3398. + continue;
  3399. +
  3400. + /* Sanity check */
  3401. + if (r_type > R_AVR32_max)
  3402. + {
  3403. + bfd_set_error(bfd_error_bad_value);
  3404. + return FALSE;
  3405. + }
  3406. +
  3407. + howto = &elf_avr32_howto_table[r_type];
  3408. +
  3409. + if (r_symndx < symtab_hdr->sh_info)
  3410. + {
  3411. + sym = local_syms + r_symndx;
  3412. + sec = local_sections[r_symndx];
  3413. +
  3414. + pr_debug(" (6a) processing %s against local symbol %lu\n",
  3415. + howto->name, r_symndx);
  3416. +
  3417. + /* The following function changes rel->r_addend behind our back. */
  3418. + value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
  3419. + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
  3420. + }
  3421. + else
  3422. + {
  3423. + if (sym_hashes == NULL)
  3424. + return FALSE;
  3425. +
  3426. + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
  3427. + while (h->root.type == bfd_link_hash_indirect
  3428. + || h->root.type == bfd_link_hash_warning)
  3429. + h = (struct elf_link_hash_entry *)h->root.u.i.link;
  3430. +
  3431. + pr_debug(" (6a) processing %s against symbol %s\n",
  3432. + howto->name, h->root.root.string);
  3433. +
  3434. + if (h->root.type == bfd_link_hash_defined
  3435. + || h->root.type == bfd_link_hash_defweak)
  3436. + {
  3437. + bfd_boolean dyn;
  3438. +
  3439. + dyn = htab->root.dynamic_sections_created;
  3440. + sec = h->root.u.def.section;
  3441. +
  3442. + if (sec->output_section)
  3443. + value = (h->root.u.def.value
  3444. + + sec->output_section->vma
  3445. + + sec->output_offset);
  3446. + else
  3447. + value = h->root.u.def.value;
  3448. + }
  3449. + else if (h->root.type == bfd_link_hash_undefweak)
  3450. + value = 0;
  3451. + else if (info->unresolved_syms_in_objects == RM_IGNORE
  3452. + && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
  3453. + value = 0;
  3454. + else
  3455. + {
  3456. + bfd_boolean err;
  3457. + err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
  3458. + || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
  3459. + if (!info->callbacks->undefined_symbol
  3460. + (info, h->root.root.string, input_bfd,
  3461. + input_section, rel->r_offset, err))
  3462. + return FALSE;
  3463. + value = 0;
  3464. + }
  3465. +
  3466. + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
  3467. + }
  3468. +
  3469. + switch (r_type)
  3470. + {
  3471. + case R_AVR32_GOT32:
  3472. + case R_AVR32_GOT16:
  3473. + case R_AVR32_GOT8:
  3474. + case R_AVR32_GOT21S:
  3475. + case R_AVR32_GOT18SW:
  3476. + case R_AVR32_GOT16S:
  3477. + case R_AVR32_GOT7UW:
  3478. + case R_AVR32_LDA_GOT:
  3479. + case R_AVR32_GOTCALL:
  3480. + BFD_ASSERT(sgot != NULL);
  3481. +
  3482. + if (h != NULL)
  3483. + {
  3484. + BFD_ASSERT(h->got.glist->refcount > 0);
  3485. + offset = h->got.glist->offset;
  3486. +
  3487. + BFD_ASSERT(offset < sgot->size);
  3488. + if (!elf_hash_table(info)->dynamic_sections_created
  3489. + || (h->def_regular
  3490. + && (!info->shared
  3491. + || info->symbolic
  3492. + || h->dynindx == -1)))
  3493. + {
  3494. + /* This is actually a static link, or it is a
  3495. + -Bsymbolic link and the symbol is defined
  3496. + locally, or the symbol was forced to be local. */
  3497. + bfd_put_32(output_bfd, value, sgot->contents + offset);
  3498. + }
  3499. + }
  3500. + else
  3501. + {
  3502. + BFD_ASSERT(local_got_ents &&
  3503. + local_got_ents[r_symndx]->refcount > 0);
  3504. + offset = local_got_ents[r_symndx]->offset;
  3505. +
  3506. + /* Local GOT entries don't have relocs. If this is a
  3507. + shared library, the dynamic linker will add the load
  3508. + address to the initial value at startup. */
  3509. + BFD_ASSERT(offset < sgot->size);
  3510. + pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
  3511. + offset, value);
  3512. + bfd_put_32 (output_bfd, value, sgot->contents + offset);
  3513. + }
  3514. +
  3515. + value = sgot->output_offset + offset;
  3516. + pr_debug("GOT reference: New value %lx\n", value);
  3517. + break;
  3518. +
  3519. + case R_AVR32_GOTPC:
  3520. + /* This relocation type is for constant pool entries used in
  3521. + the calculation "Rd = PC - (PC - GOT)", where the
  3522. + constant pool supplies the constant (PC - GOT)
  3523. + offset. The symbol value + addend indicates where the
  3524. + value of PC is taken. */
  3525. + value -= sgot->output_section->vma;
  3526. + break;
  3527. +
  3528. + case R_AVR32_32_PCREL:
  3529. + /* We must adjust r_offset to account for discarded data in
  3530. + the .eh_frame section. This is probably not the right
  3531. + way to do this, since AFAICS all other architectures do
  3532. + it some other way. I just can't figure out how... */
  3533. + {
  3534. + bfd_vma r_offset;
  3535. +
  3536. + r_offset = _bfd_elf_section_offset(output_bfd, info,
  3537. + input_section,
  3538. + rel->r_offset);
  3539. + if (r_offset == (bfd_vma)-1
  3540. + || r_offset == (bfd_vma)-2)
  3541. + continue;
  3542. + rel->r_offset = r_offset;
  3543. + }
  3544. + break;
  3545. +
  3546. + case R_AVR32_32:
  3547. + /* We need to emit a run-time relocation in the following cases:
  3548. + - we're creating a shared library
  3549. + - the symbol is not defined in any regular objects
  3550. +
  3551. + Of course, sections that aren't going to be part of the
  3552. + run-time image will not get any relocs, and undefined
  3553. + symbols won't have any either (only weak undefined
  3554. + symbols should get this far). */
  3555. + if ((info->shared
  3556. + || (elf_hash_table(info)->dynamic_sections_created
  3557. + && h != NULL
  3558. + && h->def_dynamic
  3559. + && !h->def_regular))
  3560. + && r_symndx != 0
  3561. + && (input_section->flags & SEC_ALLOC))
  3562. + {
  3563. + Elf_Internal_Rela outrel;
  3564. + bfd_byte *loc;
  3565. + bfd_boolean skip, relocate;
  3566. + struct elf_avr32_link_hash_entry *avrh;
  3567. +
  3568. + pr_debug("Going to generate dynamic reloc...\n");
  3569. +
  3570. + skip = FALSE;
  3571. + relocate = FALSE;
  3572. +
  3573. + outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
  3574. + input_section,
  3575. + rel->r_offset);
  3576. + if (outrel.r_offset == (bfd_vma)-1)
  3577. + skip = TRUE;
  3578. + else if (outrel.r_offset == (bfd_vma)-2)
  3579. + skip = TRUE, relocate = TRUE;
  3580. +
  3581. + outrel.r_offset += (input_section->output_section->vma
  3582. + + input_section->output_offset);
  3583. +
  3584. + pr_debug(" ... offset %lx, dynindx %ld\n",
  3585. + outrel.r_offset, h ? h->dynindx : -1);
  3586. +
  3587. + if (skip)
  3588. + memset(&outrel, 0, sizeof(outrel));
  3589. + else
  3590. + {
  3591. + avrh = (struct elf_avr32_link_hash_entry *)h;
  3592. + /* h->dynindx may be -1 if this symbol was marked to
  3593. + become local. */
  3594. + if (h == NULL
  3595. + || ((info->symbolic || h->dynindx == -1)
  3596. + && h->def_regular))
  3597. + {
  3598. + relocate = TRUE;
  3599. + outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
  3600. + outrel.r_addend = value + rel->r_addend;
  3601. + pr_debug(" ... R_AVR32_RELATIVE\n");
  3602. + }
  3603. + else
  3604. + {
  3605. + BFD_ASSERT(h->dynindx != -1);
  3606. + relocate = TRUE;
  3607. + outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
  3608. + outrel.r_addend = rel->r_addend;
  3609. + pr_debug(" ... R_AVR32_GLOB_DAT\n");
  3610. + }
  3611. + }
  3612. +
  3613. + pr_debug("srelgot reloc_count: %d, size %lu\n",
  3614. + srelgot->reloc_count, srelgot->size);
  3615. +
  3616. + loc = srelgot->contents;
  3617. + loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
  3618. + bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
  3619. +
  3620. + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
  3621. + <= srelgot->size);
  3622. +
  3623. + if (!relocate)
  3624. + continue;
  3625. + }
  3626. + break;
  3627. + }
  3628. +
  3629. + status = avr32_final_link_relocate(howto, input_bfd, input_section,
  3630. + contents, rel, value);
  3631. +
  3632. + switch (status)
  3633. + {
  3634. + case bfd_reloc_ok:
  3635. + break;
  3636. +
  3637. + case bfd_reloc_overflow:
  3638. + {
  3639. + const char *name;
  3640. +
  3641. + if (h != NULL)
  3642. + name = h->root.root.string;
  3643. + else
  3644. + {
  3645. + name = bfd_elf_string_from_elf_section(input_bfd,
  3646. + symtab_hdr->sh_link,
  3647. + sym->st_name);
  3648. + if (name == NULL)
  3649. + return FALSE;
  3650. + if (*name == '\0')
  3651. + name = bfd_section_name(input_bfd, sec);
  3652. + }
  3653. + if (!((*info->callbacks->reloc_overflow)
  3654. + (info, (h ? &h->root : NULL), name, howto->name,
  3655. + rel->r_addend, input_bfd, input_section, rel->r_offset)))
  3656. + return FALSE;
  3657. + }
  3658. + break;
  3659. +
  3660. + case bfd_reloc_outofrange:
  3661. + default:
  3662. + abort();
  3663. + }
  3664. + }
  3665. +
  3666. + return TRUE;
  3667. +}
  3668. +
  3669. +
  3670. +/* Additional processing of dynamic sections after relocation */
  3671. +
  3672. +static bfd_boolean
  3673. +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
  3674. + struct elf_link_hash_entry *h,
  3675. + Elf_Internal_Sym *sym);
  3676. +static bfd_boolean
  3677. +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
  3678. +
  3679. +
  3680. +/* (7) Initialize the contents of a dynamic symbol and/or emit
  3681. + relocations for it */
  3682. +
  3683. +static bfd_boolean
  3684. +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
  3685. + struct elf_link_hash_entry *h,
  3686. + Elf_Internal_Sym *sym)
  3687. +{
  3688. + struct elf_avr32_link_hash_table *htab;
  3689. + struct got_entry *got;
  3690. +
  3691. + pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
  3692. +
  3693. + htab = avr32_elf_hash_table(info);
  3694. + got = h->got.glist;
  3695. +
  3696. + if (got && got->refcount > 0)
  3697. + {
  3698. + asection *sgot;
  3699. + asection *srelgot;
  3700. + Elf_Internal_Rela rel;
  3701. + bfd_byte *loc;
  3702. +
  3703. + /* This symbol has an entry in the GOT. Set it up. */
  3704. + sgot = htab->sgot;
  3705. + srelgot = htab->srelgot;
  3706. + BFD_ASSERT(sgot && srelgot);
  3707. +
  3708. + rel.r_offset = (sgot->output_section->vma
  3709. + + sgot->output_offset
  3710. + + got->offset);
  3711. +
  3712. + /* If this is a static link, or it is a -Bsymbolic link and the
  3713. + symbol is defined locally or was forced to be local because
  3714. + of a version file, we just want to emit a RELATIVE reloc. The
  3715. + entry in the global offset table will already have been
  3716. + initialized in the relocate_section function. */
  3717. + if ((info->shared
  3718. + && !info->symbolic
  3719. + && h->dynindx != -1)
  3720. + || (htab->root.dynamic_sections_created
  3721. + && h->def_dynamic
  3722. + && !h->def_regular))
  3723. + {
  3724. + bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
  3725. + rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
  3726. + rel.r_addend = 0;
  3727. +
  3728. + pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
  3729. + pr_debug(" srelgot reloc_count: %d, size: %lu\n",
  3730. + srelgot->reloc_count, srelgot->size);
  3731. +
  3732. + loc = (srelgot->contents
  3733. + + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
  3734. + bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
  3735. +
  3736. + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
  3737. + <= srelgot->size);
  3738. + }
  3739. + }
  3740. +
  3741. + /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
  3742. + if (strcmp(h->root.root.string, "_DYNAMIC") == 0
  3743. + || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
  3744. + sym->st_shndx = SHN_ABS;
  3745. +
  3746. + return TRUE;
  3747. +}
  3748. +
  3749. +/* (8) Do any remaining initialization of the dynamic sections */
  3750. +
  3751. +static bfd_boolean
  3752. +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
  3753. +{
  3754. + struct elf_avr32_link_hash_table *htab;
  3755. + asection *sgot, *sdyn;
  3756. +
  3757. + pr_debug("(8) finish dynamic sections\n");
  3758. +
  3759. + htab = avr32_elf_hash_table(info);
  3760. + sgot = htab->sgot;
  3761. + sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
  3762. +
  3763. + if (htab->root.dynamic_sections_created)
  3764. + {
  3765. + Elf32_External_Dyn *dyncon, *dynconend;
  3766. +
  3767. + BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
  3768. +
  3769. + dyncon = (Elf32_External_Dyn *)sdyn->contents;
  3770. + dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
  3771. + for (; dyncon < dynconend; dyncon++)
  3772. + {
  3773. + Elf_Internal_Dyn dyn;
  3774. + asection *s;
  3775. +
  3776. + bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
  3777. +
  3778. + switch (dyn.d_tag)
  3779. + {
  3780. + default:
  3781. + break;
  3782. +
  3783. + case DT_PLTGOT:
  3784. + s = sgot->output_section;
  3785. + BFD_ASSERT(s != NULL);
  3786. + dyn.d_un.d_ptr = s->vma;
  3787. + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
  3788. + break;
  3789. +
  3790. + case DT_AVR32_GOTSZ:
  3791. + s = sgot->output_section;
  3792. + BFD_ASSERT(s != NULL);
  3793. + dyn.d_un.d_val = s->size;
  3794. + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
  3795. + break;
  3796. + }
  3797. + }
  3798. +
  3799. + /* Fill in the first two entries in the global offset table */
  3800. + bfd_put_32(output_bfd,
  3801. + sdyn->output_section->vma + sdyn->output_offset,
  3802. + sgot->contents);
  3803. +
  3804. + /* The runtime linker will fill this one in with the address of
  3805. + the run-time link map */
  3806. + bfd_put_32(output_bfd, 0, sgot->contents + 4);
  3807. + }
  3808. +
  3809. + if (sgot)
  3810. + elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
  3811. +
  3812. + return TRUE;
  3813. +}
  3814. +
  3815. +
  3816. +/* AVR32-specific private ELF data */
  3817. +
  3818. +static bfd_boolean
  3819. +avr32_elf_set_private_flags(bfd *abfd, flagword flags);
  3820. +static bfd_boolean
  3821. +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
  3822. +static bfd_boolean
  3823. +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
  3824. +static bfd_boolean
  3825. +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
  3826. +
  3827. +static bfd_boolean
  3828. +avr32_elf_set_private_flags(bfd *abfd, flagword flags)
  3829. +{
  3830. + elf_elfheader(abfd)->e_flags = flags;
  3831. + elf_flags_init(abfd) = TRUE;
  3832. +
  3833. + return TRUE;
  3834. +}
  3835. +
  3836. +/* Copy backend specific data from one object module to another. */
  3837. +
  3838. +static bfd_boolean
  3839. +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
  3840. +{
  3841. + elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
  3842. + return TRUE;
  3843. +}
  3844. +
  3845. +/* Merge backend specific data from an object file to the output
  3846. + object file when linking. */
  3847. +
  3848. +static bfd_boolean
  3849. +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
  3850. +{
  3851. + flagword out_flags, in_flags;
  3852. +
  3853. + pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
  3854. + ibfd->filename, obfd->filename);
  3855. +
  3856. + in_flags = elf_elfheader(ibfd)->e_flags;
  3857. + out_flags = elf_elfheader(obfd)->e_flags;
  3858. +
  3859. + if (elf_flags_init(obfd))
  3860. + {
  3861. + /* If one of the inputs are non-PIC, the output must be
  3862. + considered non-PIC. The same applies to linkrelax. */
  3863. + if (!(in_flags & EF_AVR32_PIC))
  3864. + out_flags &= ~EF_AVR32_PIC;
  3865. + if (!(in_flags & EF_AVR32_LINKRELAX))
  3866. + out_flags &= ~EF_AVR32_LINKRELAX;
  3867. + }
  3868. + else
  3869. + {
  3870. + elf_flags_init(obfd) = TRUE;
  3871. + out_flags = in_flags;
  3872. + }
  3873. +
  3874. + elf_elfheader(obfd)->e_flags = out_flags;
  3875. +
  3876. + return TRUE;
  3877. +}
  3878. +
  3879. +static bfd_boolean
  3880. +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
  3881. +{
  3882. + FILE *file = (FILE *)ptr;
  3883. + unsigned long flags;
  3884. +
  3885. + BFD_ASSERT(abfd != NULL && ptr != NULL);
  3886. +
  3887. + _bfd_elf_print_private_bfd_data(abfd, ptr);
  3888. +
  3889. + flags = elf_elfheader(abfd)->e_flags;
  3890. +
  3891. + fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
  3892. +
  3893. + if (flags & EF_AVR32_PIC)
  3894. + fprintf(file, " [PIC]");
  3895. + if (flags & EF_AVR32_LINKRELAX)
  3896. + fprintf(file, " [linker relaxable]");
  3897. +
  3898. + flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
  3899. +
  3900. + if (flags)
  3901. + fprintf(file, _("<Unrecognized flag bits set>"));
  3902. +
  3903. + fputc('\n', file);
  3904. +
  3905. + return TRUE;
  3906. +}
  3907. +
  3908. +/* Set avr32-specific linker options. */
  3909. +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
  3910. + int direct_data_refs)
  3911. +{
  3912. + struct elf_avr32_link_hash_table *htab;
  3913. +
  3914. + htab = avr32_elf_hash_table (info);
  3915. + htab->direct_data_refs = !!direct_data_refs;
  3916. +}
  3917. +
  3918. +
  3919. +
  3920. +/* Understanding core dumps */
  3921. +
  3922. +static bfd_boolean
  3923. +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
  3924. +static bfd_boolean
  3925. +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
  3926. +
  3927. +static bfd_boolean
  3928. +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
  3929. +{
  3930. + /* Linux/AVR32B elf_prstatus */
  3931. + if (note->descsz != 148)
  3932. + return FALSE;
  3933. +
  3934. + /* pr_cursig */
  3935. + elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
  3936. +
  3937. + /* pr_pid */
  3938. + elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
  3939. +
  3940. + /* Make a ".reg/999" section for pr_reg. The size is for 16
  3941. + general-purpose registers, SR and r12_orig (18 * 4 = 72). */
  3942. + return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
  3943. + note->descpos + 72);
  3944. +}
  3945. +
  3946. +static bfd_boolean
  3947. +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
  3948. +{
  3949. + /* Linux/AVR32B elf_prpsinfo */
  3950. + if (note->descsz != 128)
  3951. + return FALSE;
  3952. +
  3953. + elf_tdata(abfd)->core_program
  3954. + = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
  3955. + elf_tdata(abfd)->core_command
  3956. + = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
  3957. +
  3958. + /* Note that for some reason, a spurious space is tacked
  3959. + onto the end of the args in some (at least one anyway)
  3960. + implementations, so strip it off if it exists. */
  3961. +
  3962. + {
  3963. + char *command = elf_tdata (abfd)->core_command;
  3964. + int n = strlen (command);
  3965. +
  3966. + if (0 < n && command[n - 1] == ' ')
  3967. + command[n - 1] = '\0';
  3968. + }
  3969. +
  3970. + return TRUE;
  3971. +}
  3972. +
  3973. +
  3974. +#define ELF_ARCH bfd_arch_avr32
  3975. +#define ELF_MACHINE_CODE EM_AVR32
  3976. +#define ELF_MAXPAGESIZE 0x1000
  3977. +
  3978. +#define TARGET_BIG_SYM bfd_elf32_avr32_vec
  3979. +#define TARGET_BIG_NAME "elf32-avr32"
  3980. +
  3981. +#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
  3982. +#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
  3983. +
  3984. +/* Only RELA relocations are used */
  3985. +#define elf_backend_may_use_rel_p 0
  3986. +#define elf_backend_may_use_rela_p 1
  3987. +#define elf_backend_default_use_rela_p 1
  3988. +#define elf_backend_rela_normal 1
  3989. +#define elf_info_to_howto_rel NULL
  3990. +#define elf_info_to_howto avr32_info_to_howto
  3991. +
  3992. +#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
  3993. +#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
  3994. +#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
  3995. +#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
  3996. +#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
  3997. +
  3998. +#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
  3999. +#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
  4000. +#define elf_backend_relocate_section avr32_elf_relocate_section
  4001. +#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
  4002. +#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
  4003. +#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
  4004. +#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
  4005. +#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
  4006. +#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
  4007. +#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
  4008. +
  4009. +#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
  4010. +
  4011. +/* Find out which symbols need an entry in .got. */
  4012. +#define elf_backend_check_relocs avr32_check_relocs
  4013. +#define elf_backend_can_refcount 1
  4014. +#define elf_backend_can_gc_sections 1
  4015. +#define elf_backend_plt_readonly 1
  4016. +#define elf_backend_plt_not_loaded 1
  4017. +#define elf_backend_want_plt_sym 0
  4018. +#define elf_backend_plt_alignment 2
  4019. +#define elf_backend_want_dynbss 0
  4020. +#define elf_backend_want_got_plt 0
  4021. +#define elf_backend_want_got_sym 1
  4022. +#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
  4023. +
  4024. +#include "elf32-target.h"
  4025. --- /dev/null
  4026. +++ b/bfd/elf32-avr32.h
  4027. @@ -0,0 +1,23 @@
  4028. +/* AVR32-specific support for 32-bit ELF.
  4029. + Copyright 2007 Atmel Corporation.
  4030. +
  4031. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  4032. +
  4033. + This file is part of BFD, the Binary File Descriptor library.
  4034. +
  4035. + This program is free software; you can redistribute it and/or modify
  4036. + it under the terms of the GNU General Public License as published by
  4037. + the Free Software Foundation; either version 2 of the License, or
  4038. + (at your option) any later version.
  4039. +
  4040. + This program is distributed in the hope that it will be useful,
  4041. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  4042. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  4043. + GNU General Public License for more details.
  4044. +
  4045. + You should have received a copy of the GNU General Public License
  4046. + along with this program; if not, write to the Free Software
  4047. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  4048. +
  4049. +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
  4050. + int direct_data_refs);
  4051. --- a/bfd/elf-bfd.h
  4052. +++ b/bfd/elf-bfd.h
  4053. @@ -1400,6 +1400,10 @@ struct elf_obj_tdata
  4054. find_nearest_line. */
  4055. struct mips_elf_find_line *find_line_info;
  4056. + /* Used by AVR32 ELF relaxation code. Contains an array of pointers
  4057. + for each local symbol to the fragment where it is defined. */
  4058. + struct fragment **local_sym_frag;
  4059. +
  4060. /* A place to stash dwarf1 info for this bfd. */
  4061. struct dwarf1_debug *dwarf1_find_line_info;
  4062. --- a/bfd/Makefile.am
  4063. +++ b/bfd/Makefile.am
  4064. @@ -63,6 +63,7 @@ ALL_MACHINES = \
  4065. cpu-arc.lo \
  4066. cpu-arm.lo \
  4067. cpu-avr.lo \
  4068. + cpu-avr32.lo \
  4069. cpu-bfin.lo \
  4070. cpu-cr16.lo \
  4071. cpu-cr16c.lo \
  4072. @@ -243,6 +244,7 @@ BFD32_BACKENDS = \
  4073. elf32-arc.lo \
  4074. elf32-arm.lo \
  4075. elf32-avr.lo \
  4076. + elf32-avr32.lo \
  4077. elf32-bfin.lo \
  4078. elf32-cr16.lo \
  4079. elf32-cr16c.lo \
  4080. @@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
  4081. $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
  4082. $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  4083. $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
  4084. +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
  4085. + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  4086. + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
  4087. + elf32-target.h
  4088. elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
  4089. $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
  4090. $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
  4091. --- a/bfd/reloc.c
  4092. +++ b/bfd/reloc.c
  4093. @@ -3948,6 +3948,131 @@ ENUMDOC
  4094. instructions
  4095. ENUM
  4096. + BFD_RELOC_AVR32_DIFF32
  4097. +ENUMX
  4098. + BFD_RELOC_AVR32_DIFF16
  4099. +ENUMX
  4100. + BFD_RELOC_AVR32_DIFF8
  4101. +ENUMDOC
  4102. + Difference between two labels: L2 - L1. The value of L1 is encoded
  4103. + as sym + addend, while the initial difference after assembly is
  4104. + inserted into the object file by the assembler.
  4105. +ENUM
  4106. + BFD_RELOC_AVR32_GOT32
  4107. +ENUMX
  4108. + BFD_RELOC_AVR32_GOT16
  4109. +ENUMX
  4110. + BFD_RELOC_AVR32_GOT8
  4111. +ENUMDOC
  4112. + Reference to a symbol through the Global Offset Table. The linker
  4113. + will allocate an entry for symbol in the GOT and insert the offset
  4114. + of this entry as the relocation value.
  4115. +ENUM
  4116. + BFD_RELOC_AVR32_21S
  4117. +ENUMX
  4118. + BFD_RELOC_AVR32_16U
  4119. +ENUMX
  4120. + BFD_RELOC_AVR32_16S
  4121. +ENUMX
  4122. + BFD_RELOC_AVR32_SUB5
  4123. +ENUMX
  4124. + BFD_RELOC_AVR32_8S_EXT
  4125. +ENUMX
  4126. + BFD_RELOC_AVR32_8S
  4127. +ENUMX
  4128. + BFD_RELOC_AVR32_15S
  4129. +ENUMDOC
  4130. + Normal (non-pc-relative) code relocations. Alignment and signedness
  4131. + is indicated by the suffixes. S means signed, U means unsigned. W
  4132. + means word-aligned, H means halfword-aligned, neither means
  4133. + byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
  4134. +ENUM
  4135. + BFD_RELOC_AVR32_22H_PCREL
  4136. +ENUMX
  4137. + BFD_RELOC_AVR32_18W_PCREL
  4138. +ENUMX
  4139. + BFD_RELOC_AVR32_16B_PCREL
  4140. +ENUMX
  4141. + BFD_RELOC_AVR32_16N_PCREL
  4142. +ENUMX
  4143. + BFD_RELOC_AVR32_14UW_PCREL
  4144. +ENUMX
  4145. + BFD_RELOC_AVR32_11H_PCREL
  4146. +ENUMX
  4147. + BFD_RELOC_AVR32_10UW_PCREL
  4148. +ENUMX
  4149. + BFD_RELOC_AVR32_9H_PCREL
  4150. +ENUMX
  4151. + BFD_RELOC_AVR32_9UW_PCREL
  4152. +ENUMDOC
  4153. + PC-relative relocations are signed if neither 'U' nor 'S' is
  4154. + specified. However, we explicitly tack on a 'B' to indicate no
  4155. + alignment, to avoid confusion with data relocs. All of these resolve
  4156. + to sym + addend - offset, except the one with 'N' (negated) suffix.
  4157. + This particular one resolves to offset - sym - addend.
  4158. +ENUM
  4159. + BFD_RELOC_AVR32_GOTPC
  4160. +ENUMDOC
  4161. + Subtract the link-time address of the GOT from (symbol + addend)
  4162. + and insert the result.
  4163. +ENUM
  4164. + BFD_RELOC_AVR32_GOTCALL
  4165. +ENUMX
  4166. + BFD_RELOC_AVR32_LDA_GOT
  4167. +ENUMX
  4168. + BFD_RELOC_AVR32_GOT21S
  4169. +ENUMX
  4170. + BFD_RELOC_AVR32_GOT18SW
  4171. +ENUMX
  4172. + BFD_RELOC_AVR32_GOT16S
  4173. +ENUMDOC
  4174. + Reference to a symbol through the GOT. The linker will allocate an
  4175. + entry for symbol in the GOT and insert the offset of this entry as
  4176. + the relocation value. addend must be zero. As usual, 'S' means
  4177. + signed, 'W' means word-aligned, etc.
  4178. +ENUM
  4179. + BFD_RELOC_AVR32_32_CPENT
  4180. +ENUMDOC
  4181. + 32-bit constant pool entry. I don't think 8- and 16-bit entries make
  4182. + a whole lot of sense.
  4183. +ENUM
  4184. + BFD_RELOC_AVR32_CPCALL
  4185. +ENUMX
  4186. + BFD_RELOC_AVR32_16_CP
  4187. +ENUMX
  4188. + BFD_RELOC_AVR32_9W_CP
  4189. +ENUMDOC
  4190. + Constant pool references. Some of these relocations are signed,
  4191. + others are unsigned. It doesn't really matter, since the constant
  4192. + pool always comes after the code that references it.
  4193. +ENUM
  4194. + BFD_RELOC_AVR32_ALIGN
  4195. +ENUMDOC
  4196. + sym must be the absolute symbol. The addend specifies the alignment
  4197. + order, e.g. if addend is 2, the linker must add padding so that the
  4198. + next address is aligned to a 4-byte boundary.
  4199. +ENUM
  4200. + BFD_RELOC_AVR32_14UW
  4201. +ENUMX
  4202. + BFD_RELOC_AVR32_10UW
  4203. +ENUMX
  4204. + BFD_RELOC_AVR32_10SW
  4205. +ENUMX
  4206. + BFD_RELOC_AVR32_STHH_W
  4207. +ENUMX
  4208. + BFD_RELOC_AVR32_7UW
  4209. +ENUMX
  4210. + BFD_RELOC_AVR32_6S
  4211. +ENUMX
  4212. + BFD_RELOC_AVR32_6UW
  4213. +ENUMX
  4214. + BFD_RELOC_AVR32_4UH
  4215. +ENUMX
  4216. + BFD_RELOC_AVR32_3U
  4217. +ENUMDOC
  4218. + Code relocations that will never make it to the output file.
  4219. +
  4220. +ENUM
  4221. BFD_RELOC_390_12
  4222. ENUMDOC
  4223. Direct 12 bit.
  4224. --- a/bfd/targets.c
  4225. +++ b/bfd/targets.c
  4226. @@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
  4227. extern const bfd_target bfd_efi_app_x86_64_vec;
  4228. extern const bfd_target bfd_efi_app_ia64_vec;
  4229. extern const bfd_target bfd_elf32_avr_vec;
  4230. +extern const bfd_target bfd_elf32_avr32_vec;
  4231. extern const bfd_target bfd_elf32_bfin_vec;
  4232. extern const bfd_target bfd_elf32_bfinfdpic_vec;
  4233. extern const bfd_target bfd_elf32_big_generic_vec;
  4234. @@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
  4235. &bfd_efi_app_ia64_vec,
  4236. #endif
  4237. &bfd_elf32_avr_vec,
  4238. + &bfd_elf32_avr32_vec,
  4239. &bfd_elf32_bfin_vec,
  4240. &bfd_elf32_bfinfdpic_vec,
  4241. --- a/binutils/Makefile.am
  4242. +++ b/binutils/Makefile.am
  4243. @@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
  4244. $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
  4245. $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
  4246. $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
  4247. - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
  4248. + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
  4249. $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
  4250. $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
  4251. $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
  4252. --- a/binutils/readelf.c
  4253. +++ b/binutils/readelf.c
  4254. @@ -21,7 +21,7 @@
  4255. along with this program; if not, write to the Free Software
  4256. Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
  4257. 02110-1301, USA. */
  4258. -
  4259. +
  4260. /* The difference between readelf and objdump:
  4261. Both programs are capable of displaying the contents of ELF format files,
  4262. @@ -40,7 +40,7 @@
  4263. There is also the case that readelf can provide more information about an
  4264. ELF file than is provided by objdump. In particular it can display DWARF
  4265. debugging information which (at the moment) objdump cannot. */
  4266. -
  4267. +
  4268. #include "sysdep.h"
  4269. #include <assert.h>
  4270. #include <sys/stat.h>
  4271. @@ -109,6 +109,7 @@
  4272. #include "elf/arc.h"
  4273. #include "elf/arm.h"
  4274. #include "elf/avr.h"
  4275. +#include "elf/avr32.h"
  4276. #include "elf/bfin.h"
  4277. #include "elf/cr16.h"
  4278. #include "elf/cris.h"
  4279. @@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
  4280. #define streq(a,b) (strcmp ((a), (b)) == 0)
  4281. #define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
  4282. #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
  4283. -
  4284. +
  4285. static void *
  4286. get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
  4287. const char *reason)
  4288. @@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
  4289. case EM_ALPHA:
  4290. case EM_ALTERA_NIOS2:
  4291. case EM_AVR:
  4292. + case EM_AVR32:
  4293. case EM_AVR_OLD:
  4294. case EM_BLACKFIN:
  4295. case EM_CR16:
  4296. @@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
  4297. rtype = elf_avr_reloc_type (type);
  4298. break;
  4299. + case EM_AVR32:
  4300. + rtype = elf_avr32_reloc_type (type);
  4301. + break;
  4302. +
  4303. case EM_OLD_SPARCV9:
  4304. case EM_SPARC32PLUS:
  4305. case EM_SPARCV9:
  4306. @@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
  4307. case EM_VAX: return "Digital VAX";
  4308. case EM_AVR_OLD:
  4309. case EM_AVR: return "Atmel AVR 8-bit microcontroller";
  4310. + case EM_AVR32: return "Atmel AVR32";
  4311. case EM_CRIS: return "Axis Communications 32-bit embedded processor";
  4312. case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
  4313. case EM_FIREPATH: return "Element 14 64-bit DSP processor";
  4314. --- a/gas/as.c
  4315. +++ b/gas/as.c
  4316. @@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
  4317. the end of the preceeding line so that it is simpler to
  4318. selectively add and remove lines from this list. */
  4319. {"alternate", no_argument, NULL, OPTION_ALTERNATE}
  4320. - /* The entry for "a" is here to prevent getopt_long_only() from
  4321. - considering that -a is an abbreviation for --alternate. This is
  4322. - necessary because -a=<FILE> is a valid switch but getopt would
  4323. - normally reject it since --alternate does not take an argument. */
  4324. + /* The next two entries are here to prevent getopt_long_only() from
  4325. + considering that -a or -al is an abbreviation for --alternate.
  4326. + This is necessary because -a=<FILE> is a valid switch but getopt
  4327. + would normally reject it since --alternate does not take an argument. */
  4328. ,{"a", optional_argument, NULL, 'a'}
  4329. /* Handle -al=<FILE>. */
  4330. ,{"al", optional_argument, NULL, OPTION_AL}
  4331. @@ -803,8 +803,15 @@ This program has absolutely no warranty.
  4332. case 'a':
  4333. if (optarg)
  4334. {
  4335. - if (optarg != old_argv[optind] && optarg[-1] == '=')
  4336. - --optarg;
  4337. + /* If optarg is part of the -a switch and not a separate argument
  4338. + in its own right, then scan backwards to the just after the -a.
  4339. + This means skipping over both '=' and 'l' which might have been
  4340. + taken to be part of the -a switch itself. */
  4341. + if (optarg != old_argv[optind])
  4342. + {
  4343. + while (optarg[-1] == '=' || optarg[-1] == 'l')
  4344. + --optarg;
  4345. + }
  4346. if (md_parse_option (optc, optarg) != 0)
  4347. break;
  4348. @@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
  4349. keep_it = 0;
  4350. if (!keep_it)
  4351. - unlink_if_ordinary (out_file_name);
  4352. + unlink (out_file_name);
  4353. input_scrub_end ();
  4354. --- /dev/null
  4355. +++ b/gas/config/tc-avr32.c
  4356. @@ -0,0 +1,4806 @@
  4357. +/* Assembler implementation for AVR32.
  4358. + Copyright 2003-2006 Atmel Corporation.
  4359. +
  4360. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  4361. +
  4362. + This file is part of GAS, the GNU Assembler.
  4363. +
  4364. + GAS is free software; you can redistribute it and/or modify it
  4365. + under the terms of the GNU General Public License as published by
  4366. + the Free Software Foundation; either version 2, or (at your option)
  4367. + any later version.
  4368. +
  4369. + GAS is distributed in the hope that it will be useful, but WITHOUT
  4370. + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  4371. + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  4372. + License for more details.
  4373. +
  4374. + You should have received a copy of the GNU General Public License
  4375. + along with GAS; see the file COPYING. If not, write to the Free
  4376. + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
  4377. + 02111-1307, USA. */
  4378. +
  4379. +#include <stdio.h>
  4380. +#include "as.h"
  4381. +#include "safe-ctype.h"
  4382. +#include "subsegs.h"
  4383. +#include "symcat.h"
  4384. +#include "opcodes/avr32-opc.h"
  4385. +#include "opcodes/avr32-asm.h"
  4386. +#include "elf/avr32.h"
  4387. +#include "dwarf2dbg.h"
  4388. +
  4389. +#define xDEBUG
  4390. +#define xOPC_CONSISTENCY_CHECK
  4391. +
  4392. +#ifdef DEBUG
  4393. +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
  4394. +#else
  4395. +# define pr_debug(fmt, args...)
  4396. +#endif
  4397. +
  4398. +/* 3 MSB of instruction word indicate group. Group 7 -> extended */
  4399. +#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
  4400. +
  4401. +#define streq(a, b) (strcmp(a, b) == 0)
  4402. +#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
  4403. +
  4404. +/* Flags given on the command line */
  4405. +static int avr32_pic = FALSE;
  4406. +int linkrelax = FALSE;
  4407. +int avr32_iarcompat = FALSE;
  4408. +
  4409. +/* This array holds the chars that always start a comment. */
  4410. +const char comment_chars[] = "#";
  4411. +
  4412. +/* This array holds the chars that only start a comment at the
  4413. + beginning of a line. We must include '#' here because the compiler
  4414. + may produce #APP and #NO_APP in its output. */
  4415. +const char line_comment_chars[] = "#";
  4416. +
  4417. +/* These may be used instead of newline (same as ';' in C). */
  4418. +const char line_separator_chars[] = ";";
  4419. +
  4420. +/* Chars that can be used to separate mantissa from exponent in
  4421. + floating point numbers. */
  4422. +const char EXP_CHARS[] = "eE";
  4423. +
  4424. +/* Chars that mean this number is a floating point constant. */
  4425. +const char FLT_CHARS[] = "dD";
  4426. +
  4427. +/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
  4428. +symbolS *GOT_symbol;
  4429. +
  4430. +static struct hash_control *avr32_mnemonic_htab;
  4431. +
  4432. +struct avr32_ifield_data
  4433. +{
  4434. + bfd_vma value;
  4435. + /* FIXME: Get rid of align_order and complain. complain is never
  4436. + used, align_order is used in one place. Try to use the relax
  4437. + table instead. */
  4438. + unsigned int align_order;
  4439. +};
  4440. +
  4441. +struct avr32_insn
  4442. +{
  4443. + const struct avr32_syntax *syntax;
  4444. + expressionS immediate;
  4445. + int pcrel;
  4446. + int force_extended;
  4447. + unsigned int next_slot;
  4448. + bfd_reloc_code_real_type r_type;
  4449. + struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
  4450. +};
  4451. +
  4452. +static struct avr32_insn current_insn;
  4453. +
  4454. +/* The target specific pseudo-ops we support. */
  4455. +static void s_rseg (int);
  4456. +static void s_cpool(int);
  4457. +
  4458. +const pseudo_typeS md_pseudo_table[] =
  4459. +{
  4460. + /* Make sure that .word is 32 bits */
  4461. + { "word", cons, 4 },
  4462. + { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
  4463. + { "loc", dwarf2_directive_loc, 0 },
  4464. +
  4465. + /* .lcomm requires an explicit alignment parameter */
  4466. + { "lcomm", s_lcomm, 1 },
  4467. +
  4468. + /* AVR32-specific pseudo-ops */
  4469. + { "cpool", s_cpool, 0},
  4470. +
  4471. + /* IAR compatible pseudo-ops */
  4472. + { "program", s_ignore, 0 },
  4473. + { "public", s_globl, 0 },
  4474. + { "extern", s_ignore, 0 },
  4475. + { "module", s_ignore, 0 },
  4476. + { "rseg", s_rseg, 0 },
  4477. + { "dc8", cons, 1 },
  4478. + { "dc16", cons, 2 },
  4479. + { "dc32", cons, 4 },
  4480. +
  4481. + { NULL, NULL, 0 }
  4482. +};
  4483. +
  4484. +/* Questionable stuff starts here */
  4485. +
  4486. +enum avr32_opinfo {
  4487. + AVR32_OPINFO_NONE = BFD_RELOC_NONE,
  4488. + AVR32_OPINFO_GOT,
  4489. + AVR32_OPINFO_TLSGD,
  4490. + AVR32_OPINFO_HI,
  4491. + AVR32_OPINFO_LO,
  4492. +};
  4493. +
  4494. +enum avr32_arch {
  4495. + ARCH_TYPE_AP,
  4496. + ARCH_TYPE_UCR1,
  4497. + ARCH_TYPE_UCR2,
  4498. +};
  4499. +
  4500. +struct arch_type_s
  4501. +{
  4502. + /* Architecture name */
  4503. + char *name;
  4504. + /* Instruction Set Architecture Flags */
  4505. + unsigned long isa_flags;
  4506. +};
  4507. +
  4508. +struct part_type_s
  4509. +{
  4510. + /* Part name */
  4511. + char *name;
  4512. + /* Architecture type */
  4513. + unsigned int arch;
  4514. +};
  4515. +
  4516. +static struct arch_type_s arch_types[] =
  4517. +{
  4518. + {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
  4519. + {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
  4520. + {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
  4521. + {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
  4522. + {NULL, 0}
  4523. +};
  4524. +
  4525. +static struct part_type_s part_types[] = {
  4526. + {"ap7000", ARCH_TYPE_AP},
  4527. + {"ap7001", ARCH_TYPE_AP},
  4528. + {"ap7002", ARCH_TYPE_AP},
  4529. + {"ap7200", ARCH_TYPE_AP},
  4530. + {"uc3a0128", ARCH_TYPE_UCR2},
  4531. + {"uc3a0256", ARCH_TYPE_UCR2},
  4532. + {"uc3a0512es", ARCH_TYPE_UCR1},
  4533. + {"uc3a0512", ARCH_TYPE_UCR2},
  4534. + {"uc3a1128", ARCH_TYPE_UCR2},
  4535. + {"uc3a1256es", ARCH_TYPE_UCR1},
  4536. + {"uc3a1256", ARCH_TYPE_UCR2},
  4537. + {"uc3a1512es", ARCH_TYPE_UCR1},
  4538. + {"uc3a1512", ARCH_TYPE_UCR2},
  4539. + {"uc3a364", ARCH_TYPE_UCR2},
  4540. + {"uc3a364s", ARCH_TYPE_UCR2},
  4541. + {"uc3a3128", ARCH_TYPE_UCR2},
  4542. + {"uc3a3128s", ARCH_TYPE_UCR2},
  4543. + {"uc3a3256", ARCH_TYPE_UCR2},
  4544. + {"uc3a3256s", ARCH_TYPE_UCR2},
  4545. + {"uc3b064", ARCH_TYPE_UCR1},
  4546. + {"uc3b0128", ARCH_TYPE_UCR1},
  4547. + {"uc3b0256es", ARCH_TYPE_UCR1},
  4548. + {"uc3b0256", ARCH_TYPE_UCR1},
  4549. + {"uc3b164", ARCH_TYPE_UCR1},
  4550. + {"uc3b1128", ARCH_TYPE_UCR1},
  4551. + {"uc3b1256es", ARCH_TYPE_UCR1},
  4552. + {"uc3b1256", ARCH_TYPE_UCR1},
  4553. + {NULL, 0}
  4554. +};
  4555. +
  4556. +/* Current architecture type. */
  4557. +static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
  4558. +static struct arch_type_s *avr32_arch = &default_arch;
  4559. +
  4560. +/* Display nicely formatted list of known part- and architecture names. */
  4561. +
  4562. +static void
  4563. +show_arch_list (FILE *stream)
  4564. +{
  4565. + int i, x;
  4566. +
  4567. + fprintf (stream, _("Known architecture names:"));
  4568. + x = 1000;
  4569. +
  4570. + for (i = 0; arch_types[i].name; i++)
  4571. + {
  4572. + int len = strlen (arch_types[i].name);
  4573. +
  4574. + x += len + 1;
  4575. +
  4576. + if (x < 75)
  4577. + fprintf (stream, " %s", arch_types[i].name);
  4578. + else
  4579. + {
  4580. + fprintf (stream, "\n %s", arch_types[i].name);
  4581. + x = len + 2;
  4582. + }
  4583. + }
  4584. +
  4585. + fprintf (stream, "\n");
  4586. +}
  4587. +
  4588. +static void
  4589. +show_part_list (FILE *stream)
  4590. +{
  4591. + int i, x;
  4592. +
  4593. + fprintf (stream, _("Known part names:"));
  4594. + x = 1000;
  4595. +
  4596. + for (i = 0; part_types[i].name; i++)
  4597. + {
  4598. + int len = strlen(part_types[i].name);
  4599. +
  4600. + x += len + 1;
  4601. +
  4602. + if (x < 75)
  4603. + fprintf (stream, " %s", part_types[i].name);
  4604. + else
  4605. + {
  4606. + fprintf(stream, "\n %s", part_types[i].name);
  4607. + x = len + 2;
  4608. + }
  4609. + }
  4610. +
  4611. + fprintf (stream, "\n");
  4612. +}
  4613. +
  4614. +const char *md_shortopts = "";
  4615. +struct option md_longopts[] =
  4616. +{
  4617. +#define OPTION_ARCH (OPTION_MD_BASE)
  4618. +#define OPTION_PART (OPTION_ARCH + 1)
  4619. +#define OPTION_IAR (OPTION_PART + 1)
  4620. +#define OPTION_PIC (OPTION_IAR + 1)
  4621. +#define OPTION_NOPIC (OPTION_PIC + 1)
  4622. +#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
  4623. +#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
  4624. +#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
  4625. + {"march", required_argument, NULL, OPTION_ARCH},
  4626. + {"mpart", required_argument, NULL, OPTION_PART},
  4627. + {"iar", no_argument, NULL, OPTION_IAR},
  4628. + {"pic", no_argument, NULL, OPTION_PIC},
  4629. + {"no-pic", no_argument, NULL, OPTION_NOPIC},
  4630. + {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
  4631. + {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
  4632. + /* deprecated alias for -mpart=xxx */
  4633. + {"mcpu", required_argument, NULL, OPTION_PART},
  4634. + {NULL, no_argument, NULL, 0}
  4635. +};
  4636. +
  4637. +size_t md_longopts_size = sizeof (md_longopts);
  4638. +
  4639. +void
  4640. +md_show_usage (FILE *stream)
  4641. +{
  4642. + fprintf (stream, _("\
  4643. +AVR32 options:\n\
  4644. + -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
  4645. + -mpart=[part-name] Select specific part. [Default `none']\n\
  4646. + --pic Produce Position-Independent Code\n\
  4647. + --no-pic Don't produce Position-Independent Code\n\
  4648. + --linkrelax Produce output suitable for linker relaxing\n\
  4649. + --no-linkrelax Don't produce output suitable for linker relaxing\n"));
  4650. + show_arch_list(stream);
  4651. +}
  4652. +
  4653. +int
  4654. +md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
  4655. +{
  4656. + switch (c)
  4657. + {
  4658. + case OPTION_ARCH:
  4659. + {
  4660. + int i;
  4661. + char *s = alloca (strlen (arg) + 1);
  4662. +
  4663. + {
  4664. + char *t = s;
  4665. + char *arg1 = arg;
  4666. +
  4667. + do
  4668. + *t = TOLOWER (*arg1++);
  4669. + while (*t++);
  4670. + }
  4671. +
  4672. + /* Add backward compability */
  4673. + if (strcmp ("uc", s)== 0)
  4674. + {
  4675. + as_warn("Deprecated arch `%s' specified. "
  4676. + "Please use '-march=ucr1' instead. "
  4677. + "Converting to arch 'ucr1'\n",
  4678. + s);
  4679. + s="ucr1";
  4680. + }
  4681. +
  4682. + for (i = 0; arch_types[i].name; ++i)
  4683. + if (strcmp (arch_types[i].name, s) == 0)
  4684. + break;
  4685. +
  4686. + if (!arch_types[i].name)
  4687. + {
  4688. + show_arch_list (stderr);
  4689. + as_fatal (_("unknown architecture: %s\n"), arg);
  4690. + }
  4691. +
  4692. + avr32_arch = &arch_types[i];
  4693. + break;
  4694. + }
  4695. + case OPTION_PART:
  4696. + {
  4697. + int i;
  4698. + char *s = alloca (strlen (arg) + 1);
  4699. + char *t = s;
  4700. + char *p = arg;
  4701. +
  4702. + /* If arch type has already been set, don't bother.
  4703. + -march= always overrides -mpart= */
  4704. + if (avr32_arch != &default_arch)
  4705. + break;
  4706. +
  4707. + do
  4708. + *t = TOLOWER (*p++);
  4709. + while (*t++);
  4710. +
  4711. + for (i = 0; part_types[i].name; ++i)
  4712. + if (strcmp (part_types[i].name, s) == 0)
  4713. + break;
  4714. +
  4715. + if (!part_types[i].name)
  4716. + {
  4717. + show_part_list (stderr);
  4718. + as_fatal (_("unknown part: %s\n"), arg);
  4719. + }
  4720. +
  4721. + avr32_arch = &arch_types[part_types[i].arch];
  4722. + break;
  4723. + }
  4724. + case OPTION_IAR:
  4725. + avr32_iarcompat = 1;
  4726. + break;
  4727. + case OPTION_PIC:
  4728. + avr32_pic = 1;
  4729. + break;
  4730. + case OPTION_NOPIC:
  4731. + avr32_pic = 0;
  4732. + break;
  4733. + case OPTION_LINKRELAX:
  4734. + linkrelax = 1;
  4735. + break;
  4736. + case OPTION_NOLINKRELAX:
  4737. + linkrelax = 0;
  4738. + break;
  4739. + default:
  4740. + return 0;
  4741. + }
  4742. + return 1;
  4743. +}
  4744. +
  4745. +/* Can't use symbol_new here, so have to create a symbol and then at
  4746. + a later date assign it a value. Thats what these functions do.
  4747. +
  4748. + Shamelessly stolen from ARM. */
  4749. +
  4750. +static void
  4751. +symbol_locate (symbolS * symbolP,
  4752. + const char * name, /* It is copied, the caller can modify. */
  4753. + segT segment, /* Segment identifier (SEG_<something>). */
  4754. + valueT valu, /* Symbol value. */
  4755. + fragS * frag) /* Associated fragment. */
  4756. +{
  4757. + unsigned int name_length;
  4758. + char * preserved_copy_of_name;
  4759. +
  4760. + name_length = strlen (name) + 1; /* +1 for \0. */
  4761. + obstack_grow (&notes, name, name_length);
  4762. + preserved_copy_of_name = obstack_finish (&notes);
  4763. +#ifdef STRIP_UNDERSCORE
  4764. + if (preserved_copy_of_name[0] == '_')
  4765. + preserved_copy_of_name++;
  4766. +#endif
  4767. +
  4768. +#ifdef tc_canonicalize_symbol_name
  4769. + preserved_copy_of_name =
  4770. + tc_canonicalize_symbol_name (preserved_copy_of_name);
  4771. +#endif
  4772. +
  4773. + S_SET_NAME (symbolP, preserved_copy_of_name);
  4774. +
  4775. + S_SET_SEGMENT (symbolP, segment);
  4776. + S_SET_VALUE (symbolP, valu);
  4777. + symbol_clear_list_pointers (symbolP);
  4778. +
  4779. + symbol_set_frag (symbolP, frag);
  4780. +
  4781. + /* Link to end of symbol chain. */
  4782. + {
  4783. + extern int symbol_table_frozen;
  4784. +
  4785. + if (symbol_table_frozen)
  4786. + abort ();
  4787. + }
  4788. +
  4789. + symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
  4790. +
  4791. + obj_symbol_new_hook (symbolP);
  4792. +
  4793. +#ifdef tc_symbol_new_hook
  4794. + tc_symbol_new_hook (symbolP);
  4795. +#endif
  4796. +
  4797. +#ifdef DEBUG_SYMS
  4798. + verify_symbol_chain (symbol_rootP, symbol_lastP);
  4799. +#endif /* DEBUG_SYMS */
  4800. +}
  4801. +
  4802. +struct cpool_entry
  4803. +{
  4804. + int refcount;
  4805. + offsetT offset;
  4806. + expressionS exp;
  4807. +};
  4808. +
  4809. +struct cpool
  4810. +{
  4811. + struct cpool *next;
  4812. + int used;
  4813. + struct cpool_entry *literals;
  4814. + unsigned int padding;
  4815. + unsigned int next_free_entry;
  4816. + unsigned int id;
  4817. + symbolS *symbol;
  4818. + segT section;
  4819. + subsegT sub_section;
  4820. +};
  4821. +
  4822. +struct cpool *cpool_list = NULL;
  4823. +
  4824. +static struct cpool *
  4825. +find_cpool(segT section, subsegT sub_section)
  4826. +{
  4827. + struct cpool *pool;
  4828. +
  4829. + for (pool = cpool_list; pool != NULL; pool = pool->next)
  4830. + {
  4831. + if (!pool->used
  4832. + && pool->section == section
  4833. + && pool->sub_section == sub_section)
  4834. + break;
  4835. + }
  4836. +
  4837. + return pool;
  4838. +}
  4839. +
  4840. +static struct cpool *
  4841. +find_or_make_cpool(segT section, subsegT sub_section)
  4842. +{
  4843. + static unsigned int next_cpool_id = 0;
  4844. + struct cpool *pool;
  4845. +
  4846. + pool = find_cpool(section, sub_section);
  4847. +
  4848. + if (!pool)
  4849. + {
  4850. + pool = xmalloc(sizeof(*pool));
  4851. + if (!pool)
  4852. + return NULL;
  4853. +
  4854. + pool->used = 0;
  4855. + pool->literals = NULL;
  4856. + pool->padding = 0;
  4857. + pool->next_free_entry = 0;
  4858. + pool->section = section;
  4859. + pool->sub_section = sub_section;
  4860. + pool->next = cpool_list;
  4861. + pool->symbol = NULL;
  4862. +
  4863. + cpool_list = pool;
  4864. + }
  4865. +
  4866. + /* NULL symbol means that the pool is new or has just been emptied. */
  4867. + if (!pool->symbol)
  4868. + {
  4869. + pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
  4870. + 0, &zero_address_frag);
  4871. + pool->id = next_cpool_id++;
  4872. + }
  4873. +
  4874. + return pool;
  4875. +}
  4876. +
  4877. +static struct cpool *
  4878. +add_to_cpool(expressionS *exp, unsigned int *index, int ref)
  4879. +{
  4880. + struct cpool *pool;
  4881. + unsigned int entry;
  4882. +
  4883. + pool = find_or_make_cpool(now_seg, now_subseg);
  4884. +
  4885. + /* Check if this constant is already in the pool. */
  4886. + for (entry = 0; entry < pool->next_free_entry; entry++)
  4887. + {
  4888. + if ((pool->literals[entry].exp.X_op == exp->X_op)
  4889. + && (exp->X_op == O_constant)
  4890. + && (pool->literals[entry].exp.X_add_number
  4891. + == exp->X_add_number)
  4892. + && (pool->literals[entry].exp.X_unsigned
  4893. + == exp->X_unsigned))
  4894. + break;
  4895. +
  4896. + if ((pool->literals[entry].exp.X_op == exp->X_op)
  4897. + && (exp->X_op == O_symbol)
  4898. + && (pool->literals[entry].exp.X_add_number
  4899. + == exp->X_add_number)
  4900. + && (pool->literals[entry].exp.X_add_symbol
  4901. + == exp->X_add_symbol)
  4902. + && (pool->literals[entry].exp.X_op_symbol
  4903. + == exp->X_op_symbol))
  4904. + break;
  4905. + }
  4906. +
  4907. + /* Create an entry if we didn't find a match */
  4908. + if (entry == pool->next_free_entry)
  4909. + {
  4910. + pool->literals = xrealloc(pool->literals,
  4911. + sizeof(struct cpool_entry) * (entry + 1));
  4912. + pool->literals[entry].exp = *exp;
  4913. + pool->literals[entry].refcount = 0;
  4914. + pool->next_free_entry++;
  4915. + }
  4916. +
  4917. + if (index)
  4918. + *index = entry;
  4919. + if (ref)
  4920. + pool->literals[entry].refcount++;
  4921. +
  4922. + return pool;
  4923. +}
  4924. +
  4925. +struct avr32_operand
  4926. +{
  4927. + int id;
  4928. + int is_signed;
  4929. + int is_pcrel;
  4930. + int align_order;
  4931. + int (*match)(char *str);
  4932. + void (*parse)(const struct avr32_operand *op, char *str, int opindex);
  4933. +};
  4934. +
  4935. +static int
  4936. +match_anything(char *str ATTRIBUTE_UNUSED)
  4937. +{
  4938. + return 1;
  4939. +}
  4940. +
  4941. +static int
  4942. +match_intreg(char *str)
  4943. +{
  4944. + int regid, ret = 1;
  4945. +
  4946. + regid = avr32_parse_intreg(str);
  4947. + if (regid < 0)
  4948. + ret = 0;
  4949. +
  4950. + pr_debug("match_intreg: `%s': %d\n", str, ret);
  4951. +
  4952. + return ret;
  4953. +}
  4954. +
  4955. +static int
  4956. +match_intreg_predec(char *str)
  4957. +{
  4958. + int regid;
  4959. +
  4960. + if (str[0] != '-' || str[1] != '-')
  4961. + return 0;
  4962. +
  4963. + regid = avr32_parse_intreg(str + 2);
  4964. + if (regid < 0)
  4965. + return 0;
  4966. +
  4967. + return 1;
  4968. +}
  4969. +
  4970. +static int
  4971. +match_intreg_postinc(char *str)
  4972. +{
  4973. + int regid, ret = 1;
  4974. + char *p, c;
  4975. +
  4976. + for (p = str; *p; p++)
  4977. + if (*p == '+')
  4978. + break;
  4979. +
  4980. + if (p[0] != '+' || p[1] != '+')
  4981. + return 0;
  4982. +
  4983. + c = *p, *p = 0;
  4984. + regid = avr32_parse_intreg(str);
  4985. + if (regid < 0)
  4986. + ret = 0;
  4987. +
  4988. + *p = c;
  4989. + return ret;
  4990. +}
  4991. +
  4992. +static int
  4993. +match_intreg_lsl(char *str)
  4994. +{
  4995. + int regid, ret = 1;
  4996. + char *p, c;
  4997. +
  4998. + for (p = str; *p; p++)
  4999. + if (*p == '<')
  5000. + break;
  5001. +
  5002. + if (p[0] && p[1] != '<')
  5003. + return 0;
  5004. +
  5005. + c = *p, *p = 0;
  5006. + regid = avr32_parse_intreg(str);
  5007. + if (regid < 0)
  5008. + ret = 0;
  5009. +
  5010. + *p = c;
  5011. + return ret;
  5012. +}
  5013. +
  5014. +static int
  5015. +match_intreg_lsr(char *str)
  5016. +{
  5017. + int regid, ret = 1;
  5018. + char *p, c;
  5019. +
  5020. + for (p = str; *p; p++)
  5021. + if (*p == '>')
  5022. + break;
  5023. +
  5024. + if (p[0] && p[1] != '>')
  5025. + return 0;
  5026. +
  5027. + c = *p, *p = 0;
  5028. +
  5029. + regid = avr32_parse_intreg(str);
  5030. + if (regid < 0)
  5031. + ret = 0;
  5032. +
  5033. + *p = c;
  5034. + return ret;
  5035. +}
  5036. +
  5037. +static int
  5038. +match_intreg_part(char *str)
  5039. +{
  5040. + int regid, ret = 1;
  5041. + char *p, c;
  5042. +
  5043. + for (p = str; *p; p++)
  5044. + if (*p == ':')
  5045. + break;
  5046. +
  5047. + if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
  5048. + return 0;
  5049. +
  5050. + c = *p, *p = 0;
  5051. + regid = avr32_parse_intreg(str);
  5052. + if (regid < 0)
  5053. + ret = 0;
  5054. +
  5055. + *p = c;
  5056. +
  5057. + return ret;
  5058. +}
  5059. +
  5060. +#define match_intreg_disp match_anything
  5061. +
  5062. +static int
  5063. +match_intreg_index(char *str)
  5064. +{
  5065. + int regid, ret = 1;
  5066. + char *p, *end, c;
  5067. +
  5068. + for (p = str; *p; p++)
  5069. + if (*p == '[')
  5070. + break;
  5071. +
  5072. + /* don't allow empty displacement here (it makes no sense) */
  5073. + if (p[0] != '[')
  5074. + return 0;
  5075. +
  5076. + for (end = p + 1; *end; end++) ;
  5077. + if (*(--end) != ']')
  5078. + return 0;
  5079. +
  5080. + c = *end, *end = 0;
  5081. + if (!match_intreg_lsl(p + 1))
  5082. + ret = 0;
  5083. + *end = c;
  5084. +
  5085. + if (ret)
  5086. + {
  5087. + c = *p, *p = 0;
  5088. + regid = avr32_parse_intreg(str);
  5089. + if (regid < 0)
  5090. + ret = 0;
  5091. + *p = c;
  5092. + }
  5093. +
  5094. + return ret;
  5095. +}
  5096. +
  5097. +static int
  5098. +match_intreg_xindex(char *str)
  5099. +{
  5100. + int regid, ret = 1;
  5101. + char *p, *end, c;
  5102. +
  5103. + for (p = str; *p; p++)
  5104. + if (*p == '[')
  5105. + break;
  5106. +
  5107. + /* empty displacement makes no sense here either */
  5108. + if (p[0] != '[')
  5109. + return 0;
  5110. +
  5111. + for (end = p + 1; *end; end++)
  5112. + if (*end == '<')
  5113. + break;
  5114. +
  5115. + if (!streq(end, "<<2]"))
  5116. + return 0;
  5117. +
  5118. + c = *end, *end = 0;
  5119. + if (!match_intreg_part(p + 1))
  5120. + ret = 0;
  5121. + *end = c;
  5122. +
  5123. + if (ret)
  5124. + {
  5125. + c = *p, *p = 0;
  5126. + regid = avr32_parse_intreg(str);
  5127. + if (regid < 0)
  5128. + ret = 0;
  5129. + *p = c;
  5130. + }
  5131. +
  5132. + return ret;
  5133. +}
  5134. +
  5135. +/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
  5136. + expression. So there's no point in attempting to match this... */
  5137. +#define match_pc_disp match_anything
  5138. +
  5139. +static int
  5140. +match_sp(char *str)
  5141. +{
  5142. + /* SP in any form will do */
  5143. + return avr32_parse_intreg(str) == AVR32_REG_SP;
  5144. +}
  5145. +
  5146. +static int
  5147. +match_sp_disp(char *str)
  5148. +{
  5149. + int regid, ret = 1;
  5150. + char *p, c;
  5151. +
  5152. + for (p = str; *p; p++)
  5153. + if (*p == '[')
  5154. + break;
  5155. +
  5156. + /* allow empty displacement, meaning zero */
  5157. + if (p[0] == '[')
  5158. + {
  5159. + char *end;
  5160. + for (end = p + 1; *end; end++) ;
  5161. + if (end[-1] != ']')
  5162. + return 0;
  5163. + }
  5164. +
  5165. + c = *p, *p = 0;
  5166. + regid = avr32_parse_intreg(str);
  5167. + if (regid != AVR32_REG_SP)
  5168. + ret = 0;
  5169. +
  5170. + *p = c;
  5171. + return ret;
  5172. +}
  5173. +
  5174. +static int
  5175. +match_cpno(char *str)
  5176. +{
  5177. + if (strncasecmp(str, "cp", 2) != 0)
  5178. + return 0;
  5179. + return 1;
  5180. +}
  5181. +
  5182. +static int
  5183. +match_cpreg(char *str)
  5184. +{
  5185. + if (strncasecmp(str, "cr", 2) != 0)
  5186. + return 0;
  5187. + return 1;
  5188. +}
  5189. +
  5190. +/* We allow complex expressions, and register names may show up as
  5191. + symbols. Just make sure immediate expressions are always matched
  5192. + last. */
  5193. +#define match_const match_anything
  5194. +#define match_jmplabel match_anything
  5195. +#define match_number match_anything
  5196. +
  5197. +/* Mnemonics that take reglists never accept anything else */
  5198. +#define match_reglist8 match_anything
  5199. +#define match_reglist9 match_anything
  5200. +#define match_reglist16 match_anything
  5201. +#define match_reglist_ldm match_anything
  5202. +#define match_reglist_cp8 match_anything
  5203. +#define match_reglist_cpd8 match_anything
  5204. +
  5205. +/* Ditto for retval, jospinc and mcall */
  5206. +#define match_retval match_anything
  5207. +#define match_jospinc match_anything
  5208. +#define match_mcall match_anything
  5209. +
  5210. +/* COH is used to select between two different syntaxes */
  5211. +static int
  5212. +match_coh(char *str)
  5213. +{
  5214. + return strcasecmp(str, "coh") == 0;
  5215. +}
  5216. +
  5217. +static int
  5218. +match_fpreg(char *str)
  5219. +{
  5220. + unsigned long regid;
  5221. + char *endptr;
  5222. +
  5223. + if ((str[0] != 'f' && str[0] != 'F')
  5224. + || (str[1] != 'r' && str[1] != 'R'))
  5225. + return 0;
  5226. +
  5227. + str += 2;
  5228. + regid = strtoul(str, &endptr, 10);
  5229. + if (!*str || *endptr)
  5230. + return 0;
  5231. +
  5232. + return 1;
  5233. +}
  5234. +
  5235. +static int
  5236. +match_picoreg(char *str)
  5237. +{
  5238. + int regid;
  5239. +
  5240. + regid = avr32_parse_picoreg(str);
  5241. + if (regid < 0)
  5242. + return 0;
  5243. + return 1;
  5244. +}
  5245. +
  5246. +#define match_pico_reglist_w match_anything
  5247. +#define match_pico_reglist_d match_anything
  5248. +
  5249. +static int
  5250. +match_pico_in(char *str)
  5251. +{
  5252. + unsigned long regid;
  5253. + char *end;
  5254. +
  5255. + if (strncasecmp(str, "in", 2) != 0)
  5256. + return 0;
  5257. +
  5258. + str += 2;
  5259. + regid = strtoul(str, &end, 10);
  5260. + if (!*str || *end)
  5261. + return 0;
  5262. +
  5263. + return 1;
  5264. +}
  5265. +
  5266. +static int
  5267. +match_pico_out0(char *str)
  5268. +{
  5269. + if (strcasecmp(str, "out0") != 0)
  5270. + return 0;
  5271. + return 1;
  5272. +}
  5273. +
  5274. +static int
  5275. +match_pico_out1(char *str)
  5276. +{
  5277. + if (strcasecmp(str, "out1") != 0)
  5278. + return 0;
  5279. + return 1;
  5280. +}
  5281. +
  5282. +static int
  5283. +match_pico_out2(char *str)
  5284. +{
  5285. + if (strcasecmp(str, "out2") != 0)
  5286. + return 0;
  5287. + return 1;
  5288. +}
  5289. +
  5290. +static int
  5291. +match_pico_out3(char *str)
  5292. +{
  5293. + if (strcasecmp(str, "out3") != 0)
  5294. + return 0;
  5295. + return 1;
  5296. +}
  5297. +
  5298. +static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5299. + char *str ATTRIBUTE_UNUSED,
  5300. + int opindex ATTRIBUTE_UNUSED)
  5301. +{
  5302. + /* Do nothing (this is used for "match-only" operands like COH) */
  5303. +}
  5304. +
  5305. +static void
  5306. +parse_const(const struct avr32_operand *op, char *str,
  5307. + int opindex ATTRIBUTE_UNUSED)
  5308. +{
  5309. + expressionS *exp = &current_insn.immediate;
  5310. + expressionS *sym_exp;
  5311. + int slot;
  5312. + char *save;
  5313. +
  5314. + pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
  5315. + str, op->is_signed, op->is_pcrel, op->align_order);
  5316. +
  5317. + save = input_line_pointer;
  5318. + input_line_pointer = str;
  5319. +
  5320. + expression(exp);
  5321. +
  5322. + slot = current_insn.next_slot++;
  5323. + current_insn.field_value[slot].align_order = op->align_order;
  5324. + current_insn.pcrel = op->is_pcrel;
  5325. +
  5326. + switch (exp->X_op)
  5327. + {
  5328. + case O_illegal:
  5329. + as_bad(_("illegal operand"));
  5330. + break;
  5331. + case O_absent:
  5332. + as_bad(_("missing operand"));
  5333. + break;
  5334. + case O_constant:
  5335. + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
  5336. + current_insn.field_value[slot].value = exp->X_add_number;
  5337. + break;
  5338. + case O_uminus:
  5339. + pr_debug(" -> uminus\n");
  5340. + sym_exp = symbol_get_value_expression(exp->X_add_symbol);
  5341. + switch (sym_exp->X_op) {
  5342. + case O_subtract:
  5343. + pr_debug(" -> subtract: switching operands\n");
  5344. + exp->X_op_symbol = sym_exp->X_add_symbol;
  5345. + exp->X_add_symbol = sym_exp->X_op_symbol;
  5346. + exp->X_op = O_subtract;
  5347. + /* TODO: Remove the old X_add_symbol */
  5348. + break;
  5349. + default:
  5350. + as_bad(_("Expression too complex\n"));
  5351. + break;
  5352. + }
  5353. + break;
  5354. +#if 0
  5355. + case O_subtract:
  5356. + /* Any expression subtracting a symbol from the current section
  5357. + can be made PC-relative by adding the right offset. */
  5358. + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
  5359. + current_insn.pcrel = TRUE;
  5360. + pr_debug(" -> subtract: pcrel? %s\n",
  5361. + current_insn.pcrel ? "yes" : "no");
  5362. + /* fall through */
  5363. +#endif
  5364. + default:
  5365. + pr_debug(" -> (%p <%d> %p + %d)\n",
  5366. + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
  5367. + exp->X_add_number);
  5368. + current_insn.field_value[slot].value = 0;
  5369. + break;
  5370. + }
  5371. +
  5372. + input_line_pointer = save;
  5373. +}
  5374. +
  5375. +static void
  5376. +parse_jmplabel(const struct avr32_operand *op, char *str,
  5377. + int opindex ATTRIBUTE_UNUSED)
  5378. +{
  5379. + expressionS *exp = &current_insn.immediate;
  5380. + int slot;
  5381. + char *save;
  5382. +
  5383. + pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
  5384. + str, op->is_signed, op->is_pcrel, op->align_order);
  5385. +
  5386. + save = input_line_pointer;
  5387. + input_line_pointer = str;
  5388. +
  5389. + expression(exp);
  5390. +
  5391. + slot = current_insn.next_slot++;
  5392. + current_insn.field_value[slot].align_order = op->align_order;
  5393. + current_insn.pcrel = TRUE;
  5394. +
  5395. + switch (exp->X_op)
  5396. + {
  5397. + case O_illegal:
  5398. + as_bad(_("illegal operand"));
  5399. + break;
  5400. + case O_absent:
  5401. + as_bad(_("missing operand"));
  5402. + break;
  5403. + case O_constant:
  5404. + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
  5405. + current_insn.field_value[slot].value = exp->X_add_number;
  5406. + current_insn.pcrel = 0;
  5407. + break;
  5408. + default:
  5409. + pr_debug(" -> (%p <%d> %p + %d)\n",
  5410. + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
  5411. + exp->X_add_number);
  5412. + current_insn.field_value[slot].value = 0;
  5413. + break;
  5414. + }
  5415. +
  5416. + input_line_pointer = save;
  5417. +}
  5418. +
  5419. +static void
  5420. +parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5421. + char *str, int opindex ATTRIBUTE_UNUSED)
  5422. +{
  5423. + int regid, slot;
  5424. +
  5425. + pr_debug("parse_intreg: `%s'\n", str);
  5426. +
  5427. + regid = avr32_parse_intreg(str);
  5428. + assert(regid >= 0);
  5429. +
  5430. + slot = current_insn.next_slot++;
  5431. + current_insn.field_value[slot].value = regid;
  5432. + current_insn.field_value[slot].align_order = op->align_order;
  5433. +}
  5434. +
  5435. +static void
  5436. +parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
  5437. +{
  5438. + parse_intreg(op, str + 2, opindex);
  5439. +}
  5440. +
  5441. +static void
  5442. +parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
  5443. +{
  5444. + char *p, c;
  5445. +
  5446. + pr_debug("parse_intreg_postinc: `%s'\n", str);
  5447. +
  5448. + for (p = str; *p != '+'; p++) ;
  5449. +
  5450. + c = *p, *p = 0;
  5451. + parse_intreg(op, str, opindex);
  5452. + *p = c;
  5453. +}
  5454. +
  5455. +static void
  5456. +parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5457. + char *str, int opindex ATTRIBUTE_UNUSED)
  5458. +{
  5459. + int regid, slot, shift = 0;
  5460. + char *p, c;
  5461. + char shiftop;
  5462. +
  5463. + pr_debug("parse Ry<<sa: `%s'\n", str);
  5464. +
  5465. + for (p = str; *p; p++)
  5466. + if (*p == '<' || *p == '>')
  5467. + break;
  5468. +
  5469. + shiftop = *p;
  5470. +
  5471. + c = *p, *p = 0;
  5472. + regid = avr32_parse_intreg(str);
  5473. + assert(regid >= 0);
  5474. + *p = c;
  5475. +
  5476. + if (c)
  5477. + {
  5478. + if (p[0] != shiftop || p[1] != shiftop)
  5479. + as_bad(_("expected shift operator in `%s'"), p);
  5480. + else
  5481. + {
  5482. + expressionS exp;
  5483. + char *saved;
  5484. +
  5485. + saved = input_line_pointer;
  5486. + input_line_pointer = p + 2;
  5487. + expression(&exp);
  5488. + input_line_pointer = saved;
  5489. +
  5490. + if (exp.X_op != O_constant)
  5491. + as_bad(_("shift amount must be a numeric constant"));
  5492. + else
  5493. + shift = exp.X_add_number;
  5494. + }
  5495. + }
  5496. +
  5497. + slot = current_insn.next_slot++;
  5498. + current_insn.field_value[slot].value = regid;
  5499. + slot = current_insn.next_slot++;
  5500. + current_insn.field_value[slot].value = shift;
  5501. +}
  5502. +
  5503. +/* The match() function selected the right opcode, so it doesn't
  5504. + matter which way we shift any more. */
  5505. +#define parse_intreg_lsl parse_intreg_shift
  5506. +#define parse_intreg_lsr parse_intreg_shift
  5507. +
  5508. +static void
  5509. +parse_intreg_part(const struct avr32_operand *op, char *str,
  5510. + int opindex ATTRIBUTE_UNUSED)
  5511. +{
  5512. + static const char bparts[] = { 'b', 'l', 'u', 't' };
  5513. + static const char hparts[] = { 'b', 't' };
  5514. + unsigned int slot, sel;
  5515. + int regid;
  5516. + char *p, c;
  5517. +
  5518. + pr_debug("parse reg:part `%s'\n", str);
  5519. +
  5520. + for (p = str; *p; p++)
  5521. + if (*p == ':')
  5522. + break;
  5523. +
  5524. + c = *p, *p = 0;
  5525. + regid = avr32_parse_intreg(str);
  5526. + assert(regid >= 0);
  5527. + *p = c;
  5528. +
  5529. + assert(c == ':');
  5530. +
  5531. + if (op->align_order)
  5532. + {
  5533. + for (sel = 0; sel < sizeof(hparts); sel++)
  5534. + if (TOLOWER(p[1]) == hparts[sel])
  5535. + break;
  5536. +
  5537. + if (sel >= sizeof(hparts))
  5538. + {
  5539. + as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
  5540. + p[1]);
  5541. + sel = 0;
  5542. + }
  5543. + }
  5544. + else
  5545. + {
  5546. + for (sel = 0; sel < sizeof(bparts); sel++)
  5547. + if (TOLOWER(p[1]) == bparts[sel])
  5548. + break;
  5549. +
  5550. + if (sel >= sizeof(bparts))
  5551. + {
  5552. + as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
  5553. + p[1]);
  5554. + sel = 0;
  5555. + }
  5556. + }
  5557. +
  5558. + slot = current_insn.next_slot++;
  5559. + current_insn.field_value[slot].value = regid;
  5560. + slot = current_insn.next_slot++;
  5561. + current_insn.field_value[slot].value = sel;
  5562. +}
  5563. +
  5564. +/* This is the parser for "Rp[displacement]" expressions. In addition
  5565. + to the "official" syntax, we accept a label as a replacement for
  5566. + the register expression. This syntax implies Rp=PC and the
  5567. + displacement is the pc-relative distance to the label. */
  5568. +static void
  5569. +parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
  5570. +{
  5571. + expressionS *exp = &current_insn.immediate;
  5572. + int slot, regid;
  5573. + char *save, *p, c;
  5574. +
  5575. + pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
  5576. + str, op->is_signed, op->is_pcrel, op->align_order);
  5577. +
  5578. + for (p = str; *p; p++)
  5579. + if (*p == '[')
  5580. + break;
  5581. +
  5582. + slot = current_insn.next_slot++;
  5583. +
  5584. + /* First, check if we have a valid register either before '[' or as
  5585. + the sole expression. If so, we use the Rp[disp] syntax. */
  5586. + c = *p, *p = 0;
  5587. + regid = avr32_parse_intreg(str);
  5588. + *p = c;
  5589. +
  5590. + if (regid >= 0)
  5591. + {
  5592. + current_insn.field_value[slot].value = regid;
  5593. +
  5594. + slot = current_insn.next_slot++;
  5595. + current_insn.field_value[slot].align_order = op->align_order;
  5596. +
  5597. + if (c == '[')
  5598. + {
  5599. + save = input_line_pointer;
  5600. + input_line_pointer = p + 1;
  5601. +
  5602. + expression(exp);
  5603. +
  5604. + if (*input_line_pointer != ']')
  5605. + as_bad(_("junk after displacement expression"));
  5606. +
  5607. + input_line_pointer = save;
  5608. +
  5609. + switch (exp->X_op)
  5610. + {
  5611. + case O_illegal:
  5612. + as_bad(_("illegal displacement expression"));
  5613. + break;
  5614. + case O_absent:
  5615. + as_bad(_("missing displacement expression"));
  5616. + break;
  5617. + case O_constant:
  5618. + pr_debug(" -> constant: %ld\n", exp->X_add_number);
  5619. + current_insn.field_value[slot].value = exp->X_add_number;
  5620. + break;
  5621. +#if 0
  5622. + case O_subtract:
  5623. + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
  5624. + current_insn.pcrel = TRUE;
  5625. + pr_debug(" -> subtract: pcrel? %s\n",
  5626. + current_insn.pcrel ? "yes" : "no");
  5627. + /* fall through */
  5628. +#endif
  5629. + default:
  5630. + pr_debug(" -> (%p <%d> %p + %d)\n",
  5631. + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
  5632. + exp->X_add_number);
  5633. + current_insn.field_value[slot].value = 0;
  5634. + }
  5635. + }
  5636. + else
  5637. + {
  5638. + exp->X_op = O_constant;
  5639. + exp->X_add_number = 0;
  5640. + current_insn.field_value[slot].value = 0;
  5641. + }
  5642. + }
  5643. + else
  5644. + {
  5645. + /* Didn't find a valid register. Try parsing it as a label. */
  5646. + current_insn.field_value[slot].value = AVR32_REG_PC;
  5647. + parse_jmplabel(op, str, opindex);
  5648. + }
  5649. +}
  5650. +
  5651. +static void
  5652. +parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5653. + char *str, int opindex ATTRIBUTE_UNUSED)
  5654. +{
  5655. + int slot, regid;
  5656. + char *p, *end, c;
  5657. +
  5658. + for (p = str; *p; p++)
  5659. + if (*p == '[')
  5660. + break;
  5661. +
  5662. + assert(*p);
  5663. +
  5664. + c = *p, *p = 0;
  5665. + regid = avr32_parse_intreg(str);
  5666. + assert(regid >= 0);
  5667. + *p = c;
  5668. +
  5669. + slot = current_insn.next_slot++;
  5670. + current_insn.field_value[slot].value = regid;
  5671. +
  5672. + p++;
  5673. + for (end = p; *end; end++)
  5674. + if (*end == ']' || *end == '<')
  5675. + break;
  5676. +
  5677. + assert(*end);
  5678. +
  5679. + c = *end, *end = 0;
  5680. + regid = avr32_parse_intreg(p);
  5681. + assert(regid >= 0);
  5682. + *end = c;
  5683. +
  5684. + slot = current_insn.next_slot++;
  5685. + current_insn.field_value[slot].value = regid;
  5686. +
  5687. + slot = current_insn.next_slot++;
  5688. + current_insn.field_value[slot].value = 0;
  5689. +
  5690. + if (*end == '<')
  5691. + {
  5692. + expressionS exp;
  5693. + char *save;
  5694. +
  5695. + p = end + 2;
  5696. + for (end = p; *end; end++)
  5697. + if (*end == ']')
  5698. + break;
  5699. +
  5700. + assert(*end == ']');
  5701. +
  5702. + c = *end, *end = 0;
  5703. + save = input_line_pointer;
  5704. + input_line_pointer = p;
  5705. + expression(&exp);
  5706. +
  5707. + if (*input_line_pointer)
  5708. + as_bad(_("junk after shift expression"));
  5709. +
  5710. + *end = c;
  5711. + input_line_pointer = save;
  5712. +
  5713. + if (exp.X_op == O_constant)
  5714. + current_insn.field_value[slot].value = exp.X_add_number;
  5715. + else
  5716. + as_bad(_("shift expression too complex"));
  5717. + }
  5718. +}
  5719. +
  5720. +static void
  5721. +parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
  5722. +{
  5723. + int slot, regid;
  5724. + char *p, *end, c;
  5725. +
  5726. + for (p = str; *p; p++)
  5727. + if (*p == '[')
  5728. + break;
  5729. +
  5730. + assert(*p);
  5731. +
  5732. + c = *p, *p = 0;
  5733. + regid = avr32_parse_intreg(str);
  5734. + assert(regid >= 0);
  5735. + *p = c;
  5736. +
  5737. + slot = current_insn.next_slot++;
  5738. + current_insn.field_value[slot].value = regid;
  5739. +
  5740. + p++;
  5741. + for (end = p; *end; end++)
  5742. + if (*end == '<')
  5743. + break;
  5744. +
  5745. + assert(*end);
  5746. +
  5747. + c = *end, *end = 0;
  5748. + parse_intreg_part(op, p, opindex);
  5749. + *end = c;
  5750. +}
  5751. +
  5752. +static void
  5753. +parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
  5754. +{
  5755. + char *p, c;
  5756. +
  5757. + for (p = str; *p; p++)
  5758. + if (*p == '[')
  5759. + break;
  5760. +
  5761. + /* The lddpc instruction comes in two different syntax variants:
  5762. + lddpc reg, expression
  5763. + lddpc reg, pc[disp]
  5764. + If the operand contains a '[', we use the second form. */
  5765. + if (*p)
  5766. + {
  5767. + int regid;
  5768. +
  5769. + c = *p, *p = 0;
  5770. + regid = avr32_parse_intreg(str);
  5771. + *p = c;
  5772. + if (regid == AVR32_REG_PC)
  5773. + {
  5774. + char *end;
  5775. +
  5776. + for (end = ++p; *end; end++) ;
  5777. + if (*(--end) != ']')
  5778. + as_bad(_("unrecognized form of instruction: `%s'"), str);
  5779. + else
  5780. + {
  5781. + c = *end, *end = 0;
  5782. + parse_const(op, p, opindex);
  5783. + *end = c;
  5784. + current_insn.pcrel = 0;
  5785. + }
  5786. + }
  5787. + else
  5788. + as_bad(_("unrecognized form of instruction: `%s'"), str);
  5789. + }
  5790. + else
  5791. + {
  5792. + parse_jmplabel(op, str, opindex);
  5793. + }
  5794. +}
  5795. +
  5796. +static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5797. + char *str ATTRIBUTE_UNUSED,
  5798. + int opindex ATTRIBUTE_UNUSED)
  5799. +{
  5800. + int slot;
  5801. +
  5802. + slot = current_insn.next_slot++;
  5803. + current_insn.field_value[slot].value = AVR32_REG_SP;
  5804. +}
  5805. +
  5806. +static void
  5807. +parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
  5808. +{
  5809. + char *p, c;
  5810. +
  5811. + for (; *str; str++)
  5812. + if (*str == '[')
  5813. + break;
  5814. +
  5815. + assert(*str);
  5816. +
  5817. + for (p = ++str; *p; p++)
  5818. + if (*p == ']')
  5819. + break;
  5820. +
  5821. + c = *p, *p = 0;
  5822. + parse_const(op, str, opindex);
  5823. + *p = c;
  5824. +}
  5825. +
  5826. +static void
  5827. +parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
  5828. + int opindex ATTRIBUTE_UNUSED)
  5829. +{
  5830. + int slot;
  5831. +
  5832. + str += 2;
  5833. + if (*str == '#')
  5834. + str++;
  5835. + if (*str < '0' || *str > '7' || str[1])
  5836. + as_bad(_("invalid coprocessor `%s'"), str);
  5837. +
  5838. + slot = current_insn.next_slot++;
  5839. + current_insn.field_value[slot].value = *str - '0';
  5840. +}
  5841. +
  5842. +static void
  5843. +parse_cpreg(const struct avr32_operand *op, char *str,
  5844. + int opindex ATTRIBUTE_UNUSED)
  5845. +{
  5846. + unsigned int crid;
  5847. + int slot;
  5848. + char *endptr;
  5849. +
  5850. + str += 2;
  5851. + crid = strtoul(str, &endptr, 10);
  5852. + if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
  5853. + as_bad(_("invalid coprocessor register `%s'"), str);
  5854. +
  5855. + crid >>= op->align_order;
  5856. +
  5857. + slot = current_insn.next_slot++;
  5858. + current_insn.field_value[slot].value = crid;
  5859. +}
  5860. +
  5861. +static void
  5862. +parse_number(const struct avr32_operand *op, char *str,
  5863. + int opindex ATTRIBUTE_UNUSED)
  5864. +{
  5865. + expressionS exp;
  5866. + int slot;
  5867. + char *save;
  5868. +
  5869. + save = input_line_pointer;
  5870. + input_line_pointer = str;
  5871. + expression(&exp);
  5872. + input_line_pointer = save;
  5873. +
  5874. + slot = current_insn.next_slot++;
  5875. + current_insn.field_value[slot].align_order = op->align_order;
  5876. +
  5877. + if (exp.X_op == O_constant)
  5878. + current_insn.field_value[slot].value = exp.X_add_number;
  5879. + else
  5880. + as_bad(_("invalid numeric expression `%s'"), str);
  5881. +}
  5882. +
  5883. +static void
  5884. +parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5885. + char *str, int opindex ATTRIBUTE_UNUSED)
  5886. +{
  5887. + unsigned long regmask;
  5888. + unsigned long value = 0;
  5889. + int slot;
  5890. + char *tail;
  5891. +
  5892. + regmask = avr32_parse_reglist(str, &tail);
  5893. + if (*tail)
  5894. + as_bad(_("invalid register list `%s'"), str);
  5895. + else
  5896. + {
  5897. + if (avr32_make_regmask8(regmask, &value))
  5898. + as_bad(_("register list `%s' doesn't fit"), str);
  5899. + }
  5900. +
  5901. + slot = current_insn.next_slot++;
  5902. + current_insn.field_value[slot].value = value;
  5903. +}
  5904. +
  5905. +static int
  5906. +parse_reglist_tail(char *str, unsigned long regmask)
  5907. +{
  5908. + expressionS exp;
  5909. + char *save, *p, c;
  5910. + int regid;
  5911. +
  5912. + for (p = str + 1; *p; p++)
  5913. + if (*p == '=')
  5914. + break;
  5915. +
  5916. + if (!*p)
  5917. + {
  5918. + as_bad(_("invalid register list `%s'"), str);
  5919. + return -2;
  5920. + }
  5921. +
  5922. + c = *p, *p = 0;
  5923. + regid = avr32_parse_intreg(str);
  5924. + *p = c;
  5925. +
  5926. + if (regid != 12)
  5927. + {
  5928. + as_bad(_("invalid register list `%s'"), str);
  5929. + return -2;
  5930. + }
  5931. +
  5932. + /* If we have an assignment, we must pop PC and we must _not_
  5933. + pop LR or R12 */
  5934. + if (!(regmask & (1 << AVR32_REG_PC)))
  5935. + {
  5936. + as_bad(_("return value specified for non-return instruction"));
  5937. + return -2;
  5938. + }
  5939. + else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
  5940. + {
  5941. + as_bad(_("can't pop LR or R12 when specifying return value"));
  5942. + return -2;
  5943. + }
  5944. +
  5945. + save = input_line_pointer;
  5946. + input_line_pointer = p + 1;
  5947. + expression(&exp);
  5948. + input_line_pointer = save;
  5949. +
  5950. + if (exp.X_op != O_constant
  5951. + || exp.X_add_number < -1
  5952. + || exp.X_add_number > 1)
  5953. + {
  5954. + as_bad(_("invalid return value `%s'"), str);
  5955. + return -2;
  5956. + }
  5957. +
  5958. + return exp.X_add_number;
  5959. +}
  5960. +
  5961. +static void
  5962. +parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  5963. + char *str, int opindex ATTRIBUTE_UNUSED)
  5964. +{
  5965. + unsigned long regmask;
  5966. + unsigned long value = 0, kbit = 0;
  5967. + int slot;
  5968. + char *tail;
  5969. +
  5970. + regmask = avr32_parse_reglist(str, &tail);
  5971. + /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
  5972. + if (*tail)
  5973. + {
  5974. + int retval;
  5975. +
  5976. + retval = parse_reglist_tail(tail, regmask);
  5977. +
  5978. + switch (retval)
  5979. + {
  5980. + case -1:
  5981. + regmask |= 1 << AVR32_REG_LR;
  5982. + break;
  5983. + case 0:
  5984. + break;
  5985. + case 1:
  5986. + regmask |= 1 << AVR32_REG_R12;
  5987. + break;
  5988. + default:
  5989. + break;
  5990. + }
  5991. +
  5992. + kbit = 1;
  5993. + }
  5994. +
  5995. + if (avr32_make_regmask8(regmask, &value))
  5996. + as_bad(_("register list `%s' doesn't fit"), str);
  5997. +
  5998. +
  5999. + slot = current_insn.next_slot++;
  6000. + current_insn.field_value[slot].value = (value << 1) | kbit;
  6001. +}
  6002. +
  6003. +static void
  6004. +parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6005. + char *str, int opindex ATTRIBUTE_UNUSED)
  6006. +{
  6007. + unsigned long regmask;
  6008. + int slot;
  6009. + char *tail;
  6010. +
  6011. + regmask = avr32_parse_reglist(str, &tail);
  6012. + if (*tail)
  6013. + as_bad(_("invalid register list `%s'"), str);
  6014. +
  6015. + slot = current_insn.next_slot++;
  6016. + current_insn.field_value[slot].value = regmask;
  6017. +}
  6018. +
  6019. +static void
  6020. +parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6021. + char *str, int opindex ATTRIBUTE_UNUSED)
  6022. +{
  6023. + unsigned long regmask;
  6024. + int slot, rp, w_bit = 0;
  6025. + char *tail, *p, c;
  6026. +
  6027. + for (p = str; *p && *p != ','; p++)
  6028. + if (*p == '+')
  6029. + break;
  6030. +
  6031. + c = *p, *p = 0;
  6032. + rp = avr32_parse_intreg(str);
  6033. + *p = c;
  6034. + if (rp < 0)
  6035. + {
  6036. + as_bad(_("invalid destination register in `%s'"), str);
  6037. + return;
  6038. + }
  6039. +
  6040. + if (p[0] == '+' && p[1] == '+')
  6041. + {
  6042. + w_bit = 1;
  6043. + p += 2;
  6044. + }
  6045. +
  6046. + if (*p != ',')
  6047. + {
  6048. + as_bad(_("expected `,' after destination register in `%s'"), str);
  6049. + return;
  6050. + }
  6051. +
  6052. + str = p + 1;
  6053. + regmask = avr32_parse_reglist(str, &tail);
  6054. + if (*tail)
  6055. + {
  6056. + int retval;
  6057. +
  6058. + if (rp != AVR32_REG_SP)
  6059. + {
  6060. + as_bad(_("junk at end of line: `%s'"), tail);
  6061. + return;
  6062. + }
  6063. +
  6064. + rp = AVR32_REG_PC;
  6065. +
  6066. + retval = parse_reglist_tail(tail, regmask);
  6067. +
  6068. + switch (retval)
  6069. + {
  6070. + case -1:
  6071. + regmask |= 1 << AVR32_REG_LR;
  6072. + break;
  6073. + case 0:
  6074. + break;
  6075. + case 1:
  6076. + regmask |= 1 << AVR32_REG_R12;
  6077. + break;
  6078. + default:
  6079. + return;
  6080. + }
  6081. + }
  6082. +
  6083. + slot = current_insn.next_slot++;
  6084. + current_insn.field_value[slot].value = rp;
  6085. + slot = current_insn.next_slot++;
  6086. + current_insn.field_value[slot].value = w_bit;
  6087. + slot = current_insn.next_slot++;
  6088. + current_insn.field_value[slot].value = regmask;
  6089. +}
  6090. +
  6091. +static void
  6092. +parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6093. + char *str, int opindex ATTRIBUTE_UNUSED)
  6094. +{
  6095. + unsigned long regmask;
  6096. + int slot, h_bit = 0;
  6097. + char *tail;
  6098. +
  6099. + regmask = avr32_parse_cpreglist(str, &tail);
  6100. + if (*tail)
  6101. + as_bad(_("junk at end of line: `%s'"), tail);
  6102. + else if (regmask & 0xffUL)
  6103. + {
  6104. + if (regmask & 0xff00UL)
  6105. + as_bad(_("register list `%s' doesn't fit"), str);
  6106. + regmask &= 0xff;
  6107. + }
  6108. + else if (regmask & 0xff00UL)
  6109. + {
  6110. + regmask >>= 8;
  6111. + h_bit = 1;
  6112. + }
  6113. + else
  6114. + as_warn(_("register list is empty"));
  6115. +
  6116. + slot = current_insn.next_slot++;
  6117. + current_insn.field_value[slot].value = regmask;
  6118. + slot = current_insn.next_slot++;
  6119. + current_insn.field_value[slot].value = h_bit;
  6120. +}
  6121. +
  6122. +static void
  6123. +parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6124. + char *str, int opindex ATTRIBUTE_UNUSED)
  6125. +{
  6126. + unsigned long regmask, regmask_d = 0;
  6127. + int slot, i;
  6128. + char *tail;
  6129. +
  6130. + regmask = avr32_parse_cpreglist(str, &tail);
  6131. + if (*tail)
  6132. + as_bad(_("junk at end of line: `%s'"), tail);
  6133. +
  6134. + for (i = 0; i < 8; i++)
  6135. + {
  6136. + if (regmask & 1)
  6137. + {
  6138. + if (!(regmask & 2))
  6139. + {
  6140. + as_bad(_("register list `%s' doesn't fit"), str);
  6141. + break;
  6142. + }
  6143. + regmask_d |= 1 << i;
  6144. + }
  6145. + else if (regmask & 2)
  6146. + {
  6147. + as_bad(_("register list `%s' doesn't fit"), str);
  6148. + break;
  6149. + }
  6150. +
  6151. + regmask >>= 2;
  6152. + }
  6153. +
  6154. + slot = current_insn.next_slot++;
  6155. + current_insn.field_value[slot].value = regmask_d;
  6156. +}
  6157. +
  6158. +static void
  6159. +parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6160. + char *str, int opindex ATTRIBUTE_UNUSED)
  6161. +{
  6162. + int regid, slot;
  6163. +
  6164. + regid = avr32_parse_intreg(str);
  6165. + if (regid < 0)
  6166. + {
  6167. + expressionS exp;
  6168. + char *save;
  6169. +
  6170. + regid = 0;
  6171. +
  6172. + save = input_line_pointer;
  6173. + input_line_pointer = str;
  6174. + expression(&exp);
  6175. + input_line_pointer = save;
  6176. +
  6177. + if (exp.X_op != O_constant)
  6178. + as_bad(_("invalid return value `%s'"), str);
  6179. + else
  6180. + switch (exp.X_add_number)
  6181. + {
  6182. + case -1:
  6183. + regid = AVR32_REG_LR;
  6184. + break;
  6185. + case 0:
  6186. + regid = AVR32_REG_SP;
  6187. + break;
  6188. + case 1:
  6189. + regid = AVR32_REG_PC;
  6190. + break;
  6191. + default:
  6192. + as_bad(_("invalid return value `%s'"), str);
  6193. + break;
  6194. + }
  6195. + }
  6196. +
  6197. + slot = current_insn.next_slot++;
  6198. + current_insn.field_value[slot].value = regid;
  6199. +}
  6200. +
  6201. +#define parse_mcall parse_intreg_disp
  6202. +
  6203. +static void
  6204. +parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6205. + char *str, int opindex ATTRIBUTE_UNUSED)
  6206. +{
  6207. + expressionS exp;
  6208. + int slot;
  6209. + char *save;
  6210. +
  6211. + save = input_line_pointer;
  6212. + input_line_pointer = str;
  6213. + expression(&exp);
  6214. + input_line_pointer = save;
  6215. +
  6216. + slot = current_insn.next_slot++;
  6217. +
  6218. + if (exp.X_op == O_constant)
  6219. + {
  6220. + if (exp.X_add_number > 0)
  6221. + exp.X_add_number--;
  6222. + current_insn.field_value[slot].value = exp.X_add_number;
  6223. + }
  6224. + else
  6225. + as_bad(_("invalid numeric expression `%s'"), str);
  6226. +}
  6227. +
  6228. +#define parse_coh parse_nothing
  6229. +
  6230. +static void
  6231. +parse_fpreg(const struct avr32_operand *op,
  6232. + char *str, int opindex ATTRIBUTE_UNUSED)
  6233. +{
  6234. + unsigned long regid;
  6235. + int slot;
  6236. +
  6237. + regid = strtoul(str + 2, NULL, 10);
  6238. +
  6239. + if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
  6240. + as_bad(_("invalid floating-point register `%s'"), str);
  6241. +
  6242. + slot = current_insn.next_slot++;
  6243. + current_insn.field_value[slot].value = regid;
  6244. + current_insn.field_value[slot].align_order = op->align_order;
  6245. +}
  6246. +
  6247. +static void
  6248. +parse_picoreg(const struct avr32_operand *op,
  6249. + char *str, int opindex ATTRIBUTE_UNUSED)
  6250. +{
  6251. + unsigned long regid;
  6252. + int slot;
  6253. +
  6254. + regid = avr32_parse_picoreg(str);
  6255. + if (regid & ((1 << op->align_order) - 1))
  6256. + as_bad(_("invalid double-word PiCo register `%s'"), str);
  6257. +
  6258. + slot = current_insn.next_slot++;
  6259. + current_insn.field_value[slot].value = regid;
  6260. + current_insn.field_value[slot].align_order = op->align_order;
  6261. +}
  6262. +
  6263. +static void
  6264. +parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6265. + char *str, int opindex ATTRIBUTE_UNUSED)
  6266. +{
  6267. + unsigned long regmask;
  6268. + int slot, h_bit = 0;
  6269. + char *tail;
  6270. +
  6271. + regmask = avr32_parse_pico_reglist(str, &tail);
  6272. + if (*tail)
  6273. + as_bad(_("junk at end of line: `%s'"), tail);
  6274. +
  6275. + if (regmask & 0x00ffUL)
  6276. + {
  6277. + if (regmask & 0xff00UL)
  6278. + as_bad(_("register list `%s' doesn't fit"), str);
  6279. + regmask &= 0x00ffUL;
  6280. + }
  6281. + else if (regmask & 0xff00UL)
  6282. + {
  6283. + regmask >>= 8;
  6284. + h_bit = 1;
  6285. + }
  6286. + else
  6287. + as_warn(_("register list is empty"));
  6288. +
  6289. + slot = current_insn.next_slot++;
  6290. + current_insn.field_value[slot].value = regmask;
  6291. + slot = current_insn.next_slot++;
  6292. + current_insn.field_value[slot].value = h_bit;
  6293. +}
  6294. +
  6295. +static void
  6296. +parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6297. + char *str, int opindex ATTRIBUTE_UNUSED)
  6298. +{
  6299. + unsigned long regmask, regmask_d = 0;
  6300. + int slot, i;
  6301. + char *tail;
  6302. +
  6303. + regmask = avr32_parse_pico_reglist(str, &tail);
  6304. + if (*tail)
  6305. + as_bad(_("junk at end of line: `%s'"), tail);
  6306. +
  6307. + for (i = 0; i < 8; i++)
  6308. + {
  6309. + if (regmask & 1)
  6310. + {
  6311. + if (!(regmask & 2))
  6312. + {
  6313. + as_bad(_("register list `%s' doesn't fit"), str);
  6314. + break;
  6315. + }
  6316. + regmask_d |= 1 << i;
  6317. + }
  6318. + else if (regmask & 2)
  6319. + {
  6320. + as_bad(_("register list `%s' doesn't fit"), str);
  6321. + break;
  6322. + }
  6323. +
  6324. + regmask >>= 2;
  6325. + }
  6326. +
  6327. + slot = current_insn.next_slot++;
  6328. + current_insn.field_value[slot].value = regmask_d;
  6329. +}
  6330. +
  6331. +static void
  6332. +parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
  6333. + char *str, int opindex ATTRIBUTE_UNUSED)
  6334. +{
  6335. + unsigned long regid;
  6336. + int slot;
  6337. +
  6338. + regid = strtoul(str + 2, NULL, 10);
  6339. +
  6340. + if (regid >= 12)
  6341. + as_bad(_("invalid PiCo IN register `%s'"), str);
  6342. +
  6343. + slot = current_insn.next_slot++;
  6344. + current_insn.field_value[slot].value = regid;
  6345. + current_insn.field_value[slot].align_order = 0;
  6346. +}
  6347. +
  6348. +#define parse_pico_out0 parse_nothing
  6349. +#define parse_pico_out1 parse_nothing
  6350. +#define parse_pico_out2 parse_nothing
  6351. +#define parse_pico_out3 parse_nothing
  6352. +
  6353. +#define OP(name, sgn, pcrel, align, func) \
  6354. + { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
  6355. +
  6356. +struct avr32_operand avr32_operand_table[] = {
  6357. + OP(INTREG, 0, 0, 0, intreg),
  6358. + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
  6359. + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
  6360. + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
  6361. + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
  6362. + OP(INTREG_BSEL, 0, 0, 0, intreg_part),
  6363. + OP(INTREG_HSEL, 0, 0, 1, intreg_part),
  6364. + OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
  6365. + OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
  6366. + OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
  6367. + OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
  6368. + OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
  6369. + OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
  6370. + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
  6371. + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
  6372. + OP(DWREG, 0, 0, 1, intreg),
  6373. + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
  6374. + OP(SP, 0, 0, 0, sp),
  6375. + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
  6376. + OP(CPNO, 0, 0, 0, cpno),
  6377. + OP(CPREG, 0, 0, 0, cpreg),
  6378. + OP(CPREG_D, 0, 0, 1, cpreg),
  6379. + OP(UNSIGNED_CONST, 0, 0, 0, const),
  6380. + OP(UNSIGNED_CONST_W, 0, 0, 2, const),
  6381. + OP(SIGNED_CONST, 1, 0, 0, const),
  6382. + OP(SIGNED_CONST_W, 1, 0, 2, const),
  6383. + OP(JMPLABEL, 1, 1, 1, jmplabel),
  6384. + OP(UNSIGNED_NUMBER, 0, 0, 0, number),
  6385. + OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
  6386. + OP(REGLIST8, 0, 0, 0, reglist8),
  6387. + OP(REGLIST9, 0, 0, 0, reglist9),
  6388. + OP(REGLIST16, 0, 0, 0, reglist16),
  6389. + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
  6390. + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
  6391. + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
  6392. + OP(RETVAL, 0, 0, 0, retval),
  6393. + OP(MCALL, 1, 0, 2, mcall),
  6394. + OP(JOSPINC, 0, 0, 0, jospinc),
  6395. + OP(COH, 0, 0, 0, coh),
  6396. + OP(FPREG_S, 0, 0, 0, fpreg),
  6397. + OP(FPREG_D, 0, 0, 1, fpreg),
  6398. + OP(PICO_REG_W, 0, 0, 0, picoreg),
  6399. + OP(PICO_REG_D, 0, 0, 1, picoreg),
  6400. + OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
  6401. + OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
  6402. + OP(PICO_IN, 0, 0, 0, pico_in),
  6403. + OP(PICO_OUT0, 0, 0, 0, pico_out0),
  6404. + OP(PICO_OUT1, 0, 0, 0, pico_out1),
  6405. + OP(PICO_OUT2, 0, 0, 0, pico_out2),
  6406. + OP(PICO_OUT3, 0, 0, 0, pico_out3),
  6407. +};
  6408. +
  6409. +symbolS *
  6410. +md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
  6411. +{
  6412. + pr_debug("md_undefined_symbol: %s\n", name);
  6413. + return 0;
  6414. +}
  6415. +
  6416. +struct avr32_relax_type
  6417. +{
  6418. + long lower_bound;
  6419. + long upper_bound;
  6420. + unsigned char align;
  6421. + unsigned char length;
  6422. + signed short next;
  6423. +};
  6424. +
  6425. +#define EMPTY { 0, 0, 0, 0, -1 }
  6426. +#define C(lower, upper, align, next) \
  6427. + { (lower), (upper), (align), 2, AVR32_OPC_##next }
  6428. +#define E(lower, upper, align) \
  6429. + { (lower), (upper), (align), 4, -1 }
  6430. +
  6431. +static const struct avr32_relax_type avr32_relax_table[] =
  6432. + {
  6433. + /* 0 */
  6434. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6435. + EMPTY, EMPTY, EMPTY,
  6436. + E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
  6437. + EMPTY,
  6438. + /* 16 */
  6439. + EMPTY, EMPTY, EMPTY, EMPTY,
  6440. +
  6441. + C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
  6442. + C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
  6443. + C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
  6444. + C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
  6445. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6446. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6447. + /* 32 */
  6448. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6449. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6450. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6451. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6452. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6453. + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
  6454. +
  6455. + EMPTY, EMPTY, EMPTY, EMPTY,
  6456. + /* 48 */
  6457. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6458. + EMPTY, EMPTY, EMPTY,
  6459. +
  6460. + C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
  6461. +
  6462. + EMPTY, EMPTY, EMPTY,
  6463. + /* 64: csrfcz */
  6464. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6465. + E(0, 65535, 0), E(0, 65535, 0),
  6466. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6467. + E(-32768, 32767, 0),
  6468. + /* 80: LD_SB2 */
  6469. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6470. +
  6471. + C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
  6472. +
  6473. + EMPTY,
  6474. + EMPTY, EMPTY,
  6475. +
  6476. + C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
  6477. +
  6478. + EMPTY, EMPTY, EMPTY,
  6479. +
  6480. + C(0, 14, 1, LD_UH4),
  6481. +
  6482. + /* 96: LD_UH4 */
  6483. + E(-32768, 32767, 0),
  6484. +
  6485. + EMPTY, EMPTY, EMPTY, EMPTY,
  6486. +
  6487. + C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
  6488. +
  6489. + E(0, 1020, 2), /* LDC_D1 */
  6490. + EMPTY, EMPTY,
  6491. + E(0, 1020, 2), /* LDC_W1 */
  6492. + EMPTY, EMPTY,
  6493. + E(0, 16380, 2), /* LDC0_D */
  6494. + E(0, 16380, 2), /* LDC0_W */
  6495. + EMPTY,
  6496. +
  6497. + /* 112: LDCM_D_PU */
  6498. + EMPTY, EMPTY, EMPTY,
  6499. +
  6500. + C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
  6501. +
  6502. + EMPTY,EMPTY, EMPTY,
  6503. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6504. +
  6505. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6506. + /* 134: MACHH_W */
  6507. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6508. + E(-131072, 131068, 2), /* MCALL */
  6509. + E(0, 1020, 2), /* MFDR */
  6510. + E(0, 1020, 2), /* MFSR */
  6511. + EMPTY, EMPTY,
  6512. +
  6513. + C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
  6514. +
  6515. + EMPTY, EMPTY, EMPTY,
  6516. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6517. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6518. +
  6519. + E(-128, 127, 0), /* MOVEQ2 */
  6520. + E(-128, 127, 0), /* MOVNE2 */
  6521. + E(-128, 127, 0), /* MOVCC2 */
  6522. + E(-128, 127, 0), /* 166: MOVCS2 */
  6523. + E(-128, 127, 0), /* MOVGE2 */
  6524. + E(-128, 127, 0), /* MOVLT2 */
  6525. + E(-128, 127, 0), /* MOVMI2 */
  6526. + E(-128, 127, 0), /* MOVPL2 */
  6527. + E(-128, 127, 0), /* MOVLS2 */
  6528. + E(-128, 127, 0), /* MOVGT2 */
  6529. + E(-128, 127, 0), /* MOVLE2 */
  6530. + E(-128, 127, 0), /* MOVHI2 */
  6531. + E(-128, 127, 0), /* MOVVS2 */
  6532. + E(-128, 127, 0), /* MOVVC2 */
  6533. + E(-128, 127, 0), /* MOVQS2 */
  6534. + E(-128, 127, 0), /* MOVAL2 */
  6535. +
  6536. + E(0, 1020, 2), /* MTDR */
  6537. + E(0, 1020, 2), /* MTSR */
  6538. + EMPTY,
  6539. + EMPTY,
  6540. + E(-128, 127, 0), /* MUL3 */
  6541. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6542. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6543. + /* 198: MVCR_W */
  6544. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6545. + E(0, 65535, 0), E(0, 65535, 0),
  6546. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6547. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6548. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6549. + /* 230: PASR_H */
  6550. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6551. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6552. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6553. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6554. + /* 262: PUNPCKSB_H */
  6555. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6556. +
  6557. + C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
  6558. +
  6559. + EMPTY,
  6560. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6561. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6562. + EMPTY, EMPTY, EMPTY,
  6563. +
  6564. + C(-1024, 1022, 1, BRAL),
  6565. +
  6566. + EMPTY, EMPTY, EMPTY,
  6567. + E(-128, 127, 0), /* RSUB2 */
  6568. + /* 294: SATADD_H */
  6569. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6570. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6571. + E(0, 255, 0), /* SLEEP */
  6572. + EMPTY, EMPTY,
  6573. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6574. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6575. + /* 326: ST_B2 */
  6576. + EMPTY, EMPTY,
  6577. + C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
  6578. + EMPTY, EMPTY, EMPTY, EMPTY,
  6579. + E(-32768, 32767, 0),
  6580. + EMPTY, EMPTY, EMPTY,
  6581. + C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
  6582. + EMPTY, EMPTY,
  6583. + EMPTY,
  6584. + C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
  6585. + E(0, 1020, 2), /* STC_D1 */
  6586. + EMPTY, EMPTY,
  6587. + E(0, 1020, 2), /* STC_W1 */
  6588. + EMPTY, EMPTY,
  6589. + E(0, 16380, 2), /* STC0_D */
  6590. + E(0, 16380, 2), /* STC0_W */
  6591. +
  6592. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6593. + /* 358: STDSP */
  6594. + EMPTY, EMPTY,
  6595. + E(0, 1020, 2), /* STHH_W1 */
  6596. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6597. + EMPTY, EMPTY, EMPTY,
  6598. + E(-32768, 32767, 0),
  6599. + C(-512, 508, 2, SUB4),
  6600. + C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
  6601. + /* SUB{cond} */
  6602. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6603. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6604. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6605. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6606. + /* SUBF{cond} */
  6607. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6608. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6609. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6610. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6611. + EMPTY,
  6612. +
  6613. + /* 406: SWAP_B */
  6614. + EMPTY, EMPTY, EMPTY,
  6615. + E(0, 255, 0), /* SYNC */
  6616. + EMPTY, EMPTY, EMPTY, EMPTY,
  6617. + /* 414: TST */
  6618. + EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
  6619. + /* 422: RSUB{cond} */
  6620. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6621. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6622. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6623. + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
  6624. + /* 436: ADD{cond} */
  6625. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6626. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6627. + /* 454: SUB{cond} */
  6628. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6629. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6630. + /* 472: AND{cond} */
  6631. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6632. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6633. + /* 486: OR{cond} */
  6634. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6635. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6636. + /* 502: EOR{cond} */
  6637. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6638. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6639. + /* 518: LD.w{cond} */
  6640. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6641. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6642. + /* 534: LD.sh{cond} */
  6643. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6644. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6645. + /* 550: LD.uh{cond} */
  6646. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6647. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6648. + /* 566: LD.sb{cond} */
  6649. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6650. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6651. + /* 582: LD.ub{cond} */
  6652. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6653. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6654. + /* 596: ST.w{cond} */
  6655. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6656. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6657. + /* 614: ST.h{cond} */
  6658. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6659. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6660. + /* 630: ST.b{cond} */
  6661. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6662. + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
  6663. + /* 646: movh */
  6664. + E(0, 65535, 0)
  6665. + };
  6666. +
  6667. +#undef E
  6668. +#undef C
  6669. +#undef EMPTY
  6670. +
  6671. +#define AVR32_RS_NONE (-1)
  6672. +
  6673. +#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
  6674. +#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
  6675. +#define relax_more(state) (avr32_relax_table[(state)].next)
  6676. +
  6677. +#define opc_initial_substate(opc) ((opc)->id)
  6678. +
  6679. +static int need_relax(int subtype, offsetT distance)
  6680. +{
  6681. + offsetT upper_bound, lower_bound;
  6682. +
  6683. + upper_bound = avr32_relax_table[subtype].upper_bound;
  6684. + lower_bound = avr32_relax_table[subtype].lower_bound;
  6685. +
  6686. + if (distance & ((1 << avr32_rs_align(subtype)) - 1))
  6687. + return 1;
  6688. + if ((distance > upper_bound) || (distance < lower_bound))
  6689. + return 1;
  6690. +
  6691. + return 0;
  6692. +}
  6693. +
  6694. +enum {
  6695. + LDA_SUBTYPE_MOV1,
  6696. + LDA_SUBTYPE_MOV2,
  6697. + LDA_SUBTYPE_SUB,
  6698. + LDA_SUBTYPE_LDDPC,
  6699. + LDA_SUBTYPE_LDW,
  6700. + LDA_SUBTYPE_GOTLOAD,
  6701. + LDA_SUBTYPE_GOTLOAD_LARGE,
  6702. +};
  6703. +
  6704. +enum {
  6705. + CALL_SUBTYPE_RCALL1,
  6706. + CALL_SUBTYPE_RCALL2,
  6707. + CALL_SUBTYPE_MCALL_CP,
  6708. + CALL_SUBTYPE_MCALL_GOT,
  6709. + CALL_SUBTYPE_MCALL_LARGE,
  6710. +};
  6711. +
  6712. +#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
  6713. +#define CALL_INITIAL_SIZE 2
  6714. +
  6715. +#define need_reloc(sym, seg, pcrel) \
  6716. + (!(S_IS_DEFINED(sym) \
  6717. + && ((pcrel && S_GET_SEGMENT(sym) == seg) \
  6718. + || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
  6719. + || S_FORCE_RELOC(sym, 1))
  6720. +
  6721. +/* Return an initial guess of the length by which a fragment must grow to
  6722. + hold a branch to reach its destination.
  6723. + Also updates fr_type/fr_subtype as necessary.
  6724. +
  6725. + Called just before doing relaxation.
  6726. + Any symbol that is now undefined will not become defined.
  6727. + The guess for fr_var is ACTUALLY the growth beyond fr_fix.
  6728. + Whatever we do to grow fr_fix or fr_var contributes to our returned value.
  6729. + Although it may not be explicit in the frag, pretend fr_var starts with a
  6730. + 0 value. */
  6731. +
  6732. +static int
  6733. +avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
  6734. +{
  6735. + int growth = 0;
  6736. +
  6737. + assert(fragP);
  6738. + assert(fragP->fr_symbol);
  6739. +
  6740. + if (fragP->tc_frag_data.force_extended
  6741. + || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
  6742. + {
  6743. + int largest_state = fragP->fr_subtype;
  6744. + while (relax_more(largest_state) != AVR32_RS_NONE)
  6745. + largest_state = relax_more(largest_state);
  6746. + growth = avr32_rs_size(largest_state) - fragP->fr_var;
  6747. + }
  6748. + else
  6749. + {
  6750. + growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
  6751. + }
  6752. +
  6753. + pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
  6754. + fragP->fr_file, fragP->fr_line, growth);
  6755. +
  6756. + return growth;
  6757. +}
  6758. +
  6759. +static int
  6760. +avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
  6761. +{
  6762. + return fragP->fr_var - LDA_INITIAL_SIZE;
  6763. +}
  6764. +
  6765. +static int
  6766. +avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
  6767. +{
  6768. + return fragP->fr_var - CALL_INITIAL_SIZE;
  6769. +}
  6770. +
  6771. +static int
  6772. +avr32_cpool_estimate_size_before_relax(fragS *fragP,
  6773. + segT segment ATTRIBUTE_UNUSED)
  6774. +{
  6775. + return fragP->fr_var;
  6776. +}
  6777. +
  6778. +/* This macro may be defined to relax a frag. GAS will call this with the
  6779. + * segment, the frag, and the change in size of all previous frags;
  6780. + * md_relax_frag should return the change in size of the frag. */
  6781. +static long
  6782. +avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
  6783. +{
  6784. + int state, next_state;
  6785. + symbolS *symbolP; /* The target symbol */
  6786. + long growth = 0;
  6787. +
  6788. + state = next_state = fragP->fr_subtype;
  6789. +
  6790. + symbolP = fragP->fr_symbol;
  6791. +
  6792. + if (fragP->tc_frag_data.force_extended
  6793. + || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
  6794. + {
  6795. + /* Symbol must be resolved by the linker. Emit the largest
  6796. + possible opcode. */
  6797. + while (relax_more(next_state) != AVR32_RS_NONE)
  6798. + next_state = relax_more(next_state);
  6799. + }
  6800. + else
  6801. + {
  6802. + addressT address; /* The address of fragP */
  6803. + addressT target; /* The address of the target symbol */
  6804. + offsetT distance; /* The distance between the insn and the symbol */
  6805. + fragS *sym_frag;
  6806. +
  6807. + address = fragP->fr_address;
  6808. + target = fragP->fr_offset;
  6809. + symbolP = fragP->fr_symbol;
  6810. + sym_frag = symbol_get_frag(symbolP);
  6811. +
  6812. + address += fragP->fr_fix - fragP->fr_var;
  6813. + target += S_GET_VALUE(symbolP);
  6814. +
  6815. + if (stretch != 0
  6816. + && sym_frag->relax_marker != fragP->relax_marker
  6817. + && S_GET_SEGMENT(symbolP) == segment)
  6818. + /* if it was correctly aligned before, make sure it stays aligned */
  6819. + target += stretch & (~0UL << avr32_rs_align(state));
  6820. +
  6821. + if (fragP->tc_frag_data.pcrel)
  6822. + distance = target - (address & (~0UL << avr32_rs_align(state)));
  6823. + else
  6824. + distance = target;
  6825. +
  6826. + pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
  6827. + fragP->fr_file, fragP->fr_line, target, address,
  6828. + distance, distance, avr32_rs_align(state));
  6829. +
  6830. + if (need_relax(state, distance))
  6831. + {
  6832. + if (relax_more(state) != AVR32_RS_NONE)
  6833. + next_state = relax_more(state);
  6834. + pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
  6835. + fragP->fr_file, fragP->fr_line, state, next_state,
  6836. + target, address, avr32_rs_align(state));
  6837. + }
  6838. + }
  6839. +
  6840. + growth = avr32_rs_size(next_state) - avr32_rs_size(state);
  6841. + fragP->fr_subtype = next_state;
  6842. +
  6843. + pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
  6844. + fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
  6845. + avr32_opc_table[next_state].value);
  6846. +
  6847. + return growth;
  6848. +}
  6849. +
  6850. +static long
  6851. +avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
  6852. +{
  6853. + struct cpool *pool= NULL;
  6854. + unsigned int entry = 0;
  6855. + addressT address, target;
  6856. + offsetT distance;
  6857. + symbolS *symbolP;
  6858. + fragS *sym_frag;
  6859. + long old_size, new_size;
  6860. +
  6861. + symbolP = fragP->fr_symbol;
  6862. + old_size = fragP->fr_var;
  6863. + if (!avr32_pic)
  6864. + {
  6865. + pool = fragP->tc_frag_data.pool;
  6866. + entry = fragP->tc_frag_data.pool_entry;
  6867. + }
  6868. +
  6869. + address = fragP->fr_address;
  6870. + address += fragP->fr_fix - LDA_INITIAL_SIZE;
  6871. +
  6872. + if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
  6873. + goto relax_max;
  6874. +
  6875. + target = fragP->fr_offset;
  6876. + sym_frag = symbol_get_frag(symbolP);
  6877. + target += S_GET_VALUE(symbolP);
  6878. +
  6879. + if (sym_frag->relax_marker != fragP->relax_marker
  6880. + && S_GET_SEGMENT(symbolP) == segment)
  6881. + target += stretch;
  6882. +
  6883. + distance = target - address;
  6884. +
  6885. + pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
  6886. + target, address, fragP->fr_var);
  6887. +
  6888. + if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
  6889. + && target <= 127 && (offsetT)target >= -128)
  6890. + {
  6891. + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
  6892. + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
  6893. + pool->literals[entry].refcount--;
  6894. + new_size = 2;
  6895. + fragP->fr_subtype = LDA_SUBTYPE_MOV1;
  6896. + }
  6897. + else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
  6898. + && target <= 1048575 && (offsetT)target >= -1048576)
  6899. + {
  6900. + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
  6901. + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
  6902. + pool->literals[entry].refcount--;
  6903. + new_size = 4;
  6904. + fragP->fr_subtype = LDA_SUBTYPE_MOV2;
  6905. + }
  6906. + else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
  6907. + /* the field will be negated, so this is really -(-32768)
  6908. + and -(32767) */
  6909. + && distance <= 32768 && distance >= -32767)
  6910. + {
  6911. + if (!avr32_pic
  6912. + && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
  6913. + || fragP->fr_subtype == LDA_SUBTYPE_LDW))
  6914. + pool->literals[entry].refcount--;
  6915. + new_size = 4;
  6916. + fragP->fr_subtype = LDA_SUBTYPE_SUB;
  6917. + }
  6918. + else
  6919. + {
  6920. + relax_max:
  6921. + if (avr32_pic)
  6922. + {
  6923. + if (linkrelax)
  6924. + {
  6925. + new_size = 8;
  6926. + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
  6927. + }
  6928. + else
  6929. + {
  6930. + new_size = 4;
  6931. + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
  6932. + }
  6933. + }
  6934. + else
  6935. + {
  6936. + if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
  6937. + && fragP->fr_subtype != LDA_SUBTYPE_LDW)
  6938. + pool->literals[entry].refcount++;
  6939. +
  6940. + sym_frag = symbol_get_frag(pool->symbol);
  6941. + target = (sym_frag->fr_address + sym_frag->fr_fix
  6942. + + pool->padding + pool->literals[entry].offset);
  6943. +
  6944. + pr_debug("cpool sym address: 0x%lx\n",
  6945. + sym_frag->fr_address + sym_frag->fr_fix);
  6946. +
  6947. + know(pool->section == segment);
  6948. +
  6949. + if (sym_frag->relax_marker != fragP->relax_marker)
  6950. + target += stretch;
  6951. +
  6952. + distance = target - address;
  6953. + if (distance <= 508 && distance >= 0)
  6954. + {
  6955. + new_size = 2;
  6956. + fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
  6957. + }
  6958. + else
  6959. + {
  6960. + new_size = 4;
  6961. + fragP->fr_subtype = LDA_SUBTYPE_LDW;
  6962. + }
  6963. +
  6964. + pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
  6965. + target, address, pool->literals[entry].refcount);
  6966. + }
  6967. + }
  6968. +
  6969. + fragP->fr_var = new_size;
  6970. +
  6971. + pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
  6972. + fragP->fr_file, fragP->fr_line,
  6973. + fragP->fr_subtype, new_size - old_size);
  6974. +
  6975. + return new_size - old_size;
  6976. +}
  6977. +
  6978. +static long
  6979. +avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
  6980. +{
  6981. + struct cpool *pool = NULL;
  6982. + unsigned int entry = 0;
  6983. + addressT address, target;
  6984. + offsetT distance;
  6985. + symbolS *symbolP;
  6986. + fragS *sym_frag;
  6987. + long old_size, new_size;
  6988. +
  6989. + symbolP = fragP->fr_symbol;
  6990. + old_size = fragP->fr_var;
  6991. + if (!avr32_pic)
  6992. + {
  6993. + pool = fragP->tc_frag_data.pool;
  6994. + entry = fragP->tc_frag_data.pool_entry;
  6995. + }
  6996. +
  6997. + address = fragP->fr_address;
  6998. + address += fragP->fr_fix - CALL_INITIAL_SIZE;
  6999. +
  7000. + if (need_reloc(symbolP, segment, 1))
  7001. + {
  7002. + pr_debug("call: must emit reloc\n");
  7003. + goto relax_max;
  7004. + }
  7005. +
  7006. + target = fragP->fr_offset;
  7007. + sym_frag = symbol_get_frag(symbolP);
  7008. + target += S_GET_VALUE(symbolP);
  7009. +
  7010. + if (sym_frag->relax_marker != fragP->relax_marker
  7011. + && S_GET_SEGMENT(symbolP) == segment)
  7012. + target += stretch;
  7013. +
  7014. + distance = target - address;
  7015. +
  7016. + if (distance <= 1022 && distance >= -1024)
  7017. + {
  7018. + pr_debug("call: distance is %d, emitting short rcall\n", distance);
  7019. + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
  7020. + pool->literals[entry].refcount--;
  7021. + new_size = 2;
  7022. + fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
  7023. + }
  7024. + else if (distance <= 2097150 && distance >= -2097152)
  7025. + {
  7026. + pr_debug("call: distance is %d, emitting long rcall\n", distance);
  7027. + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
  7028. + pool->literals[entry].refcount--;
  7029. + new_size = 4;
  7030. + fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
  7031. + }
  7032. + else
  7033. + {
  7034. + pr_debug("call: distance %d too far, emitting something big\n", distance);
  7035. +
  7036. + relax_max:
  7037. + if (avr32_pic)
  7038. + {
  7039. + if (linkrelax)
  7040. + {
  7041. + new_size = 10;
  7042. + fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
  7043. + }
  7044. + else
  7045. + {
  7046. + new_size = 4;
  7047. + fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
  7048. + }
  7049. + }
  7050. + else
  7051. + {
  7052. + if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
  7053. + pool->literals[entry].refcount++;
  7054. +
  7055. + new_size = 4;
  7056. + fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
  7057. + }
  7058. + }
  7059. +
  7060. + fragP->fr_var = new_size;
  7061. +
  7062. + pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
  7063. + fragP->fr_file, fragP->fr_line,
  7064. + new_size - old_size, fragP->fr_var);
  7065. +
  7066. + return new_size - old_size;
  7067. +}
  7068. +
  7069. +static long
  7070. +avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
  7071. + fragS *fragP,
  7072. + long stretch ATTRIBUTE_UNUSED)
  7073. +{
  7074. + struct cpool *pool;
  7075. + addressT address;
  7076. + long old_size, new_size;
  7077. + unsigned int entry;
  7078. +
  7079. + pool = fragP->tc_frag_data.pool;
  7080. + address = fragP->fr_address + fragP->fr_fix;
  7081. + old_size = fragP->fr_var;
  7082. + new_size = 0;
  7083. +
  7084. + for (entry = 0; entry < pool->next_free_entry; entry++)
  7085. + {
  7086. + if (pool->literals[entry].refcount > 0)
  7087. + {
  7088. + pool->literals[entry].offset = new_size;
  7089. + new_size += 4;
  7090. + }
  7091. + }
  7092. +
  7093. + fragP->fr_var = new_size;
  7094. +
  7095. + return new_size - old_size;
  7096. +}
  7097. +
  7098. +/* *fragP has been relaxed to its final size, and now needs to have
  7099. + the bytes inside it modified to conform to the new size.
  7100. +
  7101. + Called after relaxation is finished.
  7102. + fragP->fr_type == rs_machine_dependent.
  7103. + fragP->fr_subtype is the subtype of what the address relaxed to. */
  7104. +
  7105. +static void
  7106. +avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
  7107. + segT segment ATTRIBUTE_UNUSED,
  7108. + fragS *fragP)
  7109. +{
  7110. + const struct avr32_opcode *opc;
  7111. + const struct avr32_ifield *ifield;
  7112. + bfd_reloc_code_real_type r_type;
  7113. + symbolS *symbolP;
  7114. + fixS *fixP;
  7115. + bfd_vma value;
  7116. + int subtype;
  7117. +
  7118. + opc = &avr32_opc_table[fragP->fr_subtype];
  7119. + ifield = opc->fields[opc->var_field];
  7120. + symbolP = fragP->fr_symbol;
  7121. + subtype = fragP->fr_subtype;
  7122. + r_type = opc->reloc_type;
  7123. +
  7124. + /* Clear the opcode bits and the bits belonging to the relaxed
  7125. + field. We assume all other fields stay the same. */
  7126. + value = bfd_getb32(fragP->fr_opcode);
  7127. + value &= ~(opc->mask | ifield->mask);
  7128. +
  7129. + /* Insert the new opcode */
  7130. + value |= opc->value;
  7131. + bfd_putb32(value, fragP->fr_opcode);
  7132. +
  7133. + fragP->fr_fix += opc->size - fragP->fr_var;
  7134. +
  7135. + if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
  7136. + {
  7137. + switch (fragP->tc_frag_data.reloc_info)
  7138. + {
  7139. + case AVR32_OPINFO_HI:
  7140. + r_type = BFD_RELOC_HI16;
  7141. + break;
  7142. + case AVR32_OPINFO_LO:
  7143. + r_type = BFD_RELOC_LO16;
  7144. + break;
  7145. + case AVR32_OPINFO_GOT:
  7146. + switch (r_type)
  7147. + {
  7148. + case BFD_RELOC_AVR32_18W_PCREL:
  7149. + r_type = BFD_RELOC_AVR32_GOT18SW;
  7150. + break;
  7151. + case BFD_RELOC_AVR32_16S:
  7152. + r_type = BFD_RELOC_AVR32_GOT16S;
  7153. + break;
  7154. + default:
  7155. + BAD_CASE(r_type);
  7156. + break;
  7157. + }
  7158. + break;
  7159. + default:
  7160. + BAD_CASE(fragP->tc_frag_data.reloc_info);
  7161. + break;
  7162. + }
  7163. + }
  7164. +
  7165. + pr_debug("%s:%d: convert_frag: new %s fixup\n",
  7166. + fragP->fr_file, fragP->fr_line,
  7167. + bfd_get_reloc_code_name(r_type));
  7168. +
  7169. +#if 1
  7170. + fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
  7171. + &fragP->tc_frag_data.exp,
  7172. + fragP->tc_frag_data.pcrel, r_type);
  7173. +#else
  7174. + fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
  7175. + fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
  7176. +#endif
  7177. +
  7178. + /* Revert fix_new brain damage. "dot_value" is the value of PC at
  7179. + the point of the fixup, relative to the frag address. fix_new()
  7180. + and friends think they are only being called during the assembly
  7181. + pass, not during relaxation or similar, so fx_dot_value, fx_file
  7182. + and fx_line are all initialized to the wrong value. But we don't
  7183. + know the size of the fixup until now, so we really can't live up
  7184. + to the assumptions these functions make about the target. What
  7185. + do these functions think the "where" and "frag" argument mean
  7186. + anyway? */
  7187. + fixP->fx_dot_value = fragP->fr_fix - opc->size;
  7188. + fixP->fx_file = fragP->fr_file;
  7189. + fixP->fx_line = fragP->fr_line;
  7190. +
  7191. + fixP->tc_fix_data.ifield = ifield;
  7192. + fixP->tc_fix_data.align = avr32_rs_align(subtype);
  7193. + fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
  7194. + fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
  7195. +}
  7196. +
  7197. +static void
  7198. +avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
  7199. + segT segment ATTRIBUTE_UNUSED,
  7200. + fragS *fragP)
  7201. +{
  7202. + const struct avr32_opcode *opc;
  7203. + const struct avr32_ifield *ifield;
  7204. + bfd_reloc_code_real_type r_type;
  7205. + expressionS exp;
  7206. + struct cpool *pool;
  7207. + fixS *fixP;
  7208. + bfd_vma value;
  7209. + int regid, pcrel = 0, align = 0;
  7210. + char *p;
  7211. +
  7212. + r_type = BFD_RELOC_NONE;
  7213. + regid = fragP->tc_frag_data.reloc_info;
  7214. + p = fragP->fr_opcode;
  7215. + exp.X_add_symbol = fragP->fr_symbol;
  7216. + exp.X_add_number = fragP->fr_offset;
  7217. + exp.X_op = O_symbol;
  7218. +
  7219. + pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
  7220. + fragP->fr_file, fragP->fr_line,
  7221. + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
  7222. +
  7223. + switch (fragP->fr_subtype)
  7224. + {
  7225. + case LDA_SUBTYPE_MOV1:
  7226. + opc = &avr32_opc_table[AVR32_OPC_MOV1];
  7227. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7228. + ifield = opc->fields[1];
  7229. + r_type = opc->reloc_type;
  7230. + break;
  7231. + case LDA_SUBTYPE_MOV2:
  7232. + opc = &avr32_opc_table[AVR32_OPC_MOV2];
  7233. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7234. + ifield = opc->fields[1];
  7235. + r_type = opc->reloc_type;
  7236. + break;
  7237. + case LDA_SUBTYPE_SUB:
  7238. + opc = &avr32_opc_table[AVR32_OPC_SUB5];
  7239. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7240. + opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
  7241. + ifield = opc->fields[2];
  7242. + r_type = BFD_RELOC_AVR32_16N_PCREL;
  7243. +
  7244. + /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
  7245. + We'll have to fix it up later when we know whether to
  7246. + generate a reloc for it (in which case the linker will negate
  7247. + it, so we shouldn't). */
  7248. + pcrel = 1;
  7249. + break;
  7250. + case LDA_SUBTYPE_LDDPC:
  7251. + opc = &avr32_opc_table[AVR32_OPC_LDDPC];
  7252. + align = 2;
  7253. + r_type = BFD_RELOC_AVR32_9W_CP;
  7254. + goto cpool_common;
  7255. + case LDA_SUBTYPE_LDW:
  7256. + opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
  7257. + r_type = BFD_RELOC_AVR32_16_CP;
  7258. + cpool_common:
  7259. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7260. + ifield = opc->fields[1];
  7261. + pool = fragP->tc_frag_data.pool;
  7262. + exp.X_add_symbol = pool->symbol;
  7263. + exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
  7264. + pcrel = 1;
  7265. + break;
  7266. + case LDA_SUBTYPE_GOTLOAD_LARGE:
  7267. + /* ld.w Rd, r6[Rd << 2] (last) */
  7268. + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
  7269. + bfd_putb32(opc->value, p + 4);
  7270. + opc->fields[0]->insert(opc->fields[0], p + 4, regid);
  7271. + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
  7272. + opc->fields[2]->insert(opc->fields[2], p + 4, regid);
  7273. + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
  7274. +
  7275. + /* mov Rd, (got_offset / 4) */
  7276. + opc = &avr32_opc_table[AVR32_OPC_MOV2];
  7277. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7278. + ifield = opc->fields[1];
  7279. + r_type = BFD_RELOC_AVR32_LDA_GOT;
  7280. + break;
  7281. + case LDA_SUBTYPE_GOTLOAD:
  7282. + opc = &avr32_opc_table[AVR32_OPC_LD_W4];
  7283. + opc->fields[0]->insert(opc->fields[0], p, regid);
  7284. + opc->fields[1]->insert(opc->fields[1], p, 6);
  7285. + ifield = opc->fields[2];
  7286. + if (r_type == BFD_RELOC_NONE)
  7287. + r_type = BFD_RELOC_AVR32_GOT16S;
  7288. + break;
  7289. + default:
  7290. + BAD_CASE(fragP->fr_subtype);
  7291. + }
  7292. +
  7293. + value = bfd_getb32(p);
  7294. + value &= ~(opc->mask | ifield->mask);
  7295. + value |= opc->value;
  7296. + bfd_putb32(value, p);
  7297. +
  7298. + fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
  7299. +
  7300. + if (fragP->fr_next
  7301. + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
  7302. + != fragP->fr_fix))
  7303. + {
  7304. + fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
  7305. + fragP->fr_var, bfd_get_reloc_code_name(r_type));
  7306. + abort();
  7307. + }
  7308. +
  7309. + fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
  7310. + &exp, pcrel, r_type);
  7311. +
  7312. + /* Revert fix_new brain damage. "dot_value" is the value of PC at
  7313. + the point of the fixup, relative to the frag address. fix_new()
  7314. + and friends think they are only being called during the assembly
  7315. + pass, not during relaxation or similar, so fx_dot_value, fx_file
  7316. + and fx_line are all initialized to the wrong value. But we don't
  7317. + know the size of the fixup until now, so we really can't live up
  7318. + to the assumptions these functions make about the target. What
  7319. + do these functions think the "where" and "frag" argument mean
  7320. + anyway? */
  7321. + fixP->fx_dot_value = fragP->fr_fix - opc->size;
  7322. + fixP->fx_file = fragP->fr_file;
  7323. + fixP->fx_line = fragP->fr_line;
  7324. +
  7325. + fixP->tc_fix_data.ifield = ifield;
  7326. + fixP->tc_fix_data.align = align;
  7327. + /* these are only used if the fixup can actually be resolved */
  7328. + fixP->tc_fix_data.min = -32768;
  7329. + fixP->tc_fix_data.max = 32767;
  7330. +}
  7331. +
  7332. +static void
  7333. +avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
  7334. + segT segment ATTRIBUTE_UNUSED,
  7335. + fragS *fragP)
  7336. +{
  7337. + const struct avr32_opcode *opc = NULL;
  7338. + const struct avr32_ifield *ifield;
  7339. + bfd_reloc_code_real_type r_type;
  7340. + symbolS *symbol;
  7341. + offsetT offset;
  7342. + fixS *fixP;
  7343. + bfd_vma value;
  7344. + int pcrel = 0, align = 0;
  7345. + char *p;
  7346. +
  7347. + symbol = fragP->fr_symbol;
  7348. + offset = fragP->fr_offset;
  7349. + r_type = BFD_RELOC_NONE;
  7350. + p = fragP->fr_opcode;
  7351. +
  7352. + pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
  7353. + fragP->fr_file, fragP->fr_line,
  7354. + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
  7355. +
  7356. + switch (fragP->fr_subtype)
  7357. + {
  7358. + case CALL_SUBTYPE_RCALL1:
  7359. + opc = &avr32_opc_table[AVR32_OPC_RCALL1];
  7360. + /* fall through */
  7361. + case CALL_SUBTYPE_RCALL2:
  7362. + if (!opc)
  7363. + opc = &avr32_opc_table[AVR32_OPC_RCALL2];
  7364. + ifield = opc->fields[0];
  7365. + r_type = opc->reloc_type;
  7366. + pcrel = 1;
  7367. + align = 1;
  7368. + break;
  7369. + case CALL_SUBTYPE_MCALL_CP:
  7370. + opc = &avr32_opc_table[AVR32_OPC_MCALL];
  7371. + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
  7372. + ifield = opc->fields[1];
  7373. + r_type = BFD_RELOC_AVR32_CPCALL;
  7374. + symbol = fragP->tc_frag_data.pool->symbol;
  7375. + offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
  7376. + assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
  7377. + pcrel = 1;
  7378. + align = 2;
  7379. + break;
  7380. + case CALL_SUBTYPE_MCALL_GOT:
  7381. + opc = &avr32_opc_table[AVR32_OPC_MCALL];
  7382. + opc->fields[0]->insert(opc->fields[0], p, 6);
  7383. + ifield = opc->fields[1];
  7384. + r_type = BFD_RELOC_AVR32_GOT18SW;
  7385. + break;
  7386. + case CALL_SUBTYPE_MCALL_LARGE:
  7387. + assert(fragP->fr_var == 10);
  7388. + /* ld.w lr, r6[lr << 2] */
  7389. + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
  7390. + bfd_putb32(opc->value, p + 4);
  7391. + opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
  7392. + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
  7393. + opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
  7394. + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
  7395. +
  7396. + /* icall lr */
  7397. + opc = &avr32_opc_table[AVR32_OPC_ICALL];
  7398. + bfd_putb16(opc->value >> 16, p + 8);
  7399. + opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
  7400. +
  7401. + /* mov lr, (got_offset / 4) */
  7402. + opc = &avr32_opc_table[AVR32_OPC_MOV2];
  7403. + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
  7404. + ifield = opc->fields[1];
  7405. + r_type = BFD_RELOC_AVR32_GOTCALL;
  7406. + break;
  7407. + default:
  7408. + BAD_CASE(fragP->fr_subtype);
  7409. + }
  7410. +
  7411. + /* Insert the opcode and clear the variable ifield */
  7412. + value = bfd_getb32(p);
  7413. + value &= ~(opc->mask | ifield->mask);
  7414. + value |= opc->value;
  7415. + bfd_putb32(value, p);
  7416. +
  7417. + fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
  7418. +
  7419. + if (fragP->fr_next
  7420. + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
  7421. + != fragP->fr_fix))
  7422. + {
  7423. + fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
  7424. + fragP->fr_file, fragP->fr_line,
  7425. + fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
  7426. + fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
  7427. + (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
  7428. + fragP->fr_next->fr_file, fragP->fr_next->fr_line);
  7429. + }
  7430. +
  7431. + fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
  7432. + symbol, offset, pcrel, r_type);
  7433. +
  7434. + /* Revert fix_new brain damage. "dot_value" is the value of PC at
  7435. + the point of the fixup, relative to the frag address. fix_new()
  7436. + and friends think they are only being called during the assembly
  7437. + pass, not during relaxation or similar, so fx_dot_value, fx_file
  7438. + and fx_line are all initialized to the wrong value. But we don't
  7439. + know the size of the fixup until now, so we really can't live up
  7440. + to the assumptions these functions make about the target. What
  7441. + do these functions think the "where" and "frag" argument mean
  7442. + anyway? */
  7443. + fixP->fx_dot_value = fragP->fr_fix - opc->size;
  7444. + fixP->fx_file = fragP->fr_file;
  7445. + fixP->fx_line = fragP->fr_line;
  7446. +
  7447. + fixP->tc_fix_data.ifield = ifield;
  7448. + fixP->tc_fix_data.align = align;
  7449. + /* these are only used if the fixup can actually be resolved */
  7450. + fixP->tc_fix_data.min = -2097152;
  7451. + fixP->tc_fix_data.max = 2097150;
  7452. +}
  7453. +
  7454. +static void
  7455. +avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
  7456. + segT segment ATTRIBUTE_UNUSED,
  7457. + fragS *fragP)
  7458. +{
  7459. + struct cpool *pool;
  7460. + addressT address;
  7461. + unsigned int entry;
  7462. + char *p;
  7463. + char sym_name[20];
  7464. +
  7465. + /* Did we get rid of the frag altogether? */
  7466. + if (!fragP->fr_var)
  7467. + return;
  7468. +
  7469. + pool = fragP->tc_frag_data.pool;
  7470. + address = fragP->fr_address + fragP->fr_fix;
  7471. + p = fragP->fr_literal + fragP->fr_fix;
  7472. +
  7473. + sprintf(sym_name, "$$cp_\002%x", pool->id);
  7474. + symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
  7475. + symbol_table_insert(pool->symbol);
  7476. +
  7477. + for (entry = 0; entry < pool->next_free_entry; entry++)
  7478. + {
  7479. + if (pool->literals[entry].refcount > 0)
  7480. + {
  7481. + fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
  7482. + FALSE, BFD_RELOC_AVR32_32_CPENT);
  7483. + fragP->fr_fix += 4;
  7484. + }
  7485. + }
  7486. +}
  7487. +
  7488. +static struct avr32_relaxer avr32_default_relaxer = {
  7489. + .estimate_size = avr32_default_estimate_size_before_relax,
  7490. + .relax_frag = avr32_default_relax_frag,
  7491. + .convert_frag = avr32_default_convert_frag,
  7492. +};
  7493. +static struct avr32_relaxer avr32_lda_relaxer = {
  7494. + .estimate_size = avr32_lda_estimate_size_before_relax,
  7495. + .relax_frag = avr32_lda_relax_frag,
  7496. + .convert_frag = avr32_lda_convert_frag,
  7497. +};
  7498. +static struct avr32_relaxer avr32_call_relaxer = {
  7499. + .estimate_size = avr32_call_estimate_size_before_relax,
  7500. + .relax_frag = avr32_call_relax_frag,
  7501. + .convert_frag = avr32_call_convert_frag,
  7502. +};
  7503. +static struct avr32_relaxer avr32_cpool_relaxer = {
  7504. + .estimate_size = avr32_cpool_estimate_size_before_relax,
  7505. + .relax_frag = avr32_cpool_relax_frag,
  7506. + .convert_frag = avr32_cpool_convert_frag,
  7507. +};
  7508. +
  7509. +static void s_cpool(int arg ATTRIBUTE_UNUSED)
  7510. +{
  7511. + struct cpool *pool;
  7512. + unsigned int max_size;
  7513. + char *buf;
  7514. +
  7515. + pool = find_cpool(now_seg, now_subseg);
  7516. + if (!pool || !pool->symbol || pool->next_free_entry == 0)
  7517. + return;
  7518. +
  7519. + /* Make sure the constant pool is properly aligned */
  7520. + frag_align_code(2, 0);
  7521. + if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
  7522. + bfd_set_section_alignment(stdoutput, pool->section, 2);
  7523. +
  7524. + /* Assume none of the entries are discarded, and that we need the
  7525. + maximum amount of alignment. But we're not going to allocate
  7526. + anything up front. */
  7527. + max_size = pool->next_free_entry * 4 + 2;
  7528. + frag_grow(max_size);
  7529. + buf = frag_more(0);
  7530. +
  7531. + frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
  7532. + frag_now->tc_frag_data.pool = pool;
  7533. +
  7534. + symbol_set_frag(pool->symbol, frag_now);
  7535. +
  7536. + /* Assume zero initial size, allowing other relaxers to be
  7537. + optimistic about things. */
  7538. + frag_var(rs_machine_dependent, max_size, 0,
  7539. + 0, pool->symbol, 0, NULL);
  7540. +
  7541. + /* Mark the pool as empty. */
  7542. + pool->used = 1;
  7543. +}
  7544. +
  7545. +/* The location from which a PC relative jump should be calculated,
  7546. + given a PC relative reloc. */
  7547. +
  7548. +long
  7549. +md_pcrel_from_section (fixS *fixP, segT sec)
  7550. +{
  7551. + pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
  7552. +
  7553. + if (fixP->fx_addsy != NULL
  7554. + && (! S_IS_DEFINED (fixP->fx_addsy)
  7555. + || S_GET_SEGMENT (fixP->fx_addsy) != sec
  7556. + || S_FORCE_RELOC(fixP->fx_addsy, 1)))
  7557. + {
  7558. + pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
  7559. +
  7560. + /* The symbol is undefined (or is defined but not in this section).
  7561. + Let the linker figure it out. */
  7562. + return 0;
  7563. + }
  7564. +
  7565. + pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
  7566. + fixP->fx_frag->fr_address, fixP->fx_where,
  7567. + fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
  7568. + fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
  7569. +
  7570. + return ((fixP->fx_frag->fr_address + fixP->fx_where)
  7571. + & (~0UL << fixP->tc_fix_data.align));
  7572. +}
  7573. +
  7574. +valueT
  7575. +md_section_align (segT segment, valueT size)
  7576. +{
  7577. + int align = bfd_get_section_alignment (stdoutput, segment);
  7578. + return ((size + (1 << align) - 1) & (-1 << align));
  7579. +}
  7580. +
  7581. +static int syntax_matches(const struct avr32_syntax *syntax,
  7582. + char *str)
  7583. +{
  7584. + int i;
  7585. +
  7586. + pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
  7587. +
  7588. + if (syntax->nr_operands < 0)
  7589. + {
  7590. + struct avr32_operand *op;
  7591. + int optype;
  7592. +
  7593. + for (i = 0; i < (-syntax->nr_operands - 1); i++)
  7594. + {
  7595. + char *p;
  7596. + char c;
  7597. +
  7598. + optype = syntax->operand[i];
  7599. + assert(optype < AVR32_NR_OPERANDS);
  7600. + op = &avr32_operand_table[optype];
  7601. +
  7602. + for (p = str; *p; p++)
  7603. + if (*p == ',')
  7604. + break;
  7605. +
  7606. + if (p == str)
  7607. + return 0;
  7608. +
  7609. + c = *p;
  7610. + *p = 0;
  7611. +
  7612. + if (!op->match(str))
  7613. + {
  7614. + *p = c;
  7615. + return 0;
  7616. + }
  7617. +
  7618. + str = p;
  7619. + *p = c;
  7620. + if (c)
  7621. + str++;
  7622. + }
  7623. +
  7624. + optype = syntax->operand[i];
  7625. + assert(optype < AVR32_NR_OPERANDS);
  7626. + op = &avr32_operand_table[optype];
  7627. +
  7628. + if (!op->match(str))
  7629. + return 0;
  7630. + return 1;
  7631. + }
  7632. +
  7633. + for (i = 0; i < syntax->nr_operands; i++)
  7634. + {
  7635. + struct avr32_operand *op;
  7636. + int optype = syntax->operand[i];
  7637. + char *p;
  7638. + char c;
  7639. +
  7640. + assert(optype < AVR32_NR_OPERANDS);
  7641. + op = &avr32_operand_table[optype];
  7642. +
  7643. + for (p = str; *p; p++)
  7644. + if (*p == ',')
  7645. + break;
  7646. +
  7647. + if (p == str)
  7648. + return 0;
  7649. +
  7650. + c = *p;
  7651. + *p = 0;
  7652. +
  7653. + if (!op->match(str))
  7654. + {
  7655. + *p = c;
  7656. + return 0;
  7657. + }
  7658. +
  7659. + str = p;
  7660. + *p = c;
  7661. + if (c)
  7662. + str++;
  7663. + }
  7664. +
  7665. + if (*str == '\0')
  7666. + return 1;
  7667. +
  7668. + if ((*str == 'e' || *str == 'E') && !str[1])
  7669. + return 1;
  7670. +
  7671. + return 0;
  7672. +}
  7673. +
  7674. +static int parse_operands(char *str)
  7675. +{
  7676. + int i;
  7677. +
  7678. + if (current_insn.syntax->nr_operands < 0)
  7679. + {
  7680. + int optype;
  7681. + struct avr32_operand *op;
  7682. +
  7683. + for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
  7684. + {
  7685. + char *p;
  7686. + char c;
  7687. +
  7688. + optype = current_insn.syntax->operand[i];
  7689. + op = &avr32_operand_table[optype];
  7690. +
  7691. + for (p = str; *p; p++)
  7692. + if (*p == ',')
  7693. + break;
  7694. +
  7695. + assert(p != str);
  7696. +
  7697. + c = *p, *p = 0;
  7698. + op->parse(op, str, i);
  7699. + *p = c;
  7700. +
  7701. + str = p;
  7702. + if (c) str++;
  7703. + }
  7704. +
  7705. + /* give the rest of the line to the last operand */
  7706. + optype = current_insn.syntax->operand[i];
  7707. + op = &avr32_operand_table[optype];
  7708. + op->parse(op, str, i);
  7709. + }
  7710. + else
  7711. + {
  7712. + for (i = 0; i < current_insn.syntax->nr_operands; i++)
  7713. + {
  7714. + int optype = current_insn.syntax->operand[i];
  7715. + struct avr32_operand *op = &avr32_operand_table[optype];
  7716. + char *p;
  7717. + char c;
  7718. +
  7719. + skip_whitespace(str);
  7720. +
  7721. + for (p = str; *p; p++)
  7722. + if (*p == ',')
  7723. + break;
  7724. +
  7725. + assert(p != str);
  7726. +
  7727. + c = *p, *p = 0;
  7728. + op->parse(op, str, i);
  7729. + *p = c;
  7730. +
  7731. + str = p;
  7732. + if (c) str++;
  7733. + }
  7734. +
  7735. + if (*str == 'E' || *str == 'e')
  7736. + current_insn.force_extended = 1;
  7737. + }
  7738. +
  7739. + return 0;
  7740. +}
  7741. +
  7742. +static const char *
  7743. +finish_insn(const struct avr32_opcode *opc)
  7744. +{
  7745. + expressionS *exp = &current_insn.immediate;
  7746. + unsigned int i;
  7747. + int will_relax = 0;
  7748. + char *buf;
  7749. +
  7750. + assert(current_insn.next_slot == opc->nr_fields);
  7751. +
  7752. + pr_debug("%s:%d: finish_insn: trying opcode %d\n",
  7753. + frag_now->fr_file, frag_now->fr_line, opc->id);
  7754. +
  7755. + /* Go through the relaxation stage for all instructions that can
  7756. + possibly take a symbolic immediate. The relax code will take
  7757. + care of range checking and alignment. */
  7758. + if (opc->var_field != -1)
  7759. + {
  7760. + int substate, largest_substate;
  7761. + symbolS *sym;
  7762. + offsetT off;
  7763. +
  7764. + will_relax = 1;
  7765. + substate = largest_substate = opc_initial_substate(opc);
  7766. +
  7767. + while (relax_more(largest_substate) != AVR32_RS_NONE)
  7768. + largest_substate = relax_more(largest_substate);
  7769. +
  7770. + pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
  7771. + substate, avr32_rs_size(substate),
  7772. + largest_substate, avr32_rs_size(largest_substate));
  7773. +
  7774. + /* make sure we have enough room for the largest possible opcode */
  7775. + frag_grow(avr32_rs_size(largest_substate));
  7776. + buf = frag_more(opc->size);
  7777. +
  7778. + dwarf2_emit_insn(opc->size);
  7779. +
  7780. + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
  7781. + frag_now->tc_frag_data.pcrel = current_insn.pcrel;
  7782. + frag_now->tc_frag_data.force_extended = current_insn.force_extended;
  7783. + frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
  7784. +
  7785. + if (exp->X_op == O_hi)
  7786. + {
  7787. + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
  7788. + exp->X_op = exp->X_md;
  7789. + }
  7790. + else if (exp->X_op == O_lo)
  7791. + {
  7792. + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
  7793. + exp->X_op = exp->X_md;
  7794. + }
  7795. + else if (exp->X_op == O_got)
  7796. + {
  7797. + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
  7798. + exp->X_op = O_symbol;
  7799. + }
  7800. +
  7801. +#if 0
  7802. + if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
  7803. + && exp->X_op == O_subtract)
  7804. + {
  7805. + symbolS *tmp;
  7806. + tmp = exp->X_add_symbol;
  7807. + exp->X_add_symbol = exp->X_op_symbol;
  7808. + exp->X_op_symbol = tmp;
  7809. + }
  7810. +#endif
  7811. +
  7812. + frag_now->tc_frag_data.exp = current_insn.immediate;
  7813. +
  7814. + sym = exp->X_add_symbol;
  7815. + off = exp->X_add_number;
  7816. + if (exp->X_op != O_symbol)
  7817. + {
  7818. + sym = make_expr_symbol(exp);
  7819. + off = 0;
  7820. + }
  7821. +
  7822. + frag_var(rs_machine_dependent,
  7823. + avr32_rs_size(largest_substate) - opc->size,
  7824. + opc->size,
  7825. + substate, sym, off, buf);
  7826. + }
  7827. + else
  7828. + {
  7829. + assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
  7830. +
  7831. + /* Make sure we always have room for another whole word, as the ifield
  7832. + inserters can only write words. */
  7833. + frag_grow(4);
  7834. + buf = frag_more(opc->size);
  7835. + dwarf2_emit_insn(opc->size);
  7836. + }
  7837. +
  7838. + assert(!(opc->value & ~opc->mask));
  7839. +
  7840. + pr_debug("inserting opcode: 0x%lx\n", opc->value);
  7841. + bfd_putb32(opc->value, buf);
  7842. +
  7843. + for (i = 0; i < opc->nr_fields; i++)
  7844. + {
  7845. + const struct avr32_ifield *f = opc->fields[i];
  7846. + const struct avr32_ifield_data *fd = &current_insn.field_value[i];
  7847. +
  7848. + pr_debug("inserting field: 0x%lx & 0x%lx\n",
  7849. + fd->value >> fd->align_order, f->mask);
  7850. +
  7851. + f->insert(f, buf, fd->value >> fd->align_order);
  7852. + }
  7853. +
  7854. + assert(will_relax || !current_insn.immediate.X_add_symbol);
  7855. + return NULL;
  7856. +}
  7857. +
  7858. +static const char *
  7859. +finish_alias(const struct avr32_alias *alias)
  7860. +{
  7861. + const struct avr32_opcode *opc;
  7862. + struct {
  7863. + unsigned long value;
  7864. + unsigned long align;
  7865. + } mapped_operand[AVR32_MAX_OPERANDS];
  7866. + unsigned int i;
  7867. +
  7868. + opc = alias->opc;
  7869. +
  7870. + /* Remap the operands from the alias to the real opcode */
  7871. + for (i = 0; i < opc->nr_fields; i++)
  7872. + {
  7873. + if (alias->operand_map[i].is_opindex)
  7874. + {
  7875. + struct avr32_ifield_data *fd;
  7876. + fd = &current_insn.field_value[alias->operand_map[i].value];
  7877. + mapped_operand[i].value = fd->value;
  7878. + mapped_operand[i].align = fd->align_order;
  7879. + }
  7880. + else
  7881. + {
  7882. + mapped_operand[i].value = alias->operand_map[i].value;
  7883. + mapped_operand[i].align = 0;
  7884. + }
  7885. + }
  7886. +
  7887. + for (i = 0; i < opc->nr_fields; i++)
  7888. + {
  7889. + current_insn.field_value[i].value = mapped_operand[i].value;
  7890. + if (opc->id == AVR32_OPC_COP)
  7891. + current_insn.field_value[i].align_order = 0;
  7892. + else
  7893. + current_insn.field_value[i].align_order
  7894. + = mapped_operand[i].align;
  7895. + }
  7896. +
  7897. + current_insn.next_slot = opc->nr_fields;
  7898. +
  7899. + return finish_insn(opc);
  7900. +}
  7901. +
  7902. +static const char *
  7903. +finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
  7904. +{
  7905. + expressionS *exp = &current_insn.immediate;
  7906. + relax_substateT initial_subtype;
  7907. + symbolS *sym;
  7908. + offsetT off;
  7909. + int initial_size, max_size;
  7910. + char *buf;
  7911. +
  7912. + initial_size = LDA_INITIAL_SIZE;
  7913. +
  7914. + if (avr32_pic)
  7915. + {
  7916. + initial_subtype = LDA_SUBTYPE_SUB;
  7917. + if (linkrelax)
  7918. + max_size = 8;
  7919. + else
  7920. + max_size = 4;
  7921. + }
  7922. + else
  7923. + {
  7924. + initial_subtype = LDA_SUBTYPE_MOV1;
  7925. + max_size = 4;
  7926. + }
  7927. +
  7928. + frag_grow(max_size);
  7929. + buf = frag_more(initial_size);
  7930. + dwarf2_emit_insn(initial_size);
  7931. +
  7932. + if (exp->X_op == O_symbol)
  7933. + {
  7934. + sym = exp->X_add_symbol;
  7935. + off = exp->X_add_number;
  7936. + }
  7937. + else
  7938. + {
  7939. + sym = make_expr_symbol(exp);
  7940. + off = 0;
  7941. + }
  7942. +
  7943. + frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
  7944. + frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
  7945. +
  7946. + if (!avr32_pic)
  7947. + {
  7948. + /* The relaxer will bump the refcount if necessary */
  7949. + frag_now->tc_frag_data.pool
  7950. + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
  7951. + }
  7952. +
  7953. + frag_var(rs_machine_dependent, max_size - initial_size,
  7954. + initial_size, initial_subtype, sym, off, buf);
  7955. +
  7956. + return NULL;
  7957. +}
  7958. +
  7959. +static const char *
  7960. +finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
  7961. +{
  7962. + expressionS *exp = &current_insn.immediate;
  7963. + symbolS *sym;
  7964. + offsetT off;
  7965. + int initial_size, max_size;
  7966. + char *buf;
  7967. +
  7968. + initial_size = CALL_INITIAL_SIZE;
  7969. +
  7970. + if (avr32_pic)
  7971. + {
  7972. + if (linkrelax)
  7973. + max_size = 10;
  7974. + else
  7975. + max_size = 4;
  7976. + }
  7977. + else
  7978. + max_size = 4;
  7979. +
  7980. + frag_grow(max_size);
  7981. + buf = frag_more(initial_size);
  7982. + dwarf2_emit_insn(initial_size);
  7983. +
  7984. + frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
  7985. +
  7986. + if (exp->X_op == O_symbol)
  7987. + {
  7988. + sym = exp->X_add_symbol;
  7989. + off = exp->X_add_number;
  7990. + }
  7991. + else
  7992. + {
  7993. + sym = make_expr_symbol(exp);
  7994. + off = 0;
  7995. + }
  7996. +
  7997. + if (!avr32_pic)
  7998. + {
  7999. + /* The relaxer will bump the refcount if necessary */
  8000. + frag_now->tc_frag_data.pool
  8001. + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
  8002. + }
  8003. +
  8004. + frag_var(rs_machine_dependent, max_size - initial_size,
  8005. + initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
  8006. +
  8007. + return NULL;
  8008. +}
  8009. +
  8010. +void
  8011. +md_begin (void)
  8012. +{
  8013. + unsigned long flags = 0;
  8014. + int i;
  8015. +
  8016. + avr32_mnemonic_htab = hash_new();
  8017. +
  8018. + if (!avr32_mnemonic_htab)
  8019. + as_fatal(_("virtual memory exhausted"));
  8020. +
  8021. + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
  8022. + {
  8023. + hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
  8024. + (void *)&avr32_mnemonic_table[i]);
  8025. + }
  8026. +
  8027. + if (linkrelax)
  8028. + flags |= EF_AVR32_LINKRELAX;
  8029. + if (avr32_pic)
  8030. + flags |= EF_AVR32_PIC;
  8031. +
  8032. + bfd_set_private_flags(stdoutput, flags);
  8033. +
  8034. +#ifdef OPC_CONSISTENCY_CHECK
  8035. + if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
  8036. + < AVR32_NR_OPERANDS)
  8037. + as_fatal(_("operand table is incomplete"));
  8038. +
  8039. + for (i = 0; i < AVR32_NR_OPERANDS; i++)
  8040. + if (avr32_operand_table[i].id != i)
  8041. + as_fatal(_("operand table inconsistency found at index %d\n"), i);
  8042. + pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
  8043. +
  8044. + for (i = 0; i < AVR32_NR_IFIELDS; i++)
  8045. + if (avr32_ifield_table[i].id != i)
  8046. + as_fatal(_("ifield table inconsistency found at index %d\n"), i);
  8047. + pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
  8048. +
  8049. + for (i = 0; i < AVR32_NR_OPCODES; i++)
  8050. + {
  8051. + if (avr32_opc_table[i].id != i)
  8052. + as_fatal(_("opcode table inconsistency found at index %d\n"), i);
  8053. + if ((avr32_opc_table[i].var_field == -1
  8054. + && avr32_relax_table[i].length != 0)
  8055. + || (avr32_opc_table[i].var_field != -1
  8056. + && avr32_relax_table[i].length == 0))
  8057. + as_fatal(_("relax table inconsistency found at index %d\n"), i);
  8058. + }
  8059. + pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
  8060. +
  8061. + for (i = 0; i < AVR32_NR_SYNTAX; i++)
  8062. + if (avr32_syntax_table[i].id != i)
  8063. + as_fatal(_("syntax table inconsistency found at index %d\n"), i);
  8064. + pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
  8065. +
  8066. + for (i = 0; i < AVR32_NR_ALIAS; i++)
  8067. + if (avr32_alias_table[i].id != i)
  8068. + as_fatal(_("alias table inconsistency found at index %d\n"), i);
  8069. + pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
  8070. +
  8071. + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
  8072. + if (avr32_mnemonic_table[i].id != i)
  8073. + as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
  8074. + pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
  8075. +#endif
  8076. +}
  8077. +
  8078. +void
  8079. +md_assemble (char *str)
  8080. +{
  8081. + struct avr32_mnemonic *mnemonic;
  8082. + char *p, c;
  8083. +
  8084. + memset(&current_insn, 0, sizeof(current_insn));
  8085. + current_insn.immediate.X_op = O_constant;
  8086. +
  8087. + skip_whitespace(str);
  8088. + for (p = str; *p; p++)
  8089. + if (*p == ' ')
  8090. + break;
  8091. + c = *p;
  8092. + *p = 0;
  8093. +
  8094. + mnemonic = hash_find(avr32_mnemonic_htab, str);
  8095. + *p = c;
  8096. + if (c) p++;
  8097. +
  8098. + if (mnemonic)
  8099. + {
  8100. + const struct avr32_syntax *syntax;
  8101. +
  8102. + for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
  8103. + {
  8104. + const char *errmsg = NULL;
  8105. +
  8106. + if (syntax_matches(syntax, p))
  8107. + {
  8108. + if (!(syntax->isa_flags & avr32_arch->isa_flags))
  8109. + {
  8110. + as_bad(_("Selected architecture `%s' does not support `%s'"),
  8111. + avr32_arch->name, str);
  8112. + return;
  8113. + }
  8114. +
  8115. + current_insn.syntax = syntax;
  8116. + parse_operands(p);
  8117. +
  8118. + switch (syntax->type)
  8119. + {
  8120. + case AVR32_PARSER_NORMAL:
  8121. + errmsg = finish_insn(syntax->u.opc);
  8122. + break;
  8123. + case AVR32_PARSER_ALIAS:
  8124. + errmsg = finish_alias(syntax->u.alias);
  8125. + break;
  8126. + case AVR32_PARSER_LDA:
  8127. + errmsg = finish_lda(syntax);
  8128. + break;
  8129. + case AVR32_PARSER_CALL:
  8130. + errmsg = finish_call(syntax);
  8131. + break;
  8132. + default:
  8133. + BAD_CASE(syntax->type);
  8134. + break;
  8135. + }
  8136. +
  8137. + if (errmsg)
  8138. + as_bad("%s in `%s'", errmsg, str);
  8139. +
  8140. + return;
  8141. + }
  8142. + }
  8143. +
  8144. + as_bad(_("unrecognized form of instruction: `%s'"), str);
  8145. + }
  8146. + else
  8147. + as_bad(_("unrecognized instruction `%s'"), str);
  8148. +}
  8149. +
  8150. +void avr32_cleanup(void)
  8151. +{
  8152. + struct cpool *pool;
  8153. +
  8154. + /* Emit any constant pools that haven't been explicitly flushed with
  8155. + a .cpool directive. */
  8156. + for (pool = cpool_list; pool; pool = pool->next)
  8157. + {
  8158. + subseg_set(pool->section, pool->sub_section);
  8159. + s_cpool(0);
  8160. + }
  8161. +}
  8162. +
  8163. +/* Handle any PIC-related operands in data allocation pseudo-ops */
  8164. +void
  8165. +avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
  8166. +{
  8167. + bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
  8168. + int pcrel = 0;
  8169. +
  8170. + pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
  8171. + frag->fr_file, frag->fr_line,
  8172. + exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
  8173. + exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
  8174. + exp->X_op, exp->X_add_number);
  8175. +
  8176. + if (exp->X_op == O_subtract && exp->X_op_symbol)
  8177. + {
  8178. + if (exp->X_op_symbol == GOT_symbol)
  8179. + {
  8180. + if (size != 4)
  8181. + goto bad_size;
  8182. + r_type = BFD_RELOC_AVR32_GOTPC;
  8183. + exp->X_op = O_symbol;
  8184. + exp->X_op_symbol = NULL;
  8185. + }
  8186. + }
  8187. + else if (exp->X_op == O_got)
  8188. + {
  8189. + switch (size)
  8190. + {
  8191. + case 1:
  8192. + r_type = BFD_RELOC_AVR32_GOT8;
  8193. + break;
  8194. + case 2:
  8195. + r_type = BFD_RELOC_AVR32_GOT16;
  8196. + break;
  8197. + case 4:
  8198. + r_type = BFD_RELOC_AVR32_GOT32;
  8199. + break;
  8200. + default:
  8201. + goto bad_size;
  8202. + }
  8203. +
  8204. + exp->X_op = O_symbol;
  8205. + }
  8206. +
  8207. + if (r_type == BFD_RELOC_UNUSED)
  8208. + switch (size)
  8209. + {
  8210. + case 1:
  8211. + r_type = BFD_RELOC_8;
  8212. + break;
  8213. + case 2:
  8214. + r_type = BFD_RELOC_16;
  8215. + break;
  8216. + case 4:
  8217. + r_type = BFD_RELOC_32;
  8218. + break;
  8219. + default:
  8220. + goto bad_size;
  8221. + }
  8222. + else if (size != 4)
  8223. + {
  8224. + bad_size:
  8225. + as_bad(_("unsupported BFD relocation size %u"), size);
  8226. + r_type = BFD_RELOC_UNUSED;
  8227. + }
  8228. +
  8229. + fix_new_exp (frag, off, size, exp, pcrel, r_type);
  8230. +}
  8231. +
  8232. +static void
  8233. +avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
  8234. + void *ignore ATTRIBUTE_UNUSED)
  8235. +{
  8236. + segment_info_type *seginfo;
  8237. + fixS *fix;
  8238. +
  8239. + seginfo = seg_info(sec);
  8240. + if (!seginfo)
  8241. + return;
  8242. +
  8243. + for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
  8244. + {
  8245. + if (fix->fx_done)
  8246. + continue;
  8247. +
  8248. + if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
  8249. + && fix->fx_addsy && fix->fx_subsy)
  8250. + {
  8251. + if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
  8252. + || linkrelax)
  8253. + {
  8254. + symbolS *tmp;
  8255. +#ifdef DEBUG
  8256. + fprintf(stderr, "Swapping symbols in fixup:\n");
  8257. + print_fixup(fix);
  8258. +#endif
  8259. + tmp = fix->fx_addsy;
  8260. + fix->fx_addsy = fix->fx_subsy;
  8261. + fix->fx_subsy = tmp;
  8262. + fix->fx_offset = -fix->fx_offset;
  8263. + }
  8264. + }
  8265. + }
  8266. +}
  8267. +
  8268. +/* We need to look for SUB5 instructions with expressions that will be
  8269. + made PC-relative and switch fx_addsy with fx_subsy. This has to be
  8270. + done before adjustment or the wrong symbol might be adjusted.
  8271. +
  8272. + This applies to fixups that are a result of expressions like -(sym
  8273. + - .) and that will make it all the way to md_apply_fix3(). LDA
  8274. + does the right thing in convert_frag, so we must not convert
  8275. + those. */
  8276. +void
  8277. +avr32_frob_file(void)
  8278. +{
  8279. + /* if (1 || !linkrelax)
  8280. + return; */
  8281. +
  8282. + bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
  8283. +}
  8284. +
  8285. +static bfd_boolean
  8286. +convert_to_diff_reloc(fixS *fixP)
  8287. +{
  8288. + switch (fixP->fx_r_type)
  8289. + {
  8290. + case BFD_RELOC_32:
  8291. + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
  8292. + break;
  8293. + case BFD_RELOC_16:
  8294. + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
  8295. + break;
  8296. + case BFD_RELOC_8:
  8297. + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
  8298. + break;
  8299. + default:
  8300. + return FALSE;
  8301. + }
  8302. +
  8303. + return TRUE;
  8304. +}
  8305. +
  8306. +/* Simplify a fixup. If possible, the fixup is reduced to a single
  8307. + constant which is written to the output file. Otherwise, a
  8308. + relocation is generated so that the linker can take care of the
  8309. + rest.
  8310. +
  8311. + ELF relocations have certain constraints: They can only take a
  8312. + single symbol and a single addend. This means that for difference
  8313. + expressions, we _must_ get rid of the fx_subsy symbol somehow.
  8314. +
  8315. + The difference between two labels in the same section can be
  8316. + calculated directly unless 'linkrelax' is set, or a relocation is
  8317. + forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
  8318. + are addends involved at this point, we must be especially careful
  8319. + as the relocation must point exactly to the symbol being
  8320. + subtracted.
  8321. +
  8322. + When subtracting a symbol defined in the same section as the fixup,
  8323. + we might be able to convert it to a PC-relative expression, unless
  8324. + linkrelax is set. If this is the case, there's no way we can make
  8325. + sure that the difference between the fixup and fx_subsy stays
  8326. + constant. So for now, we're just going to disallow that.
  8327. + */
  8328. +void
  8329. +avr32_process_fixup(fixS *fixP, segT this_segment)
  8330. +{
  8331. + segT add_symbol_segment = absolute_section;
  8332. + segT sub_symbol_segment = absolute_section;
  8333. + symbolS *fx_addsy, *fx_subsy;
  8334. + offsetT value = 0, fx_offset;
  8335. + bfd_boolean apply = FALSE;
  8336. +
  8337. + assert(this_segment != absolute_section);
  8338. +
  8339. + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
  8340. + {
  8341. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8342. + _("Bad relocation type %d\n"), fixP->fx_r_type);
  8343. + return;
  8344. + }
  8345. +
  8346. + /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
  8347. + fx_addsy = fixP->fx_addsy;
  8348. + fx_subsy = fixP->fx_subsy;
  8349. + fx_offset = fixP->fx_offset;
  8350. +
  8351. + if (fx_addsy)
  8352. + add_symbol_segment = S_GET_SEGMENT(fx_addsy);
  8353. +
  8354. + if (fx_subsy)
  8355. + {
  8356. + resolve_symbol_value(fx_subsy);
  8357. + sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
  8358. +
  8359. + if (sub_symbol_segment == this_segment
  8360. + && (!linkrelax
  8361. + || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
  8362. + + fixP->fx_where)))
  8363. + {
  8364. + fixP->fx_pcrel = TRUE;
  8365. + fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
  8366. + - S_GET_VALUE(fx_subsy));
  8367. + fx_subsy = NULL;
  8368. + }
  8369. + else if (sub_symbol_segment == absolute_section)
  8370. + {
  8371. + /* The symbol is really a constant. */
  8372. + fx_offset -= S_GET_VALUE(fx_subsy);
  8373. + fx_subsy = NULL;
  8374. + }
  8375. + else if (SEG_NORMAL(add_symbol_segment)
  8376. + && sub_symbol_segment == add_symbol_segment
  8377. + && (!linkrelax || convert_to_diff_reloc(fixP)))
  8378. + {
  8379. + /* Difference between two labels in the same section. */
  8380. + if (linkrelax)
  8381. + {
  8382. + /* convert_to_diff() has ensured that the reloc type is
  8383. + either DIFF32, DIFF16 or DIFF8. */
  8384. + value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
  8385. + - S_GET_VALUE(fx_subsy));
  8386. +
  8387. + /* Try to convert it to a section symbol if possible */
  8388. + if (!S_FORCE_RELOC(fx_addsy, 1)
  8389. + && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
  8390. + {
  8391. + fx_offset = S_GET_VALUE(fx_subsy);
  8392. + fx_addsy = section_symbol(sub_symbol_segment);
  8393. + }
  8394. + else
  8395. + {
  8396. + fx_addsy = fx_subsy;
  8397. + fx_offset = 0;
  8398. + }
  8399. +
  8400. + fx_subsy = NULL;
  8401. + apply = TRUE;
  8402. + }
  8403. + else
  8404. + {
  8405. + fx_offset += S_GET_VALUE(fx_addsy);
  8406. + fx_offset -= S_GET_VALUE(fx_subsy);
  8407. + fx_addsy = NULL;
  8408. + fx_subsy = NULL;
  8409. + }
  8410. + }
  8411. + else
  8412. + {
  8413. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8414. + _("can't resolve `%s' {%s section} - `%s' {%s section}"),
  8415. + fx_addsy ? S_GET_NAME (fx_addsy) : "0",
  8416. + segment_name (add_symbol_segment),
  8417. + S_GET_NAME (fx_subsy),
  8418. + segment_name (sub_symbol_segment));
  8419. + return;
  8420. + }
  8421. + }
  8422. +
  8423. + if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
  8424. + {
  8425. + if (add_symbol_segment == this_segment
  8426. + && fixP->fx_pcrel)
  8427. + {
  8428. + value += S_GET_VALUE(fx_addsy);
  8429. + value -= md_pcrel_from_section(fixP, this_segment);
  8430. + fx_addsy = NULL;
  8431. + fixP->fx_pcrel = FALSE;
  8432. + }
  8433. + else if (add_symbol_segment == absolute_section)
  8434. + {
  8435. + fx_offset += S_GET_VALUE(fixP->fx_addsy);
  8436. + fx_addsy = NULL;
  8437. + }
  8438. + }
  8439. +
  8440. + if (!fx_addsy)
  8441. + fixP->fx_done = TRUE;
  8442. +
  8443. + if (fixP->fx_pcrel)
  8444. + {
  8445. + if (fx_addsy != NULL
  8446. + && S_IS_DEFINED(fx_addsy)
  8447. + && S_GET_SEGMENT(fx_addsy) != this_segment)
  8448. + value += md_pcrel_from_section(fixP, this_segment);
  8449. +
  8450. + switch (fixP->fx_r_type)
  8451. + {
  8452. + case BFD_RELOC_32:
  8453. + fixP->fx_r_type = BFD_RELOC_32_PCREL;
  8454. + break;
  8455. + case BFD_RELOC_16:
  8456. + fixP->fx_r_type = BFD_RELOC_16_PCREL;
  8457. + break;
  8458. + case BFD_RELOC_8:
  8459. + fixP->fx_r_type = BFD_RELOC_8_PCREL;
  8460. + break;
  8461. + case BFD_RELOC_AVR32_SUB5:
  8462. + fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
  8463. + break;
  8464. + case BFD_RELOC_AVR32_16S:
  8465. + fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
  8466. + break;
  8467. + case BFD_RELOC_AVR32_14UW:
  8468. + fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
  8469. + break;
  8470. + case BFD_RELOC_AVR32_10UW:
  8471. + fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
  8472. + break;
  8473. + default:
  8474. + /* Should have been taken care of already */
  8475. + break;
  8476. + }
  8477. + }
  8478. +
  8479. + if (fixP->fx_done || apply)
  8480. + {
  8481. + const struct avr32_ifield *ifield;
  8482. + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
  8483. +
  8484. + if (fixP->fx_done)
  8485. + value += fx_offset;
  8486. +
  8487. + /* For hosts with longs bigger than 32-bits make sure that the top
  8488. + bits of a 32-bit negative value read in by the parser are set,
  8489. + so that the correct comparisons are made. */
  8490. + if (value & 0x80000000)
  8491. + value |= (-1L << 31);
  8492. +
  8493. + switch (fixP->fx_r_type)
  8494. + {
  8495. + case BFD_RELOC_32:
  8496. + case BFD_RELOC_16:
  8497. + case BFD_RELOC_8:
  8498. + case BFD_RELOC_AVR32_DIFF32:
  8499. + case BFD_RELOC_AVR32_DIFF16:
  8500. + case BFD_RELOC_AVR32_DIFF8:
  8501. + md_number_to_chars(buf, value, fixP->fx_size);
  8502. + break;
  8503. + case BFD_RELOC_HI16:
  8504. + value >>= 16;
  8505. + case BFD_RELOC_LO16:
  8506. + value &= 0xffff;
  8507. + md_number_to_chars(buf + 2, value, 2);
  8508. + break;
  8509. + case BFD_RELOC_AVR32_16N_PCREL:
  8510. + value = -value;
  8511. + /* fall through */
  8512. + case BFD_RELOC_AVR32_22H_PCREL:
  8513. + case BFD_RELOC_AVR32_18W_PCREL:
  8514. + case BFD_RELOC_AVR32_16B_PCREL:
  8515. + case BFD_RELOC_AVR32_11H_PCREL:
  8516. + case BFD_RELOC_AVR32_9H_PCREL:
  8517. + case BFD_RELOC_AVR32_9UW_PCREL:
  8518. + case BFD_RELOC_AVR32_3U:
  8519. + case BFD_RELOC_AVR32_4UH:
  8520. + case BFD_RELOC_AVR32_6UW:
  8521. + case BFD_RELOC_AVR32_6S:
  8522. + case BFD_RELOC_AVR32_7UW:
  8523. + case BFD_RELOC_AVR32_8S_EXT:
  8524. + case BFD_RELOC_AVR32_8S:
  8525. + case BFD_RELOC_AVR32_10UW:
  8526. + case BFD_RELOC_AVR32_10SW:
  8527. + case BFD_RELOC_AVR32_STHH_W:
  8528. + case BFD_RELOC_AVR32_14UW:
  8529. + case BFD_RELOC_AVR32_16S:
  8530. + case BFD_RELOC_AVR32_16U:
  8531. + case BFD_RELOC_AVR32_21S:
  8532. + case BFD_RELOC_AVR32_SUB5:
  8533. + case BFD_RELOC_AVR32_CPCALL:
  8534. + case BFD_RELOC_AVR32_16_CP:
  8535. + case BFD_RELOC_AVR32_9W_CP:
  8536. + case BFD_RELOC_AVR32_15S:
  8537. + ifield = fixP->tc_fix_data.ifield;
  8538. + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
  8539. + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
  8540. + fixP->tc_fix_data.align);
  8541. + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
  8542. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8543. + _("operand out of range (%ld not between %ld and %ld)"),
  8544. + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
  8545. + if (value & ((1 << fixP->tc_fix_data.align) - 1))
  8546. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8547. + _("misaligned operand (required alignment: %d)"),
  8548. + 1 << fixP->tc_fix_data.align);
  8549. + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
  8550. + break;
  8551. + case BFD_RELOC_AVR32_ALIGN:
  8552. + /* Nothing to do */
  8553. + fixP->fx_done = FALSE;
  8554. + break;
  8555. + default:
  8556. + as_fatal("reloc type %s not handled\n",
  8557. + bfd_get_reloc_code_name(fixP->fx_r_type));
  8558. + }
  8559. + }
  8560. +
  8561. + fixP->fx_addsy = fx_addsy;
  8562. + fixP->fx_subsy = fx_subsy;
  8563. + fixP->fx_offset = fx_offset;
  8564. +
  8565. + if (!fixP->fx_done)
  8566. + {
  8567. + if (!fixP->fx_addsy)
  8568. + fixP->fx_addsy = abs_section_sym;
  8569. +
  8570. + symbol_mark_used_in_reloc(fixP->fx_addsy);
  8571. + if (fixP->fx_subsy)
  8572. + abort();
  8573. + }
  8574. +}
  8575. +
  8576. +#if 0
  8577. +void
  8578. +md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
  8579. +{
  8580. + const struct avr32_ifield *ifield;
  8581. + offsetT value = *valP;
  8582. + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
  8583. + bfd_boolean apply;
  8584. +
  8585. + pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
  8586. + fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
  8587. + fixP->fx_offset);
  8588. +
  8589. + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
  8590. + {
  8591. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8592. + _("Bad relocation type %d\n"), fixP->fx_r_type);
  8593. + return;
  8594. + }
  8595. +
  8596. + if (!fixP->fx_addsy && !fixP->fx_subsy)
  8597. + fixP->fx_done = 1;
  8598. +
  8599. + if (fixP->fx_pcrel)
  8600. + {
  8601. + if (fixP->fx_addsy != NULL
  8602. + && S_IS_DEFINED(fixP->fx_addsy)
  8603. + && S_GET_SEGMENT(fixP->fx_addsy) != seg)
  8604. + value += md_pcrel_from_section(fixP, seg);
  8605. +
  8606. + switch (fixP->fx_r_type)
  8607. + {
  8608. + case BFD_RELOC_32:
  8609. + fixP->fx_r_type = BFD_RELOC_32_PCREL;
  8610. + break;
  8611. + case BFD_RELOC_16:
  8612. + case BFD_RELOC_8:
  8613. + as_bad_where (fixP->fx_file, fixP->fx_line,
  8614. + _("8- and 16-bit PC-relative relocations not supported"));
  8615. + break;
  8616. + case BFD_RELOC_AVR32_SUB5:
  8617. + fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
  8618. + break;
  8619. + case BFD_RELOC_AVR32_16S:
  8620. + fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
  8621. + break;
  8622. + default:
  8623. + /* Should have been taken care of already */
  8624. + break;
  8625. + }
  8626. + }
  8627. +
  8628. + if (fixP->fx_r_type == BFD_RELOC_32
  8629. + && fixP->fx_subsy)
  8630. + {
  8631. + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
  8632. +
  8633. + /* Offsets are only allowed if it's a result of adjusting a
  8634. + local symbol into a section-relative offset.
  8635. + tc_fix_adjustable() should prevent any adjustment if there
  8636. + was an offset involved before. */
  8637. + if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
  8638. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8639. + _("cannot represent symbol difference with an offset"));
  8640. +
  8641. + value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
  8642. + - S_GET_VALUE(fixP->fx_subsy));
  8643. +
  8644. + /* The difference before any relaxing takes place is written
  8645. + out, and the DIFF32 reloc identifies the address of the first
  8646. + symbol (i.e. the on that's subtracted.) */
  8647. + *valP = value;
  8648. + fixP->fx_offset -= value;
  8649. + fixP->fx_subsy = NULL;
  8650. +
  8651. + md_number_to_chars(buf, value, fixP->fx_size);
  8652. + }
  8653. +
  8654. + if (fixP->fx_done)
  8655. + {
  8656. + switch (fixP->fx_r_type)
  8657. + {
  8658. + case BFD_RELOC_8:
  8659. + case BFD_RELOC_16:
  8660. + case BFD_RELOC_32:
  8661. + md_number_to_chars(buf, value, fixP->fx_size);
  8662. + break;
  8663. + case BFD_RELOC_HI16:
  8664. + value >>= 16;
  8665. + case BFD_RELOC_LO16:
  8666. + value &= 0xffff;
  8667. + *valP = value;
  8668. + md_number_to_chars(buf + 2, value, 2);
  8669. + break;
  8670. + case BFD_RELOC_AVR32_PCREL_SUB5:
  8671. + value = -value;
  8672. + /* fall through */
  8673. + case BFD_RELOC_AVR32_9_PCREL:
  8674. + case BFD_RELOC_AVR32_11_PCREL:
  8675. + case BFD_RELOC_AVR32_16_PCREL:
  8676. + case BFD_RELOC_AVR32_18_PCREL:
  8677. + case BFD_RELOC_AVR32_22_PCREL:
  8678. + case BFD_RELOC_AVR32_3U:
  8679. + case BFD_RELOC_AVR32_4UH:
  8680. + case BFD_RELOC_AVR32_6UW:
  8681. + case BFD_RELOC_AVR32_6S:
  8682. + case BFD_RELOC_AVR32_7UW:
  8683. + case BFD_RELOC_AVR32_8S:
  8684. + case BFD_RELOC_AVR32_10UW:
  8685. + case BFD_RELOC_AVR32_10SW:
  8686. + case BFD_RELOC_AVR32_14UW:
  8687. + case BFD_RELOC_AVR32_16S:
  8688. + case BFD_RELOC_AVR32_16U:
  8689. + case BFD_RELOC_AVR32_21S:
  8690. + case BFD_RELOC_AVR32_BRC1:
  8691. + case BFD_RELOC_AVR32_SUB5:
  8692. + case BFD_RELOC_AVR32_CPCALL:
  8693. + case BFD_RELOC_AVR32_16_CP:
  8694. + case BFD_RELOC_AVR32_9_CP:
  8695. + case BFD_RELOC_AVR32_15S:
  8696. + ifield = fixP->tc_fix_data.ifield;
  8697. + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
  8698. + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
  8699. + fixP->tc_fix_data.align);
  8700. + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
  8701. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8702. + _("operand out of range (%ld not between %ld and %ld)"),
  8703. + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
  8704. + if (value & ((1 << fixP->tc_fix_data.align) - 1))
  8705. + as_bad_where(fixP->fx_file, fixP->fx_line,
  8706. + _("misaligned operand (required alignment: %d)"),
  8707. + 1 << fixP->tc_fix_data.align);
  8708. + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
  8709. + break;
  8710. + case BFD_RELOC_AVR32_ALIGN:
  8711. + /* Nothing to do */
  8712. + fixP->fx_done = FALSE;
  8713. + break;
  8714. + default:
  8715. + as_fatal("reloc type %s not handled\n",
  8716. + bfd_get_reloc_code_name(fixP->fx_r_type));
  8717. + }
  8718. + }
  8719. +}
  8720. +#endif
  8721. +
  8722. +arelent *
  8723. +tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
  8724. + fixS *fixp)
  8725. +{
  8726. + arelent *reloc;
  8727. + bfd_reloc_code_real_type code;
  8728. +
  8729. + reloc = xmalloc (sizeof (arelent));
  8730. +
  8731. + reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
  8732. + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
  8733. + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
  8734. + reloc->addend = fixp->fx_offset;
  8735. + code = fixp->fx_r_type;
  8736. +
  8737. + reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
  8738. +
  8739. + if (reloc->howto == NULL)
  8740. + {
  8741. + as_bad_where (fixp->fx_file, fixp->fx_line,
  8742. + _("cannot represent relocation %s in this object file format"),
  8743. + bfd_get_reloc_code_name (code));
  8744. + return NULL;
  8745. + }
  8746. +
  8747. + return reloc;
  8748. +}
  8749. +
  8750. +bfd_boolean
  8751. +avr32_force_reloc(fixS *fixP)
  8752. +{
  8753. + if (linkrelax && fixP->fx_addsy
  8754. + && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
  8755. + && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
  8756. + {
  8757. + pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
  8758. + fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
  8759. + return 1;
  8760. + }
  8761. +
  8762. + return generic_force_reloc(fixP);
  8763. +}
  8764. +
  8765. +bfd_boolean
  8766. +avr32_fix_adjustable(fixS *fixP)
  8767. +{
  8768. + switch (fixP->fx_r_type)
  8769. + {
  8770. + /* GOT relocations can't have addends since BFD treats all
  8771. + references to a given symbol the same. This means that we
  8772. + must avoid section-relative references to local symbols when
  8773. + dealing with these kinds of relocs */
  8774. + case BFD_RELOC_AVR32_GOT32:
  8775. + case BFD_RELOC_AVR32_GOT16:
  8776. + case BFD_RELOC_AVR32_GOT8:
  8777. + case BFD_RELOC_AVR32_GOT21S:
  8778. + case BFD_RELOC_AVR32_GOT18SW:
  8779. + case BFD_RELOC_AVR32_GOT16S:
  8780. + case BFD_RELOC_AVR32_LDA_GOT:
  8781. + case BFD_RELOC_AVR32_GOTCALL:
  8782. + pr_debug("fix not adjustable\n");
  8783. + return 0;
  8784. +
  8785. + default:
  8786. + break;
  8787. + }
  8788. +
  8789. + return 1;
  8790. +}
  8791. +
  8792. +/* When we want the linker to be able to relax the code, we need to
  8793. + output a reloc for every .align directive requesting an alignment
  8794. + to a four byte boundary or larger. If we don't do this, the linker
  8795. + can't guarantee that the alignment is actually maintained in the
  8796. + linker output.
  8797. +
  8798. + TODO: Might as well insert proper NOPs while we're at it... */
  8799. +void
  8800. +avr32_handle_align(fragS *frag)
  8801. +{
  8802. + if (linkrelax
  8803. + && frag->fr_type == rs_align_code
  8804. + && frag->fr_address + frag->fr_fix > 0
  8805. + && frag->fr_offset > 0)
  8806. + {
  8807. + /* The alignment order (fr_offset) is stored in the addend. */
  8808. + fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
  8809. + FALSE, BFD_RELOC_AVR32_ALIGN);
  8810. + }
  8811. +}
  8812. +
  8813. +/* Relax_align. Advance location counter to next address that has 'alignment'
  8814. + lowest order bits all 0s, return size of adjustment made. */
  8815. +relax_addressT
  8816. +avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
  8817. + fragS *fragP,
  8818. + relax_addressT address)
  8819. +{
  8820. + relax_addressT mask;
  8821. + relax_addressT new_address;
  8822. + int alignment;
  8823. +
  8824. + alignment = fragP->fr_offset;
  8825. + mask = ~((~0) << alignment);
  8826. + new_address = (address + mask) & (~mask);
  8827. +
  8828. + return new_address - address;
  8829. +}
  8830. +
  8831. +/* Turn a string in input_line_pointer into a floating point constant
  8832. + of type type, and store the appropriate bytes in *litP. The number
  8833. + of LITTLENUMS emitted is stored in *sizeP . An error message is
  8834. + returned, or NULL on OK. */
  8835. +
  8836. +/* Equal to MAX_PRECISION in atof-ieee.c */
  8837. +#define MAX_LITTLENUMS 6
  8838. +
  8839. +char *
  8840. +md_atof (type, litP, sizeP)
  8841. +char type;
  8842. +char * litP;
  8843. +int * sizeP;
  8844. +{
  8845. + int i;
  8846. + int prec;
  8847. + LITTLENUM_TYPE words [MAX_LITTLENUMS];
  8848. + char * t;
  8849. +
  8850. + switch (type)
  8851. + {
  8852. + case 'f':
  8853. + case 'F':
  8854. + case 's':
  8855. + case 'S':
  8856. + prec = 2;
  8857. + break;
  8858. +
  8859. + case 'd':
  8860. + case 'D':
  8861. + case 'r':
  8862. + case 'R':
  8863. + prec = 4;
  8864. + break;
  8865. +
  8866. + /* FIXME: Some targets allow other format chars for bigger sizes here. */
  8867. +
  8868. + default:
  8869. + * sizeP = 0;
  8870. + return _("Bad call to md_atof()");
  8871. + }
  8872. +
  8873. + t = atof_ieee (input_line_pointer, type, words);
  8874. + if (t)
  8875. + input_line_pointer = t;
  8876. + * sizeP = prec * sizeof (LITTLENUM_TYPE);
  8877. +
  8878. + for (i = 0; i < prec; i++)
  8879. + {
  8880. + md_number_to_chars (litP, (valueT) words[i],
  8881. + sizeof (LITTLENUM_TYPE));
  8882. + litP += sizeof (LITTLENUM_TYPE);
  8883. + }
  8884. +
  8885. + return 0;
  8886. +}
  8887. +
  8888. +static char *avr32_end_of_match(char *cont, char *what)
  8889. +{
  8890. + int len = strlen (what);
  8891. +
  8892. + if (! is_part_of_name (cont[len])
  8893. + && strncasecmp (cont, what, len) == 0)
  8894. + return cont + len;
  8895. +
  8896. + return NULL;
  8897. +}
  8898. +
  8899. +int
  8900. +avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
  8901. +{
  8902. + char *next = input_line_pointer;
  8903. + char *next_end;
  8904. +
  8905. + pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
  8906. +
  8907. + if (*nextchar == '(')
  8908. + {
  8909. + if (strcasecmp(name, "hi") == 0)
  8910. + {
  8911. + *next = *nextchar;
  8912. +
  8913. + expression(exp);
  8914. +
  8915. + if (exp->X_op == O_constant)
  8916. + {
  8917. + pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
  8918. + exp->X_add_number, exp->X_add_number >> 16);
  8919. + exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
  8920. + }
  8921. + else
  8922. + {
  8923. + exp->X_md = exp->X_op;
  8924. + exp->X_op = O_hi;
  8925. + }
  8926. +
  8927. + return 1;
  8928. + }
  8929. + else if (strcasecmp(name, "lo") == 0)
  8930. + {
  8931. + *next = *nextchar;
  8932. +
  8933. + expression(exp);
  8934. +
  8935. + if (exp->X_op == O_constant)
  8936. + exp->X_add_number &= 0xffff;
  8937. + else
  8938. + {
  8939. + exp->X_md = exp->X_op;
  8940. + exp->X_op = O_lo;
  8941. + }
  8942. +
  8943. + return 1;
  8944. + }
  8945. + }
  8946. + else if (*nextchar == '@')
  8947. + {
  8948. + exp->X_md = exp->X_op;
  8949. +
  8950. + if ((next_end = avr32_end_of_match (next + 1, "got")))
  8951. + exp->X_op = O_got;
  8952. + else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
  8953. + exp->X_op = O_tlsgd;
  8954. + /* Add more as needed */
  8955. + else
  8956. + {
  8957. + char c;
  8958. + input_line_pointer++;
  8959. + c = get_symbol_end();
  8960. + as_bad (_("unknown relocation override `%s'"), next + 1);
  8961. + *input_line_pointer = c;
  8962. + input_line_pointer = next;
  8963. + return 0;
  8964. + }
  8965. +
  8966. + exp->X_op_symbol = NULL;
  8967. + exp->X_add_symbol = symbol_find_or_make (name);
  8968. + exp->X_add_number = 0;
  8969. +
  8970. + *input_line_pointer = *nextchar;
  8971. + input_line_pointer = next_end;
  8972. + *nextchar = *input_line_pointer;
  8973. + *input_line_pointer = '\0';
  8974. + return 1;
  8975. + }
  8976. + else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
  8977. + {
  8978. + if (!GOT_symbol)
  8979. + GOT_symbol = symbol_find_or_make(name);
  8980. +
  8981. + exp->X_add_symbol = GOT_symbol;
  8982. + exp->X_op = O_symbol;
  8983. + exp->X_add_number = 0;
  8984. + return 1;
  8985. + }
  8986. +
  8987. + return 0;
  8988. +}
  8989. +
  8990. +static void
  8991. +s_rseg (int value ATTRIBUTE_UNUSED)
  8992. +{
  8993. + /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
  8994. + * Defaults:
  8995. + * - type: undocumented ("typically CODE or DATA")
  8996. + * - ROOT
  8997. + * - align: 1 for code, 0 for others
  8998. + *
  8999. + * TODO: NOROOT is ignored. If gas supports discardable segments, it should
  9000. + * be implemented.
  9001. + */
  9002. + char *name, *end;
  9003. + int length, type, attr;
  9004. + int align = 0;
  9005. +
  9006. + SKIP_WHITESPACE();
  9007. +
  9008. + end = input_line_pointer;
  9009. + while (0 == strchr ("\n\t;:( ", *end))
  9010. + end++;
  9011. + if (end == input_line_pointer)
  9012. + {
  9013. + as_warn (_("missing name"));
  9014. + ignore_rest_of_line();
  9015. + return;
  9016. + }
  9017. +
  9018. + name = xmalloc (end - input_line_pointer + 1);
  9019. + memcpy (name, input_line_pointer, end - input_line_pointer);
  9020. + name[end - input_line_pointer] = '\0';
  9021. + input_line_pointer = end;
  9022. +
  9023. + SKIP_WHITESPACE();
  9024. +
  9025. + type = SHT_NULL;
  9026. + attr = 0;
  9027. +
  9028. + if (*input_line_pointer == ':')
  9029. + {
  9030. + /* Skip the colon */
  9031. + ++input_line_pointer;
  9032. + SKIP_WHITESPACE();
  9033. +
  9034. + /* Possible options at this point:
  9035. + * - flag (ROOT or NOROOT)
  9036. + * - a segment type
  9037. + */
  9038. + end = input_line_pointer;
  9039. + while (0 == strchr ("\n\t;:( ", *end))
  9040. + end++;
  9041. + length = end - input_line_pointer;
  9042. + if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
  9043. + ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
  9044. + {
  9045. + /* Ignore ROOT/NOROOT */
  9046. + input_line_pointer = end;
  9047. + }
  9048. + else
  9049. + {
  9050. + /* Must be a segment type */
  9051. + switch (*input_line_pointer)
  9052. + {
  9053. + case 'C':
  9054. + case 'c':
  9055. + if ((length == 4) &&
  9056. + (0 == strncasecmp (input_line_pointer, "CODE", 4)))
  9057. + {
  9058. + attr |= SHF_ALLOC | SHF_EXECINSTR;
  9059. + type = SHT_PROGBITS;
  9060. + align = 1;
  9061. + break;
  9062. + }
  9063. + if ((length == 5) &&
  9064. + (0 == strncasecmp (input_line_pointer, "CONST", 5)))
  9065. + {
  9066. + attr |= SHF_ALLOC;
  9067. + type = SHT_PROGBITS;
  9068. + break;
  9069. + }
  9070. + goto de_fault;
  9071. +
  9072. + case 'D':
  9073. + case 'd':
  9074. + if ((length == 4) &&
  9075. + (0 == strncasecmp (input_line_pointer, "DATA", 4)))
  9076. + {
  9077. + attr |= SHF_ALLOC | SHF_WRITE;
  9078. + type = SHT_PROGBITS;
  9079. + break;
  9080. + }
  9081. + goto de_fault;
  9082. +
  9083. + /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
  9084. +
  9085. + case 'U':
  9086. + case 'u':
  9087. + if ((length == 7) &&
  9088. + (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
  9089. + break;
  9090. + goto de_fault;
  9091. +
  9092. + /* TODO: Add XDATA and ZPAGE if necessary */
  9093. +
  9094. + de_fault:
  9095. + default:
  9096. + as_warn (_("unrecognized segment type"));
  9097. + }
  9098. +
  9099. + input_line_pointer = end;
  9100. + SKIP_WHITESPACE();
  9101. +
  9102. + if (*input_line_pointer == ':')
  9103. + {
  9104. + /* ROOT/NOROOT */
  9105. + ++input_line_pointer;
  9106. + SKIP_WHITESPACE();
  9107. +
  9108. + end = input_line_pointer;
  9109. + while (0 == strchr ("\n\t;:( ", *end))
  9110. + end++;
  9111. + length = end - input_line_pointer;
  9112. + if (! ((length == 4) &&
  9113. + (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
  9114. + ! ((length == 6) &&
  9115. + (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
  9116. + {
  9117. + as_warn (_("unrecognized segment flag"));
  9118. + }
  9119. +
  9120. + input_line_pointer = end;
  9121. + SKIP_WHITESPACE();
  9122. + }
  9123. + }
  9124. + }
  9125. +
  9126. + if (*input_line_pointer == '(')
  9127. + {
  9128. + align = get_absolute_expression ();
  9129. + }
  9130. +
  9131. + demand_empty_rest_of_line();
  9132. +
  9133. + obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
  9134. +#ifdef AVR32_DEBUG
  9135. + fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
  9136. + name, type, attr );
  9137. + fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
  9138. +#endif
  9139. +
  9140. + if (align > 15)
  9141. + {
  9142. + align = 15;
  9143. + as_warn (_("alignment too large: %u assumed"), align);
  9144. + }
  9145. +
  9146. + /* Hope not, that is */
  9147. + assert (now_seg != absolute_section);
  9148. +
  9149. + /* Only make a frag if we HAVE to... */
  9150. + if (align != 0 && !need_pass_2)
  9151. + {
  9152. + if (subseg_text_p (now_seg))
  9153. + frag_align_code (align, 0);
  9154. + else
  9155. + frag_align (align, 0, 0);
  9156. + }
  9157. +
  9158. + record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
  9159. +}
  9160. +
  9161. +/* vim: syntax=c sw=2
  9162. + */
  9163. --- /dev/null
  9164. +++ b/gas/config/tc-avr32.h
  9165. @@ -0,0 +1,325 @@
  9166. +/* Assembler definitions for AVR32.
  9167. + Copyright 2003-2006 Atmel Corporation.
  9168. +
  9169. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  9170. +
  9171. + This file is part of GAS, the GNU Assembler.
  9172. +
  9173. + GAS is free software; you can redistribute it and/or modify it
  9174. + under the terms of the GNU General Public License as published by
  9175. + the Free Software Foundation; either version 2, or (at your option)
  9176. + any later version.
  9177. +
  9178. + GAS is distributed in the hope that it will be useful, but WITHOUT
  9179. + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  9180. + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  9181. + License for more details.
  9182. +
  9183. + You should have received a copy of the GNU General Public License
  9184. + along with GAS; see the file COPYING. If not, write to the Free
  9185. + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
  9186. + 02111-1307, USA. */
  9187. +
  9188. +#if 0
  9189. +#define DEBUG
  9190. +#define DEBUG1
  9191. +#define DEBUG2
  9192. +#define DEBUG3
  9193. +#define DEBUG4
  9194. +#define DEBUG5
  9195. +#endif
  9196. +
  9197. +/* Are we trying to be compatible with the IAR assembler? (--iar) */
  9198. +extern int avr32_iarcompat;
  9199. +
  9200. +/* By convention, you should define this macro in the `.h' file. For
  9201. + example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
  9202. + if it is necessary to add CPU specific code to the object format
  9203. + file. */
  9204. +#define TC_AVR32
  9205. +
  9206. +/* This macro is the BFD target name to use when creating the output
  9207. + file. This will normally depend upon the `OBJ_FMT' macro. */
  9208. +#define TARGET_FORMAT "elf32-avr32"
  9209. +
  9210. +/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
  9211. +#define TARGET_ARCH bfd_arch_avr32
  9212. +
  9213. +/* This macro is the BFD machine number to pass to
  9214. + `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
  9215. +#define TARGET_MACH 0
  9216. +
  9217. +/* UNDOCUMENTED: Allow //-style comments */
  9218. +#define DOUBLESLASH_LINE_COMMENTS
  9219. +
  9220. +/* You should define this macro to be non-zero if the target is big
  9221. + endian, and zero if the target is little endian. */
  9222. +#define TARGET_BYTES_BIG_ENDIAN 1
  9223. +
  9224. +/* FIXME: It seems that GAS only expects a one-byte opcode...
  9225. + #define NOP_OPCODE 0xd703 */
  9226. +
  9227. +/* If you define this macro, GAS will warn about the use of
  9228. + nonstandard escape sequences in a string. */
  9229. +#undef ONLY_STANDARD_ESCAPES
  9230. +
  9231. +#define DWARF2_FORMAT() dwarf2_format_32bit
  9232. +
  9233. +/* Instructions are either 2 or 4 bytes long */
  9234. +/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
  9235. +
  9236. +/* GAS will call this function for any expression that can not be
  9237. + recognized. When the function is called, `input_line_pointer'
  9238. + will point to the start of the expression. */
  9239. +#define md_operand(x)
  9240. +
  9241. +#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
  9242. +extern int avr32_parse_name(const char *, struct expressionS *, char *);
  9243. +
  9244. +/* You may define this macro to generate a fixup for a data
  9245. + allocation pseudo-op. */
  9246. +#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
  9247. + avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
  9248. +void avr32_cons_fix_new (fragS *, int, int, expressionS *);
  9249. +
  9250. +/* `extsym - .' expressions can be emitted using PC-relative relocs */
  9251. +#define DIFF_EXPR_OK
  9252. +
  9253. +/* This is used to construct expressions out of @gotoff, etc. The
  9254. + relocation type is stored in X_md */
  9255. +#define O_got O_md1
  9256. +#define O_hi O_md2
  9257. +#define O_lo O_md3
  9258. +#define O_tlsgd O_md4
  9259. +
  9260. +/* You may define this macro to parse an expression used in a data
  9261. + allocation pseudo-op such as `.word'. You can use this to
  9262. + recognize relocation directives that may appear in such directives. */
  9263. +/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
  9264. + void avr_parse_cons_expression (expressionS *exp, int nbytes); */
  9265. +
  9266. +/* This should just call either `number_to_chars_bigendian' or
  9267. + `number_to_chars_littleendian', whichever is appropriate. On
  9268. + targets like the MIPS which support options to change the
  9269. + endianness, which function to call is a runtime decision. On
  9270. + other targets, `md_number_to_chars' can be a simple macro. */
  9271. +#define md_number_to_chars number_to_chars_bigendian
  9272. +
  9273. +/* `md_short_jump_size'
  9274. + `md_long_jump_size'
  9275. + `md_create_short_jump'
  9276. + `md_create_long_jump'
  9277. + If `WORKING_DOT_WORD' is defined, GAS will not do broken word
  9278. + processing (*note Broken words::.). Otherwise, you should set
  9279. + `md_short_jump_size' to the size of a short jump (a jump that is
  9280. + just long enough to jump around a long jmp) and
  9281. + `md_long_jump_size' to the size of a long jump (a jump that can go
  9282. + anywhere in the function), You should define
  9283. + `md_create_short_jump' to create a short jump around a long jump,
  9284. + and define `md_create_long_jump' to create a long jump. */
  9285. +#define WORKING_DOT_WORD
  9286. +
  9287. +/* If you define this macro, it means that `tc_gen_reloc' may return
  9288. + multiple relocation entries for a single fixup. In this case, the
  9289. + return value of `tc_gen_reloc' is a pointer to a null terminated
  9290. + array. */
  9291. +#undef RELOC_EXPANSION_POSSIBLE
  9292. +
  9293. +/* If you define this macro, GAS will not require pseudo-ops to start with a .
  9294. + character. */
  9295. +#define NO_PSEUDO_DOT (avr32_iarcompat)
  9296. +
  9297. +/* The IAR assembler uses $ as the location counter. Unfortunately, we
  9298. + can't make this dependent on avr32_iarcompat... */
  9299. +#define DOLLAR_DOT
  9300. +
  9301. +/* Values passed to md_apply_fix3 don't include the symbol value. */
  9302. +#define MD_APPLY_SYM_VALUE(FIX) 0
  9303. +
  9304. +/* The number of bytes to put into a word in a listing. This affects
  9305. + the way the bytes are clumped together in the listing. For
  9306. + example, a value of 2 might print `1234 5678' where a value of 1
  9307. + would print `12 34 56 78'. The default value is 4. */
  9308. +#define LISTING_WORD_SIZE 4
  9309. +
  9310. +/* extern const struct relax_type md_relax_table[];
  9311. +#define TC_GENERIC_RELAX_TABLE md_relax_table */
  9312. +
  9313. +/*
  9314. + An `.lcomm' directive with no explicit alignment parameter will use
  9315. + this macro to set P2VAR to the alignment that a request for SIZE
  9316. + bytes will have. The alignment is expressed as a power of two. If
  9317. + no alignment should take place, the macro definition should do
  9318. + nothing. Some targets define a `.bss' directive that is also
  9319. + affected by this macro. The default definition will set P2VAR to
  9320. + the truncated power of two of sizes up to eight bytes.
  9321. +
  9322. + We want doublewords to be word-aligned, so we're going to modify the
  9323. + default definition a tiny bit.
  9324. +*/
  9325. +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
  9326. + do \
  9327. + { \
  9328. + if ((SIZE) >= 4) \
  9329. + (P2VAR) = 2; \
  9330. + else if ((SIZE) >= 2) \
  9331. + (P2VAR) = 1; \
  9332. + else \
  9333. + (P2VAR) = 0; \
  9334. + } \
  9335. + while (0)
  9336. +
  9337. +/* When relaxing, we need to generate relocations for alignment
  9338. + directives. */
  9339. +#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
  9340. +extern void avr32_handle_align(fragS *);
  9341. +
  9342. +/* See internals doc for explanation. Oh wait...
  9343. + Now, can you guess where "alignment" comes from? ;-) */
  9344. +#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
  9345. +
  9346. +/* We need to stop gas from reducing certain expressions (e.g. GOT
  9347. + references) */
  9348. +#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
  9349. +extern bfd_boolean avr32_fix_adjustable(struct fix *);
  9350. +
  9351. +/* The linker needs to be passed a little more information when relaxing. */
  9352. +#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
  9353. +extern bfd_boolean avr32_force_reloc(struct fix *);
  9354. +
  9355. +/* I'm tired of working around all the madness in fixup_segment().
  9356. + This hook will do basically the same things as the generic code,
  9357. + and then it will "goto" right past it. */
  9358. +#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
  9359. + do \
  9360. + { \
  9361. + avr32_process_fixup(FIX, SEG); \
  9362. + if (!(FIX)->fx_done) \
  9363. + ++seg_reloc_count; \
  9364. + goto SKIP; \
  9365. + } \
  9366. + while (0)
  9367. +extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
  9368. +
  9369. +/* Positive values of TC_FX_SIZE_SLACK allow a target to define
  9370. + fixups that far past the end of a frag. Having such fixups
  9371. + is of course most most likely a bug in setting fx_size correctly.
  9372. + A negative value disables the fixup check entirely, which is
  9373. + appropriate for something like the Renesas / SuperH SH_COUNT
  9374. + reloc. */
  9375. +/* This target is buggy, and sets fix size too large. */
  9376. +#define TC_FX_SIZE_SLACK(FIX) -1
  9377. +
  9378. +/* We don't want the gas core to make any assumptions about our way of
  9379. + doing linkrelaxing. */
  9380. +#define TC_LINKRELAX_FIXUP(SEG) 0
  9381. +
  9382. +/* ... but we do want it to insert lots of padding. */
  9383. +#define LINKER_RELAXING_SHRINKS_ONLY
  9384. +
  9385. +/* Better do it ourselves, really... */
  9386. +#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
  9387. +extern relax_addressT
  9388. +avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
  9389. +
  9390. +/* Use line number format that is amenable to linker relaxation. */
  9391. +#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
  9392. +
  9393. +/* This is called by write_object_file() just before symbols are
  9394. + attempted converted into section symbols. */
  9395. +#define tc_frob_file_before_adjust() avr32_frob_file()
  9396. +extern void avr32_frob_file(void);
  9397. +
  9398. +/* If you define this macro, GAS will call it at the end of each input
  9399. + file. */
  9400. +#define md_cleanup() avr32_cleanup()
  9401. +extern void avr32_cleanup(void);
  9402. +
  9403. +/* There's an AVR32-specific hack in operand() which creates O_md
  9404. + expressions when encountering HWRD or LWRD. We need to generate
  9405. + proper relocs for them */
  9406. +/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
  9407. +
  9408. +/* I needed to add an extra hook in gas_cgen_finish_insn() for
  9409. + conversion of O_md* operands because md_cgen_record_fixup_exp()
  9410. + isn't called for relaxable insns */
  9411. +/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
  9412. + int avr32_cgen_convert_expr(expressionS *, int); */
  9413. +
  9414. +/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
  9415. +
  9416. +/* If you define this macro, it should return the position from which
  9417. + the PC relative adjustment for a PC relative fixup should be
  9418. + made. On many processors, the base of a PC relative instruction is
  9419. + the next instruction, so this macro would return the length of an
  9420. + instruction, plus the address of the PC relative fixup. The latter
  9421. + can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
  9422. +extern long md_pcrel_from_section (struct fix *, segT);
  9423. +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
  9424. +
  9425. +#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
  9426. +#define LOCAL_LABELS_FB 1
  9427. +
  9428. +struct avr32_relaxer
  9429. +{
  9430. + int (*estimate_size)(fragS *, segT);
  9431. + long (*relax_frag)(segT, fragS *, long);
  9432. + void (*convert_frag)(bfd *, segT, fragS *);
  9433. +};
  9434. +
  9435. +/* AVR32 has quite complex instruction coding, which means we need
  9436. + * lots of information in order to do the right thing during relaxing
  9437. + * (basically, we need to be able to reconstruct a whole new opcode if
  9438. + * necessary) */
  9439. +#define TC_FRAG_TYPE struct avr32_frag_data
  9440. +
  9441. +struct cpool;
  9442. +
  9443. +struct avr32_frag_data
  9444. +{
  9445. + /* TODO: Maybe add an expression object here so that we can use
  9446. + fix_new_exp() in md_convert_frag? We may have to decide
  9447. + pcrel-ness in md_estimate_size_before_relax() as well...or we
  9448. + might do it when parsing. Doing it while parsing may fail
  9449. + because the sub_symbol is undefined then... */
  9450. + int pcrel;
  9451. + int force_extended;
  9452. + int reloc_info;
  9453. + struct avr32_relaxer *relaxer;
  9454. + expressionS exp;
  9455. +
  9456. + /* Points to associated constant pool, for use by LDA and CALL in
  9457. + non-pic mode, and when relaxing the .cpool directive */
  9458. + struct cpool *pool;
  9459. + unsigned int pool_entry;
  9460. +};
  9461. +
  9462. +/* We will have to initialize the fields explicitly when needed */
  9463. +#define TC_FRAG_INIT(fragP)
  9464. +
  9465. +#define md_estimate_size_before_relax(fragP, segT) \
  9466. + ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
  9467. +#define md_relax_frag(segment, fragP, stretch) \
  9468. + ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
  9469. +#define md_convert_frag(abfd, segment, fragP) \
  9470. + ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
  9471. +
  9472. +#define TC_FIX_TYPE struct avr32_fix_data
  9473. +
  9474. +struct avr32_fix_data
  9475. +{
  9476. + const struct avr32_ifield *ifield;
  9477. + unsigned int align;
  9478. + long min;
  9479. + long max;
  9480. +};
  9481. +
  9482. +#define TC_INIT_FIX_DATA(fixP) \
  9483. + do \
  9484. + { \
  9485. + (fixP)->tc_fix_data.ifield = NULL; \
  9486. + (fixP)->tc_fix_data.align = 0; \
  9487. + (fixP)->tc_fix_data.min = 0; \
  9488. + (fixP)->tc_fix_data.max = 0; \
  9489. + } \
  9490. + while (0)
  9491. --- a/gas/configure.tgt
  9492. +++ b/gas/configure.tgt
  9493. @@ -33,6 +33,7 @@ case ${cpu} in
  9494. am33_2.0) cpu_type=mn10300 endian=little ;;
  9495. arm*be|arm*b) cpu_type=arm endian=big ;;
  9496. arm*) cpu_type=arm endian=little ;;
  9497. + avr32*) cpu_type=avr32 endian=big ;;
  9498. bfin*) cpu_type=bfin endian=little ;;
  9499. c4x*) cpu_type=tic4x ;;
  9500. cr16*) cpu_type=cr16 endian=little ;;
  9501. @@ -129,6 +130,9 @@ case ${generic_target} in
  9502. bfin-*elf) fmt=elf ;;
  9503. cr16-*-elf*) fmt=elf ;;
  9504. + avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
  9505. + avr32*) fmt=elf bfd_gas=yes ;;
  9506. +
  9507. cris-*-linux-* | crisv32-*-linux-*)
  9508. fmt=multi em=linux ;;
  9509. cris-*-* | crisv32-*-*) fmt=multi ;;
  9510. --- a/gas/doc/all.texi
  9511. +++ b/gas/doc/all.texi
  9512. @@ -30,6 +30,7 @@
  9513. @set ARC
  9514. @set ARM
  9515. @set AVR
  9516. +@set AVR32
  9517. @set BFIN
  9518. @set CR16
  9519. @set CRIS
  9520. --- a/gas/doc/as.texinfo
  9521. +++ b/gas/doc/as.texinfo
  9522. @@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
  9523. @ifset AVR
  9524. * AVR-Dependent:: AVR Dependent Features
  9525. @end ifset
  9526. +@ifset AVR32
  9527. +* AVR32-Dependent:: AVR32 Dependent Features
  9528. +@end ifset
  9529. @ifset BFIN
  9530. * BFIN-Dependent:: BFIN Dependent Features
  9531. @end ifset
  9532. @@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
  9533. @include c-avr.texi
  9534. @end ifset
  9535. +@ifset AVR32
  9536. +@include c-avr32.texi
  9537. +@end ifset
  9538. +
  9539. @ifset BFIN
  9540. @include c-bfin.texi
  9541. @end ifset
  9542. --- /dev/null
  9543. +++ b/gas/doc/c-avr32.texi
  9544. @@ -0,0 +1,247 @@
  9545. +@c Copyright 2005, 2006
  9546. +@c Atmel Corporation
  9547. +@c This is part of the GAS manual.
  9548. +@c For copying conditions, see the file as.texinfo.
  9549. +
  9550. +@ifset GENERIC
  9551. +@page
  9552. +@node AVR32-Dependent
  9553. +@chapter AVR32 Dependent Features
  9554. +@end ifset
  9555. +
  9556. +@ifclear GENERIC
  9557. +@node Machine Dependencies
  9558. +@chapter AVR32 Dependent Features
  9559. +@end ifclear
  9560. +
  9561. +@cindex AVR32 support
  9562. +@menu
  9563. +* AVR32 Options:: Options
  9564. +* AVR32 Syntax:: Syntax
  9565. +* AVR32 Directives:: Directives
  9566. +* AVR32 Opcodes:: Opcodes
  9567. +@end menu
  9568. +
  9569. +@node AVR32 Options
  9570. +@section Options
  9571. +@cindex AVR32 options
  9572. +@cindex options for AVR32
  9573. +
  9574. +There are currently no AVR32-specific options. However, the following
  9575. +options are planned:
  9576. +
  9577. +@table @code
  9578. +
  9579. +@cindex @code{--pic} command line option, AVR32
  9580. +@cindex PIC code generation for AVR32
  9581. +@item --pic
  9582. +This option specifies that the output of the assembler should be marked
  9583. +as position-independent code (PIC). It will also ensure that
  9584. +pseudo-instructions that deal with address calculation are output as
  9585. +PIC, and that all absolute address references in the code are marked as
  9586. +such.
  9587. +
  9588. +@cindex @code{--linkrelax} command line option, AVR32
  9589. +@item --linkrelax
  9590. +This option specifies that the output of the assembler should be marked
  9591. +as linker-relaxable. It will also ensure that all PC-relative operands
  9592. +that may change during linker relaxation get appropriate relocations.
  9593. +
  9594. +@end table
  9595. +
  9596. +
  9597. +@node AVR32 Syntax
  9598. +@section Syntax
  9599. +@menu
  9600. +* AVR32-Chars:: Special Characters
  9601. +* AVR32-Symrefs:: Symbol references
  9602. +@end menu
  9603. +
  9604. +@node AVR32-Chars
  9605. +@subsection Special Characters
  9606. +
  9607. +@cindex line comment character, AVR32
  9608. +@cindex AVR32 line comment character
  9609. +The presence of a @samp{//} on a line indicates the start of a comment
  9610. +that extends to the end of the current line. If a @samp{#} appears as
  9611. +the first character of a line, the whole line is treated as a comment.
  9612. +
  9613. +@cindex line separator, AVR32
  9614. +@cindex statement separator, AVR32
  9615. +@cindex AVR32 line separator
  9616. +The @samp{;} character can be used instead of a newline to separate
  9617. +statements.
  9618. +
  9619. +@node AVR32-Symrefs
  9620. +@subsection Symbol references
  9621. +
  9622. +The absolute value of a symbol can be obtained by simply naming the
  9623. +symbol. However, as AVR32 symbols have 32-bit values, most symbols have
  9624. +values that are outside the range of any instructions.
  9625. +
  9626. +Instructions that take a PC-relative offset, e.g. @code{lddpc} or
  9627. +@code{rcall}, can also reference a symbol by simply naming the symbol
  9628. +(no explicit calculations necessary). In this case, the assembler or
  9629. +linker subtracts the address of the instruction from the symbol's value
  9630. +and inserts the result into the instruction. Note that even though an
  9631. +overflow is less likely to happen for a relative reference than for an
  9632. +absolute reference, the assembler or linker will generate an error if
  9633. +the referenced symbol is too far away from the current location.
  9634. +
  9635. +Relative references can be used for data as well. For example:
  9636. +
  9637. +@smallexample
  9638. + lddpc r0, 2f
  9639. +1: add r0, pc
  9640. + ...
  9641. + .align 2
  9642. +2: .int @var{some_symbol} - 1b
  9643. +@end smallexample
  9644. +
  9645. +Here, r0 will end up with the run-time address of @var{some_symbol} even
  9646. +if the program was loaded at a different address than it was linked
  9647. +(position-independent code).
  9648. +
  9649. +@subsubsection Symbol modifiers
  9650. +
  9651. +@table @code
  9652. +
  9653. +@item @code{hi(@var{symbol})}
  9654. +Evaluates to the value of the symbol shifted right 16 bits. This will
  9655. +work even if @var{symbol} is defined in a different module.
  9656. +
  9657. +@item @code{lo(@var{symbol})}
  9658. +Evaluates to the low 16 bits of the symbol's value. This will work even
  9659. +if @var{symbol} is defined in a different module.
  9660. +
  9661. +@item @code{@var{symbol}@@got}
  9662. +Create a GOT entry for @var{symbol} and return the offset of that entry
  9663. +relative to the GOT base.
  9664. +
  9665. +@end table
  9666. +
  9667. +
  9668. +@node AVR32 Directives
  9669. +@section Directives
  9670. +@cindex machine directives, AVR32
  9671. +@cindex AVR32 directives
  9672. +
  9673. +@table @code
  9674. +
  9675. +@cindex @code{.cpool} directive, AVR32
  9676. +@item .cpool
  9677. +This directive causes the current contents of the constant pool to be
  9678. +dumped into the current section at the current location (aligned to a
  9679. +word boundary). @code{GAS} maintains a separate constant pool for each
  9680. +section and each sub-section. The @code{.cpool} directive will only
  9681. +affect the constant pool of the current section and sub-section. At the
  9682. +end of assembly, all remaining, non-empty constant pools will
  9683. +automatically be dumped.
  9684. +
  9685. +@end table
  9686. +
  9687. +
  9688. +@node AVR32 Opcodes
  9689. +@section Opcodes
  9690. +@cindex AVR32 opcodes
  9691. +@cindex opcodes for AVR32
  9692. +
  9693. +@code{@value{AS}} implements all the standard AVR32 opcodes. It also
  9694. +implements several pseudo-opcodes, which are recommended to use wherever
  9695. +possible because they give the tool chain better freedom to generate
  9696. +optimal code.
  9697. +
  9698. +@table @code
  9699. +
  9700. +@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
  9701. +@item LDA.W
  9702. +@smallexample
  9703. + lda.w @var{reg}, @var{symbol}
  9704. +@end smallexample
  9705. +
  9706. +This instruction will load the address of @var{symbol} into
  9707. +@var{reg}. The instruction will evaluate to one of the following,
  9708. +depending on the relative distance to the symbol, the relative distance
  9709. +to the constant pool and whether the @code{--pic} option has been
  9710. +specified. If the @code{--pic} option has not been specified, the
  9711. +alternatives are as follows:
  9712. +@smallexample
  9713. + /* @var{symbol} evaluates to a small enough value */
  9714. + mov @var{reg}, @var{symbol}
  9715. +
  9716. + /* (. - @var{symbol}) evaluates to a small enough value */
  9717. + sub @var{reg}, pc, . - @var{symbol}
  9718. +
  9719. + /* Constant pool is close enough */
  9720. + lddpc @var{reg}, @var{cpent}
  9721. + ...
  9722. +@var{cpent}:
  9723. + .long @var{symbol}
  9724. +
  9725. + /* Otherwise (not implemented yet, probably not necessary) */
  9726. + mov @var{reg}, lo(@var{symbol})
  9727. + orh @var{reg}, hi(@var{symbol})
  9728. +@end smallexample
  9729. +
  9730. +If the @code{--pic} option has been specified, the alternatives are as
  9731. +follows:
  9732. +@smallexample
  9733. + /* (. - @var{symbol}) evaluates to a small enough value */
  9734. + sub @var{reg}, pc, . - @var{symbol}
  9735. +
  9736. + /* If @code{--linkrelax} not specified */
  9737. + ld.w @var{reg}, r6[@var{symbol}@@got]
  9738. +
  9739. + /* Otherwise */
  9740. + mov @var{reg}, @var{symbol}@@got / 4
  9741. + ld.w @var{reg}, r6[@var{reg} << 2]
  9742. +@end smallexample
  9743. +
  9744. +If @var{symbol} is not defined in the same file and section as the
  9745. +@code{LDA.W} instruction, the most pessimistic alternative of the
  9746. +above is selected. The linker may convert it back into the most
  9747. +optimal alternative when the final value of all symbols is known.
  9748. +
  9749. +@cindex @code{CALL symbol} pseudo op, AVR32
  9750. +@item CALL
  9751. +@smallexample
  9752. + call @var{symbol}
  9753. +@end smallexample
  9754. +
  9755. +This instruction will insert code to call the subroutine identified by
  9756. +@var{symbol}. It will evaluate to one of the following, depending on
  9757. +the relative distance to the symbol as well as the @code{--linkrelax}
  9758. +and @code{--pic} command-line options.
  9759. +
  9760. +If @var{symbol} is defined in the same section and input file, and the
  9761. +distance is small enough, an @code{rcall} instruction is inserted:
  9762. +@smallexample
  9763. + rcall @var{symbol}
  9764. +@end smallexample
  9765. +
  9766. +Otherwise, if the @code{--pic} option has not been specified:
  9767. +@smallexample
  9768. + mcall @var{cpent}
  9769. + ...
  9770. +@var{cpent}:
  9771. + .long @var{symbol}
  9772. +@end smallexample
  9773. +
  9774. +Finally, if nothing else fits and the @code{--pic} option has been
  9775. +specified, the assembler will indirect the call through the Global
  9776. +Offset Table:
  9777. +@smallexample
  9778. + /* If @code{--linkrelax} not specified */
  9779. + mcall r6[@var{symbol}@@got]
  9780. +
  9781. + /* If @code{--linkrelax} specified */
  9782. + mov lr, @var{symbol}@@got / 4
  9783. + ld.w lr, r6[lr << 2]
  9784. + icall lr
  9785. +@end smallexample
  9786. +
  9787. +The linker, after determining the final value of @var{symbol}, may
  9788. +convert any of these into more optimal alternatives. This includes
  9789. +deleting any superfluous constant pool- and GOT-entries.
  9790. +
  9791. +@end table
  9792. --- a/gas/doc/Makefile.am
  9793. +++ b/gas/doc/Makefile.am
  9794. @@ -33,6 +33,7 @@ CPU_DOCS = \
  9795. c-arc.texi \
  9796. c-arm.texi \
  9797. c-avr.texi \
  9798. + c-avr32.texi \
  9799. c-bfin.texi \
  9800. c-cr16.texi \
  9801. c-d10v.texi \
  9802. --- a/gas/Makefile.am
  9803. +++ b/gas/Makefile.am
  9804. @@ -47,6 +47,7 @@ CPU_TYPES = \
  9805. arc \
  9806. arm \
  9807. avr \
  9808. + avr32 \
  9809. bfin \
  9810. cr16 \
  9811. cris \
  9812. @@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
  9813. config/tc-arc.c \
  9814. config/tc-arm.c \
  9815. config/tc-avr.c \
  9816. + config/tc-avr32.c \
  9817. config/tc-bfin.c \
  9818. config/tc-cr16.c \
  9819. config/tc-cris.c \
  9820. @@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
  9821. config/tc-arc.h \
  9822. config/tc-arm.h \
  9823. config/tc-avr.h \
  9824. + config/tc-avr32.h \
  9825. config/tc-bfin.h \
  9826. config/tc-cr16.h \
  9827. config/tc-cris.h \
  9828. @@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
  9829. $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
  9830. $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
  9831. $(INCDIR)/opcode/avr.h
  9832. +DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
  9833. + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
  9834. + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
  9835. + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
  9836. + $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
  9837. DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
  9838. $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  9839. $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
  9840. @@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
  9841. $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
  9842. $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
  9843. $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
  9844. +DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
  9845. + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
  9846. + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
  9847. + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
  9848. + struc-symbol.h dwarf2dbg.h
  9849. DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
  9850. $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  9851. $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
  9852. @@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
  9853. $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
  9854. $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
  9855. $(BFDDIR)/libcoff.h
  9856. +DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
  9857. + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
  9858. + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
  9859. DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
  9860. $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
  9861. DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
  9862. --- /dev/null
  9863. +++ b/gas/testsuite/gas/avr32/aliases.d
  9864. @@ -0,0 +1,19 @@
  9865. +#as:
  9866. +#objdump: -dr
  9867. +#name: aliases
  9868. +
  9869. +.*: +file format .*
  9870. +
  9871. +Disassembly of section \.text:
  9872. +
  9873. +00000000 <ld_nodisp>:
  9874. + 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
  9875. + 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
  9876. + 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
  9877. + 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
  9878. + a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
  9879. +
  9880. +0000000c <st_nodisp>:
  9881. + c: b8 80 [ \t]+st\.b r12\[0x0\],r0
  9882. + e: b8 00 [ \t]+st\.h r12\[0x0\],r0
  9883. + 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
  9884. --- /dev/null
  9885. +++ b/gas/testsuite/gas/avr32/aliases.s
  9886. @@ -0,0 +1,14 @@
  9887. + .text
  9888. + .global ld_nodisp
  9889. +ld_nodisp:
  9890. + ld.ub r0, r12
  9891. + ld.sb r0, r12
  9892. + ld.uh r0, r12
  9893. + ld.sh r0, r12
  9894. + ld.w r0, r12
  9895. +
  9896. + .global st_nodisp
  9897. +st_nodisp:
  9898. + st.b r12, r0
  9899. + st.h r12, r0
  9900. + st.w r12, r0
  9901. --- /dev/null
  9902. +++ b/gas/testsuite/gas/avr32/allinsn.d
  9903. @@ -0,0 +1,2987 @@
  9904. +#as:
  9905. +#objdump: -dr
  9906. +#name: allinsn
  9907. +
  9908. +.*: +file format .*
  9909. +
  9910. +Disassembly of section \.text:
  9911. +
  9912. +[0-9a-f]* <ld_d5>:
  9913. + *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
  9914. + *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
  9915. + *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
  9916. + *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
  9917. + *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
  9918. + *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
  9919. + *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
  9920. + *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
  9921. +
  9922. +[0-9a-f]* <ld_w5>:
  9923. + *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
  9924. + *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
  9925. + *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
  9926. + *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
  9927. + *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
  9928. + *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
  9929. + *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
  9930. + *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
  9931. +
  9932. +[0-9a-f]* <ld_sh5>:
  9933. + *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
  9934. + *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
  9935. + *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
  9936. + *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
  9937. + *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
  9938. + *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
  9939. + *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
  9940. + *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
  9941. +
  9942. +[0-9a-f]* <ld_uh5>:
  9943. + *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
  9944. + *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
  9945. + *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
  9946. + *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
  9947. + *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
  9948. + *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
  9949. + *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
  9950. + *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
  9951. +
  9952. +[0-9a-f]* <ld_sb2>:
  9953. + *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
  9954. + *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
  9955. + *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
  9956. + *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
  9957. + *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
  9958. + *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
  9959. + *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
  9960. + *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
  9961. +
  9962. +[0-9a-f]* <ld_ub5>:
  9963. + *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
  9964. + *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
  9965. + *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
  9966. + *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
  9967. + *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
  9968. + *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
  9969. + *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
  9970. + *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
  9971. +
  9972. +[0-9a-f]* <st_d5>:
  9973. + *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
  9974. + *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
  9975. + *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
  9976. + *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
  9977. + *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
  9978. + *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
  9979. + *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
  9980. + *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
  9981. +
  9982. +[0-9a-f]* <st_w5>:
  9983. + *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
  9984. + *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
  9985. + *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
  9986. + *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
  9987. + *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
  9988. + *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
  9989. + *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
  9990. + *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
  9991. +
  9992. +[0-9a-f]* <st_h5>:
  9993. + *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
  9994. + *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
  9995. + *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
  9996. + *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
  9997. + *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
  9998. + *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
  9999. + *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
  10000. + *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
  10001. +
  10002. +[0-9a-f]* <st_b5>:
  10003. + *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
  10004. + *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
  10005. + *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
  10006. + *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
  10007. + *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
  10008. + *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
  10009. + *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
  10010. + *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
  10011. +
  10012. +[0-9a-f]* <divs>:
  10013. + *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
  10014. + *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
  10015. + *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
  10016. + *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
  10017. + *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
  10018. + *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
  10019. + *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
  10020. + *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
  10021. +
  10022. +[0-9a-f]* <add1>:
  10023. + *[0-9a-f]*: 1e 0f add pc,pc
  10024. + *[0-9a-f]*: 18 0c add r12,r12
  10025. + *[0-9a-f]*: 0a 05 add r5,r5
  10026. + *[0-9a-f]*: 08 04 add r4,r4
  10027. + *[0-9a-f]*: 1c 0e add lr,lr
  10028. + *[0-9a-f]*: 12 0c add r12,r9
  10029. + *[0-9a-f]*: 06 06 add r6,r3
  10030. + *[0-9a-f]*: 18 0a add r10,r12
  10031. +
  10032. +[0-9a-f]* <sub1>:
  10033. + *[0-9a-f]*: 1e 1f sub pc,pc
  10034. + *[0-9a-f]*: 18 1c sub r12,r12
  10035. + *[0-9a-f]*: 0a 15 sub r5,r5
  10036. + *[0-9a-f]*: 08 14 sub r4,r4
  10037. + *[0-9a-f]*: 1c 1e sub lr,lr
  10038. + *[0-9a-f]*: 0c 1e sub lr,r6
  10039. + *[0-9a-f]*: 1a 10 sub r0,sp
  10040. + *[0-9a-f]*: 18 16 sub r6,r12
  10041. +
  10042. +[0-9a-f]* <rsub1>:
  10043. + *[0-9a-f]*: 1e 2f rsub pc,pc
  10044. + *[0-9a-f]*: 18 2c rsub r12,r12
  10045. + *[0-9a-f]*: 0a 25 rsub r5,r5
  10046. + *[0-9a-f]*: 08 24 rsub r4,r4
  10047. + *[0-9a-f]*: 1c 2e rsub lr,lr
  10048. + *[0-9a-f]*: 1a 2b rsub r11,sp
  10049. + *[0-9a-f]*: 08 27 rsub r7,r4
  10050. + *[0-9a-f]*: 02 29 rsub r9,r1
  10051. +
  10052. +[0-9a-f]* <cp1>:
  10053. + *[0-9a-f]*: 1e 3f cp\.w pc,pc
  10054. + *[0-9a-f]*: 18 3c cp\.w r12,r12
  10055. + *[0-9a-f]*: 0a 35 cp\.w r5,r5
  10056. + *[0-9a-f]*: 08 34 cp\.w r4,r4
  10057. + *[0-9a-f]*: 1c 3e cp\.w lr,lr
  10058. + *[0-9a-f]*: 04 36 cp\.w r6,r2
  10059. + *[0-9a-f]*: 12 30 cp\.w r0,r9
  10060. + *[0-9a-f]*: 1a 33 cp\.w r3,sp
  10061. +
  10062. +[0-9a-f]* <or1>:
  10063. + *[0-9a-f]*: 1e 4f or pc,pc
  10064. + *[0-9a-f]*: 18 4c or r12,r12
  10065. + *[0-9a-f]*: 0a 45 or r5,r5
  10066. + *[0-9a-f]*: 08 44 or r4,r4
  10067. + *[0-9a-f]*: 1c 4e or lr,lr
  10068. + *[0-9a-f]*: 12 44 or r4,r9
  10069. + *[0-9a-f]*: 08 4b or r11,r4
  10070. + *[0-9a-f]*: 00 44 or r4,r0
  10071. +
  10072. +[0-9a-f]* <eor1>:
  10073. + *[0-9a-f]*: 1e 5f eor pc,pc
  10074. + *[0-9a-f]*: 18 5c eor r12,r12
  10075. + *[0-9a-f]*: 0a 55 eor r5,r5
  10076. + *[0-9a-f]*: 08 54 eor r4,r4
  10077. + *[0-9a-f]*: 1c 5e eor lr,lr
  10078. + *[0-9a-f]*: 16 5c eor r12,r11
  10079. + *[0-9a-f]*: 02 50 eor r0,r1
  10080. + *[0-9a-f]*: 1e 55 eor r5,pc
  10081. +
  10082. +[0-9a-f]* <and1>:
  10083. + *[0-9a-f]*: 1e 6f and pc,pc
  10084. + *[0-9a-f]*: 18 6c and r12,r12
  10085. + *[0-9a-f]*: 0a 65 and r5,r5
  10086. + *[0-9a-f]*: 08 64 and r4,r4
  10087. + *[0-9a-f]*: 1c 6e and lr,lr
  10088. + *[0-9a-f]*: 02 68 and r8,r1
  10089. + *[0-9a-f]*: 1a 60 and r0,sp
  10090. + *[0-9a-f]*: 0a 6a and r10,r5
  10091. +
  10092. +[0-9a-f]* <tst>:
  10093. + *[0-9a-f]*: 1e 7f tst pc,pc
  10094. + *[0-9a-f]*: 18 7c tst r12,r12
  10095. + *[0-9a-f]*: 0a 75 tst r5,r5
  10096. + *[0-9a-f]*: 08 74 tst r4,r4
  10097. + *[0-9a-f]*: 1c 7e tst lr,lr
  10098. + *[0-9a-f]*: 18 70 tst r0,r12
  10099. + *[0-9a-f]*: 0c 7a tst r10,r6
  10100. + *[0-9a-f]*: 08 7d tst sp,r4
  10101. +
  10102. +[0-9a-f]* <andn>:
  10103. + *[0-9a-f]*: 1e 8f andn pc,pc
  10104. + *[0-9a-f]*: 18 8c andn r12,r12
  10105. + *[0-9a-f]*: 0a 85 andn r5,r5
  10106. + *[0-9a-f]*: 08 84 andn r4,r4
  10107. + *[0-9a-f]*: 1c 8e andn lr,lr
  10108. + *[0-9a-f]*: 18 89 andn r9,r12
  10109. + *[0-9a-f]*: 1a 8b andn r11,sp
  10110. + *[0-9a-f]*: 0a 8c andn r12,r5
  10111. +
  10112. +[0-9a-f]* <mov3>:
  10113. + *[0-9a-f]*: 1e 9f mov pc,pc
  10114. + *[0-9a-f]*: 18 9c mov r12,r12
  10115. + *[0-9a-f]*: 0a 95 mov r5,r5
  10116. + *[0-9a-f]*: 08 94 mov r4,r4
  10117. + *[0-9a-f]*: 1c 9e mov lr,lr
  10118. + *[0-9a-f]*: 12 95 mov r5,r9
  10119. + *[0-9a-f]*: 16 9b mov r11,r11
  10120. + *[0-9a-f]*: 1c 92 mov r2,lr
  10121. +
  10122. +[0-9a-f]* <st_w1>:
  10123. + *[0-9a-f]*: 1e af st\.w pc\+\+,pc
  10124. + *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
  10125. + *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
  10126. + *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
  10127. + *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
  10128. + *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
  10129. + *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
  10130. + *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
  10131. +
  10132. +[0-9a-f]* <st_h1>:
  10133. + *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
  10134. + *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
  10135. + *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
  10136. + *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
  10137. + *[0-9a-f]*: 1c be st\.h lr\+\+,lr
  10138. + *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
  10139. + *[0-9a-f]*: 0e be st\.h r7\+\+,lr
  10140. + *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
  10141. +
  10142. +[0-9a-f]* <st_b1>:
  10143. + *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
  10144. + *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
  10145. + *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
  10146. + *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
  10147. + *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
  10148. + *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
  10149. + *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
  10150. + *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
  10151. +
  10152. +[0-9a-f]* <st_w2>:
  10153. + *[0-9a-f]*: 1e df st\.w --pc,pc
  10154. + *[0-9a-f]*: 18 dc st\.w --r12,r12
  10155. + *[0-9a-f]*: 0a d5 st\.w --r5,r5
  10156. + *[0-9a-f]*: 08 d4 st\.w --r4,r4
  10157. + *[0-9a-f]*: 1c de st\.w --lr,lr
  10158. + *[0-9a-f]*: 02 d7 st\.w --r1,r7
  10159. + *[0-9a-f]*: 06 d9 st\.w --r3,r9
  10160. + *[0-9a-f]*: 0a d5 st\.w --r5,r5
  10161. +
  10162. +[0-9a-f]* <st_h2>:
  10163. + *[0-9a-f]*: 1e ef st\.h --pc,pc
  10164. + *[0-9a-f]*: 18 ec st\.h --r12,r12
  10165. + *[0-9a-f]*: 0a e5 st\.h --r5,r5
  10166. + *[0-9a-f]*: 08 e4 st\.h --r4,r4
  10167. + *[0-9a-f]*: 1c ee st\.h --lr,lr
  10168. + *[0-9a-f]*: 0a e7 st\.h --r5,r7
  10169. + *[0-9a-f]*: 10 e8 st\.h --r8,r8
  10170. + *[0-9a-f]*: 0e e2 st\.h --r7,r2
  10171. +
  10172. +[0-9a-f]* <st_b2>:
  10173. + *[0-9a-f]*: 1e ff st\.b --pc,pc
  10174. + *[0-9a-f]*: 18 fc st\.b --r12,r12
  10175. + *[0-9a-f]*: 0a f5 st\.b --r5,r5
  10176. + *[0-9a-f]*: 08 f4 st\.b --r4,r4
  10177. + *[0-9a-f]*: 1c fe st\.b --lr,lr
  10178. + *[0-9a-f]*: 1a fd st\.b --sp,sp
  10179. + *[0-9a-f]*: 1a fb st\.b --sp,r11
  10180. + *[0-9a-f]*: 08 f5 st\.b --r4,r5
  10181. +
  10182. +[0-9a-f]* <ld_w1>:
  10183. + *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
  10184. + *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
  10185. + *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
  10186. + *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
  10187. + *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
  10188. + *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
  10189. + *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
  10190. + *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
  10191. +
  10192. +[0-9a-f]* <ld_sh1>:
  10193. + *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
  10194. + *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
  10195. + *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
  10196. + *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
  10197. + *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
  10198. + *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
  10199. + *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
  10200. + *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
  10201. +
  10202. +[0-9a-f]* <ld_uh1>:
  10203. + *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
  10204. + *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
  10205. + *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
  10206. + *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
  10207. + *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
  10208. + *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
  10209. + *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
  10210. + *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
  10211. +
  10212. +[0-9a-f]* <ld_ub1>:
  10213. + *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
  10214. + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
  10215. + *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
  10216. + *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
  10217. + *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
  10218. + *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
  10219. + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
  10220. + *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
  10221. +
  10222. +[0-9a-f]* <ld_w2>:
  10223. + *[0-9a-f]*: 1f 4f ld\.w pc,--pc
  10224. + *[0-9a-f]*: 19 4c ld\.w r12,--r12
  10225. + *[0-9a-f]*: 0b 45 ld\.w r5,--r5
  10226. + *[0-9a-f]*: 09 44 ld\.w r4,--r4
  10227. + *[0-9a-f]*: 1d 4e ld\.w lr,--lr
  10228. + *[0-9a-f]*: 1d 4a ld\.w r10,--lr
  10229. + *[0-9a-f]*: 13 4c ld\.w r12,--r9
  10230. + *[0-9a-f]*: 0b 46 ld\.w r6,--r5
  10231. +
  10232. +[0-9a-f]* <ld_sh2>:
  10233. + *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
  10234. + *[0-9a-f]*: 19 5c ld\.sh r12,--r12
  10235. + *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
  10236. + *[0-9a-f]*: 09 54 ld\.sh r4,--r4
  10237. + *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
  10238. + *[0-9a-f]*: 15 5f ld\.sh pc,--r10
  10239. + *[0-9a-f]*: 07 56 ld\.sh r6,--r3
  10240. + *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
  10241. +
  10242. +[0-9a-f]* <ld_uh2>:
  10243. + *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
  10244. + *[0-9a-f]*: 19 6c ld\.uh r12,--r12
  10245. + *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
  10246. + *[0-9a-f]*: 09 64 ld\.uh r4,--r4
  10247. + *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
  10248. + *[0-9a-f]*: 05 63 ld\.uh r3,--r2
  10249. + *[0-9a-f]*: 01 61 ld\.uh r1,--r0
  10250. + *[0-9a-f]*: 13 62 ld\.uh r2,--r9
  10251. +
  10252. +[0-9a-f]* <ld_ub2>:
  10253. + *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
  10254. + *[0-9a-f]*: 19 7c ld\.ub r12,--r12
  10255. + *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
  10256. + *[0-9a-f]*: 09 74 ld\.ub r4,--r4
  10257. + *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
  10258. + *[0-9a-f]*: 03 71 ld\.ub r1,--r1
  10259. + *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
  10260. + *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
  10261. +
  10262. +[0-9a-f]* <ld_ub3>:
  10263. + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
  10264. + *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
  10265. + *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
  10266. + *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
  10267. + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
  10268. + *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
  10269. + *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
  10270. + *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
  10271. +
  10272. +[0-9a-f]* <sub3_sp>:
  10273. + *[0-9a-f]*: 20 0d sub sp,0
  10274. + *[0-9a-f]*: 2f fd sub sp,-4
  10275. + *[0-9a-f]*: 28 0d sub sp,-512
  10276. + *[0-9a-f]*: 27 fd sub sp,508
  10277. + *[0-9a-f]*: 20 1d sub sp,4
  10278. + *[0-9a-f]*: 20 bd sub sp,44
  10279. + *[0-9a-f]*: 20 2d sub sp,8
  10280. + *[0-9a-f]*: 25 7d sub sp,348
  10281. +
  10282. +[0-9a-f]* <sub3>:
  10283. + *[0-9a-f]*: 20 0f sub pc,0
  10284. + *[0-9a-f]*: 2f fc sub r12,-1
  10285. + *[0-9a-f]*: 28 05 sub r5,-128
  10286. + *[0-9a-f]*: 27 f4 sub r4,127
  10287. + *[0-9a-f]*: 20 1e sub lr,1
  10288. + *[0-9a-f]*: 2d 76 sub r6,-41
  10289. + *[0-9a-f]*: 22 54 sub r4,37
  10290. + *[0-9a-f]*: 23 8c sub r12,56
  10291. +
  10292. +[0-9a-f]* <mov1>:
  10293. + *[0-9a-f]*: 30 0f mov pc,0
  10294. + *[0-9a-f]*: 3f fc mov r12,-1
  10295. + *[0-9a-f]*: 38 05 mov r5,-128
  10296. + *[0-9a-f]*: 37 f4 mov r4,127
  10297. + *[0-9a-f]*: 30 1e mov lr,1
  10298. + *[0-9a-f]*: 30 ef mov pc,14
  10299. + *[0-9a-f]*: 39 c6 mov r6,-100
  10300. + *[0-9a-f]*: 38 6e mov lr,-122
  10301. +
  10302. +[0-9a-f]* <lddsp>:
  10303. + *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
  10304. + *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
  10305. + *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
  10306. + *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
  10307. + *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
  10308. + *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
  10309. + *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
  10310. + *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
  10311. +
  10312. +[0-9a-f]* <lddpc>:
  10313. + *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
  10314. + *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
  10315. + *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
  10316. + *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
  10317. + *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
  10318. + *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
  10319. + *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
  10320. + *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
  10321. +
  10322. +[0-9a-f]* <stdsp>:
  10323. + *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
  10324. + *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
  10325. + *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
  10326. + *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
  10327. + *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
  10328. + *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
  10329. + *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
  10330. + *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
  10331. +
  10332. +[0-9a-f]* <cp2>:
  10333. + *[0-9a-f]*: 58 0f cp.w pc,0
  10334. + *[0-9a-f]*: 5b fc cp.w r12,-1
  10335. + *[0-9a-f]*: 5a 05 cp.w r5,-32
  10336. + *[0-9a-f]*: 59 f4 cp.w r4,31
  10337. + *[0-9a-f]*: 58 1e cp.w lr,1
  10338. + *[0-9a-f]*: 58 38 cp.w r8,3
  10339. + *[0-9a-f]*: 59 0e cp.w lr,16
  10340. + *[0-9a-f]*: 5a 67 cp.w r7,-26
  10341. +
  10342. +[0-9a-f]* <acr>:
  10343. + *[0-9a-f]*: 5c 0f acr pc
  10344. + *[0-9a-f]*: 5c 0c acr r12
  10345. + *[0-9a-f]*: 5c 05 acr r5
  10346. + *[0-9a-f]*: 5c 04 acr r4
  10347. + *[0-9a-f]*: 5c 0e acr lr
  10348. + *[0-9a-f]*: 5c 02 acr r2
  10349. + *[0-9a-f]*: 5c 0c acr r12
  10350. + *[0-9a-f]*: 5c 0f acr pc
  10351. +
  10352. +[0-9a-f]* <scr>:
  10353. + *[0-9a-f]*: 5c 1f scr pc
  10354. + *[0-9a-f]*: 5c 1c scr r12
  10355. + *[0-9a-f]*: 5c 15 scr r5
  10356. + *[0-9a-f]*: 5c 14 scr r4
  10357. + *[0-9a-f]*: 5c 1e scr lr
  10358. + *[0-9a-f]*: 5c 1f scr pc
  10359. + *[0-9a-f]*: 5c 16 scr r6
  10360. + *[0-9a-f]*: 5c 11 scr r1
  10361. +
  10362. +[0-9a-f]* <cpc0>:
  10363. + *[0-9a-f]*: 5c 2f cpc pc
  10364. + *[0-9a-f]*: 5c 2c cpc r12
  10365. + *[0-9a-f]*: 5c 25 cpc r5
  10366. + *[0-9a-f]*: 5c 24 cpc r4
  10367. + *[0-9a-f]*: 5c 2e cpc lr
  10368. + *[0-9a-f]*: 5c 2f cpc pc
  10369. + *[0-9a-f]*: 5c 24 cpc r4
  10370. + *[0-9a-f]*: 5c 29 cpc r9
  10371. +
  10372. +[0-9a-f]* <neg>:
  10373. + *[0-9a-f]*: 5c 3f neg pc
  10374. + *[0-9a-f]*: 5c 3c neg r12
  10375. + *[0-9a-f]*: 5c 35 neg r5
  10376. + *[0-9a-f]*: 5c 34 neg r4
  10377. + *[0-9a-f]*: 5c 3e neg lr
  10378. + *[0-9a-f]*: 5c 37 neg r7
  10379. + *[0-9a-f]*: 5c 31 neg r1
  10380. + *[0-9a-f]*: 5c 39 neg r9
  10381. +
  10382. +[0-9a-f]* <abs>:
  10383. + *[0-9a-f]*: 5c 4f abs pc
  10384. + *[0-9a-f]*: 5c 4c abs r12
  10385. + *[0-9a-f]*: 5c 45 abs r5
  10386. + *[0-9a-f]*: 5c 44 abs r4
  10387. + *[0-9a-f]*: 5c 4e abs lr
  10388. + *[0-9a-f]*: 5c 46 abs r6
  10389. + *[0-9a-f]*: 5c 46 abs r6
  10390. + *[0-9a-f]*: 5c 44 abs r4
  10391. +
  10392. +[0-9a-f]* <castu_b>:
  10393. + *[0-9a-f]*: 5c 5f castu\.b pc
  10394. + *[0-9a-f]*: 5c 5c castu\.b r12
  10395. + *[0-9a-f]*: 5c 55 castu\.b r5
  10396. + *[0-9a-f]*: 5c 54 castu\.b r4
  10397. + *[0-9a-f]*: 5c 5e castu\.b lr
  10398. + *[0-9a-f]*: 5c 57 castu\.b r7
  10399. + *[0-9a-f]*: 5c 5d castu\.b sp
  10400. + *[0-9a-f]*: 5c 59 castu\.b r9
  10401. +
  10402. +[0-9a-f]* <casts_b>:
  10403. + *[0-9a-f]*: 5c 6f casts\.b pc
  10404. + *[0-9a-f]*: 5c 6c casts\.b r12
  10405. + *[0-9a-f]*: 5c 65 casts\.b r5
  10406. + *[0-9a-f]*: 5c 64 casts\.b r4
  10407. + *[0-9a-f]*: 5c 6e casts\.b lr
  10408. + *[0-9a-f]*: 5c 6b casts\.b r11
  10409. + *[0-9a-f]*: 5c 61 casts\.b r1
  10410. + *[0-9a-f]*: 5c 6a casts\.b r10
  10411. +
  10412. +[0-9a-f]* <castu_h>:
  10413. + *[0-9a-f]*: 5c 7f castu\.h pc
  10414. + *[0-9a-f]*: 5c 7c castu\.h r12
  10415. + *[0-9a-f]*: 5c 75 castu\.h r5
  10416. + *[0-9a-f]*: 5c 74 castu\.h r4
  10417. + *[0-9a-f]*: 5c 7e castu\.h lr
  10418. + *[0-9a-f]*: 5c 7a castu\.h r10
  10419. + *[0-9a-f]*: 5c 7b castu\.h r11
  10420. + *[0-9a-f]*: 5c 71 castu\.h r1
  10421. +
  10422. +[0-9a-f]* <casts_h>:
  10423. + *[0-9a-f]*: 5c 8f casts\.h pc
  10424. + *[0-9a-f]*: 5c 8c casts\.h r12
  10425. + *[0-9a-f]*: 5c 85 casts\.h r5
  10426. + *[0-9a-f]*: 5c 84 casts\.h r4
  10427. + *[0-9a-f]*: 5c 8e casts\.h lr
  10428. + *[0-9a-f]*: 5c 80 casts\.h r0
  10429. + *[0-9a-f]*: 5c 85 casts\.h r5
  10430. + *[0-9a-f]*: 5c 89 casts\.h r9
  10431. +
  10432. +[0-9a-f]* <brev>:
  10433. + *[0-9a-f]*: 5c 9f brev pc
  10434. + *[0-9a-f]*: 5c 9c brev r12
  10435. + *[0-9a-f]*: 5c 95 brev r5
  10436. + *[0-9a-f]*: 5c 94 brev r4
  10437. + *[0-9a-f]*: 5c 9e brev lr
  10438. + *[0-9a-f]*: 5c 95 brev r5
  10439. + *[0-9a-f]*: 5c 9a brev r10
  10440. + *[0-9a-f]*: 5c 98 brev r8
  10441. +
  10442. +[0-9a-f]* <swap_h>:
  10443. + *[0-9a-f]*: 5c af swap\.h pc
  10444. + *[0-9a-f]*: 5c ac swap\.h r12
  10445. + *[0-9a-f]*: 5c a5 swap\.h r5
  10446. + *[0-9a-f]*: 5c a4 swap\.h r4
  10447. + *[0-9a-f]*: 5c ae swap\.h lr
  10448. + *[0-9a-f]*: 5c a7 swap\.h r7
  10449. + *[0-9a-f]*: 5c a0 swap\.h r0
  10450. + *[0-9a-f]*: 5c a8 swap\.h r8
  10451. +
  10452. +[0-9a-f]* <swap_b>:
  10453. + *[0-9a-f]*: 5c bf swap\.b pc
  10454. + *[0-9a-f]*: 5c bc swap\.b r12
  10455. + *[0-9a-f]*: 5c b5 swap\.b r5
  10456. + *[0-9a-f]*: 5c b4 swap\.b r4
  10457. + *[0-9a-f]*: 5c be swap\.b lr
  10458. + *[0-9a-f]*: 5c ba swap\.b r10
  10459. + *[0-9a-f]*: 5c bc swap\.b r12
  10460. + *[0-9a-f]*: 5c b1 swap\.b r1
  10461. +
  10462. +[0-9a-f]* <swap_bh>:
  10463. + *[0-9a-f]*: 5c cf swap\.bh pc
  10464. + *[0-9a-f]*: 5c cc swap\.bh r12
  10465. + *[0-9a-f]*: 5c c5 swap\.bh r5
  10466. + *[0-9a-f]*: 5c c4 swap\.bh r4
  10467. + *[0-9a-f]*: 5c ce swap\.bh lr
  10468. + *[0-9a-f]*: 5c c9 swap\.bh r9
  10469. + *[0-9a-f]*: 5c c4 swap\.bh r4
  10470. + *[0-9a-f]*: 5c c1 swap\.bh r1
  10471. +
  10472. +[0-9a-f]* <One_s_compliment>:
  10473. + *[0-9a-f]*: 5c df com pc
  10474. + *[0-9a-f]*: 5c dc com r12
  10475. + *[0-9a-f]*: 5c d5 com r5
  10476. + *[0-9a-f]*: 5c d4 com r4
  10477. + *[0-9a-f]*: 5c de com lr
  10478. + *[0-9a-f]*: 5c d2 com r2
  10479. + *[0-9a-f]*: 5c d2 com r2
  10480. + *[0-9a-f]*: 5c d7 com r7
  10481. +
  10482. +[0-9a-f]* <tnbz>:
  10483. + *[0-9a-f]*: 5c ef tnbz pc
  10484. + *[0-9a-f]*: 5c ec tnbz r12
  10485. + *[0-9a-f]*: 5c e5 tnbz r5
  10486. + *[0-9a-f]*: 5c e4 tnbz r4
  10487. + *[0-9a-f]*: 5c ee tnbz lr
  10488. + *[0-9a-f]*: 5c e8 tnbz r8
  10489. + *[0-9a-f]*: 5c ec tnbz r12
  10490. + *[0-9a-f]*: 5c ef tnbz pc
  10491. +
  10492. +[0-9a-f]* <rol>:
  10493. + *[0-9a-f]*: 5c ff rol pc
  10494. + *[0-9a-f]*: 5c fc rol r12
  10495. + *[0-9a-f]*: 5c f5 rol r5
  10496. + *[0-9a-f]*: 5c f4 rol r4
  10497. + *[0-9a-f]*: 5c fe rol lr
  10498. + *[0-9a-f]*: 5c fa rol r10
  10499. + *[0-9a-f]*: 5c f9 rol r9
  10500. + *[0-9a-f]*: 5c f5 rol r5
  10501. +
  10502. +[0-9a-f]* <ror>:
  10503. + *[0-9a-f]*: 5d 0f ror pc
  10504. + *[0-9a-f]*: 5d 0c ror r12
  10505. + *[0-9a-f]*: 5d 05 ror r5
  10506. + *[0-9a-f]*: 5d 04 ror r4
  10507. + *[0-9a-f]*: 5d 0e ror lr
  10508. + *[0-9a-f]*: 5d 08 ror r8
  10509. + *[0-9a-f]*: 5d 04 ror r4
  10510. + *[0-9a-f]*: 5d 07 ror r7
  10511. +
  10512. +[0-9a-f]* <icall>:
  10513. + *[0-9a-f]*: 5d 1f icall pc
  10514. + *[0-9a-f]*: 5d 1c icall r12
  10515. + *[0-9a-f]*: 5d 15 icall r5
  10516. + *[0-9a-f]*: 5d 14 icall r4
  10517. + *[0-9a-f]*: 5d 1e icall lr
  10518. + *[0-9a-f]*: 5d 13 icall r3
  10519. + *[0-9a-f]*: 5d 11 icall r1
  10520. + *[0-9a-f]*: 5d 13 icall r3
  10521. +
  10522. +[0-9a-f]* <mustr>:
  10523. + *[0-9a-f]*: 5d 2f mustr pc
  10524. + *[0-9a-f]*: 5d 2c mustr r12
  10525. + *[0-9a-f]*: 5d 25 mustr r5
  10526. + *[0-9a-f]*: 5d 24 mustr r4
  10527. + *[0-9a-f]*: 5d 2e mustr lr
  10528. + *[0-9a-f]*: 5d 21 mustr r1
  10529. + *[0-9a-f]*: 5d 24 mustr r4
  10530. + *[0-9a-f]*: 5d 2c mustr r12
  10531. +
  10532. +[0-9a-f]* <musfr>:
  10533. + *[0-9a-f]*: 5d 3f musfr pc
  10534. + *[0-9a-f]*: 5d 3c musfr r12
  10535. + *[0-9a-f]*: 5d 35 musfr r5
  10536. + *[0-9a-f]*: 5d 34 musfr r4
  10537. + *[0-9a-f]*: 5d 3e musfr lr
  10538. + *[0-9a-f]*: 5d 3b musfr r11
  10539. + *[0-9a-f]*: 5d 3c musfr r12
  10540. + *[0-9a-f]*: 5d 32 musfr r2
  10541. +
  10542. +[0-9a-f]* <ret_cond>:
  10543. + *[0-9a-f]*: 5e 0f reteq 1
  10544. + *[0-9a-f]*: 5e fc retal r12
  10545. + *[0-9a-f]*: 5e 85 retls r5
  10546. + *[0-9a-f]*: 5e 74 retpl r4
  10547. + *[0-9a-f]*: 5e 1e retne -1
  10548. + *[0-9a-f]*: 5e 90 retgt r0
  10549. + *[0-9a-f]*: 5e 9c retgt r12
  10550. + *[0-9a-f]*: 5e 4a retge r10
  10551. +
  10552. +[0-9a-f]* <sr_cond>:
  10553. + *[0-9a-f]*: 5f 0f sreq pc
  10554. + *[0-9a-f]*: 5f fc sral r12
  10555. + *[0-9a-f]*: 5f 85 srls r5
  10556. + *[0-9a-f]*: 5f 74 srpl r4
  10557. + *[0-9a-f]*: 5f 1e srne lr
  10558. + *[0-9a-f]*: 5f 50 srlt r0
  10559. + *[0-9a-f]*: 5f fd sral sp
  10560. + *[0-9a-f]*: 5f 49 srge r9
  10561. +
  10562. +[0-9a-f]* <ld_w3>:
  10563. + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
  10564. + *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
  10565. + *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
  10566. + *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
  10567. + *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
  10568. + *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
  10569. + *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
  10570. + *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
  10571. +
  10572. +[0-9a-f]* <ld_sh3>:
  10573. + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
  10574. + *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
  10575. + *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
  10576. + *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
  10577. + *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
  10578. + *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
  10579. + *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
  10580. + *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
  10581. +
  10582. +[0-9a-f]* <ld_uh3>:
  10583. + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
  10584. + *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
  10585. + *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
  10586. + *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
  10587. + *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
  10588. + *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
  10589. + *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
  10590. + *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
  10591. +
  10592. +[0-9a-f]* <st_w3>:
  10593. + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
  10594. + *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
  10595. + *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
  10596. + *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
  10597. + *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
  10598. + *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
  10599. + *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
  10600. + *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
  10601. +
  10602. +[0-9a-f]* <st_h3>:
  10603. + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
  10604. + *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
  10605. + *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
  10606. + *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
  10607. + *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
  10608. + *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
  10609. + *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
  10610. + *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
  10611. +
  10612. +[0-9a-f]* <st_b3>:
  10613. + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
  10614. + *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
  10615. + *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
  10616. + *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
  10617. + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
  10618. + *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
  10619. + *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
  10620. + *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
  10621. +
  10622. +[0-9a-f]* <ldd>:
  10623. + *[0-9a-f]*: bf 00 ld\.d r0,pc
  10624. + *[0-9a-f]*: b9 0e ld\.d lr,r12
  10625. + *[0-9a-f]*: ab 08 ld\.d r8,r5
  10626. + *[0-9a-f]*: a9 06 ld\.d r6,r4
  10627. + *[0-9a-f]*: bd 02 ld\.d r2,lr
  10628. + *[0-9a-f]*: af 0e ld\.d lr,r7
  10629. + *[0-9a-f]*: a9 04 ld\.d r4,r4
  10630. + *[0-9a-f]*: bf 0e ld\.d lr,pc
  10631. +
  10632. +[0-9a-f]* <ldd_postinc>:
  10633. + *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
  10634. + *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
  10635. + *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
  10636. + *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
  10637. + *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
  10638. + *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
  10639. + *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
  10640. + *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
  10641. +
  10642. +[0-9a-f]* <ldd_predec>:
  10643. + *[0-9a-f]*: bf 10 ld\.d r0,--pc
  10644. + *[0-9a-f]*: b9 1e ld\.d lr,--r12
  10645. + *[0-9a-f]*: ab 18 ld\.d r8,--r5
  10646. + *[0-9a-f]*: a9 16 ld\.d r6,--r4
  10647. + *[0-9a-f]*: bd 12 ld\.d r2,--lr
  10648. + *[0-9a-f]*: a1 18 ld\.d r8,--r0
  10649. + *[0-9a-f]*: bf 1a ld\.d r10,--pc
  10650. + *[0-9a-f]*: a9 12 ld\.d r2,--r4
  10651. +
  10652. +[0-9a-f]* <std>:
  10653. + *[0-9a-f]*: bf 11 st\.d pc,r0
  10654. + *[0-9a-f]*: b9 1f st\.d r12,lr
  10655. + *[0-9a-f]*: ab 19 st\.d r5,r8
  10656. + *[0-9a-f]*: a9 17 st\.d r4,r6
  10657. + *[0-9a-f]*: bd 13 st\.d lr,r2
  10658. + *[0-9a-f]*: a1 1d st\.d r0,r12
  10659. + *[0-9a-f]*: bb 15 st\.d sp,r4
  10660. + *[0-9a-f]*: b9 1d st\.d r12,r12
  10661. +
  10662. +[0-9a-f]* <std_postinc>:
  10663. + *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
  10664. + *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
  10665. + *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
  10666. + *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
  10667. + *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
  10668. + *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
  10669. + *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
  10670. + *[0-9a-f]*: af 22 st\.d r7\+\+,r2
  10671. +
  10672. +[0-9a-f]* <std_predec>:
  10673. + *[0-9a-f]*: bf 21 st\.d --pc,r0
  10674. + *[0-9a-f]*: b9 2f st\.d --r12,lr
  10675. + *[0-9a-f]*: ab 29 st\.d --r5,r8
  10676. + *[0-9a-f]*: a9 27 st\.d --r4,r6
  10677. + *[0-9a-f]*: bd 23 st\.d --lr,r2
  10678. + *[0-9a-f]*: a7 27 st\.d --r3,r6
  10679. + *[0-9a-f]*: bd 23 st\.d --lr,r2
  10680. + *[0-9a-f]*: a1 25 st\.d --r0,r4
  10681. +
  10682. +[0-9a-f]* <mul>:
  10683. + *[0-9a-f]*: bf 3f mul pc,pc
  10684. + *[0-9a-f]*: b9 3c mul r12,r12
  10685. + *[0-9a-f]*: ab 35 mul r5,r5
  10686. + *[0-9a-f]*: a9 34 mul r4,r4
  10687. + *[0-9a-f]*: bd 3e mul lr,lr
  10688. + *[0-9a-f]*: bd 3a mul r10,lr
  10689. + *[0-9a-f]*: b1 30 mul r0,r8
  10690. + *[0-9a-f]*: ab 38 mul r8,r5
  10691. +
  10692. +[0-9a-f]* <asr_imm5>:
  10693. + *[0-9a-f]*: a1 4f asr pc,0x0
  10694. + *[0-9a-f]*: bf 5c asr r12,0x1f
  10695. + *[0-9a-f]*: b1 45 asr r5,0x10
  10696. + *[0-9a-f]*: af 54 asr r4,0xf
  10697. + *[0-9a-f]*: a1 5e asr lr,0x1
  10698. + *[0-9a-f]*: b7 56 asr r6,0x17
  10699. + *[0-9a-f]*: b3 46 asr r6,0x12
  10700. + *[0-9a-f]*: a9 45 asr r5,0x8
  10701. +
  10702. +[0-9a-f]* <lsl_imm5>:
  10703. + *[0-9a-f]*: a1 6f lsl pc,0x0
  10704. + *[0-9a-f]*: bf 7c lsl r12,0x1f
  10705. + *[0-9a-f]*: b1 65 lsl r5,0x10
  10706. + *[0-9a-f]*: af 74 lsl r4,0xf
  10707. + *[0-9a-f]*: a1 7e lsl lr,0x1
  10708. + *[0-9a-f]*: ad 7c lsl r12,0xd
  10709. + *[0-9a-f]*: b1 66 lsl r6,0x10
  10710. + *[0-9a-f]*: b9 71 lsl r1,0x19
  10711. +
  10712. +[0-9a-f]* <lsr_imm5>:
  10713. + *[0-9a-f]*: a1 8f lsr pc,0x0
  10714. + *[0-9a-f]*: bf 9c lsr r12,0x1f
  10715. + *[0-9a-f]*: b1 85 lsr r5,0x10
  10716. + *[0-9a-f]*: af 94 lsr r4,0xf
  10717. + *[0-9a-f]*: a1 9e lsr lr,0x1
  10718. + *[0-9a-f]*: a1 90 lsr r0,0x1
  10719. + *[0-9a-f]*: ab 88 lsr r8,0xa
  10720. + *[0-9a-f]*: bb 87 lsr r7,0x1a
  10721. +
  10722. +[0-9a-f]* <sbr>:
  10723. + *[0-9a-f]*: a1 af sbr pc,0x0
  10724. + *[0-9a-f]*: bf bc sbr r12,0x1f
  10725. + *[0-9a-f]*: b1 a5 sbr r5,0x10
  10726. + *[0-9a-f]*: af b4 sbr r4,0xf
  10727. + *[0-9a-f]*: a1 be sbr lr,0x1
  10728. + *[0-9a-f]*: bf b8 sbr r8,0x1f
  10729. + *[0-9a-f]*: b7 a6 sbr r6,0x16
  10730. + *[0-9a-f]*: b7 b1 sbr r1,0x17
  10731. +
  10732. +[0-9a-f]* <cbr>:
  10733. + *[0-9a-f]*: a1 cf cbr pc,0x0
  10734. + *[0-9a-f]*: bf dc cbr r12,0x1f
  10735. + *[0-9a-f]*: b1 c5 cbr r5,0x10
  10736. + *[0-9a-f]*: af d4 cbr r4,0xf
  10737. + *[0-9a-f]*: a1 de cbr lr,0x1
  10738. + *[0-9a-f]*: ab cc cbr r12,0xa
  10739. + *[0-9a-f]*: b7 c7 cbr r7,0x16
  10740. + *[0-9a-f]*: a9 d8 cbr r8,0x9
  10741. +
  10742. +[0-9a-f]* <brc1>:
  10743. + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
  10744. + *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
  10745. + *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
  10746. + *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
  10747. + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
  10748. + *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
  10749. + *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
  10750. + *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
  10751. +
  10752. +[0-9a-f]* <rjmp>:
  10753. + *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
  10754. + *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
  10755. + *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
  10756. + *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
  10757. + *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
  10758. + *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
  10759. + *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
  10760. + *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
  10761. +
  10762. +[0-9a-f]* <rcall1>:
  10763. + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
  10764. + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
  10765. + *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
  10766. + *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
  10767. + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
  10768. + *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
  10769. + *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
  10770. + *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
  10771. +
  10772. +[0-9a-f]* <acall>:
  10773. + *[0-9a-f]*: d0 00 acall 0x0
  10774. + *[0-9a-f]*: df f0 acall 0x3fc
  10775. + *[0-9a-f]*: d8 00 acall 0x200
  10776. + *[0-9a-f]*: d7 f0 acall 0x1fc
  10777. + *[0-9a-f]*: d0 10 acall 0x4
  10778. + *[0-9a-f]*: d5 90 acall 0x164
  10779. + *[0-9a-f]*: d4 c0 acall 0x130
  10780. + *[0-9a-f]*: d2 b0 acall 0xac
  10781. +
  10782. +[0-9a-f]* <scall>:
  10783. + *[0-9a-f]*: d7 33 scall
  10784. + *[0-9a-f]*: d7 33 scall
  10785. + *[0-9a-f]*: d7 33 scall
  10786. + *[0-9a-f]*: d7 33 scall
  10787. + *[0-9a-f]*: d7 33 scall
  10788. + *[0-9a-f]*: d7 33 scall
  10789. + *[0-9a-f]*: d7 33 scall
  10790. + *[0-9a-f]*: d7 33 scall
  10791. +
  10792. +[0-9a-f]* <popm>:
  10793. + *[0-9a-f]*: d8 02 popm pc
  10794. + *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
  10795. + *[0-9a-f]*: d4 02 popm lr
  10796. + *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
  10797. + *[0-9a-f]*: d0 12 popm r0-r3
  10798. + *[0-9a-f]*: d8 e2 popm r4-r10,pc
  10799. + *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
  10800. + *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
  10801. +
  10802. +[0-9a-f]* <pushm>:
  10803. + *[0-9a-f]*: d8 01 pushm pc
  10804. + *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
  10805. + *[0-9a-f]*: d8 01 pushm pc
  10806. + *[0-9a-f]*: d7 f1 pushm r0-r12,lr
  10807. + *[0-9a-f]*: d0 11 pushm r0-r3
  10808. + *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
  10809. + *[0-9a-f]*: d0 91 pushm r0-r3,r10
  10810. + *[0-9a-f]*: d2 41 pushm r8-r9,r12
  10811. +
  10812. +[0-9a-f]* <popm_n>:
  10813. +.*
  10814. +.*
  10815. +.*
  10816. +.*
  10817. +.*
  10818. +.*
  10819. +.*
  10820. +.*
  10821. +
  10822. +[0-9a-f]* <pushm_n>:
  10823. +.*
  10824. +.*
  10825. +.*
  10826. +.*
  10827. +.*
  10828. +.*
  10829. +.*
  10830. +.*
  10831. +
  10832. +[0-9a-f]* <csrfcz>:
  10833. + *[0-9a-f]*: d0 03 csrfcz 0x0
  10834. + *[0-9a-f]*: d1 f3 csrfcz 0x1f
  10835. + *[0-9a-f]*: d1 03 csrfcz 0x10
  10836. + *[0-9a-f]*: d0 f3 csrfcz 0xf
  10837. + *[0-9a-f]*: d0 13 csrfcz 0x1
  10838. + *[0-9a-f]*: d0 53 csrfcz 0x5
  10839. + *[0-9a-f]*: d0 d3 csrfcz 0xd
  10840. + *[0-9a-f]*: d1 73 csrfcz 0x17
  10841. +
  10842. +[0-9a-f]* <ssrf>:
  10843. + *[0-9a-f]*: d2 03 ssrf 0x0
  10844. + *[0-9a-f]*: d3 f3 ssrf 0x1f
  10845. + *[0-9a-f]*: d3 03 ssrf 0x10
  10846. + *[0-9a-f]*: d2 f3 ssrf 0xf
  10847. + *[0-9a-f]*: d2 13 ssrf 0x1
  10848. + *[0-9a-f]*: d3 d3 ssrf 0x1d
  10849. + *[0-9a-f]*: d2 d3 ssrf 0xd
  10850. + *[0-9a-f]*: d2 d3 ssrf 0xd
  10851. +
  10852. +[0-9a-f]* <csrf>:
  10853. + *[0-9a-f]*: d4 03 csrf 0x0
  10854. + *[0-9a-f]*: d5 f3 csrf 0x1f
  10855. + *[0-9a-f]*: d5 03 csrf 0x10
  10856. + *[0-9a-f]*: d4 f3 csrf 0xf
  10857. + *[0-9a-f]*: d4 13 csrf 0x1
  10858. + *[0-9a-f]*: d4 a3 csrf 0xa
  10859. + *[0-9a-f]*: d4 f3 csrf 0xf
  10860. + *[0-9a-f]*: d4 b3 csrf 0xb
  10861. +
  10862. +[0-9a-f]* <rete>:
  10863. + *[0-9a-f]*: d6 03 rete
  10864. +
  10865. +[0-9a-f]* <rets>:
  10866. + *[0-9a-f]*: d6 13 rets
  10867. +
  10868. +[0-9a-f]* <retd>:
  10869. + *[0-9a-f]*: d6 23 retd
  10870. +
  10871. +[0-9a-f]* <retj>:
  10872. + *[0-9a-f]*: d6 33 retj
  10873. +
  10874. +[0-9a-f]* <tlbr>:
  10875. + *[0-9a-f]*: d6 43 tlbr
  10876. +
  10877. +[0-9a-f]* <tlbs>:
  10878. + *[0-9a-f]*: d6 53 tlbs
  10879. +
  10880. +[0-9a-f]* <tlbw>:
  10881. + *[0-9a-f]*: d6 63 tlbw
  10882. +
  10883. +[0-9a-f]* <breakpoint>:
  10884. + *[0-9a-f]*: d6 73 breakpoint
  10885. +
  10886. +[0-9a-f]* <incjosp>:
  10887. + *[0-9a-f]*: d6 83 incjosp 1
  10888. + *[0-9a-f]*: d6 93 incjosp 2
  10889. + *[0-9a-f]*: d6 a3 incjosp 3
  10890. + *[0-9a-f]*: d6 b3 incjosp 4
  10891. + *[0-9a-f]*: d6 c3 incjosp -4
  10892. + *[0-9a-f]*: d6 d3 incjosp -3
  10893. + *[0-9a-f]*: d6 e3 incjosp -2
  10894. + *[0-9a-f]*: d6 f3 incjosp -1
  10895. +
  10896. +[0-9a-f]* <nop>:
  10897. + *[0-9a-f]*: d7 03 nop
  10898. +
  10899. +[0-9a-f]* <popjc>:
  10900. + *[0-9a-f]*: d7 13 popjc
  10901. +
  10902. +[0-9a-f]* <pushjc>:
  10903. + *[0-9a-f]*: d7 23 pushjc
  10904. +
  10905. +[0-9a-f]* <add2>:
  10906. + *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
  10907. + *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
  10908. + *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
  10909. + *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
  10910. + *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
  10911. + *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
  10912. + *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
  10913. + *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
  10914. +
  10915. +[0-9a-f]* <sub2>:
  10916. + *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
  10917. + *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
  10918. + *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
  10919. + *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
  10920. + *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
  10921. + *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
  10922. + *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
  10923. + *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
  10924. +
  10925. +[0-9a-f]* <divu>:
  10926. + *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
  10927. + *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
  10928. + *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
  10929. + *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
  10930. + *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
  10931. + *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
  10932. + *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
  10933. + *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
  10934. +
  10935. +[0-9a-f]* <addhh_w>:
  10936. + *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
  10937. + *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
  10938. + *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
  10939. + *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
  10940. + *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
  10941. + *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
  10942. + *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
  10943. + *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
  10944. +
  10945. +[0-9a-f]* <subhh_w>:
  10946. + *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
  10947. + *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
  10948. + *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
  10949. + *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
  10950. + *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
  10951. + *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
  10952. + *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
  10953. + *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
  10954. +
  10955. +[0-9a-f]* <adc>:
  10956. + *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
  10957. + *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
  10958. + *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
  10959. + *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
  10960. + *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
  10961. + *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
  10962. + *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
  10963. + *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
  10964. +
  10965. +[0-9a-f]* <sbc>:
  10966. + *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
  10967. + *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
  10968. + *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
  10969. + *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
  10970. + *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
  10971. + *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
  10972. + *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
  10973. + *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
  10974. +
  10975. +[0-9a-f]* <mul_2>:
  10976. + *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
  10977. + *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
  10978. + *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
  10979. + *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
  10980. + *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
  10981. + *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
  10982. + *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
  10983. + *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
  10984. +
  10985. +[0-9a-f]* <mac>:
  10986. + *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
  10987. + *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
  10988. + *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
  10989. + *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
  10990. + *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
  10991. + *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
  10992. + *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
  10993. + *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
  10994. +
  10995. +[0-9a-f]* <mulsd>:
  10996. + *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
  10997. + *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
  10998. + *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
  10999. + *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
  11000. + *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
  11001. + *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
  11002. + *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
  11003. + *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
  11004. +
  11005. +[0-9a-f]* <macsd>:
  11006. + *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
  11007. + *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
  11008. + *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
  11009. + *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
  11010. + *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
  11011. + *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
  11012. + *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
  11013. + *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
  11014. +
  11015. +[0-9a-f]* <mulud>:
  11016. + *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
  11017. + *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
  11018. + *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
  11019. + *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
  11020. + *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
  11021. + *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
  11022. + *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
  11023. + *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
  11024. +
  11025. +[0-9a-f]* <macud>:
  11026. + *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
  11027. + *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
  11028. + *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
  11029. + *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
  11030. + *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
  11031. + *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
  11032. + *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
  11033. + *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
  11034. +
  11035. +[0-9a-f]* <asr_1>:
  11036. + *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
  11037. + *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
  11038. + *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
  11039. + *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
  11040. + *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
  11041. + *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
  11042. + *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
  11043. + *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
  11044. +
  11045. +[0-9a-f]* <lsl_1>:
  11046. + *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
  11047. + *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
  11048. + *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
  11049. + *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
  11050. + *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
  11051. + *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
  11052. + *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
  11053. + *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
  11054. +
  11055. +[0-9a-f]* <lsr_1>:
  11056. + *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
  11057. + *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
  11058. + *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
  11059. + *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
  11060. + *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
  11061. + *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
  11062. + *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
  11063. + *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
  11064. +
  11065. +[0-9a-f]* <xchg>:
  11066. + *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
  11067. + *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
  11068. + *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
  11069. + *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
  11070. + *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
  11071. + *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
  11072. + *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
  11073. + *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
  11074. +
  11075. +[0-9a-f]* <max>:
  11076. + *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
  11077. + *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
  11078. + *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
  11079. + *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
  11080. + *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
  11081. + *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
  11082. + *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
  11083. + *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
  11084. +
  11085. +[0-9a-f]* <min>:
  11086. + *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
  11087. + *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
  11088. + *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
  11089. + *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
  11090. + *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
  11091. + *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
  11092. + *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
  11093. + *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
  11094. +
  11095. +[0-9a-f]* <addabs>:
  11096. + *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
  11097. + *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
  11098. + *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
  11099. + *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
  11100. + *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
  11101. + *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
  11102. + *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
  11103. + *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
  11104. +
  11105. +[0-9a-f]* <mulnhh_w>:
  11106. + *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
  11107. + *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
  11108. + *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
  11109. + *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
  11110. + *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
  11111. + *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
  11112. + *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
  11113. + *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
  11114. +
  11115. +[0-9a-f]* <mulnwh_d>:
  11116. + *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
  11117. + *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
  11118. + *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
  11119. + *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
  11120. + *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
  11121. + *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
  11122. + *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
  11123. + *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
  11124. +
  11125. +[0-9a-f]* <machh_w>:
  11126. + *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
  11127. + *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
  11128. + *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
  11129. + *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
  11130. + *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
  11131. + *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
  11132. + *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
  11133. + *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
  11134. +
  11135. +[0-9a-f]* <machh_d>:
  11136. + *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
  11137. + *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
  11138. + *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
  11139. + *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
  11140. + *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
  11141. + *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
  11142. + *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
  11143. + *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
  11144. +
  11145. +[0-9a-f]* <macsathh_w>:
  11146. + *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
  11147. + *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
  11148. + *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
  11149. + *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
  11150. + *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
  11151. + *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
  11152. + *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
  11153. + *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
  11154. +
  11155. +[0-9a-f]* <mulhh_w>:
  11156. + *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
  11157. + *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
  11158. + *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
  11159. + *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
  11160. + *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
  11161. + *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
  11162. + *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
  11163. + *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
  11164. +
  11165. +[0-9a-f]* <mulsathh_h>:
  11166. + *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
  11167. + *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
  11168. + *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
  11169. + *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
  11170. + *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
  11171. + *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
  11172. + *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
  11173. + *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
  11174. +
  11175. +[0-9a-f]* <mulsathh_w>:
  11176. + *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
  11177. + *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
  11178. + *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
  11179. + *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
  11180. + *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
  11181. + *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
  11182. + *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
  11183. + *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
  11184. +
  11185. +[0-9a-f]* <mulsatrndhh_h>:
  11186. + *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
  11187. + *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
  11188. + *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
  11189. + *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
  11190. + *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
  11191. + *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
  11192. + *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
  11193. + *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
  11194. +
  11195. +[0-9a-f]* <mulsatrndwh_w>:
  11196. + *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
  11197. + *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
  11198. + *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
  11199. + *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
  11200. + *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
  11201. + *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
  11202. + *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
  11203. + *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
  11204. +
  11205. +[0-9a-f]* <macwh_d>:
  11206. + *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
  11207. + *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
  11208. + *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
  11209. + *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
  11210. + *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
  11211. + *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
  11212. + *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
  11213. + *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
  11214. +
  11215. +[0-9a-f]* <mulwh_d>:
  11216. + *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
  11217. + *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
  11218. + *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
  11219. + *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
  11220. + *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
  11221. + *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
  11222. + *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
  11223. + *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
  11224. +
  11225. +[0-9a-f]* <mulsatwh_w>:
  11226. + *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
  11227. + *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
  11228. + *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
  11229. + *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
  11230. + *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
  11231. + *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
  11232. + *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
  11233. + *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
  11234. +
  11235. +[0-9a-f]* <ldw7>:
  11236. + *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
  11237. + *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
  11238. + *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
  11239. + *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
  11240. + *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
  11241. + *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
  11242. + *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
  11243. + *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
  11244. +
  11245. +[0-9a-f]* <satadd_w>:
  11246. + *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
  11247. + *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
  11248. + *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
  11249. + *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
  11250. + *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
  11251. + *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
  11252. + *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
  11253. + *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
  11254. +
  11255. +[0-9a-f]* <satsub_w1>:
  11256. + *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
  11257. + *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
  11258. + *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
  11259. + *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
  11260. + *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
  11261. + *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
  11262. + *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
  11263. + *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
  11264. +
  11265. +[0-9a-f]* <satadd_h>:
  11266. + *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
  11267. + *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
  11268. + *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
  11269. + *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
  11270. + *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
  11271. + *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
  11272. + *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
  11273. + *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
  11274. +
  11275. +[0-9a-f]* <satsub_h>:
  11276. + *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
  11277. + *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
  11278. + *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
  11279. + *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
  11280. + *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
  11281. + *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
  11282. + *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
  11283. + *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
  11284. +
  11285. +[0-9a-f]* <mul3>:
  11286. + *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
  11287. + *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
  11288. + *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
  11289. + *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
  11290. + *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
  11291. + *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
  11292. + *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
  11293. + *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
  11294. +
  11295. +[0-9a-f]* <rsub2>:
  11296. + *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
  11297. + *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
  11298. + *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
  11299. + *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
  11300. + *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
  11301. + *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
  11302. + *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
  11303. + *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
  11304. +
  11305. +[0-9a-f]* <clz>:
  11306. + *[0-9a-f]*: fe 0f 12 00 clz pc,pc
  11307. + *[0-9a-f]*: f8 0c 12 00 clz r12,r12
  11308. + *[0-9a-f]*: ea 05 12 00 clz r5,r5
  11309. + *[0-9a-f]*: e8 04 12 00 clz r4,r4
  11310. + *[0-9a-f]*: fc 0e 12 00 clz lr,lr
  11311. + *[0-9a-f]*: e6 02 12 00 clz r2,r3
  11312. + *[0-9a-f]*: f6 05 12 00 clz r5,r11
  11313. + *[0-9a-f]*: e6 0f 12 00 clz pc,r3
  11314. +
  11315. +[0-9a-f]* <cpc1>:
  11316. + *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
  11317. + *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
  11318. + *[0-9a-f]*: ea 05 13 00 cpc r5,r5
  11319. + *[0-9a-f]*: e8 04 13 00 cpc r4,r4
  11320. + *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
  11321. + *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
  11322. + *[0-9a-f]*: f2 05 13 00 cpc r5,r9
  11323. + *[0-9a-f]*: ee 06 13 00 cpc r6,r7
  11324. +
  11325. +[0-9a-f]* <asr3>:
  11326. + *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
  11327. + *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
  11328. + *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
  11329. + *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
  11330. + *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
  11331. + *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
  11332. + *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
  11333. + *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
  11334. +
  11335. +[0-9a-f]* <lsl3>:
  11336. + *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
  11337. + *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
  11338. + *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
  11339. + *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
  11340. + *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
  11341. + *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
  11342. + *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
  11343. + *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
  11344. +
  11345. +[0-9a-f]* <lsr3>:
  11346. + *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
  11347. + *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
  11348. + *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
  11349. + *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
  11350. + *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
  11351. + *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
  11352. + *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
  11353. + *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
  11354. +
  11355. +[0-9a-f]* <movc1>:
  11356. + *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
  11357. + *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
  11358. + *[0-9a-f]*: ea 05 17 80 movls r5,r5
  11359. + *[0-9a-f]*: e8 04 17 70 movpl r4,r4
  11360. + *[0-9a-f]*: fc 0e 17 10 movne lr,lr
  11361. + *[0-9a-f]*: f6 0f 17 10 movne pc,r11
  11362. + *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
  11363. + *[0-9a-f]*: f8 08 17 80 movls r8,r12
  11364. +
  11365. +[0-9a-f]* <padd_h>:
  11366. + *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
  11367. + *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
  11368. + *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
  11369. + *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
  11370. + *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
  11371. + *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
  11372. + *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
  11373. + *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
  11374. +
  11375. +[0-9a-f]* <psub_h>:
  11376. + *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
  11377. + *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
  11378. + *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
  11379. + *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
  11380. + *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
  11381. + *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
  11382. + *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
  11383. + *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
  11384. +
  11385. +[0-9a-f]* <paddx_h>:
  11386. + *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
  11387. + *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
  11388. + *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
  11389. + *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
  11390. + *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
  11391. + *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
  11392. + *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
  11393. + *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
  11394. +
  11395. +[0-9a-f]* <psubx_h>:
  11396. + *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
  11397. + *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
  11398. + *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
  11399. + *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
  11400. + *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
  11401. + *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
  11402. + *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
  11403. + *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
  11404. +
  11405. +[0-9a-f]* <padds_sh>:
  11406. + *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
  11407. + *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
  11408. + *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
  11409. + *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
  11410. + *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
  11411. + *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
  11412. + *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
  11413. + *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
  11414. +
  11415. +[0-9a-f]* <psubs_sh>:
  11416. + *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
  11417. + *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
  11418. + *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
  11419. + *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
  11420. + *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
  11421. + *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
  11422. + *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
  11423. + *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
  11424. +
  11425. +[0-9a-f]* <paddxs_sh>:
  11426. + *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
  11427. + *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
  11428. + *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
  11429. + *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
  11430. + *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
  11431. + *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
  11432. + *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
  11433. + *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
  11434. +
  11435. +[0-9a-f]* <psubxs_sh>:
  11436. + *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
  11437. + *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
  11438. + *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
  11439. + *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
  11440. + *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
  11441. + *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
  11442. + *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
  11443. + *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
  11444. +
  11445. +[0-9a-f]* <padds_uh>:
  11446. + *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
  11447. + *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
  11448. + *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
  11449. + *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
  11450. + *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
  11451. + *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
  11452. + *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
  11453. + *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
  11454. +
  11455. +[0-9a-f]* <psubs_uh>:
  11456. + *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
  11457. + *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
  11458. + *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
  11459. + *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
  11460. + *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
  11461. + *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
  11462. + *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
  11463. + *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
  11464. +
  11465. +[0-9a-f]* <paddxs_uh>:
  11466. + *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
  11467. + *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
  11468. + *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
  11469. + *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
  11470. + *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
  11471. + *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
  11472. + *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
  11473. + *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
  11474. +
  11475. +[0-9a-f]* <psubxs_uh>:
  11476. + *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
  11477. + *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
  11478. + *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
  11479. + *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
  11480. + *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
  11481. + *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
  11482. + *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
  11483. + *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
  11484. +
  11485. +[0-9a-f]* <paddh_sh>:
  11486. + *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
  11487. + *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
  11488. + *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
  11489. + *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
  11490. + *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
  11491. + *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
  11492. + *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
  11493. + *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
  11494. +
  11495. +[0-9a-f]* <psubh_sh>:
  11496. + *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
  11497. + *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
  11498. + *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
  11499. + *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
  11500. + *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
  11501. + *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
  11502. + *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
  11503. + *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
  11504. +
  11505. +[0-9a-f]* <paddxh_sh>:
  11506. + *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
  11507. + *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
  11508. + *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
  11509. + *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
  11510. + *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
  11511. + *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
  11512. + *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
  11513. + *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
  11514. +
  11515. +[0-9a-f]* <psubxh_sh>:
  11516. + *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
  11517. + *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
  11518. + *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
  11519. + *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
  11520. + *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
  11521. + *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
  11522. + *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
  11523. + *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
  11524. +
  11525. +[0-9a-f]* <paddsub_h>:
  11526. + *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
  11527. + *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
  11528. + *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
  11529. + *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
  11530. + *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
  11531. + *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
  11532. + *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
  11533. + *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
  11534. +
  11535. +[0-9a-f]* <psubadd_h>:
  11536. + *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
  11537. + *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
  11538. + *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
  11539. + *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
  11540. + *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
  11541. + *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
  11542. + *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
  11543. + *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
  11544. +
  11545. +[0-9a-f]* <paddsubs_sh>:
  11546. + *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
  11547. + *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
  11548. + *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
  11549. + *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
  11550. + *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
  11551. + *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
  11552. + *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
  11553. + *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
  11554. +
  11555. +[0-9a-f]* <psubadds_sh>:
  11556. + *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
  11557. + *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
  11558. + *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
  11559. + *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
  11560. + *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
  11561. + *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
  11562. + *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
  11563. + *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
  11564. +
  11565. +[0-9a-f]* <paddsubs_uh>:
  11566. + *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
  11567. + *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
  11568. + *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
  11569. + *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
  11570. + *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
  11571. + *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
  11572. + *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
  11573. + *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
  11574. +
  11575. +[0-9a-f]* <psubadds_uh>:
  11576. + *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
  11577. + *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
  11578. + *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
  11579. + *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
  11580. + *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
  11581. + *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
  11582. + *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
  11583. + *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
  11584. +
  11585. +[0-9a-f]* <paddsubh_sh>:
  11586. + *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
  11587. + *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
  11588. + *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
  11589. + *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
  11590. + *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
  11591. + *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
  11592. + *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
  11593. + *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
  11594. +
  11595. +[0-9a-f]* <psubaddh_sh>:
  11596. + *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
  11597. + *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
  11598. + *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
  11599. + *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
  11600. + *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
  11601. + *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
  11602. + *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
  11603. + *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
  11604. +
  11605. +[0-9a-f]* <padd_b>:
  11606. + *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
  11607. + *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
  11608. + *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
  11609. + *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
  11610. + *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
  11611. + *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
  11612. + *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
  11613. + *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
  11614. +
  11615. +[0-9a-f]* <psub_b>:
  11616. + *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
  11617. + *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
  11618. + *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
  11619. + *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
  11620. + *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
  11621. + *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
  11622. + *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
  11623. + *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
  11624. +
  11625. +[0-9a-f]* <padds_sb>:
  11626. + *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
  11627. + *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
  11628. + *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
  11629. + *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
  11630. + *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
  11631. + *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
  11632. + *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
  11633. + *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
  11634. +
  11635. +[0-9a-f]* <psubs_sb>:
  11636. + *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
  11637. + *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
  11638. + *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
  11639. + *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
  11640. + *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
  11641. + *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
  11642. + *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
  11643. + *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
  11644. +
  11645. +[0-9a-f]* <padds_ub>:
  11646. + *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
  11647. + *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
  11648. + *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
  11649. + *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
  11650. + *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
  11651. + *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
  11652. + *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
  11653. + *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
  11654. +
  11655. +[0-9a-f]* <psubs_ub>:
  11656. + *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
  11657. + *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
  11658. + *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
  11659. + *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
  11660. + *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
  11661. + *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
  11662. + *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
  11663. + *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
  11664. +
  11665. +[0-9a-f]* <paddh_ub>:
  11666. + *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
  11667. + *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
  11668. + *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
  11669. + *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
  11670. + *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
  11671. + *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
  11672. + *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
  11673. + *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
  11674. +
  11675. +[0-9a-f]* <psubh_ub>:
  11676. + *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
  11677. + *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
  11678. + *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
  11679. + *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
  11680. + *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
  11681. + *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
  11682. + *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
  11683. + *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
  11684. +
  11685. +[0-9a-f]* <pmax_ub>:
  11686. + *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
  11687. + *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
  11688. + *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
  11689. + *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
  11690. + *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
  11691. + *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
  11692. + *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
  11693. + *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
  11694. +
  11695. +[0-9a-f]* <pmax_sh>:
  11696. + *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
  11697. + *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
  11698. + *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
  11699. + *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
  11700. + *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
  11701. + *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
  11702. + *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
  11703. + *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
  11704. +
  11705. +[0-9a-f]* <pmin_ub>:
  11706. + *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
  11707. + *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
  11708. + *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
  11709. + *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
  11710. + *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
  11711. + *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
  11712. + *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
  11713. + *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
  11714. +
  11715. +[0-9a-f]* <pmin_sh>:
  11716. + *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
  11717. + *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
  11718. + *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
  11719. + *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
  11720. + *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
  11721. + *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
  11722. + *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
  11723. + *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
  11724. +
  11725. +[0-9a-f]* <pavg_ub>:
  11726. + *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
  11727. + *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
  11728. + *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
  11729. + *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
  11730. + *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
  11731. + *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
  11732. + *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
  11733. + *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
  11734. +
  11735. +[0-9a-f]* <pavg_sh>:
  11736. + *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
  11737. + *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
  11738. + *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
  11739. + *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
  11740. + *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
  11741. + *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
  11742. + *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
  11743. + *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
  11744. +
  11745. +[0-9a-f]* <pabs_sb>:
  11746. + *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
  11747. + *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
  11748. + *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
  11749. + *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
  11750. + *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
  11751. + *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
  11752. + *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
  11753. + *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
  11754. +
  11755. +[0-9a-f]* <pabs_sh>:
  11756. + *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
  11757. + *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
  11758. + *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
  11759. + *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
  11760. + *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
  11761. + *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
  11762. + *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
  11763. + *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
  11764. +
  11765. +[0-9a-f]* <psad>:
  11766. + *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
  11767. + *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
  11768. + *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
  11769. + *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
  11770. + *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
  11771. + *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
  11772. + *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
  11773. + *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
  11774. +
  11775. +[0-9a-f]* <pasr_b>:
  11776. + *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
  11777. + *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
  11778. + *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
  11779. + *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
  11780. + *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
  11781. + *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
  11782. + *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
  11783. + *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
  11784. +
  11785. +[0-9a-f]* <plsl_b>:
  11786. + *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
  11787. + *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
  11788. + *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
  11789. + *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
  11790. + *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
  11791. + *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
  11792. + *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
  11793. + *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
  11794. +
  11795. +[0-9a-f]* <plsr_b>:
  11796. + *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
  11797. + *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
  11798. + *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
  11799. + *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
  11800. + *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
  11801. + *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
  11802. + *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
  11803. + *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
  11804. +
  11805. +[0-9a-f]* <pasr_h>:
  11806. + *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
  11807. + *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
  11808. + *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
  11809. + *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
  11810. + *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
  11811. + *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
  11812. + *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
  11813. + *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
  11814. +
  11815. +[0-9a-f]* <plsl_h>:
  11816. + *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
  11817. + *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
  11818. + *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
  11819. + *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
  11820. + *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
  11821. + *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
  11822. + *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
  11823. + *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
  11824. +
  11825. +[0-9a-f]* <plsr_h>:
  11826. + *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
  11827. + *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
  11828. + *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
  11829. + *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
  11830. + *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
  11831. + *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
  11832. + *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
  11833. + *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
  11834. +
  11835. +[0-9a-f]* <packw_sh>:
  11836. + *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
  11837. + *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
  11838. + *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
  11839. + *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
  11840. + *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
  11841. + *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
  11842. + *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
  11843. + *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
  11844. +
  11845. +[0-9a-f]* <punpckub_h>:
  11846. + *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
  11847. + *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
  11848. + *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
  11849. + *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
  11850. + *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
  11851. + *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
  11852. + *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
  11853. + *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
  11854. +
  11855. +[0-9a-f]* <punpcksb_h>:
  11856. + *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
  11857. + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
  11858. + *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
  11859. + *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
  11860. + *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
  11861. + *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
  11862. + *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
  11863. + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
  11864. +
  11865. +[0-9a-f]* <packsh_ub>:
  11866. + *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
  11867. + *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
  11868. + *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
  11869. + *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
  11870. + *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
  11871. + *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
  11872. + *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
  11873. + *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
  11874. +
  11875. +[0-9a-f]* <packsh_sb>:
  11876. + *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
  11877. + *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
  11878. + *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
  11879. + *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
  11880. + *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
  11881. + *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
  11882. + *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
  11883. + *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
  11884. +
  11885. +[0-9a-f]* <andl>:
  11886. + *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
  11887. + *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
  11888. + *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
  11889. + *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
  11890. + *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
  11891. + *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
  11892. + *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
  11893. + *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
  11894. +
  11895. +[0-9a-f]* <andl_coh>:
  11896. + *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
  11897. + *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
  11898. + *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
  11899. + *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
  11900. + *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
  11901. + *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
  11902. + *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
  11903. + *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
  11904. +
  11905. +[0-9a-f]* <andh>:
  11906. + *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
  11907. + *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
  11908. + *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
  11909. + *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
  11910. + *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
  11911. + *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
  11912. + *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
  11913. + *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
  11914. +
  11915. +[0-9a-f]* <andh_coh>:
  11916. + *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
  11917. + *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
  11918. + *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
  11919. + *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
  11920. + *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
  11921. + *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
  11922. + *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
  11923. + *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
  11924. +
  11925. +[0-9a-f]* <orl>:
  11926. + *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
  11927. + *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
  11928. + *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
  11929. + *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
  11930. + *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
  11931. + *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
  11932. + *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
  11933. + *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
  11934. +
  11935. +[0-9a-f]* <orh>:
  11936. + *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
  11937. + *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
  11938. + *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
  11939. + *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
  11940. + *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
  11941. + *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
  11942. + *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
  11943. + *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
  11944. +
  11945. +[0-9a-f]* <eorl>:
  11946. + *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
  11947. + *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
  11948. + *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
  11949. + *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
  11950. + *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
  11951. + *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
  11952. + *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
  11953. + *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
  11954. +
  11955. +[0-9a-f]* <eorh>:
  11956. + *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
  11957. + *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
  11958. + *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
  11959. + *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
  11960. + *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
  11961. + *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
  11962. + *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
  11963. + *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
  11964. +
  11965. +[0-9a-f]* <mcall>:
  11966. + *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
  11967. + *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
  11968. + *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
  11969. + *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
  11970. + *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
  11971. + *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
  11972. + *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
  11973. + *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
  11974. +
  11975. +[0-9a-f]* <pref>:
  11976. + *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
  11977. + *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
  11978. + *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
  11979. + *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
  11980. + *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
  11981. + *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
  11982. + *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
  11983. + *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
  11984. +
  11985. +[0-9a-f]* <cache>:
  11986. + *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
  11987. + *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
  11988. + *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
  11989. + *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
  11990. + *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
  11991. + *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
  11992. + *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
  11993. + *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
  11994. +
  11995. +[0-9a-f]* <sub4>:
  11996. + *[0-9a-f]*: 20 0f sub pc,0
  11997. + *[0-9a-f]*: 2f fc sub r12,-1
  11998. + *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
  11999. + *[0-9a-f]*: ee 34 ff ff sub r4,1048575
  12000. + *[0-9a-f]*: 20 1e sub lr,1
  12001. + *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
  12002. + *[0-9a-f]*: e6 3e 0a cd sub lr,461517
  12003. + *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
  12004. +
  12005. +[0-9a-f]* <cp3>:
  12006. + *[0-9a-f]*: 58 0f cp.w pc,0
  12007. + *[0-9a-f]*: 5b fc cp.w r12,-1
  12008. + *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
  12009. + *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
  12010. + *[0-9a-f]*: 58 1e cp.w lr,1
  12011. + *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
  12012. + *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
  12013. + *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
  12014. +
  12015. +[0-9a-f]* <mov2>:
  12016. + *[0-9a-f]*: 30 0f mov pc,0
  12017. + *[0-9a-f]*: 3f fc mov r12,-1
  12018. + *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
  12019. + *[0-9a-f]*: ee 74 ff ff mov r4,1048575
  12020. + *[0-9a-f]*: 30 1e mov lr,1
  12021. + *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
  12022. + *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
  12023. + *[0-9a-f]*: ee 65 58 93 mov r5,940179
  12024. +
  12025. +[0-9a-f]* <brc2>:
  12026. + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
  12027. + *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
  12028. + *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
  12029. + *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
  12030. + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
  12031. + *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
  12032. + *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
  12033. + *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
  12034. +
  12035. +[0-9a-f]* <rcall2>:
  12036. + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
  12037. + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
  12038. + *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
  12039. + *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
  12040. + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
  12041. + *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
  12042. + *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
  12043. + *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
  12044. +
  12045. +[0-9a-f]* <sub5>:
  12046. + *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
  12047. + *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
  12048. + *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
  12049. + *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
  12050. + *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
  12051. + *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
  12052. + *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
  12053. + *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
  12054. +
  12055. +[0-9a-f]* <satsub_w2>:
  12056. + *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
  12057. + *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
  12058. + *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
  12059. + *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
  12060. + *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
  12061. + *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
  12062. + *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
  12063. + *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
  12064. +
  12065. +[0-9a-f]* <ld_d4>:
  12066. + *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
  12067. + *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
  12068. + *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
  12069. + *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
  12070. + *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
  12071. + *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
  12072. + *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
  12073. + *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
  12074. +
  12075. +[0-9a-f]* <ld_w4>:
  12076. + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
  12077. + *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
  12078. + *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
  12079. + *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
  12080. + *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
  12081. + *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
  12082. + *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
  12083. + *[0-9a-f]*: d7 03 nop
  12084. +
  12085. +[0-9a-f]* <ld_sh4>:
  12086. + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
  12087. + *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
  12088. + *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
  12089. + *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
  12090. + *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
  12091. + *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
  12092. + *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
  12093. + *[0-9a-f]*: d7 03 nop
  12094. +
  12095. +[0-9a-f]* <ld_uh4>:
  12096. + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
  12097. + *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
  12098. + *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
  12099. + *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
  12100. + *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
  12101. + *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
  12102. + *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
  12103. + *[0-9a-f]*: d7 03 nop
  12104. +
  12105. +[0-9a-f]* <ld_sb1>:
  12106. + *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
  12107. + *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
  12108. + *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
  12109. + *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
  12110. + *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
  12111. + *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
  12112. + *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
  12113. + *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
  12114. +
  12115. +[0-9a-f]* <ld_ub4>:
  12116. + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
  12117. + *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
  12118. + *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
  12119. + *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
  12120. + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
  12121. + *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
  12122. + *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
  12123. + *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
  12124. +
  12125. +[0-9a-f]* <st_d4>:
  12126. + *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
  12127. + *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
  12128. + *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
  12129. + *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
  12130. + *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
  12131. + *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
  12132. + *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
  12133. + *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
  12134. +
  12135. +[0-9a-f]* <st_w4>:
  12136. + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
  12137. + *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
  12138. + *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
  12139. + *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
  12140. + *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
  12141. + *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
  12142. + *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
  12143. + *[0-9a-f]*: d7 03 nop
  12144. +
  12145. +[0-9a-f]* <st_h4>:
  12146. + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
  12147. + *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
  12148. + *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
  12149. + *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
  12150. + *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
  12151. + *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
  12152. + *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
  12153. + *[0-9a-f]*: d7 03 nop
  12154. +
  12155. +[0-9a-f]* <st_b4>:
  12156. + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
  12157. + *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
  12158. + *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
  12159. + *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
  12160. + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
  12161. + *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
  12162. + *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
  12163. + *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
  12164. +
  12165. +[0-9a-f]* <mfsr>:
  12166. + *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
  12167. + *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
  12168. + *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
  12169. + *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
  12170. + *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
  12171. + *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
  12172. + *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
  12173. + *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
  12174. +
  12175. +[0-9a-f]* <mtsr>:
  12176. + *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
  12177. + *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
  12178. + *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
  12179. + *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
  12180. + *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
  12181. + *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
  12182. + *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
  12183. + *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
  12184. +
  12185. +[0-9a-f]* <mfdr>:
  12186. + *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
  12187. + *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
  12188. + *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
  12189. + *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
  12190. + *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
  12191. + *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
  12192. + *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
  12193. + *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
  12194. +
  12195. +[0-9a-f]* <mtdr>:
  12196. + *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
  12197. + *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
  12198. + *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
  12199. + *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
  12200. + *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
  12201. + *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
  12202. + *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
  12203. + *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
  12204. +
  12205. +[0-9a-f]* <sleep>:
  12206. + *[0-9a-f]*: e9 b0 00 00 sleep 0x0
  12207. + *[0-9a-f]*: e9 b0 00 ff sleep 0xff
  12208. + *[0-9a-f]*: e9 b0 00 80 sleep 0x80
  12209. + *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
  12210. + *[0-9a-f]*: e9 b0 00 01 sleep 0x1
  12211. + *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
  12212. + *[0-9a-f]*: e9 b0 00 0f sleep 0xf
  12213. + *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
  12214. +
  12215. +[0-9a-f]* <sync>:
  12216. + *[0-9a-f]*: eb b0 00 00 sync 0x0
  12217. + *[0-9a-f]*: eb b0 00 ff sync 0xff
  12218. + *[0-9a-f]*: eb b0 00 80 sync 0x80
  12219. + *[0-9a-f]*: eb b0 00 7f sync 0x7f
  12220. + *[0-9a-f]*: eb b0 00 01 sync 0x1
  12221. + *[0-9a-f]*: eb b0 00 a6 sync 0xa6
  12222. + *[0-9a-f]*: eb b0 00 e6 sync 0xe6
  12223. + *[0-9a-f]*: eb b0 00 b4 sync 0xb4
  12224. +
  12225. +[0-9a-f]* <bld>:
  12226. + *[0-9a-f]*: ed bf 00 00 bld pc,0x0
  12227. + *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
  12228. + *[0-9a-f]*: ed b5 00 10 bld r5,0x10
  12229. + *[0-9a-f]*: ed b4 00 0f bld r4,0xf
  12230. + *[0-9a-f]*: ed be 00 01 bld lr,0x1
  12231. + *[0-9a-f]*: ed b9 00 0f bld r9,0xf
  12232. + *[0-9a-f]*: ed b0 00 04 bld r0,0x4
  12233. + *[0-9a-f]*: ed be 00 1a bld lr,0x1a
  12234. +
  12235. +[0-9a-f]* <bst>:
  12236. + *[0-9a-f]*: ef bf 00 00 bst pc,0x0
  12237. + *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
  12238. + *[0-9a-f]*: ef b5 00 10 bst r5,0x10
  12239. + *[0-9a-f]*: ef b4 00 0f bst r4,0xf
  12240. + *[0-9a-f]*: ef be 00 01 bst lr,0x1
  12241. + *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
  12242. + *[0-9a-f]*: ef b0 00 03 bst r0,0x3
  12243. + *[0-9a-f]*: ef bd 00 02 bst sp,0x2
  12244. +
  12245. +[0-9a-f]* <sats>:
  12246. + *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
  12247. + *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
  12248. + *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
  12249. + *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
  12250. + *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
  12251. + *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
  12252. + *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
  12253. + *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
  12254. +
  12255. +[0-9a-f]* <satu>:
  12256. + *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
  12257. + *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
  12258. + *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
  12259. + *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
  12260. + *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
  12261. + *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
  12262. + *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
  12263. + *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
  12264. +
  12265. +[0-9a-f]* <satrnds>:
  12266. + *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
  12267. + *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
  12268. + *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
  12269. + *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
  12270. + *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
  12271. + *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
  12272. + *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
  12273. + *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
  12274. +
  12275. +[0-9a-f]* <satrndu>:
  12276. + *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
  12277. + *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
  12278. + *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
  12279. + *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
  12280. + *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
  12281. + *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
  12282. + *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
  12283. + *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
  12284. +
  12285. +[0-9a-f]* <subfc>:
  12286. + *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
  12287. + *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
  12288. + *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
  12289. + *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
  12290. + *[0-9a-f]*: f5 be 01 01 subfne lr,1
  12291. + *[0-9a-f]*: f5 ba 08 08 subfls r10,8
  12292. + *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
  12293. + *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
  12294. +
  12295. +[0-9a-f]* <subc>:
  12296. + *[0-9a-f]*: f7 bf 00 00 subeq pc,0
  12297. + *[0-9a-f]*: f7 bc 0f ff subal r12,-1
  12298. + *[0-9a-f]*: f7 b5 08 80 subls r5,-128
  12299. + *[0-9a-f]*: f7 b4 07 7f subpl r4,127
  12300. + *[0-9a-f]*: f7 be 01 01 subne lr,1
  12301. + *[0-9a-f]*: f7 bc 08 76 subls r12,118
  12302. + *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
  12303. + *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
  12304. +
  12305. +[0-9a-f]* <movc2>:
  12306. + *[0-9a-f]*: f9 bf 00 00 moveq pc,0
  12307. + *[0-9a-f]*: f9 bc 0f ff moval r12,-1
  12308. + *[0-9a-f]*: f9 b5 08 80 movls r5,-128
  12309. + *[0-9a-f]*: f9 b4 07 7f movpl r4,127
  12310. + *[0-9a-f]*: f9 be 01 01 movne lr,1
  12311. + *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
  12312. + *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
  12313. + *[0-9a-f]*: f9 b7 01 91 movne r7,-111
  12314. +
  12315. +[0-9a-f]* <cp_b>:
  12316. + *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
  12317. + *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
  12318. + *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
  12319. + *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
  12320. +
  12321. +[0-9a-f]* <cp_h>:
  12322. + *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
  12323. + *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
  12324. + *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
  12325. + *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
  12326. +
  12327. +[0-9a-f]* <ldm>:
  12328. + *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
  12329. + *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
  12330. + *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
  12331. + *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
  12332. + *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
  12333. + *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
  12334. + *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
  12335. + *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
  12336. +
  12337. +[0-9a-f]* <ldm_pu>:
  12338. + *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
  12339. + *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
  12340. + *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
  12341. + *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
  12342. + *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
  12343. + *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
  12344. + *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
  12345. + *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
  12346. +
  12347. +[0-9a-f]* <ldmts>:
  12348. + *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
  12349. + *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
  12350. + *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
  12351. + *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
  12352. + *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
  12353. + *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
  12354. + *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
  12355. + *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
  12356. +
  12357. +[0-9a-f]* <ldmts_pu>:
  12358. + *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
  12359. + *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
  12360. + *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
  12361. + *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
  12362. + *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
  12363. + *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
  12364. + *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
  12365. + *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
  12366. +
  12367. +[0-9a-f]* <stm>:
  12368. + *[0-9a-f]*: e9 cf 00 80 stm pc,r7
  12369. + *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
  12370. + *[0-9a-f]*: e9 c5 80 00 stm r5,pc
  12371. + *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
  12372. + *[0-9a-f]*: e9 ce 00 01 stm lr,r0
  12373. + *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
  12374. + *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
  12375. + *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
  12376. +
  12377. +[0-9a-f]* <stm_pu>:
  12378. + *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
  12379. + *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
  12380. + *[0-9a-f]*: eb c5 80 00 stm --r5,pc
  12381. + *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
  12382. + *[0-9a-f]*: eb ce 00 01 stm --lr,r0
  12383. + *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
  12384. + *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
  12385. + *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
  12386. +
  12387. +[0-9a-f]* <stmts>:
  12388. + *[0-9a-f]*: ed cf 01 00 stmts pc,r8
  12389. + *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
  12390. + *[0-9a-f]*: ed c5 80 00 stmts r5,pc
  12391. + *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
  12392. + *[0-9a-f]*: ed ce 00 01 stmts lr,r0
  12393. + *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
  12394. + *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
  12395. + *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
  12396. +
  12397. +[0-9a-f]* <stmts_pu>:
  12398. + *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
  12399. + *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
  12400. + *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
  12401. + *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
  12402. + *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
  12403. + *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
  12404. + *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
  12405. + *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
  12406. +
  12407. +[0-9a-f]* <ldins_h>:
  12408. + *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
  12409. + *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
  12410. + *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
  12411. + *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
  12412. + *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
  12413. + *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
  12414. + *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
  12415. + *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
  12416. +
  12417. +[0-9a-f]* <ldins_b>:
  12418. + *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
  12419. + *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
  12420. + *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
  12421. + *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
  12422. + *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
  12423. + *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
  12424. + *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
  12425. + *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
  12426. +
  12427. +[0-9a-f]* <ldswp_sh>:
  12428. + *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
  12429. + *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
  12430. + *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
  12431. + *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
  12432. + *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
  12433. + *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
  12434. + *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
  12435. + *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
  12436. +
  12437. +[0-9a-f]* <ldswp_uh>:
  12438. + *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
  12439. + *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
  12440. + *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
  12441. + *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
  12442. + *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
  12443. + *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
  12444. + *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
  12445. + *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
  12446. +
  12447. +[0-9a-f]* <ldswp_w>:
  12448. + *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
  12449. + *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
  12450. + *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
  12451. + *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
  12452. + *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
  12453. + *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
  12454. + *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
  12455. + *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
  12456. +
  12457. +[0-9a-f]* <stswp_h>:
  12458. + *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
  12459. + *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
  12460. + *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
  12461. + *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
  12462. + *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
  12463. + *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
  12464. + *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
  12465. + *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
  12466. +
  12467. +[0-9a-f]* <stswp_w>:
  12468. + *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
  12469. + *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
  12470. + *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
  12471. + *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
  12472. + *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
  12473. + *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
  12474. + *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
  12475. + *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
  12476. +
  12477. +[0-9a-f]* <and2>:
  12478. + *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
  12479. + *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
  12480. + *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
  12481. + *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
  12482. + *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
  12483. + *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
  12484. + *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
  12485. + *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
  12486. +
  12487. +[0-9a-f]* <and3>:
  12488. + *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
  12489. + *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
  12490. + *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
  12491. + *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
  12492. + *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
  12493. + *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
  12494. + *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
  12495. + *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
  12496. +
  12497. +[0-9a-f]* <or2>:
  12498. + *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
  12499. + *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
  12500. + *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
  12501. + *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
  12502. + *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
  12503. + *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
  12504. + *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
  12505. + *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
  12506. +
  12507. +[0-9a-f]* <or3>:
  12508. + *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
  12509. + *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
  12510. + *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
  12511. + *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
  12512. + *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
  12513. + *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
  12514. + *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
  12515. + *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
  12516. +
  12517. +[0-9a-f]* <eor2>:
  12518. + *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
  12519. + *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
  12520. + *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
  12521. + *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
  12522. + *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
  12523. + *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
  12524. + *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
  12525. + *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
  12526. +
  12527. +[0-9a-f]* <eor3>:
  12528. + *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
  12529. + *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
  12530. + *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
  12531. + *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
  12532. + *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
  12533. + *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
  12534. + *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
  12535. + *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
  12536. +
  12537. +[0-9a-f]* <sthh_w2>:
  12538. + *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
  12539. + *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
  12540. + *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
  12541. + *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
  12542. + *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
  12543. + *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
  12544. + *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
  12545. + *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
  12546. +
  12547. +[0-9a-f]* <sthh_w1>:
  12548. + *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
  12549. + *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
  12550. + *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
  12551. + *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
  12552. + *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
  12553. + *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
  12554. + *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
  12555. + *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
  12556. +
  12557. +[0-9a-f]* <cop>:
  12558. + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
  12559. + *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
  12560. + *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
  12561. + *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
  12562. + *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
  12563. +
  12564. +[0-9a-f]* <ldc_w1>:
  12565. + *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
  12566. + *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
  12567. + *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
  12568. + *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
  12569. + *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
  12570. +
  12571. +[0-9a-f]* <ldc_w2>:
  12572. + *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
  12573. + *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
  12574. + *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
  12575. + *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
  12576. + *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
  12577. +
  12578. +[0-9a-f]* <ldc_w3>:
  12579. + *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
  12580. + *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
  12581. + *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
  12582. + *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
  12583. + *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
  12584. +
  12585. +[0-9a-f]* <ldc_d1>:
  12586. + *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
  12587. + *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
  12588. + *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
  12589. + *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
  12590. + *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
  12591. +
  12592. +[0-9a-f]* <ldc_d2>:
  12593. + *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
  12594. + *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
  12595. + *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
  12596. + *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
  12597. + *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
  12598. +
  12599. +[0-9a-f]* <ldc_d3>:
  12600. + *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
  12601. + *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
  12602. + *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
  12603. + *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
  12604. + *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
  12605. +
  12606. +[0-9a-f]* <stc_w1>:
  12607. + *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
  12608. + *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
  12609. + *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
  12610. + *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
  12611. + *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
  12612. +
  12613. +[0-9a-f]* <stc_w2>:
  12614. + *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
  12615. + *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
  12616. + *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
  12617. + *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
  12618. + *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
  12619. +
  12620. +[0-9a-f]* <stc_w3>:
  12621. + *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
  12622. + *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
  12623. + *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
  12624. + *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
  12625. + *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
  12626. +
  12627. +[0-9a-f]* <stc_d1>:
  12628. + *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
  12629. + *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
  12630. + *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
  12631. + *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
  12632. + *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
  12633. +
  12634. +[0-9a-f]* <stc_d2>:
  12635. + *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
  12636. + *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
  12637. + *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
  12638. + *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
  12639. + *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
  12640. +
  12641. +[0-9a-f]* <stc_d3>:
  12642. + *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
  12643. + *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
  12644. + *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
  12645. + *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
  12646. + *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
  12647. +
  12648. +[0-9a-f]* <ldc0_w>:
  12649. + *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
  12650. + *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
  12651. + *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
  12652. + *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
  12653. + *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
  12654. +
  12655. +[0-9a-f]* <ldc0_d>:
  12656. + *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
  12657. + *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
  12658. + *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
  12659. + *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
  12660. + *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
  12661. +
  12662. +[0-9a-f]* <stc0_w>:
  12663. + *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
  12664. + *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
  12665. + *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
  12666. + *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
  12667. + *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
  12668. +
  12669. +[0-9a-f]* <stc0_d>:
  12670. + *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
  12671. + *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
  12672. + *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
  12673. + *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
  12674. + *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
  12675. +
  12676. +[0-9a-f]* <memc>:
  12677. + *[0-9a-f]*: f6 10 00 00 memc 0,0x0
  12678. + *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
  12679. + *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
  12680. + *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
  12681. +
  12682. +[0-9a-f]* <mems>:
  12683. + *[0-9a-f]*: f8 10 00 00 mems 0,0x0
  12684. + *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
  12685. + *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
  12686. + *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
  12687. +
  12688. +[0-9a-f]* <memt>:
  12689. + *[0-9a-f]*: fa 10 00 00 memt 0,0x0
  12690. + *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
  12691. + *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
  12692. + *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
  12693. +
  12694. +[0-9a-f]* <stcond>:
  12695. + *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
  12696. + *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
  12697. + *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
  12698. + *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
  12699. + *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
  12700. +
  12701. +[0-9a-f]* <ldcm_w>:
  12702. + *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
  12703. + *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
  12704. + *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
  12705. + *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
  12706. + *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
  12707. + *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
  12708. + *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
  12709. + *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
  12710. + *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
  12711. + *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
  12712. +
  12713. +[0-9a-f]* <ldcm_d>:
  12714. + *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
  12715. + *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
  12716. + *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
  12717. + *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
  12718. + *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
  12719. +
  12720. +[0-9a-f]* <stcm_w>:
  12721. + *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
  12722. + *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
  12723. + *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
  12724. + *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
  12725. + *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
  12726. + *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
  12727. + *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
  12728. + *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
  12729. + *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
  12730. + *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
  12731. +
  12732. +[0-9a-f]* <stcm_d>:
  12733. + *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
  12734. + *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
  12735. + *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
  12736. + *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
  12737. + *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
  12738. +
  12739. +[0-9a-f]* <mvcr_w>:
  12740. + *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
  12741. + *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
  12742. + *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
  12743. + *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
  12744. + *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
  12745. + *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
  12746. + *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
  12747. +
  12748. +[0-9a-f]* <mvcr_d>:
  12749. + *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
  12750. + *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
  12751. + *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
  12752. + *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
  12753. + *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
  12754. + *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
  12755. + *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
  12756. +
  12757. +[0-9a-f]* <mvrc_w>:
  12758. + *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
  12759. + *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
  12760. + *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
  12761. + *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
  12762. + *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
  12763. + *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
  12764. + *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
  12765. +
  12766. +[0-9a-f]* <mvrc_d>:
  12767. + *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
  12768. + *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
  12769. + *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
  12770. + *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
  12771. + *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
  12772. + *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
  12773. + *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
  12774. +
  12775. +[0-9a-f]* <bfexts>:
  12776. + *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
  12777. + *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
  12778. + *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
  12779. + *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
  12780. + *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
  12781. + *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
  12782. + *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
  12783. + *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
  12784. +
  12785. +[0-9a-f]* <bfextu>:
  12786. + *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
  12787. + *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
  12788. + *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
  12789. + *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
  12790. + *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
  12791. + *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
  12792. + *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
  12793. + *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
  12794. +
  12795. +[0-9a-f]* <bfins>:
  12796. + *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
  12797. + *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
  12798. + *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
  12799. + *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
  12800. + *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
  12801. + *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
  12802. + *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
  12803. + *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
  12804. +
  12805. +[0-9a-f]* <rsubc>:
  12806. + *[0-9a-f]*: fb bf 00 00 rsubeq pc,0
  12807. + *[0-9a-f]*: fb bc 0f ff rsubal r12,-1
  12808. + *[0-9a-f]*: fb b5 08 80 rsubls r5,-128
  12809. + *[0-9a-f]*: fb b4 07 7f rsubpl r4,127
  12810. + *[0-9a-f]*: fb be 01 01 rsubne lr,1
  12811. + *[0-9a-f]*: fb bc 08 76 rsubls r12,118
  12812. + *[0-9a-f]*: fb be 0d f4 rsubvc lr,-12
  12813. + *[0-9a-f]*: fb b4 06 f3 rsubmi r4,-13
  12814. +
  12815. +[0-9a-f]* <addc>:
  12816. + *[0-9a-f]*: ff df e0 0f addeq pc,pc,pc
  12817. + *[0-9a-f]*: f9 dc ef 0c addal r12,r12,r12
  12818. + *[0-9a-f]*: eb d5 e8 05 addls r5,r5,r5
  12819. + *[0-9a-f]*: e9 d4 e7 04 addpl r4,r4,r4
  12820. + *[0-9a-f]*: fd de e1 0e addne lr,lr,lr
  12821. + *[0-9a-f]*: e5 d1 e8 0a addls r10,r2,r1
  12822. + *[0-9a-f]*: f1 db ed 0c addvc r12,r8,r11
  12823. + *[0-9a-f]*: ef d0 e6 0a addmi r10,r7,r0
  12824. +
  12825. +[0-9a-f]* <subc2>:
  12826. + *[0-9a-f]*: ff df e0 1f subeq pc,pc,pc
  12827. + *[0-9a-f]*: f9 dc ef 1c subal r12,r12,r12
  12828. + *[0-9a-f]*: eb d5 e8 15 subls r5,r5,r5
  12829. + *[0-9a-f]*: e9 d4 e7 14 subpl r4,r4,r4
  12830. + *[0-9a-f]*: fd de e1 1e subne lr,lr,lr
  12831. + *[0-9a-f]*: e5 d1 e8 1a subls r10,r2,r1
  12832. + *[0-9a-f]*: f1 db ed 1c subvc r12,r8,r11
  12833. + *[0-9a-f]*: ef d0 e6 1a submi r10,r7,r0
  12834. +
  12835. +[0-9a-f]* <andc>:
  12836. + *[0-9a-f]*: ff df e0 2f andeq pc,pc,pc
  12837. + *[0-9a-f]*: f9 dc ef 2c andal r12,r12,r12
  12838. + *[0-9a-f]*: eb d5 e8 25 andls r5,r5,r5
  12839. + *[0-9a-f]*: e9 d4 e7 24 andpl r4,r4,r4
  12840. + *[0-9a-f]*: fd de e1 2e andne lr,lr,lr
  12841. + *[0-9a-f]*: e5 d1 e8 2a andls r10,r2,r1
  12842. + *[0-9a-f]*: f1 db ed 2c andvc r12,r8,r11
  12843. + *[0-9a-f]*: ef d0 e6 2a andmi r10,r7,r0
  12844. +
  12845. +[0-9a-f]* <orc>:
  12846. + *[0-9a-f]*: ff df e0 3f oreq pc,pc,pc
  12847. + *[0-9a-f]*: f9 dc ef 3c oral r12,r12,r12
  12848. + *[0-9a-f]*: eb d5 e8 35 orls r5,r5,r5
  12849. + *[0-9a-f]*: e9 d4 e7 34 orpl r4,r4,r4
  12850. + *[0-9a-f]*: fd de e1 3e orne lr,lr,lr
  12851. + *[0-9a-f]*: e5 d1 e8 3a orls r10,r2,r1
  12852. + *[0-9a-f]*: f1 db ed 3c orvc r12,r8,r11
  12853. + *[0-9a-f]*: ef d0 e6 3a ormi r10,r7,r0
  12854. +
  12855. +[0-9a-f]* <eorc>:
  12856. + *[0-9a-f]*: ff df e0 4f eoreq pc,pc,pc
  12857. + *[0-9a-f]*: f9 dc ef 4c eoral r12,r12,r12
  12858. + *[0-9a-f]*: eb d5 e8 45 eorls r5,r5,r5
  12859. + *[0-9a-f]*: e9 d4 e7 44 eorpl r4,r4,r4
  12860. + *[0-9a-f]*: fd de e1 4e eorne lr,lr,lr
  12861. + *[0-9a-f]*: e5 d1 e8 4a eorls r10,r2,r1
  12862. + *[0-9a-f]*: f1 db ed 4c eorvc r12,r8,r11
  12863. + *[0-9a-f]*: ef d0 e6 4a eormi r10,r7,r0
  12864. +
  12865. +[0-9a-f]* <ldcond>:
  12866. + *[0-9a-f]*: ff ff 01 ff ld.weq pc,pc[0x7fc]
  12867. + *[0-9a-f]*: f9 fc f3 ff ld.shal r12,r12[0x3fe]
  12868. + *[0-9a-f]*: eb f5 84 00 ld.shls r5,r5[0x0]
  12869. + *[0-9a-f]*: e9 f4 79 ff ld.ubpl r4,r4[0x1ff]
  12870. + *[0-9a-f]*: fd fe 16 00 ld.sbne lr,lr[0x0]
  12871. + *[0-9a-f]*: e5 fa 80 00 ld.wls r10,r2[0x0]
  12872. + *[0-9a-f]*: f1 fc d3 ff ld.shvc r12,r8[0x3fe]
  12873. + *[0-9a-f]*: ef fa 68 01 ld.ubmi r10,r7[0x1]
  12874. +
  12875. +[0-9a-f]* <stcond2>:
  12876. + *[0-9a-f]*: ff ff 0b ff st.weq pc[0x7fc],pc
  12877. + *[0-9a-f]*: f9 fc fd ff st.hal r12[0x3fe],r12
  12878. + *[0-9a-f]*: eb f5 8c 00 st.hls r5[0x0],r5
  12879. + *[0-9a-f]*: e9 f4 7f ff st.bpl r4[0x1ff],r4
  12880. + *[0-9a-f]*: fd fe 1e 00 st.bne lr[0x0],lr
  12881. + *[0-9a-f]*: e5 fa 8a 00 st.wls r2[0x0],r10
  12882. + *[0-9a-f]*: f1 fc dd ff st.hvc r8[0x3fe],r12
  12883. + *[0-9a-f]*: ef fa 6e 01 st.bmi r7[0x1],r10
  12884. +
  12885. +[0-9a-f]* <movh>:
  12886. + *[0-9a-f]*: fc 1f ff ff movh pc,0xffff
  12887. + *[0-9a-f]*: fc 10 00 00 movh r0,0x0
  12888. + *[0-9a-f]*: fc 15 00 01 movh r5,0x1
  12889. + *[0-9a-f]*: fc 1c 7f ff movh r12,0x7fff
  12890. +
  12891. --- /dev/null
  12892. +++ b/gas/testsuite/gas/avr32/allinsn.exp
  12893. @@ -0,0 +1,5 @@
  12894. +# AVR32 assembler testsuite. -*- Tcl -*-
  12895. +
  12896. +if [istarget avr32-*-*] {
  12897. + run_dump_test "allinsn"
  12898. +}
  12899. --- /dev/null
  12900. +++ b/gas/testsuite/gas/avr32/allinsn.s
  12901. @@ -0,0 +1,3330 @@
  12902. + .data
  12903. +foodata: .word 42
  12904. + .text
  12905. +footext:
  12906. + .text
  12907. + .global ld_d5
  12908. +ld_d5:
  12909. + ld.d lr,pc[pc<<3]
  12910. + ld.d r0,r0[r0<<0]
  12911. + ld.d r6,r5[r5<<2]
  12912. + ld.d r4,r4[r4<<1]
  12913. + ld.d lr,lr[lr<<1]
  12914. + ld.d r10,r3[sp<<2]
  12915. + ld.d r8,r10[r6<<2]
  12916. + ld.d r2,r7[r9<<0]
  12917. + .text
  12918. + .global ld_w5
  12919. +ld_w5:
  12920. + ld.w pc,pc[pc<<0]
  12921. + ld.w r12,r12[r12<<3]
  12922. + ld.w r5,r5[r5<<2]
  12923. + ld.w r4,r4[r4<<1]
  12924. + ld.w lr,lr[lr<<1]
  12925. + ld.w r2,r9[r9<<0]
  12926. + ld.w r11,r2[r6<<0]
  12927. + ld.w r0,r2[sp<<3]
  12928. + .text
  12929. + .global ld_sh5
  12930. +ld_sh5:
  12931. + ld.sh pc,pc[pc<<0]
  12932. + ld.sh r12,r12[r12<<3]
  12933. + ld.sh r5,r5[r5<<2]
  12934. + ld.sh r4,r4[r4<<1]
  12935. + ld.sh lr,lr[lr<<1]
  12936. + ld.sh r11,r0[pc<<2]
  12937. + ld.sh r10,sp[r6<<2]
  12938. + ld.sh r12,r2[r2<<0]
  12939. + .text
  12940. + .global ld_uh5
  12941. +ld_uh5:
  12942. + ld.uh pc,pc[pc<<0]
  12943. + ld.uh r12,r12[r12<<3]
  12944. + ld.uh r5,r5[r5<<2]
  12945. + ld.uh r4,r4[r4<<1]
  12946. + ld.uh lr,lr[lr<<1]
  12947. + ld.uh r8,pc[lr<<3]
  12948. + ld.uh r6,r1[pc<<1]
  12949. + ld.uh r6,lr[sp<<1]
  12950. + .text
  12951. + .global ld_sb2
  12952. +ld_sb2:
  12953. + ld.sb pc,pc[pc<<0]
  12954. + ld.sb r12,r12[r12<<3]
  12955. + ld.sb r5,r5[r5<<2]
  12956. + ld.sb r4,r4[r4<<1]
  12957. + ld.sb lr,lr[lr<<1]
  12958. + ld.sb r9,r1[pc<<3]
  12959. + ld.sb r0,r3[r11<<1]
  12960. + ld.sb r10,r5[r5<<1]
  12961. + .text
  12962. + .global ld_ub5
  12963. +ld_ub5:
  12964. + ld.ub pc,pc[pc<<0]
  12965. + ld.ub r12,r12[r12<<3]
  12966. + ld.ub r5,r5[r5<<2]
  12967. + ld.ub r4,r4[r4<<1]
  12968. + ld.ub lr,lr[lr<<1]
  12969. + ld.ub r6,r12[r7<<3]
  12970. + ld.ub r2,r6[r12<<0]
  12971. + ld.ub r0,r7[r11<<1]
  12972. + .text
  12973. + .global st_d5
  12974. +st_d5:
  12975. + st.d pc[pc<<0],r14
  12976. + st.d r12[r12<<3],r12
  12977. + st.d r5[r5<<2],r6
  12978. + st.d r4[r4<<1],r4
  12979. + st.d lr[lr<<1],lr
  12980. + st.d r1[r9<<1],r4
  12981. + st.d r10[r2<<1],r4
  12982. + st.d r12[r6<<0],lr
  12983. + .text
  12984. + .global st_w5
  12985. +st_w5:
  12986. + st.w pc[pc<<0],pc
  12987. + st.w r12[r12<<3],r12
  12988. + st.w r5[r5<<2],r5
  12989. + st.w r4[r4<<1],r4
  12990. + st.w lr[lr<<1],lr
  12991. + st.w r1[r10<<0],r3
  12992. + st.w r0[r10<<1],r9
  12993. + st.w r4[r5<<3],pc
  12994. + .text
  12995. + .global st_h5
  12996. +st_h5:
  12997. + st.h pc[pc<<0],pc
  12998. + st.h r12[r12<<3],r12
  12999. + st.h r5[r5<<2],r5
  13000. + st.h r4[r4<<1],r4
  13001. + st.h lr[lr<<1],lr
  13002. + st.h r2[r9<<0],r11
  13003. + st.h r5[r1<<2],r12
  13004. + st.h pc[r8<<2],r3
  13005. + .text
  13006. + .global st_b5
  13007. +st_b5:
  13008. + st.b pc[pc<<0],pc
  13009. + st.b r12[r12<<3],r12
  13010. + st.b r5[r5<<2],r5
  13011. + st.b r4[r4<<1],r4
  13012. + st.b lr[lr<<1],lr
  13013. + st.b r1[r8<<1],r6
  13014. + st.b lr[lr<<3],r1
  13015. + st.b r5[r0<<2],pc
  13016. + .text
  13017. + .global divs
  13018. +divs:
  13019. + divs pc,pc,pc
  13020. + divs r12,r12,r12
  13021. + divs r5,r5,r5
  13022. + divs r4,r4,r4
  13023. + divs lr,lr,lr
  13024. + divs r3,pc,pc
  13025. + divs r9,r12,r2
  13026. + divs r7,r4,r1
  13027. + .text
  13028. + .global add1
  13029. +add1:
  13030. + add pc,pc
  13031. + add r12,r12
  13032. + add r5,r5
  13033. + add r4,r4
  13034. + add lr,lr
  13035. + add r12,r9
  13036. + add r6,r3
  13037. + add r10,r12
  13038. + .text
  13039. + .global sub1
  13040. +sub1:
  13041. + sub pc,pc
  13042. + sub r12,r12
  13043. + sub r5,r5
  13044. + sub r4,r4
  13045. + sub lr,lr
  13046. + sub lr,r6
  13047. + sub r0,sp
  13048. + sub r6,r12
  13049. + .text
  13050. + .global rsub1
  13051. +rsub1:
  13052. + rsub pc,pc
  13053. + rsub r12,r12
  13054. + rsub r5,r5
  13055. + rsub r4,r4
  13056. + rsub lr,lr
  13057. + rsub r11,sp
  13058. + rsub r7,r4
  13059. + rsub r9,r1
  13060. + .text
  13061. + .global cp1
  13062. +cp1:
  13063. + cp pc,pc
  13064. + cp r12,r12
  13065. + cp r5,r5
  13066. + cp r4,r4
  13067. + cp lr,lr
  13068. + cp r6,r2
  13069. + cp r0,r9
  13070. + cp r3,sp
  13071. + .text
  13072. + .global or1
  13073. +or1:
  13074. + or pc,pc
  13075. + or r12,r12
  13076. + or r5,r5
  13077. + or r4,r4
  13078. + or lr,lr
  13079. + or r4,r9
  13080. + or r11,r4
  13081. + or r4,r0
  13082. + .text
  13083. + .global eor1
  13084. +eor1:
  13085. + eor pc,pc
  13086. + eor r12,r12
  13087. + eor r5,r5
  13088. + eor r4,r4
  13089. + eor lr,lr
  13090. + eor r12,r11
  13091. + eor r0,r1
  13092. + eor r5,pc
  13093. + .text
  13094. + .global and1
  13095. +and1:
  13096. + and pc,pc
  13097. + and r12,r12
  13098. + and r5,r5
  13099. + and r4,r4
  13100. + and lr,lr
  13101. + and r8,r1
  13102. + and r0,sp
  13103. + and r10,r5
  13104. + .text
  13105. + .global tst
  13106. +tst:
  13107. + tst pc,pc
  13108. + tst r12,r12
  13109. + tst r5,r5
  13110. + tst r4,r4
  13111. + tst lr,lr
  13112. + tst r0,r12
  13113. + tst r10,r6
  13114. + tst sp,r4
  13115. + .text
  13116. + .global andn
  13117. +andn:
  13118. + andn pc,pc
  13119. + andn r12,r12
  13120. + andn r5,r5
  13121. + andn r4,r4
  13122. + andn lr,lr
  13123. + andn r9,r12
  13124. + andn r11,sp
  13125. + andn r12,r5
  13126. + .text
  13127. + .global mov3
  13128. +mov3:
  13129. + mov pc,pc
  13130. + mov r12,r12
  13131. + mov r5,r5
  13132. + mov r4,r4
  13133. + mov lr,lr
  13134. + mov r5,r9
  13135. + mov r11,r11
  13136. + mov r2,lr
  13137. + .text
  13138. + .global st_w1
  13139. +st_w1:
  13140. + st.w pc++,pc
  13141. + st.w r12++,r12
  13142. + st.w r5++,r5
  13143. + st.w r4++,r4
  13144. + st.w lr++,lr
  13145. + st.w r1++,r11
  13146. + st.w sp++,r0
  13147. + st.w sp++,r1
  13148. + .text
  13149. + .global st_h1
  13150. +st_h1:
  13151. + st.h pc++,pc
  13152. + st.h r12++,r12
  13153. + st.h r5++,r5
  13154. + st.h r4++,r4
  13155. + st.h lr++,lr
  13156. + st.h r12++,sp
  13157. + st.h r7++,lr
  13158. + st.h r7++,r4
  13159. + .text
  13160. + .global st_b1
  13161. +st_b1:
  13162. + st.b pc++,pc
  13163. + st.b r12++,r12
  13164. + st.b r5++,r5
  13165. + st.b r4++,r4
  13166. + st.b lr++,lr
  13167. + st.b r9++,sp
  13168. + st.b r1++,sp
  13169. + st.b r0++,r4
  13170. + .text
  13171. + .global st_w2
  13172. +st_w2:
  13173. + st.w --pc,pc
  13174. + st.w --r12,r12
  13175. + st.w --r5,r5
  13176. + st.w --r4,r4
  13177. + st.w --lr,lr
  13178. + st.w --r1,r7
  13179. + st.w --r3,r9
  13180. + st.w --r5,r5
  13181. + .text
  13182. + .global st_h2
  13183. +st_h2:
  13184. + st.h --pc,pc
  13185. + st.h --r12,r12
  13186. + st.h --r5,r5
  13187. + st.h --r4,r4
  13188. + st.h --lr,lr
  13189. + st.h --r5,r7
  13190. + st.h --r8,r8
  13191. + st.h --r7,r2
  13192. + .text
  13193. + .global st_b2
  13194. +st_b2:
  13195. + st.b --pc,pc
  13196. + st.b --r12,r12
  13197. + st.b --r5,r5
  13198. + st.b --r4,r4
  13199. + st.b --lr,lr
  13200. + st.b --sp,sp
  13201. + st.b --sp,r11
  13202. + st.b --r4,r5
  13203. + .text
  13204. + .global ld_w1
  13205. +ld_w1:
  13206. + ld.w pc,pc++
  13207. + ld.w r12,r12++
  13208. + ld.w r5,r5++
  13209. + ld.w r4,r4++
  13210. + ld.w lr,lr++
  13211. + ld.w r3,r7++
  13212. + ld.w r3,lr++
  13213. + ld.w r12,r5++
  13214. + .text
  13215. + .global ld_sh1
  13216. +ld_sh1:
  13217. + ld.sh pc,pc++
  13218. + ld.sh r12,r12++
  13219. + ld.sh r5,r5++
  13220. + ld.sh r4,r4++
  13221. + ld.sh lr,lr++
  13222. + ld.sh r11,r2++
  13223. + ld.sh r2,r8++
  13224. + ld.sh r7,r6++
  13225. + .text
  13226. + .global ld_uh1
  13227. +ld_uh1:
  13228. + ld.uh pc,pc++
  13229. + ld.uh r12,r12++
  13230. + ld.uh r5,r5++
  13231. + ld.uh r4,r4++
  13232. + ld.uh lr,lr++
  13233. + ld.uh r6,r7++
  13234. + ld.uh r10,r11++
  13235. + ld.uh lr,r4++
  13236. + .text
  13237. + .global ld_ub1
  13238. +ld_ub1:
  13239. + ld.ub pc,pc++
  13240. + ld.ub r12,r12++
  13241. + ld.ub r5,r5++
  13242. + ld.ub r4,r4++
  13243. + ld.ub lr,lr++
  13244. + ld.ub r8,lr++
  13245. + ld.ub r12,r12++
  13246. + ld.ub r11,r10++
  13247. + .text
  13248. + .global ld_w2
  13249. +ld_w2:
  13250. + ld.w pc,--pc
  13251. + ld.w r12,--r12
  13252. + ld.w r5,--r5
  13253. + ld.w r4,--r4
  13254. + ld.w lr,--lr
  13255. + ld.w r10,--lr
  13256. + ld.w r12,--r9
  13257. + ld.w r6,--r5
  13258. + .text
  13259. + .global ld_sh2
  13260. +ld_sh2:
  13261. + ld.sh pc,--pc
  13262. + ld.sh r12,--r12
  13263. + ld.sh r5,--r5
  13264. + ld.sh r4,--r4
  13265. + ld.sh lr,--lr
  13266. + ld.sh pc,--r10
  13267. + ld.sh r6,--r3
  13268. + ld.sh r4,--r6
  13269. + .text
  13270. + .global ld_uh2
  13271. +ld_uh2:
  13272. + ld.uh pc,--pc
  13273. + ld.uh r12,--r12
  13274. + ld.uh r5,--r5
  13275. + ld.uh r4,--r4
  13276. + ld.uh lr,--lr
  13277. + ld.uh r3,--r2
  13278. + ld.uh r1,--r0
  13279. + ld.uh r2,--r9
  13280. + .text
  13281. + .global ld_ub2
  13282. +ld_ub2:
  13283. + ld.ub pc,--pc
  13284. + ld.ub r12,--r12
  13285. + ld.ub r5,--r5
  13286. + ld.ub r4,--r4
  13287. + ld.ub lr,--lr
  13288. + ld.ub r1,--r1
  13289. + ld.ub r0,--r6
  13290. + ld.ub r2,--r7
  13291. + .text
  13292. + .global ld_ub3
  13293. +ld_ub3:
  13294. + ld.ub pc,pc[0]
  13295. + ld.ub r12,r12[7]
  13296. + ld.ub r5,r5[4]
  13297. + ld.ub r4,r4[3]
  13298. + ld.ub lr,lr[1]
  13299. + ld.ub r6,r9[6]
  13300. + ld.ub r2,lr[4]
  13301. + ld.ub r1,r8[0]
  13302. + .text
  13303. + .global sub3_sp
  13304. +sub3_sp:
  13305. + sub sp,0
  13306. + sub sp,-4
  13307. + sub sp,-512
  13308. + sub sp,508
  13309. + sub sp,4
  13310. + sub sp,44
  13311. + sub sp,8
  13312. + sub sp,348
  13313. + .text
  13314. + .global sub3
  13315. +sub3:
  13316. + sub pc,0
  13317. + sub r12,-1
  13318. + sub r5,-128
  13319. + sub r4,127
  13320. + sub lr,1
  13321. + sub r6,-41
  13322. + sub r4,37
  13323. + sub r12,56
  13324. + .text
  13325. + .global mov1
  13326. +mov1:
  13327. + mov pc,0
  13328. + mov r12,-1
  13329. + mov r5,-128
  13330. + mov r4,127
  13331. + mov lr,1
  13332. + mov pc,14
  13333. + mov r6,-100
  13334. + mov lr,-122
  13335. + .text
  13336. + .global lddsp
  13337. +lddsp:
  13338. + lddsp pc,sp[0]
  13339. + lddsp r12,sp[508]
  13340. + lddsp r5,sp[256]
  13341. + lddsp r4,sp[252]
  13342. + lddsp lr,sp[4]
  13343. + lddsp lr,sp[256]
  13344. + lddsp r12,sp[20]
  13345. + lddsp r9,sp[472]
  13346. + .text
  13347. + .global lddpc
  13348. +lddpc:
  13349. + lddpc pc,pc[0]
  13350. + lddpc r0,pc[508]
  13351. + lddpc r8,pc[256]
  13352. + lddpc r7,pc[252]
  13353. + lddpc lr,pc[4]
  13354. + lddpc sp,pc[472]
  13355. + lddpc r6,pc[120]
  13356. + lddpc r11,pc[28]
  13357. + .text
  13358. + .global stdsp
  13359. +stdsp:
  13360. + stdsp sp[0],pc
  13361. + stdsp sp[508],r12
  13362. + stdsp sp[256],r5
  13363. + stdsp sp[252],r4
  13364. + stdsp sp[4],lr
  13365. + stdsp sp[304],pc
  13366. + stdsp sp[256],r0
  13367. + stdsp sp[336],r5
  13368. + .text
  13369. + .global cp2
  13370. +cp2:
  13371. + cp pc,0
  13372. + cp r12,-1
  13373. + cp r5,-32
  13374. + cp r4,31
  13375. + cp lr,1
  13376. + cp r8,3
  13377. + cp lr,16
  13378. + cp r7,-26
  13379. + .text
  13380. + .global acr
  13381. +acr:
  13382. + acr pc
  13383. + acr r12
  13384. + acr r5
  13385. + acr r4
  13386. + acr lr
  13387. + acr r2
  13388. + acr r12
  13389. + acr pc
  13390. + .text
  13391. + .global scr
  13392. +scr:
  13393. + scr pc
  13394. + scr r12
  13395. + scr r5
  13396. + scr r4
  13397. + scr lr
  13398. + scr pc
  13399. + scr r6
  13400. + scr r1
  13401. + .text
  13402. + .global cpc0
  13403. +cpc0:
  13404. + cpc pc
  13405. + cpc r12
  13406. + cpc r5
  13407. + cpc r4
  13408. + cpc lr
  13409. + cpc pc
  13410. + cpc r4
  13411. + cpc r9
  13412. + .text
  13413. + .global neg
  13414. +neg:
  13415. + neg pc
  13416. + neg r12
  13417. + neg r5
  13418. + neg r4
  13419. + neg lr
  13420. + neg r7
  13421. + neg r1
  13422. + neg r9
  13423. + .text
  13424. + .global abs
  13425. +abs:
  13426. + abs pc
  13427. + abs r12
  13428. + abs r5
  13429. + abs r4
  13430. + abs lr
  13431. + abs r6
  13432. + abs r6
  13433. + abs r4
  13434. + .text
  13435. + .global castu_b
  13436. +castu_b:
  13437. + castu.b pc
  13438. + castu.b r12
  13439. + castu.b r5
  13440. + castu.b r4
  13441. + castu.b lr
  13442. + castu.b r7
  13443. + castu.b sp
  13444. + castu.b r9
  13445. + .text
  13446. + .global casts_b
  13447. +casts_b:
  13448. + casts.b pc
  13449. + casts.b r12
  13450. + casts.b r5
  13451. + casts.b r4
  13452. + casts.b lr
  13453. + casts.b r11
  13454. + casts.b r1
  13455. + casts.b r10
  13456. + .text
  13457. + .global castu_h
  13458. +castu_h:
  13459. + castu.h pc
  13460. + castu.h r12
  13461. + castu.h r5
  13462. + castu.h r4
  13463. + castu.h lr
  13464. + castu.h r10
  13465. + castu.h r11
  13466. + castu.h r1
  13467. + .text
  13468. + .global casts_h
  13469. +casts_h:
  13470. + casts.h pc
  13471. + casts.h r12
  13472. + casts.h r5
  13473. + casts.h r4
  13474. + casts.h lr
  13475. + casts.h r0
  13476. + casts.h r5
  13477. + casts.h r9
  13478. + .text
  13479. + .global brev
  13480. +brev:
  13481. + brev pc
  13482. + brev r12
  13483. + brev r5
  13484. + brev r4
  13485. + brev lr
  13486. + brev r5
  13487. + brev r10
  13488. + brev r8
  13489. + .text
  13490. + .global swap_h
  13491. +swap_h:
  13492. + swap.h pc
  13493. + swap.h r12
  13494. + swap.h r5
  13495. + swap.h r4
  13496. + swap.h lr
  13497. + swap.h r7
  13498. + swap.h r0
  13499. + swap.h r8
  13500. + .text
  13501. + .global swap_b
  13502. +swap_b:
  13503. + swap.b pc
  13504. + swap.b r12
  13505. + swap.b r5
  13506. + swap.b r4
  13507. + swap.b lr
  13508. + swap.b r10
  13509. + swap.b r12
  13510. + swap.b r1
  13511. + .text
  13512. + .global swap_bh
  13513. +swap_bh:
  13514. + swap.bh pc
  13515. + swap.bh r12
  13516. + swap.bh r5
  13517. + swap.bh r4
  13518. + swap.bh lr
  13519. + swap.bh r9
  13520. + swap.bh r4
  13521. + swap.bh r1
  13522. + .text
  13523. + .global One_s_compliment
  13524. +One_s_compliment:
  13525. + com pc
  13526. + com r12
  13527. + com r5
  13528. + com r4
  13529. + com lr
  13530. + com r2
  13531. + com r2
  13532. + com r7
  13533. + .text
  13534. + .global tnbz
  13535. +tnbz:
  13536. + tnbz pc
  13537. + tnbz r12
  13538. + tnbz r5
  13539. + tnbz r4
  13540. + tnbz lr
  13541. + tnbz r8
  13542. + tnbz r12
  13543. + tnbz pc
  13544. + .text
  13545. + .global rol
  13546. +rol:
  13547. + rol pc
  13548. + rol r12
  13549. + rol r5
  13550. + rol r4
  13551. + rol lr
  13552. + rol r10
  13553. + rol r9
  13554. + rol r5
  13555. + .text
  13556. + .global ror
  13557. +ror:
  13558. + ror pc
  13559. + ror r12
  13560. + ror r5
  13561. + ror r4
  13562. + ror lr
  13563. + ror r8
  13564. + ror r4
  13565. + ror r7
  13566. + .text
  13567. + .global icall
  13568. +icall:
  13569. + icall pc
  13570. + icall r12
  13571. + icall r5
  13572. + icall r4
  13573. + icall lr
  13574. + icall r3
  13575. + icall r1
  13576. + icall r3
  13577. + .text
  13578. + .global mustr
  13579. +mustr:
  13580. + mustr pc
  13581. + mustr r12
  13582. + mustr r5
  13583. + mustr r4
  13584. + mustr lr
  13585. + mustr r1
  13586. + mustr r4
  13587. + mustr r12
  13588. + .text
  13589. + .global musfr
  13590. +musfr:
  13591. + musfr pc
  13592. + musfr r12
  13593. + musfr r5
  13594. + musfr r4
  13595. + musfr lr
  13596. + musfr r11
  13597. + musfr r12
  13598. + musfr r2
  13599. + .text
  13600. + .global ret_cond
  13601. +ret_cond:
  13602. + reteq pc
  13603. + retal r12
  13604. + retls r5
  13605. + retpl r4
  13606. + retne lr
  13607. + retgt r0
  13608. + retgt r12
  13609. + retge r10
  13610. + .text
  13611. + .global sr_cond
  13612. +sr_cond:
  13613. + sreq pc
  13614. + sral r12
  13615. + srls r5
  13616. + srpl r4
  13617. + srne lr
  13618. + srlt r0
  13619. + sral sp
  13620. + srge r9
  13621. + .text
  13622. + .global ld_w3
  13623. +ld_w3:
  13624. + ld.w pc,pc[0]
  13625. + ld.w r12,r12[124]
  13626. + ld.w r5,r5[64]
  13627. + ld.w r4,r4[60]
  13628. + ld.w lr,lr[4]
  13629. + ld.w sp,r2[52]
  13630. + ld.w r9,r1[8]
  13631. + ld.w r5,sp[60]
  13632. + .text
  13633. + .global ld_sh3
  13634. +ld_sh3:
  13635. + ld.sh pc,pc[0]
  13636. + ld.sh r12,r12[14]
  13637. + ld.sh r5,r5[8]
  13638. + ld.sh r4,r4[6]
  13639. + ld.sh lr,lr[2]
  13640. + ld.sh r4,r2[8]
  13641. + ld.sh sp,lr[10]
  13642. + ld.sh r2,r11[2]
  13643. + .text
  13644. + .global ld_uh3
  13645. +ld_uh3:
  13646. + ld.uh pc,pc[0]
  13647. + ld.uh r12,r12[14]
  13648. + ld.uh r5,r5[8]
  13649. + ld.uh r4,r4[6]
  13650. + ld.uh lr,lr[2]
  13651. + ld.uh r10,r0[10]
  13652. + ld.uh r8,r11[8]
  13653. + ld.uh r10,r2[12]
  13654. + .text
  13655. + .global st_w3
  13656. +st_w3:
  13657. + st.w pc[0],pc
  13658. + st.w r12[60],r12
  13659. + st.w r5[32],r5
  13660. + st.w r4[28],r4
  13661. + st.w lr[4],lr
  13662. + st.w r7[44],r11
  13663. + st.w r2[24],r6
  13664. + st.w r4[12],r9
  13665. + .text
  13666. + .global st_h3
  13667. +st_h3:
  13668. + st.h pc[0],pc
  13669. + st.h r12[14],r12
  13670. + st.h r5[8],r5
  13671. + st.h r4[6],r4
  13672. + st.h lr[2],lr
  13673. + st.h lr[10],r12
  13674. + st.h r6[4],r0
  13675. + st.h r5[12],sp
  13676. + .text
  13677. + .global st_b3
  13678. +st_b3:
  13679. + st.b pc[0],pc
  13680. + st.b r12[7],r12
  13681. + st.b r5[4],r5
  13682. + st.b r4[3],r4
  13683. + st.b lr[1],lr
  13684. + st.b r12[6],r9
  13685. + st.b r2[3],lr
  13686. + st.b r1[3],r11
  13687. + .text
  13688. + .global ldd
  13689. +ldd:
  13690. + ld.d r0,pc
  13691. + ld.d r14,r12
  13692. + ld.d r8,r5
  13693. + ld.d r6,r4
  13694. + ld.d r2,lr
  13695. + ld.d r14,r7
  13696. + ld.d r4,r4
  13697. + ld.d r14,pc
  13698. + .text
  13699. + .global ldd_postinc
  13700. +ldd_postinc:
  13701. + ld.d r0,pc++
  13702. + ld.d r14,r12++
  13703. + ld.d r8,r5++
  13704. + ld.d r6,r4++
  13705. + ld.d r2,lr++
  13706. + ld.d r14,r5++
  13707. + ld.d r12,r11++
  13708. + ld.d r2,r12++
  13709. + .text
  13710. + .global ldd_predec
  13711. +ldd_predec:
  13712. + ld.d r0,--pc
  13713. + ld.d r14,--r12
  13714. + ld.d r8,--r5
  13715. + ld.d r6,--r4
  13716. + ld.d r2,--lr
  13717. + ld.d r8,--r0
  13718. + ld.d r10,--pc
  13719. + ld.d r2,--r4
  13720. + .text
  13721. + .global std
  13722. +std:
  13723. + st.d pc,r0
  13724. + st.d r12,r14
  13725. + st.d r5,r8
  13726. + st.d r4,r6
  13727. + st.d lr,r2
  13728. + st.d r0,r12
  13729. + st.d sp,r4
  13730. + st.d r12,r12
  13731. + .text
  13732. + .global std_postinc
  13733. +std_postinc:
  13734. + st.d pc++,r0
  13735. + st.d r12++,r14
  13736. + st.d r5++,r8
  13737. + st.d r4++,r6
  13738. + st.d lr++,r2
  13739. + st.d sp++,r6
  13740. + st.d r10++,r6
  13741. + st.d r7++,r2
  13742. + .text
  13743. + .global std_predec
  13744. +std_predec:
  13745. + st.d --pc,r0
  13746. + st.d --r12,r14
  13747. + st.d --r5,r8
  13748. + st.d --r4,r6
  13749. + st.d --lr,r2
  13750. + st.d --r3,r6
  13751. + st.d --lr,r2
  13752. + st.d --r0,r4
  13753. + .text
  13754. + .global mul
  13755. +mul:
  13756. + mul pc,pc
  13757. + mul r12,r12
  13758. + mul r5,r5
  13759. + mul r4,r4
  13760. + mul lr,lr
  13761. + mul r10,lr
  13762. + mul r0,r8
  13763. + mul r8,r5
  13764. + .text
  13765. + .global asr_imm5
  13766. +asr_imm5:
  13767. + asr pc,0
  13768. + asr r12,31
  13769. + asr r5,16
  13770. + asr r4,15
  13771. + asr lr,1
  13772. + asr r6,23
  13773. + asr r6,18
  13774. + asr r5,8
  13775. + .text
  13776. + .global lsl_imm5
  13777. +lsl_imm5:
  13778. + lsl pc,0
  13779. + lsl r12,31
  13780. + lsl r5,16
  13781. + lsl r4,15
  13782. + lsl lr,1
  13783. + lsl r12,13
  13784. + lsl r6,16
  13785. + lsl r1,25
  13786. + .text
  13787. + .global lsr_imm5
  13788. +lsr_imm5:
  13789. + lsr pc,0
  13790. + lsr r12,31
  13791. + lsr r5,16
  13792. + lsr r4,15
  13793. + lsr lr,1
  13794. + lsr r0,1
  13795. + lsr r8,10
  13796. + lsr r7,26
  13797. + .text
  13798. + .global sbr
  13799. +sbr:
  13800. + sbr pc,0
  13801. + sbr r12,31
  13802. + sbr r5,16
  13803. + sbr r4,15
  13804. + sbr lr,1
  13805. + sbr r8,31
  13806. + sbr r6,22
  13807. + sbr r1,23
  13808. + .text
  13809. + .global cbr
  13810. +cbr:
  13811. + cbr pc,0
  13812. + cbr r12,31
  13813. + cbr r5,16
  13814. + cbr r4,15
  13815. + cbr lr,1
  13816. + cbr r12,10
  13817. + cbr r7,22
  13818. + cbr r8,9
  13819. + .text
  13820. + .global brc1
  13821. +brc1:
  13822. + breq 0
  13823. + brpl -2
  13824. + brge -256
  13825. + brcs 254
  13826. + brne 2
  13827. + brcs 230
  13828. + breq -18
  13829. + breq 12
  13830. + .text
  13831. + .global rjmp
  13832. +rjmp:
  13833. + rjmp 0
  13834. + rjmp -2
  13835. + rjmp -1024
  13836. + rjmp 1022
  13837. + rjmp 2
  13838. + rjmp -962
  13839. + rjmp 14
  13840. + rjmp -516
  13841. + .text
  13842. + .global rcall1
  13843. +rcall1:
  13844. + rcall 0
  13845. + rcall -2
  13846. + rcall -1024
  13847. + rcall 1022
  13848. + rcall 2
  13849. + rcall 216
  13850. + rcall -530
  13851. + rcall -972
  13852. + .text
  13853. + .global acall
  13854. +acall:
  13855. + acall 0
  13856. + acall 1020
  13857. + acall 512
  13858. + acall 508
  13859. + acall 4
  13860. + acall 356
  13861. + acall 304
  13862. + acall 172
  13863. + .text
  13864. + .global scall
  13865. +scall:
  13866. + scall
  13867. + scall
  13868. + scall
  13869. + scall
  13870. + scall
  13871. + scall
  13872. + scall
  13873. + scall
  13874. + .text
  13875. + .global popm
  13876. +popm:
  13877. + /* popm with no argument fails currently */
  13878. + popm pc
  13879. + popm r0-r11,pc,r12=-1
  13880. + popm lr
  13881. + popm r0-r11,pc,r12=1
  13882. + popm r0-r3
  13883. + popm r4-r10,pc
  13884. + popm r0-r3,r11,pc,r12=0
  13885. + popm r0-r7,r10-r12,lr
  13886. + .text
  13887. + .global pushm
  13888. +pushm:
  13889. + pushm pc
  13890. + pushm r0-r12,lr,pc
  13891. + pushm pc
  13892. + pushm r0-r12,lr
  13893. + pushm r0-r3
  13894. + pushm r8-r10,lr,pc
  13895. + pushm r0-r3,r10
  13896. + pushm r8-r9,r12
  13897. + .text
  13898. + .global popm_n
  13899. +popm_n:
  13900. + popm pc
  13901. + popm r0-r11,pc,r12=-1
  13902. + popm lr
  13903. + popm r0-r11,pc,r12=1
  13904. + popm r0-r3
  13905. + popm r4-r10,pc
  13906. + popm r0-r3,r11,pc,r12=0
  13907. + popm r0-r7,r10-r12,lr
  13908. + .text
  13909. + .global pushm_n
  13910. +pushm_n:
  13911. + pushm pc
  13912. + pushm r0-r12,lr,pc
  13913. + pushm pc
  13914. + pushm r0-r12,lr
  13915. + pushm r0-r3
  13916. + pushm r8-r10,lr,pc
  13917. + pushm r0-r3,r10
  13918. + pushm r8-r9,r12
  13919. + .text
  13920. + .global csrfcz
  13921. +csrfcz:
  13922. + csrfcz 0
  13923. + csrfcz 31
  13924. + csrfcz 16
  13925. + csrfcz 15
  13926. + csrfcz 1
  13927. + csrfcz 5
  13928. + csrfcz 13
  13929. + csrfcz 23
  13930. + .text
  13931. + .global ssrf
  13932. +ssrf:
  13933. + ssrf 0
  13934. + ssrf 31
  13935. + ssrf 16
  13936. + ssrf 15
  13937. + ssrf 1
  13938. + ssrf 29
  13939. + ssrf 13
  13940. + ssrf 13
  13941. + .text
  13942. + .global csrf
  13943. +csrf:
  13944. + csrf 0
  13945. + csrf 31
  13946. + csrf 16
  13947. + csrf 15
  13948. + csrf 1
  13949. + csrf 10
  13950. + csrf 15
  13951. + csrf 11
  13952. + .text
  13953. + .global rete
  13954. +rete:
  13955. + rete
  13956. + .text
  13957. + .global rets
  13958. +rets:
  13959. + rets
  13960. + .text
  13961. + .global retd
  13962. +retd:
  13963. + retd
  13964. + .text
  13965. + .global retj
  13966. +retj:
  13967. + retj
  13968. + .text
  13969. + .global tlbr
  13970. +tlbr:
  13971. + tlbr
  13972. + .text
  13973. + .global tlbs
  13974. +tlbs:
  13975. + tlbs
  13976. + .text
  13977. + .global tlbw
  13978. +tlbw:
  13979. + tlbw
  13980. + .text
  13981. + .global breakpoint
  13982. +breakpoint:
  13983. + breakpoint
  13984. + .text
  13985. + .global incjosp
  13986. +incjosp:
  13987. + incjosp 1
  13988. + incjosp 2
  13989. + incjosp 3
  13990. + incjosp 4
  13991. + incjosp -4
  13992. + incjosp -3
  13993. + incjosp -2
  13994. + incjosp -1
  13995. + .text
  13996. + .global nop
  13997. +nop:
  13998. + nop
  13999. + .text
  14000. + .global popjc
  14001. +popjc:
  14002. + popjc
  14003. + .text
  14004. + .global pushjc
  14005. +pushjc:
  14006. + pushjc
  14007. + .text
  14008. + .global add2
  14009. +add2:
  14010. + add pc,pc,pc<<0
  14011. + add r12,r12,r12<<3
  14012. + add r5,r5,r5<<2
  14013. + add r4,r4,r4<<1
  14014. + add lr,lr,lr<<1
  14015. + add r0,r12,r0<<1
  14016. + add r9,r12,r4<<0
  14017. + add r12,r12,r7<<2
  14018. + .text
  14019. + .global sub2
  14020. +sub2:
  14021. + sub pc,pc,pc<<0
  14022. + sub r12,r12,r12<<3
  14023. + sub r5,r5,r5<<2
  14024. + sub r4,r4,r4<<1
  14025. + sub lr,lr,lr<<1
  14026. + sub sp,r3,r4<<0
  14027. + sub r3,r7,r3<<0
  14028. + sub sp,r10,sp<<1
  14029. + .text
  14030. + .global divu
  14031. +divu:
  14032. + divu pc,pc,pc
  14033. + divu r12,r12,r12
  14034. + divu r5,r5,r5
  14035. + divu r4,r4,r4
  14036. + divu lr,lr,lr
  14037. + divu sp,r4,pc
  14038. + divu r5,r5,sp
  14039. + divu r10,sp,r0
  14040. + .text
  14041. + .global addhh_w
  14042. +addhh_w:
  14043. + addhh.w pc,pc:b,pc:b
  14044. + addhh.w r12,r12:t,r12:t
  14045. + addhh.w r5,r5:t,r5:t
  14046. + addhh.w r4,r4:b,r4:b
  14047. + addhh.w lr,lr:t,lr:t
  14048. + addhh.w r0,r0:b,r3:b
  14049. + addhh.w lr,r12:t,r7:b
  14050. + addhh.w r3,r10:t,r2:b
  14051. + .text
  14052. + .global subhh_w
  14053. +subhh_w:
  14054. + subhh.w pc,pc:b,pc:b
  14055. + subhh.w r12,r12:t,r12:t
  14056. + subhh.w r5,r5:t,r5:t
  14057. + subhh.w r4,r4:b,r4:b
  14058. + subhh.w lr,lr:t,lr:t
  14059. + subhh.w r10,r1:t,r7:b
  14060. + subhh.w pc,r10:t,lr:t
  14061. + subhh.w r3,r0:t,r12:b
  14062. + .text
  14063. + .global adc
  14064. +adc:
  14065. + adc pc,pc,pc
  14066. + adc r12,r12,r12
  14067. + adc r5,r5,r5
  14068. + adc r4,r4,r4
  14069. + adc lr,lr,lr
  14070. + adc r4,r0,r7
  14071. + adc sp,r4,r3
  14072. + adc r2,r12,r0
  14073. + .text
  14074. + .global sbc
  14075. +sbc:
  14076. + sbc pc,pc,pc
  14077. + sbc r12,r12,r12
  14078. + sbc r5,r5,r5
  14079. + sbc r4,r4,r4
  14080. + sbc lr,lr,lr
  14081. + sbc r6,r7,r9
  14082. + sbc r0,r8,r5
  14083. + sbc r1,r0,r4
  14084. + .text
  14085. + .global mul_2
  14086. +mul_2:
  14087. + mul pc,pc,pc
  14088. + mul r12,r12,r12
  14089. + mul r5,r5,r5
  14090. + mul r4,r4,r4
  14091. + mul lr,lr,lr
  14092. + mul pc,r0,r0
  14093. + mul r8,pc,lr
  14094. + mul r4,r12,pc
  14095. + .text
  14096. + .global mac
  14097. +mac:
  14098. + mac pc,pc,pc
  14099. + mac r12,r12,r12
  14100. + mac r5,r5,r5
  14101. + mac r4,r4,r4
  14102. + mac lr,lr,lr
  14103. + mac r10,r4,r0
  14104. + mac r7,lr,r0
  14105. + mac r2,r9,r12
  14106. + .text
  14107. + .global mulsd
  14108. +mulsd:
  14109. + muls.d pc,pc,pc
  14110. + muls.d r12,r12,r12
  14111. + muls.d r5,r5,r5
  14112. + muls.d r4,r4,r4
  14113. + muls.d lr,lr,lr
  14114. + muls.d r2,r8,lr
  14115. + muls.d r4,r0,r11
  14116. + muls.d r5,lr,r6
  14117. + .text
  14118. + .global macsd
  14119. +macsd:
  14120. + macs.d r0,pc,pc
  14121. + macs.d r14,r12,r12
  14122. + macs.d r8,r5,r5
  14123. + macs.d r6,r4,r4
  14124. + macs.d r2,lr,lr
  14125. + macs.d r8,r1,r9
  14126. + macs.d r14,r8,r8
  14127. + macs.d r4,r3,r12
  14128. + .text
  14129. + .global mulud
  14130. +mulud:
  14131. + mulu.d r0,pc,pc
  14132. + mulu.d r14,r12,r12
  14133. + mulu.d r8,r5,r5
  14134. + mulu.d r6,r4,r4
  14135. + mulu.d r2,lr,lr
  14136. + mulu.d r6,r5,r0
  14137. + mulu.d r4,r6,r1
  14138. + mulu.d r8,r8,r2
  14139. + .text
  14140. + .global macud
  14141. +macud:
  14142. + macu.d r0,pc,pc
  14143. + macu.d r14,r12,r12
  14144. + macu.d r8,r5,r5
  14145. + macu.d r6,r4,r4
  14146. + macu.d r2,lr,lr
  14147. + macu.d r6,sp,r11
  14148. + macu.d r2,r4,r8
  14149. + macu.d r6,r10,r9
  14150. + .text
  14151. + .global asr_1
  14152. +asr_1:
  14153. + asr pc,pc,pc
  14154. + asr r12,r12,r12
  14155. + asr r5,r5,r5
  14156. + asr r4,r4,r4
  14157. + asr lr,lr,lr
  14158. + asr pc,r6,pc
  14159. + asr r0,r6,r12
  14160. + asr r4,sp,r0
  14161. + .text
  14162. + .global lsl_1
  14163. +lsl_1:
  14164. + lsl pc,pc,pc
  14165. + lsl r12,r12,r12
  14166. + lsl r5,r5,r5
  14167. + lsl r4,r4,r4
  14168. + lsl lr,lr,lr
  14169. + lsl lr,r5,lr
  14170. + lsl r5,pc,r3
  14171. + lsl r1,pc,r9
  14172. + .text
  14173. + .global lsr_1
  14174. +lsr_1:
  14175. + lsr pc,pc,pc
  14176. + lsr r12,r12,r12
  14177. + lsr r5,r5,r5
  14178. + lsr r4,r4,r4
  14179. + lsr lr,lr,lr
  14180. + lsr r2,r4,r1
  14181. + lsr r5,r1,r6
  14182. + lsr sp,r6,r7
  14183. + .text
  14184. + .global xchg
  14185. +xchg:
  14186. + xchg pc,pc,pc
  14187. + xchg r12,r12,r12
  14188. + xchg r5,r5,r5
  14189. + xchg r4,r4,r4
  14190. + xchg lr,lr,lr
  14191. + xchg lr,r4,sp
  14192. + xchg r1,r5,r12
  14193. + xchg lr,r12,r0
  14194. + .text
  14195. + .global max
  14196. +max:
  14197. + max pc,pc,pc
  14198. + max r12,r12,r12
  14199. + max r5,r5,r5
  14200. + max r4,r4,r4
  14201. + max lr,lr,lr
  14202. + max lr,r2,sp
  14203. + max r4,r10,r9
  14204. + max lr,r9,lr
  14205. + .text
  14206. + .global min
  14207. +min:
  14208. + min pc,pc,pc
  14209. + min r12,r12,r12
  14210. + min r5,r5,r5
  14211. + min r4,r4,r4
  14212. + min lr,lr,lr
  14213. + min r9,r7,r8
  14214. + min sp,r5,r5
  14215. + min r4,r1,r4
  14216. + .text
  14217. + .global addabs
  14218. +addabs:
  14219. + addabs pc,pc,pc
  14220. + addabs r12,r12,r12
  14221. + addabs r5,r5,r5
  14222. + addabs r4,r4,r4
  14223. + addabs lr,lr,lr
  14224. + addabs r7,r10,r0
  14225. + addabs r9,r9,r7
  14226. + addabs r2,r8,r12
  14227. + .text
  14228. + .global mulnhh_w
  14229. +mulnhh_w:
  14230. + mulnhh.w pc,pc:b,pc:b
  14231. + mulnhh.w r12,r12:t,r12:t
  14232. + mulnhh.w r5,r5:t,r5:t
  14233. + mulnhh.w r4,r4:b,r4:b
  14234. + mulnhh.w lr,lr:t,lr:t
  14235. + mulnhh.w r11,sp:t,r9:b
  14236. + mulnhh.w sp,r4:b,lr:t
  14237. + mulnhh.w r12,r2:t,r11:b
  14238. + .text
  14239. + .global mulnwh_d
  14240. +mulnwh_d:
  14241. + mulnwh.d r0,pc,pc:b
  14242. + mulnwh.d r14,r12,r12:t
  14243. + mulnwh.d r8,r5,r5:t
  14244. + mulnwh.d r6,r4,r4:b
  14245. + mulnwh.d r2,lr,lr:t
  14246. + mulnwh.d r14,r3,r2:t
  14247. + mulnwh.d r4,r5,r9:b
  14248. + mulnwh.d r12,r4,r4:t
  14249. + .text
  14250. + .global machh_w
  14251. +machh_w:
  14252. + machh.w pc,pc:b,pc:b
  14253. + machh.w r12,r12:t,r12:t
  14254. + machh.w r5,r5:t,r5:t
  14255. + machh.w r4,r4:b,r4:b
  14256. + machh.w lr,lr:t,lr:t
  14257. + machh.w lr,r5:b,r1:t
  14258. + machh.w r9,r6:b,r7:b
  14259. + machh.w r5,lr:t,r12:b
  14260. + .text
  14261. + .global machh_d
  14262. +machh_d:
  14263. + machh.d r0,pc:b,pc:b
  14264. + machh.d r14,r12:t,r12:t
  14265. + machh.d r8,r5:t,r5:t
  14266. + machh.d r6,r4:b,r4:b
  14267. + machh.d r2,lr:t,lr:t
  14268. + machh.d r10,r0:b,r8:b
  14269. + machh.d r14,r4:b,r5:t
  14270. + machh.d r8,r0:b,r4:t
  14271. + .text
  14272. + .global macsathh_w
  14273. +macsathh_w:
  14274. + macsathh.w pc,pc:b,pc:b
  14275. + macsathh.w r12,r12:t,r12:t
  14276. + macsathh.w r5,r5:t,r5:t
  14277. + macsathh.w r4,r4:b,r4:b
  14278. + macsathh.w lr,lr:t,lr:t
  14279. + macsathh.w r7,r7:t,pc:t
  14280. + macsathh.w r4,r2:t,r4:b
  14281. + macsathh.w r4,r8:t,r3:t
  14282. + .text
  14283. + .global mulhh_w
  14284. +mulhh_w:
  14285. + mulhh.w pc,pc:b,pc:b
  14286. + mulhh.w r12,r12:t,r12:t
  14287. + mulhh.w r5,r5:t,r5:t
  14288. + mulhh.w r4,r4:b,r4:b
  14289. + mulhh.w lr,lr:t,lr:t
  14290. + mulhh.w r7,r4:t,r9:b
  14291. + mulhh.w pc,r3:t,r7:t
  14292. + mulhh.w pc,r4:b,r9:t
  14293. + .text
  14294. + .global mulsathh_h
  14295. +mulsathh_h:
  14296. + mulsathh.h pc,pc:b,pc:b
  14297. + mulsathh.h r12,r12:t,r12:t
  14298. + mulsathh.h r5,r5:t,r5:t
  14299. + mulsathh.h r4,r4:b,r4:b
  14300. + mulsathh.h lr,lr:t,lr:t
  14301. + mulsathh.h r3,r1:b,sp:b
  14302. + mulsathh.h r11,lr:t,r11:b
  14303. + mulsathh.h r8,r8:b,r11:t
  14304. + .text
  14305. + .global mulsathh_w
  14306. +mulsathh_w:
  14307. + mulsathh.w pc,pc:b,pc:b
  14308. + mulsathh.w r12,r12:t,r12:t
  14309. + mulsathh.w r5,r5:t,r5:t
  14310. + mulsathh.w r4,r4:b,r4:b
  14311. + mulsathh.w lr,lr:t,lr:t
  14312. + mulsathh.w lr,r11:t,r6:b
  14313. + mulsathh.w r6,r6:b,r7:t
  14314. + mulsathh.w r10,r2:b,r3:b
  14315. + .text
  14316. + .global mulsatrndhh_h
  14317. +mulsatrndhh_h:
  14318. + mulsatrndhh.h pc,pc:b,pc:b
  14319. + mulsatrndhh.h r12,r12:t,r12:t
  14320. + mulsatrndhh.h r5,r5:t,r5:t
  14321. + mulsatrndhh.h r4,r4:b,r4:b
  14322. + mulsatrndhh.h lr,lr:t,lr:t
  14323. + mulsatrndhh.h r11,r6:b,r9:b
  14324. + mulsatrndhh.h r11,r3:b,r8:t
  14325. + mulsatrndhh.h r5,sp:t,r7:t
  14326. + .text
  14327. + .global mulsatrndwh_w
  14328. +mulsatrndwh_w:
  14329. + mulsatrndwh.w pc,pc,pc:b
  14330. + mulsatrndwh.w r12,r12,r12:t
  14331. + mulsatrndwh.w r5,r5,r5:t
  14332. + mulsatrndwh.w r4,r4,r4:b
  14333. + mulsatrndwh.w lr,lr,lr:t
  14334. + mulsatrndwh.w r5,r12,r0:b
  14335. + mulsatrndwh.w r7,r10,pc:b
  14336. + mulsatrndwh.w r10,r8,r5:t
  14337. + .text
  14338. + .global macwh_d
  14339. +macwh_d:
  14340. + macwh.d r0,pc,pc:b
  14341. + macwh.d r14,r12,r12:t
  14342. + macwh.d r8,r5,r5:t
  14343. + macwh.d r6,r4,r4:b
  14344. + macwh.d r2,lr,lr:t
  14345. + macwh.d r4,r10,r12:t
  14346. + macwh.d r4,r7,sp:b
  14347. + macwh.d r14,r9,r11:b
  14348. + .text
  14349. + .global mulwh_d
  14350. +mulwh_d:
  14351. + mulwh.d r0,pc,pc:b
  14352. + mulwh.d r14,r12,r12:t
  14353. + mulwh.d r8,r5,r5:t
  14354. + mulwh.d r6,r4,r4:b
  14355. + mulwh.d r2,lr,lr:t
  14356. + mulwh.d r12,r5,r1:b
  14357. + mulwh.d r0,r1,r3:t
  14358. + mulwh.d r0,r9,r2:b
  14359. + .text
  14360. + .global mulsatwh_w
  14361. +mulsatwh_w:
  14362. + mulsatwh.w pc,pc,pc:b
  14363. + mulsatwh.w r12,r12,r12:t
  14364. + mulsatwh.w r5,r5,r5:t
  14365. + mulsatwh.w r4,r4,r4:b
  14366. + mulsatwh.w lr,lr,lr:t
  14367. + mulsatwh.w r11,pc,r10:t
  14368. + mulsatwh.w sp,r12,r9:t
  14369. + mulsatwh.w r0,r3,r2:t
  14370. + .text
  14371. + .global ldw7
  14372. +ldw7:
  14373. + ld.w pc,pc[pc:b<<2]
  14374. + ld.w r12,r12[r12:t<<2]
  14375. + ld.w r5,r5[r5:u<<2]
  14376. + ld.w r4,r4[r4:l<<2]
  14377. + ld.w lr,lr[lr:l<<2]
  14378. + ld.w r9,r10[r6:l<<2]
  14379. + ld.w r2,r10[r10:b<<2]
  14380. + ld.w r11,r5[pc:b<<2]
  14381. + .text
  14382. + .global satadd_w
  14383. +satadd_w:
  14384. + satadd.w pc,pc,pc
  14385. + satadd.w r12,r12,r12
  14386. + satadd.w r5,r5,r5
  14387. + satadd.w r4,r4,r4
  14388. + satadd.w lr,lr,lr
  14389. + satadd.w r4,r8,r11
  14390. + satadd.w r3,r12,r6
  14391. + satadd.w r3,lr,r9
  14392. + .text
  14393. + .global satsub_w1
  14394. +satsub_w1:
  14395. + satsub.w pc,pc,pc
  14396. + satsub.w r12,r12,r12
  14397. + satsub.w r5,r5,r5
  14398. + satsub.w r4,r4,r4
  14399. + satsub.w lr,lr,lr
  14400. + satsub.w r8,sp,r0
  14401. + satsub.w r9,r8,r4
  14402. + satsub.w pc,lr,r2
  14403. + .text
  14404. + .global satadd_h
  14405. +satadd_h:
  14406. + satadd.h pc,pc,pc
  14407. + satadd.h r12,r12,r12
  14408. + satadd.h r5,r5,r5
  14409. + satadd.h r4,r4,r4
  14410. + satadd.h lr,lr,lr
  14411. + satadd.h r7,r3,r9
  14412. + satadd.h r1,r0,r2
  14413. + satadd.h r1,r4,lr
  14414. + .text
  14415. + .global satsub_h
  14416. +satsub_h:
  14417. + satsub.h pc,pc,pc
  14418. + satsub.h r12,r12,r12
  14419. + satsub.h r5,r5,r5
  14420. + satsub.h r4,r4,r4
  14421. + satsub.h lr,lr,lr
  14422. + satsub.h lr,lr,r3
  14423. + satsub.h r11,r6,r5
  14424. + satsub.h r3,sp,r0
  14425. + .text
  14426. + .global mul3
  14427. +mul3:
  14428. + mul pc,pc,0
  14429. + mul r12,r12,-1
  14430. + mul r5,r5,-128
  14431. + mul r4,r4,127
  14432. + mul lr,lr,1
  14433. + mul r12,r2,-7
  14434. + mul r1,pc,95
  14435. + mul r4,r6,19
  14436. + .text
  14437. + .global rsub2
  14438. +rsub2:
  14439. + rsub pc,pc,0
  14440. + rsub r12,r12,-1
  14441. + rsub r5,r5,-128
  14442. + rsub r4,r4,127
  14443. + rsub lr,lr,1
  14444. + rsub r9,lr,96
  14445. + rsub r11,r1,56
  14446. + rsub r0,r7,-87
  14447. + .text
  14448. + .global clz
  14449. +clz:
  14450. + clz pc,pc
  14451. + clz r12,r12
  14452. + clz r5,r5
  14453. + clz r4,r4
  14454. + clz lr,lr
  14455. + clz r2,r3
  14456. + clz r5,r11
  14457. + clz pc,r3
  14458. + .text
  14459. + .global cpc1
  14460. +cpc1:
  14461. + cpc pc,pc
  14462. + cpc r12,r12
  14463. + cpc r5,r5
  14464. + cpc r4,r4
  14465. + cpc lr,lr
  14466. + cpc pc,r4
  14467. + cpc r5,r9
  14468. + cpc r6,r7
  14469. + .text
  14470. + .global asr3
  14471. +asr3:
  14472. + asr pc,pc,0
  14473. + asr r12,r12,31
  14474. + asr r5,r5,16
  14475. + asr r4,r4,15
  14476. + asr lr,lr,1
  14477. + asr r4,r11,19
  14478. + asr sp,pc,26
  14479. + asr r11,sp,8
  14480. + .text
  14481. + .global lsl3
  14482. +lsl3:
  14483. + lsl pc,pc,0
  14484. + lsl r12,r12,31
  14485. + lsl r5,r5,16
  14486. + lsl r4,r4,15
  14487. + lsl lr,lr,1
  14488. + lsl r8,r10,17
  14489. + lsl r2,lr,3
  14490. + lsl lr,r11,14
  14491. + .text
  14492. + .global lsr3
  14493. +lsr3:
  14494. + lsr pc,pc,0
  14495. + lsr r12,r12,31
  14496. + lsr r5,r5,16
  14497. + lsr r4,r4,15
  14498. + lsr lr,lr,1
  14499. + lsr r4,r3,31
  14500. + lsr pc,r9,14
  14501. + lsr r3,r0,6
  14502. +/* .text
  14503. + .global extract_b
  14504. +extract_b:
  14505. + extract.b pc,pc:b
  14506. + extract.b r12,r12:t
  14507. + extract.b r5,r5:u
  14508. + extract.b r4,r4:l
  14509. + extract.b lr,lr:l
  14510. + extract.b r2,r5:l
  14511. + extract.b r12,r3:l
  14512. + extract.b sp,r3:l
  14513. + .text
  14514. + .global insert_b
  14515. +insert_b:
  14516. + insert.b pc:b,pc
  14517. + insert.b r12:t,r12
  14518. + insert.b r5:u,r5
  14519. + insert.b r4:l,r4
  14520. + insert.b lr:l,lr
  14521. + insert.b r12:u,r3
  14522. + insert.b r10:l,lr
  14523. + insert.b r11:l,r12
  14524. + .text
  14525. + .global extract_h
  14526. +extract_h:
  14527. + extract.h pc,pc:b
  14528. + extract.h r12,r12:t
  14529. + extract.h r5,r5:t
  14530. + extract.h r4,r4:b
  14531. + extract.h lr,lr:t
  14532. + extract.h r11,lr:b
  14533. + extract.h r10,r0:b
  14534. + extract.h r11,r12:b
  14535. + .text
  14536. + .global insert_h
  14537. +insert_h:
  14538. + insert.h pc:b,pc
  14539. + insert.h r12:t,r12
  14540. + insert.h r5:t,r5
  14541. + insert.h r4:b,r4
  14542. + insert.h lr:t,lr
  14543. + insert.h r12:t,r11
  14544. + insert.h r7:b,r6
  14545. + insert.h r1:t,r11 */
  14546. + .text
  14547. + .global movc1
  14548. +movc1:
  14549. + moveq pc,pc
  14550. + moval r12,r12
  14551. + movls r5,r5
  14552. + movpl r4,r4
  14553. + movne lr,lr
  14554. + movne pc,r11
  14555. + movmi r10,r2
  14556. + movls r8,r12
  14557. + .text
  14558. + .global padd_h
  14559. +padd_h:
  14560. + padd.h pc,pc,pc
  14561. + padd.h r12,r12,r12
  14562. + padd.h r5,r5,r5
  14563. + padd.h r4,r4,r4
  14564. + padd.h lr,lr,lr
  14565. + padd.h r8,r2,r7
  14566. + padd.h r0,r0,r3
  14567. + padd.h sp,r11,r6
  14568. + .text
  14569. + .global psub_h
  14570. +psub_h:
  14571. + psub.h pc,pc,pc
  14572. + psub.h r12,r12,r12
  14573. + psub.h r5,r5,r5
  14574. + psub.h r4,r4,r4
  14575. + psub.h lr,lr,lr
  14576. + psub.h lr,r6,r8
  14577. + psub.h r0,r1,sp
  14578. + psub.h pc,pc,sp
  14579. + .text
  14580. + .global paddx_h
  14581. +paddx_h:
  14582. + paddx.h pc,pc,pc
  14583. + paddx.h r12,r12,r12
  14584. + paddx.h r5,r5,r5
  14585. + paddx.h r4,r4,r4
  14586. + paddx.h lr,lr,lr
  14587. + paddx.h pc,pc,r1
  14588. + paddx.h r10,r4,r5
  14589. + paddx.h r5,pc,r2
  14590. + .text
  14591. + .global psubx_h
  14592. +psubx_h:
  14593. + psubx.h pc,pc,pc
  14594. + psubx.h r12,r12,r12
  14595. + psubx.h r5,r5,r5
  14596. + psubx.h r4,r4,r4
  14597. + psubx.h lr,lr,lr
  14598. + psubx.h r5,r12,r5
  14599. + psubx.h r3,r8,r3
  14600. + psubx.h r5,r2,r3
  14601. + .text
  14602. + .global padds_sh
  14603. +padds_sh:
  14604. + padds.sh pc,pc,pc
  14605. + padds.sh r12,r12,r12
  14606. + padds.sh r5,r5,r5
  14607. + padds.sh r4,r4,r4
  14608. + padds.sh lr,lr,lr
  14609. + padds.sh r9,lr,r2
  14610. + padds.sh r6,r8,r1
  14611. + padds.sh r6,r4,r10
  14612. + .text
  14613. + .global psubs_sh
  14614. +psubs_sh:
  14615. + psubs.sh pc,pc,pc
  14616. + psubs.sh r12,r12,r12
  14617. + psubs.sh r5,r5,r5
  14618. + psubs.sh r4,r4,r4
  14619. + psubs.sh lr,lr,lr
  14620. + psubs.sh r6,lr,r11
  14621. + psubs.sh r2,r12,r4
  14622. + psubs.sh r0,r9,r0
  14623. + .text
  14624. + .global paddxs_sh
  14625. +paddxs_sh:
  14626. + paddxs.sh pc,pc,pc
  14627. + paddxs.sh r12,r12,r12
  14628. + paddxs.sh r5,r5,r5
  14629. + paddxs.sh r4,r4,r4
  14630. + paddxs.sh lr,lr,lr
  14631. + paddxs.sh r0,r3,r9
  14632. + paddxs.sh pc,r10,r11
  14633. + paddxs.sh pc,r10,pc
  14634. + .text
  14635. + .global psubxs_sh
  14636. +psubxs_sh:
  14637. + psubxs.sh pc,pc,pc
  14638. + psubxs.sh r12,r12,r12
  14639. + psubxs.sh r5,r5,r5
  14640. + psubxs.sh r4,r4,r4
  14641. + psubxs.sh lr,lr,lr
  14642. + psubxs.sh r7,r4,r4
  14643. + psubxs.sh r7,r8,r3
  14644. + psubxs.sh pc,r6,r5
  14645. + .text
  14646. + .global padds_uh
  14647. +padds_uh:
  14648. + padds.uh pc,pc,pc
  14649. + padds.uh r12,r12,r12
  14650. + padds.uh r5,r5,r5
  14651. + padds.uh r4,r4,r4
  14652. + padds.uh lr,lr,lr
  14653. + padds.uh r12,r11,r7
  14654. + padds.uh r7,r8,lr
  14655. + padds.uh r6,r9,r7
  14656. + .text
  14657. + .global psubs_uh
  14658. +psubs_uh:
  14659. + psubs.uh pc,pc,pc
  14660. + psubs.uh r12,r12,r12
  14661. + psubs.uh r5,r5,r5
  14662. + psubs.uh r4,r4,r4
  14663. + psubs.uh lr,lr,lr
  14664. + psubs.uh lr,r10,r6
  14665. + psubs.uh sp,r2,pc
  14666. + psubs.uh r2,r9,r2
  14667. + .text
  14668. + .global paddxs_uh
  14669. +paddxs_uh:
  14670. + paddxs.uh pc,pc,pc
  14671. + paddxs.uh r12,r12,r12
  14672. + paddxs.uh r5,r5,r5
  14673. + paddxs.uh r4,r4,r4
  14674. + paddxs.uh lr,lr,lr
  14675. + paddxs.uh r7,r9,r5
  14676. + paddxs.uh r9,r1,r4
  14677. + paddxs.uh r5,r2,r3
  14678. + .text
  14679. + .global psubxs_uh
  14680. +psubxs_uh:
  14681. + psubxs.uh pc,pc,pc
  14682. + psubxs.uh r12,r12,r12
  14683. + psubxs.uh r5,r5,r5
  14684. + psubxs.uh r4,r4,r4
  14685. + psubxs.uh lr,lr,lr
  14686. + psubxs.uh sp,r5,sp
  14687. + psubxs.uh sp,r6,r6
  14688. + psubxs.uh r3,r11,r8
  14689. + .text
  14690. + .global paddh_sh
  14691. +paddh_sh:
  14692. + paddh.sh pc,pc,pc
  14693. + paddh.sh r12,r12,r12
  14694. + paddh.sh r5,r5,r5
  14695. + paddh.sh r4,r4,r4
  14696. + paddh.sh lr,lr,lr
  14697. + paddh.sh r12,sp,r3
  14698. + paddh.sh pc,r5,r3
  14699. + paddh.sh r8,r8,sp
  14700. + .text
  14701. + .global psubh_sh
  14702. +psubh_sh:
  14703. + psubh.sh pc,pc,pc
  14704. + psubh.sh r12,r12,r12
  14705. + psubh.sh r5,r5,r5
  14706. + psubh.sh r4,r4,r4
  14707. + psubh.sh lr,lr,lr
  14708. + psubh.sh r1,r5,r8
  14709. + psubh.sh r7,r3,r6
  14710. + psubh.sh r4,r3,r3
  14711. + .text
  14712. + .global paddxh_sh
  14713. +paddxh_sh:
  14714. + paddxh.sh pc,pc,pc
  14715. + paddxh.sh r12,r12,r12
  14716. + paddxh.sh r5,r5,r5
  14717. + paddxh.sh r4,r4,r4
  14718. + paddxh.sh lr,lr,lr
  14719. + paddxh.sh r6,r0,r4
  14720. + paddxh.sh r9,r8,r9
  14721. + paddxh.sh r3,r0,sp
  14722. + .text
  14723. + .global psubxh_sh
  14724. +psubxh_sh:
  14725. + psubxh.sh pc,pc,pc
  14726. + psubxh.sh r12,r12,r12
  14727. + psubxh.sh r5,r5,r5
  14728. + psubxh.sh r4,r4,r4
  14729. + psubxh.sh lr,lr,lr
  14730. + psubxh.sh r4,pc,r12
  14731. + psubxh.sh r8,r4,r6
  14732. + psubxh.sh r12,r9,r4
  14733. + .text
  14734. + .global paddsub_h
  14735. +paddsub_h:
  14736. + paddsub.h pc,pc:b,pc:b
  14737. + paddsub.h r12,r12:t,r12:t
  14738. + paddsub.h r5,r5:t,r5:t
  14739. + paddsub.h r4,r4:b,r4:b
  14740. + paddsub.h lr,lr:t,lr:t
  14741. + paddsub.h r5,r2:t,lr:b
  14742. + paddsub.h r7,r1:b,r8:b
  14743. + paddsub.h r6,r10:t,r5:t
  14744. + .text
  14745. + .global psubadd_h
  14746. +psubadd_h:
  14747. + psubadd.h pc,pc:b,pc:b
  14748. + psubadd.h r12,r12:t,r12:t
  14749. + psubadd.h r5,r5:t,r5:t
  14750. + psubadd.h r4,r4:b,r4:b
  14751. + psubadd.h lr,lr:t,lr:t
  14752. + psubadd.h r9,r11:t,r8:t
  14753. + psubadd.h r10,r7:t,lr:t
  14754. + psubadd.h r6,pc:t,pc:b
  14755. + .text
  14756. + .global paddsubs_sh
  14757. +paddsubs_sh:
  14758. + paddsubs.sh pc,pc:b,pc:b
  14759. + paddsubs.sh r12,r12:t,r12:t
  14760. + paddsubs.sh r5,r5:t,r5:t
  14761. + paddsubs.sh r4,r4:b,r4:b
  14762. + paddsubs.sh lr,lr:t,lr:t
  14763. + paddsubs.sh r0,lr:t,r0:b
  14764. + paddsubs.sh r9,r2:t,r4:t
  14765. + paddsubs.sh r12,r9:t,sp:t
  14766. + .text
  14767. + .global psubadds_sh
  14768. +psubadds_sh:
  14769. + psubadds.sh pc,pc:b,pc:b
  14770. + psubadds.sh r12,r12:t,r12:t
  14771. + psubadds.sh r5,r5:t,r5:t
  14772. + psubadds.sh r4,r4:b,r4:b
  14773. + psubadds.sh lr,lr:t,lr:t
  14774. + psubadds.sh pc,lr:b,r1:t
  14775. + psubadds.sh r11,r3:b,r12:b
  14776. + psubadds.sh r10,r2:t,r8:t
  14777. + .text
  14778. + .global paddsubs_uh
  14779. +paddsubs_uh:
  14780. + paddsubs.uh pc,pc:b,pc:b
  14781. + paddsubs.uh r12,r12:t,r12:t
  14782. + paddsubs.uh r5,r5:t,r5:t
  14783. + paddsubs.uh r4,r4:b,r4:b
  14784. + paddsubs.uh lr,lr:t,lr:t
  14785. + paddsubs.uh r9,r2:b,r3:b
  14786. + paddsubs.uh sp,sp:b,r7:t
  14787. + paddsubs.uh lr,r0:b,r10:t
  14788. + .text
  14789. + .global psubadds_uh
  14790. +psubadds_uh:
  14791. + psubadds.uh pc,pc:b,pc:b
  14792. + psubadds.uh r12,r12:t,r12:t
  14793. + psubadds.uh r5,r5:t,r5:t
  14794. + psubadds.uh r4,r4:b,r4:b
  14795. + psubadds.uh lr,lr:t,lr:t
  14796. + psubadds.uh r12,r9:t,pc:t
  14797. + psubadds.uh r8,r6:b,r8:b
  14798. + psubadds.uh r8,r8:b,r4:b
  14799. + .text
  14800. + .global paddsubh_sh
  14801. +paddsubh_sh:
  14802. + paddsubh.sh pc,pc:b,pc:b
  14803. + paddsubh.sh r12,r12:t,r12:t
  14804. + paddsubh.sh r5,r5:t,r5:t
  14805. + paddsubh.sh r4,r4:b,r4:b
  14806. + paddsubh.sh lr,lr:t,lr:t
  14807. + paddsubh.sh r8,r9:t,r9:b
  14808. + paddsubh.sh r0,sp:t,r1:t
  14809. + paddsubh.sh r3,r1:b,r0:t
  14810. + .text
  14811. + .global psubaddh_sh
  14812. +psubaddh_sh:
  14813. + psubaddh.sh pc,pc:b,pc:b
  14814. + psubaddh.sh r12,r12:t,r12:t
  14815. + psubaddh.sh r5,r5:t,r5:t
  14816. + psubaddh.sh r4,r4:b,r4:b
  14817. + psubaddh.sh lr,lr:t,lr:t
  14818. + psubaddh.sh r7,r3:t,r10:b
  14819. + psubaddh.sh r7,r2:t,r1:t
  14820. + psubaddh.sh r11,r3:b,r6:b
  14821. + .text
  14822. + .global padd_b
  14823. +padd_b:
  14824. + padd.b pc,pc,pc
  14825. + padd.b r12,r12,r12
  14826. + padd.b r5,r5,r5
  14827. + padd.b r4,r4,r4
  14828. + padd.b lr,lr,lr
  14829. + padd.b r2,r6,pc
  14830. + padd.b r8,r9,r12
  14831. + padd.b r5,r12,r3
  14832. + .text
  14833. + .global psub_b
  14834. +psub_b:
  14835. + psub.b pc,pc,pc
  14836. + psub.b r12,r12,r12
  14837. + psub.b r5,r5,r5
  14838. + psub.b r4,r4,r4
  14839. + psub.b lr,lr,lr
  14840. + psub.b r0,r12,pc
  14841. + psub.b r7,sp,r10
  14842. + psub.b r5,sp,r12
  14843. + .text
  14844. + .global padds_sb
  14845. +padds_sb:
  14846. + padds.sb pc,pc,pc
  14847. + padds.sb r12,r12,r12
  14848. + padds.sb r5,r5,r5
  14849. + padds.sb r4,r4,r4
  14850. + padds.sb lr,lr,lr
  14851. + padds.sb sp,r11,r4
  14852. + padds.sb r11,r10,r11
  14853. + padds.sb r5,r12,r6
  14854. + .text
  14855. + .global psubs_sb
  14856. +psubs_sb:
  14857. + psubs.sb pc,pc,pc
  14858. + psubs.sb r12,r12,r12
  14859. + psubs.sb r5,r5,r5
  14860. + psubs.sb r4,r4,r4
  14861. + psubs.sb lr,lr,lr
  14862. + psubs.sb r7,r6,r8
  14863. + psubs.sb r12,r10,r9
  14864. + psubs.sb pc,r11,r0
  14865. + .text
  14866. + .global padds_ub
  14867. +padds_ub:
  14868. + padds.ub pc,pc,pc
  14869. + padds.ub r12,r12,r12
  14870. + padds.ub r5,r5,r5
  14871. + padds.ub r4,r4,r4
  14872. + padds.ub lr,lr,lr
  14873. + padds.ub r3,r2,r11
  14874. + padds.ub r10,r8,r1
  14875. + padds.ub r11,r8,r10
  14876. + .text
  14877. + .global psubs_ub
  14878. +psubs_ub:
  14879. + psubs.ub pc,pc,pc
  14880. + psubs.ub r12,r12,r12
  14881. + psubs.ub r5,r5,r5
  14882. + psubs.ub r4,r4,r4
  14883. + psubs.ub lr,lr,lr
  14884. + psubs.ub r0,r2,r7
  14885. + psubs.ub lr,r5,r3
  14886. + psubs.ub r6,r7,r9
  14887. + .text
  14888. + .global paddh_ub
  14889. +paddh_ub:
  14890. + paddh.ub pc,pc,pc
  14891. + paddh.ub r12,r12,r12
  14892. + paddh.ub r5,r5,r5
  14893. + paddh.ub r4,r4,r4
  14894. + paddh.ub lr,lr,lr
  14895. + paddh.ub lr,r1,r0
  14896. + paddh.ub r2,r7,r7
  14897. + paddh.ub r2,r1,r2
  14898. + .text
  14899. + .global psubh_ub
  14900. +psubh_ub:
  14901. + psubh.ub pc,pc,pc
  14902. + psubh.ub r12,r12,r12
  14903. + psubh.ub r5,r5,r5
  14904. + psubh.ub r4,r4,r4
  14905. + psubh.ub lr,lr,lr
  14906. + psubh.ub r0,r1,r6
  14907. + psubh.ub r4,lr,r10
  14908. + psubh.ub r9,r8,r1
  14909. + .text
  14910. + .global pmax_ub
  14911. +pmax_ub:
  14912. + pmax.ub pc,pc,pc
  14913. + pmax.ub r12,r12,r12
  14914. + pmax.ub r5,r5,r5
  14915. + pmax.ub r4,r4,r4
  14916. + pmax.ub lr,lr,lr
  14917. + pmax.ub pc,r2,r11
  14918. + pmax.ub r12,r1,r1
  14919. + pmax.ub r5,r2,r0
  14920. + .text
  14921. + .global pmax_sh
  14922. +pmax_sh:
  14923. + pmax.sh pc,pc,pc
  14924. + pmax.sh r12,r12,r12
  14925. + pmax.sh r5,r5,r5
  14926. + pmax.sh r4,r4,r4
  14927. + pmax.sh lr,lr,lr
  14928. + pmax.sh lr,r6,r12
  14929. + pmax.sh r2,pc,r5
  14930. + pmax.sh pc,r2,r7
  14931. + .text
  14932. + .global pmin_ub
  14933. +pmin_ub:
  14934. + pmin.ub pc,pc,pc
  14935. + pmin.ub r12,r12,r12
  14936. + pmin.ub r5,r5,r5
  14937. + pmin.ub r4,r4,r4
  14938. + pmin.ub lr,lr,lr
  14939. + pmin.ub r8,r1,r5
  14940. + pmin.ub r1,r8,r3
  14941. + pmin.ub r0,r2,r7
  14942. + .text
  14943. + .global pmin_sh
  14944. +pmin_sh:
  14945. + pmin.sh pc,pc,pc
  14946. + pmin.sh r12,r12,r12
  14947. + pmin.sh r5,r5,r5
  14948. + pmin.sh r4,r4,r4
  14949. + pmin.sh lr,lr,lr
  14950. + pmin.sh r8,r4,r10
  14951. + pmin.sh lr,r10,r12
  14952. + pmin.sh r2,r6,r2
  14953. + .text
  14954. + .global pavg_ub
  14955. +pavg_ub:
  14956. + pavg.ub pc,pc,pc
  14957. + pavg.ub r12,r12,r12
  14958. + pavg.ub r5,r5,r5
  14959. + pavg.ub r4,r4,r4
  14960. + pavg.ub lr,lr,lr
  14961. + pavg.ub r0,r1,r6
  14962. + pavg.ub r8,r3,r6
  14963. + pavg.ub pc,r12,r10
  14964. + .text
  14965. + .global pavg_sh
  14966. +pavg_sh:
  14967. + pavg.sh pc,pc,pc
  14968. + pavg.sh r12,r12,r12
  14969. + pavg.sh r5,r5,r5
  14970. + pavg.sh r4,r4,r4
  14971. + pavg.sh lr,lr,lr
  14972. + pavg.sh r9,pc,sp
  14973. + pavg.sh pc,sp,r3
  14974. + pavg.sh r6,r1,r9
  14975. + .text
  14976. + .global pabs_sb
  14977. +pabs_sb:
  14978. + pabs.sb pc,pc
  14979. + pabs.sb r12,r12
  14980. + pabs.sb r5,r5
  14981. + pabs.sb r4,r4
  14982. + pabs.sb lr,lr
  14983. + pabs.sb r11,r6
  14984. + pabs.sb lr,r9
  14985. + pabs.sb sp,r7
  14986. + .text
  14987. + .global pabs_sh
  14988. +pabs_sh:
  14989. + pabs.sh pc,pc
  14990. + pabs.sh r12,r12
  14991. + pabs.sh r5,r5
  14992. + pabs.sh r4,r4
  14993. + pabs.sh lr,lr
  14994. + pabs.sh pc,r3
  14995. + pabs.sh r5,r7
  14996. + pabs.sh r4,r0
  14997. + .text
  14998. + .global psad
  14999. +psad:
  15000. + psad pc,pc,pc
  15001. + psad r12,r12,r12
  15002. + psad r5,r5,r5
  15003. + psad r4,r4,r4
  15004. + psad lr,lr,lr
  15005. + psad r9,r11,r11
  15006. + psad lr,r4,sp
  15007. + psad lr,r4,r5
  15008. + .text
  15009. + .global pasr_b
  15010. +pasr_b:
  15011. + pasr.b pc,pc,0
  15012. + pasr.b r12,r12,7
  15013. + pasr.b r5,r5,4
  15014. + pasr.b r4,r4,3
  15015. + pasr.b lr,lr,1
  15016. + pasr.b pc,r7,1
  15017. + pasr.b sp,lr,6
  15018. + pasr.b sp,r3,2
  15019. + .text
  15020. + .global plsl_b
  15021. +plsl_b:
  15022. + plsl.b pc,pc,0
  15023. + plsl.b r12,r12,7
  15024. + plsl.b r5,r5,4
  15025. + plsl.b r4,r4,3
  15026. + plsl.b lr,lr,1
  15027. + plsl.b r2,r11,4
  15028. + plsl.b r8,r5,7
  15029. + plsl.b pc,r0,2
  15030. + .text
  15031. + .global plsr_b
  15032. +plsr_b:
  15033. + plsr.b pc,pc,0
  15034. + plsr.b r12,r12,7
  15035. + plsr.b r5,r5,4
  15036. + plsr.b r4,r4,3
  15037. + plsr.b lr,lr,1
  15038. + plsr.b r12,r1,2
  15039. + plsr.b r6,pc,7
  15040. + plsr.b r12,r11,2
  15041. + .text
  15042. + .global pasr_h
  15043. +pasr_h:
  15044. + pasr.h pc,pc,0
  15045. + pasr.h r12,r12,15
  15046. + pasr.h r5,r5,8
  15047. + pasr.h r4,r4,7
  15048. + pasr.h lr,lr,1
  15049. + pasr.h r0,r11,10
  15050. + pasr.h r4,r6,8
  15051. + pasr.h r6,r2,4
  15052. + .text
  15053. + .global plsl_h
  15054. +plsl_h:
  15055. + plsl.h pc,pc,0
  15056. + plsl.h r12,r12,15
  15057. + plsl.h r5,r5,8
  15058. + plsl.h r4,r4,7
  15059. + plsl.h lr,lr,1
  15060. + plsl.h r5,r10,9
  15061. + plsl.h sp,lr,8
  15062. + plsl.h r0,lr,7
  15063. + .text
  15064. + .global plsr_h
  15065. +plsr_h:
  15066. + plsr.h pc,pc,0
  15067. + plsr.h r12,r12,15
  15068. + plsr.h r5,r5,8
  15069. + plsr.h r4,r4,7
  15070. + plsr.h lr,lr,1
  15071. + plsr.h r11,r0,15
  15072. + plsr.h lr,r3,3
  15073. + plsr.h r8,lr,10
  15074. + .text
  15075. + .global packw_sh
  15076. +packw_sh:
  15077. + packw.sh pc,pc,pc
  15078. + packw.sh r12,r12,r12
  15079. + packw.sh r5,r5,r5
  15080. + packw.sh r4,r4,r4
  15081. + packw.sh lr,lr,lr
  15082. + packw.sh sp,r11,r10
  15083. + packw.sh r8,r2,r12
  15084. + packw.sh r8,r1,r5
  15085. + .text
  15086. + .global punpckub_h
  15087. +punpckub_h:
  15088. + punpckub.h pc,pc:b
  15089. + punpckub.h r12,r12:t
  15090. + punpckub.h r5,r5:t
  15091. + punpckub.h r4,r4:b
  15092. + punpckub.h lr,lr:t
  15093. + punpckub.h r6,r1:t
  15094. + punpckub.h lr,r5:b
  15095. + punpckub.h lr,r2:t
  15096. + .text
  15097. + .global punpcksb_h
  15098. +punpcksb_h:
  15099. + punpcksb.h pc,pc:b
  15100. + punpcksb.h r12,r12:t
  15101. + punpcksb.h r5,r5:t
  15102. + punpcksb.h r4,r4:b
  15103. + punpcksb.h lr,lr:t
  15104. + punpcksb.h r4,r7:t
  15105. + punpcksb.h r6,lr:b
  15106. + punpcksb.h r12,r12:t
  15107. + .text
  15108. + .global packsh_ub
  15109. +packsh_ub:
  15110. + packsh.ub pc,pc,pc
  15111. + packsh.ub r12,r12,r12
  15112. + packsh.ub r5,r5,r5
  15113. + packsh.ub r4,r4,r4
  15114. + packsh.ub lr,lr,lr
  15115. + packsh.ub r3,r6,r3
  15116. + packsh.ub r8,r0,r3
  15117. + packsh.ub r9,r3,lr
  15118. + .text
  15119. + .global packsh_sb
  15120. +packsh_sb:
  15121. + packsh.sb pc,pc,pc
  15122. + packsh.sb r12,r12,r12
  15123. + packsh.sb r5,r5,r5
  15124. + packsh.sb r4,r4,r4
  15125. + packsh.sb lr,lr,lr
  15126. + packsh.sb r6,r8,r1
  15127. + packsh.sb lr,r9,r8
  15128. + packsh.sb sp,r6,r6
  15129. + .text
  15130. + .global andl
  15131. +andl:
  15132. + andl pc,0
  15133. + andl r12,65535
  15134. + andl r5,32768
  15135. + andl r4,32767
  15136. + andl lr,1
  15137. + andl pc,23128
  15138. + andl r8,47262
  15139. + andl r7,13719
  15140. + .text
  15141. + .global andl_coh
  15142. +andl_coh:
  15143. + andl pc,0,COH
  15144. + andl r12,65535,COH
  15145. + andl r5,32768,COH
  15146. + andl r4,32767,COH
  15147. + andl lr,1,COH
  15148. + andl r6,22753,COH
  15149. + andl r0,40653,COH
  15150. + andl r4,48580,COH
  15151. + .text
  15152. + .global andh
  15153. +andh:
  15154. + andh pc,0
  15155. + andh r12,65535
  15156. + andh r5,32768
  15157. + andh r4,32767
  15158. + andh lr,1
  15159. + andh r12,52312
  15160. + andh r3,8675
  15161. + andh r2,42987
  15162. + .text
  15163. + .global andh_coh
  15164. +andh_coh:
  15165. + andh pc,0,COH
  15166. + andh r12,65535,COH
  15167. + andh r5,32768,COH
  15168. + andh r4,32767,COH
  15169. + andh lr,1,COH
  15170. + andh r11,34317,COH
  15171. + andh r8,52982,COH
  15172. + andh r10,23683,COH
  15173. + .text
  15174. + .global orl
  15175. +orl:
  15176. + orl pc,0
  15177. + orl r12,65535
  15178. + orl r5,32768
  15179. + orl r4,32767
  15180. + orl lr,1
  15181. + orl sp,16766
  15182. + orl r0,21181
  15183. + orl pc,44103
  15184. + .text
  15185. + .global orh
  15186. +orh:
  15187. + orh pc,0
  15188. + orh r12,65535
  15189. + orh r5,32768
  15190. + orh r4,32767
  15191. + orh lr,1
  15192. + orh r8,28285
  15193. + orh r12,30492
  15194. + orh r1,59930
  15195. + .text
  15196. + .global eorl
  15197. +eorl:
  15198. + eorl pc,0
  15199. + eorl r12,65535
  15200. + eorl r5,32768
  15201. + eorl r4,32767
  15202. + eorl lr,1
  15203. + eorl r4,51129
  15204. + eorl r6,64477
  15205. + eorl r1,20913
  15206. + .text
  15207. + .global eorh
  15208. +eorh:
  15209. + eorh pc,0
  15210. + eorh r12,65535
  15211. + eorh r5,32768
  15212. + eorh r4,32767
  15213. + eorh lr,1
  15214. + eorh r0,11732
  15215. + eorh r10,38069
  15216. + eorh r9,57130
  15217. + .text
  15218. + .global mcall
  15219. +mcall:
  15220. + mcall pc[0]
  15221. + mcall r12[-4]
  15222. + mcall r5[-131072]
  15223. + mcall r4[131068]
  15224. + mcall lr[4]
  15225. + mcall sp[61180]
  15226. + mcall r4[-35000]
  15227. + mcall r0[9924]
  15228. + .text
  15229. + .global pref
  15230. +pref:
  15231. + pref pc[0]
  15232. + pref r12[-1]
  15233. + pref r5[-32768]
  15234. + pref r4[32767]
  15235. + pref lr[1]
  15236. + pref r7[7748]
  15237. + pref r7[-7699]
  15238. + pref r2[-25892]
  15239. + .text
  15240. + .global cache
  15241. +cache:
  15242. + cache pc[0],0
  15243. + cache r12[-1],31
  15244. + cache r5[-1024],16
  15245. + cache r4[1023],15
  15246. + cache lr[1],1
  15247. + cache r3[-964],17
  15248. + cache r4[-375],22
  15249. + cache r3[-888],17
  15250. + .text
  15251. + .global sub4
  15252. +sub4:
  15253. + sub pc,0
  15254. + sub r12,-1
  15255. + sub r5,-1048576
  15256. + sub r4,1048575
  15257. + sub lr,1
  15258. + sub r2,-619156
  15259. + sub lr,461517
  15260. + sub r8,-185051
  15261. + .text
  15262. + .global cp3
  15263. +cp3:
  15264. + cp pc,0
  15265. + cp r12,-1
  15266. + cp r5,-1048576
  15267. + cp r4,1048575
  15268. + cp lr,1
  15269. + cp r1,124078
  15270. + cp r0,-378909
  15271. + cp r4,-243180
  15272. + .text
  15273. + .global mov2
  15274. +mov2:
  15275. + mov pc,0
  15276. + mov r12,-1
  15277. + mov r5,-1048576
  15278. + mov r4,1048575
  15279. + mov lr,1
  15280. + mov r5,-317021
  15281. + mov sp,-749164
  15282. + mov r5,940179
  15283. + .text
  15284. + .global brc2
  15285. +brc2:
  15286. + breq 0
  15287. + bral -2
  15288. + brls -2097152
  15289. + brpl 2097150
  15290. + brne 2
  15291. + brhi -1796966
  15292. + brqs 1321368
  15293. + brls -577434
  15294. + .text
  15295. + .global rcall2
  15296. +rcall2:
  15297. + rcall 0
  15298. + rcall -2
  15299. + rcall -2097152
  15300. + rcall 2097150
  15301. + rcall 2
  15302. + rcall 496820
  15303. + rcall 1085092
  15304. + rcall -1058
  15305. + .text
  15306. + .global sub5
  15307. +sub5:
  15308. + sub pc,pc,0
  15309. + sub r12,r12,-1
  15310. + sub r5,r5,-32768
  15311. + sub r4,r4,32767
  15312. + sub lr,lr,1
  15313. + sub pc,pc,-12744
  15314. + sub r7,r7,-27365
  15315. + sub r2,r9,-17358
  15316. + .text
  15317. + .global satsub_w2
  15318. +satsub_w2:
  15319. + satsub.w pc,pc,0
  15320. + satsub.w r12,r12,-1
  15321. + satsub.w r5,r5,-32768
  15322. + satsub.w r4,r4,32767
  15323. + satsub.w lr,lr,1
  15324. + satsub.w r2,lr,-2007
  15325. + satsub.w r7,r12,-784
  15326. + satsub.w r4,r7,23180
  15327. + .text
  15328. + .global ld_d4
  15329. +ld_d4:
  15330. + ld.d r0,pc[0]
  15331. + ld.d r14,r12[-1]
  15332. + ld.d r8,r5[-32768]
  15333. + ld.d r6,r4[32767]
  15334. + ld.d r2,lr[1]
  15335. + ld.d r14,r11[14784]
  15336. + ld.d r6,r9[-18905]
  15337. + ld.d r2,r3[-6355]
  15338. + .text
  15339. + .global ld_w4
  15340. +ld_w4:
  15341. + ld.w pc,pc[0]
  15342. + ld.w r12,r12[-1]
  15343. + ld.w r5,r5[-32768]
  15344. + ld.w r4,r4[32767]
  15345. + ld.w lr,lr[1]
  15346. + ld.w r0,r12[-22133]
  15347. + ld.w sp,pc[-20521]
  15348. + /* ld.w r3,r5[29035] */
  15349. + nop
  15350. + .text
  15351. + .global ld_sh4
  15352. +ld_sh4:
  15353. + ld.sh pc,pc[0]
  15354. + ld.sh r12,r12[-1]
  15355. + ld.sh r5,r5[-32768]
  15356. + ld.sh r4,r4[32767]
  15357. + ld.sh lr,lr[1]
  15358. + ld.sh r6,r10[30930]
  15359. + ld.sh r6,r10[21973]
  15360. + /* ld.sh r11,r10[-2058] */
  15361. + nop
  15362. + .text
  15363. + .global ld_uh4
  15364. +ld_uh4:
  15365. + ld.uh pc,pc[0]
  15366. + ld.uh r12,r12[-1]
  15367. + ld.uh r5,r5[-32768]
  15368. + ld.uh r4,r4[32767]
  15369. + ld.uh lr,lr[1]
  15370. + ld.uh r1,r9[-13354]
  15371. + ld.uh lr,r11[21337]
  15372. + /* ld.uh r2,lr[-25370] */
  15373. + nop
  15374. + .text
  15375. + .global ld_sb1
  15376. +ld_sb1:
  15377. + ld.sb pc,pc[0]
  15378. + ld.sb r12,r12[-1]
  15379. + ld.sb r5,r5[-32768]
  15380. + ld.sb r4,r4[32767]
  15381. + ld.sb lr,lr[1]
  15382. + ld.sb r7,sp[-28663]
  15383. + ld.sb r2,r1[-5879]
  15384. + ld.sb r12,r3[18734]
  15385. + .text
  15386. + .global ld_ub4
  15387. +ld_ub4:
  15388. + ld.ub pc,pc[0]
  15389. + ld.ub r12,r12[-1]
  15390. + ld.ub r5,r5[-32768]
  15391. + ld.ub r4,r4[32767]
  15392. + ld.ub lr,lr[1]
  15393. + ld.ub pc,r4[8277]
  15394. + ld.ub r5,r12[19172]
  15395. + ld.ub r10,lr[26347]
  15396. + .text
  15397. + .global st_d4
  15398. +st_d4:
  15399. + st.d pc[0],r0
  15400. + st.d r12[-1],r14
  15401. + st.d r5[-32768],r8
  15402. + st.d r4[32767],r6
  15403. + st.d lr[1],r2
  15404. + st.d r5[13200],r10
  15405. + st.d r5[9352],r10
  15406. + st.d r5[32373],r4
  15407. + .text
  15408. + .global st_w4
  15409. +st_w4:
  15410. + st.w pc[0],pc
  15411. + st.w r12[-1],r12
  15412. + st.w r5[-32768],r5
  15413. + st.w r4[32767],r4
  15414. + st.w lr[1],lr
  15415. + st.w sp[6136],r7
  15416. + st.w r6[27087],r12
  15417. + /* st.w r3[20143],r7 */
  15418. + nop
  15419. + .text
  15420. + .global st_h4
  15421. +st_h4:
  15422. + st.h pc[0],pc
  15423. + st.h r12[-1],r12
  15424. + st.h r5[-32768],r5
  15425. + st.h r4[32767],r4
  15426. + st.h lr[1],lr
  15427. + st.h r4[-9962],r7
  15428. + st.h r9[-16250],r3
  15429. + /* st.h r8[-28810],r7 */
  15430. + nop
  15431. + .text
  15432. + .global st_b4
  15433. +st_b4:
  15434. + st.b pc[0],pc
  15435. + st.b r12[-1],r12
  15436. + st.b r5[-32768],r5
  15437. + st.b r4[32767],r4
  15438. + st.b lr[1],lr
  15439. + st.b r12[30102],r6
  15440. + st.b r5[28977],r1
  15441. + st.b r0[5470],r1
  15442. + .text
  15443. + .global mfsr
  15444. +mfsr:
  15445. + mfsr pc,0
  15446. + mfsr r12,1020
  15447. + mfsr r5,512
  15448. + mfsr r4,508
  15449. + mfsr lr,4
  15450. + mfsr r2,696
  15451. + mfsr r4,260
  15452. + mfsr r10,1016
  15453. + .text
  15454. + .global mtsr
  15455. +mtsr:
  15456. + mtsr 0,pc
  15457. + mtsr 1020,r12
  15458. + mtsr 512,r5
  15459. + mtsr 508,r4
  15460. + mtsr 4,lr
  15461. + mtsr 224,r10
  15462. + mtsr 836,r12
  15463. + mtsr 304,r9
  15464. + .text
  15465. + .global mfdr
  15466. +mfdr:
  15467. + mfdr pc,0
  15468. + mfdr r12,1020
  15469. + mfdr r5,512
  15470. + mfdr r4,508
  15471. + mfdr lr,4
  15472. + mfdr r6,932
  15473. + mfdr r5,36
  15474. + mfdr r9,300
  15475. + .text
  15476. + .global mtdr
  15477. +mtdr:
  15478. + mtdr 0,pc
  15479. + mtdr 1020,r12
  15480. + mtdr 512,r5
  15481. + mtdr 508,r4
  15482. + mtdr 4,lr
  15483. + mtdr 180,r8
  15484. + mtdr 720,r10
  15485. + mtdr 408,lr
  15486. + .text
  15487. + .global sleep
  15488. +sleep:
  15489. + sleep 0
  15490. + sleep 255
  15491. + sleep 128
  15492. + sleep 127
  15493. + sleep 1
  15494. + sleep 254
  15495. + sleep 15
  15496. + sleep 43
  15497. + .text
  15498. + .global sync
  15499. +sync:
  15500. + sync 0
  15501. + sync 255
  15502. + sync 128
  15503. + sync 127
  15504. + sync 1
  15505. + sync 166
  15506. + sync 230
  15507. + sync 180
  15508. + .text
  15509. + .global bld
  15510. +bld:
  15511. + bld pc,0
  15512. + bld r12,31
  15513. + bld r5,16
  15514. + bld r4,15
  15515. + bld lr,1
  15516. + bld r9,15
  15517. + bld r0,4
  15518. + bld lr,26
  15519. + .text
  15520. + .global bst
  15521. +bst:
  15522. + bst pc,0
  15523. + bst r12,31
  15524. + bst r5,16
  15525. + bst r4,15
  15526. + bst lr,1
  15527. + bst r10,28
  15528. + bst r0,3
  15529. + bst sp,2
  15530. + .text
  15531. + .global sats
  15532. +sats:
  15533. + sats pc>>0,0
  15534. + sats r12>>31,31
  15535. + sats r5>>16,16
  15536. + sats r4>>15,15
  15537. + sats lr>>1,1
  15538. + sats r10>>3,19
  15539. + sats r10>>2,26
  15540. + sats r1>>20,1
  15541. + .text
  15542. + .global satu
  15543. +satu:
  15544. + satu pc>>0,0
  15545. + satu r12>>31,31
  15546. + satu r5>>16,16
  15547. + satu r4>>15,15
  15548. + satu lr>>1,1
  15549. + satu pc>>5,7
  15550. + satu r7>>5,5
  15551. + satu r2>>26,19
  15552. + .text
  15553. + .global satrnds
  15554. +satrnds:
  15555. + satrnds pc>>0,0
  15556. + satrnds r12>>31,31
  15557. + satrnds r5>>16,16
  15558. + satrnds r4>>15,15
  15559. + satrnds lr>>1,1
  15560. + satrnds r0>>21,19
  15561. + satrnds sp>>0,2
  15562. + satrnds r7>>6,29
  15563. + .text
  15564. + .global satrndu
  15565. +satrndu:
  15566. + satrndu pc>>0,0
  15567. + satrndu r12>>31,31
  15568. + satrndu r5>>16,16
  15569. + satrndu r4>>15,15
  15570. + satrndu lr>>1,1
  15571. + satrndu r12>>0,26
  15572. + satrndu r4>>21,3
  15573. + satrndu r10>>3,16
  15574. + .text
  15575. + .global subfc
  15576. +subfc:
  15577. + subfeq pc,0
  15578. + subfal r12,-1
  15579. + subfls r5,-128
  15580. + subfpl r4,127
  15581. + subfne lr,1
  15582. + subfls r10,8
  15583. + subfvc r11,99
  15584. + subfvs r2,73
  15585. + .text
  15586. + .global subc
  15587. +subc:
  15588. + subeq pc,0
  15589. + subal r12,-1
  15590. + subls r5,-128
  15591. + subpl r4,127
  15592. + subne lr,1
  15593. + subls r12,118
  15594. + subvc lr,-12
  15595. + submi r4,-13
  15596. + .text
  15597. + .global movc2
  15598. +movc2:
  15599. + moveq pc,0
  15600. + moval r12,-1
  15601. + movls r5,-128
  15602. + movpl r4,127
  15603. + movne lr,1
  15604. + movlt r3,-122
  15605. + movvc r8,2
  15606. + movne r7,-111
  15607. + .text
  15608. + .global cp_b
  15609. +cp_b:
  15610. + cp.b pc,r0
  15611. + cp.b r0,pc
  15612. + cp.b r7,r8
  15613. + cp.b r8,r7
  15614. + .text
  15615. + .global cp_h
  15616. +cp_h:
  15617. + cp.h pc,r0
  15618. + cp.h r0,pc
  15619. + cp.h r7,r8
  15620. + cp.h r8,r7
  15621. + .text
  15622. + .global ldm
  15623. +ldm:
  15624. + ldm pc,r1-r6
  15625. + ldm r12,r0-r15
  15626. + ldm r5,r15
  15627. + ldm r4,r0-r14
  15628. + ldm lr,r0
  15629. + ldm r9,r1,r5,r14
  15630. + ldm r11,r2-r3,r5-r8,r15
  15631. + ldm r6,r0,r3,r9,r13,r15
  15632. + .text
  15633. + .global ldm_pu
  15634. +ldm_pu:
  15635. + ldm pc++,r6-r9
  15636. + ldm r12++,r0-r15
  15637. + ldm r5++,r15
  15638. + ldm r4++,r0-r14
  15639. + ldm lr++,r0
  15640. + ldm r12++,r3-r5,r8,r10,r12,r14-r15
  15641. + ldm r10++,r2,r4-r6,r14-r15
  15642. + ldm r6++,r1,r3-r4,r9-r14
  15643. + .text
  15644. + .global ldmts
  15645. +ldmts:
  15646. + ldmts pc,r7-r8
  15647. + ldmts r12,r0-r15
  15648. + ldmts r5,r15
  15649. + ldmts r4,r0-r14
  15650. + ldmts lr,r0
  15651. + ldmts r0,r1-r2,r11-r12
  15652. + ldmts lr,r0-r2,r4,r7-r8,r13-r14
  15653. + ldmts r12,r0-r1,r3-r5,r9,r14-r15
  15654. + .text
  15655. + .global ldmts_pu
  15656. +ldmts_pu:
  15657. + ldmts pc++,r9
  15658. + ldmts r12++,r0-r15
  15659. + ldmts r5++,r15
  15660. + ldmts r4++,r0-r14
  15661. + ldmts lr++,r0
  15662. + ldmts sp++,r0,r2-r5,r7,r9,r11
  15663. + ldmts r5++,r1-r3,r7,r10-r11
  15664. + ldmts r8++,r2-r4,r7-r8,r13,r15
  15665. + .text
  15666. + .global stm
  15667. +stm:
  15668. + stm pc,r7
  15669. + stm r12,r0-r15
  15670. + stm r5,r15
  15671. + stm r4,r0-r14
  15672. + stm lr,r0
  15673. + stm sp,r2-r3,r5,r8,r11,r14
  15674. + stm r4,r0-r4,r6,r10-r11,r14
  15675. + stm r9,r1,r5,r9,r12-r15
  15676. + .text
  15677. + .global stm_pu
  15678. +stm_pu:
  15679. + stm --pc,r4-r6
  15680. + stm --r12,r0-r15
  15681. + stm --r5,r15
  15682. + stm --r4,r0-r14
  15683. + stm --lr,r0
  15684. + stm --r11,r0,r4-r9,r11-r15
  15685. + stm --r11,r0,r3,r9-r10,r12,r14
  15686. + stm --r6,r2,r8-r9,r13-r14
  15687. + .text
  15688. + .global stmts
  15689. +stmts:
  15690. + stmts pc,r8
  15691. + stmts r12,r0-r15
  15692. + stmts r5,r15
  15693. + stmts r4,r0-r14
  15694. + stmts lr,r0
  15695. + stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
  15696. + stmts r3,r0,r6-r8,r10-r12
  15697. + stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
  15698. + .text
  15699. + .global stmts_pu
  15700. +stmts_pu:
  15701. + stmts --pc,r6-r8
  15702. + stmts --r12,r0-r15
  15703. + stmts --r5,r15
  15704. + stmts --r4,r0-r14
  15705. + stmts --lr,r0
  15706. + stmts --r2,r0,r3-r4,r9-r10,r12-r13
  15707. + stmts --r3,r0-r1,r14-r15
  15708. + stmts --r0,r0,r2-r6,r10,r14
  15709. + .text
  15710. + .global ldins_h
  15711. +ldins_h:
  15712. + ldins.h pc:b,pc[0]
  15713. + ldins.h r12:t,r12[-2]
  15714. + ldins.h r5:t,r5[-4096]
  15715. + ldins.h r4:b,r4[4094]
  15716. + ldins.h lr:t,lr[2]
  15717. + ldins.h r0:t,lr[1930]
  15718. + ldins.h r3:b,r7[-534]
  15719. + ldins.h r2:b,r12[-2252]
  15720. + .text
  15721. + .global ldins_b
  15722. +ldins_b:
  15723. + ldins.b pc:b,pc[0]
  15724. + ldins.b r12:t,r12[-1]
  15725. + ldins.b r5:u,r5[-2048]
  15726. + ldins.b r4:l,r4[2047]
  15727. + ldins.b lr:l,lr[1]
  15728. + ldins.b r6:t,r4[-662]
  15729. + ldins.b r5:b,r1[-151]
  15730. + ldins.b r10:t,r11[-1923]
  15731. + .text
  15732. + .global ldswp_sh
  15733. +ldswp_sh:
  15734. + ldswp.sh pc,pc[0]
  15735. + ldswp.sh r12,r12[-2]
  15736. + ldswp.sh r5,r5[-4096]
  15737. + ldswp.sh r4,r4[4094]
  15738. + ldswp.sh lr,lr[2]
  15739. + ldswp.sh r9,r10[3848]
  15740. + ldswp.sh r4,r12[-2040]
  15741. + ldswp.sh r10,r2[3088]
  15742. + .text
  15743. + .global ldswp_uh
  15744. +ldswp_uh:
  15745. + ldswp.uh pc,pc[0]
  15746. + ldswp.uh r12,r12[-2]
  15747. + ldswp.uh r5,r5[-4096]
  15748. + ldswp.uh r4,r4[4094]
  15749. + ldswp.uh lr,lr[2]
  15750. + ldswp.uh r4,r9[3724]
  15751. + ldswp.uh lr,sp[-1672]
  15752. + ldswp.uh r8,r12[-3846]
  15753. + .text
  15754. + .global ldswp_w
  15755. +ldswp_w:
  15756. + ldswp.w pc,pc[0]
  15757. + ldswp.w r12,r12[-4]
  15758. + ldswp.w r5,r5[-8192]
  15759. + ldswp.w r4,r4[8188]
  15760. + ldswp.w lr,lr[4]
  15761. + ldswp.w sp,r7[1860]
  15762. + ldswp.w pc,r5[-3324]
  15763. + ldswp.w r12,r10[-3296]
  15764. + .text
  15765. + .global stswp_h
  15766. +stswp_h:
  15767. + stswp.h pc[0],pc
  15768. + stswp.h r12[-2],r12
  15769. + stswp.h r5[-4096],r5
  15770. + stswp.h r4[4094],r4
  15771. + stswp.h lr[2],lr
  15772. + stswp.h r7[64],r10
  15773. + stswp.h r10[3024],r2
  15774. + stswp.h r0[-2328],r10
  15775. + .text
  15776. + .global stswp_w
  15777. +stswp_w:
  15778. + stswp.w pc[0],pc
  15779. + stswp.w r12[-4],r12
  15780. + stswp.w r5[-8192],r5
  15781. + stswp.w r4[8188],r4
  15782. + stswp.w lr[4],lr
  15783. + stswp.w pc[1156],r8
  15784. + stswp.w sp[7992],r10
  15785. + stswp.w r8[-1172],r5
  15786. + .text
  15787. + .global and2
  15788. +and2:
  15789. + and pc,pc,pc<<0
  15790. + and r12,r12,r12<<31
  15791. + and r5,r5,r5<<16
  15792. + and r4,r4,r4<<15
  15793. + and lr,lr,lr<<1
  15794. + and r10,r2,r1<<1
  15795. + and r12,r8,r11<<27
  15796. + and r10,r7,r0<<3
  15797. + .text
  15798. + .global and3
  15799. +and3:
  15800. + and pc,pc,pc>>0
  15801. + and r12,r12,r12>>31
  15802. + and r5,r5,r5>>16
  15803. + and r4,r4,r4>>15
  15804. + and lr,lr,lr>>1
  15805. + and r12,r8,r7>>17
  15806. + and pc,r4,r9>>20
  15807. + and r10,r9,r10>>12
  15808. + .text
  15809. + .global or2
  15810. +or2:
  15811. + or pc,pc,pc<<0
  15812. + or r12,r12,r12<<31
  15813. + or r5,r5,r5<<16
  15814. + or r4,r4,r4<<15
  15815. + or lr,lr,lr<<1
  15816. + or r8,sp,r11<<29
  15817. + or pc,r9,r2<<28
  15818. + or r5,r1,r2<<3
  15819. + .text
  15820. + .global or3
  15821. +or3:
  15822. + or pc,pc,pc>>0
  15823. + or r12,r12,r12>>31
  15824. + or r5,r5,r5>>16
  15825. + or r4,r4,r4>>15
  15826. + or lr,lr,lr>>1
  15827. + or r1,sp,sp>>2
  15828. + or r0,r1,r1>>29
  15829. + or r4,r12,r8>>8
  15830. + .text
  15831. + .global eor2
  15832. +eor2:
  15833. + eor pc,pc,pc<<0
  15834. + eor r12,r12,r12<<31
  15835. + eor r5,r5,r5<<16
  15836. + eor r4,r4,r4<<15
  15837. + eor lr,lr,lr<<1
  15838. + eor r10,r9,r4<<11
  15839. + eor r4,r0,r1<<31
  15840. + eor r6,r2,r12<<13
  15841. + .text
  15842. + .global eor3
  15843. +eor3:
  15844. + eor pc,pc,pc>>0
  15845. + eor r12,r12,r12>>31
  15846. + eor r5,r5,r5>>16
  15847. + eor r4,r4,r4>>15
  15848. + eor lr,lr,lr>>1
  15849. + eor r5,r5,r5>>22
  15850. + eor r10,r1,lr>>3
  15851. + eor r7,lr,sp>>26
  15852. + .text
  15853. + .global sthh_w2
  15854. +sthh_w2:
  15855. + sthh.w pc[pc<<0],pc:b,pc:b
  15856. + sthh.w r12[r12<<3],r12:t,r12:t
  15857. + sthh.w r5[r5<<2],r5:t,r5:t
  15858. + sthh.w r4[r4<<1],r4:b,r4:b
  15859. + sthh.w lr[lr<<1],lr:t,lr:t
  15860. + sthh.w sp[r6<<3],r1:t,r12:t
  15861. + sthh.w r6[r6<<0],r9:t,r9:t
  15862. + sthh.w r10[r3<<0],r0:b,r11:t
  15863. + .text
  15864. + .global sthh_w1
  15865. +sthh_w1:
  15866. + sthh.w pc[0],pc:b,pc:b
  15867. + sthh.w r12[1020],r12:t,r12:t
  15868. + sthh.w r5[512],r5:t,r5:t
  15869. + sthh.w r4[508],r4:b,r4:b
  15870. + sthh.w lr[4],lr:t,lr:t
  15871. + sthh.w r4[404],r9:t,r0:b
  15872. + sthh.w r8[348],r2:t,r10:b
  15873. + sthh.w sp[172],r9:b,r2:b
  15874. + .text
  15875. + .global cop
  15876. +cop:
  15877. + cop cp0,cr0,cr0,cr0,0
  15878. + cop cp7,cr15,cr15,cr15,0x7f
  15879. + cop cp3,cr5,cr5,cr5,0x31
  15880. + cop cp2,cr4,cr4,cr4,0x30
  15881. + cop cp5,cr8,cr3,cr7,0x5a
  15882. + .text
  15883. + .global ldc_w1
  15884. +ldc_w1:
  15885. + ldc.w cp0,cr0,r0[0]
  15886. + ldc.w cp7,cr15,pc[255<<2]
  15887. + ldc.w cp3,cr5,r5[128<<2]
  15888. + ldc.w cp2,cr4,r4[127<<2]
  15889. + ldc.w cp4,cr9,r13[36<<2]
  15890. + .text
  15891. + .global ldc_w2
  15892. +ldc_w2:
  15893. + ldc.w cp0,cr0,--r0
  15894. + ldc.w cp7,cr15,--pc
  15895. + ldc.w cp3,cr5,--r5
  15896. + ldc.w cp2,cr4,--r4
  15897. + ldc.w cp4,cr9,--r13
  15898. + .text
  15899. + .global ldc_w3
  15900. +ldc_w3:
  15901. + ldc.w cp0,cr0,r0[r0]
  15902. + ldc.w cp7,cr15,pc[pc<<3]
  15903. + ldc.w cp3,cr5,r5[r4<<2]
  15904. + ldc.w cp2,cr4,r4[r3<<1]
  15905. + ldc.w cp4,cr9,r13[r12<<0]
  15906. + .text
  15907. + .global ldc_d1
  15908. +ldc_d1:
  15909. + ldc.d cp0,cr0,r0[0]
  15910. + ldc.d cp7,cr14,pc[255<<2]
  15911. + ldc.d cp3,cr6,r5[128<<2]
  15912. + ldc.d cp2,cr4,r4[127<<2]
  15913. + ldc.d cp4,cr8,r13[36<<2]
  15914. + .text
  15915. + .global ldc_d2
  15916. +ldc_d2:
  15917. + ldc.d cp0,cr0,--r0
  15918. + ldc.d cp7,cr14,--pc
  15919. + ldc.d cp3,cr6,--r5
  15920. + ldc.d cp2,cr4,--r4
  15921. + ldc.d cp4,cr8,--r13
  15922. + .text
  15923. + .global ldc_d3
  15924. +ldc_d3:
  15925. + ldc.d cp0,cr0,r0[r0]
  15926. + ldc.d cp7,cr14,pc[pc<<3]
  15927. + ldc.d cp3,cr6,r5[r4<<2]
  15928. + ldc.d cp2,cr4,r4[r3<<1]
  15929. + ldc.d cp4,cr8,r13[r12<<0]
  15930. + .text
  15931. + .global stc_w1
  15932. +stc_w1:
  15933. + stc.w cp0,r0[0],cr0
  15934. + stc.w cp7,pc[255<<2],cr15
  15935. + stc.w cp3,r5[128<<2],cr5
  15936. + stc.w cp2,r4[127<<2],cr4
  15937. + stc.w cp4,r13[36<<2],cr9
  15938. + .text
  15939. + .global stc_w2
  15940. +stc_w2:
  15941. + stc.w cp0,r0++,cr0
  15942. + stc.w cp7,pc++,cr15
  15943. + stc.w cp3,r5++,cr5
  15944. + stc.w cp2,r4++,cr4
  15945. + stc.w cp4,r13++,cr9
  15946. + .text
  15947. + .global stc_w3
  15948. +stc_w3:
  15949. + stc.w cp0,r0[r0],cr0
  15950. + stc.w cp7,pc[pc<<3],cr15
  15951. + stc.w cp3,r5[r4<<2],cr5
  15952. + stc.w cp2,r4[r3<<1],cr4
  15953. + stc.w cp4,r13[r12<<0],cr9
  15954. + .text
  15955. + .global stc_d1
  15956. +stc_d1:
  15957. + stc.d cp0,r0[0],cr0
  15958. + stc.d cp7,pc[255<<2],cr14
  15959. + stc.d cp3,r5[128<<2],cr6
  15960. + stc.d cp2,r4[127<<2],cr4
  15961. + stc.d cp4,r13[36<<2],cr8
  15962. + .text
  15963. + .global stc_d2
  15964. +stc_d2:
  15965. + stc.d cp0,r0++,cr0
  15966. + stc.d cp7,pc++,cr14
  15967. + stc.d cp3,r5++,cr6
  15968. + stc.d cp2,r4++,cr4
  15969. + stc.d cp4,r13++,cr8
  15970. + .text
  15971. + .global stc_d3
  15972. +stc_d3:
  15973. + stc.d cp0,r0[r0],cr0
  15974. + stc.d cp7,pc[pc<<3],cr14
  15975. + stc.d cp3,r5[r4<<2],cr6
  15976. + stc.d cp2,r4[r3<<1],cr4
  15977. + stc.d cp4,r13[r12<<0],cr8
  15978. + .text
  15979. + .global ldc0_w
  15980. +ldc0_w:
  15981. + ldc0.w cr0,r0[0]
  15982. + ldc0.w cr15,pc[4095<<2]
  15983. + ldc0.w cr5,r5[2048<<2]
  15984. + ldc0.w cr4,r4[2047<<2]
  15985. + ldc0.w cr9,r13[147<<2]
  15986. + .text
  15987. + .global ldc0_d
  15988. +ldc0_d:
  15989. + ldc0.d cr0,r0[0]
  15990. + ldc0.d cr14,pc[4095<<2]
  15991. + ldc0.d cr6,r5[2048<<2]
  15992. + ldc0.d cr4,r4[2047<<2]
  15993. + ldc0.d cr8,r13[147<<2]
  15994. + .text
  15995. + .global stc0_w
  15996. +stc0_w:
  15997. + stc0.w r0[0],cr0
  15998. + stc0.w pc[4095<<2],cr15
  15999. + stc0.w r5[2048<<2],cr5
  16000. + stc0.w r4[2047<<2],cr4
  16001. + stc0.w r13[147<<2],cr9
  16002. + .text
  16003. + .global stc0_d
  16004. +stc0_d:
  16005. + stc0.d r0[0],cr0
  16006. + stc0.d pc[4095<<2],cr14
  16007. + stc0.d r5[2048<<2],cr6
  16008. + stc0.d r4[2047<<2],cr4
  16009. + stc0.d r13[147<<2],cr8
  16010. + .text
  16011. + .global memc
  16012. +memc:
  16013. + memc 0, 0
  16014. + memc -4, 31
  16015. + memc -65536, 16
  16016. + memc 65532, 15
  16017. + .text
  16018. + .global mems
  16019. +mems:
  16020. + mems 0, 0
  16021. + mems -4, 31
  16022. + mems -65536, 16
  16023. + mems 65532, 15
  16024. + .text
  16025. + .global memt
  16026. +memt:
  16027. + memt 0, 0
  16028. + memt -4, 31
  16029. + memt -65536, 16
  16030. + memt 65532, 15
  16031. +
  16032. + .text
  16033. + .global stcond
  16034. +stcond:
  16035. + stcond r0[0], r0
  16036. + stcond pc[-1], pc
  16037. + stcond r8[-32768], r7
  16038. + stcond r7[32767], r8
  16039. + stcond r5[0x1234], r10
  16040. +
  16041. +ldcm_w:
  16042. + ldcm.w cp0,pc,cr0-cr7
  16043. + ldcm.w cp7,r0,cr0
  16044. + ldcm.w cp4,r4++,cr0-cr6
  16045. + ldcm.w cp3,r7,cr7
  16046. + ldcm.w cp1,r12++,cr1,cr4-cr6
  16047. + ldcm.w cp0,pc,cr8-cr15
  16048. + ldcm.w cp7,r0,cr8
  16049. + ldcm.w cp4,r4++,cr8-cr14
  16050. + ldcm.w cp3,r7,cr15
  16051. + ldcm.w cp1,r12++,cr9,cr12-cr14
  16052. +
  16053. +ldcm_d:
  16054. + ldcm.d cp0,pc,cr0-cr15
  16055. + ldcm.d cp7,r0,cr0,cr1
  16056. + ldcm.d cp4,r4++,cr0-cr13
  16057. + ldcm.d cp3,r7,cr14-cr15
  16058. + ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
  16059. +
  16060. +stcm_w:
  16061. + stcm.w cp0,pc,cr0-cr7
  16062. + stcm.w cp7,r0,cr0
  16063. + stcm.w cp4,--r4,cr0-cr6
  16064. + stcm.w cp3,r7,cr7
  16065. + stcm.w cp1,--r12,cr1,cr4-cr6
  16066. + stcm.w cp0,pc,cr8-cr15
  16067. + stcm.w cp7,r0,cr8
  16068. + stcm.w cp4,--r4,cr8-cr14
  16069. + stcm.w cp3,r7,cr15
  16070. + stcm.w cp1,--r12,cr9,cr12-cr14
  16071. +
  16072. +stcm_d:
  16073. + stcm.d cp0,pc,cr0-cr15
  16074. + stcm.d cp7,r0,cr0,cr1
  16075. + stcm.d cp4,--r4,cr0-cr13
  16076. + stcm.d cp3,r7,cr14-cr15
  16077. + stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
  16078. +
  16079. +mvcr_w:
  16080. + mvcr.w cp7,pc,cr15
  16081. + mvcr.w cp0,r0,cr0
  16082. + mvcr.w cp0,pc,cr15
  16083. + mvcr.w cp7,r0,cr15
  16084. + mvcr.w cp7,pc,cr0
  16085. + mvcr.w cp4,r7,cr8
  16086. + mvcr.w cp3,r8,cr7
  16087. +
  16088. +mvcr_d:
  16089. + mvcr.d cp7,lr,cr14
  16090. + mvcr.d cp0,r0,cr0
  16091. + mvcr.d cp0,lr,cr14
  16092. + mvcr.d cp7,r0,cr14
  16093. + mvcr.d cp7,lr,cr0
  16094. + mvcr.d cp4,r6,cr8
  16095. + mvcr.d cp3,r8,cr6
  16096. +
  16097. +mvrc_w:
  16098. + mvrc.w cp7,cr15,pc
  16099. + mvrc.w cp0,cr0,r0
  16100. + mvrc.w cp0,cr15,pc
  16101. + mvrc.w cp7,cr15,r0
  16102. + mvrc.w cp7,cr0,pc
  16103. + mvrc.w cp4,cr8,r7
  16104. + mvrc.w cp3,cr7,r8
  16105. +
  16106. +mvrc_d:
  16107. + mvrc.d cp7,cr14,lr
  16108. + mvrc.d cp0,cr0,r0
  16109. + mvrc.d cp0,cr14,lr
  16110. + mvrc.d cp7,cr14,r0
  16111. + mvrc.d cp7,cr0,lr
  16112. + mvrc.d cp4,cr8,r6
  16113. + mvrc.d cp3,cr6,r8
  16114. +
  16115. +bfexts:
  16116. + bfexts pc,pc,31,31
  16117. + bfexts r0,r0,0,0
  16118. + bfexts r0,pc,31,31
  16119. + bfexts pc,r0,31,31
  16120. + bfexts pc,pc,0,31
  16121. + bfexts pc,pc,31,0
  16122. + bfexts r7,r8,15,16
  16123. + bfexts r8,r7,16,15
  16124. +
  16125. +bfextu:
  16126. + bfextu pc,pc,31,31
  16127. + bfextu r0,r0,0,0
  16128. + bfextu r0,pc,31,31
  16129. + bfextu pc,r0,31,31
  16130. + bfextu pc,pc,0,31
  16131. + bfextu pc,pc,31,0
  16132. + bfextu r7,r8,15,16
  16133. + bfextu r8,r7,16,15
  16134. +
  16135. +bfins:
  16136. + bfins pc,pc,31,31
  16137. + bfins r0,r0,0,0
  16138. + bfins r0,pc,31,31
  16139. + bfins pc,r0,31,31
  16140. + bfins pc,pc,0,31
  16141. + bfins pc,pc,31,0
  16142. + bfins r7,r8,15,16
  16143. + bfins r8,r7,16,15
  16144. +
  16145. +rsubc:
  16146. + rsubeq pc,0
  16147. + rsubal r12,-1
  16148. + rsubls r5,-128
  16149. + rsubpl r4,127
  16150. + rsubne lr,1
  16151. + rsubls r12,118
  16152. + rsubvc lr,-12
  16153. + rsubmi r4,-13
  16154. +
  16155. +addc:
  16156. + addeq pc,pc,pc
  16157. + addal r12,r12,r12
  16158. + addls r5,r5,r5
  16159. + addpl r4,r4,r4
  16160. + addne lr,lr,lr
  16161. + addls r10,r2,r1
  16162. + addvc r12,r8,r11
  16163. + addmi r10,r7,r0
  16164. +
  16165. +subc2:
  16166. + subeq pc,pc,pc
  16167. + subal r12,r12,r12
  16168. + subls r5,r5,r5
  16169. + subpl r4,r4,r4
  16170. + subne lr,lr,lr
  16171. + subls r10,r2,r1
  16172. + subvc r12,r8,r11
  16173. + submi r10,r7,r0
  16174. +
  16175. +andc:
  16176. + andeq pc,pc,pc
  16177. + andal r12,r12,r12
  16178. + andls r5,r5,r5
  16179. + andpl r4,r4,r4
  16180. + andne lr,lr,lr
  16181. + andls r10,r2,r1
  16182. + andvc r12,r8,r11
  16183. + andmi r10,r7,r0
  16184. +
  16185. +orc:
  16186. + oreq pc,pc,pc
  16187. + oral r12,r12,r12
  16188. + orls r5,r5,r5
  16189. + orpl r4,r4,r4
  16190. + orne lr,lr,lr
  16191. + orls r10,r2,r1
  16192. + orvc r12,r8,r11
  16193. + ormi r10,r7,r0
  16194. +
  16195. +eorc:
  16196. + eoreq pc,pc,pc
  16197. + eoral r12,r12,r12
  16198. + eorls r5,r5,r5
  16199. + eorpl r4,r4,r4
  16200. + eorne lr,lr,lr
  16201. + eorls r10,r2,r1
  16202. + eorvc r12,r8,r11
  16203. + eormi r10,r7,r0
  16204. +
  16205. +ldcond:
  16206. + ld.weq pc,pc[2044]
  16207. + ld.shal r12,r12[1022]
  16208. + ld.uhls r5,r5[0]
  16209. + ld.ubpl r4,r4[511]
  16210. + ld.sbne lr,lr[0]
  16211. + ld.wls r10,r2[0]
  16212. + ld.shvc r12,r8[0x3fe]
  16213. + ld.ubmi r10,r7[1]
  16214. +
  16215. +stcond2:
  16216. + st.weq pc[2044],pc
  16217. + st.hal r12[1022],r12
  16218. + st.hls r5[0],r5
  16219. + st.bpl r4[511],r4
  16220. + st.bne lr[0],lr
  16221. + st.wls r2[0],r10
  16222. + st.hvc r8[0x3fe],r12
  16223. + st.bmi r7[1],r10
  16224. +
  16225. +movh:
  16226. + movh pc, 65535
  16227. + movh r0, 0
  16228. + movh r5, 1
  16229. + movh r12, 32767
  16230. +
  16231. +
  16232. --- /dev/null
  16233. +++ b/gas/testsuite/gas/avr32/avr32.exp
  16234. @@ -0,0 +1,23 @@
  16235. +# AVR32 assembler testsuite. -*- Tcl -*-
  16236. +
  16237. +if [istarget avr32-*-*] {
  16238. + run_dump_test "hwrd-lwrd"
  16239. + run_dump_test "pcrel"
  16240. + run_dump_test "aliases"
  16241. + run_dump_test "dwarf2"
  16242. + run_dump_test "pic_reloc"
  16243. + run_dump_test "fpinsn"
  16244. + run_dump_test "pico"
  16245. + run_dump_test "lda_pic"
  16246. + run_dump_test "lda_pic_linkrelax"
  16247. + run_dump_test "lda_nopic"
  16248. + run_dump_test "lda_nopic_linkrelax"
  16249. + run_dump_test "call_pic"
  16250. + run_dump_test "call_pic_linkrelax"
  16251. + run_dump_test "call_nopic"
  16252. + run_dump_test "call_nopic_linkrelax"
  16253. + run_dump_test "jmptable"
  16254. + run_dump_test "jmptable_linkrelax"
  16255. + run_dump_test "symdiff"
  16256. + run_dump_test "symdiff_linkrelax"
  16257. +}
  16258. --- /dev/null
  16259. +++ b/gas/testsuite/gas/avr32/call_nopic.d
  16260. @@ -0,0 +1,36 @@
  16261. +#source: call.s
  16262. +#as:
  16263. +#objdump: -dr
  16264. +#name: call_nopic
  16265. +
  16266. +.*: +file format .*
  16267. +
  16268. +Disassembly of section \.text:
  16269. +
  16270. +00000000 <call_test>:
  16271. + 0: d7 03 nop
  16272. +
  16273. +00000002 <toofar_negative>:
  16274. + \.\.\.
  16275. + 1ffffe: 00 00 add r0,r0
  16276. + 200000: f0 a0 00 00 rcall 0 <call_test>
  16277. + 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
  16278. + 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
  16279. + 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
  16280. + 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
  16281. + \.\.\.
  16282. + 200030: ee b0 ff ff rcall 40002e <far_positive>
  16283. + \.\.\.
  16284. + 200034: R_AVR32_32_CPENT \.text\+0x2
  16285. + 200038: R_AVR32_32_CPENT \.text\.init
  16286. + 20003c: R_AVR32_32_CPENT undefined
  16287. + 200040: R_AVR32_32_CPENT \.text\+0x40002c
  16288. +
  16289. +0040002c <toofar_positive>:
  16290. + 40002c: d7 03 nop
  16291. +0040002e <far_positive>:
  16292. + 40002e: d7 03 nop
  16293. +Disassembly of section \.text\.init:
  16294. +
  16295. +00000000 <different_section>:
  16296. + 0: e2 c0 00 00 sub r0,r1,0
  16297. --- /dev/null
  16298. +++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
  16299. @@ -0,0 +1,43 @@
  16300. +#source: call.s
  16301. +#as: --linkrelax
  16302. +#objdump: -dr
  16303. +#name: call_nopic_linkrelax
  16304. +
  16305. +.*: +file format .*
  16306. +
  16307. +Disassembly of section \.text:
  16308. +
  16309. +00000000 <call_test>:
  16310. + 0: d7 03 nop
  16311. +
  16312. +00000002 <toofar_negative>:
  16313. + \.\.\.
  16314. + 1ffffe: 00 00 add r0,r0
  16315. + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
  16316. + 200000: R_AVR32_22H_PCREL \.text
  16317. + 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
  16318. + 200004: R_AVR32_CPCALL \.text\+0x200034
  16319. + 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
  16320. + 200008: R_AVR32_CPCALL \.text\+0x200038
  16321. + 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
  16322. + 20000c: R_AVR32_CPCALL \.text\+0x20003c
  16323. + 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
  16324. + 200010: R_AVR32_CPCALL \.text\+0x200040
  16325. + \.\.\.
  16326. + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
  16327. + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
  16328. + \.\.\.
  16329. + 200034: R_AVR32_ALIGN \*ABS\*\+0x2
  16330. + 200034: R_AVR32_32_CPENT \.text\+0x2
  16331. + 200038: R_AVR32_32_CPENT \.text\.init
  16332. + 20003c: R_AVR32_32_CPENT undefined
  16333. + 200040: R_AVR32_32_CPENT \.text\+0x40002c
  16334. +
  16335. +0040002c <toofar_positive>:
  16336. + 40002c: d7 03 nop
  16337. +0040002e <far_positive>:
  16338. + 40002e: d7 03 nop
  16339. +Disassembly of section \.text\.init:
  16340. +
  16341. +00000000 <different_section>:
  16342. + 0: e2 c0 00 00 sub r0,r1,0
  16343. --- /dev/null
  16344. +++ b/gas/testsuite/gas/avr32/call_pic.d
  16345. @@ -0,0 +1,36 @@
  16346. +#source: call.s
  16347. +#as: --pic
  16348. +#objdump: -dr
  16349. +#name: call_pic
  16350. +
  16351. +.*: +file format .*
  16352. +
  16353. +Disassembly of section \.text:
  16354. +
  16355. +00000000 <call_test>:
  16356. + 0: d7 03 nop
  16357. +
  16358. +00000002 <toofar_negative>:
  16359. + \.\.\.
  16360. + 1ffffe: 00 00 add r0,r0
  16361. + 200000: f0 a0 00 00 rcall 0 <call_test>
  16362. + 200004: f0 16 00 00 mcall r6\[0\]
  16363. + 200004: R_AVR32_GOT18SW toofar_negative
  16364. + 200008: f0 16 00 00 mcall r6\[0\]
  16365. + 200008: R_AVR32_GOT18SW different_section
  16366. + 20000c: f0 16 00 00 mcall r6\[0\]
  16367. + 20000c: R_AVR32_GOT18SW undefined
  16368. + 200010: f0 16 00 00 mcall r6\[0\]
  16369. + 200010: R_AVR32_GOT18SW toofar_positive
  16370. + \.\.\.
  16371. + 200030: ee b0 ff ff rcall 40002e <far_positive>
  16372. + \.\.\.
  16373. +
  16374. +0040002c <toofar_positive>:
  16375. + 40002c: d7 03 nop
  16376. +0040002e <far_positive>:
  16377. + 40002e: d7 03 nop
  16378. +Disassembly of section \.text\.init:
  16379. +
  16380. +00000000 <different_section>:
  16381. + 0: e2 c0 00 00 sub r0,r1,0
  16382. --- /dev/null
  16383. +++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
  16384. @@ -0,0 +1,47 @@
  16385. +#source: call.s
  16386. +#as: --pic --linkrelax
  16387. +#objdump: -dr
  16388. +#name: call_pic_linkrelax
  16389. +
  16390. +.*: +file format .*
  16391. +
  16392. +Disassembly of section \.text:
  16393. +
  16394. +00000000 <call_test>:
  16395. + 0: d7 03 nop
  16396. +
  16397. +00000002 <toofar_negative>:
  16398. + \.\.\.
  16399. + 1ffffe: 00 00 add r0,r0
  16400. + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
  16401. + 200000: R_AVR32_22H_PCREL \.text
  16402. + 200004: e0 6e 00 00 mov lr,0
  16403. + 200004: R_AVR32_GOTCALL toofar_negative
  16404. + 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
  16405. + 20000c: 5d 1e icall lr
  16406. + 20000e: e0 6e 00 00 mov lr,0
  16407. + 20000e: R_AVR32_GOTCALL different_section
  16408. + 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
  16409. + 200016: 5d 1e icall lr
  16410. + 200018: e0 6e 00 00 mov lr,0
  16411. + 200018: R_AVR32_GOTCALL undefined
  16412. + 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
  16413. + 200020: 5d 1e icall lr
  16414. + 200022: e0 6e 00 00 mov lr,0
  16415. + 200022: R_AVR32_GOTCALL toofar_positive
  16416. + 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
  16417. + 20002a: 5d 1e icall lr
  16418. + 20002c: 00 00 add r0,r0
  16419. + 20002e: 00 00 add r0,r0
  16420. + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
  16421. + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
  16422. + \.\.\.
  16423. +
  16424. +0040002c <toofar_positive>:
  16425. + 40002c: d7 03 nop
  16426. +0040002e <far_positive>:
  16427. + 40002e: d7 03 nop
  16428. +Disassembly of section \.text\.init:
  16429. +
  16430. +00000000 <different_section>:
  16431. + 0: e2 c0 00 00 sub r0,r1,0
  16432. --- /dev/null
  16433. +++ b/gas/testsuite/gas/avr32/call.s
  16434. @@ -0,0 +1,30 @@
  16435. +
  16436. + .text
  16437. + .global call_test
  16438. +call_test:
  16439. +far_negative:
  16440. + nop
  16441. +toofar_negative:
  16442. +
  16443. + .org 0x200000
  16444. +
  16445. + call far_negative
  16446. + call toofar_negative
  16447. + call different_section
  16448. + call undefined
  16449. + call toofar_positive
  16450. + .org 0x200030
  16451. + call far_positive
  16452. +
  16453. + .cpool
  16454. +
  16455. + .org 0x40002c
  16456. +
  16457. +toofar_positive:
  16458. + nop
  16459. +far_positive:
  16460. + nop
  16461. +
  16462. + .section .text.init,"ax",@progbits
  16463. +different_section:
  16464. + sub r0, r1, 0
  16465. --- /dev/null
  16466. +++ b/gas/testsuite/gas/avr32/dwarf2.d
  16467. @@ -0,0 +1,42 @@
  16468. +#readelf: -wl
  16469. +#name: dwarf2
  16470. +#source: dwarf2.s
  16471. +
  16472. +Dump of debug contents of section \.debug_line:
  16473. +
  16474. + Length: 53
  16475. + DWARF Version: 2
  16476. + Prologue Length: 26
  16477. + Minimum Instruction Length: 1
  16478. + Initial value of 'is_stmt': 1
  16479. + Line Base: -5
  16480. + Line Range: 14
  16481. + Opcode Base: 10
  16482. + \(Pointer size: 4\)
  16483. +
  16484. + Opcodes:
  16485. + Opcode 1 has 0 args
  16486. + Opcode 2 has 1 args
  16487. + Opcode 3 has 1 args
  16488. + Opcode 4 has 1 args
  16489. + Opcode 5 has 1 args
  16490. + Opcode 6 has 0 args
  16491. + Opcode 7 has 0 args
  16492. + Opcode 8 has 0 args
  16493. + Opcode 9 has 1 args
  16494. +
  16495. + The Directory Table is empty\.
  16496. +
  16497. + The File Name Table:
  16498. + Entry Dir Time Size Name
  16499. + 1 0 0 0 main\.c
  16500. +
  16501. + Line Number Statements:
  16502. + Extended opcode 2: set Address to 0x0
  16503. + Advance Line by 87 to 88
  16504. + Copy
  16505. + Advance Line by 23 to 111
  16506. + Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
  16507. + Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
  16508. + Advance PC by 530 to 220
  16509. + Extended opcode 1: End of Sequence
  16510. --- /dev/null
  16511. +++ b/gas/testsuite/gas/avr32/dwarf2.s
  16512. @@ -0,0 +1,67 @@
  16513. +# Source file used to test DWARF2 information for AVR32.
  16514. +
  16515. + .file "main.c"
  16516. +
  16517. + .section .debug_abbrev,"",@progbits
  16518. +.Ldebug_abbrev0:
  16519. + .section .debug_info,"",@progbits
  16520. +.Ldebug_info0:
  16521. + .section .debug_line,"",@progbits
  16522. +.Ldebug_line0:
  16523. +
  16524. + .text
  16525. + .align 1
  16526. + .globl main
  16527. + .type main, @function
  16528. +.Ltext0:
  16529. +main:
  16530. + .file 1 "main.c"
  16531. + .loc 1 88 0
  16532. + pushm r0-r7,lr
  16533. + sub sp, 4
  16534. + .loc 1 111 0
  16535. + lddpc r12, .LC1
  16536. + lddpc r7, .LC1
  16537. + icall r7
  16538. + .loc 1 112 0
  16539. + lddpc r6, .LC4
  16540. +
  16541. + .align 2
  16542. +.LC4: .int 0
  16543. +
  16544. + .fill 256, 2, 0
  16545. +
  16546. + .align 2
  16547. +.LC1:
  16548. + .int 0
  16549. +.LC2:
  16550. + .int 0
  16551. +.LC3:
  16552. + .int 0
  16553. + .size main, . - main
  16554. +
  16555. +.Letext0:
  16556. +
  16557. + .section .debug_info
  16558. + .int .Ledebug_info0 - .Ldebug_info0 // size
  16559. + .short 2 // version
  16560. + .int .Ldebug_abbrev0 // abbrev offset
  16561. + .byte 4 // bytes per addr
  16562. +
  16563. + .uleb128 1 // abbrev 1
  16564. + .int .Ldebug_line0 // DW_AT_stmt_list
  16565. + .int .Letext0 // DW_AT_high_pc
  16566. + .int .Ltext0 // DW_AT_low_pc
  16567. +
  16568. +.Ledebug_info0:
  16569. +
  16570. + .section .debug_abbrev
  16571. + .uleb128 0x01
  16572. + .uleb128 0x11 // DW_TAG_compile_unit
  16573. + .byte 0 // DW_CHILDREN_no
  16574. + .uleb128 0x10, 0x6 // DW_AT_stmt_list
  16575. + .uleb128 0x12, 0x1 // DW_AT_high_pc
  16576. + .uleb128 0x11, 0x1 // DW_AT_low_pc
  16577. + .uleb128 0, 0
  16578. +
  16579. + .byte 0
  16580. --- /dev/null
  16581. +++ b/gas/testsuite/gas/avr32/fpinsn.d
  16582. @@ -0,0 +1,271 @@
  16583. +#as:
  16584. +#objdump: -dr
  16585. +#name: fpinsn
  16586. +
  16587. +.*: +file format .*
  16588. +
  16589. +Disassembly of section \.text:
  16590. +
  16591. +[0-9a-f]* <fadd_s>:
  16592. + *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
  16593. + *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
  16594. + *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
  16595. + *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
  16596. + *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
  16597. + *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
  16598. + *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
  16599. + *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
  16600. +
  16601. +[0-9a-f]* <fsub_s>:
  16602. + *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
  16603. + *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
  16604. + *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
  16605. + *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
  16606. + *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
  16607. + *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
  16608. + *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
  16609. + *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
  16610. +
  16611. +[0-9a-f]* <fmac_s>:
  16612. + *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
  16613. + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
  16614. + *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
  16615. + *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
  16616. + *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
  16617. + *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
  16618. + *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
  16619. + *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
  16620. +
  16621. +[0-9a-f]* <fnmac_s>:
  16622. + *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
  16623. + *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
  16624. + *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
  16625. + *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
  16626. + *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
  16627. + *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
  16628. + *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
  16629. + *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
  16630. +
  16631. +[0-9a-f]* <fmsc_s>:
  16632. + *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
  16633. + *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
  16634. + *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
  16635. + *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
  16636. + *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
  16637. + *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
  16638. + *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
  16639. + *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
  16640. +
  16641. +[0-9a-f]* <fnmsc_s>:
  16642. + *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
  16643. + *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
  16644. + *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
  16645. + *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
  16646. + *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
  16647. + *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
  16648. + *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
  16649. + *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
  16650. +
  16651. +[0-9a-f]* <fmul_s>:
  16652. + *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
  16653. + *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
  16654. + *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
  16655. + *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
  16656. + *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
  16657. + *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
  16658. + *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
  16659. + *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
  16660. +
  16661. +[0-9a-f]* <fnmul_s>:
  16662. + *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
  16663. + *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
  16664. + *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
  16665. + *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
  16666. + *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
  16667. + *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
  16668. + *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
  16669. + *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
  16670. +
  16671. +[0-9a-f]* <fneg_s>:
  16672. + *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
  16673. + *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
  16674. + *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
  16675. + *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
  16676. + *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
  16677. + *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
  16678. +
  16679. +[0-9a-f]* <fabs_s>:
  16680. + *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
  16681. + *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
  16682. + *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
  16683. + *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
  16684. + *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
  16685. + *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
  16686. +
  16687. +[0-9a-f]* <fcmp_s>:
  16688. + *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
  16689. + *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
  16690. + *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
  16691. + *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
  16692. + *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
  16693. + *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
  16694. +
  16695. +[0-9a-f]* <fadd_d>:
  16696. + *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
  16697. + *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
  16698. + *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
  16699. + *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
  16700. + *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
  16701. + *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
  16702. + *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
  16703. + *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
  16704. +
  16705. +[0-9a-f]* <fsub_d>:
  16706. + *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
  16707. + *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
  16708. + *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
  16709. + *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
  16710. + *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
  16711. + *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
  16712. + *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
  16713. + *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
  16714. +
  16715. +[0-9a-f]* <fmac_d>:
  16716. + *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
  16717. + *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
  16718. + *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
  16719. + *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
  16720. + *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
  16721. + *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
  16722. + *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
  16723. + *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
  16724. +
  16725. +[0-9a-f]* <fnmac_d>:
  16726. + *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
  16727. + *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
  16728. + *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
  16729. + *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
  16730. + *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
  16731. + *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
  16732. + *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
  16733. + *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
  16734. +
  16735. +[0-9a-f]* <fmsc_d>:
  16736. + *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
  16737. + *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
  16738. + *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
  16739. + *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
  16740. + *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
  16741. + *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
  16742. + *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
  16743. + *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
  16744. +
  16745. +[0-9a-f]* <fnmsc_d>:
  16746. + *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
  16747. + *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
  16748. + *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
  16749. + *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
  16750. + *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
  16751. + *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
  16752. + *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
  16753. + *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
  16754. +
  16755. +[0-9a-f]* <fmul_d>:
  16756. + *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
  16757. + *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
  16758. + *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
  16759. + *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
  16760. + *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
  16761. + *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
  16762. + *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
  16763. + *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
  16764. +
  16765. +[0-9a-f]* <fnmul_d>:
  16766. + *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
  16767. + *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
  16768. + *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
  16769. + *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
  16770. + *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
  16771. + *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
  16772. + *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
  16773. + *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
  16774. +
  16775. +[0-9a-f]* <fneg_d>:
  16776. + *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
  16777. + *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
  16778. + *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
  16779. + *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
  16780. + *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
  16781. + *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
  16782. +
  16783. +[0-9a-f]* <fabs_d>:
  16784. + *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
  16785. + *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
  16786. + *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
  16787. + *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
  16788. + *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
  16789. + *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
  16790. +
  16791. +[0-9a-f]* <fcmp_d>:
  16792. + *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
  16793. + *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
  16794. + *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
  16795. + *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
  16796. + *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
  16797. + *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
  16798. +
  16799. +[0-9a-f]* <fmov_s>:
  16800. + *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
  16801. + *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
  16802. + *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
  16803. + *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
  16804. + *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
  16805. + *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
  16806. + *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
  16807. + *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
  16808. + *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
  16809. + *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
  16810. + *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
  16811. + *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
  16812. + *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
  16813. + *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
  16814. + *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
  16815. + *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
  16816. + *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
  16817. + *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
  16818. +
  16819. +[0-9a-f]* <fmov_d>:
  16820. + *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
  16821. + *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
  16822. + *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
  16823. + *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
  16824. + *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
  16825. + *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
  16826. + *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
  16827. + *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
  16828. + *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
  16829. + *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
  16830. + *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
  16831. + *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
  16832. + *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
  16833. + *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
  16834. + *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
  16835. + *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
  16836. + *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
  16837. + *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
  16838. +
  16839. +[0-9a-f]* <fcasts_d>:
  16840. + *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
  16841. + *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
  16842. + *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
  16843. + *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
  16844. + *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
  16845. + *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
  16846. +
  16847. +[0-9a-f]* <fcastd_s>:
  16848. + *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
  16849. + *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
  16850. + *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
  16851. + *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
  16852. + *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
  16853. + *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
  16854. --- /dev/null
  16855. +++ b/gas/testsuite/gas/avr32/fpinsn.s
  16856. @@ -0,0 +1,266 @@
  16857. +
  16858. + .text
  16859. + .global fadd_s
  16860. +fadd_s:
  16861. + fadd.s fr15, fr15, fr15
  16862. + fadd.s fr0, fr0, fr0
  16863. + fadd.s fr0, fr15, fr15
  16864. + fadd.s fr15, fr0, fr15
  16865. + fadd.s fr15, fr15, fr0
  16866. + fadd.s fr7, fr8, fr8
  16867. + fadd.s fr8, fr7, fr8
  16868. + fadd.s fr8, fr8, fr7
  16869. + .global fsub_s
  16870. +fsub_s:
  16871. + fsub.s fr15, fr15, fr15
  16872. + fsub.s fr0, fr0, fr0
  16873. + fsub.s fr0, fr15, fr15
  16874. + fsub.s fr15, fr0, fr15
  16875. + fsub.s fr15, fr15, fr0
  16876. + fsub.s fr7, fr8, fr8
  16877. + fsub.s fr8, fr7, fr8
  16878. + fsub.s fr8, fr8, fr7
  16879. + .global fmac_s
  16880. +fmac_s:
  16881. + fmac.s fr15, fr15, fr15
  16882. + fmac.s fr0, fr0, fr0
  16883. + fmac.s fr0, fr15, fr15
  16884. + fmac.s fr15, fr0, fr15
  16885. + fmac.s fr15, fr15, fr0
  16886. + fmac.s fr7, fr8, fr8
  16887. + fmac.s fr8, fr7, fr8
  16888. + fmac.s fr8, fr8, fr7
  16889. + .global fnmac_s
  16890. +fnmac_s:
  16891. + fnmac.s fr15, fr15, fr15
  16892. + fnmac.s fr0, fr0, fr0
  16893. + fnmac.s fr0, fr15, fr15
  16894. + fnmac.s fr15, fr0, fr15
  16895. + fnmac.s fr15, fr15, fr0
  16896. + fnmac.s fr7, fr8, fr8
  16897. + fnmac.s fr8, fr7, fr8
  16898. + fnmac.s fr8, fr8, fr7
  16899. + .global fmsc_s
  16900. +fmsc_s:
  16901. + fmsc.s fr15, fr15, fr15
  16902. + fmsc.s fr0, fr0, fr0
  16903. + fmsc.s fr0, fr15, fr15
  16904. + fmsc.s fr15, fr0, fr15
  16905. + fmsc.s fr15, fr15, fr0
  16906. + fmsc.s fr7, fr8, fr8
  16907. + fmsc.s fr8, fr7, fr8
  16908. + fmsc.s fr8, fr8, fr7
  16909. + .global fnmsc_s
  16910. +fnmsc_s:
  16911. + fnmsc.s fr15, fr15, fr15
  16912. + fnmsc.s fr0, fr0, fr0
  16913. + fnmsc.s fr0, fr15, fr15
  16914. + fnmsc.s fr15, fr0, fr15
  16915. + fnmsc.s fr15, fr15, fr0
  16916. + fnmsc.s fr7, fr8, fr8
  16917. + fnmsc.s fr8, fr7, fr8
  16918. + fnmsc.s fr8, fr8, fr7
  16919. + .global fmul_s
  16920. +fmul_s:
  16921. + fmul.s fr15, fr15, fr15
  16922. + fmul.s fr0, fr0, fr0
  16923. + fmul.s fr0, fr15, fr15
  16924. + fmul.s fr15, fr0, fr15
  16925. + fmul.s fr15, fr15, fr0
  16926. + fmul.s fr7, fr8, fr8
  16927. + fmul.s fr8, fr7, fr8
  16928. + fmul.s fr8, fr8, fr7
  16929. + .global fnmul_s
  16930. +fnmul_s:
  16931. + fnmul.s fr15, fr15, fr15
  16932. + fnmul.s fr0, fr0, fr0
  16933. + fnmul.s fr0, fr15, fr15
  16934. + fnmul.s fr15, fr0, fr15
  16935. + fnmul.s fr15, fr15, fr0
  16936. + fnmul.s fr7, fr8, fr8
  16937. + fnmul.s fr8, fr7, fr8
  16938. + fnmul.s fr8, fr8, fr7
  16939. + .global fneg_s
  16940. +fneg_s:
  16941. + fneg.s fr15, fr15
  16942. + fneg.s fr0, fr0
  16943. + fneg.s fr0, fr15
  16944. + fneg.s fr15, fr0
  16945. + fneg.s fr7, fr8
  16946. + fneg.s fr8, fr7
  16947. + .global fabs_s
  16948. +fabs_s:
  16949. + fabs.s fr15, fr15
  16950. + fabs.s fr0, fr0
  16951. + fabs.s fr0, fr15
  16952. + fabs.s fr15, fr0
  16953. + fabs.s fr7, fr8
  16954. + fabs.s fr8, fr7
  16955. + .global fcmp_s
  16956. +fcmp_s:
  16957. + fcmp.s fr15, fr15
  16958. + fcmp.s fr0, fr0
  16959. + fcmp.s fr0, fr15
  16960. + fcmp.s fr15, fr0
  16961. + fcmp.s fr7, fr8
  16962. + fcmp.s fr8, fr7
  16963. + .global fadd_d
  16964. +fadd_d:
  16965. + fadd.d fr14, fr14, fr14
  16966. + fadd.d fr0, fr0, fr0
  16967. + fadd.d fr0, fr14, fr14
  16968. + fadd.d fr14, fr0, fr14
  16969. + fadd.d fr14, fr14, fr0
  16970. + fadd.d fr6, fr8, fr8
  16971. + fadd.d fr8, fr6, fr8
  16972. + fadd.d fr8, fr8, fr6
  16973. + .global fsub_d
  16974. +fsub_d:
  16975. + fsub.d fr14, fr14, fr14
  16976. + fsub.d fr0, fr0, fr0
  16977. + fsub.d fr0, fr14, fr14
  16978. + fsub.d fr14, fr0, fr14
  16979. + fsub.d fr14, fr14, fr0
  16980. + fsub.d fr6, fr8, fr8
  16981. + fsub.d fr8, fr6, fr8
  16982. + fsub.d fr8, fr8, fr6
  16983. + .global fmac_d
  16984. +fmac_d:
  16985. + fmac.d fr14, fr14, fr14
  16986. + fmac.d fr0, fr0, fr0
  16987. + fmac.d fr0, fr14, fr14
  16988. + fmac.d fr14, fr0, fr14
  16989. + fmac.d fr14, fr14, fr0
  16990. + fmac.d fr6, fr8, fr8
  16991. + fmac.d fr8, fr6, fr8
  16992. + fmac.d fr8, fr8, fr6
  16993. + .global fnmac_d
  16994. +fnmac_d:
  16995. + fnmac.d fr14, fr14, fr14
  16996. + fnmac.d fr0, fr0, fr0
  16997. + fnmac.d fr0, fr14, fr14
  16998. + fnmac.d fr14, fr0, fr14
  16999. + fnmac.d fr14, fr14, fr0
  17000. + fnmac.d fr6, fr8, fr8
  17001. + fnmac.d fr8, fr6, fr8
  17002. + fnmac.d fr8, fr8, fr6
  17003. + .global fmsc_d
  17004. +fmsc_d:
  17005. + fmsc.d fr14, fr14, fr14
  17006. + fmsc.d fr0, fr0, fr0
  17007. + fmsc.d fr0, fr14, fr14
  17008. + fmsc.d fr14, fr0, fr14
  17009. + fmsc.d fr14, fr14, fr0
  17010. + fmsc.d fr6, fr8, fr8
  17011. + fmsc.d fr8, fr6, fr8
  17012. + fmsc.d fr8, fr8, fr6
  17013. + .global fnmsc_d
  17014. +fnmsc_d:
  17015. + fnmsc.d fr14, fr14, fr14
  17016. + fnmsc.d fr0, fr0, fr0
  17017. + fnmsc.d fr0, fr14, fr14
  17018. + fnmsc.d fr14, fr0, fr14
  17019. + fnmsc.d fr14, fr14, fr0
  17020. + fnmsc.d fr6, fr8, fr8
  17021. + fnmsc.d fr8, fr6, fr8
  17022. + fnmsc.d fr8, fr8, fr6
  17023. + .global fmul_d
  17024. +fmul_d:
  17025. + fmul.d fr14, fr14, fr14
  17026. + fmul.d fr0, fr0, fr0
  17027. + fmul.d fr0, fr14, fr14
  17028. + fmul.d fr14, fr0, fr14
  17029. + fmul.d fr14, fr14, fr0
  17030. + fmul.d fr6, fr8, fr8
  17031. + fmul.d fr8, fr6, fr8
  17032. + fmul.d fr8, fr8, fr6
  17033. + .global fnmul_d
  17034. +fnmul_d:
  17035. + fnmul.d fr14, fr14, fr14
  17036. + fnmul.d fr0, fr0, fr0
  17037. + fnmul.d fr0, fr14, fr14
  17038. + fnmul.d fr14, fr0, fr14
  17039. + fnmul.d fr14, fr14, fr0
  17040. + fnmul.d fr6, fr8, fr8
  17041. + fnmul.d fr8, fr6, fr8
  17042. + fnmul.d fr8, fr8, fr6
  17043. + .global fneg_d
  17044. +fneg_d:
  17045. + fneg.d fr14, fr14
  17046. + fneg.d fr0, fr0
  17047. + fneg.d fr0, fr14
  17048. + fneg.d fr14, fr0
  17049. + fneg.d fr6, fr8
  17050. + fneg.d fr8, fr6
  17051. + .global fabs_d
  17052. +fabs_d:
  17053. + fabs.d fr14, fr14
  17054. + fabs.d fr0, fr0
  17055. + fabs.d fr0, fr14
  17056. + fabs.d fr14, fr0
  17057. + fabs.d fr6, fr8
  17058. + fabs.d fr8, fr6
  17059. + .global fcmp_d
  17060. +fcmp_d:
  17061. + fcmp.d fr14, fr14
  17062. + fcmp.d fr0, fr0
  17063. + fcmp.d fr0, fr14
  17064. + fcmp.d fr14, fr0
  17065. + fcmp.d fr6, fr8
  17066. + fcmp.d fr8, fr6
  17067. + .global fmov_s
  17068. +fmov_s:
  17069. + fmov.s fr15, fr15
  17070. + fmov.s fr0, fr0
  17071. + fmov.s fr15, fr0
  17072. + fmov.s fr0, fr15
  17073. + fmov.s fr8, fr7
  17074. + fmov.s fr7, fr8
  17075. + fmov.s pc, fr15
  17076. + fmov.s r0, fr0
  17077. + fmov.s pc, fr0
  17078. + fmov.s r0, fr15
  17079. + fmov.s r8, fr7
  17080. + fmov.s r7, fr8
  17081. + fmov.s fr15, pc
  17082. + fmov.s fr0, r0
  17083. + fmov.s fr15, r0
  17084. + fmov.s fr0, pc
  17085. + fmov.s fr8, r7
  17086. + fmov.s fr7, r8
  17087. + .global fmov_d
  17088. +fmov_d:
  17089. + fmov.d fr14, fr14
  17090. + fmov.d fr0, fr0
  17091. + fmov.d fr14, fr0
  17092. + fmov.d fr0, fr14
  17093. + fmov.d fr8, fr6
  17094. + fmov.d fr6, fr8
  17095. + fmov.d lr, fr14
  17096. + fmov.d r0, fr0
  17097. + fmov.d lr, fr0
  17098. + fmov.d r0, fr14
  17099. + fmov.d r8, fr6
  17100. + fmov.d r6, fr8
  17101. + fmov.d fr14, lr
  17102. + fmov.d fr0, r0
  17103. + fmov.d fr14, r0
  17104. + fmov.d fr0, lr
  17105. + fmov.d fr8, r6
  17106. + fmov.d fr6, r8
  17107. + .global fcasts_d
  17108. +fcasts_d:
  17109. + fcasts.d fr15, fr14
  17110. + fcasts.d fr0, fr0
  17111. + fcasts.d fr15, fr0
  17112. + fcasts.d fr0, fr14
  17113. + fcasts.d fr8, fr6
  17114. + fcasts.d fr7, fr8
  17115. + .global fcastd_s
  17116. +fcastd_s:
  17117. + fcastd.s fr14, fr15
  17118. + fcastd.s fr0, fr0
  17119. + fcastd.s fr14, fr0
  17120. + fcastd.s fr0, fr15
  17121. + fcastd.s fr8, fr7
  17122. + fcastd.s fr6, fr8
  17123. --- /dev/null
  17124. +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
  17125. @@ -0,0 +1,47 @@
  17126. +#as:
  17127. +#objdump: -dr
  17128. +#name: hwrd-lwrd
  17129. +
  17130. +.*: +file format .*
  17131. +
  17132. +Disassembly of section \.text:
  17133. +
  17134. +00000000 <test_hwrd>:
  17135. + 0: e0 60 87 65 mov r0,34661
  17136. + 4: e0 60 12 34 mov r0,4660
  17137. + 8: e0 60 00 00 mov r0,0
  17138. + 8: R_AVR32_HI16 \.text\+0x60
  17139. + c: e0 60 00 00 mov r0,0
  17140. + c: R_AVR32_HI16 extsym1
  17141. + 10: ea 10 87 65 orh r0,0x8765
  17142. + 14: ea 10 12 34 orh r0,0x1234
  17143. + 18: ea 10 00 00 orh r0,0x0
  17144. + 18: R_AVR32_HI16 \.text\+0x60
  17145. + 1c: ea 10 00 00 orh r0,0x0
  17146. + 1c: R_AVR32_HI16 extsym1
  17147. + 20: e4 10 87 65 andh r0,0x8765
  17148. + 24: e4 10 12 34 andh r0,0x1234
  17149. + 28: e4 10 00 00 andh r0,0x0
  17150. + 28: R_AVR32_HI16 \.text\+0x60
  17151. + 2c: e4 10 00 00 andh r0,0x0
  17152. + 2c: R_AVR32_HI16 extsym1
  17153. +
  17154. +00000030 <test_lwrd>:
  17155. + 30: e0 60 43 21 mov r0,17185
  17156. + 34: e0 60 56 78 mov r0,22136
  17157. + 38: e0 60 00 00 mov r0,0
  17158. + 38: R_AVR32_LO16 \.text\+0x60
  17159. + 3c: e0 60 00 00 mov r0,0
  17160. + 3c: R_AVR32_LO16 extsym1
  17161. + 40: e8 10 43 21 orl r0,0x4321
  17162. + 44: e8 10 56 78 orl r0,0x5678
  17163. + 48: e8 10 00 00 orl r0,0x0
  17164. + 48: R_AVR32_LO16 \.text\+0x60
  17165. + 4c: e8 10 00 00 orl r0,0x0
  17166. + 4c: R_AVR32_LO16 extsym1
  17167. + 50: e0 10 43 21 andl r0,0x4321
  17168. + 54: e0 10 56 78 andl r0,0x5678
  17169. + 58: e0 10 00 00 andl r0,0x0
  17170. + 58: R_AVR32_LO16 \.text\+0x60
  17171. + 5c: e0 10 00 00 andl r0,0x0
  17172. + 5c: R_AVR32_LO16 extsym1
  17173. --- /dev/null
  17174. +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
  17175. @@ -0,0 +1,39 @@
  17176. +
  17177. + .equ sym1, 0x12345678
  17178. +
  17179. + .text
  17180. + .global test_hwrd
  17181. +test_hwrd:
  17182. + mov r0, hi(0x87654321)
  17183. + mov r0, hi(sym1)
  17184. + mov r0, hi(sym2)
  17185. + mov r0, hi(extsym1)
  17186. +
  17187. + orh r0, hi(0x87654321)
  17188. + orh r0, hi(sym1)
  17189. + orh r0, hi(sym2)
  17190. + orh r0, hi(extsym1)
  17191. +
  17192. + andh r0, hi(0x87654321)
  17193. + andh r0, hi(sym1)
  17194. + andh r0, hi(sym2)
  17195. + andh r0, hi(extsym1)
  17196. +
  17197. + .global test_lwrd
  17198. +test_lwrd:
  17199. + mov r0, lo(0x87654321)
  17200. + mov r0, lo(sym1)
  17201. + mov r0, lo(sym2)
  17202. + mov r0, lo(extsym1)
  17203. +
  17204. + orl r0, lo(0x87654321)
  17205. + orl r0, lo(sym1)
  17206. + orl r0, lo(sym2)
  17207. + orl r0, lo(extsym1)
  17208. +
  17209. + andl r0, lo(0x87654321)
  17210. + andl r0, lo(sym1)
  17211. + andl r0, lo(sym2)
  17212. + andl r0, lo(extsym1)
  17213. +
  17214. +sym2:
  17215. --- /dev/null
  17216. +++ b/gas/testsuite/gas/avr32/jmptable.d
  17217. @@ -0,0 +1,20 @@
  17218. +#source: jmptable.s
  17219. +#as:
  17220. +#objdump: -dr
  17221. +#name: jmptable
  17222. +
  17223. +.*: +file format .*
  17224. +
  17225. +Disassembly of section \.text:
  17226. +
  17227. +00000000 <jmptable_test>:
  17228. + 0: fe c8 ff f4 sub r8,pc,-12
  17229. + 4: f0 00 00 2f add pc,r8,r0<<0x2
  17230. + 8: d7 03 nop
  17231. + a: 00 00 add r0,r0
  17232. + c: c0 38 rjmp 12 <jmptable_test\+0x12>
  17233. + e: c0 38 rjmp 14 <jmptable_test\+0x14>
  17234. + 10: c0 38 rjmp 16 <jmptable_test\+0x16>
  17235. + 12: d7 03 nop
  17236. + 14: d7 03 nop
  17237. + 16: d7 03 nop
  17238. --- /dev/null
  17239. +++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
  17240. @@ -0,0 +1,25 @@
  17241. +#source: jmptable.s
  17242. +#as: --linkrelax
  17243. +#objdump: -dr
  17244. +#name: jmptable_linkrelax
  17245. +
  17246. +.*: +file format .*
  17247. +
  17248. +Disassembly of section \.text:
  17249. +
  17250. +00000000 <jmptable_test>:
  17251. + 0: fe c8 00 00 sub r8,pc,0
  17252. + 0: R_AVR32_16N_PCREL \.text\+0xc
  17253. + 4: f0 00 00 2f add pc,r8,r0<<0x2
  17254. + 8: d7 03 nop
  17255. + a: 00 00 add r0,r0
  17256. + a: R_AVR32_ALIGN \*ABS\*\+0x2
  17257. + c: c0 08 rjmp c <jmptable_test\+0xc>
  17258. + c: R_AVR32_11H_PCREL \.text\+0x12
  17259. + e: c0 08 rjmp e <jmptable_test\+0xe>
  17260. + e: R_AVR32_11H_PCREL \.text\+0x14
  17261. + 10: c0 08 rjmp 10 <jmptable_test\+0x10>
  17262. + 10: R_AVR32_11H_PCREL \.text\+0x16
  17263. + 12: d7 03 nop
  17264. + 14: d7 03 nop
  17265. + 16: d7 03 nop
  17266. --- /dev/null
  17267. +++ b/gas/testsuite/gas/avr32/jmptable.s
  17268. @@ -0,0 +1,14 @@
  17269. +
  17270. + .text
  17271. + .global jmptable_test
  17272. +jmptable_test:
  17273. + sub r8, pc, -(.L1 - .)
  17274. + add pc, r8, r0 << 2
  17275. + nop
  17276. + .align 2
  17277. +.L1: rjmp 1f
  17278. + rjmp 2f
  17279. + rjmp 3f
  17280. +1: nop
  17281. +2: nop
  17282. +3: nop
  17283. --- /dev/null
  17284. +++ b/gas/testsuite/gas/avr32/lda_nopic.d
  17285. @@ -0,0 +1,32 @@
  17286. +#source: lda.s
  17287. +#as:
  17288. +#objdump: -dr
  17289. +#name: lda_nopic
  17290. +
  17291. +.*: +file format .*
  17292. +
  17293. +Disassembly of section \.text:
  17294. +
  17295. +00000000 <lda_test>:
  17296. + 0: f2 c8 00 00 sub r8,r9,0
  17297. +
  17298. +00000004 <far_negative>:
  17299. + 4: f6 ca 00 00 sub r10,r11,0
  17300. + ...
  17301. + 8000: fe c0 7f fc sub r0,pc,32764
  17302. + 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
  17303. + 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
  17304. + 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
  17305. + 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
  17306. + 800c: fe c5 80 04 sub r5,pc,-32764
  17307. + ...
  17308. + 8010: R_AVR32_32_CPENT \.text
  17309. + 8014: R_AVR32_32_CPENT \.data
  17310. + 8018: R_AVR32_32_CPENT undefined
  17311. + 801c: R_AVR32_32_CPENT \.text\+0x1001c
  17312. +
  17313. +00010008 <far_positive>:
  17314. + 10008: fa cc 00 00 sub r12,sp,0
  17315. + ...
  17316. +0001001c <toofar_positive>:
  17317. + 1001c: fe ce 00 00 sub lr,pc,0
  17318. --- /dev/null
  17319. +++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
  17320. @@ -0,0 +1,41 @@
  17321. +#source: lda.s
  17322. +#as: --linkrelax
  17323. +#objdump: -dr
  17324. +#name: lda_nopic_linkrelax
  17325. +
  17326. +.*: +file format .*
  17327. +
  17328. +Disassembly of section \.text:
  17329. +
  17330. +00000000 <lda_test>:
  17331. + 0: f2 c8 00 00 sub r8,r9,0
  17332. +
  17333. +00000004 <far_negative>:
  17334. + 4: f6 ca 00 00 sub r10,r11,0
  17335. + \.\.\.
  17336. + 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
  17337. + 8000: R_AVR32_9W_CP \.text\+0x800c
  17338. + 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
  17339. + 8002: R_AVR32_9W_CP \.text\+0x8010
  17340. + 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
  17341. + 8004: R_AVR32_9W_CP \.text\+0x8014
  17342. + 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
  17343. + 8006: R_AVR32_9W_CP \.text\+0x8018
  17344. + 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
  17345. + 8008: R_AVR32_9W_CP \.text\+0x801c
  17346. + 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
  17347. + 800a: R_AVR32_9W_CP \.text\+0x8020
  17348. + \.\.\.
  17349. + 800c: R_AVR32_ALIGN \*ABS\*\+0x2
  17350. + 800c: R_AVR32_32_CPENT \.text\+0x4
  17351. + 8010: R_AVR32_32_CPENT \.text
  17352. + 8014: R_AVR32_32_CPENT \.data
  17353. + 8018: R_AVR32_32_CPENT undefined
  17354. + 801c: R_AVR32_32_CPENT \.text\+0x10020
  17355. + 8020: R_AVR32_32_CPENT \.text\+0x1000c
  17356. +
  17357. +0001000c <far_positive>:
  17358. + 1000c: fa cc 00 00 sub r12,sp,0
  17359. + \.\.\.
  17360. +00010020 <toofar_positive>:
  17361. + 10020: fe ce 00 00 sub lr,pc,0
  17362. --- /dev/null
  17363. +++ b/gas/testsuite/gas/avr32/lda_pic.d
  17364. @@ -0,0 +1,32 @@
  17365. +#source: lda.s
  17366. +#as: --pic
  17367. +#objdump: -dr
  17368. +#name: lda_pic
  17369. +
  17370. +.*: +file format .*
  17371. +
  17372. +Disassembly of section \.text:
  17373. +
  17374. +00000000 <lda_test>:
  17375. + 0: f2 c8 00 00 sub r8,r9,0
  17376. +
  17377. +00000004 <far_negative>:
  17378. + 4: f6 ca 00 00 sub r10,r11,0
  17379. + ...
  17380. + 8000: fe c0 7f fc sub r0,pc,32764
  17381. + 8004: ec f1 00 00 ld.w r1,r6\[0\]
  17382. + 8004: R_AVR32_GOT16S toofar_negative
  17383. + 8008: ec f2 00 00 ld.w r2,r6\[0\]
  17384. + 8008: R_AVR32_GOT16S different_section
  17385. + 800c: ec f3 00 00 ld.w r3,r6\[0\]
  17386. + 800c: R_AVR32_GOT16S undefined
  17387. + 8010: ec f4 00 00 ld.w r4,r6\[0\]
  17388. + 8010: R_AVR32_GOT16S toofar_positive
  17389. + 8014: fe c5 80 14 sub r5,pc,-32748
  17390. + ...
  17391. +
  17392. +00010000 <far_positive>:
  17393. + 10000: fa cc 00 00 sub r12,sp,0
  17394. + ...
  17395. +00010014 <toofar_positive>:
  17396. + 10014: fe ce 00 00 sub lr,pc,0
  17397. --- /dev/null
  17398. +++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
  17399. @@ -0,0 +1,40 @@
  17400. +#source: lda.s
  17401. +#as: --pic --linkrelax
  17402. +#objdump: -dr
  17403. +#name: lda_pic_linkrelax
  17404. +
  17405. +.*: +file format .*
  17406. +
  17407. +Disassembly of section \.text:
  17408. +
  17409. +00000000 <lda_test>:
  17410. + 0: f2 c8 00 00 sub r8,r9,0
  17411. +
  17412. +00000004 <far_negative>:
  17413. + 4: f6 ca 00 00 sub r10,r11,0
  17414. + ...
  17415. + 8000: e0 60 00 00 mov r0,0
  17416. + 8000: R_AVR32_LDA_GOT far_negative
  17417. + 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
  17418. + 8008: e0 61 00 00 mov r1,0
  17419. + 8008: R_AVR32_LDA_GOT toofar_negative
  17420. + 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
  17421. + 8010: e0 62 00 00 mov r2,0
  17422. + 8010: R_AVR32_LDA_GOT different_section
  17423. + 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
  17424. + 8018: e0 63 00 00 mov r3,0
  17425. + 8018: R_AVR32_LDA_GOT undefined
  17426. + 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
  17427. + 8020: e0 64 00 00 mov r4,0
  17428. + 8020: R_AVR32_LDA_GOT toofar_positive
  17429. + 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
  17430. + 8028: e0 65 00 00 mov r5,0
  17431. + 8028: R_AVR32_LDA_GOT far_positive
  17432. + 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
  17433. + ...
  17434. +
  17435. +00010018 <far_positive>:
  17436. + 10018: fa cc 00 00 sub r12,sp,0
  17437. + ...
  17438. +0001002c <toofar_positive>:
  17439. + 1002c: fe ce 00 00 sub lr,pc,0
  17440. --- /dev/null
  17441. +++ b/gas/testsuite/gas/avr32/lda.s
  17442. @@ -0,0 +1,30 @@
  17443. +
  17444. + .text
  17445. + .global lda_test
  17446. +lda_test:
  17447. +toofar_negative:
  17448. + sub r8, r9, 0
  17449. +far_negative:
  17450. + sub r10, r11, 0
  17451. +
  17452. + .fill 32760, 1, 0x00
  17453. +
  17454. + lda.w r0, far_negative
  17455. + lda.w r1, toofar_negative
  17456. + lda.w r2, different_section
  17457. + lda.w r3, undefined
  17458. + lda.w r4, toofar_positive
  17459. + lda.w r5, far_positive
  17460. +
  17461. + .cpool
  17462. +
  17463. + .fill 32744, 1, 0x00
  17464. +far_positive:
  17465. + sub r12, sp, 0
  17466. + .fill 16, 1, 0x00
  17467. +toofar_positive:
  17468. + sub lr, pc, 0
  17469. +
  17470. + .data
  17471. +different_section:
  17472. + .long 0x12345678
  17473. --- /dev/null
  17474. +++ b/gas/testsuite/gas/avr32/pcrel.d
  17475. @@ -0,0 +1,64 @@
  17476. +#as:
  17477. +#objdump: -dr
  17478. +#name: pcrel
  17479. +
  17480. +.*: +file format .*
  17481. +
  17482. +Disassembly of section \.text:
  17483. +
  17484. +00000000 <test_rjmp>:
  17485. + 0: d7 03 nop
  17486. + 2: c0 28 rjmp 6 <test_rjmp\+0x6>
  17487. + 4: d7 03 nop
  17488. + 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
  17489. + 6: R_AVR32_22H_PCREL extsym10
  17490. +
  17491. +0000000a <test_rcall>:
  17492. + a: d7 03 nop
  17493. +0000000c <test_rcall2>:
  17494. + c: c0 2c rcall 10 <test_rcall2\+0x4>
  17495. + e: d7 03 nop
  17496. + 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
  17497. + 10: R_AVR32_22H_PCREL extsym21
  17498. +
  17499. +00000014 <test_branch>:
  17500. + 14: c0 31 brne 1a <test_branch\+0x6>
  17501. + 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
  17502. + 16: R_AVR32_22H_PCREL test_branch
  17503. + 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
  17504. + 1a: R_AVR32_22H_PCREL extsym21
  17505. +
  17506. +0000001e <test_lddpc>:
  17507. + 1e: 48 30 lddpc r0,28 <sym1>
  17508. + 20: 48 20 lddpc r0,28 <sym1>
  17509. + 22: fe f0 00 00 ld.w r0,pc\[0\]
  17510. + 22: R_AVR32_16B_PCREL extsym16
  17511. + \.\.\.
  17512. +
  17513. +00000028 <sym1>:
  17514. + 28: d7 03 nop
  17515. + 2a: d7 03 nop
  17516. +
  17517. +0000002c <test_local>:
  17518. + 2c: 48 20 lddpc r0,34 <test_local\+0x8>
  17519. + 2e: 48 30 lddpc r0,38 <test_local\+0xc>
  17520. + 30: 48 20 lddpc r0,38 <test_local\+0xc>
  17521. + 32: 00 00 add r0,r0
  17522. + 34: d7 03 nop
  17523. + 36: d7 03 nop
  17524. + 38: d7 03 nop
  17525. + 3a: d7 03 nop
  17526. +
  17527. +Disassembly of section \.text\.init:
  17528. +
  17529. +00000000 <test_inter_section>:
  17530. + 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
  17531. + 0: R_AVR32_22H_PCREL test_rcall
  17532. + 4: d7 03 nop
  17533. + 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
  17534. + 6: R_AVR32_22H_PCREL test_rcall
  17535. + a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
  17536. + a: R_AVR32_22H_PCREL \.text\+0xc
  17537. + e: d7 03 nop
  17538. + 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
  17539. + 10: R_AVR32_22H_PCREL \.text\+0xc
  17540. --- /dev/null
  17541. +++ b/gas/testsuite/gas/avr32/pcrel.s
  17542. @@ -0,0 +1,57 @@
  17543. +
  17544. + .text
  17545. + .global test_rjmp
  17546. +test_rjmp:
  17547. + nop
  17548. + rjmp 0f
  17549. + nop
  17550. +0: rjmp extsym10
  17551. +
  17552. + .global test_rcall
  17553. +test_rcall:
  17554. + nop
  17555. +test_rcall2:
  17556. + rcall 0f
  17557. + nop
  17558. +0: rcall extsym21
  17559. +
  17560. + .global test_branch
  17561. +test_branch:
  17562. + brne 0f
  17563. + /* This will generate a reloc since test_branch is global */
  17564. + bral test_branch
  17565. +0: breq extsym21
  17566. +
  17567. + .global test_lddpc
  17568. +test_lddpc:
  17569. + lddpc r0,sym1
  17570. + lddpc r0,sym1
  17571. + lddpc r0,extsym16
  17572. +
  17573. + .align 2
  17574. +sym1: nop
  17575. + nop
  17576. +
  17577. + .global test_local
  17578. +test_local:
  17579. + lddpc r0, .LC1
  17580. + lddpc r0, .LC2
  17581. + lddpc r0, .LC1 + 0x4
  17582. +
  17583. + .align 2
  17584. +.LC1:
  17585. + nop
  17586. + nop
  17587. +.LC2:
  17588. + nop
  17589. + nop
  17590. +
  17591. + .section .text.init,"ax"
  17592. + .global test_inter_section
  17593. +test_inter_section:
  17594. + rcall test_rcall
  17595. + nop
  17596. + rcall test_rcall
  17597. + rcall test_rcall2
  17598. + nop
  17599. + rcall test_rcall2
  17600. --- /dev/null
  17601. +++ b/gas/testsuite/gas/avr32/pico.d
  17602. @@ -0,0 +1,149 @@
  17603. +#as:
  17604. +#objdump: -dr
  17605. +#name: pico
  17606. +
  17607. +.*: +file format .*
  17608. +
  17609. +Disassembly of section \.text:
  17610. +
  17611. +[0-9a-f]* <picosvmac>:
  17612. + *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
  17613. + *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
  17614. + *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
  17615. + *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
  17616. +
  17617. +[0-9a-f]* <picosvmul>:
  17618. + *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
  17619. + *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
  17620. + *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
  17621. + *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
  17622. +
  17623. +[0-9a-f]* <picovmac>:
  17624. + *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
  17625. + *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
  17626. + *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
  17627. + *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
  17628. +
  17629. +[0-9a-f]* <picovmul>:
  17630. + *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
  17631. + *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
  17632. + *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
  17633. + *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
  17634. +
  17635. +[0-9a-f]* <picold_d>:
  17636. + *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
  17637. + *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
  17638. + *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
  17639. + *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
  17640. + *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
  17641. + *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
  17642. + *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
  17643. +
  17644. +[0-9a-f]* <picold_w>:
  17645. + *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
  17646. + *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
  17647. + *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
  17648. + *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
  17649. + *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
  17650. + *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
  17651. + *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
  17652. +
  17653. +[0-9a-f]* <picoldm_d>:
  17654. + *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
  17655. + *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
  17656. + *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
  17657. + *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
  17658. +
  17659. +[0-9a-f]* <picoldm_d_pu>:
  17660. + *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
  17661. + *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
  17662. + *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
  17663. + *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
  17664. +
  17665. +[0-9a-f]* <picoldm_w>:
  17666. + *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
  17667. + *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
  17668. + *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
  17669. + *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
  17670. + *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
  17671. + *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
  17672. + *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
  17673. + *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
  17674. +
  17675. +[0-9a-f]* <picoldm_w_pu>:
  17676. + *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
  17677. + *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
  17678. + *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
  17679. + *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
  17680. + *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
  17681. + *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
  17682. + *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
  17683. + *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
  17684. +
  17685. +[0-9a-f]* <picomv_d>:
  17686. + *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
  17687. + *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
  17688. + *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
  17689. + *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
  17690. + *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
  17691. + *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
  17692. + *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
  17693. + *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
  17694. +
  17695. +[0-9a-f]* <picomv_w>:
  17696. + *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
  17697. + *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
  17698. + *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
  17699. + *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
  17700. + *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
  17701. + *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
  17702. + *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
  17703. + *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
  17704. +
  17705. +[0-9a-f]* <picost_d>:
  17706. + *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
  17707. + *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
  17708. + *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
  17709. + *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
  17710. + *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
  17711. + *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
  17712. +
  17713. +[0-9a-f]* <picost_w>:
  17714. + *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
  17715. + *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
  17716. + *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
  17717. + *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
  17718. + *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
  17719. + *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
  17720. +
  17721. +[0-9a-f]* <picostm_d>:
  17722. + *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
  17723. + *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
  17724. + *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
  17725. + *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
  17726. +
  17727. +[0-9a-f]* <picostm_d_pu>:
  17728. + *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
  17729. + *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
  17730. + *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
  17731. + *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
  17732. +
  17733. +[0-9a-f]* <picostm_w>:
  17734. + *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
  17735. + *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
  17736. + *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
  17737. + *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
  17738. + *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
  17739. + *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
  17740. + *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
  17741. + *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
  17742. +
  17743. +[0-9a-f]* <picostm_w_pu>:
  17744. + *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
  17745. + *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
  17746. + *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
  17747. + *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
  17748. + *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
  17749. + *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
  17750. + *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
  17751. + *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
  17752. --- /dev/null
  17753. +++ b/gas/testsuite/gas/avr32/pico.s
  17754. @@ -0,0 +1,144 @@
  17755. +
  17756. + .text
  17757. + .global picosvmac
  17758. +picosvmac:
  17759. + picosvmac out0, in0, in0, in0
  17760. + picosvmac out2, in11, in11, in11
  17761. + picosvmac out1, in10, in0, in5
  17762. + picosvmac out3, in6, in9, in0
  17763. + .global picosvmul
  17764. +picosvmul:
  17765. + picosvmul out0, in0, in0, in0
  17766. + picosvmul out2, in11, in11, in11
  17767. + picosvmul out1, in10, in0, in5
  17768. + picosvmul out3, in6, in9, in0
  17769. + .global picovmac
  17770. +picovmac:
  17771. + picovmac out0, in0, in0, in0
  17772. + picovmac out2, in11, in11, in11
  17773. + picovmac out1, in10, in0, in5
  17774. + picovmac out3, in6, in9, in0
  17775. + .global picovmul
  17776. +picovmul:
  17777. + picovmul out0, in0, in0, in0
  17778. + picovmul out2, in11, in11, in11
  17779. + picovmul out1, in10, in0, in5
  17780. + picovmul out3, in6, in9, in0
  17781. + .global picold_d
  17782. +picold_d:
  17783. + picold.d vmu2_out, pc[1020]
  17784. + picold.d inpix2, r0[1020]
  17785. + picold.d inpix2, r0[0]
  17786. + picold.d coeff0_a, --r8
  17787. + picold.d coeff1_a, --r7
  17788. + picold.d inpix0, r10[r5 << 2]
  17789. + picold.d vmu0_out, r3[r6 << 0]
  17790. + .global picold_w
  17791. +picold_w:
  17792. + picold.w config, pc[1020]
  17793. + picold.w inpix2, r0[1020]
  17794. + picold.w inpix2, r0[0]
  17795. + picold.w coeff0_b, --r8
  17796. + picold.w coeff1_a, --r7
  17797. + picold.w inpix1, r10[r5 << 2]
  17798. + picold.w vmu1_out, r3[r6 << 0]
  17799. + .global picoldm_d
  17800. +picoldm_d:
  17801. + picoldm.d pc, inpix2-config
  17802. + picoldm.d r0, inpix2, inpix1
  17803. + picoldm.d r7, vmu2_out, config
  17804. + picoldm.d r8, inpix2-vmu1_out
  17805. + .global picoldm_d_pu
  17806. +picoldm_d_pu:
  17807. + picoldm.d pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
  17808. + picoldm.d r0++, inpix2, inpix1
  17809. + picoldm.d r7++, vmu2_out, config
  17810. + picoldm.d r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
  17811. + .global picoldm_w
  17812. +picoldm_w:
  17813. + picoldm.w pc, inpix2-coeff0_b
  17814. + picoldm.w r0, inpix2
  17815. + picoldm.w r7, coeff0_b
  17816. + picoldm.w r8, inpix2-coeff0_a
  17817. + picoldm.w pc, coeff1_a-config
  17818. + picoldm.w r0, coeff1_a
  17819. + picoldm.w r7, config
  17820. + picoldm.w r8, coeff1_a-vmu2_out
  17821. + .global picoldm_w_pu
  17822. +picoldm_w_pu:
  17823. + picoldm.w pc++, inpix2-coeff0_b
  17824. + picoldm.w r0++, inpix2
  17825. + picoldm.w r7++, coeff0_b
  17826. + picoldm.w r8++, inpix2-coeff0_a
  17827. + picoldm.w pc++, coeff1_a-config
  17828. + picoldm.w r0++, coeff1_a
  17829. + picoldm.w r7++, config
  17830. + picoldm.w r8++, coeff1_a-vmu2_out
  17831. + .global picomv_d
  17832. +picomv_d:
  17833. + picomv.d vmu2_out, lr
  17834. + picomv.d inpix2, r0
  17835. + picomv.d coeff0_a, r8
  17836. + picomv.d coeff1_a, r6
  17837. + picomv.d pc, vmu2_out
  17838. + picomv.d r0, inpix2
  17839. + picomv.d r8, coeff0_a
  17840. + picomv.d r6, coeff1_a
  17841. + .global picomv_w
  17842. +picomv_w:
  17843. + picomv.w config, pc
  17844. + picomv.w inpix2, r0
  17845. + picomv.w coeff0_b, r8
  17846. + picomv.w coeff1_a, r7
  17847. + picomv.w pc, config
  17848. + picomv.w r0, inpix2
  17849. + picomv.w r8, coeff0_b
  17850. + picomv.w r7, coeff1_a
  17851. + .global picost_d
  17852. +picost_d:
  17853. + picost.d pc[1020], vmu2_out
  17854. + picost.d r0[0], inpix2
  17855. + picost.d r8++, coeff0_a
  17856. + picost.d r7++, coeff1_a
  17857. + picost.d r10[r5 << 2], inpix0
  17858. + picost.d r3[r6 << 0], vmu0_out
  17859. + .global picost_w
  17860. +picost_w:
  17861. + picost.w pc[1020], config
  17862. + picost.w r0[0], inpix2
  17863. + picost.w r8++, coeff0_b
  17864. + picost.w r7++, coeff1_a
  17865. + picost.w r10[r5 << 2], inpix1
  17866. + picost.w r3[r6 << 0], vmu1_out
  17867. + .global picostm_d
  17868. +picostm_d:
  17869. + picostm.d pc, inpix2-config
  17870. + picostm.d r0, inpix2, inpix1
  17871. + picostm.d r7, vmu2_out, config
  17872. + picostm.d r8, inpix2-vmu1_out
  17873. + .global picostm_d_pu
  17874. +picostm_d_pu:
  17875. + picostm.d --pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
  17876. + picostm.d --r0, inpix2, inpix1
  17877. + picostm.d --r7, vmu2_out, config
  17878. + picostm.d --r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
  17879. + .global picostm_w
  17880. +picostm_w:
  17881. + picostm.w pc, inpix2-coeff0_b
  17882. + picostm.w r0, inpix2
  17883. + picostm.w r7, coeff0_b
  17884. + picostm.w r8, inpix2-coeff0_a
  17885. + picostm.w pc, coeff1_a-config
  17886. + picostm.w r0, coeff1_a
  17887. + picostm.w r7, config
  17888. + picostm.w r8, coeff1_a-vmu2_out
  17889. + .global picostm_w_pu
  17890. +picostm_w_pu:
  17891. + picostm.w --pc, inpix2-coeff0_b
  17892. + picostm.w --r0, inpix2
  17893. + picostm.w --r7, coeff0_b
  17894. + picostm.w --r8, inpix2-coeff0_a
  17895. + picostm.w --pc, coeff1_a-config
  17896. + picostm.w --r0, coeff1_a
  17897. + picostm.w --r7, config
  17898. + picostm.w --r8, coeff1_a-vmu2_out
  17899. --- /dev/null
  17900. +++ b/gas/testsuite/gas/avr32/pic_reloc.d
  17901. @@ -0,0 +1,27 @@
  17902. +#as:
  17903. +#objdump: -dr
  17904. +#name: pic_reloc
  17905. +
  17906. +.*: +file format .*
  17907. +
  17908. +Disassembly of section \.text:
  17909. +
  17910. +00000000 <mcall_got>:
  17911. + 0: f0 16 00 00 mcall r6\[0\]
  17912. + 0: R_AVR32_GOT18SW extfunc
  17913. + 4: f0 16 00 00 mcall r6\[0\]
  17914. + 4: R_AVR32_GOT18SW \.L1
  17915. + 8: f0 16 00 00 mcall r6\[0\]
  17916. + 8: R_AVR32_GOT18SW \.L2
  17917. + c: f0 16 00 00 mcall r6\[0\]
  17918. + c: R_AVR32_GOT18SW mcall_got
  17919. +
  17920. +00000010 <ldw_got>:
  17921. + 10: ec f0 00 00 ld.w r0,r6\[0\]
  17922. + 10: R_AVR32_GOT16S extvar
  17923. + 14: ec f0 00 00 ld.w r0,r6\[0\]
  17924. + 14: R_AVR32_GOT16S \.L3
  17925. + 18: ec f0 00 00 ld.w r0,r6\[0\]
  17926. + 18: R_AVR32_GOT16S \.L4
  17927. + 1c: ec f0 00 00 ld.w r0,r6\[0\]
  17928. + 1c: R_AVR32_GOT16S ldw_got
  17929. --- /dev/null
  17930. +++ b/gas/testsuite/gas/avr32/pic_reloc.s
  17931. @@ -0,0 +1,18 @@
  17932. +
  17933. + .text
  17934. + .global mcall_got
  17935. +mcall_got:
  17936. +.L1:
  17937. + mcall r6[extfunc@got]
  17938. + mcall r6[.L1@got]
  17939. + mcall r6[.L2@got]
  17940. + mcall r6[mcall_got@got]
  17941. +.L2:
  17942. +
  17943. + .global ldw_got
  17944. +ldw_got:
  17945. +.L3: ld.w r0,r6[extvar@got]
  17946. + ld.w r0,r6[.L3@got]
  17947. + ld.w r0,r6[.L4@got]
  17948. + ld.w r0,r6[ldw_got@got]
  17949. +.L4:
  17950. --- /dev/null
  17951. +++ b/gas/testsuite/gas/avr32/symdiff.d
  17952. @@ -0,0 +1,24 @@
  17953. +#source: symdiff.s
  17954. +#as:
  17955. +#objdump: -dr
  17956. +#name: symdiff
  17957. +
  17958. +.*: +file format .*
  17959. +
  17960. +Disassembly of section \.text:
  17961. +
  17962. +00000000 <diff32>:
  17963. + 0: 00 00 add r0,r0
  17964. + 2: 00 04 add r4,r0
  17965. +
  17966. +00000004 <diff16>:
  17967. + 4: 00 04 add r4,r0
  17968. +
  17969. +00000006 <diff8>:
  17970. + 6: 04 00 add r0,r2
  17971. +
  17972. +00000008 <symdiff_test>:
  17973. + 8: d7 03 nop
  17974. + a: d7 03 nop
  17975. + c: d7 03 nop
  17976. + e: d7 03 nop
  17977. --- /dev/null
  17978. +++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
  17979. @@ -0,0 +1,28 @@
  17980. +#source: symdiff.s
  17981. +#as: --linkrelax
  17982. +#objdump: -dr
  17983. +#name: symdiff_linkrelax
  17984. +
  17985. +.*: +file format .*
  17986. +
  17987. +Disassembly of section \.text:
  17988. +
  17989. +00000000 <diff32>:
  17990. + 0: 00 00 add r0,r0
  17991. + 0: R_AVR32_DIFF32 \.text\+0xa
  17992. + 2: 00 04 add r4,r0
  17993. +
  17994. +00000004 <diff16>:
  17995. + 4: 00 04 add r4,r0
  17996. + 4: R_AVR32_DIFF16 \.text\+0xa
  17997. +
  17998. +00000006 <diff8>:
  17999. + 6: 04 00 add r0,r2
  18000. + 6: R_AVR32_DIFF8 \.text\+0xa
  18001. + 7: R_AVR32_ALIGN \*ABS\*\+0x1
  18002. +
  18003. +00000008 <symdiff_test>:
  18004. + 8: d7 03 nop
  18005. + a: d7 03 nop
  18006. + c: d7 03 nop
  18007. + e: d7 03 nop
  18008. --- /dev/null
  18009. +++ b/gas/testsuite/gas/avr32/symdiff.s
  18010. @@ -0,0 +1,19 @@
  18011. +
  18012. + .text
  18013. + .global diff32
  18014. +diff32:
  18015. + .long .L2 - .L1
  18016. + .global diff16
  18017. +diff16:
  18018. + .short .L2 - .L1
  18019. + .global diff8
  18020. +diff8:
  18021. + .byte .L2 - .L1
  18022. +
  18023. + .global symdiff_test
  18024. + .align 1
  18025. +symdiff_test:
  18026. + nop
  18027. +.L1: nop
  18028. + nop
  18029. +.L2: nop
  18030. --- a/gas/write.c
  18031. +++ b/gas/write.c
  18032. @@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP,
  18033. #endif /* defined (TC_GENERIC_RELAX_TABLE) */
  18034. +#ifdef TC_RELAX_ALIGN
  18035. +#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
  18036. +#else
  18037. +#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
  18038. /* Relax_align. Advance location counter to next address that has 'alignment'
  18039. lowest order bits all 0s, return size of adjustment made. */
  18040. static relax_addressT
  18041. @@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
  18042. #endif
  18043. return (new_address - address);
  18044. }
  18045. +#endif
  18046. /* Now we have a segment, not a crowd of sub-segments, we can make
  18047. fr_address values.
  18048. @@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
  18049. case rs_align_code:
  18050. case rs_align_test:
  18051. {
  18052. - addressT offset = relax_align (address, (int) fragP->fr_offset);
  18053. + addressT offset = RELAX_ALIGN(segment, fragP, address);
  18054. if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
  18055. offset = 0;
  18056. @@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
  18057. {
  18058. addressT oldoff, newoff;
  18059. - oldoff = relax_align (was_address + fragP->fr_fix,
  18060. - (int) offset);
  18061. - newoff = relax_align (address + fragP->fr_fix,
  18062. - (int) offset);
  18063. + oldoff = RELAX_ALIGN (segment, fragP,
  18064. + was_address + fragP->fr_fix);
  18065. + newoff = RELAX_ALIGN (segment, fragP,
  18066. + address + fragP->fr_fix);
  18067. if (fragP->fr_subtype != 0)
  18068. {
  18069. --- a/include/dis-asm.h
  18070. +++ b/include/dis-asm.h
  18071. @@ -204,13 +204,14 @@ typedef struct disassemble_info
  18072. } disassemble_info;
  18073. -
  18074. +
  18075. /* Standard disassemblers. Disassemble one instruction at the given
  18076. target address. Return number of octets processed. */
  18077. typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
  18078. extern int print_insn_alpha (bfd_vma, disassemble_info *);
  18079. extern int print_insn_avr (bfd_vma, disassemble_info *);
  18080. +extern int print_insn_avr32 (bfd_vma, disassemble_info *);
  18081. extern int print_insn_bfin (bfd_vma, disassemble_info *);
  18082. extern int print_insn_big_arm (bfd_vma, disassemble_info *);
  18083. extern int print_insn_big_mips (bfd_vma, disassemble_info *);
  18084. @@ -242,7 +243,7 @@ extern int print_insn_little_arm (bfd_vm
  18085. extern int print_insn_little_mips (bfd_vma, disassemble_info *);
  18086. extern int print_insn_little_or32 (bfd_vma, disassemble_info *);
  18087. extern int print_insn_little_powerpc (bfd_vma, disassemble_info *);
  18088. -extern int print_insn_little_score (bfd_vma, disassemble_info *);
  18089. +extern int print_insn_little_score (bfd_vma, disassemble_info *);
  18090. extern int print_insn_m32c (bfd_vma, disassemble_info *);
  18091. extern int print_insn_m32r (bfd_vma, disassemble_info *);
  18092. extern int print_insn_m68hc11 (bfd_vma, disassemble_info *);
  18093. @@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
  18094. extern void print_mips_disassembler_options (FILE *);
  18095. extern void print_ppc_disassembler_options (FILE *);
  18096. extern void print_arm_disassembler_options (FILE *);
  18097. +extern void print_avr32_disassembler_options (FILE *);
  18098. extern void parse_arm_disassembler_option (char *);
  18099. +extern void parse_avr32_disassembler_option (char *);
  18100. extern int get_arm_regname_num_options (void);
  18101. extern int set_arm_regname_option (int);
  18102. extern int get_arm_regnames (int, const char **, const char **, const char *const **);
  18103. @@ -306,7 +309,7 @@ extern void disassemble_init_for_target
  18104. /* Document any target specific options available from the disassembler. */
  18105. extern void disassembler_usage (FILE *);
  18106. -
  18107. +
  18108. /* This block of definitions is for particular callers who read instructions
  18109. into a buffer before calling the instruction decoder. */
  18110. --- /dev/null
  18111. +++ b/include/elf/avr32.h
  18112. @@ -0,0 +1,98 @@
  18113. +/* AVR32 ELF support for BFD.
  18114. + Copyright 2003-2006 Atmel Corporation.
  18115. +
  18116. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  18117. +
  18118. + This file is part of BFD, the Binary File Descriptor library.
  18119. +
  18120. + This program is free software; you can redistribute it and/or
  18121. + modify it under the terms of the GNU General Public License as
  18122. + published by the Free Software Foundation; either version 2 of the
  18123. + License, or (at your option) any later version.
  18124. +
  18125. + This program is distributed in the hope that it will be useful, but
  18126. + WITHOUT ANY WARRANTY; without even the implied warranty of
  18127. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18128. + General Public License for more details.
  18129. +
  18130. + You should have received a copy of the GNU General Public License
  18131. + along with this program; if not, write to the Free Software
  18132. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  18133. + 02111-1307, USA. */
  18134. +
  18135. +#include "elf/reloc-macros.h"
  18136. +
  18137. +/* CPU-specific flags for the ELF header e_flags field */
  18138. +#define EF_AVR32_LINKRELAX 0x01
  18139. +#define EF_AVR32_PIC 0x02
  18140. +
  18141. +START_RELOC_NUMBERS (elf_avr32_reloc_type)
  18142. + RELOC_NUMBER (R_AVR32_NONE, 0)
  18143. +
  18144. + /* Data Relocations */
  18145. + RELOC_NUMBER (R_AVR32_32, 1)
  18146. + RELOC_NUMBER (R_AVR32_16, 2)
  18147. + RELOC_NUMBER (R_AVR32_8, 3)
  18148. + RELOC_NUMBER (R_AVR32_32_PCREL, 4)
  18149. + RELOC_NUMBER (R_AVR32_16_PCREL, 5)
  18150. + RELOC_NUMBER (R_AVR32_8_PCREL, 6)
  18151. + RELOC_NUMBER (R_AVR32_DIFF32, 7)
  18152. + RELOC_NUMBER (R_AVR32_DIFF16, 8)
  18153. + RELOC_NUMBER (R_AVR32_DIFF8, 9)
  18154. + RELOC_NUMBER (R_AVR32_GOT32, 10)
  18155. + RELOC_NUMBER (R_AVR32_GOT16, 11)
  18156. + RELOC_NUMBER (R_AVR32_GOT8, 12)
  18157. +
  18158. + /* Normal Code Relocations */
  18159. + RELOC_NUMBER (R_AVR32_21S, 13)
  18160. + RELOC_NUMBER (R_AVR32_16U, 14)
  18161. + RELOC_NUMBER (R_AVR32_16S, 15)
  18162. + RELOC_NUMBER (R_AVR32_8S, 16)
  18163. + RELOC_NUMBER (R_AVR32_8S_EXT, 17)
  18164. +
  18165. + /* PC-Relative Code Relocations */
  18166. + RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
  18167. + RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
  18168. + RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
  18169. + RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
  18170. + RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
  18171. + RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
  18172. + RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
  18173. + RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
  18174. + RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
  18175. +
  18176. + /* Special Code Relocations */
  18177. + RELOC_NUMBER (R_AVR32_HI16, 27)
  18178. + RELOC_NUMBER (R_AVR32_LO16, 28)
  18179. +
  18180. + /* PIC Relocations */
  18181. + RELOC_NUMBER (R_AVR32_GOTPC, 29)
  18182. + RELOC_NUMBER (R_AVR32_GOTCALL, 30)
  18183. + RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
  18184. + RELOC_NUMBER (R_AVR32_GOT21S, 32)
  18185. + RELOC_NUMBER (R_AVR32_GOT18SW, 33)
  18186. + RELOC_NUMBER (R_AVR32_GOT16S, 34)
  18187. + RELOC_NUMBER (R_AVR32_GOT7UW, 35)
  18188. +
  18189. + /* Constant Pool Relocations */
  18190. + RELOC_NUMBER (R_AVR32_32_CPENT, 36)
  18191. + RELOC_NUMBER (R_AVR32_CPCALL, 37)
  18192. + RELOC_NUMBER (R_AVR32_16_CP, 38)
  18193. + RELOC_NUMBER (R_AVR32_9W_CP, 39)
  18194. +
  18195. + /* Dynamic Relocations */
  18196. + RELOC_NUMBER (R_AVR32_RELATIVE, 40)
  18197. + RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
  18198. + RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
  18199. +
  18200. + /* Linkrelax Information */
  18201. + RELOC_NUMBER (R_AVR32_ALIGN, 43)
  18202. +
  18203. + RELOC_NUMBER (R_AVR32_15S, 44)
  18204. +
  18205. +END_RELOC_NUMBERS (R_AVR32_max)
  18206. +
  18207. +/* Processor specific dynamic array tags. */
  18208. +
  18209. +/* The total size in bytes of the Global Offset Table */
  18210. +#define DT_AVR32_GOTSZ 0x70000001
  18211. --- a/include/elf/common.h
  18212. +++ b/include/elf/common.h
  18213. @@ -259,6 +259,9 @@
  18214. /* V850 backend magic number. Written in the absense of an ABI. */
  18215. #define EM_CYGNUS_V850 0x9080
  18216. +/* AVR32 magic number, picked by IAR Systems. */
  18217. +#define EM_AVR32 0x18ad
  18218. +
  18219. /* old S/390 backend magic number. Written in the absence of an ABI. */
  18220. #define EM_S390_OLD 0xa390
  18221. --- a/ld/configdoc.texi
  18222. +++ b/ld/configdoc.texi
  18223. @@ -7,6 +7,7 @@
  18224. @set H8300
  18225. @set HPPA
  18226. @set I960
  18227. +@set AVR32
  18228. @set M68HC11
  18229. @set MMIX
  18230. @set MSP430
  18231. --- a/ld/configure.tgt
  18232. +++ b/ld/configure.tgt
  18233. @@ -109,6 +109,9 @@ xscale-*-elf) targ_emul=armelf
  18234. avr-*-*) targ_emul=avr2
  18235. targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
  18236. ;;
  18237. +avr32-*-none) targ_emul=avr32elf_ap7000
  18238. + targ_extra_emuls="avr32elf_ap7001 avr32elf_ap7002 avr32elf_ap7200 avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a0512es avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512es avr32elf_uc3a1512 avr32elf_uc3a364 avr32elf_uc3a364s avr32elf_uc3a3128 avr32elf_uc3a3128s avr32elf_uc3a3256 avr32elf_uc3a3256s avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256es avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256es avr32elf_uc3b1256" ;;
  18239. +avr32-*-linux*) targ_emul=avr32linux ;;
  18240. bfin-*-elf) targ_emul=elf32bfin;
  18241. targ_extra_emuls="elf32bfinfd"
  18242. targ_extra_libpath=$targ_extra_emuls
  18243. --- /dev/null
  18244. +++ b/ld/emulparams/avr32elf.sh
  18245. @@ -0,0 +1,163 @@
  18246. +# This script is called from ld/genscript.sh
  18247. +# There is a difference on how 'bash' and POSIX handles
  18248. +# the '.' (source) command in a script.
  18249. +# genscript.sh calls this script with argument ${EMULATION_NAME}
  18250. +# but that will fail on POSIX compilant shells like 'sh' or 'dash'
  18251. +# therefor I use the variable directly instead of $1
  18252. +EMULATION=${EMULATION_NAME}
  18253. +SCRIPT_NAME=elf_xip
  18254. +TEMPLATE_NAME=elf32
  18255. +EXTRA_EM_FILE=avr32elf
  18256. +OUTPUT_FORMAT="elf32-avr32"
  18257. +ARCH=avr32
  18258. +MAXPAGESIZE=4096
  18259. +ENTRY=_start
  18260. +EMBEDDED=yes
  18261. +NO_SMALL_DATA=yes
  18262. +NOP=0xd703d703
  18263. +
  18264. +DATA_SEGMENT_ALIGN=8
  18265. +BSS_ALIGNMENT=8
  18266. +
  18267. +RO_LMA_REGION="FLASH"
  18268. +RO_VMA_REGION="FLASH"
  18269. +RW_LMA_REGION="FLASH"
  18270. +RW_VMA_REGION="CPUSRAM"
  18271. +
  18272. +STACK_SIZE=0x1000
  18273. +STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
  18274. +
  18275. +DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
  18276. + . = ${STACK_ADDR};
  18277. + __heap_end__ = .;"
  18278. +
  18279. +case "$EMULATION" in
  18280. +avr32elf_ap*)
  18281. + MACHINE=ap
  18282. + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
  18283. + . = . & 0x9fffffff;"
  18284. + TEXT_START_ADDR=0xa0000000
  18285. + case "$EMULATION" in
  18286. + avr32elf_ap700[0-2])
  18287. + MEMORY="MEMORY
  18288. + {
  18289. + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
  18290. + CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
  18291. + }"
  18292. + ;;
  18293. + avr32elf_ap7200)
  18294. + MEMORY="MEMORY
  18295. + {
  18296. + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
  18297. + CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
  18298. + }"
  18299. + ;;
  18300. + esac
  18301. + ;;
  18302. +
  18303. +avr32elf_uc3*)
  18304. + MACHINE=uc
  18305. + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
  18306. + TEXT_START_ADDR=0x80000000
  18307. + OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
  18308. + .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
  18309. +
  18310. + case "$EMULATION" in
  18311. + avr32elf_uc3a[01]512*)
  18312. + MEMORY="MEMORY
  18313. + {
  18314. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
  18315. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
  18316. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18317. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18318. + }"
  18319. + ;;
  18320. +
  18321. + avr32elf_uc3a[01]256)
  18322. + MEMORY="MEMORY
  18323. + {
  18324. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
  18325. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
  18326. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18327. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18328. + }"
  18329. + ;;
  18330. +
  18331. + avr32elf_uc3b[01]256*)
  18332. + MEMORY="MEMORY
  18333. + {
  18334. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
  18335. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
  18336. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18337. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18338. + }"
  18339. + ;;
  18340. +
  18341. + avr32elf_uc3[ab][01]128)
  18342. + MEMORY="MEMORY
  18343. + {
  18344. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
  18345. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
  18346. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18347. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18348. + }"
  18349. + ;;
  18350. +
  18351. + avr32elf_uc3b[01]64)
  18352. + MEMORY="MEMORY
  18353. + {
  18354. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
  18355. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
  18356. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18357. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18358. + }"
  18359. + ;;
  18360. +
  18361. + avr32elf_uc3a3256*)
  18362. + MEMORY="MEMORY
  18363. + {
  18364. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
  18365. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
  18366. + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
  18367. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18368. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18369. + }"
  18370. + OTHER_SECTIONS ="${OTHER_SECTIONS}
  18371. + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
  18372. +"
  18373. +
  18374. + ;;
  18375. +
  18376. + avr32elf_uc3a3128*)
  18377. + MEMORY="MEMORY
  18378. + {
  18379. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
  18380. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
  18381. + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
  18382. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18383. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18384. + }"
  18385. + OTHER_SECTIONS ="${OTHER_SECTIONS}
  18386. + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
  18387. +"
  18388. + ;;
  18389. +
  18390. + avr32elf_uc3a364*)
  18391. + MEMORY="MEMORY
  18392. + {
  18393. + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
  18394. + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
  18395. + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
  18396. + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
  18397. + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
  18398. + }"
  18399. + OTHER_SECTIONS ="${OTHER_SECTIONS}
  18400. + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
  18401. +"
  18402. + ;;
  18403. +
  18404. +
  18405. + esac
  18406. + ;;
  18407. +
  18408. +esac
  18409. --- /dev/null
  18410. +++ b/ld/emulparams/avr32linux.sh
  18411. @@ -0,0 +1,14 @@
  18412. +ARCH=avr32
  18413. +SCRIPT_NAME=elf
  18414. +TEMPLATE_NAME=elf32
  18415. +EXTRA_EM_FILE=avr32elf
  18416. +OUTPUT_FORMAT="elf32-avr32"
  18417. +GENERATE_SHLIB_SCRIPT=yes
  18418. +MAXPAGESIZE=0x1000
  18419. +TEXT_START_ADDR=0x00001000
  18420. +NOP=0xd703d703
  18421. +
  18422. +# This appears to place the GOT before the data section, which is
  18423. +# essential for uClinux. We don't use those .s* sections on AVR32
  18424. +# anyway, so it shouldn't hurt for regular Linux either...
  18425. +NO_SMALL_DATA=yes
  18426. --- /dev/null
  18427. +++ b/ld/emultempl/avr32elf.em
  18428. @@ -0,0 +1,133 @@
  18429. +# This shell script emits a C file. -*- C -*-
  18430. +# Copyright (C) 2007 Atmel Corporation
  18431. +#
  18432. +# This file is part of GLD, the Gnu Linker.
  18433. +#
  18434. +# This program is free software; you can redistribute it and/or modify
  18435. +# it under the terms of the GNU General Public License as published by
  18436. +# the Free Software Foundation; either version 2 of the License, or
  18437. +# (at your option) any later version.
  18438. +#
  18439. +# This program is distributed in the hope that it will be useful,
  18440. +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  18441. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18442. +# GNU General Public License for more details.
  18443. +#
  18444. +# You should have received a copy of the GNU General Public License
  18445. +# along with this program; if not, write to the Free Software
  18446. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
  18447. +#
  18448. +
  18449. +# This file is sourced from elf32.em, and defines extra avr32-elf
  18450. +# specific routines.
  18451. +#
  18452. +
  18453. +# Generate linker script for writable rodata
  18454. +LD_FLAG=rodata-writable
  18455. +DATA_ALIGNMENT=${DATA_ALIGNMENT_}
  18456. +RELOCATING=" "
  18457. +WRITABLE_RODATA=" "
  18458. +( echo "/* Linker script for writable rodata */"
  18459. + . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
  18460. + . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
  18461. +) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xwr
  18462. +
  18463. +
  18464. +cat >> e${EMULATION_NAME}.c <<EOF
  18465. +
  18466. +#include "libbfd.h"
  18467. +#include "elf32-avr32.h"
  18468. +
  18469. +/* Whether to allow direct references (sub or mov) to SEC_DATA and
  18470. + !SEC_CONTENTS sections when optimizing. Not enabled by default
  18471. + since it might cause link errors. */
  18472. +static int direct_data_refs = 0;
  18473. +
  18474. +static void avr32_elf_after_open (void)
  18475. +{
  18476. + bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
  18477. + gld${EMULATION_NAME}_after_open ();
  18478. +}
  18479. +
  18480. +static int rodata_writable = 0;
  18481. +
  18482. +static char * gld${EMULATION_NAME}_get_script (int *isfile);
  18483. +
  18484. +static char * avr32_elf_get_script (int *isfile)
  18485. +{
  18486. + if ( rodata_writable )
  18487. + {
  18488. +EOF
  18489. +if test -n "$COMPILE_IN"
  18490. +then
  18491. +# Scripts compiled in.
  18492. +
  18493. +# sed commands to quote an ld script as a C string.
  18494. +sc="-f stringify.sed"
  18495. +
  18496. +cat >>e${EMULATION_NAME}.c <<EOF
  18497. + *isfile = 0;
  18498. + return
  18499. +EOF
  18500. +sed $sc ldscripts/${EMULATION_NAME}.xwr >> e${EMULATION_NAME}.c
  18501. +echo ';' >> e${EMULATION_NAME}.c
  18502. +else
  18503. +# Scripts read from the filesystem.
  18504. +
  18505. +cat >>e${EMULATION_NAME}.c <<EOF
  18506. + *isfile = 1;
  18507. + return "ldscripts/${EMULATION_NAME}.xwr";
  18508. +EOF
  18509. +fi
  18510. +
  18511. +cat >>e${EMULATION_NAME}.c <<EOF
  18512. + }
  18513. + return gld${EMULATION_NAME}_get_script (isfile);
  18514. +}
  18515. +
  18516. +
  18517. +EOF
  18518. +
  18519. +# Define some shell vars to insert bits of code into the standard elf
  18520. +# parse_args and list_options functions.
  18521. +#
  18522. +PARSE_AND_LIST_PROLOGUE='
  18523. +#define OPTION_DIRECT_DATA 300
  18524. +#define OPTION_NO_DIRECT_DATA 301
  18525. +#define OPTION_RODATA_WRITABLE 302
  18526. +#define OPTION_NO_RODATA_WRITABLE 303
  18527. +'
  18528. +
  18529. +PARSE_AND_LIST_LONGOPTS='
  18530. + { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
  18531. + { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
  18532. + { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
  18533. + { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
  18534. +'
  18535. +
  18536. +PARSE_AND_LIST_OPTIONS='
  18537. + fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
  18538. + fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
  18539. + fprintf (file, _(" --rodata-writable\tPut read-only data in writable data section\n"));
  18540. + fprintf (file, _(" --no-rodata-writable\tDo not put read-only data in writable data section\n"));
  18541. +'
  18542. +
  18543. +PARSE_AND_LIST_ARGS_CASES='
  18544. + case OPTION_DIRECT_DATA:
  18545. + direct_data_refs = 1;
  18546. + break;
  18547. + case OPTION_NO_DIRECT_DATA:
  18548. + direct_data_refs = 0;
  18549. + break;
  18550. + case OPTION_RODATA_WRITABLE:
  18551. + rodata_writable = 1;
  18552. + break;
  18553. + case OPTION_NO_RODATA_WRITABLE:
  18554. + rodata_writable = 0;
  18555. + break;
  18556. +'
  18557. +
  18558. +# Replace some of the standard ELF functions with our own versions.
  18559. +#
  18560. +LDEMUL_AFTER_OPEN=avr32_elf_after_open
  18561. +LDEMUL_GET_SCRIPT=avr32_elf_get_script
  18562. --- a/ld/ld.info
  18563. +++ b/ld/ld.info
  18564. @@ -4347,6 +4347,8 @@ not listed.
  18565. * ARM:: `ld' and the ARM family
  18566. +* AVR32:: `ld' and AVR32 processors
  18567. +
  18568. * HPPA ELF32:: `ld' and HPPA 32-bit ELF
  18569. * MMIX:: `ld' and MMIX
  18570. @@ -4487,7 +4489,7 @@ PIC. This avoids problems on uClinux ta
  18571. used to generate relocatable binaries.
  18572. 
  18573. -File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
  18574. +File: ld.info, Node: ARM, Next: AV32, Prev: i960, Up: Machine Dependent
  18575. 4.4 `ld' and the ARM family
  18576. ===========================
  18577. @@ -4588,7 +4590,31 @@ enumeration values fitted into the small
  18578. diagnosed.
  18579. 
  18580. -File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
  18581. +File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
  18582. +
  18583. +4.4 `ld' and AVR32 processors
  18584. +=============================
  18585. +
  18586. +`--direct-data'
  18587. +
  18588. +`--no-direct-data'
  18589. + Taking the address of a symbol can often be done by using a direct
  18590. + `mov' or pc-relative `sub' instruction, which is faster than using
  18591. + a PC- or GOT-relative load, especially on the uC3 processors.
  18592. + However, this does not always work when dealing with symbols in
  18593. + the `.data' section so this optimization is disabled by default.
  18594. +
  18595. + Specifying `--direct-data' will enable this optimization. Note
  18596. + that this may cause `relocation truncated to fit' errors for
  18597. + certain large programs. If this happens, the optimization can be
  18598. + turned off by specifying `--no-direct-data'.
  18599. +
  18600. + All known issues with direct data optimizations are detected at
  18601. + link time, so if the linker doesn't complain, the result should
  18602. + run just fine.
  18603. +
  18604. +
  18605. +File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
  18606. 4.5 `ld' and HPPA 32-bit ELF Support
  18607. ====================================
  18608. @@ -6336,6 +6362,7 @@ LD Index
  18609. * --no-check-sections: Options. (line 765)
  18610. * --no-define-common: Options. (line 787)
  18611. * --no-demangle: Options. (line 816)
  18612. +* --no-direct-data: AVR32. (line 6)
  18613. * --no-dotsyms: PowerPC64 ELF64. (line 33)
  18614. * --no-enum-size-warning: ARM. (line 94)
  18615. * --no-gc-sections: Options. (line 848)
  18616. @@ -6534,6 +6561,7 @@ LD Index
  18617. * AT(LMA): Output Section LMA. (line 6)
  18618. * AT>LMA_REGION: Output Section LMA. (line 6)
  18619. * automatic data imports: WIN32. (line 170)
  18620. +* AVR32 options: AVR32. (line 6)
  18621. * back end: BFD. (line 6)
  18622. * BASE (MRI): MRI. (line 54)
  18623. * BE8: ARM. (line 23)
  18624. @@ -7018,6 +7046,7 @@ Node: H8/300183897
  18625. Node: i960185522
  18626. Node: M68HC11/68HC12187207
  18627. Node: ARM188910
  18628. +Node: AVR32182578
  18629. Node: HPPA ELF32193760
  18630. Node: MMIX195383
  18631. Node: MSP430196600
  18632. --- a/ld/ld.texinfo
  18633. +++ b/ld/ld.texinfo
  18634. @@ -21,6 +21,7 @@
  18635. @set UsesEnvVars
  18636. @set GENERIC
  18637. @set ARM
  18638. +@set AVR32
  18639. @set H8300
  18640. @set HPPA
  18641. @set I960
  18642. @@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
  18643. @ifset ARM
  18644. * ARM:: ld and the ARM family
  18645. @end ifset
  18646. +@ifset AVR32
  18647. +* AVR32:: ld and AVR32 processors
  18648. +@end ifset
  18649. @ifset HPPA
  18650. * HPPA ELF32:: ld and HPPA 32-bit ELF
  18651. @end ifset
  18652. @@ -5248,6 +5252,9 @@ functionality are not listed.
  18653. @ifset ARM
  18654. * ARM:: @command{ld} and the ARM family
  18655. @end ifset
  18656. +@ifset AVR32
  18657. +* AVR32:: @command{ld} and AVR32 processors
  18658. +@end ifset
  18659. @ifset HPPA
  18660. * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
  18661. @end ifset
  18662. @@ -5589,6 +5596,52 @@ not be diagnosed.
  18663. @end ifclear
  18664. @end ifset
  18665. +@ifset AVR32
  18666. +@ifclear GENERIC
  18667. +@raisesections
  18668. +@end ifclear
  18669. +
  18670. +@node AVR32
  18671. +@section @command{ld} and AVR32 processors
  18672. +@cindex AVR32 options
  18673. +@table @option
  18674. +@kindex --direct-data
  18675. +@kindex --no-direct-data
  18676. +@item --direct-data
  18677. +@item --no-direct-data
  18678. +Taking the address of a symbol can often be done by using a direct
  18679. +@code{mov} or pc-relative @code{sub} instruction, which is faster than
  18680. +using a PC- or GOT-relative load, especially on the uC3
  18681. +processors. However, this does not always work when dealing with
  18682. +symbols in the @code{.data} section so this optimization is disabled
  18683. +by default.
  18684. +
  18685. +Specifying @option{--direct-data} will enable this optimization. Note
  18686. +that this may cause @samp{relocation truncated to fit} errors for
  18687. +certain large programs. If this happens, the optimization can be
  18688. +turned off by specifying @option{--no-direct-data}.
  18689. +
  18690. +All known issues with direct data optimizations are detected at link
  18691. +time, so if the linker doesn't complain, the result should run just
  18692. +fine.
  18693. +
  18694. +@kindex --rodata-writable
  18695. +@kindex --no-rodata-writable
  18696. +@item --rodata-writable
  18697. +@item --no-rodata-writable
  18698. +Using the @option{--rodata-writable} options will cause the linker
  18699. +to try and use a linker script where read-only data will be placed
  18700. +in the same section as writable data. This can give great performance
  18701. +gain on cacheless processors where read-only data normally is placed in
  18702. +flash, and writable data is placed in internal sram. This will however
  18703. +come at the expence of a larger memory footprint.
  18704. +@end table
  18705. +
  18706. +@ifclear GENERIC
  18707. +@lowersections
  18708. +@end ifclear
  18709. +@end ifset
  18710. +
  18711. @ifset HPPA
  18712. @ifclear GENERIC
  18713. @raisesections
  18714. --- a/ld/Makefile.am
  18715. +++ b/ld/Makefile.am
  18716. @@ -137,7 +137,34 @@ ALL_EMULATIONS = \
  18717. eavr3.o \
  18718. eavr4.o \
  18719. eavr5.o \
  18720. - eavr6.o \
  18721. + eavr6.o \
  18722. + eavr32elf_ap7000.o \
  18723. + eavr32elf_ap7001.o \
  18724. + eavr32elf_ap7002.o \
  18725. + eavr32elf_ap7200.o \
  18726. + eavr32elf_uc3a0128.o \
  18727. + eavr32elf_uc3a0256.o \
  18728. + eavr32elf_uc3a0512.o \
  18729. + eavr32elf_uc3a0512es.o \
  18730. + eavr32elf_uc3a1128.o \
  18731. + eavr32elf_uc3a1256.o \
  18732. + eavr32elf_uc3a1512es.o \
  18733. + eavr32elf_uc3a1512.o \
  18734. + eavr32elf_uc3a364.o \
  18735. + eavr32elf_uc3a364s.o \
  18736. + eavr32elf_uc3a3128.o \
  18737. + eavr32elf_uc3a3128s.o \
  18738. + eavr32elf_uc3a3256.o \
  18739. + eavr32elf_uc3a3256s.o \
  18740. + eavr32elf_uc3b064.o \
  18741. + eavr32elf_uc3b0128.o \
  18742. + eavr32elf_uc3b0256es.o \
  18743. + eavr32elf_uc3b0256.o \
  18744. + eavr32elf_uc3b164.o \
  18745. + eavr32elf_uc3b1128.o \
  18746. + eavr32elf_uc3b1256es.o \
  18747. + eavr32elf_uc3b1256.o \
  18748. + eavr32linux.o \
  18749. ecoff_i860.o \
  18750. ecoff_sparc.o \
  18751. eelf32_spu.o \
  18752. @@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
  18753. $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
  18754. ${GEN_DEPENDS}
  18755. ${GENSCRIPTS} avr6 "$(tdir_avr2)"
  18756. +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
  18757. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18758. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18759. + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
  18760. +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
  18761. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18762. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18763. + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
  18764. +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
  18765. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18766. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18767. + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
  18768. +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
  18769. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18770. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18771. + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
  18772. +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
  18773. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18774. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18775. + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
  18776. +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
  18777. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18778. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18779. + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
  18780. +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
  18781. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18782. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18783. + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
  18784. +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
  18785. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18786. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18787. + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
  18788. +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
  18789. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18790. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18791. + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
  18792. +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
  18793. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18794. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18795. + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
  18796. +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
  18797. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18798. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18799. + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
  18800. +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
  18801. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18802. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18803. + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
  18804. +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
  18805. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18806. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18807. + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
  18808. +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
  18809. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18810. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18811. + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
  18812. +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
  18813. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18814. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18815. + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
  18816. +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
  18817. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18818. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18819. + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
  18820. +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
  18821. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18822. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18823. + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
  18824. +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
  18825. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18826. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18827. + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
  18828. +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
  18829. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18830. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18831. + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
  18832. +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
  18833. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18834. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18835. + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
  18836. +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
  18837. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18838. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18839. + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
  18840. +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
  18841. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18842. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18843. + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
  18844. +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
  18845. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18846. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18847. + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
  18848. +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
  18849. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18850. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18851. + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
  18852. +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
  18853. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18854. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18855. + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
  18856. +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
  18857. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18858. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  18859. + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
  18860. +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
  18861. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  18862. + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
  18863. + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
  18864. ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
  18865. $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
  18866. ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
  18867. @@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
  18868. || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
  18869. fi
  18870. -install-data-local:
  18871. +# We want install to imply install-info as per GNU standards, despite the
  18872. +# cygnus option.
  18873. +install-data-local: install-info
  18874. $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
  18875. for f in ldscripts/*; do \
  18876. $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
  18877. --- /dev/null
  18878. +++ b/ld/scripttempl/elf_xip.sc
  18879. @@ -0,0 +1,456 @@
  18880. +#
  18881. +# Unusual variables checked by this code:
  18882. +# NOP - four byte opcode for no-op (defaults to 0)
  18883. +# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
  18884. +# empty.
  18885. +# SMALL_DATA_CTOR - .ctors contains small data.
  18886. +# SMALL_DATA_DTOR - .dtors contains small data.
  18887. +# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
  18888. +# INITIAL_READONLY_SECTIONS - at start of text segment
  18889. +# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
  18890. +# (e.g., .PARISC.milli)
  18891. +# OTHER_TEXT_SECTIONS - these get put in .text when relocating
  18892. +# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
  18893. +# (e.g., .PARISC.global)
  18894. +# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
  18895. +# (e.g. PPC32 .fixup, .got[12])
  18896. +# OTHER_BSS_SECTIONS - other than .bss .sbss ...
  18897. +# OTHER_SECTIONS - at the end
  18898. +# EXECUTABLE_SYMBOLS - symbols that must be defined for an
  18899. +# executable (e.g., _DYNAMIC_LINK)
  18900. +# TEXT_START_ADDR - the first byte of the text segment, after any
  18901. +# headers.
  18902. +# TEXT_BASE_ADDRESS - the first byte of the text segment.
  18903. +# TEXT_START_SYMBOLS - symbols that appear at the start of the
  18904. +# .text section.
  18905. +# DATA_START_SYMBOLS - symbols that appear at the start of the
  18906. +# .data section.
  18907. +# OTHER_GOT_SYMBOLS - symbols defined just before .got.
  18908. +# OTHER_GOT_SECTIONS - sections just after .got.
  18909. +# OTHER_SDATA_SECTIONS - sections just after .sdata.
  18910. +# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
  18911. +# .bss section besides __bss_start.
  18912. +# DATA_PLT - .plt should be in data segment, not text segment.
  18913. +# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
  18914. +# BSS_PLT - .plt should be in bss segment
  18915. +# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
  18916. +# EMBEDDED - whether this is for an embedded system.
  18917. +# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
  18918. +# start address of shared library.
  18919. +# INPUT_FILES - INPUT command of files to always include
  18920. +# WRITABLE_RODATA - if set, the .rodata section should be writable
  18921. +# INIT_START, INIT_END - statements just before and just after
  18922. +# combination of .init sections.
  18923. +# FINI_START, FINI_END - statements just before and just after
  18924. +# combination of .fini sections.
  18925. +# STACK_ADDR - start of a .stack section.
  18926. +# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
  18927. +# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
  18928. +# so that .got can be in the RELRO area. It should be set to
  18929. +# the number of bytes in the beginning of .got.plt which can be
  18930. +# in the RELRO area as well.
  18931. +#
  18932. +# When adding sections, do note that the names of some sections are used
  18933. +# when specifying the start address of the next.
  18934. +#
  18935. +
  18936. +# Many sections come in three flavours. There is the 'real' section,
  18937. +# like ".data". Then there are the per-procedure or per-variable
  18938. +# sections, generated by -ffunction-sections and -fdata-sections in GCC,
  18939. +# and useful for --gc-sections, which for a variable "foo" might be
  18940. +# ".data.foo". Then there are the linkonce sections, for which the linker
  18941. +# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
  18942. +# The exact correspondences are:
  18943. +#
  18944. +# Section Linkonce section
  18945. +# .text .gnu.linkonce.t.foo
  18946. +# .rodata .gnu.linkonce.r.foo
  18947. +# .data .gnu.linkonce.d.foo
  18948. +# .bss .gnu.linkonce.b.foo
  18949. +# .sdata .gnu.linkonce.s.foo
  18950. +# .sbss .gnu.linkonce.sb.foo
  18951. +# .sdata2 .gnu.linkonce.s2.foo
  18952. +# .sbss2 .gnu.linkonce.sb2.foo
  18953. +# .debug_info .gnu.linkonce.wi.foo
  18954. +# .tdata .gnu.linkonce.td.foo
  18955. +# .tbss .gnu.linkonce.tb.foo
  18956. +#
  18957. +# Each of these can also have corresponding .rel.* and .rela.* sections.
  18958. +
  18959. +test -z "$ENTRY" && ENTRY=_start
  18960. +test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
  18961. +test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
  18962. +if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
  18963. +test -z "${ELFSIZE}" && ELFSIZE=32
  18964. +test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
  18965. +test "$LD_FLAG" = "N" && DATA_ADDR=.
  18966. +test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
  18967. +test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
  18968. +test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
  18969. +if test -n "$RELOCATING"; then
  18970. + RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
  18971. + RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
  18972. +else
  18973. + RO_REGION=""
  18974. + RW_REGION=""
  18975. +fi
  18976. +INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
  18977. +PLT=".plt ${RELOCATING-0} : { *(.plt) }"
  18978. +if test -z "$GOT"; then
  18979. + if test -z "$SEPARATE_GOTPLT"; then
  18980. + GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
  18981. + else
  18982. + GOT=".got ${RELOCATING-0} : { *(.got) }"
  18983. + GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
  18984. + .got.plt ${RELOCATING-0} : { *(.got.plt) }"
  18985. + fi
  18986. +fi
  18987. +DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
  18988. +BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
  18989. +DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
  18990. +RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
  18991. +DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
  18992. +STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
  18993. +if test -z "${NO_SMALL_DATA}"; then
  18994. + SBSS=".sbss ${RELOCATING-0} :
  18995. + {
  18996. + ${RELOCATING+PROVIDE (__sbss_start = .);}
  18997. + ${RELOCATING+PROVIDE (___sbss_start = .);}
  18998. + ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
  18999. + *(.dynsbss)
  19000. + *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
  19001. + *(.scommon)
  19002. + ${RELOCATING+PROVIDE (__sbss_end = .);}
  19003. + ${RELOCATING+PROVIDE (___sbss_end = .);}
  19004. + }${RW_REGION}"
  19005. + SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
  19006. + SDATA="/* We want the small data sections together, so single-instruction offsets
  19007. + can access them all, and initialized data all before uninitialized, so
  19008. + we can shorten the on-disk segment size. */
  19009. + .sdata ${RELOCATING-0} :
  19010. + {
  19011. + ${RELOCATING+${SDATA_START_SYMBOLS}}
  19012. + ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
  19013. + *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
  19014. + }${RW_REGION}"
  19015. + SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
  19016. + REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
  19017. + .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
  19018. + REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
  19019. + .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
  19020. + REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
  19021. + .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
  19022. + REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
  19023. + .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
  19024. +else
  19025. + NO_SMALL_DATA=" "
  19026. +fi
  19027. +test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
  19028. +CTOR=".ctors ${CONSTRUCTING-0} :
  19029. + {
  19030. + ${CONSTRUCTING+${CTOR_START}}
  19031. + /* gcc uses crtbegin.o to find the start of
  19032. + the constructors, so we make sure it is
  19033. + first. Because this is a wildcard, it
  19034. + doesn't matter if the user does not
  19035. + actually link against crtbegin.o; the
  19036. + linker won't look for a file to match a
  19037. + wildcard. The wildcard also means that it
  19038. + doesn't matter which directory crtbegin.o
  19039. + is in. */
  19040. +
  19041. + KEEP (*crtbegin*.o(.ctors))
  19042. +
  19043. + /* We don't want to include the .ctor section from
  19044. + from the crtend.o file until after the sorted ctors.
  19045. + The .ctor section from the crtend file contains the
  19046. + end of ctors marker and it must be last */
  19047. +
  19048. + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
  19049. + KEEP (*(SORT(.ctors.*)))
  19050. + KEEP (*(.ctors))
  19051. + ${CONSTRUCTING+${CTOR_END}}
  19052. + }"
  19053. +DTOR=".dtors ${CONSTRUCTING-0} :
  19054. + {
  19055. + ${CONSTRUCTING+${DTOR_START}}
  19056. + KEEP (*crtbegin*.o(.dtors))
  19057. + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
  19058. + KEEP (*(SORT(.dtors.*)))
  19059. + KEEP (*(.dtors))
  19060. + ${CONSTRUCTING+${DTOR_END}}
  19061. + }"
  19062. +STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
  19063. + {
  19064. + ${RELOCATING+_stack = .;}
  19065. + *(.stack)
  19066. + ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
  19067. + ${RELOCATING+_estack = .;}
  19068. + }${RW_REGION}"
  19069. +
  19070. +# if this is for an embedded system, don't add SIZEOF_HEADERS.
  19071. +if [ -z "$EMBEDDED" ]; then
  19072. + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
  19073. +else
  19074. + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
  19075. +fi
  19076. +
  19077. +cat <<EOF
  19078. +OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
  19079. + "${LITTLE_OUTPUT_FORMAT}")
  19080. +OUTPUT_ARCH(${OUTPUT_ARCH})
  19081. +ENTRY(${ENTRY})
  19082. +
  19083. +${RELOCATING+${LIB_SEARCH_DIRS}}
  19084. +${RELOCATING+/* Do we need any of these for elf?
  19085. + __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
  19086. +${RELOCATING+${EXECUTABLE_SYMBOLS}}
  19087. +${RELOCATING+${INPUT_FILES}}
  19088. +${RELOCATING- /* For some reason, the Solaris linker makes bad executables
  19089. + if gld -r is used and the intermediate file has sections starting
  19090. + at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
  19091. + bug. But for now assigning the zero vmas works. */}
  19092. +
  19093. +${RELOCATING+${MEMORY}}
  19094. +
  19095. +SECTIONS
  19096. +{
  19097. + /* Read-only sections, merged into text segment: */
  19098. + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
  19099. + ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
  19100. + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
  19101. + ${CREATE_SHLIB-${INTERP}}
  19102. + ${INITIAL_READONLY_SECTIONS}
  19103. + ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
  19104. + .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
  19105. + .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
  19106. + .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
  19107. + .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
  19108. + .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
  19109. + .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
  19110. +
  19111. +EOF
  19112. +if [ "x$COMBRELOC" = x ]; then
  19113. + COMBRELOCCAT=cat
  19114. +else
  19115. + COMBRELOCCAT="cat > $COMBRELOC"
  19116. +fi
  19117. +eval $COMBRELOCCAT <<EOF
  19118. + .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
  19119. + .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
  19120. + .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
  19121. + .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
  19122. + .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
  19123. + .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
  19124. + .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
  19125. + .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
  19126. + ${OTHER_READONLY_RELOC_SECTIONS}
  19127. + .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
  19128. + .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
  19129. + .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
  19130. + .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
  19131. + .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
  19132. + .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
  19133. + .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
  19134. + .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
  19135. + .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
  19136. + .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
  19137. + .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
  19138. + .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
  19139. + .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
  19140. + .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
  19141. + ${OTHER_GOT_RELOC_SECTIONS}
  19142. + ${REL_SDATA}
  19143. + ${REL_SBSS}
  19144. + ${REL_SDATA2}
  19145. + ${REL_SBSS2}
  19146. + .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
  19147. + .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
  19148. +EOF
  19149. +if [ -n "$COMBRELOC" ]; then
  19150. +cat <<EOF
  19151. + .rel.dyn ${RELOCATING-0} :
  19152. + {
  19153. +EOF
  19154. +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
  19155. +cat <<EOF
  19156. + }${RO_REGION}
  19157. + .rela.dyn ${RELOCATING-0} :
  19158. + {
  19159. +EOF
  19160. +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
  19161. +cat <<EOF
  19162. + }${RO_REGION}
  19163. +EOF
  19164. +fi
  19165. +cat <<EOF
  19166. + .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
  19167. + .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
  19168. + ${OTHER_PLT_RELOC_SECTIONS}
  19169. +
  19170. + .init ${RELOCATING-0} :
  19171. + {
  19172. + ${RELOCATING+${INIT_START}}
  19173. + KEEP (*(.init))
  19174. + ${RELOCATING+${INIT_END}}
  19175. + }${RO_REGION} =${NOP-0}
  19176. +
  19177. + ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
  19178. + .text ${RELOCATING-0} :
  19179. + {
  19180. + ${RELOCATING+${TEXT_START_SYMBOLS}}
  19181. + *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
  19182. + KEEP (*(.text.*personality*))
  19183. + /* .gnu.warning sections are handled specially by elf32.em. */
  19184. + *(.gnu.warning)
  19185. + ${RELOCATING+${OTHER_TEXT_SECTIONS}}
  19186. + }${RO_REGION} =${NOP-0}
  19187. + .fini ${RELOCATING-0} :
  19188. + {
  19189. + ${RELOCATING+${FINI_START}}
  19190. + KEEP (*(.fini))
  19191. + ${RELOCATING+${FINI_END}}
  19192. + }${RO_REGION} =${NOP-0}
  19193. + ${RELOCATING+PROVIDE (__etext = .);}
  19194. + ${RELOCATING+PROVIDE (_etext = .);}
  19195. + ${RELOCATING+PROVIDE (etext = .);}
  19196. + ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
  19197. + .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
  19198. + ${CREATE_SHLIB-${SDATA2}}
  19199. + ${CREATE_SHLIB-${SBSS2}}
  19200. + ${OTHER_READONLY_SECTIONS}
  19201. + .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
  19202. + .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
  19203. + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
  19204. +
  19205. + ${RELOCATING+${DALIGN}}
  19206. + ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
  19207. + . = ORIGIN(${RW_VMA_REGION});
  19208. + /* Exception handling */
  19209. + .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
  19210. + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
  19211. +
  19212. + /* Thread Local Storage sections */
  19213. + .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
  19214. + .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
  19215. +
  19216. + /* Ensure the __preinit_array_start label is properly aligned. We
  19217. + could instead move the label definition inside the section, but
  19218. + the linker would then create the section even if it turns out to
  19219. + be empty, which isn't pretty. */
  19220. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
  19221. + .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
  19222. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
  19223. +
  19224. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
  19225. + .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
  19226. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
  19227. +
  19228. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
  19229. + .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
  19230. + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
  19231. +
  19232. + ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
  19233. + ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
  19234. + .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
  19235. +
  19236. + ${RELOCATING+${DATARELRO}}
  19237. + ${OTHER_RELRO_SECTIONS}
  19238. + ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
  19239. + ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
  19240. + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
  19241. + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
  19242. + ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
  19243. + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
  19244. +
  19245. + ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
  19246. +
  19247. + .data ${RELOCATING-0} :
  19248. + {
  19249. + ${RELOCATING+${DATA_START_SYMBOLS}}
  19250. + *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
  19251. + KEEP (*(.gnu.linkonce.d.*personality*))
  19252. + ${CONSTRUCTING+SORT(CONSTRUCTORS)}
  19253. + }${RW_REGION}
  19254. + .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
  19255. + ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
  19256. + ${OTHER_READWRITE_SECTIONS}
  19257. + ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
  19258. + ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
  19259. + ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
  19260. + ${RELOCATING+${OTHER_GOT_SYMBOLS}}
  19261. + ${NO_SMALL_DATA-${GOT}${RW_REGION}}
  19262. + ${OTHER_GOT_SECTIONS}
  19263. + ${SDATA}
  19264. + ${OTHER_SDATA_SECTIONS}
  19265. + ${RELOCATING+${BALIGN}}
  19266. + ${RELOCATING+_edata = .;}
  19267. + ${RELOCATING+PROVIDE (edata = .);}
  19268. + ${RELOCATING+__bss_start = .;}
  19269. + ${RELOCATING+${OTHER_BSS_SYMBOLS}}
  19270. + ${SBSS}
  19271. + ${BSS_PLT+${PLT}${RW_REGION}}
  19272. + .bss ${RELOCATING-0} :
  19273. + {
  19274. + *(.dynbss)
  19275. + *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
  19276. + *(COMMON)
  19277. + /* Align here to ensure that the .bss section occupies space up to
  19278. + _end. Align after .bss to ensure correct alignment even if the
  19279. + .bss section disappears because there are no input sections. */
  19280. + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
  19281. + }${RW_REGION}
  19282. + ${OTHER_BSS_SECTIONS}
  19283. + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
  19284. + ${RELOCATING+_end = .;}
  19285. + ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
  19286. + ${RELOCATING+PROVIDE (end = .);}
  19287. + ${RELOCATING+${DATA_SEGMENT_END}}
  19288. +
  19289. + /* Stabs debugging sections. */
  19290. + .stab 0 : { *(.stab) }
  19291. + .stabstr 0 : { *(.stabstr) }
  19292. + .stab.excl 0 : { *(.stab.excl) }
  19293. + .stab.exclstr 0 : { *(.stab.exclstr) }
  19294. + .stab.index 0 : { *(.stab.index) }
  19295. + .stab.indexstr 0 : { *(.stab.indexstr) }
  19296. +
  19297. + .comment 0 : { *(.comment) }
  19298. +
  19299. + /* DWARF debug sections.
  19300. + Symbols in the DWARF debugging sections are relative to the beginning
  19301. + of the section so we begin them at 0. */
  19302. +
  19303. + /* DWARF 1 */
  19304. + .debug 0 : { *(.debug) }
  19305. + .line 0 : { *(.line) }
  19306. +
  19307. + /* GNU DWARF 1 extensions */
  19308. + .debug_srcinfo 0 : { *(.debug_srcinfo) }
  19309. + .debug_sfnames 0 : { *(.debug_sfnames) }
  19310. +
  19311. + /* DWARF 1.1 and DWARF 2 */
  19312. + .debug_aranges 0 : { *(.debug_aranges) }
  19313. + .debug_pubnames 0 : { *(.debug_pubnames) }
  19314. +
  19315. + /* DWARF 2 */
  19316. + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
  19317. + .debug_abbrev 0 : { *(.debug_abbrev) }
  19318. + .debug_line 0 : { *(.debug_line) }
  19319. + .debug_frame 0 : { *(.debug_frame) }
  19320. + .debug_str 0 : { *(.debug_str) }
  19321. + .debug_loc 0 : { *(.debug_loc) }
  19322. + .debug_macinfo 0 : { *(.debug_macinfo) }
  19323. +
  19324. + /* SGI/MIPS DWARF 2 extensions */
  19325. + .debug_weaknames 0 : { *(.debug_weaknames) }
  19326. + .debug_funcnames 0 : { *(.debug_funcnames) }
  19327. + .debug_typenames 0 : { *(.debug_typenames) }
  19328. + .debug_varnames 0 : { *(.debug_varnames) }
  19329. +
  19330. + ${STACK_ADDR+${STACK}}
  19331. + ${OTHER_SECTIONS}
  19332. + ${RELOCATING+${OTHER_END_SYMBOLS}}
  19333. + ${RELOCATING+${STACKNOTE}}
  19334. +}
  19335. +EOF
  19336. --- /dev/null
  19337. +++ b/ld/testsuite/ld-avr32/avr32.exp
  19338. @@ -0,0 +1,25 @@
  19339. +# Expect script for AVR32 ELF linker tests.
  19340. +# Copyright 2004-2006 Atmel Corporation.
  19341. +#
  19342. +# This file is free software; you can redistribute it and/or modify
  19343. +# it under the terms of the GNU General Public License as published by
  19344. +# the Free Software Foundation; either version 2 of the License, or
  19345. +# (at your option) any later version.
  19346. +#
  19347. +# This program is distributed in the hope that it will be useful,
  19348. +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  19349. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19350. +# GNU General Public License for more details.
  19351. +#
  19352. +# You should have received a copy of the GNU General Public License
  19353. +# along with this program; if not, write to the Free Software
  19354. +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19355. +#
  19356. +# Written by Haavard Skinnemoen ([email protected])
  19357. +#
  19358. +
  19359. +if ![istarget avr32-*-*] {
  19360. + return
  19361. +}
  19362. +
  19363. +run_dump_test "pcrel"
  19364. --- /dev/null
  19365. +++ b/ld/testsuite/ld-avr32/pcrel.d
  19366. @@ -0,0 +1,74 @@
  19367. +#name: AVR32 ELF PC-relative external relocs
  19368. +#source: symbols.s
  19369. +#source: ../../../gas/testsuite/gas/avr32/pcrel.s
  19370. +#ld: -T $srcdir/$subdir/pcrel.ld
  19371. +#objdump: -d
  19372. +
  19373. +.*: file format elf.*avr32.*
  19374. +
  19375. +Disassembly of section .text:
  19376. +
  19377. +a0000000 <_start>:
  19378. +a0000000: d7 03 nop
  19379. +a0000002: d7 03 nop
  19380. +
  19381. +a0000004 <test_rjmp>:
  19382. +a0000004: d7 03 nop
  19383. +a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
  19384. +a0000008: d7 03 nop
  19385. +a000000a: e0 8f 01 fb bral a0000400 <extsym10>
  19386. +
  19387. +a000000e <test_rcall>:
  19388. +a000000e: d7 03 nop
  19389. +a0000010 <test_rcall2>:
  19390. +a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
  19391. +a0000012: d7 03 nop
  19392. +a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
  19393. +
  19394. +a0000018 <test_branch>:
  19395. +a0000018: c0 31 brne a000001e <test_branch\+0x6>
  19396. +a000001a: fe 9f ff ff bral a0000018 <test_branch>
  19397. +a000001e: ee 90 ff f1 breq a0200000 <extsym21>
  19398. +
  19399. +a0000022 <test_lddpc>:
  19400. +a0000022: 48 30 lddpc r0,a000002c <sym1>
  19401. +a0000024: 48 20 lddpc r0,a000002c <sym1>
  19402. +a0000026: fe f0 7f da ld.w r0,pc\[32730\]
  19403. + ...
  19404. +
  19405. +a000002c <sym1>:
  19406. +a000002c: d7 03 nop
  19407. +a000002e: d7 03 nop
  19408. +
  19409. +a0000030 <test_local>:
  19410. +a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
  19411. +a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
  19412. +a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
  19413. +a0000036: 00 00 add r0,r0
  19414. +a0000038: d7 03 nop
  19415. +a000003a: d7 03 nop
  19416. +a000003c: d7 03 nop
  19417. +a000003e: d7 03 nop
  19418. +
  19419. +Disassembly of section \.text\.init:
  19420. +a0000040 <test_inter_section>:
  19421. +a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
  19422. +a0000044: d7 03 nop
  19423. +a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
  19424. +a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
  19425. +a000004e: d7 03 nop
  19426. +a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
  19427. +
  19428. +Disassembly of section \.text\.pcrel10:
  19429. +
  19430. +a0000400 <extsym10>:
  19431. +a0000400: d7 03 nop
  19432. +
  19433. +Disassembly of section \.text\.pcrel16:
  19434. +
  19435. +a0008000 <extsym16>:
  19436. +a0008000: d7 03 nop
  19437. +
  19438. +Disassembly of section \.text\.pcrel21:
  19439. +a0200000 <extsym21>:
  19440. +a0200000: d7 03 nop
  19441. --- /dev/null
  19442. +++ b/ld/testsuite/ld-avr32/pcrel.ld
  19443. @@ -0,0 +1,23 @@
  19444. +ENTRY(_start)
  19445. +SECTIONS
  19446. +{
  19447. + .text 0xa0000000:
  19448. + {
  19449. + *(.text)
  19450. + }
  19451. +
  19452. + .text.pcrel10 0xa0000400:
  19453. + {
  19454. + *(.text.pcrel10)
  19455. + }
  19456. +
  19457. + .text.pcrel16 0xa0008000:
  19458. + {
  19459. + *(.text.pcrel16)
  19460. + }
  19461. +
  19462. + .text.pcrel21 0xa0200000:
  19463. + {
  19464. + *(.text.pcrel21)
  19465. + }
  19466. +}
  19467. --- /dev/null
  19468. +++ b/ld/testsuite/ld-avr32/symbols.s
  19469. @@ -0,0 +1,20 @@
  19470. + .text
  19471. + .global _start
  19472. +_start:
  19473. + nop
  19474. + nop
  19475. +
  19476. + .section .text.pcrel10,"ax"
  19477. + .global extsym10
  19478. +extsym10:
  19479. + nop
  19480. +
  19481. + .section .text.pcrel16,"ax"
  19482. + .global extsym16
  19483. +extsym16:
  19484. + nop
  19485. +
  19486. + .section .text.pcrel21,"ax"
  19487. + .global extsym21
  19488. +extsym21:
  19489. + nop
  19490. --- /dev/null
  19491. +++ b/opcodes/avr32-asm.c
  19492. @@ -0,0 +1,264 @@
  19493. +/* Assembler interface for AVR32.
  19494. + Copyright 2005, 2006 Atmel Corporation.
  19495. +
  19496. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  19497. +
  19498. + This file is part of libopcodes.
  19499. +
  19500. + This program is free software; you can redistribute it and/or
  19501. + modify it under the terms of the GNU General Public License as
  19502. + published by the Free Software Foundation; either version 2 of the
  19503. + License, or (at your option) any later version.
  19504. +
  19505. + This program is distributed in the hope that it will be useful, but
  19506. + WITHOUT ANY WARRANTY; without even the implied warranty of
  19507. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  19508. + General Public License for more details.
  19509. +
  19510. + You should have received a copy of the GNU General Public License
  19511. + along with this program; if not, write to the Free Software
  19512. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  19513. + 02111-1307, USA. */
  19514. +
  19515. +#include <string.h>
  19516. +
  19517. +#include "avr32-opc.h"
  19518. +#include "avr32-asm.h"
  19519. +
  19520. +/* Structure for a register hash table entry. */
  19521. +struct reg_entry
  19522. +{
  19523. + const char *name;
  19524. + int number;
  19525. +};
  19526. +
  19527. +/* Integer Registers. */
  19528. +static const struct reg_entry reg_table[] =
  19529. + {
  19530. + /* Primary names (used by the disassembler) */
  19531. + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
  19532. + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
  19533. + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
  19534. + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
  19535. + /* Alternatives to sp, lr and pc. */
  19536. + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
  19537. + };
  19538. +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
  19539. +
  19540. +/* Coprocessor Registers. */
  19541. +static const struct reg_entry cr_table[] =
  19542. + {
  19543. + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
  19544. + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
  19545. + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
  19546. + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
  19547. + };
  19548. +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
  19549. +
  19550. +/* Floating-point Registers. */
  19551. +static const struct reg_entry fr_table[] =
  19552. + {
  19553. + { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
  19554. + { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
  19555. + { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
  19556. + { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
  19557. + };
  19558. +#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
  19559. +
  19560. +/* PiCo Registers. */
  19561. +static const struct reg_entry pico_table[] =
  19562. + {
  19563. + { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
  19564. + { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
  19565. + { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
  19566. + { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
  19567. + { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
  19568. + { "config", 15 },
  19569. + };
  19570. +#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
  19571. +
  19572. +int
  19573. +avr32_parse_intreg(const char *str)
  19574. +{
  19575. + unsigned int i;
  19576. +
  19577. + for (i = 0; i < AVR32_NR_INTREGS; i++)
  19578. + {
  19579. + if (strcasecmp(reg_table[i].name, str) == 0)
  19580. + return reg_table[i].number;
  19581. + }
  19582. +
  19583. + return -1;
  19584. +}
  19585. +
  19586. +int
  19587. +avr32_parse_cpreg(const char *str)
  19588. +{
  19589. + unsigned int i;
  19590. +
  19591. + for (i = 0; i < AVR32_NR_CPREGS; i++)
  19592. + {
  19593. + if (strcasecmp(cr_table[i].name, str) == 0)
  19594. + return cr_table[i].number;
  19595. + }
  19596. +
  19597. + return -1;
  19598. +}
  19599. +
  19600. +int avr32_parse_fpreg(const char *str)
  19601. +{
  19602. + unsigned int i;
  19603. +
  19604. + for (i = 0; i < AVR32_NR_FPREGS; i++)
  19605. + {
  19606. + if (strcasecmp(fr_table[i].name, str) == 0)
  19607. + return fr_table[i].number;
  19608. + }
  19609. +
  19610. + return -1;
  19611. +}
  19612. +
  19613. +int avr32_parse_picoreg(const char *str)
  19614. +{
  19615. + unsigned int i;
  19616. +
  19617. + for (i = 0; i < AVR32_NR_PICOREGS; i++)
  19618. + {
  19619. + if (strcasecmp(pico_table[i].name, str) == 0)
  19620. + return pico_table[i].number;
  19621. + }
  19622. +
  19623. + return -1;
  19624. +}
  19625. +
  19626. +static unsigned long
  19627. +parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
  19628. +{
  19629. + int reg_from, reg_to;
  19630. + unsigned long result = 0;
  19631. + char *p1, *p2, c;
  19632. +
  19633. + while (*str)
  19634. + {
  19635. + for (p1 = str; *p1; p1++)
  19636. + if (*p1 == ',' || *p1 == '-')
  19637. + break;
  19638. +
  19639. + c = *p1, *p1 = 0;
  19640. + reg_from = parse_reg(str);
  19641. + *p1 = c;
  19642. +
  19643. + if (reg_from < 0)
  19644. + break;
  19645. +
  19646. + if (*p1 == '-')
  19647. + {
  19648. + for (p2 = ++p1; *p2; p2++)
  19649. + if (*p2 == ',')
  19650. + break;
  19651. +
  19652. + c = *p2, *p2 = 0;
  19653. + /* printf("going to parse reg_to from `%s'\n", p1); */
  19654. + reg_to = parse_reg(p1);
  19655. + *p2 = c;
  19656. +
  19657. + if (reg_to < 0)
  19658. + break;
  19659. +
  19660. + while (reg_from <= reg_to)
  19661. + result |= (1 << reg_from++);
  19662. + p1 = p2;
  19663. + }
  19664. + else
  19665. + result |= (1 << reg_from);
  19666. +
  19667. + str = p1;
  19668. + if (*str) ++str;
  19669. + }
  19670. +
  19671. + if (endptr)
  19672. + *endptr = str;
  19673. +
  19674. + return result;
  19675. +}
  19676. +
  19677. +unsigned long
  19678. +avr32_parse_reglist(char *str, char **endptr)
  19679. +{
  19680. + return parse_reglist(str, endptr, avr32_parse_intreg);
  19681. +}
  19682. +
  19683. +unsigned long
  19684. +avr32_parse_cpreglist(char *str, char **endptr)
  19685. +{
  19686. + return parse_reglist(str, endptr, avr32_parse_cpreg);
  19687. +}
  19688. +
  19689. +unsigned long
  19690. +avr32_parse_pico_reglist(char *str, char **endptr)
  19691. +{
  19692. + return parse_reglist(str, endptr, avr32_parse_picoreg);
  19693. +}
  19694. +
  19695. +int
  19696. +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
  19697. +{
  19698. + unsigned long result = 0;
  19699. +
  19700. + /* printf("convert regmask16 0x%04lx\n", regmask16); */
  19701. +
  19702. + if (regmask16 & 0xf)
  19703. + {
  19704. + if ((regmask16 & 0xf) == 0xf)
  19705. + result |= 1 << 0;
  19706. + else
  19707. + return -1;
  19708. + }
  19709. + if (regmask16 & 0xf0)
  19710. + {
  19711. + if ((regmask16 & 0xf0) == 0xf0)
  19712. + result |= 1 << 1;
  19713. + else
  19714. + return -1;
  19715. + }
  19716. + if (regmask16 & 0x300)
  19717. + {
  19718. + if ((regmask16 & 0x300) == 0x300)
  19719. + result |= 1 << 2;
  19720. + else
  19721. + return -1;
  19722. + }
  19723. + if (regmask16 & (1 << 13))
  19724. + return -1;
  19725. +
  19726. + if (regmask16 & (1 << 10))
  19727. + result |= 1 << 3;
  19728. + if (regmask16 & (1 << 11))
  19729. + result |= 1 << 4;
  19730. + if (regmask16 & (1 << 12))
  19731. + result |= 1 << 5;
  19732. + if (regmask16 & (1 << 14))
  19733. + result |= 1 << 6;
  19734. + if (regmask16 & (1 << 15))
  19735. + result |= 1 << 7;
  19736. +
  19737. + *regmask8 = result;
  19738. +
  19739. + return 0;
  19740. +}
  19741. +
  19742. +#if 0
  19743. +struct reg_map
  19744. +{
  19745. + const struct reg_entry *names;
  19746. + int nr_regs;
  19747. + struct hash_control *htab;
  19748. + const char *errmsg;
  19749. +};
  19750. +
  19751. +struct reg_map all_reg_maps[] =
  19752. + {
  19753. + { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
  19754. + { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
  19755. + };
  19756. +#endif
  19757. --- /dev/null
  19758. +++ b/opcodes/avr32-asm.h
  19759. @@ -0,0 +1,42 @@
  19760. +/* Assembler interface for AVR32.
  19761. + Copyright 2005, 2006 Atmel Corporation.
  19762. +
  19763. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  19764. +
  19765. + This file is part of libopcodes.
  19766. +
  19767. + This program is free software; you can redistribute it and/or
  19768. + modify it under the terms of the GNU General Public License as
  19769. + published by the Free Software Foundation; either version 2 of the
  19770. + License, or (at your option) any later version.
  19771. +
  19772. + This program is distributed in the hope that it will be useful, but
  19773. + WITHOUT ANY WARRANTY; without even the implied warranty of
  19774. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  19775. + General Public License for more details.
  19776. +
  19777. + You should have received a copy of the GNU General Public License
  19778. + along with this program; if not, write to the Free Software
  19779. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  19780. + 02111-1307, USA. */
  19781. +#ifndef __OPCODES_AVR32_ASM_H
  19782. +#define __OPCODES_AVR32_ASM_H
  19783. +
  19784. +extern int
  19785. +avr32_parse_intreg(const char *str);
  19786. +extern int
  19787. +avr32_parse_cpreg(const char *str);
  19788. +extern int
  19789. +avr32_parse_fpreg(const char *str);
  19790. +extern int
  19791. +avr32_parse_picoreg(const char *str);
  19792. +extern unsigned long
  19793. +avr32_parse_reglist(char *str, char **endptr);
  19794. +extern unsigned long
  19795. +avr32_parse_cpreglist(char *str, char **endptr);
  19796. +extern unsigned long
  19797. +avr32_parse_pico_reglist(char *str, char **endptr);
  19798. +extern int
  19799. +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
  19800. +
  19801. +#endif /* __OPCODES_AVR32_ASM_H */
  19802. --- /dev/null
  19803. +++ b/opcodes/avr32-dis.c
  19804. @@ -0,0 +1,891 @@
  19805. +/* Print AVR32 instructions for GDB and objdump.
  19806. + Copyright 2005, 2006 Atmel Corporation.
  19807. +
  19808. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  19809. +
  19810. + This file is part of libopcodes.
  19811. +
  19812. + This program is free software; you can redistribute it and/or
  19813. + modify it under the terms of the GNU General Public License as
  19814. + published by the Free Software Foundation; either version 2 of the
  19815. + License, or (at your option) any later version.
  19816. +
  19817. + This program is distributed in the hope that it will be useful, but
  19818. + WITHOUT ANY WARRANTY; without even the implied warranty of
  19819. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  19820. + General Public License for more details.
  19821. +
  19822. + You should have received a copy of the GNU General Public License
  19823. + along with this program; if not, write to the Free Software
  19824. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  19825. + 02111-1307, USA. */
  19826. +
  19827. +#include "sysdep.h"
  19828. +#include "dis-asm.h"
  19829. +#include "avr32-opc.h"
  19830. +#include "opintl.h"
  19831. +#include "safe-ctype.h"
  19832. +
  19833. +/* TODO: Share this with -asm */
  19834. +
  19835. +/* Structure for a register hash table entry. */
  19836. +struct reg_entry
  19837. +{
  19838. + const char *name;
  19839. + int number;
  19840. +};
  19841. +
  19842. +#ifndef strneq
  19843. +#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
  19844. +#endif
  19845. +
  19846. +
  19847. +static const struct reg_entry reg_table[] =
  19848. + {
  19849. + /* Primary names (used by the disassembler) */
  19850. + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
  19851. + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
  19852. + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
  19853. + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
  19854. + /* Alternatives to sp, lr and pc. */
  19855. + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
  19856. + };
  19857. +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
  19858. +
  19859. +/* Coprocessor Registers. */
  19860. +static const struct reg_entry cr_table[] =
  19861. + {
  19862. + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
  19863. + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
  19864. + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
  19865. + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
  19866. + };
  19867. +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
  19868. +
  19869. +static const char bparts[4] = { 'b', 'l', 'u', 't' };
  19870. +static bfd_vma current_pc;
  19871. +
  19872. +struct avr32_field_value
  19873. +{
  19874. + const struct avr32_ifield *ifield;
  19875. + unsigned long value;
  19876. +};
  19877. +
  19878. +struct avr32_operand
  19879. +{
  19880. + int id;
  19881. + int is_pcrel;
  19882. + int align_order;
  19883. + int (*print)(struct avr32_operand *op, struct disassemble_info *info,
  19884. + struct avr32_field_value *ifields);
  19885. +};
  19886. +
  19887. +static signed long
  19888. +get_signed_value(const struct avr32_field_value *fv)
  19889. +{
  19890. + signed long value = fv->value;
  19891. +
  19892. + if (fv->value & (1 << (fv->ifield->bitsize - 1)))
  19893. + value |= (~0UL << fv->ifield->bitsize);
  19894. +
  19895. + return value;
  19896. +}
  19897. +
  19898. +static void
  19899. +print_reglist_range(unsigned int first, unsigned int last,
  19900. + const struct reg_entry *reg_names,
  19901. + int need_comma,
  19902. + struct disassemble_info *info)
  19903. +{
  19904. + if (need_comma)
  19905. + info->fprintf_func(info->stream, ",");
  19906. +
  19907. + if (first == last)
  19908. + info->fprintf_func(info->stream, "%s",
  19909. + reg_names[first].name);
  19910. + else
  19911. + info->fprintf_func(info->stream, "%s-%s",
  19912. + reg_names[first].name, reg_names[last].name);
  19913. +}
  19914. +
  19915. +static int
  19916. +print_intreg(struct avr32_operand *op,
  19917. + struct disassemble_info *info,
  19918. + struct avr32_field_value *ifields)
  19919. +{
  19920. + unsigned long regid = ifields[0].value << op->align_order;
  19921. +
  19922. + info->fprintf_func(info->stream, "%s",
  19923. + reg_table[regid].name);
  19924. + return 1;
  19925. +}
  19926. +
  19927. +static int
  19928. +print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19929. + struct disassemble_info *info,
  19930. + struct avr32_field_value *ifields)
  19931. +{
  19932. + info->fprintf_func(info->stream, "--%s",
  19933. + reg_table[ifields[0].value].name);
  19934. + return 1;
  19935. +}
  19936. +
  19937. +static int
  19938. +print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19939. + struct disassemble_info *info,
  19940. + struct avr32_field_value *ifields)
  19941. +{
  19942. + info->fprintf_func(info->stream, "%s++",
  19943. + reg_table[ifields[0].value].name);
  19944. + return 1;
  19945. +}
  19946. +
  19947. +static int
  19948. +print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19949. + struct disassemble_info *info,
  19950. + struct avr32_field_value *ifields)
  19951. +{
  19952. + const char *rp = reg_table[ifields[0].value].name;
  19953. + unsigned long sa = ifields[1].value;
  19954. +
  19955. + if (sa)
  19956. + info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
  19957. + else
  19958. + info->fprintf_func(info->stream, "%s", rp);
  19959. +
  19960. + return 2;
  19961. +}
  19962. +
  19963. +static int
  19964. +print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19965. + struct disassemble_info *info,
  19966. + struct avr32_field_value *ifields)
  19967. +{
  19968. + const char *rp = reg_table[ifields[0].value].name;
  19969. + unsigned long sa = ifields[1].value;
  19970. +
  19971. + if (sa)
  19972. + info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
  19973. + else
  19974. + info->fprintf_func(info->stream, "%s", rp);
  19975. +
  19976. + return 2;
  19977. +}
  19978. +
  19979. +static int
  19980. +print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19981. + struct disassemble_info *info,
  19982. + struct avr32_field_value *ifields)
  19983. +{
  19984. + info->fprintf_func(info->stream, "%s:%c",
  19985. + reg_table[ifields[0].value].name,
  19986. + bparts[ifields[1].value]);
  19987. + return 2;
  19988. +}
  19989. +
  19990. +static int
  19991. +print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
  19992. + struct disassemble_info *info,
  19993. + struct avr32_field_value *ifields)
  19994. +{
  19995. + info->fprintf_func(info->stream, "%s:%c",
  19996. + reg_table[ifields[0].value].name,
  19997. + ifields[1].value ? 't' : 'b');
  19998. + return 2;
  19999. +}
  20000. +
  20001. +static int
  20002. +print_intreg_sdisp(struct avr32_operand *op,
  20003. + struct disassemble_info *info,
  20004. + struct avr32_field_value *ifields)
  20005. +{
  20006. + signed long disp;
  20007. +
  20008. + disp = get_signed_value(&ifields[1]) << op->align_order;
  20009. +
  20010. + info->fprintf_func(info->stream, "%s[%ld]",
  20011. + reg_table[ifields[0].value].name, disp);
  20012. + return 2;
  20013. +}
  20014. +
  20015. +static int
  20016. +print_intreg_udisp(struct avr32_operand *op,
  20017. + struct disassemble_info *info,
  20018. + struct avr32_field_value *ifields)
  20019. +{
  20020. + info->fprintf_func(info->stream, "%s[0x%lx]",
  20021. + reg_table[ifields[0].value].name,
  20022. + ifields[1].value << op->align_order);
  20023. + return 2;
  20024. +}
  20025. +
  20026. +static int
  20027. +print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20028. + struct disassemble_info *info,
  20029. + struct avr32_field_value *ifields)
  20030. +{
  20031. + const char *rb, *ri;
  20032. + unsigned long sa = ifields[2].value;
  20033. +
  20034. + rb = reg_table[ifields[0].value].name;
  20035. + ri = reg_table[ifields[1].value].name;
  20036. +
  20037. + if (sa)
  20038. + info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
  20039. + else
  20040. + info->fprintf_func(info->stream, "%s[%s]", rb, ri);
  20041. +
  20042. + return 3;
  20043. +}
  20044. +
  20045. +static int
  20046. +print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20047. + struct disassemble_info *info,
  20048. + struct avr32_field_value *ifields)
  20049. +{
  20050. + info->fprintf_func(info->stream, "%s[%s:%c<<2]",
  20051. + reg_table[ifields[0].value].name,
  20052. + reg_table[ifields[1].value].name,
  20053. + bparts[ifields[2].value]);
  20054. + return 3;
  20055. +}
  20056. +
  20057. +static int
  20058. +print_jmplabel(struct avr32_operand *op,
  20059. + struct disassemble_info *info,
  20060. + struct avr32_field_value *ifields)
  20061. +{
  20062. + bfd_vma address, offset;
  20063. +
  20064. + offset = get_signed_value(ifields) << op->align_order;
  20065. + address = (current_pc & (~0UL << op->align_order)) + offset;
  20066. +
  20067. + info->print_address_func(address, info);
  20068. +
  20069. + return 1;
  20070. +}
  20071. +
  20072. +static int
  20073. +print_pc_disp(struct avr32_operand *op,
  20074. + struct disassemble_info *info,
  20075. + struct avr32_field_value *ifields)
  20076. +{
  20077. + bfd_vma address, offset;
  20078. +
  20079. + offset = ifields[0].value << op->align_order;
  20080. + address = (current_pc & (~0UL << op->align_order)) + offset;
  20081. +
  20082. + info->print_address_func(address, info);
  20083. +
  20084. + return 1;
  20085. +}
  20086. +
  20087. +static int
  20088. +print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20089. + struct disassemble_info *info,
  20090. + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
  20091. +{
  20092. + info->fprintf_func(info->stream, "sp");
  20093. + return 1;
  20094. +}
  20095. +
  20096. +static int
  20097. +print_sp_disp(struct avr32_operand *op,
  20098. + struct disassemble_info *info,
  20099. + struct avr32_field_value *ifields)
  20100. +{
  20101. + info->fprintf_func(info->stream, "sp[0x%lx]",
  20102. + ifields[0].value << op->align_order);
  20103. + return 1;
  20104. +}
  20105. +
  20106. +static int
  20107. +print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20108. + struct disassemble_info *info,
  20109. + struct avr32_field_value *ifields)
  20110. +{
  20111. + info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
  20112. + return 1;
  20113. +}
  20114. +
  20115. +static int
  20116. +print_cpreg(struct avr32_operand *op,
  20117. + struct disassemble_info *info,
  20118. + struct avr32_field_value *ifields)
  20119. +{
  20120. + info->fprintf_func(info->stream, "cr%lu",
  20121. + ifields[0].value << op->align_order);
  20122. + return 1;
  20123. +}
  20124. +
  20125. +static int
  20126. +print_uconst(struct avr32_operand *op,
  20127. + struct disassemble_info *info,
  20128. + struct avr32_field_value *ifields)
  20129. +{
  20130. + info->fprintf_func(info->stream, "0x%lx",
  20131. + ifields[0].value << op->align_order);
  20132. + return 1;
  20133. +}
  20134. +
  20135. +static int
  20136. +print_sconst(struct avr32_operand *op,
  20137. + struct disassemble_info *info,
  20138. + struct avr32_field_value *ifields)
  20139. +{
  20140. + info->fprintf_func(info->stream, "%ld",
  20141. + get_signed_value(ifields) << op->align_order);
  20142. + return 1;
  20143. +}
  20144. +
  20145. +static int
  20146. +print_reglist8_head(unsigned long regmask, int *commap,
  20147. + struct disassemble_info *info)
  20148. +{
  20149. + int first = -1, last, i = 0;
  20150. + int need_comma = 0;
  20151. +
  20152. + while (i < 12)
  20153. + {
  20154. + if (first == -1 && (regmask & 1))
  20155. + {
  20156. + first = i;
  20157. + }
  20158. + else if (first != -1 && !(regmask & 1))
  20159. + {
  20160. + last = i - 1;
  20161. +
  20162. + print_reglist_range(first, last, reg_table, need_comma, info);
  20163. + need_comma = 1;
  20164. + first = -1;
  20165. + }
  20166. +
  20167. + if (i < 8)
  20168. + i += 4;
  20169. + else if (i < 10)
  20170. + i += 2;
  20171. + else
  20172. + i++;
  20173. + regmask >>= 1;
  20174. + }
  20175. +
  20176. + *commap = need_comma;
  20177. + return first;
  20178. +}
  20179. +
  20180. +static void
  20181. +print_reglist8_tail(unsigned long regmask, int first, int need_comma,
  20182. + struct disassemble_info *info)
  20183. +{
  20184. + int last = 11;
  20185. +
  20186. + if (regmask & 0x20)
  20187. + {
  20188. + if (first == -1)
  20189. + first = 12;
  20190. + last = 12;
  20191. + }
  20192. +
  20193. + if (first != -1)
  20194. + {
  20195. + print_reglist_range(first, last, reg_table, need_comma, info);
  20196. + need_comma = 1;
  20197. + first = -1;
  20198. + }
  20199. +
  20200. + if (regmask & 0x40)
  20201. + {
  20202. + if (first == -1)
  20203. + first = 14;
  20204. + last = 14;
  20205. + }
  20206. +
  20207. + if (regmask & 0x80)
  20208. + {
  20209. + if (first == -1)
  20210. + first = 15;
  20211. + last = 15;
  20212. + }
  20213. +
  20214. + if (first != -1)
  20215. + print_reglist_range(first, last, reg_table, need_comma, info);
  20216. +}
  20217. +
  20218. +static int
  20219. +print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20220. + struct disassemble_info *info,
  20221. + struct avr32_field_value *ifields)
  20222. +{
  20223. + unsigned long regmask = ifields[0].value;
  20224. + int first, need_comma;
  20225. +
  20226. + first = print_reglist8_head(regmask, &need_comma, info);
  20227. + print_reglist8_tail(regmask, first, need_comma, info);
  20228. +
  20229. + return 1;
  20230. +}
  20231. +
  20232. +static int
  20233. +print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20234. + struct disassemble_info *info,
  20235. + struct avr32_field_value *ifields)
  20236. +{
  20237. + unsigned long regmask = ifields[0].value >> 1;
  20238. + int first, last, need_comma;
  20239. +
  20240. + first = print_reglist8_head(regmask, &need_comma, info);
  20241. +
  20242. + if ((ifields[0].value & 0x101) == 0x101)
  20243. + {
  20244. + if (first != -1)
  20245. + {
  20246. + last = 11;
  20247. +
  20248. + print_reglist_range(first, last, reg_table, need_comma, info);
  20249. + need_comma = 1;
  20250. + first = -1;
  20251. + }
  20252. +
  20253. + print_reglist_range(15, 15, reg_table, need_comma, info);
  20254. +
  20255. + regmask >>= 5;
  20256. +
  20257. + if ((regmask & 3) == 0)
  20258. + info->fprintf_func(info->stream, ",r12=0");
  20259. + else if ((regmask & 3) == 1)
  20260. + info->fprintf_func(info->stream, ",r12=1");
  20261. + else
  20262. + info->fprintf_func(info->stream, ",r12=-1");
  20263. + }
  20264. + else
  20265. + print_reglist8_tail(regmask, first, need_comma, info);
  20266. +
  20267. + return 1;
  20268. +}
  20269. +
  20270. +static int
  20271. +print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20272. + struct disassemble_info *info,
  20273. + struct avr32_field_value *ifields)
  20274. +{
  20275. + unsigned long regmask = ifields[0].value;
  20276. + unsigned int i = 0, first, last;
  20277. + int need_comma = 0;
  20278. +
  20279. + while (i < 16)
  20280. + {
  20281. + if (regmask & 1)
  20282. + {
  20283. + first = i;
  20284. + while (i < 16)
  20285. + {
  20286. + i++;
  20287. + regmask >>= 1;
  20288. + if (!(regmask & 1))
  20289. + break;
  20290. + }
  20291. + last = i - 1;
  20292. + print_reglist_range(first, last, reg_table, need_comma, info);
  20293. + need_comma = 1;
  20294. + }
  20295. + else
  20296. + {
  20297. + i++;
  20298. + regmask >>= 1;
  20299. + }
  20300. + }
  20301. +
  20302. + return 1;
  20303. +}
  20304. +
  20305. +static int
  20306. +print_reglist_ldm(struct avr32_operand *op,
  20307. + struct disassemble_info *info,
  20308. + struct avr32_field_value *ifields)
  20309. +{
  20310. + int rp, w_bit;
  20311. + int i, first, last;
  20312. + unsigned long regmask;
  20313. +
  20314. + rp = ifields[0].value;
  20315. + w_bit = ifields[1].value;
  20316. + regmask = ifields[2].value;
  20317. +
  20318. + if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
  20319. + {
  20320. + if (w_bit)
  20321. + info->fprintf_func(info->stream, "sp++");
  20322. + else
  20323. + info->fprintf_func(info->stream, "sp");
  20324. +
  20325. + for (i = 0; i < 12; )
  20326. + {
  20327. + if (regmask & (1 << i))
  20328. + {
  20329. + first = i;
  20330. + while (i < 12)
  20331. + {
  20332. + i++;
  20333. + if (!(regmask & (1 << i)))
  20334. + break;
  20335. + }
  20336. + last = i - 1;
  20337. + print_reglist_range(first, last, reg_table, 1, info);
  20338. + }
  20339. + else
  20340. + i++;
  20341. + }
  20342. +
  20343. + info->fprintf_func(info->stream, ",pc");
  20344. + if (regmask & (1 << AVR32_REG_LR))
  20345. + info->fprintf_func(info->stream, ",r12=-1");
  20346. + else if (regmask & (1 << AVR32_REG_R12))
  20347. + info->fprintf_func(info->stream, ",r12=1");
  20348. + else
  20349. + info->fprintf_func(info->stream, ",r12=0");
  20350. + }
  20351. + else
  20352. + {
  20353. + if (w_bit)
  20354. + info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
  20355. + else
  20356. + info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
  20357. +
  20358. + print_reglist16(op, info, ifields + 2);
  20359. + }
  20360. +
  20361. + return 3;
  20362. +}
  20363. +
  20364. +static int
  20365. +print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20366. + struct disassemble_info *info,
  20367. + struct avr32_field_value *ifields)
  20368. +{
  20369. + unsigned long regmask = ifields[0].value;
  20370. + unsigned int i = 0, first, last, offset = 0;
  20371. + int need_comma = 0;
  20372. +
  20373. + if (ifields[1].value)
  20374. + offset = 8;
  20375. +
  20376. + while (i < 8)
  20377. + {
  20378. + if (regmask & 1)
  20379. + {
  20380. + first = i;
  20381. + while (i < 8)
  20382. + {
  20383. + i++;
  20384. + regmask >>= 1;
  20385. + if (!(regmask & 1))
  20386. + break;
  20387. + }
  20388. + last = i - 1;
  20389. + print_reglist_range(offset + first, offset + last,
  20390. + cr_table, need_comma, info);
  20391. + need_comma = 1;
  20392. + }
  20393. + else
  20394. + {
  20395. + i++;
  20396. + regmask >>= 1;
  20397. + }
  20398. + }
  20399. +
  20400. + return 2;
  20401. +}
  20402. +
  20403. +static int
  20404. +print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20405. + struct disassemble_info *info,
  20406. + struct avr32_field_value *ifields)
  20407. +{
  20408. + unsigned long regmask = ifields[0].value;
  20409. + unsigned int i = 0, first, last;
  20410. + int need_comma = 0;
  20411. +
  20412. + while (i < 8)
  20413. + {
  20414. + if (regmask & 1)
  20415. + {
  20416. + first = 2 * i;
  20417. + while (i < 8)
  20418. + {
  20419. + i++;
  20420. + regmask >>= 1;
  20421. + if (!(regmask & 1))
  20422. + break;
  20423. + }
  20424. + last = 2 * (i - 1) + 1;
  20425. + print_reglist_range(first, last, cr_table, need_comma, info);
  20426. + need_comma = 1;
  20427. + }
  20428. + else
  20429. + {
  20430. + i++;
  20431. + regmask >>= 1;
  20432. + }
  20433. + }
  20434. +
  20435. + return 1;
  20436. +}
  20437. +
  20438. +static int
  20439. +print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20440. + struct disassemble_info *info,
  20441. + struct avr32_field_value *ifields)
  20442. +{
  20443. + unsigned long regid = ifields[0].value;
  20444. + const char *retval;
  20445. +
  20446. + if (regid < AVR32_REG_SP)
  20447. + retval = reg_table[regid].name;
  20448. + else if (regid == AVR32_REG_SP)
  20449. + retval = "0";
  20450. + else if (regid == AVR32_REG_LR)
  20451. + retval = "-1";
  20452. + else
  20453. + retval = "1";
  20454. +
  20455. + info->fprintf_func(info->stream, "%s", retval);
  20456. +
  20457. + return 1;
  20458. +}
  20459. +
  20460. +static int
  20461. +print_mcall(struct avr32_operand *op,
  20462. + struct disassemble_info *info,
  20463. + struct avr32_field_value *ifields)
  20464. +{
  20465. + unsigned long regid = ifields[0].value;
  20466. +
  20467. + if (regid == AVR32_REG_PC)
  20468. + print_jmplabel(op, info, ifields + 1);
  20469. + else
  20470. + print_intreg_sdisp(op, info, ifields);
  20471. +
  20472. + return 2;
  20473. +}
  20474. +
  20475. +static int
  20476. +print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20477. + struct disassemble_info *info,
  20478. + struct avr32_field_value *ifields)
  20479. +{
  20480. + signed long value = ifields[0].value;
  20481. +
  20482. + if (value >= 4)
  20483. + value -= 8;
  20484. + else
  20485. + value += 1;
  20486. +
  20487. + info->fprintf_func(info->stream, "%ld", value);
  20488. +
  20489. + return 1;
  20490. +}
  20491. +
  20492. +static int
  20493. +print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
  20494. + struct disassemble_info *info,
  20495. + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
  20496. +{
  20497. + info->fprintf_func(info->stream, "COH");
  20498. + return 0;
  20499. +}
  20500. +
  20501. +#define OP(name, sgn, pcrel, align, func) \
  20502. + { AVR32_OPERAND_##name, pcrel, align, print_##func }
  20503. +
  20504. +struct avr32_operand operand[AVR32_NR_OPERANDS] =
  20505. + {
  20506. + OP(INTREG, 0, 0, 0, intreg),
  20507. + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
  20508. + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
  20509. + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
  20510. + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
  20511. + OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
  20512. + OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
  20513. + OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
  20514. + OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
  20515. + OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
  20516. + OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
  20517. + OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
  20518. + OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
  20519. + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
  20520. + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
  20521. + OP(DWREG, 0, 0, 1, intreg),
  20522. + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
  20523. + OP(SP, 0, 0, 0, sp),
  20524. + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
  20525. + OP(CPNO, 0, 0, 0, cpno),
  20526. + OP(CPREG, 0, 0, 0, cpreg),
  20527. + OP(CPREG_D, 0, 0, 1, cpreg),
  20528. + OP(UNSIGNED_CONST, 0, 0, 0, uconst),
  20529. + OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
  20530. + OP(SIGNED_CONST, 1, 0, 0, sconst),
  20531. + OP(SIGNED_CONST_W, 1, 0, 2, sconst),
  20532. + OP(JMPLABEL, 1, 1, 1, jmplabel),
  20533. + OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
  20534. + OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
  20535. + OP(REGLIST8, 0, 0, 0, reglist8),
  20536. + OP(REGLIST9, 0, 0, 0, reglist9),
  20537. + OP(REGLIST16, 0, 0, 0, reglist16),
  20538. + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
  20539. + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
  20540. + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
  20541. + OP(RETVAL, 0, 0, 0, retval),
  20542. + OP(MCALL, 1, 0, 2, mcall),
  20543. + OP(JOSPINC, 0, 0, 0, jospinc),
  20544. + OP(COH, 0, 0, 0, coh),
  20545. + };
  20546. +
  20547. +static void
  20548. +print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
  20549. + bfd_vma pc, struct disassemble_info *info)
  20550. +{
  20551. + const struct avr32_syntax *syntax = opc->syntax;
  20552. + struct avr32_field_value fields[AVR32_MAX_FIELDS];
  20553. + unsigned int i, next_field = 0, nr_operands;
  20554. +
  20555. + for (i = 0; i < opc->nr_fields; i++)
  20556. + {
  20557. + opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
  20558. + fields[i].ifield = opc->fields[i];
  20559. + }
  20560. +
  20561. + current_pc = pc;
  20562. + info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
  20563. +
  20564. + if (syntax->nr_operands < 0)
  20565. + nr_operands = (unsigned int) -syntax->nr_operands;
  20566. + else
  20567. + nr_operands = (unsigned int) syntax->nr_operands;
  20568. +
  20569. + for (i = 0; i < nr_operands; i++)
  20570. + {
  20571. + struct avr32_operand *op = &operand[syntax->operand[i]];
  20572. +
  20573. + if (i)
  20574. + info->fprintf_func(info->stream, ",");
  20575. + else
  20576. + info->fprintf_func(info->stream, "\t");
  20577. + next_field += op->print(op, info, &fields[next_field]);
  20578. + }
  20579. +}
  20580. +
  20581. +static const struct avr32_opcode *
  20582. +find_opcode(bfd_vma insn_word)
  20583. +{
  20584. + int i;
  20585. +
  20586. + for (i = 0; i < AVR32_NR_OPCODES; i++)
  20587. + {
  20588. + const struct avr32_opcode *opc = &avr32_opc_table[i];
  20589. +
  20590. + if ((insn_word & opc->mask) == opc->value)
  20591. + return opc;
  20592. + }
  20593. +
  20594. + return NULL;
  20595. +}
  20596. +
  20597. +static int
  20598. +read_insn_word(bfd_vma pc, bfd_vma *valuep,
  20599. + struct disassemble_info *info)
  20600. +{
  20601. + bfd_byte b[4];
  20602. + int status;
  20603. +
  20604. + status = info->read_memory_func(pc, b, 4, info);
  20605. + if (status)
  20606. + {
  20607. + status = info->read_memory_func(pc, b, 2, info);
  20608. + if (status)
  20609. + {
  20610. + info->memory_error_func(status, pc, info);
  20611. + return -1;
  20612. + }
  20613. + b[3] = b[2] = 0;
  20614. + }
  20615. +
  20616. + *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
  20617. + return 0;
  20618. +}
  20619. +
  20620. +/* Parse an individual disassembler option. */
  20621. +
  20622. +void
  20623. +parse_avr32_disassembler_option (option)
  20624. + char * option;
  20625. +{
  20626. + if (option == NULL)
  20627. + return;
  20628. +
  20629. + /* XXX - should break 'option' at following delimiter. */
  20630. + fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
  20631. +
  20632. + return;
  20633. +}
  20634. +
  20635. +/* Parse the string of disassembler options, spliting it at whitespaces
  20636. + or commas. (Whitespace separators supported for backwards compatibility). */
  20637. +
  20638. +static void
  20639. +parse_disassembler_options (char *options)
  20640. +{
  20641. + if (options == NULL)
  20642. + return;
  20643. +
  20644. + while (*options)
  20645. + {
  20646. + parse_avr32_disassembler_option (options);
  20647. +
  20648. + /* Skip forward to next seperator. */
  20649. + while ((*options) && (! ISSPACE (*options)) && (*options != ','))
  20650. + ++ options;
  20651. + /* Skip forward past seperators. */
  20652. + while (ISSPACE (*options) || (*options == ','))
  20653. + ++ options;
  20654. + }
  20655. +}
  20656. +
  20657. +int
  20658. +print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
  20659. +{
  20660. + bfd_vma insn_word;
  20661. + const struct avr32_opcode *opc;
  20662. +
  20663. + if (info->disassembler_options)
  20664. + {
  20665. + parse_disassembler_options (info->disassembler_options);
  20666. +
  20667. + /* To avoid repeated parsing of these options, we remove them here. */
  20668. + info->disassembler_options = NULL;
  20669. + }
  20670. +
  20671. + info->bytes_per_chunk = 1;
  20672. + info->display_endian = BFD_ENDIAN_BIG;
  20673. +
  20674. + if (read_insn_word(pc, &insn_word, info))
  20675. + return -1;
  20676. +
  20677. + opc = find_opcode(insn_word);
  20678. + if (opc)
  20679. + {
  20680. + print_opcode(insn_word, opc, pc, info);
  20681. + return opc->size;
  20682. + }
  20683. + else
  20684. + {
  20685. + info->fprintf_func(info->stream, _("*unknown*"));
  20686. + return 2;
  20687. + }
  20688. +
  20689. +}
  20690. +
  20691. +void
  20692. +print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
  20693. +{
  20694. +
  20695. +}
  20696. --- /dev/null
  20697. +++ b/opcodes/avr32-opc.c
  20698. @@ -0,0 +1,6932 @@
  20699. +/* Opcode tables for AVR32.
  20700. + Copyright 2005, 2006 Atmel Corporation.
  20701. +
  20702. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  20703. +
  20704. + This file is part of libopcodes.
  20705. +
  20706. + This program is free software; you can redistribute it and/or
  20707. + modify it under the terms of the GNU General Public License as
  20708. + published by the Free Software Foundation; either version 2 of the
  20709. + License, or (at your option) any later version.
  20710. +
  20711. + This program is distributed in the hope that it will be useful, but
  20712. + WITHOUT ANY WARRANTY; without even the implied warranty of
  20713. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  20714. + General Public License for more details.
  20715. +
  20716. + You should have received a copy of the GNU General Public License
  20717. + along with this program; if not, write to the Free Software
  20718. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  20719. + 02111-1307, USA. */
  20720. +
  20721. +#include <stdlib.h>
  20722. +#include <assert.h>
  20723. +
  20724. +#include "avr32-opc.h"
  20725. +
  20726. +#define PICO_CPNO 1
  20727. +
  20728. +void
  20729. +avr32_insert_simple(const struct avr32_ifield *field,
  20730. + void *buf, unsigned long value)
  20731. +{
  20732. + bfd_vma word;
  20733. +
  20734. + word = bfd_getb32(buf);
  20735. + word &= ~field->mask;
  20736. + word |= (value << field->shift) & field->mask;
  20737. + bfd_putb32(word, buf);
  20738. +}
  20739. +
  20740. +void
  20741. +avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20742. + void *buf, unsigned long value)
  20743. +{
  20744. + char *opcode = buf;
  20745. +
  20746. + opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
  20747. + opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
  20748. +}
  20749. +
  20750. +void
  20751. +avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20752. + void *buf, unsigned long value)
  20753. +{
  20754. + char *opcode = buf;
  20755. +
  20756. + opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
  20757. + opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
  20758. + | ((value & 0x300) >> 8));
  20759. +}
  20760. +
  20761. +
  20762. +void
  20763. +avr32_insert_k21(const struct avr32_ifield *field,
  20764. + void *buf, unsigned long value)
  20765. +{
  20766. + bfd_vma word;
  20767. + bfd_vma k21;
  20768. +
  20769. + word = bfd_getb32(buf);
  20770. + word &= ~field->mask;
  20771. + k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
  20772. + | ((value & 0x1e0000) << 8));
  20773. + assert(!(k21 & ~field->mask));
  20774. + word |= k21;
  20775. + bfd_putb32(word, buf);
  20776. +}
  20777. +
  20778. +void
  20779. +avr32_insert_cpop(const struct avr32_ifield *field,
  20780. + void *buf, unsigned long value)
  20781. +{
  20782. + bfd_vma word;
  20783. +
  20784. + word = bfd_getb32(buf);
  20785. + word &= ~field->mask;
  20786. + word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
  20787. + | ((value & 0x01) << 12));
  20788. + bfd_putb32(word, buf);
  20789. +}
  20790. +
  20791. +void
  20792. +avr32_insert_k12cp(const struct avr32_ifield *field,
  20793. + void *buf, unsigned long value)
  20794. +{
  20795. + bfd_vma word;
  20796. +
  20797. + word = bfd_getb32(buf);
  20798. + word &= ~field->mask;
  20799. + word |= ((value & 0xf00) << 4) | (value & 0xff);
  20800. + bfd_putb32(word, buf);
  20801. +}
  20802. +
  20803. +void avr32_extract_simple(const struct avr32_ifield *field,
  20804. + void *buf, unsigned long *value)
  20805. +{
  20806. + /* XXX: The disassembler has done any necessary byteswapping already */
  20807. + bfd_vma word = *(bfd_vma *)buf;
  20808. +
  20809. + *value = (word & field->mask) >> field->shift;
  20810. +}
  20811. +
  20812. +void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20813. + void *buf, unsigned long *value)
  20814. +{
  20815. + bfd_vma word = *(bfd_vma *)buf;
  20816. +
  20817. + *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
  20818. +}
  20819. +
  20820. +void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20821. + void *buf, unsigned long *value)
  20822. +{
  20823. + bfd_vma word = *(bfd_vma *)buf;
  20824. +
  20825. + *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
  20826. +}
  20827. +
  20828. +void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20829. + void *buf, unsigned long *value)
  20830. +{
  20831. + bfd_vma word = *(bfd_vma *)buf;
  20832. +
  20833. + *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
  20834. + | ((word >> 8) & 0x1e0000));
  20835. +}
  20836. +
  20837. +void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20838. + void *buf, unsigned long *value)
  20839. +{
  20840. + bfd_vma word = *(bfd_vma *)buf;
  20841. +
  20842. + *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
  20843. + | ((word >> 20) & 0x60));
  20844. +}
  20845. +
  20846. +void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
  20847. + void *buf, unsigned long *value)
  20848. +{
  20849. + bfd_vma word = *(bfd_vma *)buf;
  20850. +
  20851. + *value = ((word >> 4) & 0xf00) | (word & 0xff);
  20852. +}
  20853. +
  20854. +
  20855. +#define IFLD(id, bitsz, shift, mask, func) \
  20856. + { AVR32_IFIELD_##id, bitsz, shift, mask, \
  20857. + avr32_insert_##func, avr32_extract_##func }
  20858. +
  20859. +const struct avr32_ifield avr32_ifield_table[] =
  20860. + {
  20861. + IFLD(RX, 4, 25, 0x1e000000, simple),
  20862. + IFLD(RY, 4, 16, 0x000f0000, simple),
  20863. + IFLD(COND4C, 4, 20, 0x00f00000, simple),
  20864. + IFLD(K8C, 8, 20, 0x0ff00000, simple),
  20865. + IFLD(K7C, 7, 20, 0x07f00000, simple),
  20866. + IFLD(K5C, 5, 20, 0x01f00000, simple),
  20867. + IFLD(K3, 3, 20, 0x00700000, simple),
  20868. + IFLD(RY_DW, 3, 17, 0x000e0000, simple),
  20869. + IFLD(COND4E, 4, 8, 0x00000f00, simple),
  20870. + IFLD(K8E, 8, 0, 0x000000ff, simple),
  20871. + IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
  20872. + IFLD(COND3, 3, 16, 0x00070000, simple),
  20873. + IFLD(K10, 10, 16, 0x0ff30000, k10),
  20874. + IFLD(POPM, 9, 19, 0x0ff80000, simple),
  20875. + IFLD(K2, 2, 4, 0x00000030, simple),
  20876. + IFLD(RD_E, 4, 0, 0x0000000f, simple),
  20877. + IFLD(RD_DW, 3, 1, 0x0000000e, simple),
  20878. + IFLD(X, 1, 5, 0x00000020, simple),
  20879. + IFLD(Y, 1, 4, 0x00000010, simple),
  20880. + IFLD(X2, 1, 13, 0x00002000, simple),
  20881. + IFLD(Y2, 1, 12, 0x00001000, simple),
  20882. + IFLD(K5E, 5, 0, 0x0000001f, simple),
  20883. + IFLD(PART2, 2, 0, 0x00000003, simple),
  20884. + IFLD(PART1, 1, 0, 0x00000001, simple),
  20885. + IFLD(K16, 16, 0, 0x0000ffff, simple),
  20886. + IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
  20887. + IFLD(K11, 11, 0, 0x000007ff, simple),
  20888. + IFLD(K21, 21, 0, 0x1e10ffff, k21),
  20889. + IFLD(CPOP, 7, 12, 0x060f1000, cpop),
  20890. + IFLD(CPNO, 3, 13, 0x0000e000, simple),
  20891. + IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
  20892. + IFLD(CRX, 4, 4, 0x000000f0, simple),
  20893. + IFLD(CRY, 4, 0, 0x0000000f, simple),
  20894. + IFLD(K7E, 7, 0, 0x0000007f, simple),
  20895. + IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
  20896. + IFLD(PART1_K12, 1, 12, 0x00001000, simple),
  20897. + IFLD(PART2_K12, 2, 12, 0x00003000, simple),
  20898. + IFLD(K12, 12, 0, 0x00000fff, simple),
  20899. + IFLD(S5, 5, 5, 0x000003e0, simple),
  20900. + IFLD(K5E2, 5, 4, 0x000001f0, simple),
  20901. + IFLD(K4, 4, 20, 0x00f00000, simple),
  20902. + IFLD(COND4E2, 4, 4, 0x000000f0, simple),
  20903. + IFLD(K8E2, 8, 4, 0x00000ff0, simple),
  20904. + IFLD(K6, 6, 20, 0x03f00000, simple),
  20905. + IFLD(MEM15, 15, 0, 0x00007fff, simple),
  20906. + IFLD(MEMB5, 5, 15, 0x000f8000, simple),
  20907. + IFLD(W, 1, 25, 0x02000000, simple),
  20908. + /* Coprocessor Multiple High/Low */
  20909. + IFLD(CM_HL, 1, 8, 0x00000100, simple),
  20910. + IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
  20911. + IFLD(K9E, 9 ,0, 0x000001ff, simple),
  20912. + };
  20913. +#undef IFLD
  20914. +
  20915. +
  20916. +struct avr32_opcode avr32_opc_table[] =
  20917. + {
  20918. + {
  20919. + AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
  20920. + &avr32_syntax_table[AVR32_SYNTAX_ABS],
  20921. + BFD_RELOC_UNUSED, 1, -1,
  20922. + {
  20923. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20924. + }
  20925. + },
  20926. + {
  20927. + AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
  20928. + &avr32_syntax_table[AVR32_SYNTAX_ACALL],
  20929. + BFD_RELOC_UNUSED, 1, -1,
  20930. + {
  20931. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  20932. + },
  20933. + },
  20934. + {
  20935. + AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
  20936. + &avr32_syntax_table[AVR32_SYNTAX_ACR],
  20937. + BFD_RELOC_UNUSED, 1, -1,
  20938. + {
  20939. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20940. + },
  20941. + },
  20942. + {
  20943. + AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
  20944. + &avr32_syntax_table[AVR32_SYNTAX_ADC],
  20945. + BFD_RELOC_UNUSED, 3, -1,
  20946. + {
  20947. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  20948. + &avr32_ifield_table[AVR32_IFIELD_RX],
  20949. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20950. + },
  20951. + },
  20952. + {
  20953. + AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
  20954. + &avr32_syntax_table[AVR32_SYNTAX_ADD1],
  20955. + BFD_RELOC_UNUSED, 2, -1,
  20956. + {
  20957. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20958. + &avr32_ifield_table[AVR32_IFIELD_RX],
  20959. + },
  20960. + },
  20961. + {
  20962. + AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
  20963. + &avr32_syntax_table[AVR32_SYNTAX_ADD2],
  20964. + BFD_RELOC_UNUSED, 4, -1,
  20965. + {
  20966. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  20967. + &avr32_ifield_table[AVR32_IFIELD_RX],
  20968. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20969. + &avr32_ifield_table[AVR32_IFIELD_K2],
  20970. + },
  20971. + },
  20972. + {
  20973. + AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
  20974. + &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
  20975. + BFD_RELOC_UNUSED, 3, -1,
  20976. + {
  20977. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  20978. + &avr32_ifield_table[AVR32_IFIELD_RX],
  20979. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20980. + },
  20981. + },
  20982. + {
  20983. + AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
  20984. + &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
  20985. + BFD_RELOC_UNUSED, 5, -1,
  20986. + {
  20987. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  20988. + &avr32_ifield_table[AVR32_IFIELD_RX],
  20989. + &avr32_ifield_table[AVR32_IFIELD_X],
  20990. + &avr32_ifield_table[AVR32_IFIELD_RY],
  20991. + &avr32_ifield_table[AVR32_IFIELD_Y],
  20992. + },
  20993. + },
  20994. + {
  20995. + AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
  20996. + &avr32_syntax_table[AVR32_SYNTAX_AND1],
  20997. + BFD_RELOC_UNUSED, 2, -1,
  20998. + {
  20999. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21000. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21001. + },
  21002. + },
  21003. + {
  21004. + AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
  21005. + &avr32_syntax_table[AVR32_SYNTAX_AND2],
  21006. + BFD_RELOC_UNUSED, 4, -1,
  21007. + {
  21008. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21009. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21010. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21011. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  21012. + },
  21013. + },
  21014. + {
  21015. + AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
  21016. + &avr32_syntax_table[AVR32_SYNTAX_AND3],
  21017. + BFD_RELOC_UNUSED, 4, -1,
  21018. + {
  21019. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21020. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21021. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21022. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  21023. + },
  21024. + },
  21025. + {
  21026. + AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
  21027. + &avr32_syntax_table[AVR32_SYNTAX_ANDH],
  21028. + BFD_RELOC_AVR32_16U, 2, 1,
  21029. + {
  21030. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21031. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21032. + },
  21033. + },
  21034. + {
  21035. + AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
  21036. + &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
  21037. + BFD_RELOC_AVR32_16U, 2, 1,
  21038. + {
  21039. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21040. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21041. + },
  21042. + },
  21043. + {
  21044. + AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
  21045. + &avr32_syntax_table[AVR32_SYNTAX_ANDL],
  21046. + BFD_RELOC_AVR32_16U, 2, 1,
  21047. + {
  21048. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21049. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21050. + },
  21051. + },
  21052. + {
  21053. + AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
  21054. + &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
  21055. + BFD_RELOC_AVR32_16U, 2, 1,
  21056. + {
  21057. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21058. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21059. + },
  21060. + },
  21061. + {
  21062. + AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
  21063. + &avr32_syntax_table[AVR32_SYNTAX_ANDN],
  21064. + BFD_RELOC_UNUSED, 2, -1,
  21065. + {
  21066. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21067. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21068. + },
  21069. + },
  21070. + {
  21071. + AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
  21072. + &avr32_syntax_table[AVR32_SYNTAX_ASR1],
  21073. + BFD_RELOC_UNUSED, 3, -1,
  21074. + {
  21075. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21076. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21077. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21078. + },
  21079. + },
  21080. + {
  21081. + AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
  21082. + &avr32_syntax_table[AVR32_SYNTAX_ASR3],
  21083. + BFD_RELOC_UNUSED, 3, -1,
  21084. + {
  21085. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21086. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21087. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  21088. + },
  21089. + },
  21090. + {
  21091. + AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
  21092. + &avr32_syntax_table[AVR32_SYNTAX_ASR2],
  21093. + BFD_RELOC_UNUSED, 2, -1,
  21094. + {
  21095. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21096. + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
  21097. + },
  21098. + },
  21099. + {
  21100. + AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
  21101. + &avr32_syntax_table[AVR32_SYNTAX_BLD],
  21102. + BFD_RELOC_UNUSED, 2, -1,
  21103. + {
  21104. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21105. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  21106. + },
  21107. + },
  21108. + {
  21109. + AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
  21110. + &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
  21111. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21112. + {
  21113. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21114. + },
  21115. + },
  21116. + {
  21117. + AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
  21118. + &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
  21119. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21120. + {
  21121. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21122. + },
  21123. + },
  21124. + {
  21125. + AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
  21126. + &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
  21127. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21128. + {
  21129. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21130. + },
  21131. + },
  21132. + {
  21133. + AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
  21134. + &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
  21135. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21136. + {
  21137. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21138. + },
  21139. + },
  21140. + {
  21141. + AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
  21142. + &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
  21143. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21144. + {
  21145. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21146. + },
  21147. + },
  21148. + {
  21149. + AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
  21150. + &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
  21151. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21152. + {
  21153. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21154. + },
  21155. + },
  21156. + {
  21157. + AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
  21158. + &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
  21159. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21160. + {
  21161. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21162. + },
  21163. + },
  21164. + {
  21165. + AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
  21166. + &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
  21167. + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
  21168. + {
  21169. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  21170. + },
  21171. + },
  21172. + {
  21173. + AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
  21174. + &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
  21175. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21176. + {
  21177. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21178. + },
  21179. + },
  21180. + {
  21181. + AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
  21182. + &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
  21183. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21184. + {
  21185. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21186. + },
  21187. + },
  21188. + {
  21189. + AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
  21190. + &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
  21191. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21192. + {
  21193. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21194. + },
  21195. + },
  21196. + {
  21197. + AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
  21198. + &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
  21199. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21200. + {
  21201. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21202. + },
  21203. + },
  21204. + {
  21205. + AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
  21206. + &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
  21207. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21208. + {
  21209. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21210. + },
  21211. + },
  21212. + {
  21213. + AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
  21214. + &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
  21215. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21216. + {
  21217. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21218. + },
  21219. + },
  21220. + {
  21221. + AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
  21222. + &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
  21223. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21224. + {
  21225. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21226. + },
  21227. + },
  21228. + {
  21229. + AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
  21230. + &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
  21231. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21232. + {
  21233. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21234. + },
  21235. + },
  21236. + {
  21237. + AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
  21238. + &avr32_syntax_table[AVR32_SYNTAX_BRLS],
  21239. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21240. + {
  21241. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21242. + },
  21243. + },
  21244. + {
  21245. + AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
  21246. + &avr32_syntax_table[AVR32_SYNTAX_BRGT],
  21247. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21248. + {
  21249. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21250. + },
  21251. + },
  21252. + {
  21253. + AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
  21254. + &avr32_syntax_table[AVR32_SYNTAX_BRLE],
  21255. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21256. + {
  21257. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21258. + },
  21259. + },
  21260. + {
  21261. + AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
  21262. + &avr32_syntax_table[AVR32_SYNTAX_BRHI],
  21263. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21264. + {
  21265. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21266. + },
  21267. + },
  21268. + {
  21269. + AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
  21270. + &avr32_syntax_table[AVR32_SYNTAX_BRVS],
  21271. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21272. + {
  21273. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21274. + },
  21275. + },
  21276. + {
  21277. + AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
  21278. + &avr32_syntax_table[AVR32_SYNTAX_BRVC],
  21279. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21280. + {
  21281. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21282. + },
  21283. + },
  21284. + {
  21285. + AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
  21286. + &avr32_syntax_table[AVR32_SYNTAX_BRQS],
  21287. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21288. + {
  21289. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21290. + },
  21291. + },
  21292. + {
  21293. + AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
  21294. + &avr32_syntax_table[AVR32_SYNTAX_BRAL],
  21295. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  21296. + {
  21297. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21298. + },
  21299. + },
  21300. + {
  21301. + AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
  21302. + &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
  21303. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  21304. + },
  21305. + {
  21306. + AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
  21307. + &avr32_syntax_table[AVR32_SYNTAX_BREV],
  21308. + BFD_RELOC_UNUSED, 1, -1,
  21309. + {
  21310. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21311. + },
  21312. + },
  21313. + {
  21314. + AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
  21315. + &avr32_syntax_table[AVR32_SYNTAX_BST],
  21316. + BFD_RELOC_UNUSED, 2, -1,
  21317. + {
  21318. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21319. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  21320. + },
  21321. + },
  21322. + {
  21323. + AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
  21324. + &avr32_syntax_table[AVR32_SYNTAX_CACHE],
  21325. + BFD_RELOC_UNUSED, 3, -1,
  21326. + {
  21327. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21328. + &avr32_ifield_table[AVR32_IFIELD_K11],
  21329. + &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
  21330. + },
  21331. + },
  21332. + {
  21333. + AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
  21334. + &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
  21335. + BFD_RELOC_UNUSED, 1, -1,
  21336. + {
  21337. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21338. + },
  21339. + },
  21340. + {
  21341. + AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
  21342. + &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
  21343. + BFD_RELOC_UNUSED, 1, -1,
  21344. + {
  21345. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21346. + },
  21347. + },
  21348. + {
  21349. + AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
  21350. + &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
  21351. + BFD_RELOC_UNUSED, 1, -1,
  21352. + {
  21353. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21354. + },
  21355. + },
  21356. + {
  21357. + AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
  21358. + &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
  21359. + BFD_RELOC_UNUSED, 1, -1,
  21360. + {
  21361. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21362. + },
  21363. + },
  21364. + {
  21365. + AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
  21366. + &avr32_syntax_table[AVR32_SYNTAX_CBR],
  21367. + BFD_RELOC_UNUSED, 2, -1,
  21368. + {
  21369. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21370. + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
  21371. + },
  21372. + },
  21373. + {
  21374. + AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
  21375. + &avr32_syntax_table[AVR32_SYNTAX_CLZ],
  21376. + BFD_RELOC_UNUSED, 2, -1,
  21377. + {
  21378. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21379. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21380. + },
  21381. + },
  21382. + {
  21383. + AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
  21384. + &avr32_syntax_table[AVR32_SYNTAX_COM],
  21385. + BFD_RELOC_UNUSED, 1, -1,
  21386. + {
  21387. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21388. + },
  21389. + },
  21390. + {
  21391. + AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
  21392. + &avr32_syntax_table[AVR32_SYNTAX_COP],
  21393. + BFD_RELOC_UNUSED, 5, -1,
  21394. + {
  21395. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21396. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  21397. + &avr32_ifield_table[AVR32_IFIELD_CRX],
  21398. + &avr32_ifield_table[AVR32_IFIELD_CRY],
  21399. + &avr32_ifield_table[AVR32_IFIELD_CPOP],
  21400. + },
  21401. + },
  21402. + {
  21403. + AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
  21404. + &avr32_syntax_table[AVR32_SYNTAX_CP_B],
  21405. + BFD_RELOC_UNUSED, 2, -1,
  21406. + {
  21407. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21408. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21409. + },
  21410. + },
  21411. + {
  21412. + AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
  21413. + &avr32_syntax_table[AVR32_SYNTAX_CP_H],
  21414. + BFD_RELOC_UNUSED, 2, -1,
  21415. + {
  21416. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21417. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21418. + },
  21419. + },
  21420. + {
  21421. + AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
  21422. + &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
  21423. + BFD_RELOC_UNUSED, 2, -1,
  21424. + {
  21425. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21426. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21427. + },
  21428. + },
  21429. + {
  21430. + AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
  21431. + &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
  21432. + BFD_RELOC_AVR32_6S, 2, 1,
  21433. + {
  21434. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21435. + &avr32_ifield_table[AVR32_IFIELD_K6],
  21436. + },
  21437. + },
  21438. + {
  21439. + AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
  21440. + &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
  21441. + BFD_RELOC_AVR32_21S, 2, 1,
  21442. + {
  21443. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21444. + &avr32_ifield_table[AVR32_IFIELD_K21],
  21445. + },
  21446. + },
  21447. + {
  21448. + AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
  21449. + &avr32_syntax_table[AVR32_SYNTAX_CPC1],
  21450. + BFD_RELOC_UNUSED, 2, -1,
  21451. + {
  21452. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21453. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21454. + },
  21455. + },
  21456. + {
  21457. + AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
  21458. + &avr32_syntax_table[AVR32_SYNTAX_CPC2],
  21459. + BFD_RELOC_UNUSED, 1, -1,
  21460. + {
  21461. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21462. + },
  21463. + },
  21464. + {
  21465. + AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
  21466. + &avr32_syntax_table[AVR32_SYNTAX_CSRF],
  21467. + BFD_RELOC_UNUSED, 1, -1,
  21468. + {
  21469. + &avr32_ifield_table[AVR32_IFIELD_K5C],
  21470. + },
  21471. + },
  21472. + {
  21473. + AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
  21474. + &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
  21475. + BFD_RELOC_UNUSED, 1, -1,
  21476. + {
  21477. + &avr32_ifield_table[AVR32_IFIELD_K5C],
  21478. + },
  21479. + },
  21480. + {
  21481. + AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
  21482. + &avr32_syntax_table[AVR32_SYNTAX_DIVS],
  21483. + BFD_RELOC_UNUSED, 3, -1,
  21484. + {
  21485. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21486. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21487. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21488. + },
  21489. + },
  21490. + {
  21491. + AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
  21492. + &avr32_syntax_table[AVR32_SYNTAX_DIVU],
  21493. + BFD_RELOC_UNUSED, 3, -1,
  21494. + {
  21495. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21496. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21497. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21498. + },
  21499. + },
  21500. + {
  21501. + AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
  21502. + &avr32_syntax_table[AVR32_SYNTAX_EOR1],
  21503. + BFD_RELOC_UNUSED, 2, -1,
  21504. + {
  21505. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21506. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21507. + },
  21508. + },
  21509. + {
  21510. + AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
  21511. + &avr32_syntax_table[AVR32_SYNTAX_EOR2],
  21512. + BFD_RELOC_UNUSED, 4, -1,
  21513. + {
  21514. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21515. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21516. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21517. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  21518. + }
  21519. + },
  21520. + {
  21521. + AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
  21522. + &avr32_syntax_table[AVR32_SYNTAX_EOR3],
  21523. + BFD_RELOC_UNUSED, 4, -1,
  21524. + {
  21525. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21526. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21527. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21528. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  21529. + }
  21530. + },
  21531. + {
  21532. + AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
  21533. + &avr32_syntax_table[AVR32_SYNTAX_EORL],
  21534. + BFD_RELOC_AVR32_16U, 2, 1,
  21535. + {
  21536. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21537. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21538. + },
  21539. + },
  21540. + {
  21541. + AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
  21542. + &avr32_syntax_table[AVR32_SYNTAX_EORH],
  21543. + BFD_RELOC_AVR32_16U, 2, 1,
  21544. + {
  21545. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21546. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21547. + },
  21548. + },
  21549. + {
  21550. + AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
  21551. + &avr32_syntax_table[AVR32_SYNTAX_FRS],
  21552. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  21553. + },
  21554. + {
  21555. + AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
  21556. + &avr32_syntax_table[AVR32_SYNTAX_ICALL],
  21557. + BFD_RELOC_UNUSED, 1, -1,
  21558. + {
  21559. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21560. + },
  21561. + },
  21562. + {
  21563. + AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
  21564. + &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
  21565. + BFD_RELOC_UNUSED, 1, -1,
  21566. + {
  21567. + &avr32_ifield_table[AVR32_IFIELD_K3],
  21568. + },
  21569. + },
  21570. + {
  21571. + AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
  21572. + &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
  21573. + BFD_RELOC_UNUSED, 2, -1,
  21574. + {
  21575. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  21576. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21577. + },
  21578. + },
  21579. + {
  21580. + AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
  21581. + &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
  21582. + BFD_RELOC_UNUSED, 2, -1,
  21583. + {
  21584. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  21585. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21586. + },
  21587. + },
  21588. + {
  21589. + AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
  21590. + &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
  21591. + BFD_RELOC_UNUSED, 2, -1,
  21592. + {
  21593. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  21594. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21595. + },
  21596. + },
  21597. + {
  21598. + AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
  21599. + &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
  21600. + BFD_RELOC_UNUSED, 4, -1,
  21601. + {
  21602. + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
  21603. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21604. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21605. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21606. + },
  21607. + },
  21608. + {
  21609. + AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
  21610. + &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
  21611. + BFD_RELOC_AVR32_16S, 3, 2,
  21612. + {
  21613. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  21614. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21615. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21616. + },
  21617. + },
  21618. + {
  21619. + AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
  21620. + &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
  21621. + BFD_RELOC_UNUSED, 4, -1,
  21622. + {
  21623. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21624. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21625. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21626. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21627. + },
  21628. + },
  21629. + {
  21630. + AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
  21631. + &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
  21632. + BFD_RELOC_AVR32_16S, 3, -1,
  21633. + {
  21634. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21635. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21636. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21637. + },
  21638. + },
  21639. + {
  21640. + AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
  21641. + &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
  21642. + BFD_RELOC_UNUSED, 2, -1,
  21643. + {
  21644. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21645. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21646. + },
  21647. + },
  21648. + {
  21649. + AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
  21650. + &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
  21651. + BFD_RELOC_UNUSED, 2, -1,
  21652. + {
  21653. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21654. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21655. + },
  21656. + },
  21657. + {
  21658. + AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
  21659. + &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
  21660. + BFD_RELOC_UNUSED, 4, -1,
  21661. + {
  21662. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21663. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21664. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21665. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21666. + },
  21667. + },
  21668. + {
  21669. + AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
  21670. + &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
  21671. + BFD_RELOC_AVR32_3U, 3, 2,
  21672. + {
  21673. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21674. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21675. + &avr32_ifield_table[AVR32_IFIELD_K3],
  21676. + },
  21677. + },
  21678. + {
  21679. + AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
  21680. + &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
  21681. + BFD_RELOC_AVR32_16S, 3, 2,
  21682. + {
  21683. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21684. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21685. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21686. + },
  21687. + },
  21688. + {
  21689. + AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
  21690. + &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
  21691. + BFD_RELOC_UNUSED, 2, -1,
  21692. + {
  21693. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21694. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21695. + },
  21696. + },
  21697. + {
  21698. + AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
  21699. + &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
  21700. + BFD_RELOC_UNUSED, 2, -1,
  21701. + {
  21702. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21703. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21704. + },
  21705. + },
  21706. + {
  21707. + AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
  21708. + &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
  21709. + BFD_RELOC_UNUSED, 4, -1,
  21710. + {
  21711. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21712. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21713. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21714. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21715. + },
  21716. + },
  21717. + {
  21718. + AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
  21719. + &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
  21720. + BFD_RELOC_AVR32_4UH, 3, 2,
  21721. + {
  21722. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21723. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21724. + &avr32_ifield_table[AVR32_IFIELD_K3],
  21725. + },
  21726. + },
  21727. + {
  21728. + AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
  21729. + &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
  21730. + BFD_RELOC_AVR32_16S, 3, 2,
  21731. + {
  21732. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21733. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21734. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21735. + },
  21736. + },
  21737. + {
  21738. + AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
  21739. + &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
  21740. + BFD_RELOC_UNUSED, 2, -1,
  21741. + {
  21742. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21743. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21744. + },
  21745. + },
  21746. + {
  21747. + AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
  21748. + &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
  21749. + BFD_RELOC_UNUSED, 2, -1,
  21750. + {
  21751. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21752. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21753. + },
  21754. + },
  21755. + {
  21756. + AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
  21757. + &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
  21758. + BFD_RELOC_UNUSED, 4, -1,
  21759. + {
  21760. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21761. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21762. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21763. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21764. + },
  21765. + },
  21766. + {
  21767. + AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
  21768. + &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
  21769. + BFD_RELOC_AVR32_4UH, 3, 2,
  21770. + {
  21771. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21772. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21773. + &avr32_ifield_table[AVR32_IFIELD_K3],
  21774. + },
  21775. + },
  21776. + {
  21777. + AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
  21778. + &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
  21779. + BFD_RELOC_AVR32_16S, 3, 2,
  21780. + {
  21781. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21782. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21783. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21784. + },
  21785. + },
  21786. + {
  21787. + AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
  21788. + &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
  21789. + BFD_RELOC_UNUSED, 2, -1,
  21790. + {
  21791. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21792. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21793. + },
  21794. + },
  21795. + {
  21796. + AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
  21797. + &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
  21798. + BFD_RELOC_UNUSED, 2, -1,
  21799. + {
  21800. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21801. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21802. + },
  21803. + },
  21804. + {
  21805. + AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
  21806. + &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
  21807. + BFD_RELOC_UNUSED, 4, -1,
  21808. + {
  21809. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21810. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21811. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21812. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21813. + },
  21814. + },
  21815. + {
  21816. + AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
  21817. + &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
  21818. + BFD_RELOC_UNUSED, 4, -1,
  21819. + {
  21820. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21821. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21822. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21823. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21824. + },
  21825. + },
  21826. + {
  21827. + AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
  21828. + &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
  21829. + BFD_RELOC_AVR32_7UW, 3, 2,
  21830. + {
  21831. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21832. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21833. + &avr32_ifield_table[AVR32_IFIELD_K5C],
  21834. + },
  21835. + },
  21836. + {
  21837. + AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
  21838. + &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
  21839. + BFD_RELOC_AVR32_16S, 3, 2,
  21840. + {
  21841. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21842. + &avr32_ifield_table[AVR32_IFIELD_RX],
  21843. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21844. + },
  21845. + },
  21846. + {
  21847. + AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
  21848. + &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
  21849. + BFD_RELOC_AVR32_10UW, 4, 3,
  21850. + {
  21851. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21852. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  21853. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21854. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21855. + },
  21856. + },
  21857. + {
  21858. + AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
  21859. + &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
  21860. + BFD_RELOC_UNUSED, 3, -1,
  21861. + {
  21862. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21863. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  21864. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21865. + },
  21866. + },
  21867. + {
  21868. + AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
  21869. + &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
  21870. + BFD_RELOC_UNUSED, 5, -1,
  21871. + {
  21872. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21873. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  21874. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21875. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21876. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21877. + },
  21878. + },
  21879. + {
  21880. + AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
  21881. + &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
  21882. + BFD_RELOC_AVR32_10UW, 4, 3,
  21883. + {
  21884. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21885. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  21886. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21887. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21888. + },
  21889. + },
  21890. + {
  21891. + AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
  21892. + &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
  21893. + BFD_RELOC_UNUSED, 3, -1,
  21894. + {
  21895. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21896. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  21897. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21898. + },
  21899. + },
  21900. + {
  21901. + AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
  21902. + &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
  21903. + BFD_RELOC_UNUSED, 5, -1,
  21904. + {
  21905. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21906. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  21907. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21908. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  21909. + &avr32_ifield_table[AVR32_IFIELD_K2],
  21910. + },
  21911. + },
  21912. + {
  21913. + AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
  21914. + &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
  21915. + BFD_RELOC_AVR32_14UW, 3, 2,
  21916. + {
  21917. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  21918. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21919. + &avr32_ifield_table[AVR32_IFIELD_K12CP],
  21920. + },
  21921. + },
  21922. + {
  21923. + AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
  21924. + &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
  21925. + BFD_RELOC_AVR32_14UW, 3, 2,
  21926. + {
  21927. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  21928. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21929. + &avr32_ifield_table[AVR32_IFIELD_K12CP],
  21930. + },
  21931. + },
  21932. + {
  21933. + AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
  21934. + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
  21935. + BFD_RELOC_UNUSED, 3, -1,
  21936. + {
  21937. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21938. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21939. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21940. + },
  21941. + },
  21942. + {
  21943. + AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
  21944. + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
  21945. + BFD_RELOC_UNUSED, 3, -1,
  21946. + {
  21947. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21948. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21949. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21950. + },
  21951. + },
  21952. + {
  21953. + AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
  21954. + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
  21955. + BFD_RELOC_UNUSED, 4, -1,
  21956. + {
  21957. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21958. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21959. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21960. + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
  21961. + },
  21962. + },
  21963. + {
  21964. + AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
  21965. + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
  21966. + BFD_RELOC_UNUSED, 4, -1,
  21967. + {
  21968. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  21969. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21970. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  21971. + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
  21972. + },
  21973. + },
  21974. + {
  21975. + AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
  21976. + &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
  21977. + BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
  21978. + {
  21979. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21980. + &avr32_ifield_table[AVR32_IFIELD_K7C],
  21981. + },
  21982. + },
  21983. + {
  21984. + AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
  21985. + &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
  21986. + BFD_RELOC_AVR32_16B_PCREL, 2, 1,
  21987. + {
  21988. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21989. + &avr32_ifield_table[AVR32_IFIELD_K16],
  21990. + },
  21991. + },
  21992. + {
  21993. + AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
  21994. + &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
  21995. + BFD_RELOC_UNUSED, 2, -1,
  21996. + {
  21997. + &avr32_ifield_table[AVR32_IFIELD_RY],
  21998. + &avr32_ifield_table[AVR32_IFIELD_K7C],
  21999. + },
  22000. + },
  22001. + {
  22002. + AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
  22003. + &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
  22004. + BFD_RELOC_UNUSED, 4, -1,
  22005. + {
  22006. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22007. + &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
  22008. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22009. + &avr32_ifield_table[AVR32_IFIELD_K12],
  22010. + },
  22011. + },
  22012. + {
  22013. + AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
  22014. + &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
  22015. + BFD_RELOC_UNUSED, 4, -1,
  22016. + {
  22017. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22018. + &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
  22019. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22020. + &avr32_ifield_table[AVR32_IFIELD_K12],
  22021. + },
  22022. + },
  22023. + {
  22024. + AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
  22025. + &avr32_syntax_table[AVR32_SYNTAX_LDM],
  22026. + BFD_RELOC_UNUSED, 3, -1,
  22027. + {
  22028. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22029. + &avr32_ifield_table[AVR32_IFIELD_W],
  22030. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22031. + },
  22032. + },
  22033. + {
  22034. + AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
  22035. + &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
  22036. + BFD_RELOC_UNUSED, 2, -1,
  22037. + {
  22038. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22039. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22040. + },
  22041. + },
  22042. + {
  22043. + AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
  22044. + &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
  22045. + BFD_RELOC_UNUSED, 2, -1,
  22046. + {
  22047. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22048. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22049. + },
  22050. + },
  22051. + {
  22052. + AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
  22053. + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
  22054. + BFD_RELOC_UNUSED, 3, -1,
  22055. + {
  22056. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22057. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22058. + &avr32_ifield_table[AVR32_IFIELD_K12],
  22059. + },
  22060. + },
  22061. + {
  22062. + AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
  22063. + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
  22064. + BFD_RELOC_UNUSED, 3, -1,
  22065. + {
  22066. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22067. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22068. + &avr32_ifield_table[AVR32_IFIELD_K12],
  22069. + },
  22070. + },
  22071. + {
  22072. + AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
  22073. + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
  22074. + BFD_RELOC_UNUSED, 3, -1,
  22075. + {
  22076. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22077. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22078. + &avr32_ifield_table[AVR32_IFIELD_K12],
  22079. + },
  22080. + },
  22081. + {
  22082. + AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
  22083. + &avr32_syntax_table[AVR32_SYNTAX_LSL1],
  22084. + BFD_RELOC_UNUSED, 3, -1,
  22085. + {
  22086. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22087. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22088. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22089. + },
  22090. + },
  22091. + {
  22092. + AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
  22093. + &avr32_syntax_table[AVR32_SYNTAX_LSL3],
  22094. + BFD_RELOC_UNUSED, 3, -1,
  22095. + {
  22096. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22097. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22098. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  22099. + },
  22100. + },
  22101. + {
  22102. + AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
  22103. + &avr32_syntax_table[AVR32_SYNTAX_LSL2],
  22104. + BFD_RELOC_UNUSED, 2, -1,
  22105. + {
  22106. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22107. + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
  22108. + },
  22109. + },
  22110. + {
  22111. + AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
  22112. + &avr32_syntax_table[AVR32_SYNTAX_LSR1],
  22113. + BFD_RELOC_UNUSED, 3, -1,
  22114. + {
  22115. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22116. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22117. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22118. + },
  22119. + },
  22120. + {
  22121. + AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
  22122. + &avr32_syntax_table[AVR32_SYNTAX_LSR3],
  22123. + BFD_RELOC_UNUSED, 3, -1,
  22124. + {
  22125. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22126. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22127. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  22128. + },
  22129. + },
  22130. + {
  22131. + AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
  22132. + &avr32_syntax_table[AVR32_SYNTAX_LSR2],
  22133. + BFD_RELOC_UNUSED, 2, -1,
  22134. + {
  22135. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22136. + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
  22137. + },
  22138. + },
  22139. + {
  22140. + AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
  22141. + &avr32_syntax_table[AVR32_SYNTAX_MAC],
  22142. + BFD_RELOC_UNUSED, 3, -1,
  22143. + {
  22144. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22145. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22146. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22147. + },
  22148. + },
  22149. + {
  22150. + AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
  22151. + &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
  22152. + BFD_RELOC_UNUSED, 5, -1,
  22153. + {
  22154. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22155. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22156. + &avr32_ifield_table[AVR32_IFIELD_X],
  22157. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22158. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22159. + },
  22160. + },
  22161. + {
  22162. + AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
  22163. + &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
  22164. + BFD_RELOC_UNUSED, 5, -1,
  22165. + {
  22166. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22167. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22168. + &avr32_ifield_table[AVR32_IFIELD_X],
  22169. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22170. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22171. + },
  22172. + },
  22173. + {
  22174. + AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
  22175. + &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
  22176. + BFD_RELOC_UNUSED, 3, -1,
  22177. + {
  22178. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22179. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22180. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22181. + },
  22182. + },
  22183. + {
  22184. + AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
  22185. + &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
  22186. + BFD_RELOC_UNUSED, 5, -1,
  22187. + {
  22188. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22189. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22190. + &avr32_ifield_table[AVR32_IFIELD_X],
  22191. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22192. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22193. + },
  22194. + },
  22195. + {
  22196. + AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
  22197. + &avr32_syntax_table[AVR32_SYNTAX_MACUD],
  22198. + BFD_RELOC_UNUSED, 3, -1,
  22199. + {
  22200. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22201. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22202. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22203. + },
  22204. + },
  22205. + {
  22206. + AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
  22207. + &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
  22208. + BFD_RELOC_UNUSED, 4, -1,
  22209. + {
  22210. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22211. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22212. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22213. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22214. + },
  22215. + },
  22216. + {
  22217. + AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
  22218. + &avr32_syntax_table[AVR32_SYNTAX_MAX],
  22219. + BFD_RELOC_UNUSED, 3, -1,
  22220. + {
  22221. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22222. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22223. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22224. + },
  22225. + },
  22226. + {
  22227. + AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
  22228. + &avr32_syntax_table[AVR32_SYNTAX_MCALL],
  22229. + BFD_RELOC_AVR32_18W_PCREL, 2, 1,
  22230. + {
  22231. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22232. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22233. + },
  22234. + },
  22235. + {
  22236. + AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
  22237. + &avr32_syntax_table[AVR32_SYNTAX_MFDR],
  22238. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22239. + {
  22240. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22241. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22242. + },
  22243. + },
  22244. + {
  22245. + AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
  22246. + &avr32_syntax_table[AVR32_SYNTAX_MFSR],
  22247. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22248. + {
  22249. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22250. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22251. + },
  22252. + },
  22253. + {
  22254. + AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
  22255. + &avr32_syntax_table[AVR32_SYNTAX_MIN],
  22256. + BFD_RELOC_UNUSED, 3, -1,
  22257. + {
  22258. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22259. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22260. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22261. + },
  22262. + },
  22263. + {
  22264. + AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
  22265. + &avr32_syntax_table[AVR32_SYNTAX_MOV3],
  22266. + BFD_RELOC_NONE, 2, -1,
  22267. + {
  22268. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22269. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22270. + },
  22271. + },
  22272. + {
  22273. + AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
  22274. + &avr32_syntax_table[AVR32_SYNTAX_MOV1],
  22275. + BFD_RELOC_AVR32_8S, 2, 1,
  22276. + {
  22277. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22278. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  22279. + },
  22280. + },
  22281. + {
  22282. + AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
  22283. + &avr32_syntax_table[AVR32_SYNTAX_MOV2],
  22284. + BFD_RELOC_AVR32_21S, 2, 1,
  22285. + {
  22286. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22287. + &avr32_ifield_table[AVR32_IFIELD_K21],
  22288. + },
  22289. + },
  22290. + {
  22291. + AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
  22292. + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
  22293. + BFD_RELOC_UNUSED, 2, -1,
  22294. + {
  22295. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22296. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22297. + },
  22298. + },
  22299. + {
  22300. + AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
  22301. + &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
  22302. + BFD_RELOC_UNUSED, 2, -1,
  22303. + {
  22304. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22305. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22306. + },
  22307. + },
  22308. + {
  22309. + AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
  22310. + &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
  22311. + BFD_RELOC_UNUSED, 2, -1,
  22312. + {
  22313. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22314. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22315. + },
  22316. + },
  22317. + {
  22318. + AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
  22319. + &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
  22320. + BFD_RELOC_UNUSED, 2, -1,
  22321. + {
  22322. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22323. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22324. + },
  22325. + },
  22326. + {
  22327. + AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
  22328. + &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
  22329. + BFD_RELOC_UNUSED, 2, -1,
  22330. + {
  22331. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22332. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22333. + },
  22334. + },
  22335. + {
  22336. + AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
  22337. + &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
  22338. + BFD_RELOC_UNUSED, 2, -1,
  22339. + {
  22340. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22341. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22342. + },
  22343. + },
  22344. + {
  22345. + AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
  22346. + &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
  22347. + BFD_RELOC_UNUSED, 2, -1,
  22348. + {
  22349. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22350. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22351. + },
  22352. + },
  22353. + {
  22354. + AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
  22355. + &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
  22356. + BFD_RELOC_UNUSED, 2, -1,
  22357. + {
  22358. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22359. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22360. + },
  22361. + },
  22362. + {
  22363. + AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
  22364. + &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
  22365. + BFD_RELOC_UNUSED, 2, -1,
  22366. + {
  22367. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22368. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22369. + },
  22370. + },
  22371. + {
  22372. + AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
  22373. + &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
  22374. + BFD_RELOC_UNUSED, 2, -1,
  22375. + {
  22376. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22377. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22378. + },
  22379. + },
  22380. + {
  22381. + AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
  22382. + &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
  22383. + BFD_RELOC_UNUSED, 2, -1,
  22384. + {
  22385. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22386. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22387. + },
  22388. + },
  22389. + {
  22390. + AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
  22391. + &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
  22392. + BFD_RELOC_UNUSED, 2, -1,
  22393. + {
  22394. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22395. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22396. + },
  22397. + },
  22398. + {
  22399. + AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
  22400. + &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
  22401. + BFD_RELOC_UNUSED, 2, -1,
  22402. + {
  22403. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22404. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22405. + },
  22406. + },
  22407. + {
  22408. + AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
  22409. + &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
  22410. + BFD_RELOC_UNUSED, 2, -1,
  22411. + {
  22412. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22413. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22414. + },
  22415. + },
  22416. + {
  22417. + AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
  22418. + &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
  22419. + BFD_RELOC_UNUSED, 2, -1,
  22420. + {
  22421. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22422. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22423. + },
  22424. + },
  22425. + {
  22426. + AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
  22427. + &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
  22428. + BFD_RELOC_UNUSED, 2, -1,
  22429. + {
  22430. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22431. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22432. + },
  22433. + },
  22434. + {
  22435. + AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
  22436. + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
  22437. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22438. + {
  22439. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22440. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22441. + },
  22442. + },
  22443. + {
  22444. + AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
  22445. + &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
  22446. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22447. + {
  22448. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22449. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22450. + },
  22451. + },
  22452. + {
  22453. + AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
  22454. + &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
  22455. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22456. + {
  22457. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22458. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22459. + },
  22460. + },
  22461. + {
  22462. + AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
  22463. + &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
  22464. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22465. + {
  22466. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22467. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22468. + },
  22469. + },
  22470. + {
  22471. + AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
  22472. + &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
  22473. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22474. + {
  22475. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22476. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22477. + },
  22478. + },
  22479. + {
  22480. + AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
  22481. + &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
  22482. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22483. + {
  22484. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22485. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22486. + },
  22487. + },
  22488. + {
  22489. + AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
  22490. + &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
  22491. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22492. + {
  22493. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22494. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22495. + },
  22496. + },
  22497. + {
  22498. + AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
  22499. + &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
  22500. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22501. + {
  22502. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22503. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22504. + },
  22505. + },
  22506. + {
  22507. + AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
  22508. + &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
  22509. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22510. + {
  22511. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22512. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22513. + },
  22514. + },
  22515. + {
  22516. + AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
  22517. + &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
  22518. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22519. + {
  22520. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22521. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22522. + },
  22523. + },
  22524. + {
  22525. + AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
  22526. + &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
  22527. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22528. + {
  22529. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22530. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22531. + },
  22532. + },
  22533. + {
  22534. + AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
  22535. + &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
  22536. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22537. + {
  22538. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22539. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22540. + },
  22541. + },
  22542. + {
  22543. + AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
  22544. + &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
  22545. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22546. + {
  22547. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22548. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22549. + },
  22550. + },
  22551. + {
  22552. + AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
  22553. + &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
  22554. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22555. + {
  22556. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22557. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22558. + },
  22559. + },
  22560. + {
  22561. + AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
  22562. + &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
  22563. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22564. + {
  22565. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22566. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22567. + },
  22568. + },
  22569. + {
  22570. + AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
  22571. + &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
  22572. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  22573. + {
  22574. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22575. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22576. + },
  22577. + },
  22578. + {
  22579. + AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
  22580. + &avr32_syntax_table[AVR32_SYNTAX_MTDR],
  22581. + BFD_RELOC_AVR32_8S_EXT, 2, 0,
  22582. + {
  22583. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22584. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22585. + },
  22586. + },
  22587. + {
  22588. + AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
  22589. + &avr32_syntax_table[AVR32_SYNTAX_MTSR],
  22590. + BFD_RELOC_AVR32_8S_EXT, 2, 0,
  22591. + {
  22592. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22593. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22594. + },
  22595. + },
  22596. + {
  22597. + AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
  22598. + &avr32_syntax_table[AVR32_SYNTAX_MUL1],
  22599. + BFD_RELOC_UNUSED, 2, -1,
  22600. + {
  22601. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22602. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22603. + },
  22604. + },
  22605. + {
  22606. + AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
  22607. + &avr32_syntax_table[AVR32_SYNTAX_MUL2],
  22608. + BFD_RELOC_UNUSED, 3, -1,
  22609. + {
  22610. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22611. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22612. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22613. + },
  22614. + },
  22615. + {
  22616. + AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
  22617. + &avr32_syntax_table[AVR32_SYNTAX_MUL3],
  22618. + BFD_RELOC_AVR32_8S_EXT, 3, 2,
  22619. + {
  22620. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22621. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22622. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  22623. + },
  22624. + },
  22625. + {
  22626. + AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
  22627. + &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
  22628. + BFD_RELOC_UNUSED, 5, -1,
  22629. + {
  22630. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22631. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22632. + &avr32_ifield_table[AVR32_IFIELD_X],
  22633. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22634. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22635. + },
  22636. + },
  22637. + {
  22638. + AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
  22639. + &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
  22640. + BFD_RELOC_UNUSED, 5, -1,
  22641. + {
  22642. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22643. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22644. + &avr32_ifield_table[AVR32_IFIELD_X],
  22645. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22646. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22647. + },
  22648. + },
  22649. + {
  22650. + AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
  22651. + &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
  22652. + BFD_RELOC_UNUSED, 4, -1,
  22653. + {
  22654. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22655. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22656. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22657. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22658. + },
  22659. + },
  22660. + {
  22661. + AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
  22662. + &avr32_syntax_table[AVR32_SYNTAX_MULSD],
  22663. + BFD_RELOC_UNUSED, 3, -1,
  22664. + {
  22665. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22666. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22667. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22668. + },
  22669. + },
  22670. + {
  22671. + AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
  22672. + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
  22673. + BFD_RELOC_UNUSED, 5, -1,
  22674. + {
  22675. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22676. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22677. + &avr32_ifield_table[AVR32_IFIELD_X],
  22678. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22679. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22680. + },
  22681. + },
  22682. + {
  22683. + AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
  22684. + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
  22685. + BFD_RELOC_UNUSED, 5, -1,
  22686. + {
  22687. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22688. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22689. + &avr32_ifield_table[AVR32_IFIELD_X],
  22690. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22691. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22692. + },
  22693. + },
  22694. + {
  22695. + AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
  22696. + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
  22697. + BFD_RELOC_UNUSED, 5, -1,
  22698. + {
  22699. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22700. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22701. + &avr32_ifield_table[AVR32_IFIELD_X],
  22702. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22703. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22704. + },
  22705. + },
  22706. + {
  22707. + AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
  22708. + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
  22709. + BFD_RELOC_UNUSED, 4, -1,
  22710. + {
  22711. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22712. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22713. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22714. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22715. + },
  22716. + },
  22717. + {
  22718. + AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
  22719. + &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
  22720. + BFD_RELOC_UNUSED, 4, -1,
  22721. + {
  22722. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22723. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22724. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22725. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22726. + },
  22727. + },
  22728. + {
  22729. + AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
  22730. + &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
  22731. + BFD_RELOC_UNUSED, 3, -1,
  22732. + {
  22733. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22734. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22735. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22736. + },
  22737. + },
  22738. + {
  22739. + AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
  22740. + &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
  22741. + BFD_RELOC_UNUSED, 4, -1,
  22742. + {
  22743. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22744. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22745. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22746. + &avr32_ifield_table[AVR32_IFIELD_Y],
  22747. + },
  22748. + },
  22749. + {
  22750. + AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
  22751. + &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
  22752. + BFD_RELOC_UNUSED, 1, -1,
  22753. + {
  22754. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22755. + }
  22756. + },
  22757. + {
  22758. + AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
  22759. + &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
  22760. + BFD_RELOC_UNUSED, 1, -1,
  22761. + {
  22762. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22763. + }
  22764. + },
  22765. + {
  22766. + AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
  22767. + &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
  22768. + BFD_RELOC_UNUSED, 3, -1,
  22769. + {
  22770. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  22771. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  22772. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  22773. + },
  22774. + },
  22775. + {
  22776. + AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
  22777. + &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
  22778. + BFD_RELOC_UNUSED, 3, -1,
  22779. + {
  22780. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  22781. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22782. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  22783. + },
  22784. + },
  22785. + {
  22786. + AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
  22787. + &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
  22788. + BFD_RELOC_UNUSED, 3, -1,
  22789. + {
  22790. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  22791. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  22792. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  22793. + },
  22794. + },
  22795. + {
  22796. + AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
  22797. + &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
  22798. + BFD_RELOC_UNUSED, 3, -1,
  22799. + {
  22800. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  22801. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  22802. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22803. + },
  22804. + },
  22805. + {
  22806. + AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
  22807. + &avr32_syntax_table[AVR32_SYNTAX_NEG],
  22808. + BFD_RELOC_UNUSED, 1, -1,
  22809. + {
  22810. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22811. + }
  22812. + },
  22813. + {
  22814. + AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
  22815. + &avr32_syntax_table[AVR32_SYNTAX_NOP],
  22816. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  22817. + },
  22818. + {
  22819. + AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
  22820. + &avr32_syntax_table[AVR32_SYNTAX_OR1],
  22821. + BFD_RELOC_UNUSED, 2, -1,
  22822. + {
  22823. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22824. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22825. + },
  22826. + },
  22827. + {
  22828. + AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
  22829. + &avr32_syntax_table[AVR32_SYNTAX_OR2],
  22830. + BFD_RELOC_UNUSED, 4, -1,
  22831. + {
  22832. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22833. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22834. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22835. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  22836. + },
  22837. + },
  22838. + {
  22839. + AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
  22840. + &avr32_syntax_table[AVR32_SYNTAX_OR3],
  22841. + BFD_RELOC_UNUSED, 4, -1,
  22842. + {
  22843. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22844. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22845. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22846. + &avr32_ifield_table[AVR32_IFIELD_K5E2],
  22847. + },
  22848. + },
  22849. + {
  22850. + AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
  22851. + &avr32_syntax_table[AVR32_SYNTAX_ORH],
  22852. + BFD_RELOC_AVR32_16U, 2, 1,
  22853. + {
  22854. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22855. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22856. + },
  22857. + },
  22858. + {
  22859. + AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
  22860. + &avr32_syntax_table[AVR32_SYNTAX_ORL],
  22861. + BFD_RELOC_AVR32_16U, 2, 1,
  22862. + {
  22863. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22864. + &avr32_ifield_table[AVR32_IFIELD_K16],
  22865. + },
  22866. + },
  22867. + {
  22868. + AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
  22869. + &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
  22870. + BFD_RELOC_UNUSED, 2, -1,
  22871. + {
  22872. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22873. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22874. + },
  22875. + },
  22876. + {
  22877. + AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
  22878. + &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
  22879. + BFD_RELOC_UNUSED, 2, -1,
  22880. + {
  22881. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22882. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22883. + },
  22884. + },
  22885. + {
  22886. + AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
  22887. + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
  22888. + BFD_RELOC_UNUSED, 3, -1,
  22889. + {
  22890. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22891. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22892. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22893. + },
  22894. + },
  22895. + {
  22896. + AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
  22897. + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
  22898. + BFD_RELOC_UNUSED, 3, -1,
  22899. + {
  22900. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22901. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22902. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22903. + },
  22904. + },
  22905. + {
  22906. + AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
  22907. + &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
  22908. + BFD_RELOC_UNUSED, 3, -1,
  22909. + {
  22910. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22911. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22912. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22913. + },
  22914. + },
  22915. + {
  22916. + AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
  22917. + &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
  22918. + BFD_RELOC_UNUSED, 3, -1,
  22919. + {
  22920. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22921. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22922. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22923. + },
  22924. + },
  22925. + {
  22926. + AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
  22927. + &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
  22928. + BFD_RELOC_UNUSED, 3, -1,
  22929. + {
  22930. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22931. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22932. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22933. + },
  22934. + },
  22935. + {
  22936. + AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
  22937. + &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
  22938. + BFD_RELOC_UNUSED, 3, -1,
  22939. + {
  22940. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22941. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22942. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22943. + },
  22944. + },
  22945. + {
  22946. + AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
  22947. + &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
  22948. + BFD_RELOC_UNUSED, 3, -1,
  22949. + {
  22950. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22951. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22952. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22953. + },
  22954. + },
  22955. + {
  22956. + AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
  22957. + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
  22958. + BFD_RELOC_UNUSED, 3, -1,
  22959. + {
  22960. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22961. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22962. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22963. + },
  22964. + },
  22965. + {
  22966. + AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
  22967. + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
  22968. + BFD_RELOC_UNUSED, 3, -1,
  22969. + {
  22970. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22971. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22972. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22973. + },
  22974. + },
  22975. + {
  22976. + AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
  22977. + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
  22978. + BFD_RELOC_UNUSED, 3, -1,
  22979. + {
  22980. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22981. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22982. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22983. + },
  22984. + },
  22985. + {
  22986. + AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
  22987. + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
  22988. + BFD_RELOC_UNUSED, 3, -1,
  22989. + {
  22990. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  22991. + &avr32_ifield_table[AVR32_IFIELD_RX],
  22992. + &avr32_ifield_table[AVR32_IFIELD_RY],
  22993. + },
  22994. + },
  22995. + {
  22996. + AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
  22997. + &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
  22998. + BFD_RELOC_UNUSED, 5, -1,
  22999. + {
  23000. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23001. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23002. + &avr32_ifield_table[AVR32_IFIELD_X],
  23003. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23004. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23005. + },
  23006. + },
  23007. + {
  23008. + AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
  23009. + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
  23010. + BFD_RELOC_UNUSED, 5, -1,
  23011. + {
  23012. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23013. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23014. + &avr32_ifield_table[AVR32_IFIELD_X],
  23015. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23016. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23017. + },
  23018. + },
  23019. + {
  23020. + AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
  23021. + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
  23022. + BFD_RELOC_UNUSED, 5, -1,
  23023. + {
  23024. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23025. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23026. + &avr32_ifield_table[AVR32_IFIELD_X],
  23027. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23028. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23029. + },
  23030. + },
  23031. + {
  23032. + AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
  23033. + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
  23034. + BFD_RELOC_UNUSED, 5, -1,
  23035. + {
  23036. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23037. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23038. + &avr32_ifield_table[AVR32_IFIELD_X],
  23039. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23040. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23041. + },
  23042. + },
  23043. + {
  23044. + AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
  23045. + &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
  23046. + BFD_RELOC_UNUSED, 3, -1,
  23047. + {
  23048. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23049. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23050. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23051. + },
  23052. + },
  23053. + {
  23054. + AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
  23055. + &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
  23056. + BFD_RELOC_UNUSED, 3, -1,
  23057. + {
  23058. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23059. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23060. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23061. + },
  23062. + },
  23063. + {
  23064. + AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
  23065. + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
  23066. + BFD_RELOC_UNUSED, 3, -1,
  23067. + {
  23068. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23069. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23070. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23071. + },
  23072. + },
  23073. + {
  23074. + AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
  23075. + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
  23076. + BFD_RELOC_UNUSED, 3, -1,
  23077. + {
  23078. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23079. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23080. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23081. + },
  23082. + },
  23083. + {
  23084. + AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
  23085. + &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
  23086. + BFD_RELOC_UNUSED, 3, -1,
  23087. + {
  23088. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23089. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23090. + &avr32_ifield_table[AVR32_IFIELD_COND3],
  23091. + },
  23092. + },
  23093. + {
  23094. + AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
  23095. + &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
  23096. + BFD_RELOC_UNUSED, 3, -1,
  23097. + {
  23098. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23099. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23100. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23101. + },
  23102. + },
  23103. + {
  23104. + AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
  23105. + &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
  23106. + BFD_RELOC_UNUSED, 3, -1,
  23107. + {
  23108. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23109. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23110. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23111. + },
  23112. + },
  23113. + {
  23114. + AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
  23115. + &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
  23116. + BFD_RELOC_UNUSED, 3, -1,
  23117. + {
  23118. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23119. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23120. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23121. + },
  23122. + },
  23123. + {
  23124. + AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
  23125. + &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
  23126. + BFD_RELOC_UNUSED, 3, -1,
  23127. + {
  23128. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23129. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23130. + &avr32_ifield_table[AVR32_IFIELD_COND3],
  23131. + },
  23132. + },
  23133. + {
  23134. + AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
  23135. + &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
  23136. + BFD_RELOC_UNUSED, 3, -1,
  23137. + {
  23138. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23139. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23140. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23141. + },
  23142. + },
  23143. + {
  23144. + AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
  23145. + &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
  23146. + BFD_RELOC_UNUSED, 3, -1,
  23147. + {
  23148. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23149. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23150. + &avr32_ifield_table[AVR32_IFIELD_COND3],
  23151. + },
  23152. + },
  23153. + {
  23154. + AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
  23155. + &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
  23156. + BFD_RELOC_UNUSED, 3, -1,
  23157. + {
  23158. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23159. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23160. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23161. + },
  23162. + },
  23163. + {
  23164. + AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
  23165. + &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
  23166. + BFD_RELOC_UNUSED, 3, -1,
  23167. + {
  23168. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23169. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23170. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23171. + },
  23172. + },
  23173. + {
  23174. + AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
  23175. + &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
  23176. + BFD_RELOC_UNUSED, 3, -1,
  23177. + {
  23178. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23179. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23180. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23181. + },
  23182. + },
  23183. + {
  23184. + AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
  23185. + &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
  23186. + BFD_RELOC_UNUSED, 3, -1,
  23187. + {
  23188. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23189. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23190. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23191. + },
  23192. + },
  23193. + {
  23194. + AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
  23195. + &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
  23196. + BFD_RELOC_UNUSED, 3, -1,
  23197. + {
  23198. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23199. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23200. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23201. + },
  23202. + },
  23203. + {
  23204. + AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
  23205. + &avr32_syntax_table[AVR32_SYNTAX_POPJC],
  23206. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  23207. + },
  23208. + {
  23209. + AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
  23210. + &avr32_syntax_table[AVR32_SYNTAX_POPM],
  23211. + BFD_RELOC_UNUSED, 1, -1,
  23212. + {
  23213. + &avr32_ifield_table[AVR32_IFIELD_POPM],
  23214. + },
  23215. + },
  23216. + {
  23217. + AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
  23218. + &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
  23219. + BFD_RELOC_UNUSED, 1, -1,
  23220. + {
  23221. + &avr32_ifield_table[AVR32_IFIELD_K16],
  23222. + },
  23223. + },
  23224. + {
  23225. + AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
  23226. + &avr32_syntax_table[AVR32_SYNTAX_PREF],
  23227. + BFD_RELOC_AVR32_16S, 2, -1,
  23228. + {
  23229. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23230. + &avr32_ifield_table[AVR32_IFIELD_K16],
  23231. + },
  23232. + },
  23233. + {
  23234. + AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
  23235. + &avr32_syntax_table[AVR32_SYNTAX_PSAD],
  23236. + BFD_RELOC_UNUSED, 3, -1,
  23237. + {
  23238. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23239. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23240. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23241. + },
  23242. + },
  23243. + {
  23244. + AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
  23245. + &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
  23246. + BFD_RELOC_UNUSED, 3, -1,
  23247. + {
  23248. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23249. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23250. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23251. + },
  23252. + },
  23253. + {
  23254. + AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
  23255. + &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
  23256. + BFD_RELOC_UNUSED, 3, -1,
  23257. + {
  23258. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23259. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23260. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23261. + },
  23262. + },
  23263. + {
  23264. + AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
  23265. + &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
  23266. + BFD_RELOC_UNUSED, 5, -1,
  23267. + {
  23268. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23269. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23270. + &avr32_ifield_table[AVR32_IFIELD_X],
  23271. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23272. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23273. + },
  23274. + },
  23275. + {
  23276. + AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
  23277. + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
  23278. + BFD_RELOC_UNUSED, 5, -1,
  23279. + {
  23280. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23281. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23282. + &avr32_ifield_table[AVR32_IFIELD_X],
  23283. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23284. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23285. + },
  23286. + },
  23287. + {
  23288. + AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
  23289. + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
  23290. + BFD_RELOC_UNUSED, 5, -1,
  23291. + {
  23292. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23293. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23294. + &avr32_ifield_table[AVR32_IFIELD_X],
  23295. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23296. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23297. + },
  23298. + },
  23299. + {
  23300. + AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
  23301. + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
  23302. + BFD_RELOC_UNUSED, 5, -1,
  23303. + {
  23304. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23305. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23306. + &avr32_ifield_table[AVR32_IFIELD_X],
  23307. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23308. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23309. + },
  23310. + },
  23311. + {
  23312. + AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
  23313. + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
  23314. + BFD_RELOC_UNUSED, 3, -1,
  23315. + {
  23316. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23317. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23318. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23319. + },
  23320. + },
  23321. + {
  23322. + AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
  23323. + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
  23324. + BFD_RELOC_UNUSED, 3, -1,
  23325. + {
  23326. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23327. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23328. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23329. + },
  23330. + },
  23331. + {
  23332. + AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
  23333. + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
  23334. + BFD_RELOC_UNUSED, 3, -1,
  23335. + {
  23336. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23337. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23338. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23339. + },
  23340. + },
  23341. + {
  23342. + AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
  23343. + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
  23344. + BFD_RELOC_UNUSED, 3, -1,
  23345. + {
  23346. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23347. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23348. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23349. + },
  23350. + },
  23351. + {
  23352. + AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
  23353. + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
  23354. + BFD_RELOC_UNUSED, 3, -1,
  23355. + {
  23356. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23357. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23358. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23359. + },
  23360. + },
  23361. + {
  23362. + AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
  23363. + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
  23364. + BFD_RELOC_UNUSED, 3, -1,
  23365. + {
  23366. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23367. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23368. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23369. + },
  23370. + },
  23371. + {
  23372. + AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
  23373. + &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
  23374. + BFD_RELOC_UNUSED, 3, -1,
  23375. + {
  23376. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23377. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23378. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23379. + },
  23380. + },
  23381. + {
  23382. + AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
  23383. + &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
  23384. + BFD_RELOC_UNUSED, 3, -1,
  23385. + {
  23386. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23387. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23388. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23389. + },
  23390. + },
  23391. + {
  23392. + AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
  23393. + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
  23394. + BFD_RELOC_UNUSED, 3, -1,
  23395. + {
  23396. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23397. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23398. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23399. + },
  23400. + },
  23401. + {
  23402. + AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
  23403. + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
  23404. + BFD_RELOC_UNUSED, 3, -1,
  23405. + {
  23406. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23407. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23408. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23409. + },
  23410. + },
  23411. + {
  23412. + AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
  23413. + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
  23414. + BFD_RELOC_UNUSED, 3, -1,
  23415. + {
  23416. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23417. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23418. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23419. + },
  23420. + },
  23421. + {
  23422. + AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
  23423. + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
  23424. + BFD_RELOC_UNUSED, 3, -1,
  23425. + {
  23426. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23427. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23428. + &avr32_ifield_table[AVR32_IFIELD_Y],
  23429. + },
  23430. + },
  23431. + {
  23432. + AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
  23433. + &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
  23434. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  23435. + },
  23436. + {
  23437. + AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
  23438. + &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
  23439. + BFD_RELOC_UNUSED, 1, -1,
  23440. + {
  23441. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  23442. + },
  23443. + },
  23444. + {
  23445. + AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
  23446. + &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
  23447. + BFD_RELOC_UNUSED, 1, -1,
  23448. + {
  23449. + &avr32_ifield_table[AVR32_IFIELD_K16],
  23450. + },
  23451. + },
  23452. + {
  23453. + AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
  23454. + &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
  23455. + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
  23456. + {
  23457. + &avr32_ifield_table[AVR32_IFIELD_K10],
  23458. + },
  23459. + },
  23460. + {
  23461. + AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
  23462. + &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
  23463. + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
  23464. + {
  23465. + &avr32_ifield_table[AVR32_IFIELD_K21],
  23466. + },
  23467. + },
  23468. + {
  23469. + AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
  23470. + &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
  23471. + BFD_RELOC_NONE, 1, -1,
  23472. + {
  23473. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23474. + },
  23475. + },
  23476. + {
  23477. + AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
  23478. + &avr32_syntax_table[AVR32_SYNTAX_RETNE],
  23479. + BFD_RELOC_NONE, 1, -1,
  23480. + {
  23481. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23482. + },
  23483. + },
  23484. + {
  23485. + AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
  23486. + &avr32_syntax_table[AVR32_SYNTAX_RETHS],
  23487. + BFD_RELOC_NONE, 1, -1,
  23488. + {
  23489. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23490. + },
  23491. + },
  23492. + {
  23493. + AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
  23494. + &avr32_syntax_table[AVR32_SYNTAX_RETLO],
  23495. + BFD_RELOC_NONE, 1, -1,
  23496. + {
  23497. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23498. + },
  23499. + },
  23500. + {
  23501. + AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
  23502. + &avr32_syntax_table[AVR32_SYNTAX_RETGE],
  23503. + BFD_RELOC_NONE, 1, -1,
  23504. + {
  23505. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23506. + },
  23507. + },
  23508. + {
  23509. + AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
  23510. + &avr32_syntax_table[AVR32_SYNTAX_RETLT],
  23511. + BFD_RELOC_NONE, 1, -1,
  23512. + {
  23513. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23514. + },
  23515. + },
  23516. + {
  23517. + AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
  23518. + &avr32_syntax_table[AVR32_SYNTAX_RETMI],
  23519. + BFD_RELOC_NONE, 1, -1,
  23520. + {
  23521. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23522. + },
  23523. + },
  23524. + {
  23525. + AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
  23526. + &avr32_syntax_table[AVR32_SYNTAX_RETPL],
  23527. + BFD_RELOC_NONE, 1, -1,
  23528. + {
  23529. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23530. + },
  23531. + },
  23532. + {
  23533. + AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
  23534. + &avr32_syntax_table[AVR32_SYNTAX_RETLS],
  23535. + BFD_RELOC_NONE, 1, -1,
  23536. + {
  23537. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23538. + },
  23539. + },
  23540. + {
  23541. + AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
  23542. + &avr32_syntax_table[AVR32_SYNTAX_RETGT],
  23543. + BFD_RELOC_NONE, 1, -1,
  23544. + {
  23545. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23546. + },
  23547. + },
  23548. + {
  23549. + AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
  23550. + &avr32_syntax_table[AVR32_SYNTAX_RETLE],
  23551. + BFD_RELOC_NONE, 1, -1,
  23552. + {
  23553. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23554. + },
  23555. + },
  23556. + {
  23557. + AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
  23558. + &avr32_syntax_table[AVR32_SYNTAX_RETHI],
  23559. + BFD_RELOC_NONE, 1, -1,
  23560. + {
  23561. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23562. + },
  23563. + },
  23564. + {
  23565. + AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
  23566. + &avr32_syntax_table[AVR32_SYNTAX_RETVS],
  23567. + BFD_RELOC_NONE, 1, -1,
  23568. + {
  23569. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23570. + },
  23571. + },
  23572. + {
  23573. + AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
  23574. + &avr32_syntax_table[AVR32_SYNTAX_RETVC],
  23575. + BFD_RELOC_NONE, 1, -1,
  23576. + {
  23577. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23578. + },
  23579. + },
  23580. + {
  23581. + AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
  23582. + &avr32_syntax_table[AVR32_SYNTAX_RETQS],
  23583. + BFD_RELOC_NONE, 1, -1,
  23584. + {
  23585. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23586. + },
  23587. + },
  23588. + {
  23589. + AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
  23590. + &avr32_syntax_table[AVR32_SYNTAX_RETAL],
  23591. + BFD_RELOC_NONE, 1, -1,
  23592. + {
  23593. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23594. + },
  23595. + },
  23596. + {
  23597. + AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
  23598. + &avr32_syntax_table[AVR32_SYNTAX_RETD],
  23599. + BFD_RELOC_NONE, 0, -1, { NULL },
  23600. + },
  23601. + {
  23602. + AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
  23603. + &avr32_syntax_table[AVR32_SYNTAX_RETE],
  23604. + BFD_RELOC_NONE, 0, -1, { NULL },
  23605. + },
  23606. + {
  23607. + AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
  23608. + &avr32_syntax_table[AVR32_SYNTAX_RETJ],
  23609. + BFD_RELOC_NONE, 0, -1, { NULL },
  23610. + },
  23611. + {
  23612. + AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
  23613. + &avr32_syntax_table[AVR32_SYNTAX_RETS],
  23614. + BFD_RELOC_NONE, 0, -1, { NULL },
  23615. + },
  23616. + {
  23617. + AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
  23618. + &avr32_syntax_table[AVR32_SYNTAX_RJMP],
  23619. + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
  23620. + {
  23621. + &avr32_ifield_table[AVR32_IFIELD_K10],
  23622. + },
  23623. + },
  23624. + {
  23625. + AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
  23626. + &avr32_syntax_table[AVR32_SYNTAX_ROL],
  23627. + BFD_RELOC_UNUSED, 1, -1,
  23628. + {
  23629. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23630. + }
  23631. + },
  23632. + {
  23633. + AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
  23634. + &avr32_syntax_table[AVR32_SYNTAX_ROR],
  23635. + BFD_RELOC_UNUSED, 1, -1,
  23636. + {
  23637. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23638. + }
  23639. + },
  23640. + {
  23641. + AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
  23642. + &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
  23643. + BFD_RELOC_UNUSED, 2, -1,
  23644. + {
  23645. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23646. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23647. + },
  23648. + },
  23649. + {
  23650. + AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
  23651. + &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
  23652. + BFD_RELOC_AVR32_8S_EXT, 3, 2,
  23653. + {
  23654. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23655. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23656. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  23657. + },
  23658. + },
  23659. + {
  23660. + AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
  23661. + &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
  23662. + BFD_RELOC_UNUSED, 3, -1,
  23663. + {
  23664. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23665. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23666. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23667. + },
  23668. + },
  23669. + {
  23670. + AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
  23671. + &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
  23672. + BFD_RELOC_UNUSED, 3, -1,
  23673. + {
  23674. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23675. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23676. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23677. + },
  23678. + },
  23679. + {
  23680. + AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
  23681. + &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
  23682. + BFD_RELOC_UNUSED, 3, -1,
  23683. + {
  23684. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23685. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  23686. + &avr32_ifield_table[AVR32_IFIELD_S5],
  23687. + },
  23688. + },
  23689. + {
  23690. + AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
  23691. + &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
  23692. + BFD_RELOC_UNUSED, 3, -1,
  23693. + {
  23694. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23695. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  23696. + &avr32_ifield_table[AVR32_IFIELD_S5],
  23697. + },
  23698. + },
  23699. + {
  23700. + AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
  23701. + &avr32_syntax_table[AVR32_SYNTAX_SATS],
  23702. + BFD_RELOC_UNUSED, 3, -1,
  23703. + {
  23704. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23705. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  23706. + &avr32_ifield_table[AVR32_IFIELD_S5],
  23707. + },
  23708. + },
  23709. + {
  23710. + AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
  23711. + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
  23712. + BFD_RELOC_UNUSED, 3, -1,
  23713. + {
  23714. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23715. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23716. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23717. + },
  23718. + },
  23719. + {
  23720. + AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
  23721. + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
  23722. + BFD_RELOC_UNUSED, 3, -1,
  23723. + {
  23724. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23725. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23726. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23727. + },
  23728. + },
  23729. + {
  23730. + AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
  23731. + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
  23732. + BFD_RELOC_UNUSED, 3, -1,
  23733. + {
  23734. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23735. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23736. + &avr32_ifield_table[AVR32_IFIELD_K16],
  23737. + },
  23738. + },
  23739. + {
  23740. + AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
  23741. + &avr32_syntax_table[AVR32_SYNTAX_SATU],
  23742. + BFD_RELOC_UNUSED, 3, -1,
  23743. + {
  23744. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23745. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  23746. + &avr32_ifield_table[AVR32_IFIELD_S5],
  23747. + },
  23748. + },
  23749. + {
  23750. + AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
  23751. + &avr32_syntax_table[AVR32_SYNTAX_SBC],
  23752. + BFD_RELOC_UNUSED, 3, -1,
  23753. + {
  23754. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23755. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23756. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23757. + },
  23758. + },
  23759. + {
  23760. + AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
  23761. + &avr32_syntax_table[AVR32_SYNTAX_SBR],
  23762. + BFD_RELOC_UNUSED, 2, -1,
  23763. + {
  23764. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23765. + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
  23766. + },
  23767. + },
  23768. + {
  23769. + AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
  23770. + &avr32_syntax_table[AVR32_SYNTAX_SCALL],
  23771. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  23772. + },
  23773. + {
  23774. + AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
  23775. + &avr32_syntax_table[AVR32_SYNTAX_SCR],
  23776. + BFD_RELOC_UNUSED, 1, -1,
  23777. + {
  23778. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23779. + },
  23780. + },
  23781. + {
  23782. + AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
  23783. + &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
  23784. + BFD_RELOC_AVR32_8S_EXT, 1, 0,
  23785. + {
  23786. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  23787. + },
  23788. + },
  23789. + {
  23790. + AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
  23791. + &avr32_syntax_table[AVR32_SYNTAX_SREQ],
  23792. + BFD_RELOC_UNUSED, 1, -1,
  23793. + {
  23794. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23795. + },
  23796. + },
  23797. + {
  23798. + AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
  23799. + &avr32_syntax_table[AVR32_SYNTAX_SRNE],
  23800. + BFD_RELOC_UNUSED, 1, -1,
  23801. + {
  23802. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23803. + },
  23804. + },
  23805. + {
  23806. + AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
  23807. + &avr32_syntax_table[AVR32_SYNTAX_SRHS],
  23808. + BFD_RELOC_UNUSED, 1, -1,
  23809. + {
  23810. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23811. + },
  23812. + },
  23813. + {
  23814. + AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
  23815. + &avr32_syntax_table[AVR32_SYNTAX_SRLO],
  23816. + BFD_RELOC_UNUSED, 1, -1,
  23817. + {
  23818. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23819. + },
  23820. + },
  23821. + {
  23822. + AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
  23823. + &avr32_syntax_table[AVR32_SYNTAX_SRGE],
  23824. + BFD_RELOC_UNUSED, 1, -1,
  23825. + {
  23826. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23827. + },
  23828. + },
  23829. + {
  23830. + AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
  23831. + &avr32_syntax_table[AVR32_SYNTAX_SRLT],
  23832. + BFD_RELOC_UNUSED, 1, -1,
  23833. + {
  23834. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23835. + },
  23836. + },
  23837. + {
  23838. + AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
  23839. + &avr32_syntax_table[AVR32_SYNTAX_SRMI],
  23840. + BFD_RELOC_UNUSED, 1, -1,
  23841. + {
  23842. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23843. + },
  23844. + },
  23845. + {
  23846. + AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
  23847. + &avr32_syntax_table[AVR32_SYNTAX_SRPL],
  23848. + BFD_RELOC_UNUSED, 1, -1,
  23849. + {
  23850. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23851. + },
  23852. + },
  23853. + {
  23854. + AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
  23855. + &avr32_syntax_table[AVR32_SYNTAX_SRLS],
  23856. + BFD_RELOC_UNUSED, 1, -1,
  23857. + {
  23858. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23859. + },
  23860. + },
  23861. + {
  23862. + AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
  23863. + &avr32_syntax_table[AVR32_SYNTAX_SRGT],
  23864. + BFD_RELOC_UNUSED, 1, -1,
  23865. + {
  23866. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23867. + },
  23868. + },
  23869. + {
  23870. + AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
  23871. + &avr32_syntax_table[AVR32_SYNTAX_SRLE],
  23872. + BFD_RELOC_UNUSED, 1, -1,
  23873. + {
  23874. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23875. + },
  23876. + },
  23877. + {
  23878. + AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
  23879. + &avr32_syntax_table[AVR32_SYNTAX_SRHI],
  23880. + BFD_RELOC_UNUSED, 1, -1,
  23881. + {
  23882. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23883. + },
  23884. + },
  23885. + {
  23886. + AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
  23887. + &avr32_syntax_table[AVR32_SYNTAX_SRVS],
  23888. + BFD_RELOC_UNUSED, 1, -1,
  23889. + {
  23890. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23891. + },
  23892. + },
  23893. + {
  23894. + AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
  23895. + &avr32_syntax_table[AVR32_SYNTAX_SRVC],
  23896. + BFD_RELOC_UNUSED, 1, -1,
  23897. + {
  23898. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23899. + },
  23900. + },
  23901. + {
  23902. + AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
  23903. + &avr32_syntax_table[AVR32_SYNTAX_SRQS],
  23904. + BFD_RELOC_UNUSED, 1, -1,
  23905. + {
  23906. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23907. + },
  23908. + },
  23909. + {
  23910. + AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
  23911. + &avr32_syntax_table[AVR32_SYNTAX_SRAL],
  23912. + BFD_RELOC_UNUSED, 1, -1,
  23913. + {
  23914. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23915. + },
  23916. + },
  23917. + {
  23918. + AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
  23919. + &avr32_syntax_table[AVR32_SYNTAX_SSRF],
  23920. + BFD_RELOC_UNUSED, 1, -1,
  23921. + {
  23922. + &avr32_ifield_table[AVR32_IFIELD_K5C],
  23923. + },
  23924. + },
  23925. + {
  23926. + AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
  23927. + &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
  23928. + BFD_RELOC_UNUSED, 2, -1,
  23929. + {
  23930. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23931. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23932. + },
  23933. + },
  23934. + {
  23935. + AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
  23936. + &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
  23937. + BFD_RELOC_UNUSED, 2, -1,
  23938. + {
  23939. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23940. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23941. + },
  23942. + },
  23943. + {
  23944. + AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
  23945. + &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
  23946. + BFD_RELOC_UNUSED, 4, -1,
  23947. + {
  23948. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23949. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23950. + &avr32_ifield_table[AVR32_IFIELD_K2],
  23951. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  23952. + },
  23953. + },
  23954. + {
  23955. + AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
  23956. + &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
  23957. + BFD_RELOC_AVR32_3U, 3, 1,
  23958. + {
  23959. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23960. + &avr32_ifield_table[AVR32_IFIELD_K3],
  23961. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23962. + },
  23963. + },
  23964. + {
  23965. + AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
  23966. + &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
  23967. + BFD_RELOC_AVR32_16S, 3, 1,
  23968. + {
  23969. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23970. + &avr32_ifield_table[AVR32_IFIELD_K16],
  23971. + &avr32_ifield_table[AVR32_IFIELD_RY],
  23972. + },
  23973. + },
  23974. + {
  23975. + AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
  23976. + &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
  23977. + BFD_RELOC_UNUSED, 2, -1,
  23978. + {
  23979. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23980. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  23981. + },
  23982. + },
  23983. + {
  23984. + AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
  23985. + &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
  23986. + BFD_RELOC_UNUSED, 2, -1,
  23987. + {
  23988. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23989. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  23990. + },
  23991. + },
  23992. + {
  23993. + AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
  23994. + &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
  23995. + BFD_RELOC_UNUSED, 2, -1,
  23996. + {
  23997. + &avr32_ifield_table[AVR32_IFIELD_RX],
  23998. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  23999. + },
  24000. + },
  24001. + {
  24002. + AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
  24003. + &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
  24004. + BFD_RELOC_UNUSED, 4, -1,
  24005. + {
  24006. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24007. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24008. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24009. + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
  24010. + },
  24011. + },
  24012. + {
  24013. + AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
  24014. + &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
  24015. + BFD_RELOC_AVR32_16S, 3, 1,
  24016. + {
  24017. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24018. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24019. + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
  24020. + },
  24021. + },
  24022. + {
  24023. + AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
  24024. + &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
  24025. + BFD_RELOC_UNUSED, 2, -1,
  24026. + {
  24027. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24028. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24029. + },
  24030. + },
  24031. + {
  24032. + AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
  24033. + &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
  24034. + BFD_RELOC_UNUSED, 2, -1,
  24035. + {
  24036. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24037. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24038. + },
  24039. + },
  24040. + {
  24041. + AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
  24042. + &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
  24043. + BFD_RELOC_UNUSED, 4, -1,
  24044. + {
  24045. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24046. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24047. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24048. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24049. + },
  24050. + },
  24051. + {
  24052. + AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
  24053. + &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
  24054. + BFD_RELOC_AVR32_4UH, 3, 1,
  24055. + {
  24056. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24057. + &avr32_ifield_table[AVR32_IFIELD_K3],
  24058. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24059. + },
  24060. + },
  24061. + {
  24062. + AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
  24063. + &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
  24064. + BFD_RELOC_AVR32_16S, 3, 1,
  24065. + {
  24066. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24067. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24068. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24069. + },
  24070. + },
  24071. + {
  24072. + AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
  24073. + &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
  24074. + BFD_RELOC_UNUSED, 2, -1,
  24075. + {
  24076. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24077. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24078. + },
  24079. + },
  24080. + {
  24081. + AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
  24082. + &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
  24083. + BFD_RELOC_UNUSED, 2, -1,
  24084. + {
  24085. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24086. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24087. + },
  24088. + },
  24089. + {
  24090. + AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
  24091. + &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
  24092. + BFD_RELOC_UNUSED, 4, -1,
  24093. + {
  24094. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24095. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24096. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24097. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24098. + },
  24099. + },
  24100. + {
  24101. + AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
  24102. + &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
  24103. + BFD_RELOC_AVR32_6UW, 3, 1,
  24104. + {
  24105. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24106. + &avr32_ifield_table[AVR32_IFIELD_K4],
  24107. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24108. + },
  24109. + },
  24110. + {
  24111. + AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
  24112. + &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
  24113. + BFD_RELOC_AVR32_16S, 3, 1,
  24114. + {
  24115. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24116. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24117. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24118. + },
  24119. + },
  24120. + {
  24121. + AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
  24122. + &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
  24123. + BFD_RELOC_AVR32_10UW, 4, 2,
  24124. + {
  24125. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24126. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24127. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24128. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  24129. + },
  24130. + },
  24131. + {
  24132. + AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
  24133. + &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
  24134. + BFD_RELOC_UNUSED, 3, -1,
  24135. + {
  24136. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24137. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24138. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  24139. + },
  24140. + },
  24141. + {
  24142. + AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
  24143. + &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
  24144. + BFD_RELOC_UNUSED, 5, -1,
  24145. + {
  24146. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24147. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24148. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24149. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24150. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  24151. + },
  24152. + },
  24153. + {
  24154. + AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
  24155. + &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
  24156. + BFD_RELOC_AVR32_10UW, 4, 2,
  24157. + {
  24158. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24159. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24160. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24161. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  24162. + },
  24163. + },
  24164. + {
  24165. + AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
  24166. + &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
  24167. + BFD_RELOC_UNUSED, 3, -1,
  24168. + {
  24169. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24170. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24171. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  24172. + },
  24173. + },
  24174. + {
  24175. + AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
  24176. + &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
  24177. + BFD_RELOC_UNUSED, 5, -1,
  24178. + {
  24179. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24180. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24181. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24182. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24183. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  24184. + },
  24185. + },
  24186. + {
  24187. + AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
  24188. + &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
  24189. + BFD_RELOC_AVR32_14UW, 3, 1,
  24190. + {
  24191. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24192. + &avr32_ifield_table[AVR32_IFIELD_K12CP],
  24193. + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
  24194. + },
  24195. + },
  24196. + {
  24197. + AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
  24198. + &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
  24199. + BFD_RELOC_AVR32_14UW, 3, 1,
  24200. + {
  24201. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24202. + &avr32_ifield_table[AVR32_IFIELD_K12CP],
  24203. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  24204. + },
  24205. + },
  24206. + {
  24207. + AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
  24208. + &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
  24209. + BFD_RELOC_UNUSED, 3, -1,
  24210. + {
  24211. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24212. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24213. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24214. + },
  24215. + },
  24216. + {
  24217. + AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
  24218. + &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
  24219. + BFD_RELOC_UNUSED, 3, -1,
  24220. + {
  24221. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24222. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24223. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24224. + },
  24225. + },
  24226. + {
  24227. + AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
  24228. + &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
  24229. + BFD_RELOC_UNUSED, 4, -1,
  24230. + {
  24231. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24232. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24233. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24234. + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
  24235. + },
  24236. + },
  24237. + {
  24238. + AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
  24239. + &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
  24240. + BFD_RELOC_UNUSED, 4, -1,
  24241. + {
  24242. + &avr32_ifield_table[AVR32_IFIELD_CPNO],
  24243. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24244. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24245. + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
  24246. + },
  24247. + },
  24248. + {
  24249. + AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
  24250. + &avr32_syntax_table[AVR32_SYNTAX_STCOND],
  24251. + BFD_RELOC_UNUSED, 3, -1,
  24252. + {
  24253. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24254. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24255. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24256. + },
  24257. + },
  24258. + {
  24259. + AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
  24260. + &avr32_syntax_table[AVR32_SYNTAX_STDSP],
  24261. + BFD_RELOC_UNUSED, 2, -1,
  24262. + {
  24263. + &avr32_ifield_table[AVR32_IFIELD_K7C],
  24264. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24265. + },
  24266. + },
  24267. + {
  24268. + AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
  24269. + &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
  24270. + BFD_RELOC_UNUSED, 7, -1,
  24271. + {
  24272. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24273. + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
  24274. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24275. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24276. + &avr32_ifield_table[AVR32_IFIELD_X2],
  24277. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24278. + &avr32_ifield_table[AVR32_IFIELD_Y2],
  24279. + },
  24280. + },
  24281. + {
  24282. + AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
  24283. + &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
  24284. + BFD_RELOC_AVR32_STHH_W, 6, 1,
  24285. + {
  24286. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24287. + &avr32_ifield_table[AVR32_IFIELD_K8E2],
  24288. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24289. + &avr32_ifield_table[AVR32_IFIELD_X2],
  24290. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24291. + &avr32_ifield_table[AVR32_IFIELD_Y2],
  24292. + },
  24293. + },
  24294. + {
  24295. + AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
  24296. + &avr32_syntax_table[AVR32_SYNTAX_STM],
  24297. + BFD_RELOC_UNUSED, 2, -1,
  24298. + {
  24299. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24300. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24301. + },
  24302. + },
  24303. + {
  24304. + AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
  24305. + &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
  24306. + BFD_RELOC_UNUSED, 2, -1,
  24307. + {
  24308. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24309. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24310. + },
  24311. + },
  24312. + {
  24313. + AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
  24314. + &avr32_syntax_table[AVR32_SYNTAX_STMTS],
  24315. + BFD_RELOC_UNUSED, 2, -1,
  24316. + {
  24317. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24318. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24319. + },
  24320. + },
  24321. + {
  24322. + AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
  24323. + &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
  24324. + BFD_RELOC_UNUSED, 2, -1,
  24325. + {
  24326. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24327. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24328. + },
  24329. + },
  24330. + {
  24331. + AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
  24332. + &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
  24333. + BFD_RELOC_UNUSED, 3, -1,
  24334. + {
  24335. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24336. + &avr32_ifield_table[AVR32_IFIELD_K12],
  24337. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24338. + },
  24339. + },
  24340. + {
  24341. + AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
  24342. + &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
  24343. + BFD_RELOC_UNUSED, 3, -1,
  24344. + {
  24345. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24346. + &avr32_ifield_table[AVR32_IFIELD_K12],
  24347. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24348. + },
  24349. + },
  24350. + {
  24351. + AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
  24352. + &avr32_syntax_table[AVR32_SYNTAX_SUB1],
  24353. + BFD_RELOC_UNUSED, 2, -1,
  24354. + {
  24355. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24356. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24357. + },
  24358. + },
  24359. + {
  24360. + AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
  24361. + &avr32_syntax_table[AVR32_SYNTAX_SUB2],
  24362. + BFD_RELOC_UNUSED, 4, -1,
  24363. + {
  24364. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24365. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24366. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24367. + &avr32_ifield_table[AVR32_IFIELD_K2],
  24368. + },
  24369. + },
  24370. + {
  24371. + AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
  24372. + &avr32_syntax_table[AVR32_SYNTAX_SUB5],
  24373. + BFD_RELOC_AVR32_SUB5, 3, 2,
  24374. + {
  24375. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24376. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24377. + &avr32_ifield_table[AVR32_IFIELD_K16],
  24378. + },
  24379. + },
  24380. + {
  24381. + AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
  24382. + &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
  24383. + BFD_RELOC_AVR32_10SW, 2, 1,
  24384. + {
  24385. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24386. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  24387. + },
  24388. + },
  24389. + {
  24390. + AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
  24391. + &avr32_syntax_table[AVR32_SYNTAX_SUB3],
  24392. + BFD_RELOC_AVR32_8S, 2, 1,
  24393. + {
  24394. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24395. + &avr32_ifield_table[AVR32_IFIELD_K8C],
  24396. + },
  24397. + },
  24398. + {
  24399. + AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
  24400. + &avr32_syntax_table[AVR32_SYNTAX_SUB4],
  24401. + BFD_RELOC_AVR32_21S, 2, 1,
  24402. + {
  24403. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24404. + &avr32_ifield_table[AVR32_IFIELD_K21],
  24405. + },
  24406. + },
  24407. + {
  24408. + AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
  24409. + &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
  24410. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24411. + {
  24412. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24413. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24414. + },
  24415. + },
  24416. + {
  24417. + AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
  24418. + &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
  24419. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24420. + {
  24421. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24422. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24423. + },
  24424. + },
  24425. + {
  24426. + AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
  24427. + &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
  24428. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24429. + {
  24430. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24431. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24432. + },
  24433. + },
  24434. + {
  24435. + AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
  24436. + &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
  24437. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24438. + {
  24439. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24440. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24441. + },
  24442. + },
  24443. + {
  24444. + AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
  24445. + &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
  24446. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24447. + {
  24448. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24449. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24450. + },
  24451. + },
  24452. + {
  24453. + AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
  24454. + &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
  24455. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24456. + {
  24457. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24458. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24459. + },
  24460. + },
  24461. + {
  24462. + AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
  24463. + &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
  24464. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24465. + {
  24466. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24467. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24468. + },
  24469. + },
  24470. + {
  24471. + AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
  24472. + &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
  24473. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24474. + {
  24475. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24476. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24477. + },
  24478. + },
  24479. + {
  24480. + AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
  24481. + &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
  24482. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24483. + {
  24484. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24485. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24486. + },
  24487. + },
  24488. + {
  24489. + AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
  24490. + &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
  24491. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24492. + {
  24493. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24494. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24495. + },
  24496. + },
  24497. + {
  24498. + AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
  24499. + &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
  24500. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24501. + {
  24502. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24503. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24504. + },
  24505. + },
  24506. + {
  24507. + AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
  24508. + &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
  24509. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24510. + {
  24511. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24512. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24513. + },
  24514. + },
  24515. + {
  24516. + AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
  24517. + &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
  24518. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24519. + {
  24520. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24521. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24522. + },
  24523. + },
  24524. + {
  24525. + AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
  24526. + &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
  24527. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24528. + {
  24529. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24530. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24531. + },
  24532. + },
  24533. + {
  24534. + AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
  24535. + &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
  24536. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24537. + {
  24538. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24539. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24540. + },
  24541. + },
  24542. + {
  24543. + AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
  24544. + &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
  24545. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24546. + {
  24547. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24548. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24549. + },
  24550. + },
  24551. + {
  24552. + AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
  24553. + &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
  24554. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24555. + {
  24556. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24557. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24558. + },
  24559. + },
  24560. + {
  24561. + AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
  24562. + &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
  24563. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24564. + {
  24565. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24566. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24567. + },
  24568. + },
  24569. + {
  24570. + AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
  24571. + &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
  24572. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24573. + {
  24574. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24575. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24576. + },
  24577. + },
  24578. + {
  24579. + AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
  24580. + &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
  24581. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24582. + {
  24583. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24584. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24585. + },
  24586. + },
  24587. + {
  24588. + AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
  24589. + &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
  24590. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24591. + {
  24592. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24593. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24594. + },
  24595. + },
  24596. + {
  24597. + AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
  24598. + &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
  24599. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24600. + {
  24601. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24602. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24603. + },
  24604. + },
  24605. + {
  24606. + AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
  24607. + &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
  24608. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24609. + {
  24610. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24611. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24612. + },
  24613. + },
  24614. + {
  24615. + AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
  24616. + &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
  24617. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24618. + {
  24619. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24620. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24621. + },
  24622. + },
  24623. + {
  24624. + AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
  24625. + &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
  24626. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24627. + {
  24628. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24629. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24630. + },
  24631. + },
  24632. + {
  24633. + AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
  24634. + &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
  24635. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24636. + {
  24637. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24638. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24639. + },
  24640. + },
  24641. + {
  24642. + AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
  24643. + &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
  24644. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24645. + {
  24646. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24647. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24648. + },
  24649. + },
  24650. + {
  24651. + AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
  24652. + &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
  24653. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24654. + {
  24655. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24656. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24657. + },
  24658. + },
  24659. + {
  24660. + AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
  24661. + &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
  24662. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24663. + {
  24664. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24665. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24666. + },
  24667. + },
  24668. + {
  24669. + AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
  24670. + &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
  24671. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24672. + {
  24673. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24674. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24675. + },
  24676. + },
  24677. + {
  24678. + AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
  24679. + &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
  24680. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24681. + {
  24682. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24683. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24684. + },
  24685. + },
  24686. + {
  24687. + AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
  24688. + &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
  24689. + BFD_RELOC_AVR32_8S_EXT, 2, 1,
  24690. + {
  24691. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24692. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24693. + },
  24694. + },
  24695. + {
  24696. + AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
  24697. + &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
  24698. + BFD_RELOC_UNUSED, 5, -1,
  24699. + {
  24700. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24701. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24702. + &avr32_ifield_table[AVR32_IFIELD_X],
  24703. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24704. + &avr32_ifield_table[AVR32_IFIELD_Y],
  24705. + },
  24706. + },
  24707. + {
  24708. + AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
  24709. + &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
  24710. + BFD_RELOC_UNUSED, 1, -1,
  24711. + {
  24712. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24713. + }
  24714. + },
  24715. + {
  24716. + AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
  24717. + &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
  24718. + BFD_RELOC_UNUSED, 1, -1,
  24719. + {
  24720. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24721. + }
  24722. + },
  24723. + {
  24724. + AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
  24725. + &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
  24726. + BFD_RELOC_UNUSED, 1, -1,
  24727. + {
  24728. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24729. + }
  24730. + },
  24731. + {
  24732. + AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
  24733. + &avr32_syntax_table[AVR32_SYNTAX_SYNC],
  24734. + BFD_RELOC_AVR32_8S_EXT, 1, 0,
  24735. + {
  24736. + &avr32_ifield_table[AVR32_IFIELD_K8E],
  24737. + }
  24738. + },
  24739. + {
  24740. + AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
  24741. + &avr32_syntax_table[AVR32_SYNTAX_TLBR],
  24742. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  24743. + },
  24744. + {
  24745. + AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
  24746. + &avr32_syntax_table[AVR32_SYNTAX_TLBS],
  24747. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  24748. + },
  24749. + {
  24750. + AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
  24751. + &avr32_syntax_table[AVR32_SYNTAX_TLBW],
  24752. + BFD_RELOC_UNUSED, 0, -1, { NULL },
  24753. + },
  24754. + {
  24755. + AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
  24756. + &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
  24757. + BFD_RELOC_UNUSED, 1, -1,
  24758. + {
  24759. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24760. + }
  24761. + },
  24762. + {
  24763. + AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
  24764. + &avr32_syntax_table[AVR32_SYNTAX_TST],
  24765. + BFD_RELOC_UNUSED, 2, -1,
  24766. + {
  24767. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24768. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24769. + },
  24770. + },
  24771. + {
  24772. + AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
  24773. + &avr32_syntax_table[AVR32_SYNTAX_XCHG],
  24774. + BFD_RELOC_UNUSED, 3, -1,
  24775. + {
  24776. + &avr32_ifield_table[AVR32_IFIELD_RD_E],
  24777. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24778. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24779. + },
  24780. + },
  24781. + {
  24782. + AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
  24783. + &avr32_syntax_table[AVR32_SYNTAX_MEMC],
  24784. + BFD_RELOC_AVR32_15S, 2, 0,
  24785. + {
  24786. + &avr32_ifield_table[AVR32_IFIELD_MEM15],
  24787. + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
  24788. + },
  24789. + },
  24790. + {
  24791. + AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
  24792. + &avr32_syntax_table[AVR32_SYNTAX_MEMS],
  24793. + BFD_RELOC_AVR32_15S, 2, 0,
  24794. + {
  24795. + &avr32_ifield_table[AVR32_IFIELD_MEM15],
  24796. + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
  24797. + },
  24798. + },
  24799. + {
  24800. + AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
  24801. + &avr32_syntax_table[AVR32_SYNTAX_MEMT],
  24802. + BFD_RELOC_AVR32_15S, 2, 0,
  24803. + {
  24804. + &avr32_ifield_table[AVR32_IFIELD_MEM15],
  24805. + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
  24806. + },
  24807. + },
  24808. + {
  24809. + AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
  24810. + &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
  24811. + BFD_RELOC_UNUSED, 4, -1,
  24812. + {
  24813. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24814. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24815. + &avr32_ifield_table[AVR32_IFIELD_S5],
  24816. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  24817. + },
  24818. + },
  24819. + {
  24820. + AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
  24821. + &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
  24822. + BFD_RELOC_UNUSED, 4, -1,
  24823. + {
  24824. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24825. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24826. + &avr32_ifield_table[AVR32_IFIELD_S5],
  24827. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  24828. + },
  24829. + },
  24830. + {
  24831. + AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
  24832. + &avr32_syntax_table[AVR32_SYNTAX_BFINS],
  24833. + BFD_RELOC_UNUSED, 4, -1,
  24834. + {
  24835. + &avr32_ifield_table[AVR32_IFIELD_RX],
  24836. + &avr32_ifield_table[AVR32_IFIELD_RY],
  24837. + &avr32_ifield_table[AVR32_IFIELD_S5],
  24838. + &avr32_ifield_table[AVR32_IFIELD_K5E],
  24839. + },
  24840. + },
  24841. +#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field) \
  24842. + { \
  24843. + AVR32_OPC_RSUB ## cond_name , 4, \
  24844. + 0xfbb00000 | (cond_field << 8), 0xfff0ff00, \
  24845. + &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ], \
  24846. + BFD_RELOC_AVR32_8S_EXT, 2, 1, \
  24847. + { \
  24848. + &avr32_ifield_table[AVR32_IFIELD_RY], \
  24849. + &avr32_ifield_table[AVR32_IFIELD_K8E], \
  24850. + }, \
  24851. + },
  24852. +
  24853. + AVR32_OPCODE_RSUBCOND (EQ, 0)
  24854. + AVR32_OPCODE_RSUBCOND (NE, 1)
  24855. + AVR32_OPCODE_RSUBCOND (CC, 2)
  24856. + AVR32_OPCODE_RSUBCOND (CS, 3)
  24857. + AVR32_OPCODE_RSUBCOND (GE, 4)
  24858. + AVR32_OPCODE_RSUBCOND (LT, 5)
  24859. + AVR32_OPCODE_RSUBCOND (MI, 6)
  24860. + AVR32_OPCODE_RSUBCOND (PL, 7)
  24861. + AVR32_OPCODE_RSUBCOND (LS, 8)
  24862. + AVR32_OPCODE_RSUBCOND (GT, 9)
  24863. + AVR32_OPCODE_RSUBCOND (LE, 10)
  24864. + AVR32_OPCODE_RSUBCOND (HI, 11)
  24865. + AVR32_OPCODE_RSUBCOND (VS, 12)
  24866. + AVR32_OPCODE_RSUBCOND (VC, 13)
  24867. + AVR32_OPCODE_RSUBCOND (QS, 14)
  24868. + AVR32_OPCODE_RSUBCOND (AL, 15)
  24869. +
  24870. +#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
  24871. + { \
  24872. + AVR32_OPC_ ## op_name ## cond_name , 4, \
  24873. + 0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0, \
  24874. + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
  24875. + BFD_RELOC_UNUSED, 3, -1, \
  24876. + { \
  24877. + &avr32_ifield_table[AVR32_IFIELD_RD_E], \
  24878. + &avr32_ifield_table[AVR32_IFIELD_RX], \
  24879. + &avr32_ifield_table[AVR32_IFIELD_RY], \
  24880. + }, \
  24881. + },
  24882. +
  24883. + AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
  24884. + AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
  24885. + AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
  24886. + AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
  24887. + AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
  24888. + AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
  24889. + AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
  24890. + AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
  24891. + AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
  24892. + AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
  24893. + AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
  24894. + AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
  24895. + AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
  24896. + AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
  24897. + AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
  24898. + AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
  24899. +
  24900. + AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
  24901. + AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
  24902. + AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
  24903. + AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
  24904. + AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
  24905. + AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
  24906. + AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
  24907. + AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
  24908. + AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
  24909. + AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
  24910. + AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
  24911. + AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
  24912. + AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
  24913. + AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
  24914. + AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
  24915. + AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
  24916. +
  24917. + AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
  24918. + AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
  24919. + AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
  24920. + AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
  24921. + AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
  24922. + AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
  24923. + AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
  24924. + AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
  24925. + AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
  24926. + AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
  24927. + AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
  24928. + AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
  24929. + AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
  24930. + AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
  24931. + AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
  24932. + AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
  24933. +
  24934. + AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
  24935. + AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
  24936. + AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
  24937. + AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
  24938. + AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
  24939. + AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
  24940. + AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
  24941. + AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
  24942. + AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
  24943. + AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
  24944. + AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
  24945. + AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
  24946. + AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
  24947. + AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
  24948. + AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
  24949. + AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
  24950. +
  24951. + AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
  24952. + AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
  24953. + AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
  24954. + AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
  24955. + AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
  24956. + AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
  24957. + AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
  24958. + AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
  24959. + AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
  24960. + AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
  24961. + AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
  24962. + AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
  24963. + AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
  24964. + AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
  24965. + AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
  24966. + AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15)
  24967. +
  24968. +#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field) \
  24969. + { \
  24970. + AVR32_OPC_ ## op_name ## cond_name , 4, \
  24971. + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
  24972. + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
  24973. + BFD_RELOC_UNUSED, 3, -1, \
  24974. + { \
  24975. + &avr32_ifield_table[AVR32_IFIELD_RY], \
  24976. + &avr32_ifield_table[AVR32_IFIELD_RX], \
  24977. + &avr32_ifield_table[AVR32_IFIELD_K9E], \
  24978. + }, \
  24979. + },
  24980. +
  24981. +#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field) \
  24982. + { \
  24983. + AVR32_OPC_ ## op_name ## cond_name , 4, \
  24984. + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
  24985. + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
  24986. + BFD_RELOC_UNUSED, 3, -1, \
  24987. + { \
  24988. + &avr32_ifield_table[AVR32_IFIELD_RX], \
  24989. + &avr32_ifield_table[AVR32_IFIELD_K9E], \
  24990. + &avr32_ifield_table[AVR32_IFIELD_RY], \
  24991. + }, \
  24992. + },
  24993. +
  24994. + AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0)
  24995. + AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1)
  24996. + AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2)
  24997. + AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3)
  24998. + AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4)
  24999. + AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5)
  25000. + AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6)
  25001. + AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7)
  25002. + AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8)
  25003. + AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9)
  25004. + AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10)
  25005. + AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11)
  25006. + AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12)
  25007. + AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13)
  25008. + AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14)
  25009. + AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15)
  25010. +
  25011. + AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0)
  25012. + AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1)
  25013. + AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2)
  25014. + AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3)
  25015. + AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4)
  25016. + AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5)
  25017. + AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6)
  25018. + AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7)
  25019. + AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8)
  25020. + AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9)
  25021. + AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10)
  25022. + AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11)
  25023. + AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12)
  25024. + AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13)
  25025. + AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14)
  25026. + AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15)
  25027. +
  25028. + AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0)
  25029. + AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1)
  25030. + AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2)
  25031. + AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3)
  25032. + AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4)
  25033. + AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5)
  25034. + AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6)
  25035. + AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7)
  25036. + AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8)
  25037. + AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9)
  25038. + AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10)
  25039. + AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11)
  25040. + AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12)
  25041. + AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13)
  25042. + AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14)
  25043. + AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15)
  25044. +
  25045. + AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0)
  25046. + AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1)
  25047. + AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2)
  25048. + AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3)
  25049. + AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4)
  25050. + AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5)
  25051. + AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6)
  25052. + AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7)
  25053. + AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8)
  25054. + AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9)
  25055. + AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10)
  25056. + AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11)
  25057. + AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12)
  25058. + AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13)
  25059. + AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14)
  25060. + AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15)
  25061. +
  25062. + AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0)
  25063. + AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1)
  25064. + AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2)
  25065. + AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3)
  25066. + AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4)
  25067. + AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5)
  25068. + AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6)
  25069. + AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7)
  25070. + AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8)
  25071. + AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9)
  25072. + AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10)
  25073. + AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11)
  25074. + AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12)
  25075. + AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13)
  25076. + AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14)
  25077. + AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15)
  25078. +
  25079. + AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0)
  25080. + AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1)
  25081. + AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2)
  25082. + AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3)
  25083. + AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4)
  25084. + AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5)
  25085. + AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6)
  25086. + AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7)
  25087. + AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8)
  25088. + AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9)
  25089. + AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10)
  25090. + AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11)
  25091. + AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12)
  25092. + AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13)
  25093. + AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14)
  25094. + AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15)
  25095. +
  25096. + AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0)
  25097. + AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1)
  25098. + AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2)
  25099. + AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3)
  25100. + AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4)
  25101. + AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5)
  25102. + AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6)
  25103. + AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7)
  25104. + AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8)
  25105. + AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9)
  25106. + AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10)
  25107. + AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11)
  25108. + AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12)
  25109. + AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13)
  25110. + AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14)
  25111. + AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15)
  25112. +
  25113. + AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0)
  25114. + AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1)
  25115. + AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2)
  25116. + AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3)
  25117. + AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4)
  25118. + AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5)
  25119. + AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6)
  25120. + AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7)
  25121. + AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8)
  25122. + AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9)
  25123. + AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10)
  25124. + AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11)
  25125. + AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12)
  25126. + AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13)
  25127. + AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14)
  25128. + AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15)
  25129. +
  25130. + {
  25131. + AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
  25132. + &avr32_syntax_table[AVR32_SYNTAX_MOVH],
  25133. + BFD_RELOC_AVR32_16U, 2, 1,
  25134. + {
  25135. + &avr32_ifield_table[AVR32_IFIELD_RY],
  25136. + &avr32_ifield_table[AVR32_IFIELD_K16],
  25137. + },
  25138. + },
  25139. +
  25140. + };
  25141. +
  25142. +#define FPALIAS_DXY(name, opcode) \
  25143. + { \
  25144. + AVR32_ALIAS_##name##_S, \
  25145. + &avr32_opc_table[AVR32_OPC_COP], \
  25146. + { \
  25147. + { 0, 0 }, \
  25148. + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
  25149. + { 0, opcode }, \
  25150. + }, \
  25151. + }, { \
  25152. + AVR32_ALIAS_##name##_D, \
  25153. + &avr32_opc_table[AVR32_OPC_COP], \
  25154. + { \
  25155. + { 0, 0 }, \
  25156. + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
  25157. + { 0, (opcode) | 0x40 }, \
  25158. + }, \
  25159. + }
  25160. +#define FPALIAS_DX(name, opcode) \
  25161. + { \
  25162. + AVR32_ALIAS_##name##_S, \
  25163. + &avr32_opc_table[AVR32_OPC_COP], \
  25164. + { \
  25165. + { 0, 0 }, \
  25166. + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
  25167. + { 0, opcode }, \
  25168. + }, \
  25169. + }, { \
  25170. + AVR32_ALIAS_##name##_D, \
  25171. + &avr32_opc_table[AVR32_OPC_COP], \
  25172. + { \
  25173. + { 0, 0 }, \
  25174. + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
  25175. + { 0, (opcode) | 0x40 }, \
  25176. + }, \
  25177. + }
  25178. +#define FPALIAS_XY(name, opcode) \
  25179. + { \
  25180. + AVR32_ALIAS_##name##_S, \
  25181. + &avr32_opc_table[AVR32_OPC_COP], \
  25182. + { \
  25183. + { 0, 0 }, \
  25184. + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
  25185. + { 0, opcode }, \
  25186. + }, \
  25187. + }, { \
  25188. + AVR32_ALIAS_##name##_D, \
  25189. + &avr32_opc_table[AVR32_OPC_COP], \
  25190. + { \
  25191. + { 0, 0 }, \
  25192. + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
  25193. + { 0, (opcode) | 0x40 }, \
  25194. + }, \
  25195. + }
  25196. +
  25197. +const struct avr32_alias avr32_alias_table[] =
  25198. + {
  25199. + FPALIAS_DXY(FMAC, 0x00),
  25200. + FPALIAS_DXY(FNMAC, 0x01),
  25201. + FPALIAS_DXY(FMSC, 0x02),
  25202. + FPALIAS_DXY(FNMSC, 0x03),
  25203. + FPALIAS_DXY(FADD, 0x04),
  25204. + FPALIAS_DXY(FSUB, 0x05),
  25205. + FPALIAS_DXY(FMUL, 0x06),
  25206. + FPALIAS_DXY(FNMUL, 0x07),
  25207. + FPALIAS_DX(FNEG, 0x08),
  25208. + FPALIAS_DX(FABS, 0x09),
  25209. + FPALIAS_XY(FCMP, 0x0d),
  25210. + FPALIAS_DX(FMOV1, 0x0a),
  25211. + {
  25212. + AVR32_ALIAS_FMOV2_S,
  25213. + &avr32_opc_table[AVR32_OPC_MVCR_W],
  25214. + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
  25215. + },
  25216. + {
  25217. + AVR32_ALIAS_FMOV2_D,
  25218. + &avr32_opc_table[AVR32_OPC_MVCR_D],
  25219. + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
  25220. + },
  25221. + {
  25222. + AVR32_ALIAS_FMOV3_S,
  25223. + &avr32_opc_table[AVR32_OPC_MVRC_W],
  25224. + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
  25225. + },
  25226. + {
  25227. + AVR32_ALIAS_FMOV3_D,
  25228. + &avr32_opc_table[AVR32_OPC_MVRC_D],
  25229. + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
  25230. + },
  25231. + {
  25232. + AVR32_ALIAS_FCASTS_D,
  25233. + &avr32_opc_table[AVR32_OPC_COP],
  25234. + {
  25235. + { 0, 0 },
  25236. + { 1, 0 }, { 1, 1 }, { 0, 0 },
  25237. + { 0, 0x0f },
  25238. + },
  25239. + },
  25240. + {
  25241. + AVR32_ALIAS_FCASTD_S,
  25242. + &avr32_opc_table[AVR32_OPC_COP],
  25243. + {
  25244. + { 0, 0 },
  25245. + { 1, 0 }, { 1, 1 }, { 0, 0 },
  25246. + { 0, 0x10 },
  25247. + },
  25248. + },
  25249. + {
  25250. + AVR32_ALIAS_PICOSVMAC0,
  25251. + &avr32_opc_table[AVR32_OPC_COP],
  25252. + {
  25253. + { 0, PICO_CPNO },
  25254. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25255. + { 0, 0x0c },
  25256. + },
  25257. + },
  25258. + {
  25259. + AVR32_ALIAS_PICOSVMAC1,
  25260. + &avr32_opc_table[AVR32_OPC_COP],
  25261. + {
  25262. + { 0, PICO_CPNO },
  25263. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25264. + { 0, 0x0d },
  25265. + },
  25266. + },
  25267. + {
  25268. + AVR32_ALIAS_PICOSVMAC2,
  25269. + &avr32_opc_table[AVR32_OPC_COP],
  25270. + {
  25271. + { 0, PICO_CPNO },
  25272. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25273. + { 0, 0x0e },
  25274. + },
  25275. + },
  25276. + {
  25277. + AVR32_ALIAS_PICOSVMAC3,
  25278. + &avr32_opc_table[AVR32_OPC_COP],
  25279. + {
  25280. + { 0, PICO_CPNO },
  25281. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25282. + { 0, 0x0f },
  25283. + },
  25284. + },
  25285. + {
  25286. + AVR32_ALIAS_PICOSVMUL0,
  25287. + &avr32_opc_table[AVR32_OPC_COP],
  25288. + {
  25289. + { 0, PICO_CPNO },
  25290. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25291. + { 0, 0x08 },
  25292. + },
  25293. + },
  25294. + {
  25295. + AVR32_ALIAS_PICOSVMUL1,
  25296. + &avr32_opc_table[AVR32_OPC_COP],
  25297. + {
  25298. + { 0, PICO_CPNO },
  25299. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25300. + { 0, 0x09 },
  25301. + },
  25302. + },
  25303. + {
  25304. + AVR32_ALIAS_PICOSVMUL2,
  25305. + &avr32_opc_table[AVR32_OPC_COP],
  25306. + {
  25307. + { 0, PICO_CPNO },
  25308. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25309. + { 0, 0x0a },
  25310. + },
  25311. + },
  25312. + {
  25313. + AVR32_ALIAS_PICOSVMUL3,
  25314. + &avr32_opc_table[AVR32_OPC_COP],
  25315. + {
  25316. + { 0, PICO_CPNO },
  25317. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25318. + { 0, 0x0b },
  25319. + },
  25320. + },
  25321. + {
  25322. + AVR32_ALIAS_PICOVMAC0,
  25323. + &avr32_opc_table[AVR32_OPC_COP],
  25324. + {
  25325. + { 0, PICO_CPNO },
  25326. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25327. + { 0, 0x04 },
  25328. + },
  25329. + },
  25330. + {
  25331. + AVR32_ALIAS_PICOVMAC1,
  25332. + &avr32_opc_table[AVR32_OPC_COP],
  25333. + {
  25334. + { 0, PICO_CPNO },
  25335. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25336. + { 0, 0x05 },
  25337. + },
  25338. + },
  25339. + {
  25340. + AVR32_ALIAS_PICOVMAC2,
  25341. + &avr32_opc_table[AVR32_OPC_COP],
  25342. + {
  25343. + { 0, PICO_CPNO },
  25344. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25345. + { 0, 0x06 },
  25346. + },
  25347. + },
  25348. + {
  25349. + AVR32_ALIAS_PICOVMAC3,
  25350. + &avr32_opc_table[AVR32_OPC_COP],
  25351. + {
  25352. + { 0, PICO_CPNO },
  25353. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25354. + { 0, 0x07 },
  25355. + },
  25356. + },
  25357. + {
  25358. + AVR32_ALIAS_PICOVMUL0,
  25359. + &avr32_opc_table[AVR32_OPC_COP],
  25360. + {
  25361. + { 0, PICO_CPNO },
  25362. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25363. + { 0, 0x00 },
  25364. + },
  25365. + },
  25366. + {
  25367. + AVR32_ALIAS_PICOVMUL1,
  25368. + &avr32_opc_table[AVR32_OPC_COP],
  25369. + {
  25370. + { 0, PICO_CPNO },
  25371. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25372. + { 0, 0x01 },
  25373. + },
  25374. + },
  25375. + {
  25376. + AVR32_ALIAS_PICOVMUL2,
  25377. + &avr32_opc_table[AVR32_OPC_COP],
  25378. + {
  25379. + { 0, PICO_CPNO },
  25380. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25381. + { 0, 0x02 },
  25382. + },
  25383. + },
  25384. + {
  25385. + AVR32_ALIAS_PICOVMUL3,
  25386. + &avr32_opc_table[AVR32_OPC_COP],
  25387. + {
  25388. + { 0, PICO_CPNO },
  25389. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25390. + { 0, 0x03 },
  25391. + },
  25392. + },
  25393. + {
  25394. + AVR32_ALIAS_PICOLD_D1,
  25395. + &avr32_opc_table[AVR32_OPC_LDC_D1],
  25396. + {
  25397. + { 0, PICO_CPNO },
  25398. + { 1, 0 }, { 1, 1 },
  25399. + },
  25400. + },
  25401. + {
  25402. + AVR32_ALIAS_PICOLD_D2,
  25403. + &avr32_opc_table[AVR32_OPC_LDC_D2],
  25404. + {
  25405. + { 0, PICO_CPNO },
  25406. + { 1, 0 }, { 1, 1 },
  25407. + },
  25408. + },
  25409. + {
  25410. + AVR32_ALIAS_PICOLD_D3,
  25411. + &avr32_opc_table[AVR32_OPC_LDC_D3],
  25412. + {
  25413. + { 0, PICO_CPNO },
  25414. + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
  25415. + },
  25416. + },
  25417. + {
  25418. + AVR32_ALIAS_PICOLD_W1,
  25419. + &avr32_opc_table[AVR32_OPC_LDC_W1],
  25420. + {
  25421. + { 0, PICO_CPNO },
  25422. + { 1, 0 }, { 1, 1 },
  25423. + },
  25424. + },
  25425. + {
  25426. + AVR32_ALIAS_PICOLD_W2,
  25427. + &avr32_opc_table[AVR32_OPC_LDC_W2],
  25428. + {
  25429. + { 0, PICO_CPNO },
  25430. + { 1, 0 }, { 1, 1 },
  25431. + },
  25432. + },
  25433. + {
  25434. + AVR32_ALIAS_PICOLD_W3,
  25435. + &avr32_opc_table[AVR32_OPC_LDC_W3],
  25436. + {
  25437. + { 0, PICO_CPNO },
  25438. + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
  25439. + },
  25440. + },
  25441. + {
  25442. + AVR32_ALIAS_PICOLDM_D,
  25443. + &avr32_opc_table[AVR32_OPC_LDCM_D],
  25444. + {
  25445. + { 0, PICO_CPNO },
  25446. + { 1, 0 }, { 1, 1 },
  25447. + },
  25448. + },
  25449. + {
  25450. + AVR32_ALIAS_PICOLDM_D_PU,
  25451. + &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
  25452. + {
  25453. + { 0, PICO_CPNO },
  25454. + { 1, 0 }, { 1, 1 },
  25455. + },
  25456. + },
  25457. + {
  25458. + AVR32_ALIAS_PICOLDM_W,
  25459. + &avr32_opc_table[AVR32_OPC_LDCM_W],
  25460. + {
  25461. + { 0, PICO_CPNO },
  25462. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25463. + },
  25464. + },
  25465. + {
  25466. + AVR32_ALIAS_PICOLDM_W_PU,
  25467. + &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
  25468. + {
  25469. + { 0, PICO_CPNO },
  25470. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25471. + },
  25472. + },
  25473. + {
  25474. + AVR32_ALIAS_PICOMV_D1,
  25475. + &avr32_opc_table[AVR32_OPC_MVCR_D],
  25476. + {
  25477. + { 0, PICO_CPNO },
  25478. + { 1, 0 }, { 1, 1 },
  25479. + },
  25480. + },
  25481. + {
  25482. + AVR32_ALIAS_PICOMV_D2,
  25483. + &avr32_opc_table[AVR32_OPC_MVRC_D],
  25484. + {
  25485. + { 0, PICO_CPNO },
  25486. + { 1, 0 }, { 1, 1 },
  25487. + },
  25488. + },
  25489. + {
  25490. + AVR32_ALIAS_PICOMV_W1,
  25491. + &avr32_opc_table[AVR32_OPC_MVCR_W],
  25492. + {
  25493. + { 0, PICO_CPNO },
  25494. + { 1, 0 }, { 1, 1 },
  25495. + },
  25496. + },
  25497. + {
  25498. + AVR32_ALIAS_PICOMV_W2,
  25499. + &avr32_opc_table[AVR32_OPC_MVRC_W],
  25500. + {
  25501. + { 0, PICO_CPNO },
  25502. + { 1, 0 }, { 1, 1 },
  25503. + },
  25504. + },
  25505. + {
  25506. + AVR32_ALIAS_PICOST_D1,
  25507. + &avr32_opc_table[AVR32_OPC_STC_D1],
  25508. + {
  25509. + { 0, PICO_CPNO },
  25510. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25511. + },
  25512. + },
  25513. + {
  25514. + AVR32_ALIAS_PICOST_D2,
  25515. + &avr32_opc_table[AVR32_OPC_STC_D2],
  25516. + {
  25517. + { 0, PICO_CPNO },
  25518. + { 1, 0 }, { 1, 1 },
  25519. + },
  25520. + },
  25521. + {
  25522. + AVR32_ALIAS_PICOST_D3,
  25523. + &avr32_opc_table[AVR32_OPC_STC_D3],
  25524. + {
  25525. + { 0, PICO_CPNO },
  25526. + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
  25527. + },
  25528. + },
  25529. + {
  25530. + AVR32_ALIAS_PICOST_W1,
  25531. + &avr32_opc_table[AVR32_OPC_STC_W1],
  25532. + {
  25533. + { 0, PICO_CPNO },
  25534. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25535. + },
  25536. + },
  25537. + {
  25538. + AVR32_ALIAS_PICOST_W2,
  25539. + &avr32_opc_table[AVR32_OPC_STC_W2],
  25540. + {
  25541. + { 0, PICO_CPNO },
  25542. + { 1, 0 }, { 1, 1 },
  25543. + },
  25544. + },
  25545. + {
  25546. + AVR32_ALIAS_PICOST_W3,
  25547. + &avr32_opc_table[AVR32_OPC_STC_W3],
  25548. + {
  25549. + { 0, PICO_CPNO },
  25550. + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
  25551. + },
  25552. + },
  25553. + {
  25554. + AVR32_ALIAS_PICOSTM_D,
  25555. + &avr32_opc_table[AVR32_OPC_STCM_D],
  25556. + {
  25557. + { 0, PICO_CPNO },
  25558. + { 1, 0 }, { 1, 1 },
  25559. + },
  25560. + },
  25561. + {
  25562. + AVR32_ALIAS_PICOSTM_D_PU,
  25563. + &avr32_opc_table[AVR32_OPC_STCM_D_PU],
  25564. + {
  25565. + { 0, PICO_CPNO },
  25566. + { 1, 0 }, { 1, 1 },
  25567. + },
  25568. + },
  25569. + {
  25570. + AVR32_ALIAS_PICOSTM_W,
  25571. + &avr32_opc_table[AVR32_OPC_STCM_W],
  25572. + {
  25573. + { 0, PICO_CPNO },
  25574. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25575. + },
  25576. + },
  25577. + {
  25578. + AVR32_ALIAS_PICOSTM_W_PU,
  25579. + &avr32_opc_table[AVR32_OPC_STCM_W_PU],
  25580. + {
  25581. + { 0, PICO_CPNO },
  25582. + { 1, 0 }, { 1, 1 }, { 1, 2 },
  25583. + },
  25584. + },
  25585. + };
  25586. +
  25587. +
  25588. +#define SYNTAX_NORMAL0(id, mne, opc, arch) \
  25589. + { \
  25590. + AVR32_SYNTAX_##id, arch, \
  25591. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25592. + AVR32_PARSER_NORMAL, \
  25593. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25594. + NULL, 0, { } \
  25595. + }
  25596. +#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
  25597. + { \
  25598. + AVR32_SYNTAX_##id, arch, \
  25599. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25600. + AVR32_PARSER_NORMAL, \
  25601. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25602. + NULL, 1, \
  25603. + { \
  25604. + AVR32_OPERAND_##op0, \
  25605. + } \
  25606. + }
  25607. +#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
  25608. + { \
  25609. + AVR32_SYNTAX_##id, arch, \
  25610. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25611. + AVR32_PARSER_NORMAL, \
  25612. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25613. + NULL, -1, \
  25614. + { \
  25615. + AVR32_OPERAND_##op0, \
  25616. + } \
  25617. + }
  25618. +#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
  25619. + { \
  25620. + AVR32_SYNTAX_##id, arch, \
  25621. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25622. + AVR32_PARSER_NORMAL, \
  25623. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25624. + NULL, 2, \
  25625. + { \
  25626. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25627. + } \
  25628. + }
  25629. +#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
  25630. + { \
  25631. + AVR32_SYNTAX_##id, arch, \
  25632. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25633. + AVR32_PARSER_NORMAL, \
  25634. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25635. + NULL, -2, \
  25636. + { \
  25637. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25638. + } \
  25639. + }
  25640. +#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
  25641. + { \
  25642. + AVR32_SYNTAX_##id, arch, \
  25643. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25644. + AVR32_PARSER_NORMAL, \
  25645. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25646. + NULL, 3, \
  25647. + { \
  25648. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25649. + AVR32_OPERAND_##op2, \
  25650. + } \
  25651. + }
  25652. +#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
  25653. + { \
  25654. + AVR32_SYNTAX_##id, arch, \
  25655. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25656. + AVR32_PARSER_NORMAL, \
  25657. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25658. + NULL, -3, \
  25659. + { \
  25660. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25661. + AVR32_OPERAND_##op2, \
  25662. + } \
  25663. + }
  25664. +#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
  25665. + { \
  25666. + AVR32_SYNTAX_##id, arch, \
  25667. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25668. + AVR32_PARSER_NORMAL, \
  25669. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25670. + NULL, 4, \
  25671. + { \
  25672. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25673. + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
  25674. + } \
  25675. + }
  25676. +#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
  25677. + { \
  25678. + AVR32_SYNTAX_##id, arch, \
  25679. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25680. + AVR32_PARSER_NORMAL, \
  25681. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25682. + NULL, 5, \
  25683. + { \
  25684. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25685. + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
  25686. + AVR32_OPERAND_##op4, \
  25687. + } \
  25688. + }
  25689. +
  25690. +#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
  25691. + { \
  25692. + AVR32_SYNTAX_##id, arch, \
  25693. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25694. + AVR32_PARSER_NORMAL, \
  25695. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25696. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
  25697. + { \
  25698. + AVR32_OPERAND_##op0, \
  25699. + } \
  25700. + }
  25701. +#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
  25702. + { \
  25703. + AVR32_SYNTAX_##id, arch, \
  25704. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25705. + AVR32_PARSER_NORMAL, \
  25706. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25707. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
  25708. + { \
  25709. + AVR32_OPERAND_##op0, \
  25710. + } \
  25711. + }
  25712. +#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
  25713. + { \
  25714. + AVR32_SYNTAX_##id, arch, \
  25715. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25716. + AVR32_PARSER_NORMAL, \
  25717. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25718. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
  25719. + { \
  25720. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25721. + } \
  25722. + }
  25723. +#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
  25724. + { \
  25725. + AVR32_SYNTAX_##id, arch, \
  25726. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25727. + AVR32_PARSER_NORMAL, \
  25728. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25729. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
  25730. + { \
  25731. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25732. + } \
  25733. + }
  25734. +#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
  25735. + { \
  25736. + AVR32_SYNTAX_##id, arch, \
  25737. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25738. + AVR32_PARSER_NORMAL, \
  25739. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25740. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
  25741. + { \
  25742. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25743. + AVR32_OPERAND_##op2, \
  25744. + } \
  25745. + }
  25746. +#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
  25747. + { \
  25748. + AVR32_SYNTAX_##id, arch, \
  25749. + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
  25750. + AVR32_PARSER_NORMAL, \
  25751. + { &avr32_opc_table[AVR32_OPC_##opc], }, \
  25752. + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
  25753. + { \
  25754. + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
  25755. + AVR32_OPERAND_##op2, \
  25756. + } \
  25757. + }
  25758. +
  25759. +#define SYNTAX_FP(name, nr_ops) \
  25760. + { \
  25761. + AVR32_SYNTAX_##name##_S, \
  25762. + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
  25763. + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
  25764. + NULL, nr_ops, \
  25765. + { \
  25766. + AVR32_OPERAND_FPREG_S, \
  25767. + AVR32_OPERAND_FPREG_S, \
  25768. + AVR32_OPERAND_FPREG_S, \
  25769. + }, \
  25770. + }, \
  25771. + { \
  25772. + AVR32_SYNTAX_##name##_D, \
  25773. + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
  25774. + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
  25775. + NULL, nr_ops, \
  25776. + { \
  25777. + AVR32_OPERAND_FPREG_D, \
  25778. + AVR32_OPERAND_FPREG_D, \
  25779. + AVR32_OPERAND_FPREG_D, \
  25780. + }, \
  25781. + }
  25782. +
  25783. +const struct avr32_syntax avr32_syntax_table[] =
  25784. + {
  25785. + SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
  25786. + SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
  25787. + SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
  25788. + SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
  25789. + SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
  25790. + SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
  25791. + SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
  25792. + SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25793. + SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
  25794. + SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
  25795. + SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
  25796. + SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
  25797. + SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
  25798. + SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
  25799. + SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
  25800. + SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
  25801. + SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
  25802. + SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25803. + SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25804. + SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
  25805. + SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
  25806. + SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
  25807. + SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25808. + SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
  25809. + SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
  25810. + SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
  25811. + SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
  25812. + SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
  25813. + SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
  25814. + SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
  25815. + SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
  25816. + SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
  25817. + SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
  25818. + SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
  25819. + SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
  25820. + SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
  25821. + SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
  25822. + SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
  25823. + SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
  25824. + SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
  25825. + SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
  25826. + SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
  25827. + SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
  25828. + SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
  25829. + SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
  25830. + SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
  25831. + SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
  25832. + SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
  25833. + SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
  25834. + SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
  25835. + SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
  25836. + SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
  25837. + SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
  25838. + SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25839. + SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
  25840. + SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
  25841. + SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
  25842. + SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
  25843. + SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
  25844. + SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25845. + SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
  25846. + SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
  25847. + SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
  25848. + SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
  25849. + SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
  25850. + SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
  25851. + SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
  25852. + SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
  25853. + SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
  25854. + SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
  25855. + SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
  25856. + SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
  25857. + SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
  25858. + SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
  25859. + SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
  25860. + SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
  25861. + SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
  25862. + SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
  25863. + SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
  25864. + SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
  25865. + SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
  25866. + SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
  25867. + SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
  25868. + SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
  25869. + SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
  25870. + SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
  25871. + SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
  25872. + SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
  25873. + SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
  25874. + SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
  25875. + SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
  25876. + SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
  25877. + SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
  25878. + SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
  25879. + SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
  25880. + SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
  25881. + SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
  25882. + SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
  25883. + SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
  25884. + SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
  25885. + SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
  25886. + SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
  25887. + SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
  25888. + SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
  25889. + SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
  25890. + SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
  25891. + SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
  25892. + SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
  25893. + SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
  25894. + SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
  25895. + SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
  25896. + SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
  25897. + SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
  25898. + SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
  25899. + SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
  25900. + SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
  25901. + SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
  25902. + SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
  25903. + SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
  25904. + SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
  25905. + SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
  25906. + SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
  25907. + SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
  25908. + SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
  25909. + SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
  25910. + SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
  25911. + SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
  25912. + SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
  25913. + SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
  25914. + SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
  25915. + SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
  25916. + SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
  25917. + SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
  25918. + SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
  25919. + SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25920. + SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25921. + SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
  25922. + SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25923. + SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  25924. + SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
  25925. + SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25926. + SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25927. + SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
  25928. + SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25929. + SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
  25930. + SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
  25931. + SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
  25932. + SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
  25933. + SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
  25934. + SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
  25935. + SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
  25936. + SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
  25937. + SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
  25938. + SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
  25939. + SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
  25940. + SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
  25941. + SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
  25942. + SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
  25943. + SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
  25944. + SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
  25945. + SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
  25946. + SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
  25947. + SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
  25948. + SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
  25949. + SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
  25950. + SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
  25951. + SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
  25952. + SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
  25953. + SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
  25954. + SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
  25955. + SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
  25956. + SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
  25957. + SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
  25958. + SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
  25959. + SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
  25960. + SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
  25961. + SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
  25962. + SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
  25963. + SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
  25964. + SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
  25965. + SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
  25966. + SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
  25967. + SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
  25968. + SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
  25969. + SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
  25970. + SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
  25971. + SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
  25972. + SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
  25973. + SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
  25974. + SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
  25975. + SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
  25976. + SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
  25977. + SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
  25978. + SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
  25979. + SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
  25980. + SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25981. + SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25982. + SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
  25983. + SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
  25984. + SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25985. + SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25986. + SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  25987. + SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
  25988. + SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
  25989. + SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
  25990. + SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
  25991. + SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
  25992. + SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
  25993. + SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
  25994. + SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
  25995. + SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
  25996. + SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
  25997. + SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
  25998. + SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
  25999. + SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
  26000. + SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
  26001. + SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
  26002. + SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
  26003. + SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
  26004. + SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
  26005. + SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
  26006. + SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26007. + SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26008. + SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26009. + SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
  26010. + SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
  26011. + SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26012. + SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26013. + SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26014. + SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26015. + SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26016. + SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26017. + SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26018. + SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26019. + SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26020. + SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26021. + SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
  26022. + SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26023. + SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26024. + SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26025. + SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26026. + SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26027. + SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26028. + SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26029. + SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26030. + SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26031. + SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26032. + SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
  26033. + SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26034. + SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26035. + SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26036. + SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26037. + SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
  26038. + SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
  26039. + SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
  26040. + SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
  26041. + SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
  26042. + SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
  26043. + SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
  26044. + SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26045. + SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26046. + SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26047. + SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
  26048. + SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26049. + SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26050. + SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26051. + SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26052. + SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
  26053. + SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26054. + SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
  26055. + SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26056. + SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26057. + SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
  26058. + SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
  26059. + SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
  26060. + SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
  26061. + SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
  26062. + SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
  26063. + SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
  26064. + SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
  26065. + SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
  26066. + SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
  26067. + SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
  26068. + SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
  26069. + SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
  26070. + SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
  26071. + SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
  26072. + SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
  26073. + SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
  26074. + SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
  26075. + SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
  26076. + SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
  26077. + SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
  26078. + SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
  26079. + SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
  26080. + SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
  26081. + SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
  26082. + SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
  26083. + SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
  26084. + SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
  26085. + SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
  26086. + SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
  26087. + SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
  26088. + SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
  26089. + SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
  26090. + SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
  26091. + SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
  26092. + SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
  26093. + SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
  26094. + SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
  26095. + SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
  26096. + SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
  26097. + SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
  26098. + SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
  26099. + SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
  26100. + SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
  26101. + SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
  26102. + SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
  26103. + SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
  26104. + SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
  26105. + SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
  26106. + SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
  26107. + SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
  26108. + SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
  26109. + SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
  26110. + SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
  26111. + SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
  26112. + SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
  26113. + SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
  26114. + SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
  26115. + SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
  26116. + SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
  26117. + SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
  26118. + SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
  26119. + SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
  26120. + SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
  26121. + SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
  26122. + SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
  26123. + SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
  26124. + SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
  26125. + SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
  26126. + SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
  26127. + SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
  26128. + SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
  26129. + SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
  26130. + SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
  26131. + SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
  26132. + SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
  26133. + SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
  26134. + SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
  26135. + SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
  26136. + SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
  26137. + SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
  26138. + SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
  26139. + SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
  26140. + SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
  26141. + SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
  26142. + SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
  26143. + SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
  26144. + SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
  26145. + SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
  26146. + SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
  26147. + SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
  26148. + SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
  26149. + SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
  26150. + SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
  26151. + SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
  26152. + SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
  26153. + SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
  26154. + SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
  26155. + SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
  26156. + SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
  26157. + SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
  26158. + SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
  26159. + SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
  26160. + SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
  26161. + SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
  26162. + SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
  26163. + SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
  26164. + SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
  26165. + SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
  26166. + SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
  26167. + SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
  26168. + SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
  26169. + SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
  26170. + SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
  26171. + SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
  26172. + SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
  26173. + SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
  26174. + SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
  26175. + SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
  26176. + SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
  26177. + SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
  26178. + SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
  26179. + SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
  26180. + SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
  26181. + SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
  26182. + SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
  26183. + SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
  26184. + SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
  26185. + SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
  26186. + SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
  26187. + SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
  26188. + SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
  26189. + SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
  26190. + SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
  26191. + SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
  26192. + SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
  26193. + SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
  26194. + SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
  26195. + SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
  26196. + SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
  26197. + SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
  26198. + SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
  26199. + SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
  26200. + SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
  26201. + SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
  26202. + SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
  26203. + SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
  26204. + SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
  26205. + SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
  26206. + SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
  26207. + SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
  26208. + SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
  26209. + SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
  26210. + SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
  26211. + SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
  26212. + SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
  26213. + SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
  26214. + SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
  26215. + SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
  26216. + SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
  26217. + SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
  26218. + SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
  26219. + SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
  26220. + SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
  26221. + SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
  26222. + SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
  26223. + SYNTAX_FP(FADD, 3),
  26224. + SYNTAX_FP(FSUB, 3),
  26225. + SYNTAX_FP(FMAC, 3),
  26226. + SYNTAX_FP(FNMAC, 3),
  26227. + SYNTAX_FP(FMSC, 3),
  26228. + SYNTAX_FP(FNMSC, 3),
  26229. + SYNTAX_FP(FMUL, 3),
  26230. + SYNTAX_FP(FNMUL, 3),
  26231. + SYNTAX_FP(FNEG, 2),
  26232. + SYNTAX_FP(FABS, 2),
  26233. + SYNTAX_FP(FCMP, 2),
  26234. + {
  26235. + AVR32_SYNTAX_FMOV1_S,
  26236. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26237. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
  26238. + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
  26239. + 2,
  26240. + {
  26241. + AVR32_OPERAND_FPREG_S,
  26242. + AVR32_OPERAND_FPREG_S,
  26243. + },
  26244. + },
  26245. + {
  26246. + AVR32_SYNTAX_FMOV1_D,
  26247. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26248. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
  26249. + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
  26250. + 2,
  26251. + {
  26252. + AVR32_OPERAND_FPREG_D,
  26253. + AVR32_OPERAND_FPREG_D,
  26254. + },
  26255. + },
  26256. + {
  26257. + AVR32_SYNTAX_FMOV2_S,
  26258. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26259. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
  26260. + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
  26261. + 2,
  26262. + {
  26263. + AVR32_OPERAND_INTREG,
  26264. + AVR32_OPERAND_FPREG_S,
  26265. + },
  26266. + },
  26267. + {
  26268. + AVR32_SYNTAX_FMOV2_D,
  26269. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26270. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
  26271. + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
  26272. + 2,
  26273. + {
  26274. + AVR32_OPERAND_DWREG,
  26275. + AVR32_OPERAND_FPREG_D,
  26276. + },
  26277. + },
  26278. + {
  26279. + AVR32_SYNTAX_FMOV3_S,
  26280. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26281. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
  26282. + 2,
  26283. + {
  26284. + AVR32_OPERAND_FPREG_S,
  26285. + AVR32_OPERAND_INTREG,
  26286. + },
  26287. + },
  26288. + {
  26289. + AVR32_SYNTAX_FMOV3_D,
  26290. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26291. + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
  26292. + 2,
  26293. + {
  26294. + AVR32_OPERAND_FPREG_D,
  26295. + AVR32_OPERAND_DWREG,
  26296. + },
  26297. + },
  26298. + {
  26299. + AVR32_SYNTAX_FCASTS_D,
  26300. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26301. + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
  26302. + 2,
  26303. + {
  26304. + AVR32_OPERAND_FPREG_S,
  26305. + AVR32_OPERAND_FPREG_D,
  26306. + },
  26307. + },
  26308. + {
  26309. + AVR32_SYNTAX_FCASTD_S,
  26310. + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
  26311. + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
  26312. + 2,
  26313. + {
  26314. + AVR32_OPERAND_FPREG_D,
  26315. + AVR32_OPERAND_FPREG_S,
  26316. + },
  26317. + },
  26318. + {
  26319. + AVR32_SYNTAX_LDA_W,
  26320. + AVR32_V1, NULL, AVR32_PARSER_LDA,
  26321. + { NULL }, NULL,
  26322. + 2,
  26323. + {
  26324. + AVR32_OPERAND_INTREG,
  26325. + AVR32_OPERAND_SIGNED_CONST,
  26326. + },
  26327. + },
  26328. + {
  26329. + AVR32_SYNTAX_CALL,
  26330. + AVR32_V1, NULL, AVR32_PARSER_CALL,
  26331. + { NULL }, NULL,
  26332. + 1,
  26333. + {
  26334. + AVR32_OPERAND_JMPLABEL,
  26335. + },
  26336. + },
  26337. + {
  26338. + AVR32_SYNTAX_PICOSVMAC0,
  26339. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
  26340. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
  26341. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
  26342. + {
  26343. + AVR32_OPERAND_PICO_OUT0,
  26344. + AVR32_OPERAND_PICO_IN,
  26345. + AVR32_OPERAND_PICO_IN,
  26346. + AVR32_OPERAND_PICO_IN,
  26347. + },
  26348. + },
  26349. + {
  26350. + AVR32_SYNTAX_PICOSVMAC1,
  26351. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
  26352. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
  26353. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
  26354. + {
  26355. + AVR32_OPERAND_PICO_OUT1,
  26356. + AVR32_OPERAND_PICO_IN,
  26357. + AVR32_OPERAND_PICO_IN,
  26358. + AVR32_OPERAND_PICO_IN,
  26359. + },
  26360. + },
  26361. + {
  26362. + AVR32_SYNTAX_PICOSVMAC2,
  26363. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
  26364. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
  26365. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
  26366. + {
  26367. + AVR32_OPERAND_PICO_OUT2,
  26368. + AVR32_OPERAND_PICO_IN,
  26369. + AVR32_OPERAND_PICO_IN,
  26370. + AVR32_OPERAND_PICO_IN,
  26371. + },
  26372. + },
  26373. + {
  26374. + AVR32_SYNTAX_PICOSVMAC3,
  26375. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
  26376. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
  26377. + NULL, 4,
  26378. + {
  26379. + AVR32_OPERAND_PICO_OUT3,
  26380. + AVR32_OPERAND_PICO_IN,
  26381. + AVR32_OPERAND_PICO_IN,
  26382. + AVR32_OPERAND_PICO_IN,
  26383. + },
  26384. + },
  26385. + {
  26386. + AVR32_SYNTAX_PICOSVMUL0,
  26387. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
  26388. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
  26389. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
  26390. + {
  26391. + AVR32_OPERAND_PICO_OUT0,
  26392. + AVR32_OPERAND_PICO_IN,
  26393. + AVR32_OPERAND_PICO_IN,
  26394. + AVR32_OPERAND_PICO_IN,
  26395. + },
  26396. + },
  26397. + {
  26398. + AVR32_SYNTAX_PICOSVMUL1,
  26399. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
  26400. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
  26401. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
  26402. + {
  26403. + AVR32_OPERAND_PICO_OUT1,
  26404. + AVR32_OPERAND_PICO_IN,
  26405. + AVR32_OPERAND_PICO_IN,
  26406. + AVR32_OPERAND_PICO_IN,
  26407. + },
  26408. + },
  26409. + {
  26410. + AVR32_SYNTAX_PICOSVMUL2,
  26411. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
  26412. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
  26413. + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
  26414. + {
  26415. + AVR32_OPERAND_PICO_OUT2,
  26416. + AVR32_OPERAND_PICO_IN,
  26417. + AVR32_OPERAND_PICO_IN,
  26418. + AVR32_OPERAND_PICO_IN,
  26419. + },
  26420. + },
  26421. + {
  26422. + AVR32_SYNTAX_PICOSVMUL3,
  26423. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
  26424. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
  26425. + NULL, 4,
  26426. + {
  26427. + AVR32_OPERAND_PICO_OUT3,
  26428. + AVR32_OPERAND_PICO_IN,
  26429. + AVR32_OPERAND_PICO_IN,
  26430. + AVR32_OPERAND_PICO_IN,
  26431. + },
  26432. + },
  26433. + {
  26434. + AVR32_SYNTAX_PICOVMAC0,
  26435. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
  26436. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
  26437. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
  26438. + {
  26439. + AVR32_OPERAND_PICO_OUT0,
  26440. + AVR32_OPERAND_PICO_IN,
  26441. + AVR32_OPERAND_PICO_IN,
  26442. + AVR32_OPERAND_PICO_IN,
  26443. + },
  26444. + },
  26445. + {
  26446. + AVR32_SYNTAX_PICOVMAC1,
  26447. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
  26448. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
  26449. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
  26450. + {
  26451. + AVR32_OPERAND_PICO_OUT1,
  26452. + AVR32_OPERAND_PICO_IN,
  26453. + AVR32_OPERAND_PICO_IN,
  26454. + AVR32_OPERAND_PICO_IN,
  26455. + },
  26456. + },
  26457. + {
  26458. + AVR32_SYNTAX_PICOVMAC2,
  26459. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
  26460. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
  26461. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
  26462. + {
  26463. + AVR32_OPERAND_PICO_OUT2,
  26464. + AVR32_OPERAND_PICO_IN,
  26465. + AVR32_OPERAND_PICO_IN,
  26466. + AVR32_OPERAND_PICO_IN,
  26467. + },
  26468. + },
  26469. + {
  26470. + AVR32_SYNTAX_PICOVMAC3,
  26471. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
  26472. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
  26473. + NULL, 4,
  26474. + {
  26475. + AVR32_OPERAND_PICO_OUT3,
  26476. + AVR32_OPERAND_PICO_IN,
  26477. + AVR32_OPERAND_PICO_IN,
  26478. + AVR32_OPERAND_PICO_IN,
  26479. + },
  26480. + },
  26481. + {
  26482. + AVR32_SYNTAX_PICOVMUL0,
  26483. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
  26484. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
  26485. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
  26486. + {
  26487. + AVR32_OPERAND_PICO_OUT0,
  26488. + AVR32_OPERAND_PICO_IN,
  26489. + AVR32_OPERAND_PICO_IN,
  26490. + AVR32_OPERAND_PICO_IN,
  26491. + },
  26492. + },
  26493. + {
  26494. + AVR32_SYNTAX_PICOVMUL1,
  26495. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
  26496. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
  26497. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
  26498. + {
  26499. + AVR32_OPERAND_PICO_OUT1,
  26500. + AVR32_OPERAND_PICO_IN,
  26501. + AVR32_OPERAND_PICO_IN,
  26502. + AVR32_OPERAND_PICO_IN,
  26503. + },
  26504. + },
  26505. + {
  26506. + AVR32_SYNTAX_PICOVMUL2,
  26507. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
  26508. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
  26509. + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
  26510. + {
  26511. + AVR32_OPERAND_PICO_OUT2,
  26512. + AVR32_OPERAND_PICO_IN,
  26513. + AVR32_OPERAND_PICO_IN,
  26514. + AVR32_OPERAND_PICO_IN,
  26515. + },
  26516. + },
  26517. + {
  26518. + AVR32_SYNTAX_PICOVMUL3,
  26519. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
  26520. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
  26521. + NULL, 4,
  26522. + {
  26523. + AVR32_OPERAND_PICO_OUT3,
  26524. + AVR32_OPERAND_PICO_IN,
  26525. + AVR32_OPERAND_PICO_IN,
  26526. + AVR32_OPERAND_PICO_IN,
  26527. + },
  26528. + },
  26529. + {
  26530. + AVR32_SYNTAX_PICOLD_D2,
  26531. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
  26532. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
  26533. + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
  26534. + {
  26535. + AVR32_OPERAND_PICO_REG_D,
  26536. + AVR32_OPERAND_INTREG_PREDEC,
  26537. + },
  26538. + },
  26539. + {
  26540. + AVR32_SYNTAX_PICOLD_D3,
  26541. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
  26542. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
  26543. + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
  26544. + {
  26545. + AVR32_OPERAND_PICO_REG_D,
  26546. + AVR32_OPERAND_INTREG_INDEX,
  26547. + },
  26548. + },
  26549. + {
  26550. + AVR32_SYNTAX_PICOLD_D1,
  26551. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
  26552. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
  26553. + NULL, 2,
  26554. + {
  26555. + AVR32_OPERAND_PICO_REG_D,
  26556. + AVR32_OPERAND_INTREG_UDISP_W,
  26557. + },
  26558. + },
  26559. + {
  26560. + AVR32_SYNTAX_PICOLD_W2,
  26561. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
  26562. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
  26563. + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
  26564. + {
  26565. + AVR32_OPERAND_PICO_REG_W,
  26566. + AVR32_OPERAND_INTREG_PREDEC,
  26567. + },
  26568. + },
  26569. + {
  26570. + AVR32_SYNTAX_PICOLD_W3,
  26571. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
  26572. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
  26573. + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
  26574. + {
  26575. + AVR32_OPERAND_PICO_REG_W,
  26576. + AVR32_OPERAND_INTREG_INDEX,
  26577. + },
  26578. + },
  26579. + {
  26580. + AVR32_SYNTAX_PICOLD_W1,
  26581. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
  26582. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
  26583. + NULL, 2,
  26584. + {
  26585. + AVR32_OPERAND_PICO_REG_W,
  26586. + AVR32_OPERAND_INTREG_UDISP_W,
  26587. + },
  26588. + },
  26589. + {
  26590. + AVR32_SYNTAX_PICOLDM_D,
  26591. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
  26592. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
  26593. + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
  26594. + {
  26595. + AVR32_OPERAND_INTREG,
  26596. + AVR32_OPERAND_PICO_REGLIST_D,
  26597. + },
  26598. + },
  26599. + {
  26600. + AVR32_SYNTAX_PICOLDM_D_PU,
  26601. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
  26602. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
  26603. + NULL, -2,
  26604. + {
  26605. + AVR32_OPERAND_INTREG_POSTINC,
  26606. + AVR32_OPERAND_PICO_REGLIST_D,
  26607. + },
  26608. + },
  26609. + {
  26610. + AVR32_SYNTAX_PICOLDM_W,
  26611. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
  26612. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
  26613. + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
  26614. + {
  26615. + AVR32_OPERAND_INTREG,
  26616. + AVR32_OPERAND_PICO_REGLIST_W,
  26617. + },
  26618. + },
  26619. + {
  26620. + AVR32_SYNTAX_PICOLDM_W_PU,
  26621. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
  26622. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
  26623. + NULL, -2,
  26624. + {
  26625. + AVR32_OPERAND_INTREG_POSTINC,
  26626. + AVR32_OPERAND_PICO_REGLIST_W,
  26627. + },
  26628. + },
  26629. + {
  26630. + AVR32_SYNTAX_PICOMV_D1,
  26631. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
  26632. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
  26633. + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
  26634. + {
  26635. + AVR32_OPERAND_DWREG,
  26636. + AVR32_OPERAND_PICO_REG_D,
  26637. + },
  26638. + },
  26639. + {
  26640. + AVR32_SYNTAX_PICOMV_D2,
  26641. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
  26642. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
  26643. + NULL, 2,
  26644. + {
  26645. + AVR32_OPERAND_PICO_REG_D,
  26646. + AVR32_OPERAND_DWREG,
  26647. + },
  26648. + },
  26649. + {
  26650. + AVR32_SYNTAX_PICOMV_W1,
  26651. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
  26652. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
  26653. + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
  26654. + {
  26655. + AVR32_OPERAND_INTREG,
  26656. + AVR32_OPERAND_PICO_REG_W,
  26657. + },
  26658. + },
  26659. + {
  26660. + AVR32_SYNTAX_PICOMV_W2,
  26661. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
  26662. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
  26663. + NULL, 2,
  26664. + {
  26665. + AVR32_OPERAND_PICO_REG_W,
  26666. + AVR32_OPERAND_INTREG,
  26667. + },
  26668. + },
  26669. + {
  26670. + AVR32_SYNTAX_PICOST_D2,
  26671. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
  26672. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
  26673. + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
  26674. + {
  26675. + AVR32_OPERAND_INTREG_POSTINC,
  26676. + AVR32_OPERAND_PICO_REG_D,
  26677. + },
  26678. + },
  26679. + {
  26680. + AVR32_SYNTAX_PICOST_D3,
  26681. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
  26682. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
  26683. + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
  26684. + {
  26685. + AVR32_OPERAND_INTREG_INDEX,
  26686. + AVR32_OPERAND_PICO_REG_D,
  26687. + },
  26688. + },
  26689. + {
  26690. + AVR32_SYNTAX_PICOST_D1,
  26691. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
  26692. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
  26693. + NULL, 2,
  26694. + {
  26695. + AVR32_OPERAND_INTREG_UDISP_W,
  26696. + AVR32_OPERAND_PICO_REG_D,
  26697. + },
  26698. + },
  26699. + {
  26700. + AVR32_SYNTAX_PICOST_W2,
  26701. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
  26702. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
  26703. + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
  26704. + {
  26705. + AVR32_OPERAND_INTREG_POSTINC,
  26706. + AVR32_OPERAND_PICO_REG_W,
  26707. + },
  26708. + },
  26709. + {
  26710. + AVR32_SYNTAX_PICOST_W3,
  26711. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
  26712. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
  26713. + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
  26714. + {
  26715. + AVR32_OPERAND_INTREG_INDEX,
  26716. + AVR32_OPERAND_PICO_REG_W,
  26717. + },
  26718. + },
  26719. + {
  26720. + AVR32_SYNTAX_PICOST_W1,
  26721. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
  26722. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
  26723. + NULL, 2,
  26724. + {
  26725. + AVR32_OPERAND_INTREG_UDISP_W,
  26726. + AVR32_OPERAND_PICO_REG_W,
  26727. + },
  26728. + },
  26729. + {
  26730. + AVR32_SYNTAX_PICOSTM_D,
  26731. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
  26732. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
  26733. + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
  26734. + {
  26735. + AVR32_OPERAND_INTREG,
  26736. + AVR32_OPERAND_PICO_REGLIST_D,
  26737. + },
  26738. + },
  26739. + {
  26740. + AVR32_SYNTAX_PICOSTM_D_PU,
  26741. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
  26742. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
  26743. + NULL, -2,
  26744. + {
  26745. + AVR32_OPERAND_INTREG_PREDEC,
  26746. + AVR32_OPERAND_PICO_REGLIST_D,
  26747. + },
  26748. + },
  26749. + {
  26750. + AVR32_SYNTAX_PICOSTM_W,
  26751. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
  26752. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
  26753. + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
  26754. + {
  26755. + AVR32_OPERAND_INTREG,
  26756. + AVR32_OPERAND_PICO_REGLIST_W,
  26757. + },
  26758. + },
  26759. + {
  26760. + AVR32_SYNTAX_PICOSTM_W_PU,
  26761. + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
  26762. + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
  26763. + NULL, -2,
  26764. + {
  26765. + AVR32_OPERAND_INTREG_PREDEC,
  26766. + AVR32_OPERAND_PICO_REGLIST_W,
  26767. + },
  26768. + },
  26769. + SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
  26770. + SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
  26771. + SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
  26772. + SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
  26773. + SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
  26774. + SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
  26775. + SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
  26776. + SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
  26777. + SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
  26778. + SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
  26779. + SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
  26780. + SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
  26781. + SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
  26782. + SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
  26783. + SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
  26784. + SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
  26785. + SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
  26786. + SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
  26787. + SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
  26788. + SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
  26789. + SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
  26790. + SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
  26791. + SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
  26792. + SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
  26793. + SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
  26794. + SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
  26795. + SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
  26796. + SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
  26797. + SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
  26798. + SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
  26799. + SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
  26800. + SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
  26801. + SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
  26802. + SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
  26803. + SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
  26804. + SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
  26805. + SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
  26806. + SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
  26807. + SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
  26808. + SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
  26809. + SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
  26810. + SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
  26811. + SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
  26812. + SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
  26813. + SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
  26814. + SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
  26815. + SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
  26816. + SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
  26817. + SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
  26818. + SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
  26819. + SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
  26820. + SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
  26821. + SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
  26822. + SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
  26823. + SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
  26824. + SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
  26825. + SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
  26826. + SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
  26827. + SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
  26828. + SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
  26829. + SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
  26830. + SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
  26831. + SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
  26832. + SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
  26833. + SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
  26834. + SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
  26835. + SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
  26836. + SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
  26837. + SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
  26838. + SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
  26839. + SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
  26840. + SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
  26841. + SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
  26842. + SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
  26843. + SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
  26844. + SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
  26845. + SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
  26846. + SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
  26847. + SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
  26848. + SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
  26849. + SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
  26850. + SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
  26851. + SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
  26852. + SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
  26853. + SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
  26854. + SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
  26855. + SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
  26856. + SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
  26857. + SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
  26858. + SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
  26859. + SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
  26860. + SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
  26861. + SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
  26862. + SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
  26863. + SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
  26864. + SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
  26865. + SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
  26866. + SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
  26867. + SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
  26868. + SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
  26869. + SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
  26870. + SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
  26871. + SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
  26872. + SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
  26873. + SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
  26874. + SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
  26875. + SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
  26876. + SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
  26877. + SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
  26878. + SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
  26879. + SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
  26880. + SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
  26881. + SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
  26882. + SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
  26883. + SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
  26884. + SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
  26885. + SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
  26886. + SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
  26887. + SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
  26888. + SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
  26889. + SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
  26890. + SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
  26891. + SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
  26892. + SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
  26893. + SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
  26894. + SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
  26895. + SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
  26896. + SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26897. + SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26898. + SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26899. + SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26900. + SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
  26901. + SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
  26902. + SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
  26903. + SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26904. + SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
  26905. + SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26906. + SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
  26907. + SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26908. + SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26909. + SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26910. + SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
  26911. + SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26912. + SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26913. + SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
  26914. + SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26915. + SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26916. + SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26917. + SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26918. + SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
  26919. + SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
  26920. + SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
  26921. + SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26922. + SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
  26923. + SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
  26924. + SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
  26925. + SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26926. + SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26927. + SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26928. + SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
  26929. + SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
  26930. + SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
  26931. + SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
  26932. + SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
  26933. + SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
  26934. + SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
  26935. + SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
  26936. + SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
  26937. + SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
  26938. + SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
  26939. + SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
  26940. + SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
  26941. + SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
  26942. + SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
  26943. + SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
  26944. + SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
  26945. + SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
  26946. + SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
  26947. + SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
  26948. + SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
  26949. + SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
  26950. + SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
  26951. + SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
  26952. + SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
  26953. + SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
  26954. + SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
  26955. + SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
  26956. + SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
  26957. + SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
  26958. + SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
  26959. + SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
  26960. + SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
  26961. + SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
  26962. + SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
  26963. + SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
  26964. + SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
  26965. + SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
  26966. + SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
  26967. + SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
  26968. + SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
  26969. + SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
  26970. + SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
  26971. + SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
  26972. + SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
  26973. + SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
  26974. + SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
  26975. + SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
  26976. + SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
  26977. + SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
  26978. + SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
  26979. + SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
  26980. + SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
  26981. + SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
  26982. + SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
  26983. + SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
  26984. + SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
  26985. + SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
  26986. + SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
  26987. + SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
  26988. + SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
  26989. + SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
  26990. + SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
  26991. + SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
  26992. + SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
  26993. + SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
  26994. + SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
  26995. + SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
  26996. + SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
  26997. + SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
  26998. + SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
  26999. + SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
  27000. + SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
  27001. + SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
  27002. + SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
  27003. + SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
  27004. + SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
  27005. + SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
  27006. + SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
  27007. + SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
  27008. + SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
  27009. + SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
  27010. + SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
  27011. + SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
  27012. + SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
  27013. + SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
  27014. + SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
  27015. + SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
  27016. + SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
  27017. + SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
  27018. + SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
  27019. + SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
  27020. + SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
  27021. + SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
  27022. +
  27023. + };
  27024. +
  27025. +#define NORMAL_MNEMONIC(name, syntax, str) \
  27026. + { \
  27027. + AVR32_MNEMONIC_##name, str, \
  27028. + &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
  27029. + }
  27030. +#define FP_MNEMONIC(name, syntax, str) \
  27031. + NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
  27032. + NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
  27033. +
  27034. +const struct avr32_mnemonic avr32_mnemonic_table[] =
  27035. + {
  27036. + NORMAL_MNEMONIC(ABS, ABS, "abs"),
  27037. + NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
  27038. + NORMAL_MNEMONIC(ACR, ACR, "acr"),
  27039. + NORMAL_MNEMONIC(ADC, ADC, "adc"),
  27040. + NORMAL_MNEMONIC(ADD, ADD1, "add"),
  27041. + NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
  27042. + NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
  27043. + NORMAL_MNEMONIC(AND, AND1, "and"),
  27044. + NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
  27045. + NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
  27046. + NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
  27047. + NORMAL_MNEMONIC(ASR, ASR1, "asr"),
  27048. + NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
  27049. + NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
  27050. + NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
  27051. + NORMAL_MNEMONIC(BLD, BLD, "bld"),
  27052. + NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
  27053. + NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
  27054. + NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
  27055. + NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
  27056. + NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
  27057. + NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
  27058. + NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
  27059. + NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
  27060. + NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
  27061. + NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
  27062. + NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
  27063. + NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
  27064. + NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
  27065. + NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
  27066. + NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
  27067. + NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
  27068. + NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
  27069. + NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
  27070. + NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
  27071. + NORMAL_MNEMONIC(BREV, BREV, "brev"),
  27072. + NORMAL_MNEMONIC(BST, BST, "bst"),
  27073. + NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
  27074. + NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
  27075. + NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
  27076. + NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
  27077. + NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
  27078. + NORMAL_MNEMONIC(CBR, CBR, "cbr"),
  27079. + NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
  27080. + NORMAL_MNEMONIC(COM, COM, "com"),
  27081. + NORMAL_MNEMONIC(COP, COP, "cop"),
  27082. + NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
  27083. + NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
  27084. + NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
  27085. + NORMAL_MNEMONIC(CP, CP_W1, "cp"),
  27086. + NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
  27087. + NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
  27088. + NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
  27089. + NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
  27090. + NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
  27091. + NORMAL_MNEMONIC(EOR, EOR1, "eor"),
  27092. + NORMAL_MNEMONIC(EORL, EORL, "eorl"),
  27093. + NORMAL_MNEMONIC(EORH, EORH, "eorh"),
  27094. + NORMAL_MNEMONIC(FRS, FRS, "frs"),
  27095. + NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
  27096. + NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
  27097. + NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
  27098. + NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
  27099. + NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
  27100. + NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
  27101. + NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
  27102. + NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
  27103. + NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
  27104. + NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
  27105. + NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
  27106. + NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
  27107. + NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
  27108. + NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
  27109. + NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
  27110. + NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
  27111. + NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
  27112. + NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
  27113. + NORMAL_MNEMONIC(LDM, LDM, "ldm"),
  27114. + NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
  27115. + NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
  27116. + NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
  27117. + NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
  27118. + NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
  27119. + NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
  27120. + NORMAL_MNEMONIC(MAC, MAC, "mac"),
  27121. + NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
  27122. + NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
  27123. + NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
  27124. + NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
  27125. + NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
  27126. + NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
  27127. + NORMAL_MNEMONIC(MAX, MAX, "max"),
  27128. + NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
  27129. + NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
  27130. + NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
  27131. + NORMAL_MNEMONIC(MIN, MIN, "min"),
  27132. + NORMAL_MNEMONIC(MOV, MOV3, "mov"),
  27133. + NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
  27134. + NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
  27135. + NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
  27136. + NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
  27137. + NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
  27138. + NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
  27139. + NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
  27140. + NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
  27141. + NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
  27142. + NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
  27143. + NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
  27144. + NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
  27145. + NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
  27146. + NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
  27147. + NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
  27148. + NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
  27149. + NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
  27150. + NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
  27151. + NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
  27152. + NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
  27153. + NORMAL_MNEMONIC(MUL, MUL1, "mul"),
  27154. + NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
  27155. + NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
  27156. + NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
  27157. + NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
  27158. + NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
  27159. + NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
  27160. + NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
  27161. + NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
  27162. + NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
  27163. + NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
  27164. + NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
  27165. + NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
  27166. + NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
  27167. + NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
  27168. + NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
  27169. + NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
  27170. + NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
  27171. + NORMAL_MNEMONIC(NEG, NEG, "neg"),
  27172. + NORMAL_MNEMONIC(NOP, NOP, "nop"),
  27173. + NORMAL_MNEMONIC(OR, OR1, "or"),
  27174. + NORMAL_MNEMONIC(ORH, ORH, "orh"),
  27175. + NORMAL_MNEMONIC(ORL, ORL, "orl"),
  27176. + NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
  27177. + NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
  27178. + NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
  27179. + NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
  27180. + NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
  27181. + NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
  27182. + NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
  27183. + NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
  27184. + NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
  27185. + NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
  27186. + NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
  27187. + NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
  27188. + NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
  27189. + NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
  27190. + NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
  27191. + NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
  27192. + NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
  27193. + NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
  27194. + NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
  27195. + NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
  27196. + NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
  27197. + NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
  27198. + NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
  27199. + NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
  27200. + NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
  27201. + NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
  27202. + NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
  27203. + NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
  27204. + NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
  27205. + NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
  27206. + NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
  27207. + NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
  27208. + NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
  27209. + NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
  27210. + NORMAL_MNEMONIC(POPM, POPM, "popm"),
  27211. + NORMAL_MNEMONIC(PREF, PREF, "pref"),
  27212. + NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
  27213. + NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
  27214. + NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
  27215. + NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
  27216. + NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
  27217. + NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
  27218. + NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
  27219. + NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
  27220. + NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
  27221. + NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
  27222. + NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
  27223. + NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
  27224. + NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
  27225. + NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
  27226. + NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
  27227. + NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
  27228. + NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
  27229. + NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
  27230. + NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
  27231. + NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
  27232. + NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
  27233. + NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
  27234. + NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
  27235. + NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
  27236. + NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
  27237. + NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
  27238. + NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
  27239. + NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
  27240. + NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
  27241. + NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
  27242. + NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
  27243. + NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
  27244. + NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
  27245. + NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
  27246. + NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
  27247. + NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
  27248. + NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
  27249. + NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
  27250. + NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
  27251. + NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
  27252. + NORMAL_MNEMONIC(RET, RETAL, "ret"),
  27253. + NORMAL_MNEMONIC(RETD, RETD, "retd"),
  27254. + NORMAL_MNEMONIC(RETE, RETE, "rete"),
  27255. + NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
  27256. + NORMAL_MNEMONIC(RETS, RETS, "rets"),
  27257. + NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
  27258. + NORMAL_MNEMONIC(ROL, ROL, "rol"),
  27259. + NORMAL_MNEMONIC(ROR, ROR, "ror"),
  27260. + NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
  27261. + NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
  27262. + NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
  27263. + NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
  27264. + NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
  27265. + NORMAL_MNEMONIC(SATS, SATS, "sats"),
  27266. + NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
  27267. + NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
  27268. + NORMAL_MNEMONIC(SATU, SATU, "satu"),
  27269. + NORMAL_MNEMONIC(SBC, SBC, "sbc"),
  27270. + NORMAL_MNEMONIC(SBR, SBR, "sbr"),
  27271. + NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
  27272. + NORMAL_MNEMONIC(SCR, SCR, "scr"),
  27273. + NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
  27274. + NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
  27275. + NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
  27276. + NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
  27277. + NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
  27278. + NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
  27279. + NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
  27280. + NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
  27281. + NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
  27282. + NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
  27283. + NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
  27284. + NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
  27285. + NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
  27286. + NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
  27287. + NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
  27288. + NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
  27289. + NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
  27290. + NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
  27291. + NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
  27292. + NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
  27293. + NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
  27294. + NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
  27295. + NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
  27296. + NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
  27297. + NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
  27298. + NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
  27299. + NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
  27300. + NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
  27301. + NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
  27302. + NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
  27303. + NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
  27304. + NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
  27305. + NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
  27306. + NORMAL_MNEMONIC(STM, STM, "stm"),
  27307. + NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
  27308. + NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
  27309. + NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
  27310. + NORMAL_MNEMONIC(SUB, SUB1, "sub"),
  27311. + NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
  27312. + NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
  27313. + NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
  27314. + NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
  27315. + NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
  27316. + NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
  27317. + NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
  27318. + NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
  27319. + NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
  27320. + NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
  27321. + NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
  27322. + NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
  27323. + NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
  27324. + NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
  27325. + NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
  27326. + NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
  27327. + NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
  27328. + NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
  27329. + NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
  27330. + NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
  27331. + NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
  27332. + NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
  27333. + NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
  27334. + NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
  27335. + NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
  27336. + NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
  27337. + NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
  27338. + NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
  27339. + NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
  27340. + NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
  27341. + NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
  27342. + NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
  27343. + NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
  27344. + NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
  27345. + NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
  27346. + NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
  27347. + NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
  27348. + NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
  27349. + NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
  27350. + NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
  27351. + NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
  27352. + NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
  27353. + NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
  27354. + NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
  27355. + NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
  27356. + NORMAL_MNEMONIC(TST, TST, "tst"),
  27357. + NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
  27358. + NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
  27359. + NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
  27360. + NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
  27361. + FP_MNEMONIC(FADD, FADD, "fadd"),
  27362. + FP_MNEMONIC(FSUB, FSUB, "fsub"),
  27363. + FP_MNEMONIC(FMAC, FMAC, "fmac"),
  27364. + FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
  27365. + FP_MNEMONIC(FMSC, FMSC, "fmsc"),
  27366. + FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
  27367. + FP_MNEMONIC(FMUL, FMUL, "fmul"),
  27368. + FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
  27369. + FP_MNEMONIC(FNEG, FNEG, "fneg"),
  27370. + FP_MNEMONIC(FABS, FABS, "fabs"),
  27371. + FP_MNEMONIC(FCMP, FCMP, "fcmp"),
  27372. + FP_MNEMONIC(FMOV, FMOV1, "fmov"),
  27373. + NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
  27374. + NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
  27375. + NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
  27376. + NORMAL_MNEMONIC(CALL, CALL, "call"),
  27377. + NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
  27378. + NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
  27379. + NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
  27380. + NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
  27381. + NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
  27382. + NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
  27383. + NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
  27384. + NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
  27385. + NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
  27386. + NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
  27387. + NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
  27388. + NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
  27389. + NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
  27390. + NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
  27391. + NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
  27392. + NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
  27393. + NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
  27394. + NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
  27395. + NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
  27396. + NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
  27397. + NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
  27398. + NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
  27399. + NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
  27400. + NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
  27401. + NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
  27402. + NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
  27403. + NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
  27404. + NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
  27405. + NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
  27406. + NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
  27407. + NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
  27408. + NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
  27409. + NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
  27410. + NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
  27411. + NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
  27412. + NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
  27413. + NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
  27414. + NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
  27415. + NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
  27416. + NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
  27417. + NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
  27418. + NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
  27419. + NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
  27420. + NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
  27421. + NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
  27422. + NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
  27423. + NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
  27424. + NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
  27425. + NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
  27426. + NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
  27427. + NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
  27428. + NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
  27429. + NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
  27430. + NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
  27431. + NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
  27432. + NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
  27433. + NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
  27434. + NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
  27435. + NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
  27436. + NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
  27437. + NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
  27438. + NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
  27439. + NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
  27440. + NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
  27441. + NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
  27442. + NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
  27443. + NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
  27444. + NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
  27445. + NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
  27446. + NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
  27447. + NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
  27448. + NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
  27449. + NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
  27450. + NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
  27451. + NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
  27452. + NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
  27453. + NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
  27454. + NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
  27455. + NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
  27456. + NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
  27457. + NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
  27458. + NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
  27459. + NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
  27460. + NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
  27461. + NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
  27462. + NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
  27463. + NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
  27464. + NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
  27465. + NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
  27466. + NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
  27467. + NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
  27468. + NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
  27469. + NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
  27470. + NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
  27471. + NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
  27472. + NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
  27473. + NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
  27474. + NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
  27475. + NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
  27476. + NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
  27477. + NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
  27478. + NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
  27479. + NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
  27480. + NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
  27481. + NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
  27482. + NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
  27483. + NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
  27484. + NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
  27485. + NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
  27486. + NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
  27487. + NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
  27488. + NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
  27489. + NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
  27490. + NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
  27491. + NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
  27492. + NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
  27493. + NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
  27494. + NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
  27495. + NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
  27496. + NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
  27497. + NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
  27498. + NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
  27499. + NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
  27500. + NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
  27501. + NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
  27502. + NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
  27503. + NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
  27504. + NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
  27505. + NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
  27506. + NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
  27507. + NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
  27508. + NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
  27509. + NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
  27510. + NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
  27511. + NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
  27512. + NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
  27513. + NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
  27514. + NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
  27515. + NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
  27516. + NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
  27517. + NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
  27518. + NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
  27519. + NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
  27520. + NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
  27521. + NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
  27522. + NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
  27523. + NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
  27524. + NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
  27525. + NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
  27526. + NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
  27527. + NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
  27528. + NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
  27529. + NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
  27530. + NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
  27531. + NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
  27532. + NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
  27533. + NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
  27534. + NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
  27535. + NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
  27536. + NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
  27537. + NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
  27538. + NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
  27539. + NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
  27540. + NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
  27541. + NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
  27542. + NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
  27543. + NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
  27544. + NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
  27545. + NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
  27546. + NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
  27547. + NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
  27548. + NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
  27549. + NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
  27550. + NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
  27551. + NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
  27552. + NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
  27553. + NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
  27554. + NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
  27555. + NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
  27556. + NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
  27557. + NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
  27558. + NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
  27559. + NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
  27560. + NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
  27561. + NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
  27562. + NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
  27563. + NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
  27564. + NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
  27565. + NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
  27566. + NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
  27567. + NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
  27568. + NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
  27569. + NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
  27570. + NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
  27571. + NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
  27572. + NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
  27573. + NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
  27574. + NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
  27575. + NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
  27576. + NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
  27577. + NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
  27578. + NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
  27579. + NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
  27580. + NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
  27581. + NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
  27582. + NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
  27583. + NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
  27584. + NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
  27585. + NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
  27586. + NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
  27587. + NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
  27588. + NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
  27589. + NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
  27590. + NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
  27591. + NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
  27592. + NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
  27593. + NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
  27594. + NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
  27595. + NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
  27596. + NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
  27597. + NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
  27598. + NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
  27599. + NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
  27600. + NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
  27601. + NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
  27602. + NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
  27603. + NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
  27604. + NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
  27605. + NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
  27606. + NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
  27607. + NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
  27608. + NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
  27609. + NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
  27610. + NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
  27611. + NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
  27612. + NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
  27613. + NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
  27614. + NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
  27615. + NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
  27616. + NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
  27617. + NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
  27618. + NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
  27619. + NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
  27620. + NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
  27621. + NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
  27622. + NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
  27623. + NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
  27624. + NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
  27625. + NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
  27626. +
  27627. + };
  27628. +#undef NORMAL_MNEMONIC
  27629. +#undef ALIAS_MNEMONIC
  27630. +#undef FP_MNEMONIC
  27631. --- /dev/null
  27632. +++ b/opcodes/avr32-opc.h
  27633. @@ -0,0 +1,2370 @@
  27634. +/* Opcode tables for AVR32.
  27635. + Copyright 2005, 2006 Atmel Corporation.
  27636. +
  27637. + Written by Haavard Skinnemoen, Atmel Norway, <[email protected]>
  27638. +
  27639. + This file is part of libopcodes.
  27640. +
  27641. + This program is free software; you can redistribute it and/or
  27642. + modify it under the terms of the GNU General Public License as
  27643. + published by the Free Software Foundation; either version 2 of the
  27644. + License, or (at your option) any later version.
  27645. +
  27646. + This program is distributed in the hope that it will be useful, but
  27647. + WITHOUT ANY WARRANTY; without even the implied warranty of
  27648. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  27649. + General Public License for more details.
  27650. +
  27651. + You should have received a copy of the GNU General Public License
  27652. + along with this program; if not, write to the Free Software
  27653. + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  27654. + 02111-1307, USA. */
  27655. +
  27656. +#include "bfd.h"
  27657. +
  27658. +#define AVR32_MAX_OPERANDS 8
  27659. +#define AVR32_MAX_FIELDS 8
  27660. +
  27661. +#define AVR32_V1 (1 << 1)
  27662. +#define AVR32_SIMD (1 << 2)
  27663. +#define AVR32_DSP (1 << 3)
  27664. +#define AVR32_RMW (1 << 4)
  27665. +#define AVR32_V2 (1 << 5)
  27666. +#define AVR32_FP (1 << 16)
  27667. +#define AVR32_PICO (1 << 17)
  27668. +
  27669. +/* Registers we commonly refer to */
  27670. +#define AVR32_REG_R12 12
  27671. +#define AVR32_REG_SP 13
  27672. +#define AVR32_REG_LR 14
  27673. +#define AVR32_REG_PC 15
  27674. +
  27675. +struct avr32_ifield
  27676. +{
  27677. + int id;
  27678. + unsigned short bitsize;
  27679. + unsigned short shift;
  27680. + unsigned long mask;
  27681. +
  27682. + /* If the value doesn't fit, it will be truncated with no warning */
  27683. + void (*insert)(const struct avr32_ifield *, void *, unsigned long);
  27684. + void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
  27685. +};
  27686. +
  27687. +struct avr32_opcode
  27688. +{
  27689. + int id;
  27690. + int size;
  27691. + unsigned long value;
  27692. + unsigned long mask;
  27693. + const struct avr32_syntax *syntax;
  27694. + bfd_reloc_code_real_type reloc_type;
  27695. + unsigned int nr_fields;
  27696. + /* if relaxable, which field is variable, otherwise -1 */
  27697. + int var_field;
  27698. + const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
  27699. +};
  27700. +
  27701. +struct avr32_alias
  27702. +{
  27703. + int id;
  27704. + const struct avr32_opcode *opc;
  27705. + struct {
  27706. + int is_opindex;
  27707. + unsigned long value;
  27708. + } operand_map[AVR32_MAX_OPERANDS];
  27709. +};
  27710. +
  27711. +struct avr32_syntax
  27712. +{
  27713. + int id;
  27714. + unsigned long isa_flags;
  27715. + const struct avr32_mnemonic *mnemonic;
  27716. + int type;
  27717. + union {
  27718. + const struct avr32_opcode *opc;
  27719. + const struct avr32_alias *alias;
  27720. + } u;
  27721. + const struct avr32_syntax *next;
  27722. + /* negative means "vararg" */
  27723. + int nr_operands;
  27724. + int operand[AVR32_MAX_OPERANDS];
  27725. +};
  27726. +
  27727. +#if 0
  27728. +#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
  27729. +#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
  27730. +#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
  27731. +#endif
  27732. +
  27733. +struct avr32_mnemonic
  27734. +{
  27735. + int id;
  27736. + const char *name;
  27737. + const struct avr32_syntax *syntax;
  27738. +};
  27739. +
  27740. +extern const struct avr32_ifield avr32_ifield_table[];
  27741. +extern struct avr32_opcode avr32_opc_table[];
  27742. +extern const struct avr32_syntax avr32_syntax_table[];
  27743. +extern const struct avr32_alias avr32_alias_table[];
  27744. +extern const struct avr32_mnemonic avr32_mnemonic_table[];
  27745. +
  27746. +extern void avr32_insert_simple(const struct avr32_ifield *field,
  27747. + void *buf, unsigned long value);
  27748. +extern void avr32_insert_bit5c(const struct avr32_ifield *field,
  27749. + void *buf, unsigned long value);
  27750. +extern void avr32_insert_k10(const struct avr32_ifield *field,
  27751. + void *buf, unsigned long value);
  27752. +extern void avr32_insert_k21(const struct avr32_ifield *field,
  27753. + void *buf, unsigned long value);
  27754. +extern void avr32_insert_cpop(const struct avr32_ifield *field,
  27755. + void *buf, unsigned long value);
  27756. +extern void avr32_insert_k12cp(const struct avr32_ifield *field,
  27757. + void *buf, unsigned long value);
  27758. +
  27759. +extern void avr32_extract_simple(const struct avr32_ifield *field,
  27760. + void *buf, unsigned long *value);
  27761. +extern void avr32_extract_bit5c(const struct avr32_ifield *field,
  27762. + void *buf, unsigned long *value);
  27763. +extern void avr32_extract_k10(const struct avr32_ifield *field,
  27764. + void *buf, unsigned long *value);
  27765. +extern void avr32_extract_k21(const struct avr32_ifield *field,
  27766. + void *buf, unsigned long *value);
  27767. +extern void avr32_extract_cpop(const struct avr32_ifield *field,
  27768. + void *buf, unsigned long *value);
  27769. +extern void avr32_extract_k12cp(const struct avr32_ifield *field,
  27770. + void *buf, unsigned long *value);
  27771. +
  27772. +enum avr32_operand_type
  27773. +{
  27774. + AVR32_OPERAND_INTREG, /* just a register */
  27775. + AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
  27776. + AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
  27777. + AVR32_OPERAND_INTREG_LSL, /* register with left shift */
  27778. + AVR32_OPERAND_INTREG_LSR, /* register with right shift */
  27779. + AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
  27780. + AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
  27781. + AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
  27782. + AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
  27783. + AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
  27784. + AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
  27785. + AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
  27786. + AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
  27787. + AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
  27788. + AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
  27789. + AVR32_OPERAND_DWREG, /* Even-numbered register */
  27790. + AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
  27791. + AVR32_OPERAND_SP, /* Just SP */
  27792. + AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
  27793. + AVR32_OPERAND_CPNO,
  27794. + AVR32_OPERAND_CPREG,
  27795. + AVR32_OPERAND_CPREG_D,
  27796. + AVR32_OPERAND_UNSIGNED_CONST,
  27797. + AVR32_OPERAND_UNSIGNED_CONST_W,
  27798. + AVR32_OPERAND_SIGNED_CONST,
  27799. + AVR32_OPERAND_SIGNED_CONST_W,
  27800. + AVR32_OPERAND_JMPLABEL,
  27801. + AVR32_OPERAND_UNSIGNED_NUMBER,
  27802. + AVR32_OPERAND_UNSIGNED_NUMBER_W,
  27803. + AVR32_OPERAND_REGLIST8,
  27804. + AVR32_OPERAND_REGLIST9,
  27805. + AVR32_OPERAND_REGLIST16,
  27806. + AVR32_OPERAND_REGLIST_LDM,
  27807. + AVR32_OPERAND_REGLIST_CP8,
  27808. + AVR32_OPERAND_REGLIST_CPD8,
  27809. + AVR32_OPERAND_RETVAL,
  27810. + AVR32_OPERAND_MCALL,
  27811. + AVR32_OPERAND_JOSPINC,
  27812. + AVR32_OPERAND_COH,
  27813. + AVR32_OPERAND_FPREG_S,
  27814. + AVR32_OPERAND_FPREG_D,
  27815. + AVR32_OPERAND_PICO_REG_W,
  27816. + AVR32_OPERAND_PICO_REG_D,
  27817. + AVR32_OPERAND_PICO_REGLIST_W,
  27818. + AVR32_OPERAND_PICO_REGLIST_D,
  27819. + AVR32_OPERAND_PICO_IN,
  27820. + AVR32_OPERAND_PICO_OUT0,
  27821. + AVR32_OPERAND_PICO_OUT1,
  27822. + AVR32_OPERAND_PICO_OUT2,
  27823. + AVR32_OPERAND_PICO_OUT3,
  27824. + AVR32_OPERAND__END_
  27825. +};
  27826. +#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
  27827. +#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
  27828. +
  27829. +enum avr32_ifield_type
  27830. +{
  27831. + AVR32_IFIELD_RX,
  27832. + AVR32_IFIELD_RY,
  27833. + AVR32_IFIELD_COND4C,
  27834. + AVR32_IFIELD_K8C,
  27835. + AVR32_IFIELD_K7C,
  27836. + AVR32_IFIELD_K5C,
  27837. + AVR32_IFIELD_K3,
  27838. + AVR32_IFIELD_RY_DW,
  27839. + AVR32_IFIELD_COND4E,
  27840. + AVR32_IFIELD_K8E,
  27841. + AVR32_IFIELD_BIT5C,
  27842. + AVR32_IFIELD_COND3,
  27843. + AVR32_IFIELD_K10,
  27844. + AVR32_IFIELD_POPM,
  27845. + AVR32_IFIELD_K2,
  27846. + AVR32_IFIELD_RD_E,
  27847. + AVR32_IFIELD_RD_DW,
  27848. + AVR32_IFIELD_X,
  27849. + AVR32_IFIELD_Y,
  27850. + AVR32_IFIELD_X2,
  27851. + AVR32_IFIELD_Y2,
  27852. + AVR32_IFIELD_K5E,
  27853. + AVR32_IFIELD_PART2,
  27854. + AVR32_IFIELD_PART1,
  27855. + AVR32_IFIELD_K16,
  27856. + AVR32_IFIELD_CACHEOP,
  27857. + AVR32_IFIELD_K11,
  27858. + AVR32_IFIELD_K21,
  27859. + AVR32_IFIELD_CPOP,
  27860. + AVR32_IFIELD_CPNO,
  27861. + AVR32_IFIELD_CRD_RI,
  27862. + AVR32_IFIELD_CRX,
  27863. + AVR32_IFIELD_CRY,
  27864. + AVR32_IFIELD_K7E,
  27865. + AVR32_IFIELD_CRD_DW,
  27866. + AVR32_IFIELD_PART1_K12,
  27867. + AVR32_IFIELD_PART2_K12,
  27868. + AVR32_IFIELD_K12,
  27869. + AVR32_IFIELD_S5,
  27870. + AVR32_IFIELD_K5E2,
  27871. + AVR32_IFIELD_K4,
  27872. + AVR32_IFIELD_COND4E2,
  27873. + AVR32_IFIELD_K8E2,
  27874. + AVR32_IFIELD_K6,
  27875. + AVR32_IFIELD_MEM15,
  27876. + AVR32_IFIELD_MEMB5,
  27877. + AVR32_IFIELD_W,
  27878. + AVR32_IFIELD_CM_HL,
  27879. + AVR32_IFIELD_K12CP,
  27880. + AVR32_IFIELD_K9E,
  27881. + AVR32_IFIELD__END_,
  27882. +};
  27883. +#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
  27884. +
  27885. +enum avr32_opc_type
  27886. +{
  27887. + AVR32_OPC_ABS,
  27888. + AVR32_OPC_ACALL,
  27889. + AVR32_OPC_ACR,
  27890. + AVR32_OPC_ADC,
  27891. + AVR32_OPC_ADD1,
  27892. + AVR32_OPC_ADD2,
  27893. + AVR32_OPC_ADDABS,
  27894. + AVR32_OPC_ADDHH_W,
  27895. + AVR32_OPC_AND1,
  27896. + AVR32_OPC_AND2,
  27897. + AVR32_OPC_AND3,
  27898. + AVR32_OPC_ANDH,
  27899. + AVR32_OPC_ANDH_COH,
  27900. + AVR32_OPC_ANDL,
  27901. + AVR32_OPC_ANDL_COH,
  27902. + AVR32_OPC_ANDN,
  27903. + AVR32_OPC_ASR1,
  27904. + AVR32_OPC_ASR3,
  27905. + AVR32_OPC_ASR2,
  27906. + AVR32_OPC_BLD,
  27907. + AVR32_OPC_BREQ1,
  27908. + AVR32_OPC_BRNE1,
  27909. + AVR32_OPC_BRCC1,
  27910. + AVR32_OPC_BRCS1,
  27911. + AVR32_OPC_BRGE1,
  27912. + AVR32_OPC_BRLT1,
  27913. + AVR32_OPC_BRMI1,
  27914. + AVR32_OPC_BRPL1,
  27915. + AVR32_OPC_BREQ2,
  27916. + AVR32_OPC_BRNE2,
  27917. + AVR32_OPC_BRCC2,
  27918. + AVR32_OPC_BRCS2,
  27919. + AVR32_OPC_BRGE2,
  27920. + AVR32_OPC_BRLT2,
  27921. + AVR32_OPC_BRMI2,
  27922. + AVR32_OPC_BRPL2,
  27923. + AVR32_OPC_BRLS,
  27924. + AVR32_OPC_BRGT,
  27925. + AVR32_OPC_BRLE,
  27926. + AVR32_OPC_BRHI,
  27927. + AVR32_OPC_BRVS,
  27928. + AVR32_OPC_BRVC,
  27929. + AVR32_OPC_BRQS,
  27930. + AVR32_OPC_BRAL,
  27931. + AVR32_OPC_BREAKPOINT,
  27932. + AVR32_OPC_BREV,
  27933. + AVR32_OPC_BST,
  27934. + AVR32_OPC_CACHE,
  27935. + AVR32_OPC_CASTS_B,
  27936. + AVR32_OPC_CASTS_H,
  27937. + AVR32_OPC_CASTU_B,
  27938. + AVR32_OPC_CASTU_H,
  27939. + AVR32_OPC_CBR,
  27940. + AVR32_OPC_CLZ,
  27941. + AVR32_OPC_COM,
  27942. + AVR32_OPC_COP,
  27943. + AVR32_OPC_CP_B,
  27944. + AVR32_OPC_CP_H,
  27945. + AVR32_OPC_CP_W1,
  27946. + AVR32_OPC_CP_W2,
  27947. + AVR32_OPC_CP_W3,
  27948. + AVR32_OPC_CPC1,
  27949. + AVR32_OPC_CPC2,
  27950. + AVR32_OPC_CSRF,
  27951. + AVR32_OPC_CSRFCZ,
  27952. + AVR32_OPC_DIVS,
  27953. + AVR32_OPC_DIVU,
  27954. + AVR32_OPC_EOR1,
  27955. + AVR32_OPC_EOR2,
  27956. + AVR32_OPC_EOR3,
  27957. + AVR32_OPC_EORL,
  27958. + AVR32_OPC_EORH,
  27959. + AVR32_OPC_FRS,
  27960. + AVR32_OPC_ICALL,
  27961. + AVR32_OPC_INCJOSP,
  27962. + AVR32_OPC_LD_D1,
  27963. + AVR32_OPC_LD_D2,
  27964. + AVR32_OPC_LD_D3,
  27965. + AVR32_OPC_LD_D5,
  27966. + AVR32_OPC_LD_D4,
  27967. + AVR32_OPC_LD_SB2,
  27968. + AVR32_OPC_LD_SB1,
  27969. + AVR32_OPC_LD_UB1,
  27970. + AVR32_OPC_LD_UB2,
  27971. + AVR32_OPC_LD_UB5,
  27972. + AVR32_OPC_LD_UB3,
  27973. + AVR32_OPC_LD_UB4,
  27974. + AVR32_OPC_LD_SH1,
  27975. + AVR32_OPC_LD_SH2,
  27976. + AVR32_OPC_LD_SH5,
  27977. + AVR32_OPC_LD_SH3,
  27978. + AVR32_OPC_LD_SH4,
  27979. + AVR32_OPC_LD_UH1,
  27980. + AVR32_OPC_LD_UH2,
  27981. + AVR32_OPC_LD_UH5,
  27982. + AVR32_OPC_LD_UH3,
  27983. + AVR32_OPC_LD_UH4,
  27984. + AVR32_OPC_LD_W1,
  27985. + AVR32_OPC_LD_W2,
  27986. + AVR32_OPC_LD_W5,
  27987. + AVR32_OPC_LD_W6,
  27988. + AVR32_OPC_LD_W3,
  27989. + AVR32_OPC_LD_W4,
  27990. + AVR32_OPC_LDC_D1,
  27991. + AVR32_OPC_LDC_D2,
  27992. + AVR32_OPC_LDC_D3,
  27993. + AVR32_OPC_LDC_W1,
  27994. + AVR32_OPC_LDC_W2,
  27995. + AVR32_OPC_LDC_W3,
  27996. + AVR32_OPC_LDC0_D,
  27997. + AVR32_OPC_LDC0_W,
  27998. + AVR32_OPC_LDCM_D,
  27999. + AVR32_OPC_LDCM_D_PU,
  28000. + AVR32_OPC_LDCM_W,
  28001. + AVR32_OPC_LDCM_W_PU,
  28002. + AVR32_OPC_LDDPC,
  28003. + AVR32_OPC_LDDPC_EXT,
  28004. + AVR32_OPC_LDDSP,
  28005. + AVR32_OPC_LDINS_B,
  28006. + AVR32_OPC_LDINS_H,
  28007. + AVR32_OPC_LDM,
  28008. + AVR32_OPC_LDMTS,
  28009. + AVR32_OPC_LDMTS_PU,
  28010. + AVR32_OPC_LDSWP_SH,
  28011. + AVR32_OPC_LDSWP_UH,
  28012. + AVR32_OPC_LDSWP_W,
  28013. + AVR32_OPC_LSL1,
  28014. + AVR32_OPC_LSL3,
  28015. + AVR32_OPC_LSL2,
  28016. + AVR32_OPC_LSR1,
  28017. + AVR32_OPC_LSR3,
  28018. + AVR32_OPC_LSR2,
  28019. + AVR32_OPC_MAC,
  28020. + AVR32_OPC_MACHH_D,
  28021. + AVR32_OPC_MACHH_W,
  28022. + AVR32_OPC_MACS_D,
  28023. + AVR32_OPC_MACSATHH_W,
  28024. + AVR32_OPC_MACUD,
  28025. + AVR32_OPC_MACWH_D,
  28026. + AVR32_OPC_MAX,
  28027. + AVR32_OPC_MCALL,
  28028. + AVR32_OPC_MFDR,
  28029. + AVR32_OPC_MFSR,
  28030. + AVR32_OPC_MIN,
  28031. + AVR32_OPC_MOV3,
  28032. + AVR32_OPC_MOV1,
  28033. + AVR32_OPC_MOV2,
  28034. + AVR32_OPC_MOVEQ1,
  28035. + AVR32_OPC_MOVNE1,
  28036. + AVR32_OPC_MOVCC1,
  28037. + AVR32_OPC_MOVCS1,
  28038. + AVR32_OPC_MOVGE1,
  28039. + AVR32_OPC_MOVLT1,
  28040. + AVR32_OPC_MOVMI1,
  28041. + AVR32_OPC_MOVPL1,
  28042. + AVR32_OPC_MOVLS1,
  28043. + AVR32_OPC_MOVGT1,
  28044. + AVR32_OPC_MOVLE1,
  28045. + AVR32_OPC_MOVHI1,
  28046. + AVR32_OPC_MOVVS1,
  28047. + AVR32_OPC_MOVVC1,
  28048. + AVR32_OPC_MOVQS1,
  28049. + AVR32_OPC_MOVAL1,
  28050. + AVR32_OPC_MOVEQ2,
  28051. + AVR32_OPC_MOVNE2,
  28052. + AVR32_OPC_MOVCC2,
  28053. + AVR32_OPC_MOVCS2,
  28054. + AVR32_OPC_MOVGE2,
  28055. + AVR32_OPC_MOVLT2,
  28056. + AVR32_OPC_MOVMI2,
  28057. + AVR32_OPC_MOVPL2,
  28058. + AVR32_OPC_MOVLS2,
  28059. + AVR32_OPC_MOVGT2,
  28060. + AVR32_OPC_MOVLE2,
  28061. + AVR32_OPC_MOVHI2,
  28062. + AVR32_OPC_MOVVS2,
  28063. + AVR32_OPC_MOVVC2,
  28064. + AVR32_OPC_MOVQS2,
  28065. + AVR32_OPC_MOVAL2,
  28066. + AVR32_OPC_MTDR,
  28067. + AVR32_OPC_MTSR,
  28068. + AVR32_OPC_MUL1,
  28069. + AVR32_OPC_MUL2,
  28070. + AVR32_OPC_MUL3,
  28071. + AVR32_OPC_MULHH_W,
  28072. + AVR32_OPC_MULNHH_W,
  28073. + AVR32_OPC_MULNWH_D,
  28074. + AVR32_OPC_MULSD,
  28075. + AVR32_OPC_MULSATHH_H,
  28076. + AVR32_OPC_MULSATHH_W,
  28077. + AVR32_OPC_MULSATRNDHH_H,
  28078. + AVR32_OPC_MULSATRNDWH_W,
  28079. + AVR32_OPC_MULSATWH_W,
  28080. + AVR32_OPC_MULU_D,
  28081. + AVR32_OPC_MULWH_D,
  28082. + AVR32_OPC_MUSFR,
  28083. + AVR32_OPC_MUSTR,
  28084. + AVR32_OPC_MVCR_D,
  28085. + AVR32_OPC_MVCR_W,
  28086. + AVR32_OPC_MVRC_D,
  28087. + AVR32_OPC_MVRC_W,
  28088. + AVR32_OPC_NEG,
  28089. + AVR32_OPC_NOP,
  28090. + AVR32_OPC_OR1,
  28091. + AVR32_OPC_OR2,
  28092. + AVR32_OPC_OR3,
  28093. + AVR32_OPC_ORH,
  28094. + AVR32_OPC_ORL,
  28095. + AVR32_OPC_PABS_SB,
  28096. + AVR32_OPC_PABS_SH,
  28097. + AVR32_OPC_PACKSH_SB,
  28098. + AVR32_OPC_PACKSH_UB,
  28099. + AVR32_OPC_PACKW_SH,
  28100. + AVR32_OPC_PADD_B,
  28101. + AVR32_OPC_PADD_H,
  28102. + AVR32_OPC_PADDH_SH,
  28103. + AVR32_OPC_PADDH_UB,
  28104. + AVR32_OPC_PADDS_SB,
  28105. + AVR32_OPC_PADDS_SH,
  28106. + AVR32_OPC_PADDS_UB,
  28107. + AVR32_OPC_PADDS_UH,
  28108. + AVR32_OPC_PADDSUB_H,
  28109. + AVR32_OPC_PADDSUBH_SH,
  28110. + AVR32_OPC_PADDSUBS_SH,
  28111. + AVR32_OPC_PADDSUBS_UH,
  28112. + AVR32_OPC_PADDX_H,
  28113. + AVR32_OPC_PADDXH_SH,
  28114. + AVR32_OPC_PADDXS_SH,
  28115. + AVR32_OPC_PADDXS_UH,
  28116. + AVR32_OPC_PASR_B,
  28117. + AVR32_OPC_PASR_H,
  28118. + AVR32_OPC_PAVG_SH,
  28119. + AVR32_OPC_PAVG_UB,
  28120. + AVR32_OPC_PLSL_B,
  28121. + AVR32_OPC_PLSL_H,
  28122. + AVR32_OPC_PLSR_B,
  28123. + AVR32_OPC_PLSR_H,
  28124. + AVR32_OPC_PMAX_SH,
  28125. + AVR32_OPC_PMAX_UB,
  28126. + AVR32_OPC_PMIN_SH,
  28127. + AVR32_OPC_PMIN_UB,
  28128. + AVR32_OPC_POPJC,
  28129. + AVR32_OPC_POPM,
  28130. + AVR32_OPC_POPM_E,
  28131. + AVR32_OPC_PREF,
  28132. + AVR32_OPC_PSAD,
  28133. + AVR32_OPC_PSUB_B,
  28134. + AVR32_OPC_PSUB_H,
  28135. + AVR32_OPC_PSUBADD_H,
  28136. + AVR32_OPC_PSUBADDH_SH,
  28137. + AVR32_OPC_PSUBADDS_SH,
  28138. + AVR32_OPC_PSUBADDS_UH,
  28139. + AVR32_OPC_PSUBH_SH,
  28140. + AVR32_OPC_PSUBH_UB,
  28141. + AVR32_OPC_PSUBS_SB,
  28142. + AVR32_OPC_PSUBS_SH,
  28143. + AVR32_OPC_PSUBS_UB,
  28144. + AVR32_OPC_PSUBS_UH,
  28145. + AVR32_OPC_PSUBX_H,
  28146. + AVR32_OPC_PSUBXH_SH,
  28147. + AVR32_OPC_PSUBXS_SH,
  28148. + AVR32_OPC_PSUBXS_UH,
  28149. + AVR32_OPC_PUNPCKSB_H,
  28150. + AVR32_OPC_PUNPCKUB_H,
  28151. + AVR32_OPC_PUSHJC,
  28152. + AVR32_OPC_PUSHM,
  28153. + AVR32_OPC_PUSHM_E,
  28154. + AVR32_OPC_RCALL1,
  28155. + AVR32_OPC_RCALL2,
  28156. + AVR32_OPC_RETEQ,
  28157. + AVR32_OPC_RETNE,
  28158. + AVR32_OPC_RETCC,
  28159. + AVR32_OPC_RETCS,
  28160. + AVR32_OPC_RETGE,
  28161. + AVR32_OPC_RETLT,
  28162. + AVR32_OPC_RETMI,
  28163. + AVR32_OPC_RETPL,
  28164. + AVR32_OPC_RETLS,
  28165. + AVR32_OPC_RETGT,
  28166. + AVR32_OPC_RETLE,
  28167. + AVR32_OPC_RETHI,
  28168. + AVR32_OPC_RETVS,
  28169. + AVR32_OPC_RETVC,
  28170. + AVR32_OPC_RETQS,
  28171. + AVR32_OPC_RETAL,
  28172. + AVR32_OPC_RETD,
  28173. + AVR32_OPC_RETE,
  28174. + AVR32_OPC_RETJ,
  28175. + AVR32_OPC_RETS,
  28176. + AVR32_OPC_RJMP,
  28177. + AVR32_OPC_ROL,
  28178. + AVR32_OPC_ROR,
  28179. + AVR32_OPC_RSUB1,
  28180. + AVR32_OPC_RSUB2,
  28181. + AVR32_OPC_SATADD_H,
  28182. + AVR32_OPC_SATADD_W,
  28183. + AVR32_OPC_SATRNDS,
  28184. + AVR32_OPC_SATRNDU,
  28185. + AVR32_OPC_SATS,
  28186. + AVR32_OPC_SATSUB_H,
  28187. + AVR32_OPC_SATSUB_W1,
  28188. + AVR32_OPC_SATSUB_W2,
  28189. + AVR32_OPC_SATU,
  28190. + AVR32_OPC_SBC,
  28191. + AVR32_OPC_SBR,
  28192. + AVR32_OPC_SCALL,
  28193. + AVR32_OPC_SCR,
  28194. + AVR32_OPC_SLEEP,
  28195. + AVR32_OPC_SREQ,
  28196. + AVR32_OPC_SRNE,
  28197. + AVR32_OPC_SRCC,
  28198. + AVR32_OPC_SRCS,
  28199. + AVR32_OPC_SRGE,
  28200. + AVR32_OPC_SRLT,
  28201. + AVR32_OPC_SRMI,
  28202. + AVR32_OPC_SRPL,
  28203. + AVR32_OPC_SRLS,
  28204. + AVR32_OPC_SRGT,
  28205. + AVR32_OPC_SRLE,
  28206. + AVR32_OPC_SRHI,
  28207. + AVR32_OPC_SRVS,
  28208. + AVR32_OPC_SRVC,
  28209. + AVR32_OPC_SRQS,
  28210. + AVR32_OPC_SRAL,
  28211. + AVR32_OPC_SSRF,
  28212. + AVR32_OPC_ST_B1,
  28213. + AVR32_OPC_ST_B2,
  28214. + AVR32_OPC_ST_B5,
  28215. + AVR32_OPC_ST_B3,
  28216. + AVR32_OPC_ST_B4,
  28217. + AVR32_OPC_ST_D1,
  28218. + AVR32_OPC_ST_D2,
  28219. + AVR32_OPC_ST_D3,
  28220. + AVR32_OPC_ST_D5,
  28221. + AVR32_OPC_ST_D4,
  28222. + AVR32_OPC_ST_H1,
  28223. + AVR32_OPC_ST_H2,
  28224. + AVR32_OPC_ST_H5,
  28225. + AVR32_OPC_ST_H3,
  28226. + AVR32_OPC_ST_H4,
  28227. + AVR32_OPC_ST_W1,
  28228. + AVR32_OPC_ST_W2,
  28229. + AVR32_OPC_ST_W5,
  28230. + AVR32_OPC_ST_W3,
  28231. + AVR32_OPC_ST_W4,
  28232. + AVR32_OPC_STC_D1,
  28233. + AVR32_OPC_STC_D2,
  28234. + AVR32_OPC_STC_D3,
  28235. + AVR32_OPC_STC_W1,
  28236. + AVR32_OPC_STC_W2,
  28237. + AVR32_OPC_STC_W3,
  28238. + AVR32_OPC_STC0_D,
  28239. + AVR32_OPC_STC0_W,
  28240. + AVR32_OPC_STCM_D,
  28241. + AVR32_OPC_STCM_D_PU,
  28242. + AVR32_OPC_STCM_W,
  28243. + AVR32_OPC_STCM_W_PU,
  28244. + AVR32_OPC_STCOND,
  28245. + AVR32_OPC_STDSP,
  28246. + AVR32_OPC_STHH_W2,
  28247. + AVR32_OPC_STHH_W1,
  28248. + AVR32_OPC_STM,
  28249. + AVR32_OPC_STM_PU,
  28250. + AVR32_OPC_STMTS,
  28251. + AVR32_OPC_STMTS_PU,
  28252. + AVR32_OPC_STSWP_H,
  28253. + AVR32_OPC_STSWP_W,
  28254. + AVR32_OPC_SUB1,
  28255. + AVR32_OPC_SUB2,
  28256. + AVR32_OPC_SUB5,
  28257. + AVR32_OPC_SUB3_SP,
  28258. + AVR32_OPC_SUB3,
  28259. + AVR32_OPC_SUB4,
  28260. + AVR32_OPC_SUBEQ,
  28261. + AVR32_OPC_SUBNE,
  28262. + AVR32_OPC_SUBCC,
  28263. + AVR32_OPC_SUBCS,
  28264. + AVR32_OPC_SUBGE,
  28265. + AVR32_OPC_SUBLT,
  28266. + AVR32_OPC_SUBMI,
  28267. + AVR32_OPC_SUBPL,
  28268. + AVR32_OPC_SUBLS,
  28269. + AVR32_OPC_SUBGT,
  28270. + AVR32_OPC_SUBLE,
  28271. + AVR32_OPC_SUBHI,
  28272. + AVR32_OPC_SUBVS,
  28273. + AVR32_OPC_SUBVC,
  28274. + AVR32_OPC_SUBQS,
  28275. + AVR32_OPC_SUBAL,
  28276. + AVR32_OPC_SUBFEQ,
  28277. + AVR32_OPC_SUBFNE,
  28278. + AVR32_OPC_SUBFCC,
  28279. + AVR32_OPC_SUBFCS,
  28280. + AVR32_OPC_SUBFGE,
  28281. + AVR32_OPC_SUBFLT,
  28282. + AVR32_OPC_SUBFMI,
  28283. + AVR32_OPC_SUBFPL,
  28284. + AVR32_OPC_SUBFLS,
  28285. + AVR32_OPC_SUBFGT,
  28286. + AVR32_OPC_SUBFLE,
  28287. + AVR32_OPC_SUBFHI,
  28288. + AVR32_OPC_SUBFVS,
  28289. + AVR32_OPC_SUBFVC,
  28290. + AVR32_OPC_SUBFQS,
  28291. + AVR32_OPC_SUBFAL,
  28292. + AVR32_OPC_SUBHH_W,
  28293. + AVR32_OPC_SWAP_B,
  28294. + AVR32_OPC_SWAP_BH,
  28295. + AVR32_OPC_SWAP_H,
  28296. + AVR32_OPC_SYNC,
  28297. + AVR32_OPC_TLBR,
  28298. + AVR32_OPC_TLBS,
  28299. + AVR32_OPC_TLBW,
  28300. + AVR32_OPC_TNBZ,
  28301. + AVR32_OPC_TST,
  28302. + AVR32_OPC_XCHG,
  28303. + AVR32_OPC_MEMC,
  28304. + AVR32_OPC_MEMS,
  28305. + AVR32_OPC_MEMT,
  28306. + AVR32_OPC_BFEXTS,
  28307. + AVR32_OPC_BFEXTU,
  28308. + AVR32_OPC_BFINS,
  28309. + AVR32_OPC_RSUBEQ,
  28310. + AVR32_OPC_RSUBNE,
  28311. + AVR32_OPC_RSUBCC,
  28312. + AVR32_OPC_RSUBCS,
  28313. + AVR32_OPC_RSUBGE,
  28314. + AVR32_OPC_RSUBLT,
  28315. + AVR32_OPC_RSUBMI,
  28316. + AVR32_OPC_RSUBPL,
  28317. + AVR32_OPC_RSUBLS,
  28318. + AVR32_OPC_RSUBGT,
  28319. + AVR32_OPC_RSUBLE,
  28320. + AVR32_OPC_RSUBHI,
  28321. + AVR32_OPC_RSUBVS,
  28322. + AVR32_OPC_RSUBVC,
  28323. + AVR32_OPC_RSUBQS,
  28324. + AVR32_OPC_RSUBAL,
  28325. + AVR32_OPC_ADDEQ,
  28326. + AVR32_OPC_ADDNE,
  28327. + AVR32_OPC_ADDCC,
  28328. + AVR32_OPC_ADDCS,
  28329. + AVR32_OPC_ADDGE,
  28330. + AVR32_OPC_ADDLT,
  28331. + AVR32_OPC_ADDMI,
  28332. + AVR32_OPC_ADDPL,
  28333. + AVR32_OPC_ADDLS,
  28334. + AVR32_OPC_ADDGT,
  28335. + AVR32_OPC_ADDLE,
  28336. + AVR32_OPC_ADDHI,
  28337. + AVR32_OPC_ADDVS,
  28338. + AVR32_OPC_ADDVC,
  28339. + AVR32_OPC_ADDQS,
  28340. + AVR32_OPC_ADDAL,
  28341. + AVR32_OPC_SUB2EQ,
  28342. + AVR32_OPC_SUB2NE,
  28343. + AVR32_OPC_SUB2CC,
  28344. + AVR32_OPC_SUB2CS,
  28345. + AVR32_OPC_SUB2GE,
  28346. + AVR32_OPC_SUB2LT,
  28347. + AVR32_OPC_SUB2MI,
  28348. + AVR32_OPC_SUB2PL,
  28349. + AVR32_OPC_SUB2LS,
  28350. + AVR32_OPC_SUB2GT,
  28351. + AVR32_OPC_SUB2LE,
  28352. + AVR32_OPC_SUB2HI,
  28353. + AVR32_OPC_SUB2VS,
  28354. + AVR32_OPC_SUB2VC,
  28355. + AVR32_OPC_SUB2QS,
  28356. + AVR32_OPC_SUB2AL,
  28357. + AVR32_OPC_ANDEQ,
  28358. + AVR32_OPC_ANDNE,
  28359. + AVR32_OPC_ANDCC,
  28360. + AVR32_OPC_ANDCS,
  28361. + AVR32_OPC_ANDGE,
  28362. + AVR32_OPC_ANDLT,
  28363. + AVR32_OPC_ANDMI,
  28364. + AVR32_OPC_ANDPL,
  28365. + AVR32_OPC_ANDLS,
  28366. + AVR32_OPC_ANDGT,
  28367. + AVR32_OPC_ANDLE,
  28368. + AVR32_OPC_ANDHI,
  28369. + AVR32_OPC_ANDVS,
  28370. + AVR32_OPC_ANDVC,
  28371. + AVR32_OPC_ANDQS,
  28372. + AVR32_OPC_ANDAL,
  28373. + AVR32_OPC_OREQ,
  28374. + AVR32_OPC_ORNE,
  28375. + AVR32_OPC_ORCC,
  28376. + AVR32_OPC_ORCS,
  28377. + AVR32_OPC_ORGE,
  28378. + AVR32_OPC_ORLT,
  28379. + AVR32_OPC_ORMI,
  28380. + AVR32_OPC_ORPL,
  28381. + AVR32_OPC_ORLS,
  28382. + AVR32_OPC_ORGT,
  28383. + AVR32_OPC_ORLE,
  28384. + AVR32_OPC_ORHI,
  28385. + AVR32_OPC_ORVS,
  28386. + AVR32_OPC_ORVC,
  28387. + AVR32_OPC_ORQS,
  28388. + AVR32_OPC_ORAL,
  28389. + AVR32_OPC_EOREQ,
  28390. + AVR32_OPC_EORNE,
  28391. + AVR32_OPC_EORCC,
  28392. + AVR32_OPC_EORCS,
  28393. + AVR32_OPC_EORGE,
  28394. + AVR32_OPC_EORLT,
  28395. + AVR32_OPC_EORMI,
  28396. + AVR32_OPC_EORPL,
  28397. + AVR32_OPC_EORLS,
  28398. + AVR32_OPC_EORGT,
  28399. + AVR32_OPC_EORLE,
  28400. + AVR32_OPC_EORHI,
  28401. + AVR32_OPC_EORVS,
  28402. + AVR32_OPC_EORVC,
  28403. + AVR32_OPC_EORQS,
  28404. + AVR32_OPC_EORAL,
  28405. + AVR32_OPC_LD_WEQ,
  28406. + AVR32_OPC_LD_WNE,
  28407. + AVR32_OPC_LD_WCC,
  28408. + AVR32_OPC_LD_WCS,
  28409. + AVR32_OPC_LD_WGE,
  28410. + AVR32_OPC_LD_WLT,
  28411. + AVR32_OPC_LD_WMI,
  28412. + AVR32_OPC_LD_WPL,
  28413. + AVR32_OPC_LD_WLS,
  28414. + AVR32_OPC_LD_WGT,
  28415. + AVR32_OPC_LD_WLE,
  28416. + AVR32_OPC_LD_WHI,
  28417. + AVR32_OPC_LD_WVS,
  28418. + AVR32_OPC_LD_WVC,
  28419. + AVR32_OPC_LD_WQS,
  28420. + AVR32_OPC_LD_WAL,
  28421. + AVR32_OPC_LD_SHEQ,
  28422. + AVR32_OPC_LD_SHNE,
  28423. + AVR32_OPC_LD_SHCC,
  28424. + AVR32_OPC_LD_SHCS,
  28425. + AVR32_OPC_LD_SHGE,
  28426. + AVR32_OPC_LD_SHLT,
  28427. + AVR32_OPC_LD_SHMI,
  28428. + AVR32_OPC_LD_SHPL,
  28429. + AVR32_OPC_LD_SHLS,
  28430. + AVR32_OPC_LD_SHGT,
  28431. + AVR32_OPC_LD_SHLE,
  28432. + AVR32_OPC_LD_SHHI,
  28433. + AVR32_OPC_LD_SHVS,
  28434. + AVR32_OPC_LD_SHVC,
  28435. + AVR32_OPC_LD_SHQS,
  28436. + AVR32_OPC_LD_SHAL,
  28437. + AVR32_OPC_LD_UHEQ,
  28438. + AVR32_OPC_LD_UHNE,
  28439. + AVR32_OPC_LD_UHCC,
  28440. + AVR32_OPC_LD_UHCS,
  28441. + AVR32_OPC_LD_UHGE,
  28442. + AVR32_OPC_LD_UHLT,
  28443. + AVR32_OPC_LD_UHMI,
  28444. + AVR32_OPC_LD_UHPL,
  28445. + AVR32_OPC_LD_UHLS,
  28446. + AVR32_OPC_LD_UHGT,
  28447. + AVR32_OPC_LD_UHLE,
  28448. + AVR32_OPC_LD_UHHI,
  28449. + AVR32_OPC_LD_UHVS,
  28450. + AVR32_OPC_LD_UHVC,
  28451. + AVR32_OPC_LD_UHQS,
  28452. + AVR32_OPC_LD_UHAL,
  28453. + AVR32_OPC_LD_SBEQ,
  28454. + AVR32_OPC_LD_SBNE,
  28455. + AVR32_OPC_LD_SBCC,
  28456. + AVR32_OPC_LD_SBCS,
  28457. + AVR32_OPC_LD_SBGE,
  28458. + AVR32_OPC_LD_SBLT,
  28459. + AVR32_OPC_LD_SBMI,
  28460. + AVR32_OPC_LD_SBPL,
  28461. + AVR32_OPC_LD_SBLS,
  28462. + AVR32_OPC_LD_SBGT,
  28463. + AVR32_OPC_LD_SBLE,
  28464. + AVR32_OPC_LD_SBHI,
  28465. + AVR32_OPC_LD_SBVS,
  28466. + AVR32_OPC_LD_SBVC,
  28467. + AVR32_OPC_LD_SBQS,
  28468. + AVR32_OPC_LD_SBAL,
  28469. + AVR32_OPC_LD_UBEQ,
  28470. + AVR32_OPC_LD_UBNE,
  28471. + AVR32_OPC_LD_UBCC,
  28472. + AVR32_OPC_LD_UBCS,
  28473. + AVR32_OPC_LD_UBGE,
  28474. + AVR32_OPC_LD_UBLT,
  28475. + AVR32_OPC_LD_UBMI,
  28476. + AVR32_OPC_LD_UBPL,
  28477. + AVR32_OPC_LD_UBLS,
  28478. + AVR32_OPC_LD_UBGT,
  28479. + AVR32_OPC_LD_UBLE,
  28480. + AVR32_OPC_LD_UBHI,
  28481. + AVR32_OPC_LD_UBVS,
  28482. + AVR32_OPC_LD_UBVC,
  28483. + AVR32_OPC_LD_UBQS,
  28484. + AVR32_OPC_LD_UBAL,
  28485. + AVR32_OPC_ST_WEQ,
  28486. + AVR32_OPC_ST_WNE,
  28487. + AVR32_OPC_ST_WCC,
  28488. + AVR32_OPC_ST_WCS,
  28489. + AVR32_OPC_ST_WGE,
  28490. + AVR32_OPC_ST_WLT,
  28491. + AVR32_OPC_ST_WMI,
  28492. + AVR32_OPC_ST_WPL,
  28493. + AVR32_OPC_ST_WLS,
  28494. + AVR32_OPC_ST_WGT,
  28495. + AVR32_OPC_ST_WLE,
  28496. + AVR32_OPC_ST_WHI,
  28497. + AVR32_OPC_ST_WVS,
  28498. + AVR32_OPC_ST_WVC,
  28499. + AVR32_OPC_ST_WQS,
  28500. + AVR32_OPC_ST_WAL,
  28501. + AVR32_OPC_ST_HEQ,
  28502. + AVR32_OPC_ST_HNE,
  28503. + AVR32_OPC_ST_HCC,
  28504. + AVR32_OPC_ST_HCS,
  28505. + AVR32_OPC_ST_HGE,
  28506. + AVR32_OPC_ST_HLT,
  28507. + AVR32_OPC_ST_HMI,
  28508. + AVR32_OPC_ST_HPL,
  28509. + AVR32_OPC_ST_HLS,
  28510. + AVR32_OPC_ST_HGT,
  28511. + AVR32_OPC_ST_HLE,
  28512. + AVR32_OPC_ST_HHI,
  28513. + AVR32_OPC_ST_HVS,
  28514. + AVR32_OPC_ST_HVC,
  28515. + AVR32_OPC_ST_HQS,
  28516. + AVR32_OPC_ST_HAL,
  28517. + AVR32_OPC_ST_BEQ,
  28518. + AVR32_OPC_ST_BNE,
  28519. + AVR32_OPC_ST_BCC,
  28520. + AVR32_OPC_ST_BCS,
  28521. + AVR32_OPC_ST_BGE,
  28522. + AVR32_OPC_ST_BLT,
  28523. + AVR32_OPC_ST_BMI,
  28524. + AVR32_OPC_ST_BPL,
  28525. + AVR32_OPC_ST_BLS,
  28526. + AVR32_OPC_ST_BGT,
  28527. + AVR32_OPC_ST_BLE,
  28528. + AVR32_OPC_ST_BHI,
  28529. + AVR32_OPC_ST_BVS,
  28530. + AVR32_OPC_ST_BVC,
  28531. + AVR32_OPC_ST_BQS,
  28532. + AVR32_OPC_ST_BAL,
  28533. + AVR32_OPC_MOVH,
  28534. + AVR32_OPC__END_
  28535. +};
  28536. +#define AVR32_NR_OPCODES AVR32_OPC__END_
  28537. +
  28538. +enum avr32_syntax_type
  28539. +{
  28540. + AVR32_SYNTAX_ABS,
  28541. + AVR32_SYNTAX_ACALL,
  28542. + AVR32_SYNTAX_ACR,
  28543. + AVR32_SYNTAX_ADC,
  28544. + AVR32_SYNTAX_ADD1,
  28545. + AVR32_SYNTAX_ADD2,
  28546. + AVR32_SYNTAX_ADDABS,
  28547. + AVR32_SYNTAX_ADDHH_W,
  28548. + AVR32_SYNTAX_AND1,
  28549. + AVR32_SYNTAX_AND2,
  28550. + AVR32_SYNTAX_AND3,
  28551. + AVR32_SYNTAX_ANDH,
  28552. + AVR32_SYNTAX_ANDH_COH,
  28553. + AVR32_SYNTAX_ANDL,
  28554. + AVR32_SYNTAX_ANDL_COH,
  28555. + AVR32_SYNTAX_ANDN,
  28556. + AVR32_SYNTAX_ASR1,
  28557. + AVR32_SYNTAX_ASR3,
  28558. + AVR32_SYNTAX_ASR2,
  28559. + AVR32_SYNTAX_BFEXTS,
  28560. + AVR32_SYNTAX_BFEXTU,
  28561. + AVR32_SYNTAX_BFINS,
  28562. + AVR32_SYNTAX_BLD,
  28563. + AVR32_SYNTAX_BREQ1,
  28564. + AVR32_SYNTAX_BRNE1,
  28565. + AVR32_SYNTAX_BRCC1,
  28566. + AVR32_SYNTAX_BRCS1,
  28567. + AVR32_SYNTAX_BRGE1,
  28568. + AVR32_SYNTAX_BRLT1,
  28569. + AVR32_SYNTAX_BRMI1,
  28570. + AVR32_SYNTAX_BRPL1,
  28571. + AVR32_SYNTAX_BRHS1,
  28572. + AVR32_SYNTAX_BRLO1,
  28573. + AVR32_SYNTAX_BREQ2,
  28574. + AVR32_SYNTAX_BRNE2,
  28575. + AVR32_SYNTAX_BRCC2,
  28576. + AVR32_SYNTAX_BRCS2,
  28577. + AVR32_SYNTAX_BRGE2,
  28578. + AVR32_SYNTAX_BRLT2,
  28579. + AVR32_SYNTAX_BRMI2,
  28580. + AVR32_SYNTAX_BRPL2,
  28581. + AVR32_SYNTAX_BRLS,
  28582. + AVR32_SYNTAX_BRGT,
  28583. + AVR32_SYNTAX_BRLE,
  28584. + AVR32_SYNTAX_BRHI,
  28585. + AVR32_SYNTAX_BRVS,
  28586. + AVR32_SYNTAX_BRVC,
  28587. + AVR32_SYNTAX_BRQS,
  28588. + AVR32_SYNTAX_BRAL,
  28589. + AVR32_SYNTAX_BRHS2,
  28590. + AVR32_SYNTAX_BRLO2,
  28591. + AVR32_SYNTAX_BREAKPOINT,
  28592. + AVR32_SYNTAX_BREV,
  28593. + AVR32_SYNTAX_BST,
  28594. + AVR32_SYNTAX_CACHE,
  28595. + AVR32_SYNTAX_CASTS_B,
  28596. + AVR32_SYNTAX_CASTS_H,
  28597. + AVR32_SYNTAX_CASTU_B,
  28598. + AVR32_SYNTAX_CASTU_H,
  28599. + AVR32_SYNTAX_CBR,
  28600. + AVR32_SYNTAX_CLZ,
  28601. + AVR32_SYNTAX_COM,
  28602. + AVR32_SYNTAX_COP,
  28603. + AVR32_SYNTAX_CP_B,
  28604. + AVR32_SYNTAX_CP_H,
  28605. + AVR32_SYNTAX_CP_W1,
  28606. + AVR32_SYNTAX_CP_W2,
  28607. + AVR32_SYNTAX_CP_W3,
  28608. + AVR32_SYNTAX_CPC1,
  28609. + AVR32_SYNTAX_CPC2,
  28610. + AVR32_SYNTAX_CSRF,
  28611. + AVR32_SYNTAX_CSRFCZ,
  28612. + AVR32_SYNTAX_DIVS,
  28613. + AVR32_SYNTAX_DIVU,
  28614. + AVR32_SYNTAX_EOR1,
  28615. + AVR32_SYNTAX_EOR2,
  28616. + AVR32_SYNTAX_EOR3,
  28617. + AVR32_SYNTAX_EORL,
  28618. + AVR32_SYNTAX_EORH,
  28619. + AVR32_SYNTAX_FRS,
  28620. + AVR32_SYNTAX_ICALL,
  28621. + AVR32_SYNTAX_INCJOSP,
  28622. + AVR32_SYNTAX_LD_D1,
  28623. + AVR32_SYNTAX_LD_D2,
  28624. + AVR32_SYNTAX_LD_D3,
  28625. + AVR32_SYNTAX_LD_D5,
  28626. + AVR32_SYNTAX_LD_D4,
  28627. + AVR32_SYNTAX_LD_SB2,
  28628. + AVR32_SYNTAX_LD_SB1,
  28629. + AVR32_SYNTAX_LD_UB1,
  28630. + AVR32_SYNTAX_LD_UB2,
  28631. + AVR32_SYNTAX_LD_UB5,
  28632. + AVR32_SYNTAX_LD_UB3,
  28633. + AVR32_SYNTAX_LD_UB4,
  28634. + AVR32_SYNTAX_LD_SH1,
  28635. + AVR32_SYNTAX_LD_SH2,
  28636. + AVR32_SYNTAX_LD_SH5,
  28637. + AVR32_SYNTAX_LD_SH3,
  28638. + AVR32_SYNTAX_LD_SH4,
  28639. + AVR32_SYNTAX_LD_UH1,
  28640. + AVR32_SYNTAX_LD_UH2,
  28641. + AVR32_SYNTAX_LD_UH5,
  28642. + AVR32_SYNTAX_LD_UH3,
  28643. + AVR32_SYNTAX_LD_UH4,
  28644. + AVR32_SYNTAX_LD_W1,
  28645. + AVR32_SYNTAX_LD_W2,
  28646. + AVR32_SYNTAX_LD_W5,
  28647. + AVR32_SYNTAX_LD_W6,
  28648. + AVR32_SYNTAX_LD_W3,
  28649. + AVR32_SYNTAX_LD_W4,
  28650. + AVR32_SYNTAX_LDC_D1,
  28651. + AVR32_SYNTAX_LDC_D2,
  28652. + AVR32_SYNTAX_LDC_D3,
  28653. + AVR32_SYNTAX_LDC_W1,
  28654. + AVR32_SYNTAX_LDC_W2,
  28655. + AVR32_SYNTAX_LDC_W3,
  28656. + AVR32_SYNTAX_LDC0_D,
  28657. + AVR32_SYNTAX_LDC0_W,
  28658. + AVR32_SYNTAX_LDCM_D,
  28659. + AVR32_SYNTAX_LDCM_D_PU,
  28660. + AVR32_SYNTAX_LDCM_W,
  28661. + AVR32_SYNTAX_LDCM_W_PU,
  28662. + AVR32_SYNTAX_LDDPC,
  28663. + AVR32_SYNTAX_LDDPC_EXT,
  28664. + AVR32_SYNTAX_LDDSP,
  28665. + AVR32_SYNTAX_LDINS_B,
  28666. + AVR32_SYNTAX_LDINS_H,
  28667. + AVR32_SYNTAX_LDM,
  28668. + AVR32_SYNTAX_LDMTS,
  28669. + AVR32_SYNTAX_LDMTS_PU,
  28670. + AVR32_SYNTAX_LDSWP_SH,
  28671. + AVR32_SYNTAX_LDSWP_UH,
  28672. + AVR32_SYNTAX_LDSWP_W,
  28673. + AVR32_SYNTAX_LSL1,
  28674. + AVR32_SYNTAX_LSL3,
  28675. + AVR32_SYNTAX_LSL2,
  28676. + AVR32_SYNTAX_LSR1,
  28677. + AVR32_SYNTAX_LSR3,
  28678. + AVR32_SYNTAX_LSR2,
  28679. + AVR32_SYNTAX_MAC,
  28680. + AVR32_SYNTAX_MACHH_D,
  28681. + AVR32_SYNTAX_MACHH_W,
  28682. + AVR32_SYNTAX_MACS_D,
  28683. + AVR32_SYNTAX_MACSATHH_W,
  28684. + AVR32_SYNTAX_MACUD,
  28685. + AVR32_SYNTAX_MACWH_D,
  28686. + AVR32_SYNTAX_MAX,
  28687. + AVR32_SYNTAX_MCALL,
  28688. + AVR32_SYNTAX_MFDR,
  28689. + AVR32_SYNTAX_MFSR,
  28690. + AVR32_SYNTAX_MIN,
  28691. + AVR32_SYNTAX_MOV3,
  28692. + AVR32_SYNTAX_MOV1,
  28693. + AVR32_SYNTAX_MOV2,
  28694. + AVR32_SYNTAX_MOVEQ1,
  28695. + AVR32_SYNTAX_MOVNE1,
  28696. + AVR32_SYNTAX_MOVCC1,
  28697. + AVR32_SYNTAX_MOVCS1,
  28698. + AVR32_SYNTAX_MOVGE1,
  28699. + AVR32_SYNTAX_MOVLT1,
  28700. + AVR32_SYNTAX_MOVMI1,
  28701. + AVR32_SYNTAX_MOVPL1,
  28702. + AVR32_SYNTAX_MOVLS1,
  28703. + AVR32_SYNTAX_MOVGT1,
  28704. + AVR32_SYNTAX_MOVLE1,
  28705. + AVR32_SYNTAX_MOVHI1,
  28706. + AVR32_SYNTAX_MOVVS1,
  28707. + AVR32_SYNTAX_MOVVC1,
  28708. + AVR32_SYNTAX_MOVQS1,
  28709. + AVR32_SYNTAX_MOVAL1,
  28710. + AVR32_SYNTAX_MOVHS1,
  28711. + AVR32_SYNTAX_MOVLO1,
  28712. + AVR32_SYNTAX_MOVEQ2,
  28713. + AVR32_SYNTAX_MOVNE2,
  28714. + AVR32_SYNTAX_MOVCC2,
  28715. + AVR32_SYNTAX_MOVCS2,
  28716. + AVR32_SYNTAX_MOVGE2,
  28717. + AVR32_SYNTAX_MOVLT2,
  28718. + AVR32_SYNTAX_MOVMI2,
  28719. + AVR32_SYNTAX_MOVPL2,
  28720. + AVR32_SYNTAX_MOVLS2,
  28721. + AVR32_SYNTAX_MOVGT2,
  28722. + AVR32_SYNTAX_MOVLE2,
  28723. + AVR32_SYNTAX_MOVHI2,
  28724. + AVR32_SYNTAX_MOVVS2,
  28725. + AVR32_SYNTAX_MOVVC2,
  28726. + AVR32_SYNTAX_MOVQS2,
  28727. + AVR32_SYNTAX_MOVAL2,
  28728. + AVR32_SYNTAX_MOVHS2,
  28729. + AVR32_SYNTAX_MOVLO2,
  28730. + AVR32_SYNTAX_MTDR,
  28731. + AVR32_SYNTAX_MTSR,
  28732. + AVR32_SYNTAX_MUL1,
  28733. + AVR32_SYNTAX_MUL2,
  28734. + AVR32_SYNTAX_MUL3,
  28735. + AVR32_SYNTAX_MULHH_W,
  28736. + AVR32_SYNTAX_MULNHH_W,
  28737. + AVR32_SYNTAX_MULNWH_D,
  28738. + AVR32_SYNTAX_MULSD,
  28739. + AVR32_SYNTAX_MULSATHH_H,
  28740. + AVR32_SYNTAX_MULSATHH_W,
  28741. + AVR32_SYNTAX_MULSATRNDHH_H,
  28742. + AVR32_SYNTAX_MULSATRNDWH_W,
  28743. + AVR32_SYNTAX_MULSATWH_W,
  28744. + AVR32_SYNTAX_MULU_D,
  28745. + AVR32_SYNTAX_MULWH_D,
  28746. + AVR32_SYNTAX_MUSFR,
  28747. + AVR32_SYNTAX_MUSTR,
  28748. + AVR32_SYNTAX_MVCR_D,
  28749. + AVR32_SYNTAX_MVCR_W,
  28750. + AVR32_SYNTAX_MVRC_D,
  28751. + AVR32_SYNTAX_MVRC_W,
  28752. + AVR32_SYNTAX_NEG,
  28753. + AVR32_SYNTAX_NOP,
  28754. + AVR32_SYNTAX_OR1,
  28755. + AVR32_SYNTAX_OR2,
  28756. + AVR32_SYNTAX_OR3,
  28757. + AVR32_SYNTAX_ORH,
  28758. + AVR32_SYNTAX_ORL,
  28759. + AVR32_SYNTAX_PABS_SB,
  28760. + AVR32_SYNTAX_PABS_SH,
  28761. + AVR32_SYNTAX_PACKSH_SB,
  28762. + AVR32_SYNTAX_PACKSH_UB,
  28763. + AVR32_SYNTAX_PACKW_SH,
  28764. + AVR32_SYNTAX_PADD_B,
  28765. + AVR32_SYNTAX_PADD_H,
  28766. + AVR32_SYNTAX_PADDH_SH,
  28767. + AVR32_SYNTAX_PADDH_UB,
  28768. + AVR32_SYNTAX_PADDS_SB,
  28769. + AVR32_SYNTAX_PADDS_SH,
  28770. + AVR32_SYNTAX_PADDS_UB,
  28771. + AVR32_SYNTAX_PADDS_UH,
  28772. + AVR32_SYNTAX_PADDSUB_H,
  28773. + AVR32_SYNTAX_PADDSUBH_SH,
  28774. + AVR32_SYNTAX_PADDSUBS_SH,
  28775. + AVR32_SYNTAX_PADDSUBS_UH,
  28776. + AVR32_SYNTAX_PADDX_H,
  28777. + AVR32_SYNTAX_PADDXH_SH,
  28778. + AVR32_SYNTAX_PADDXS_SH,
  28779. + AVR32_SYNTAX_PADDXS_UH,
  28780. + AVR32_SYNTAX_PASR_B,
  28781. + AVR32_SYNTAX_PASR_H,
  28782. + AVR32_SYNTAX_PAVG_SH,
  28783. + AVR32_SYNTAX_PAVG_UB,
  28784. + AVR32_SYNTAX_PLSL_B,
  28785. + AVR32_SYNTAX_PLSL_H,
  28786. + AVR32_SYNTAX_PLSR_B,
  28787. + AVR32_SYNTAX_PLSR_H,
  28788. + AVR32_SYNTAX_PMAX_SH,
  28789. + AVR32_SYNTAX_PMAX_UB,
  28790. + AVR32_SYNTAX_PMIN_SH,
  28791. + AVR32_SYNTAX_PMIN_UB,
  28792. + AVR32_SYNTAX_POPJC,
  28793. + AVR32_SYNTAX_POPM,
  28794. + AVR32_SYNTAX_POPM_E,
  28795. + AVR32_SYNTAX_PREF,
  28796. + AVR32_SYNTAX_PSAD,
  28797. + AVR32_SYNTAX_PSUB_B,
  28798. + AVR32_SYNTAX_PSUB_H,
  28799. + AVR32_SYNTAX_PSUBADD_H,
  28800. + AVR32_SYNTAX_PSUBADDH_SH,
  28801. + AVR32_SYNTAX_PSUBADDS_SH,
  28802. + AVR32_SYNTAX_PSUBADDS_UH,
  28803. + AVR32_SYNTAX_PSUBH_SH,
  28804. + AVR32_SYNTAX_PSUBH_UB,
  28805. + AVR32_SYNTAX_PSUBS_SB,
  28806. + AVR32_SYNTAX_PSUBS_SH,
  28807. + AVR32_SYNTAX_PSUBS_UB,
  28808. + AVR32_SYNTAX_PSUBS_UH,
  28809. + AVR32_SYNTAX_PSUBX_H,
  28810. + AVR32_SYNTAX_PSUBXH_SH,
  28811. + AVR32_SYNTAX_PSUBXS_SH,
  28812. + AVR32_SYNTAX_PSUBXS_UH,
  28813. + AVR32_SYNTAX_PUNPCKSB_H,
  28814. + AVR32_SYNTAX_PUNPCKUB_H,
  28815. + AVR32_SYNTAX_PUSHJC,
  28816. + AVR32_SYNTAX_PUSHM,
  28817. + AVR32_SYNTAX_PUSHM_E,
  28818. + AVR32_SYNTAX_RCALL1,
  28819. + AVR32_SYNTAX_RCALL2,
  28820. + AVR32_SYNTAX_RETEQ,
  28821. + AVR32_SYNTAX_RETNE,
  28822. + AVR32_SYNTAX_RETCC,
  28823. + AVR32_SYNTAX_RETCS,
  28824. + AVR32_SYNTAX_RETGE,
  28825. + AVR32_SYNTAX_RETLT,
  28826. + AVR32_SYNTAX_RETMI,
  28827. + AVR32_SYNTAX_RETPL,
  28828. + AVR32_SYNTAX_RETLS,
  28829. + AVR32_SYNTAX_RETGT,
  28830. + AVR32_SYNTAX_RETLE,
  28831. + AVR32_SYNTAX_RETHI,
  28832. + AVR32_SYNTAX_RETVS,
  28833. + AVR32_SYNTAX_RETVC,
  28834. + AVR32_SYNTAX_RETQS,
  28835. + AVR32_SYNTAX_RETAL,
  28836. + AVR32_SYNTAX_RETHS,
  28837. + AVR32_SYNTAX_RETLO,
  28838. + AVR32_SYNTAX_RETD,
  28839. + AVR32_SYNTAX_RETE,
  28840. + AVR32_SYNTAX_RETJ,
  28841. + AVR32_SYNTAX_RETS,
  28842. + AVR32_SYNTAX_RJMP,
  28843. + AVR32_SYNTAX_ROL,
  28844. + AVR32_SYNTAX_ROR,
  28845. + AVR32_SYNTAX_RSUB1,
  28846. + AVR32_SYNTAX_RSUB2,
  28847. + AVR32_SYNTAX_SATADD_H,
  28848. + AVR32_SYNTAX_SATADD_W,
  28849. + AVR32_SYNTAX_SATRNDS,
  28850. + AVR32_SYNTAX_SATRNDU,
  28851. + AVR32_SYNTAX_SATS,
  28852. + AVR32_SYNTAX_SATSUB_H,
  28853. + AVR32_SYNTAX_SATSUB_W1,
  28854. + AVR32_SYNTAX_SATSUB_W2,
  28855. + AVR32_SYNTAX_SATU,
  28856. + AVR32_SYNTAX_SBC,
  28857. + AVR32_SYNTAX_SBR,
  28858. + AVR32_SYNTAX_SCALL,
  28859. + AVR32_SYNTAX_SCR,
  28860. + AVR32_SYNTAX_SLEEP,
  28861. + AVR32_SYNTAX_SREQ,
  28862. + AVR32_SYNTAX_SRNE,
  28863. + AVR32_SYNTAX_SRCC,
  28864. + AVR32_SYNTAX_SRCS,
  28865. + AVR32_SYNTAX_SRGE,
  28866. + AVR32_SYNTAX_SRLT,
  28867. + AVR32_SYNTAX_SRMI,
  28868. + AVR32_SYNTAX_SRPL,
  28869. + AVR32_SYNTAX_SRLS,
  28870. + AVR32_SYNTAX_SRGT,
  28871. + AVR32_SYNTAX_SRLE,
  28872. + AVR32_SYNTAX_SRHI,
  28873. + AVR32_SYNTAX_SRVS,
  28874. + AVR32_SYNTAX_SRVC,
  28875. + AVR32_SYNTAX_SRQS,
  28876. + AVR32_SYNTAX_SRAL,
  28877. + AVR32_SYNTAX_SRHS,
  28878. + AVR32_SYNTAX_SRLO,
  28879. + AVR32_SYNTAX_SSRF,
  28880. + AVR32_SYNTAX_ST_B1,
  28881. + AVR32_SYNTAX_ST_B2,
  28882. + AVR32_SYNTAX_ST_B5,
  28883. + AVR32_SYNTAX_ST_B3,
  28884. + AVR32_SYNTAX_ST_B4,
  28885. + AVR32_SYNTAX_ST_D1,
  28886. + AVR32_SYNTAX_ST_D2,
  28887. + AVR32_SYNTAX_ST_D3,
  28888. + AVR32_SYNTAX_ST_D5,
  28889. + AVR32_SYNTAX_ST_D4,
  28890. + AVR32_SYNTAX_ST_H1,
  28891. + AVR32_SYNTAX_ST_H2,
  28892. + AVR32_SYNTAX_ST_H5,
  28893. + AVR32_SYNTAX_ST_H3,
  28894. + AVR32_SYNTAX_ST_H4,
  28895. + AVR32_SYNTAX_ST_W1,
  28896. + AVR32_SYNTAX_ST_W2,
  28897. + AVR32_SYNTAX_ST_W5,
  28898. + AVR32_SYNTAX_ST_W3,
  28899. + AVR32_SYNTAX_ST_W4,
  28900. + AVR32_SYNTAX_STC_D1,
  28901. + AVR32_SYNTAX_STC_D2,
  28902. + AVR32_SYNTAX_STC_D3,
  28903. + AVR32_SYNTAX_STC_W1,
  28904. + AVR32_SYNTAX_STC_W2,
  28905. + AVR32_SYNTAX_STC_W3,
  28906. + AVR32_SYNTAX_STC0_D,
  28907. + AVR32_SYNTAX_STC0_W,
  28908. + AVR32_SYNTAX_STCM_D,
  28909. + AVR32_SYNTAX_STCM_D_PU,
  28910. + AVR32_SYNTAX_STCM_W,
  28911. + AVR32_SYNTAX_STCM_W_PU,
  28912. + AVR32_SYNTAX_STCOND,
  28913. + AVR32_SYNTAX_STDSP,
  28914. + AVR32_SYNTAX_STHH_W2,
  28915. + AVR32_SYNTAX_STHH_W1,
  28916. + AVR32_SYNTAX_STM,
  28917. + AVR32_SYNTAX_STM_PU,
  28918. + AVR32_SYNTAX_STMTS,
  28919. + AVR32_SYNTAX_STMTS_PU,
  28920. + AVR32_SYNTAX_STSWP_H,
  28921. + AVR32_SYNTAX_STSWP_W,
  28922. + AVR32_SYNTAX_SUB1,
  28923. + AVR32_SYNTAX_SUB2,
  28924. + AVR32_SYNTAX_SUB5,
  28925. + AVR32_SYNTAX_SUB3_SP,
  28926. + AVR32_SYNTAX_SUB3,
  28927. + AVR32_SYNTAX_SUB4,
  28928. + AVR32_SYNTAX_SUBEQ,
  28929. + AVR32_SYNTAX_SUBNE,
  28930. + AVR32_SYNTAX_SUBCC,
  28931. + AVR32_SYNTAX_SUBCS,
  28932. + AVR32_SYNTAX_SUBGE,
  28933. + AVR32_SYNTAX_SUBLT,
  28934. + AVR32_SYNTAX_SUBMI,
  28935. + AVR32_SYNTAX_SUBPL,
  28936. + AVR32_SYNTAX_SUBLS,
  28937. + AVR32_SYNTAX_SUBGT,
  28938. + AVR32_SYNTAX_SUBLE,
  28939. + AVR32_SYNTAX_SUBHI,
  28940. + AVR32_SYNTAX_SUBVS,
  28941. + AVR32_SYNTAX_SUBVC,
  28942. + AVR32_SYNTAX_SUBQS,
  28943. + AVR32_SYNTAX_SUBAL,
  28944. + AVR32_SYNTAX_SUBHS,
  28945. + AVR32_SYNTAX_SUBLO,
  28946. + AVR32_SYNTAX_SUBFEQ,
  28947. + AVR32_SYNTAX_SUBFNE,
  28948. + AVR32_SYNTAX_SUBFCC,
  28949. + AVR32_SYNTAX_SUBFCS,
  28950. + AVR32_SYNTAX_SUBFGE,
  28951. + AVR32_SYNTAX_SUBFLT,
  28952. + AVR32_SYNTAX_SUBFMI,
  28953. + AVR32_SYNTAX_SUBFPL,
  28954. + AVR32_SYNTAX_SUBFLS,
  28955. + AVR32_SYNTAX_SUBFGT,
  28956. + AVR32_SYNTAX_SUBFLE,
  28957. + AVR32_SYNTAX_SUBFHI,
  28958. + AVR32_SYNTAX_SUBFVS,
  28959. + AVR32_SYNTAX_SUBFVC,
  28960. + AVR32_SYNTAX_SUBFQS,
  28961. + AVR32_SYNTAX_SUBFAL,
  28962. + AVR32_SYNTAX_SUBFHS,
  28963. + AVR32_SYNTAX_SUBFLO,
  28964. + AVR32_SYNTAX_SUBHH_W,
  28965. + AVR32_SYNTAX_SWAP_B,
  28966. + AVR32_SYNTAX_SWAP_BH,
  28967. + AVR32_SYNTAX_SWAP_H,
  28968. + AVR32_SYNTAX_SYNC,
  28969. + AVR32_SYNTAX_TLBR,
  28970. + AVR32_SYNTAX_TLBS,
  28971. + AVR32_SYNTAX_TLBW,
  28972. + AVR32_SYNTAX_TNBZ,
  28973. + AVR32_SYNTAX_TST,
  28974. + AVR32_SYNTAX_XCHG,
  28975. + AVR32_SYNTAX_MEMC,
  28976. + AVR32_SYNTAX_MEMS,
  28977. + AVR32_SYNTAX_MEMT,
  28978. + AVR32_SYNTAX_FADD_S,
  28979. + AVR32_SYNTAX_FADD_D,
  28980. + AVR32_SYNTAX_FSUB_S,
  28981. + AVR32_SYNTAX_FSUB_D,
  28982. + AVR32_SYNTAX_FMAC_S,
  28983. + AVR32_SYNTAX_FMAC_D,
  28984. + AVR32_SYNTAX_FNMAC_S,
  28985. + AVR32_SYNTAX_FNMAC_D,
  28986. + AVR32_SYNTAX_FMSC_S,
  28987. + AVR32_SYNTAX_FMSC_D,
  28988. + AVR32_SYNTAX_FNMSC_S,
  28989. + AVR32_SYNTAX_FNMSC_D,
  28990. + AVR32_SYNTAX_FMUL_S,
  28991. + AVR32_SYNTAX_FMUL_D,
  28992. + AVR32_SYNTAX_FNMUL_S,
  28993. + AVR32_SYNTAX_FNMUL_D,
  28994. + AVR32_SYNTAX_FNEG_S,
  28995. + AVR32_SYNTAX_FNEG_D,
  28996. + AVR32_SYNTAX_FABS_S,
  28997. + AVR32_SYNTAX_FABS_D,
  28998. + AVR32_SYNTAX_FCMP_S,
  28999. + AVR32_SYNTAX_FCMP_D,
  29000. + AVR32_SYNTAX_FMOV1_S,
  29001. + AVR32_SYNTAX_FMOV1_D,
  29002. + AVR32_SYNTAX_FMOV2_S,
  29003. + AVR32_SYNTAX_FMOV2_D,
  29004. + AVR32_SYNTAX_FMOV3_S,
  29005. + AVR32_SYNTAX_FMOV3_D,
  29006. + AVR32_SYNTAX_FCASTS_D,
  29007. + AVR32_SYNTAX_FCASTD_S,
  29008. + AVR32_SYNTAX_LDA_W,
  29009. + AVR32_SYNTAX_CALL,
  29010. + AVR32_SYNTAX_PICOSVMAC0,
  29011. + AVR32_SYNTAX_PICOSVMAC1,
  29012. + AVR32_SYNTAX_PICOSVMAC2,
  29013. + AVR32_SYNTAX_PICOSVMAC3,
  29014. + AVR32_SYNTAX_PICOSVMUL0,
  29015. + AVR32_SYNTAX_PICOSVMUL1,
  29016. + AVR32_SYNTAX_PICOSVMUL2,
  29017. + AVR32_SYNTAX_PICOSVMUL3,
  29018. + AVR32_SYNTAX_PICOVMAC0,
  29019. + AVR32_SYNTAX_PICOVMAC1,
  29020. + AVR32_SYNTAX_PICOVMAC2,
  29021. + AVR32_SYNTAX_PICOVMAC3,
  29022. + AVR32_SYNTAX_PICOVMUL0,
  29023. + AVR32_SYNTAX_PICOVMUL1,
  29024. + AVR32_SYNTAX_PICOVMUL2,
  29025. + AVR32_SYNTAX_PICOVMUL3,
  29026. + AVR32_SYNTAX_PICOLD_D2,
  29027. + AVR32_SYNTAX_PICOLD_D3,
  29028. + AVR32_SYNTAX_PICOLD_D1,
  29029. + AVR32_SYNTAX_PICOLD_W2,
  29030. + AVR32_SYNTAX_PICOLD_W3,
  29031. + AVR32_SYNTAX_PICOLD_W1,
  29032. + AVR32_SYNTAX_PICOLDM_D,
  29033. + AVR32_SYNTAX_PICOLDM_D_PU,
  29034. + AVR32_SYNTAX_PICOLDM_W,
  29035. + AVR32_SYNTAX_PICOLDM_W_PU,
  29036. + AVR32_SYNTAX_PICOMV_D1,
  29037. + AVR32_SYNTAX_PICOMV_D2,
  29038. + AVR32_SYNTAX_PICOMV_W1,
  29039. + AVR32_SYNTAX_PICOMV_W2,
  29040. + AVR32_SYNTAX_PICOST_D2,
  29041. + AVR32_SYNTAX_PICOST_D3,
  29042. + AVR32_SYNTAX_PICOST_D1,
  29043. + AVR32_SYNTAX_PICOST_W2,
  29044. + AVR32_SYNTAX_PICOST_W3,
  29045. + AVR32_SYNTAX_PICOST_W1,
  29046. + AVR32_SYNTAX_PICOSTM_D,
  29047. + AVR32_SYNTAX_PICOSTM_D_PU,
  29048. + AVR32_SYNTAX_PICOSTM_W,
  29049. + AVR32_SYNTAX_PICOSTM_W_PU,
  29050. + AVR32_SYNTAX_RSUBEQ,
  29051. + AVR32_SYNTAX_RSUBNE,
  29052. + AVR32_SYNTAX_RSUBCC,
  29053. + AVR32_SYNTAX_RSUBCS,
  29054. + AVR32_SYNTAX_RSUBGE,
  29055. + AVR32_SYNTAX_RSUBLT,
  29056. + AVR32_SYNTAX_RSUBMI,
  29057. + AVR32_SYNTAX_RSUBPL,
  29058. + AVR32_SYNTAX_RSUBLS,
  29059. + AVR32_SYNTAX_RSUBGT,
  29060. + AVR32_SYNTAX_RSUBLE,
  29061. + AVR32_SYNTAX_RSUBHI,
  29062. + AVR32_SYNTAX_RSUBVS,
  29063. + AVR32_SYNTAX_RSUBVC,
  29064. + AVR32_SYNTAX_RSUBQS,
  29065. + AVR32_SYNTAX_RSUBAL,
  29066. + AVR32_SYNTAX_RSUBHS,
  29067. + AVR32_SYNTAX_RSUBLO,
  29068. + AVR32_SYNTAX_ADDEQ,
  29069. + AVR32_SYNTAX_ADDNE,
  29070. + AVR32_SYNTAX_ADDCC,
  29071. + AVR32_SYNTAX_ADDCS,
  29072. + AVR32_SYNTAX_ADDGE,
  29073. + AVR32_SYNTAX_ADDLT,
  29074. + AVR32_SYNTAX_ADDMI,
  29075. + AVR32_SYNTAX_ADDPL,
  29076. + AVR32_SYNTAX_ADDLS,
  29077. + AVR32_SYNTAX_ADDGT,
  29078. + AVR32_SYNTAX_ADDLE,
  29079. + AVR32_SYNTAX_ADDHI,
  29080. + AVR32_SYNTAX_ADDVS,
  29081. + AVR32_SYNTAX_ADDVC,
  29082. + AVR32_SYNTAX_ADDQS,
  29083. + AVR32_SYNTAX_ADDAL,
  29084. + AVR32_SYNTAX_ADDHS,
  29085. + AVR32_SYNTAX_ADDLO,
  29086. + AVR32_SYNTAX_SUB2EQ,
  29087. + AVR32_SYNTAX_SUB2NE,
  29088. + AVR32_SYNTAX_SUB2CC,
  29089. + AVR32_SYNTAX_SUB2CS,
  29090. + AVR32_SYNTAX_SUB2GE,
  29091. + AVR32_SYNTAX_SUB2LT,
  29092. + AVR32_SYNTAX_SUB2MI,
  29093. + AVR32_SYNTAX_SUB2PL,
  29094. + AVR32_SYNTAX_SUB2LS,
  29095. + AVR32_SYNTAX_SUB2GT,
  29096. + AVR32_SYNTAX_SUB2LE,
  29097. + AVR32_SYNTAX_SUB2HI,
  29098. + AVR32_SYNTAX_SUB2VS,
  29099. + AVR32_SYNTAX_SUB2VC,
  29100. + AVR32_SYNTAX_SUB2QS,
  29101. + AVR32_SYNTAX_SUB2AL,
  29102. + AVR32_SYNTAX_SUB2HS,
  29103. + AVR32_SYNTAX_SUB2LO,
  29104. + AVR32_SYNTAX_ANDEQ,
  29105. + AVR32_SYNTAX_ANDNE,
  29106. + AVR32_SYNTAX_ANDCC,
  29107. + AVR32_SYNTAX_ANDCS,
  29108. + AVR32_SYNTAX_ANDGE,
  29109. + AVR32_SYNTAX_ANDLT,
  29110. + AVR32_SYNTAX_ANDMI,
  29111. + AVR32_SYNTAX_ANDPL,
  29112. + AVR32_SYNTAX_ANDLS,
  29113. + AVR32_SYNTAX_ANDGT,
  29114. + AVR32_SYNTAX_ANDLE,
  29115. + AVR32_SYNTAX_ANDHI,
  29116. + AVR32_SYNTAX_ANDVS,
  29117. + AVR32_SYNTAX_ANDVC,
  29118. + AVR32_SYNTAX_ANDQS,
  29119. + AVR32_SYNTAX_ANDAL,
  29120. + AVR32_SYNTAX_ANDHS,
  29121. + AVR32_SYNTAX_ANDLO,
  29122. + AVR32_SYNTAX_OREQ,
  29123. + AVR32_SYNTAX_ORNE,
  29124. + AVR32_SYNTAX_ORCC,
  29125. + AVR32_SYNTAX_ORCS,
  29126. + AVR32_SYNTAX_ORGE,
  29127. + AVR32_SYNTAX_ORLT,
  29128. + AVR32_SYNTAX_ORMI,
  29129. + AVR32_SYNTAX_ORPL,
  29130. + AVR32_SYNTAX_ORLS,
  29131. + AVR32_SYNTAX_ORGT,
  29132. + AVR32_SYNTAX_ORLE,
  29133. + AVR32_SYNTAX_ORHI,
  29134. + AVR32_SYNTAX_ORVS,
  29135. + AVR32_SYNTAX_ORVC,
  29136. + AVR32_SYNTAX_ORQS,
  29137. + AVR32_SYNTAX_ORAL,
  29138. + AVR32_SYNTAX_ORHS,
  29139. + AVR32_SYNTAX_ORLO,
  29140. + AVR32_SYNTAX_EOREQ,
  29141. + AVR32_SYNTAX_EORNE,
  29142. + AVR32_SYNTAX_EORCC,
  29143. + AVR32_SYNTAX_EORCS,
  29144. + AVR32_SYNTAX_EORGE,
  29145. + AVR32_SYNTAX_EORLT,
  29146. + AVR32_SYNTAX_EORMI,
  29147. + AVR32_SYNTAX_EORPL,
  29148. + AVR32_SYNTAX_EORLS,
  29149. + AVR32_SYNTAX_EORGT,
  29150. + AVR32_SYNTAX_EORLE,
  29151. + AVR32_SYNTAX_EORHI,
  29152. + AVR32_SYNTAX_EORVS,
  29153. + AVR32_SYNTAX_EORVC,
  29154. + AVR32_SYNTAX_EORQS,
  29155. + AVR32_SYNTAX_EORAL,
  29156. + AVR32_SYNTAX_EORHS,
  29157. + AVR32_SYNTAX_EORLO,
  29158. + AVR32_SYNTAX_LD_WEQ,
  29159. + AVR32_SYNTAX_LD_WNE,
  29160. + AVR32_SYNTAX_LD_WCC,
  29161. + AVR32_SYNTAX_LD_WCS,
  29162. + AVR32_SYNTAX_LD_WGE,
  29163. + AVR32_SYNTAX_LD_WLT,
  29164. + AVR32_SYNTAX_LD_WMI,
  29165. + AVR32_SYNTAX_LD_WPL,
  29166. + AVR32_SYNTAX_LD_WLS,
  29167. + AVR32_SYNTAX_LD_WGT,
  29168. + AVR32_SYNTAX_LD_WLE,
  29169. + AVR32_SYNTAX_LD_WHI,
  29170. + AVR32_SYNTAX_LD_WVS,
  29171. + AVR32_SYNTAX_LD_WVC,
  29172. + AVR32_SYNTAX_LD_WQS,
  29173. + AVR32_SYNTAX_LD_WAL,
  29174. + AVR32_SYNTAX_LD_WHS,
  29175. + AVR32_SYNTAX_LD_WLO,
  29176. + AVR32_SYNTAX_LD_SHEQ,
  29177. + AVR32_SYNTAX_LD_SHNE,
  29178. + AVR32_SYNTAX_LD_SHCC,
  29179. + AVR32_SYNTAX_LD_SHCS,
  29180. + AVR32_SYNTAX_LD_SHGE,
  29181. + AVR32_SYNTAX_LD_SHLT,
  29182. + AVR32_SYNTAX_LD_SHMI,
  29183. + AVR32_SYNTAX_LD_SHPL,
  29184. + AVR32_SYNTAX_LD_SHLS,
  29185. + AVR32_SYNTAX_LD_SHGT,
  29186. + AVR32_SYNTAX_LD_SHLE,
  29187. + AVR32_SYNTAX_LD_SHHI,
  29188. + AVR32_SYNTAX_LD_SHVS,
  29189. + AVR32_SYNTAX_LD_SHVC,
  29190. + AVR32_SYNTAX_LD_SHQS,
  29191. + AVR32_SYNTAX_LD_SHAL,
  29192. + AVR32_SYNTAX_LD_SHHS,
  29193. + AVR32_SYNTAX_LD_SHLO,
  29194. + AVR32_SYNTAX_LD_UHEQ,
  29195. + AVR32_SYNTAX_LD_UHNE,
  29196. + AVR32_SYNTAX_LD_UHCC,
  29197. + AVR32_SYNTAX_LD_UHCS,
  29198. + AVR32_SYNTAX_LD_UHGE,
  29199. + AVR32_SYNTAX_LD_UHLT,
  29200. + AVR32_SYNTAX_LD_UHMI,
  29201. + AVR32_SYNTAX_LD_UHPL,
  29202. + AVR32_SYNTAX_LD_UHLS,
  29203. + AVR32_SYNTAX_LD_UHGT,
  29204. + AVR32_SYNTAX_LD_UHLE,
  29205. + AVR32_SYNTAX_LD_UHHI,
  29206. + AVR32_SYNTAX_LD_UHVS,
  29207. + AVR32_SYNTAX_LD_UHVC,
  29208. + AVR32_SYNTAX_LD_UHQS,
  29209. + AVR32_SYNTAX_LD_UHAL,
  29210. + AVR32_SYNTAX_LD_UHHS,
  29211. + AVR32_SYNTAX_LD_UHLO,
  29212. + AVR32_SYNTAX_LD_SBEQ,
  29213. + AVR32_SYNTAX_LD_SBNE,
  29214. + AVR32_SYNTAX_LD_SBCC,
  29215. + AVR32_SYNTAX_LD_SBCS,
  29216. + AVR32_SYNTAX_LD_SBGE,
  29217. + AVR32_SYNTAX_LD_SBLT,
  29218. + AVR32_SYNTAX_LD_SBMI,
  29219. + AVR32_SYNTAX_LD_SBPL,
  29220. + AVR32_SYNTAX_LD_SBLS,
  29221. + AVR32_SYNTAX_LD_SBGT,
  29222. + AVR32_SYNTAX_LD_SBLE,
  29223. + AVR32_SYNTAX_LD_SBHI,
  29224. + AVR32_SYNTAX_LD_SBVS,
  29225. + AVR32_SYNTAX_LD_SBVC,
  29226. + AVR32_SYNTAX_LD_SBQS,
  29227. + AVR32_SYNTAX_LD_SBAL,
  29228. + AVR32_SYNTAX_LD_SBHS,
  29229. + AVR32_SYNTAX_LD_SBLO,
  29230. + AVR32_SYNTAX_LD_UBEQ,
  29231. + AVR32_SYNTAX_LD_UBNE,
  29232. + AVR32_SYNTAX_LD_UBCC,
  29233. + AVR32_SYNTAX_LD_UBCS,
  29234. + AVR32_SYNTAX_LD_UBGE,
  29235. + AVR32_SYNTAX_LD_UBLT,
  29236. + AVR32_SYNTAX_LD_UBMI,
  29237. + AVR32_SYNTAX_LD_UBPL,
  29238. + AVR32_SYNTAX_LD_UBLS,
  29239. + AVR32_SYNTAX_LD_UBGT,
  29240. + AVR32_SYNTAX_LD_UBLE,
  29241. + AVR32_SYNTAX_LD_UBHI,
  29242. + AVR32_SYNTAX_LD_UBVS,
  29243. + AVR32_SYNTAX_LD_UBVC,
  29244. + AVR32_SYNTAX_LD_UBQS,
  29245. + AVR32_SYNTAX_LD_UBAL,
  29246. + AVR32_SYNTAX_LD_UBHS,
  29247. + AVR32_SYNTAX_LD_UBLO,
  29248. + AVR32_SYNTAX_ST_WEQ,
  29249. + AVR32_SYNTAX_ST_WNE,
  29250. + AVR32_SYNTAX_ST_WCC,
  29251. + AVR32_SYNTAX_ST_WCS,
  29252. + AVR32_SYNTAX_ST_WGE,
  29253. + AVR32_SYNTAX_ST_WLT,
  29254. + AVR32_SYNTAX_ST_WMI,
  29255. + AVR32_SYNTAX_ST_WPL,
  29256. + AVR32_SYNTAX_ST_WLS,
  29257. + AVR32_SYNTAX_ST_WGT,
  29258. + AVR32_SYNTAX_ST_WLE,
  29259. + AVR32_SYNTAX_ST_WHI,
  29260. + AVR32_SYNTAX_ST_WVS,
  29261. + AVR32_SYNTAX_ST_WVC,
  29262. + AVR32_SYNTAX_ST_WQS,
  29263. + AVR32_SYNTAX_ST_WAL,
  29264. + AVR32_SYNTAX_ST_WHS,
  29265. + AVR32_SYNTAX_ST_WLO,
  29266. + AVR32_SYNTAX_ST_HEQ,
  29267. + AVR32_SYNTAX_ST_HNE,
  29268. + AVR32_SYNTAX_ST_HCC,
  29269. + AVR32_SYNTAX_ST_HCS,
  29270. + AVR32_SYNTAX_ST_HGE,
  29271. + AVR32_SYNTAX_ST_HLT,
  29272. + AVR32_SYNTAX_ST_HMI,
  29273. + AVR32_SYNTAX_ST_HPL,
  29274. + AVR32_SYNTAX_ST_HLS,
  29275. + AVR32_SYNTAX_ST_HGT,
  29276. + AVR32_SYNTAX_ST_HLE,
  29277. + AVR32_SYNTAX_ST_HHI,
  29278. + AVR32_SYNTAX_ST_HVS,
  29279. + AVR32_SYNTAX_ST_HVC,
  29280. + AVR32_SYNTAX_ST_HQS,
  29281. + AVR32_SYNTAX_ST_HAL,
  29282. + AVR32_SYNTAX_ST_HHS,
  29283. + AVR32_SYNTAX_ST_HLO,
  29284. + AVR32_SYNTAX_ST_BEQ,
  29285. + AVR32_SYNTAX_ST_BNE,
  29286. + AVR32_SYNTAX_ST_BCC,
  29287. + AVR32_SYNTAX_ST_BCS,
  29288. + AVR32_SYNTAX_ST_BGE,
  29289. + AVR32_SYNTAX_ST_BLT,
  29290. + AVR32_SYNTAX_ST_BMI,
  29291. + AVR32_SYNTAX_ST_BPL,
  29292. + AVR32_SYNTAX_ST_BLS,
  29293. + AVR32_SYNTAX_ST_BGT,
  29294. + AVR32_SYNTAX_ST_BLE,
  29295. + AVR32_SYNTAX_ST_BHI,
  29296. + AVR32_SYNTAX_ST_BVS,
  29297. + AVR32_SYNTAX_ST_BVC,
  29298. + AVR32_SYNTAX_ST_BQS,
  29299. + AVR32_SYNTAX_ST_BAL,
  29300. + AVR32_SYNTAX_ST_BHS,
  29301. + AVR32_SYNTAX_ST_BLO,
  29302. + AVR32_SYNTAX_MOVH,
  29303. + AVR32_SYNTAX__END_
  29304. +};
  29305. +#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
  29306. +
  29307. +enum avr32_alias_type
  29308. + {
  29309. + AVR32_ALIAS_FMAC_S,
  29310. + AVR32_ALIAS_FMAC_D,
  29311. + AVR32_ALIAS_FNMAC_S,
  29312. + AVR32_ALIAS_FNMAC_D,
  29313. + AVR32_ALIAS_FMSC_S,
  29314. + AVR32_ALIAS_FMSC_D,
  29315. + AVR32_ALIAS_FNMSC_S,
  29316. + AVR32_ALIAS_FNMSC_D,
  29317. + AVR32_ALIAS_FADD_S,
  29318. + AVR32_ALIAS_FADD_D,
  29319. + AVR32_ALIAS_FSUB_S,
  29320. + AVR32_ALIAS_FSUB_D,
  29321. + AVR32_ALIAS_FMUL_S,
  29322. + AVR32_ALIAS_FMUL_D,
  29323. + AVR32_ALIAS_FNMUL_S,
  29324. + AVR32_ALIAS_FNMUL_D,
  29325. + AVR32_ALIAS_FNEG_S,
  29326. + AVR32_ALIAS_FNEG_D,
  29327. + AVR32_ALIAS_FABS_S,
  29328. + AVR32_ALIAS_FABS_D,
  29329. + AVR32_ALIAS_FCMP_S,
  29330. + AVR32_ALIAS_FCMP_D,
  29331. + AVR32_ALIAS_FMOV1_S,
  29332. + AVR32_ALIAS_FMOV1_D,
  29333. + AVR32_ALIAS_FMOV2_S,
  29334. + AVR32_ALIAS_FMOV2_D,
  29335. + AVR32_ALIAS_FMOV3_S,
  29336. + AVR32_ALIAS_FMOV3_D,
  29337. + AVR32_ALIAS_FCASTS_D,
  29338. + AVR32_ALIAS_FCASTD_S,
  29339. + AVR32_ALIAS_PICOSVMAC0,
  29340. + AVR32_ALIAS_PICOSVMAC1,
  29341. + AVR32_ALIAS_PICOSVMAC2,
  29342. + AVR32_ALIAS_PICOSVMAC3,
  29343. + AVR32_ALIAS_PICOSVMUL0,
  29344. + AVR32_ALIAS_PICOSVMUL1,
  29345. + AVR32_ALIAS_PICOSVMUL2,
  29346. + AVR32_ALIAS_PICOSVMUL3,
  29347. + AVR32_ALIAS_PICOVMAC0,
  29348. + AVR32_ALIAS_PICOVMAC1,
  29349. + AVR32_ALIAS_PICOVMAC2,
  29350. + AVR32_ALIAS_PICOVMAC3,
  29351. + AVR32_ALIAS_PICOVMUL0,
  29352. + AVR32_ALIAS_PICOVMUL1,
  29353. + AVR32_ALIAS_PICOVMUL2,
  29354. + AVR32_ALIAS_PICOVMUL3,
  29355. + AVR32_ALIAS_PICOLD_D1,
  29356. + AVR32_ALIAS_PICOLD_D2,
  29357. + AVR32_ALIAS_PICOLD_D3,
  29358. + AVR32_ALIAS_PICOLD_W1,
  29359. + AVR32_ALIAS_PICOLD_W2,
  29360. + AVR32_ALIAS_PICOLD_W3,
  29361. + AVR32_ALIAS_PICOLDM_D,
  29362. + AVR32_ALIAS_PICOLDM_D_PU,
  29363. + AVR32_ALIAS_PICOLDM_W,
  29364. + AVR32_ALIAS_PICOLDM_W_PU,
  29365. + AVR32_ALIAS_PICOMV_D1,
  29366. + AVR32_ALIAS_PICOMV_D2,
  29367. + AVR32_ALIAS_PICOMV_W1,
  29368. + AVR32_ALIAS_PICOMV_W2,
  29369. + AVR32_ALIAS_PICOST_D1,
  29370. + AVR32_ALIAS_PICOST_D2,
  29371. + AVR32_ALIAS_PICOST_D3,
  29372. + AVR32_ALIAS_PICOST_W1,
  29373. + AVR32_ALIAS_PICOST_W2,
  29374. + AVR32_ALIAS_PICOST_W3,
  29375. + AVR32_ALIAS_PICOSTM_D,
  29376. + AVR32_ALIAS_PICOSTM_D_PU,
  29377. + AVR32_ALIAS_PICOSTM_W,
  29378. + AVR32_ALIAS_PICOSTM_W_PU,
  29379. + AVR32_ALIAS__END_
  29380. + };
  29381. +#define AVR32_NR_ALIAS AVR32_ALIAS__END_
  29382. +
  29383. +enum avr32_mnemonic_type
  29384. +{
  29385. + AVR32_MNEMONIC_ABS,
  29386. + AVR32_MNEMONIC_ACALL,
  29387. + AVR32_MNEMONIC_ACR,
  29388. + AVR32_MNEMONIC_ADC,
  29389. + AVR32_MNEMONIC_ADD,
  29390. + AVR32_MNEMONIC_ADDABS,
  29391. + AVR32_MNEMONIC_ADDHH_W,
  29392. + AVR32_MNEMONIC_AND,
  29393. + AVR32_MNEMONIC_ANDH,
  29394. + AVR32_MNEMONIC_ANDL,
  29395. + AVR32_MNEMONIC_ANDN,
  29396. + AVR32_MNEMONIC_ASR,
  29397. + AVR32_MNEMONIC_BFEXTS,
  29398. + AVR32_MNEMONIC_BFEXTU,
  29399. + AVR32_MNEMONIC_BFINS,
  29400. + AVR32_MNEMONIC_BLD,
  29401. + AVR32_MNEMONIC_BREQ,
  29402. + AVR32_MNEMONIC_BRNE,
  29403. + AVR32_MNEMONIC_BRCC,
  29404. + AVR32_MNEMONIC_BRCS,
  29405. + AVR32_MNEMONIC_BRGE,
  29406. + AVR32_MNEMONIC_BRLT,
  29407. + AVR32_MNEMONIC_BRMI,
  29408. + AVR32_MNEMONIC_BRPL,
  29409. + AVR32_MNEMONIC_BRHS,
  29410. + AVR32_MNEMONIC_BRLO,
  29411. + AVR32_MNEMONIC_BRLS,
  29412. + AVR32_MNEMONIC_BRGT,
  29413. + AVR32_MNEMONIC_BRLE,
  29414. + AVR32_MNEMONIC_BRHI,
  29415. + AVR32_MNEMONIC_BRVS,
  29416. + AVR32_MNEMONIC_BRVC,
  29417. + AVR32_MNEMONIC_BRQS,
  29418. + AVR32_MNEMONIC_BRAL,
  29419. + AVR32_MNEMONIC_BREAKPOINT,
  29420. + AVR32_MNEMONIC_BREV,
  29421. + AVR32_MNEMONIC_BST,
  29422. + AVR32_MNEMONIC_CACHE,
  29423. + AVR32_MNEMONIC_CASTS_B,
  29424. + AVR32_MNEMONIC_CASTS_H,
  29425. + AVR32_MNEMONIC_CASTU_B,
  29426. + AVR32_MNEMONIC_CASTU_H,
  29427. + AVR32_MNEMONIC_CBR,
  29428. + AVR32_MNEMONIC_CLZ,
  29429. + AVR32_MNEMONIC_COM,
  29430. + AVR32_MNEMONIC_COP,
  29431. + AVR32_MNEMONIC_CP_B,
  29432. + AVR32_MNEMONIC_CP_H,
  29433. + AVR32_MNEMONIC_CP_W,
  29434. + AVR32_MNEMONIC_CP,
  29435. + AVR32_MNEMONIC_CPC,
  29436. + AVR32_MNEMONIC_CSRF,
  29437. + AVR32_MNEMONIC_CSRFCZ,
  29438. + AVR32_MNEMONIC_DIVS,
  29439. + AVR32_MNEMONIC_DIVU,
  29440. + AVR32_MNEMONIC_EOR,
  29441. + AVR32_MNEMONIC_EORL,
  29442. + AVR32_MNEMONIC_EORH,
  29443. + AVR32_MNEMONIC_FRS,
  29444. + AVR32_MNEMONIC_ICALL,
  29445. + AVR32_MNEMONIC_INCJOSP,
  29446. + AVR32_MNEMONIC_LD_D,
  29447. + AVR32_MNEMONIC_LD_SB,
  29448. + AVR32_MNEMONIC_LD_UB,
  29449. + AVR32_MNEMONIC_LD_SH,
  29450. + AVR32_MNEMONIC_LD_UH,
  29451. + AVR32_MNEMONIC_LD_W,
  29452. + AVR32_MNEMONIC_LDC_D,
  29453. + AVR32_MNEMONIC_LDC_W,
  29454. + AVR32_MNEMONIC_LDC0_D,
  29455. + AVR32_MNEMONIC_LDC0_W,
  29456. + AVR32_MNEMONIC_LDCM_D,
  29457. + AVR32_MNEMONIC_LDCM_W,
  29458. + AVR32_MNEMONIC_LDDPC,
  29459. + AVR32_MNEMONIC_LDDSP,
  29460. + AVR32_MNEMONIC_LDINS_B,
  29461. + AVR32_MNEMONIC_LDINS_H,
  29462. + AVR32_MNEMONIC_LDM,
  29463. + AVR32_MNEMONIC_LDMTS,
  29464. + AVR32_MNEMONIC_LDSWP_SH,
  29465. + AVR32_MNEMONIC_LDSWP_UH,
  29466. + AVR32_MNEMONIC_LDSWP_W,
  29467. + AVR32_MNEMONIC_LSL,
  29468. + AVR32_MNEMONIC_LSR,
  29469. + AVR32_MNEMONIC_MAC,
  29470. + AVR32_MNEMONIC_MACHH_D,
  29471. + AVR32_MNEMONIC_MACHH_W,
  29472. + AVR32_MNEMONIC_MACS_D,
  29473. + AVR32_MNEMONIC_MACSATHH_W,
  29474. + AVR32_MNEMONIC_MACU_D,
  29475. + AVR32_MNEMONIC_MACWH_D,
  29476. + AVR32_MNEMONIC_MAX,
  29477. + AVR32_MNEMONIC_MCALL,
  29478. + AVR32_MNEMONIC_MFDR,
  29479. + AVR32_MNEMONIC_MFSR,
  29480. + AVR32_MNEMONIC_MIN,
  29481. + AVR32_MNEMONIC_MOV,
  29482. + AVR32_MNEMONIC_MOVEQ,
  29483. + AVR32_MNEMONIC_MOVNE,
  29484. + AVR32_MNEMONIC_MOVCC,
  29485. + AVR32_MNEMONIC_MOVCS,
  29486. + AVR32_MNEMONIC_MOVGE,
  29487. + AVR32_MNEMONIC_MOVLT,
  29488. + AVR32_MNEMONIC_MOVMI,
  29489. + AVR32_MNEMONIC_MOVPL,
  29490. + AVR32_MNEMONIC_MOVLS,
  29491. + AVR32_MNEMONIC_MOVGT,
  29492. + AVR32_MNEMONIC_MOVLE,
  29493. + AVR32_MNEMONIC_MOVHI,
  29494. + AVR32_MNEMONIC_MOVVS,
  29495. + AVR32_MNEMONIC_MOVVC,
  29496. + AVR32_MNEMONIC_MOVQS,
  29497. + AVR32_MNEMONIC_MOVAL,
  29498. + AVR32_MNEMONIC_MOVHS,
  29499. + AVR32_MNEMONIC_MOVLO,
  29500. + AVR32_MNEMONIC_MTDR,
  29501. + AVR32_MNEMONIC_MTSR,
  29502. + AVR32_MNEMONIC_MUL,
  29503. + AVR32_MNEMONIC_MULHH_W,
  29504. + AVR32_MNEMONIC_MULNHH_W,
  29505. + AVR32_MNEMONIC_MULNWH_D,
  29506. + AVR32_MNEMONIC_MULS_D,
  29507. + AVR32_MNEMONIC_MULSATHH_H,
  29508. + AVR32_MNEMONIC_MULSATHH_W,
  29509. + AVR32_MNEMONIC_MULSATRNDHH_H,
  29510. + AVR32_MNEMONIC_MULSATRNDWH_W,
  29511. + AVR32_MNEMONIC_MULSATWH_W,
  29512. + AVR32_MNEMONIC_MULU_D,
  29513. + AVR32_MNEMONIC_MULWH_D,
  29514. + AVR32_MNEMONIC_MUSFR,
  29515. + AVR32_MNEMONIC_MUSTR,
  29516. + AVR32_MNEMONIC_MVCR_D,
  29517. + AVR32_MNEMONIC_MVCR_W,
  29518. + AVR32_MNEMONIC_MVRC_D,
  29519. + AVR32_MNEMONIC_MVRC_W,
  29520. + AVR32_MNEMONIC_NEG,
  29521. + AVR32_MNEMONIC_NOP,
  29522. + AVR32_MNEMONIC_OR,
  29523. + AVR32_MNEMONIC_ORH,
  29524. + AVR32_MNEMONIC_ORL,
  29525. + AVR32_MNEMONIC_PABS_SB,
  29526. + AVR32_MNEMONIC_PABS_SH,
  29527. + AVR32_MNEMONIC_PACKSH_SB,
  29528. + AVR32_MNEMONIC_PACKSH_UB,
  29529. + AVR32_MNEMONIC_PACKW_SH,
  29530. + AVR32_MNEMONIC_PADD_B,
  29531. + AVR32_MNEMONIC_PADD_H,
  29532. + AVR32_MNEMONIC_PADDH_SH,
  29533. + AVR32_MNEMONIC_PADDH_UB,
  29534. + AVR32_MNEMONIC_PADDS_SB,
  29535. + AVR32_MNEMONIC_PADDS_SH,
  29536. + AVR32_MNEMONIC_PADDS_UB,
  29537. + AVR32_MNEMONIC_PADDS_UH,
  29538. + AVR32_MNEMONIC_PADDSUB_H,
  29539. + AVR32_MNEMONIC_PADDSUBH_SH,
  29540. + AVR32_MNEMONIC_PADDSUBS_SH,
  29541. + AVR32_MNEMONIC_PADDSUBS_UH,
  29542. + AVR32_MNEMONIC_PADDX_H,
  29543. + AVR32_MNEMONIC_PADDXH_SH,
  29544. + AVR32_MNEMONIC_PADDXS_SH,
  29545. + AVR32_MNEMONIC_PADDXS_UH,
  29546. + AVR32_MNEMONIC_PASR_B,
  29547. + AVR32_MNEMONIC_PASR_H,
  29548. + AVR32_MNEMONIC_PAVG_SH,
  29549. + AVR32_MNEMONIC_PAVG_UB,
  29550. + AVR32_MNEMONIC_PLSL_B,
  29551. + AVR32_MNEMONIC_PLSL_H,
  29552. + AVR32_MNEMONIC_PLSR_B,
  29553. + AVR32_MNEMONIC_PLSR_H,
  29554. + AVR32_MNEMONIC_PMAX_SH,
  29555. + AVR32_MNEMONIC_PMAX_UB,
  29556. + AVR32_MNEMONIC_PMIN_SH,
  29557. + AVR32_MNEMONIC_PMIN_UB,
  29558. + AVR32_MNEMONIC_POPJC,
  29559. + AVR32_MNEMONIC_POPM,
  29560. + AVR32_MNEMONIC_PREF,
  29561. + AVR32_MNEMONIC_PSAD,
  29562. + AVR32_MNEMONIC_PSUB_B,
  29563. + AVR32_MNEMONIC_PSUB_H,
  29564. + AVR32_MNEMONIC_PSUBADD_H,
  29565. + AVR32_MNEMONIC_PSUBADDH_SH,
  29566. + AVR32_MNEMONIC_PSUBADDS_SH,
  29567. + AVR32_MNEMONIC_PSUBADDS_UH,
  29568. + AVR32_MNEMONIC_PSUBH_SH,
  29569. + AVR32_MNEMONIC_PSUBH_UB,
  29570. + AVR32_MNEMONIC_PSUBS_SB,
  29571. + AVR32_MNEMONIC_PSUBS_SH,
  29572. + AVR32_MNEMONIC_PSUBS_UB,
  29573. + AVR32_MNEMONIC_PSUBS_UH,
  29574. + AVR32_MNEMONIC_PSUBX_H,
  29575. + AVR32_MNEMONIC_PSUBXH_SH,
  29576. + AVR32_MNEMONIC_PSUBXS_SH,
  29577. + AVR32_MNEMONIC_PSUBXS_UH,
  29578. + AVR32_MNEMONIC_PUNPCKSB_H,
  29579. + AVR32_MNEMONIC_PUNPCKUB_H,
  29580. + AVR32_MNEMONIC_PUSHJC,
  29581. + AVR32_MNEMONIC_PUSHM,
  29582. + AVR32_MNEMONIC_RCALL,
  29583. + AVR32_MNEMONIC_RETEQ,
  29584. + AVR32_MNEMONIC_RETNE,
  29585. + AVR32_MNEMONIC_RETCC,
  29586. + AVR32_MNEMONIC_RETCS,
  29587. + AVR32_MNEMONIC_RETGE,
  29588. + AVR32_MNEMONIC_RETLT,
  29589. + AVR32_MNEMONIC_RETMI,
  29590. + AVR32_MNEMONIC_RETPL,
  29591. + AVR32_MNEMONIC_RETLS,
  29592. + AVR32_MNEMONIC_RETGT,
  29593. + AVR32_MNEMONIC_RETLE,
  29594. + AVR32_MNEMONIC_RETHI,
  29595. + AVR32_MNEMONIC_RETVS,
  29596. + AVR32_MNEMONIC_RETVC,
  29597. + AVR32_MNEMONIC_RETQS,
  29598. + AVR32_MNEMONIC_RETAL,
  29599. + AVR32_MNEMONIC_RETHS,
  29600. + AVR32_MNEMONIC_RETLO,
  29601. + AVR32_MNEMONIC_RET,
  29602. + AVR32_MNEMONIC_RETD,
  29603. + AVR32_MNEMONIC_RETE,
  29604. + AVR32_MNEMONIC_RETJ,
  29605. + AVR32_MNEMONIC_RETS,
  29606. + AVR32_MNEMONIC_RJMP,
  29607. + AVR32_MNEMONIC_ROL,
  29608. + AVR32_MNEMONIC_ROR,
  29609. + AVR32_MNEMONIC_RSUB,
  29610. + AVR32_MNEMONIC_SATADD_H,
  29611. + AVR32_MNEMONIC_SATADD_W,
  29612. + AVR32_MNEMONIC_SATRNDS,
  29613. + AVR32_MNEMONIC_SATRNDU,
  29614. + AVR32_MNEMONIC_SATS,
  29615. + AVR32_MNEMONIC_SATSUB_H,
  29616. + AVR32_MNEMONIC_SATSUB_W,
  29617. + AVR32_MNEMONIC_SATU,
  29618. + AVR32_MNEMONIC_SBC,
  29619. + AVR32_MNEMONIC_SBR,
  29620. + AVR32_MNEMONIC_SCALL,
  29621. + AVR32_MNEMONIC_SCR,
  29622. + AVR32_MNEMONIC_SLEEP,
  29623. + AVR32_MNEMONIC_SREQ,
  29624. + AVR32_MNEMONIC_SRNE,
  29625. + AVR32_MNEMONIC_SRCC,
  29626. + AVR32_MNEMONIC_SRCS,
  29627. + AVR32_MNEMONIC_SRGE,
  29628. + AVR32_MNEMONIC_SRLT,
  29629. + AVR32_MNEMONIC_SRMI,
  29630. + AVR32_MNEMONIC_SRPL,
  29631. + AVR32_MNEMONIC_SRLS,
  29632. + AVR32_MNEMONIC_SRGT,
  29633. + AVR32_MNEMONIC_SRLE,
  29634. + AVR32_MNEMONIC_SRHI,
  29635. + AVR32_MNEMONIC_SRVS,
  29636. + AVR32_MNEMONIC_SRVC,
  29637. + AVR32_MNEMONIC_SRQS,
  29638. + AVR32_MNEMONIC_SRAL,
  29639. + AVR32_MNEMONIC_SRHS,
  29640. + AVR32_MNEMONIC_SRLO,
  29641. + AVR32_MNEMONIC_SSRF,
  29642. + AVR32_MNEMONIC_ST_B,
  29643. + AVR32_MNEMONIC_ST_D,
  29644. + AVR32_MNEMONIC_ST_H,
  29645. + AVR32_MNEMONIC_ST_W,
  29646. + AVR32_MNEMONIC_STC_D,
  29647. + AVR32_MNEMONIC_STC_W,
  29648. + AVR32_MNEMONIC_STC0_D,
  29649. + AVR32_MNEMONIC_STC0_W,
  29650. + AVR32_MNEMONIC_STCM_D,
  29651. + AVR32_MNEMONIC_STCM_W,
  29652. + AVR32_MNEMONIC_STCOND,
  29653. + AVR32_MNEMONIC_STDSP,
  29654. + AVR32_MNEMONIC_STHH_W,
  29655. + AVR32_MNEMONIC_STM,
  29656. + AVR32_MNEMONIC_STMTS,
  29657. + AVR32_MNEMONIC_STSWP_H,
  29658. + AVR32_MNEMONIC_STSWP_W,
  29659. + AVR32_MNEMONIC_SUB,
  29660. + AVR32_MNEMONIC_SUBEQ,
  29661. + AVR32_MNEMONIC_SUBNE,
  29662. + AVR32_MNEMONIC_SUBCC,
  29663. + AVR32_MNEMONIC_SUBCS,
  29664. + AVR32_MNEMONIC_SUBGE,
  29665. + AVR32_MNEMONIC_SUBLT,
  29666. + AVR32_MNEMONIC_SUBMI,
  29667. + AVR32_MNEMONIC_SUBPL,
  29668. + AVR32_MNEMONIC_SUBLS,
  29669. + AVR32_MNEMONIC_SUBGT,
  29670. + AVR32_MNEMONIC_SUBLE,
  29671. + AVR32_MNEMONIC_SUBHI,
  29672. + AVR32_MNEMONIC_SUBVS,
  29673. + AVR32_MNEMONIC_SUBVC,
  29674. + AVR32_MNEMONIC_SUBQS,
  29675. + AVR32_MNEMONIC_SUBAL,
  29676. + AVR32_MNEMONIC_SUBHS,
  29677. + AVR32_MNEMONIC_SUBLO,
  29678. + AVR32_MNEMONIC_SUBFEQ,
  29679. + AVR32_MNEMONIC_SUBFNE,
  29680. + AVR32_MNEMONIC_SUBFCC,
  29681. + AVR32_MNEMONIC_SUBFCS,
  29682. + AVR32_MNEMONIC_SUBFGE,
  29683. + AVR32_MNEMONIC_SUBFLT,
  29684. + AVR32_MNEMONIC_SUBFMI,
  29685. + AVR32_MNEMONIC_SUBFPL,
  29686. + AVR32_MNEMONIC_SUBFLS,
  29687. + AVR32_MNEMONIC_SUBFGT,
  29688. + AVR32_MNEMONIC_SUBFLE,
  29689. + AVR32_MNEMONIC_SUBFHI,
  29690. + AVR32_MNEMONIC_SUBFVS,
  29691. + AVR32_MNEMONIC_SUBFVC,
  29692. + AVR32_MNEMONIC_SUBFQS,
  29693. + AVR32_MNEMONIC_SUBFAL,
  29694. + AVR32_MNEMONIC_SUBFHS,
  29695. + AVR32_MNEMONIC_SUBFLO,
  29696. + AVR32_MNEMONIC_SUBHH_W,
  29697. + AVR32_MNEMONIC_SWAP_B,
  29698. + AVR32_MNEMONIC_SWAP_BH,
  29699. + AVR32_MNEMONIC_SWAP_H,
  29700. + AVR32_MNEMONIC_SYNC,
  29701. + AVR32_MNEMONIC_TLBR,
  29702. + AVR32_MNEMONIC_TLBS,
  29703. + AVR32_MNEMONIC_TLBW,
  29704. + AVR32_MNEMONIC_TNBZ,
  29705. + AVR32_MNEMONIC_TST,
  29706. + AVR32_MNEMONIC_XCHG,
  29707. + AVR32_MNEMONIC_MEMC,
  29708. + AVR32_MNEMONIC_MEMS,
  29709. + AVR32_MNEMONIC_MEMT,
  29710. + AVR32_MNEMONIC_FADD_S,
  29711. + AVR32_MNEMONIC_FADD_D,
  29712. + AVR32_MNEMONIC_FSUB_S,
  29713. + AVR32_MNEMONIC_FSUB_D,
  29714. + AVR32_MNEMONIC_FMAC_S,
  29715. + AVR32_MNEMONIC_FMAC_D,
  29716. + AVR32_MNEMONIC_FNMAC_S,
  29717. + AVR32_MNEMONIC_FNMAC_D,
  29718. + AVR32_MNEMONIC_FMSC_S,
  29719. + AVR32_MNEMONIC_FMSC_D,
  29720. + AVR32_MNEMONIC_FNMSC_S,
  29721. + AVR32_MNEMONIC_FNMSC_D,
  29722. + AVR32_MNEMONIC_FMUL_S,
  29723. + AVR32_MNEMONIC_FMUL_D,
  29724. + AVR32_MNEMONIC_FNMUL_S,
  29725. + AVR32_MNEMONIC_FNMUL_D,
  29726. + AVR32_MNEMONIC_FNEG_S,
  29727. + AVR32_MNEMONIC_FNEG_D,
  29728. + AVR32_MNEMONIC_FABS_S,
  29729. + AVR32_MNEMONIC_FABS_D,
  29730. + AVR32_MNEMONIC_FCMP_S,
  29731. + AVR32_MNEMONIC_FCMP_D,
  29732. + AVR32_MNEMONIC_FMOV_S,
  29733. + AVR32_MNEMONIC_FMOV_D,
  29734. + AVR32_MNEMONIC_FCASTS_D,
  29735. + AVR32_MNEMONIC_FCASTD_S,
  29736. + /* AVR32_MNEMONIC_FLD_S,
  29737. + AVR32_MNEMONIC_FLD_D,
  29738. + AVR32_MNEMONIC_FST_S,
  29739. + AVR32_MNEMONIC_FST_D, */
  29740. + AVR32_MNEMONIC_LDA_W,
  29741. + AVR32_MNEMONIC_CALL,
  29742. + AVR32_MNEMONIC_PICOSVMAC,
  29743. + AVR32_MNEMONIC_PICOSVMUL,
  29744. + AVR32_MNEMONIC_PICOVMAC,
  29745. + AVR32_MNEMONIC_PICOVMUL,
  29746. + AVR32_MNEMONIC_PICOLD_D,
  29747. + AVR32_MNEMONIC_PICOLD_W,
  29748. + AVR32_MNEMONIC_PICOLDM_D,
  29749. + AVR32_MNEMONIC_PICOLDM_W,
  29750. + AVR32_MNEMONIC_PICOMV_D,
  29751. + AVR32_MNEMONIC_PICOMV_W,
  29752. + AVR32_MNEMONIC_PICOST_D,
  29753. + AVR32_MNEMONIC_PICOST_W,
  29754. + AVR32_MNEMONIC_PICOSTM_D,
  29755. + AVR32_MNEMONIC_PICOSTM_W,
  29756. + AVR32_MNEMONIC_RSUBEQ,
  29757. + AVR32_MNEMONIC_RSUBNE,
  29758. + AVR32_MNEMONIC_RSUBCC,
  29759. + AVR32_MNEMONIC_RSUBCS,
  29760. + AVR32_MNEMONIC_RSUBGE,
  29761. + AVR32_MNEMONIC_RSUBLT,
  29762. + AVR32_MNEMONIC_RSUBMI,
  29763. + AVR32_MNEMONIC_RSUBPL,
  29764. + AVR32_MNEMONIC_RSUBLS,
  29765. + AVR32_MNEMONIC_RSUBGT,
  29766. + AVR32_MNEMONIC_RSUBLE,
  29767. + AVR32_MNEMONIC_RSUBHI,
  29768. + AVR32_MNEMONIC_RSUBVS,
  29769. + AVR32_MNEMONIC_RSUBVC,
  29770. + AVR32_MNEMONIC_RSUBQS,
  29771. + AVR32_MNEMONIC_RSUBAL,
  29772. + AVR32_MNEMONIC_RSUBHS,
  29773. + AVR32_MNEMONIC_RSUBLO,
  29774. + AVR32_MNEMONIC_ADDEQ,
  29775. + AVR32_MNEMONIC_ADDNE,
  29776. + AVR32_MNEMONIC_ADDCC,
  29777. + AVR32_MNEMONIC_ADDCS,
  29778. + AVR32_MNEMONIC_ADDGE,
  29779. + AVR32_MNEMONIC_ADDLT,
  29780. + AVR32_MNEMONIC_ADDMI,
  29781. + AVR32_MNEMONIC_ADDPL,
  29782. + AVR32_MNEMONIC_ADDLS,
  29783. + AVR32_MNEMONIC_ADDGT,
  29784. + AVR32_MNEMONIC_ADDLE,
  29785. + AVR32_MNEMONIC_ADDHI,
  29786. + AVR32_MNEMONIC_ADDVS,
  29787. + AVR32_MNEMONIC_ADDVC,
  29788. + AVR32_MNEMONIC_ADDQS,
  29789. + AVR32_MNEMONIC_ADDAL,
  29790. + AVR32_MNEMONIC_ADDHS,
  29791. + AVR32_MNEMONIC_ADDLO,
  29792. + AVR32_MNEMONIC_ANDEQ,
  29793. + AVR32_MNEMONIC_ANDNE,
  29794. + AVR32_MNEMONIC_ANDCC,
  29795. + AVR32_MNEMONIC_ANDCS,
  29796. + AVR32_MNEMONIC_ANDGE,
  29797. + AVR32_MNEMONIC_ANDLT,
  29798. + AVR32_MNEMONIC_ANDMI,
  29799. + AVR32_MNEMONIC_ANDPL,
  29800. + AVR32_MNEMONIC_ANDLS,
  29801. + AVR32_MNEMONIC_ANDGT,
  29802. + AVR32_MNEMONIC_ANDLE,
  29803. + AVR32_MNEMONIC_ANDHI,
  29804. + AVR32_MNEMONIC_ANDVS,
  29805. + AVR32_MNEMONIC_ANDVC,
  29806. + AVR32_MNEMONIC_ANDQS,
  29807. + AVR32_MNEMONIC_ANDAL,
  29808. + AVR32_MNEMONIC_ANDHS,
  29809. + AVR32_MNEMONIC_ANDLO,
  29810. + AVR32_MNEMONIC_OREQ,
  29811. + AVR32_MNEMONIC_ORNE,
  29812. + AVR32_MNEMONIC_ORCC,
  29813. + AVR32_MNEMONIC_ORCS,
  29814. + AVR32_MNEMONIC_ORGE,
  29815. + AVR32_MNEMONIC_ORLT,
  29816. + AVR32_MNEMONIC_ORMI,
  29817. + AVR32_MNEMONIC_ORPL,
  29818. + AVR32_MNEMONIC_ORLS,
  29819. + AVR32_MNEMONIC_ORGT,
  29820. + AVR32_MNEMONIC_ORLE,
  29821. + AVR32_MNEMONIC_ORHI,
  29822. + AVR32_MNEMONIC_ORVS,
  29823. + AVR32_MNEMONIC_ORVC,
  29824. + AVR32_MNEMONIC_ORQS,
  29825. + AVR32_MNEMONIC_ORAL,
  29826. + AVR32_MNEMONIC_ORHS,
  29827. + AVR32_MNEMONIC_ORLO,
  29828. + AVR32_MNEMONIC_EOREQ,
  29829. + AVR32_MNEMONIC_EORNE,
  29830. + AVR32_MNEMONIC_EORCC,
  29831. + AVR32_MNEMONIC_EORCS,
  29832. + AVR32_MNEMONIC_EORGE,
  29833. + AVR32_MNEMONIC_EORLT,
  29834. + AVR32_MNEMONIC_EORMI,
  29835. + AVR32_MNEMONIC_EORPL,
  29836. + AVR32_MNEMONIC_EORLS,
  29837. + AVR32_MNEMONIC_EORGT,
  29838. + AVR32_MNEMONIC_EORLE,
  29839. + AVR32_MNEMONIC_EORHI,
  29840. + AVR32_MNEMONIC_EORVS,
  29841. + AVR32_MNEMONIC_EORVC,
  29842. + AVR32_MNEMONIC_EORQS,
  29843. + AVR32_MNEMONIC_EORAL,
  29844. + AVR32_MNEMONIC_EORHS,
  29845. + AVR32_MNEMONIC_EORLO,
  29846. + AVR32_MNEMONIC_LD_WEQ,
  29847. + AVR32_MNEMONIC_LD_WNE,
  29848. + AVR32_MNEMONIC_LD_WCC,
  29849. + AVR32_MNEMONIC_LD_WCS,
  29850. + AVR32_MNEMONIC_LD_WGE,
  29851. + AVR32_MNEMONIC_LD_WLT,
  29852. + AVR32_MNEMONIC_LD_WMI,
  29853. + AVR32_MNEMONIC_LD_WPL,
  29854. + AVR32_MNEMONIC_LD_WLS,
  29855. + AVR32_MNEMONIC_LD_WGT,
  29856. + AVR32_MNEMONIC_LD_WLE,
  29857. + AVR32_MNEMONIC_LD_WHI,
  29858. + AVR32_MNEMONIC_LD_WVS,
  29859. + AVR32_MNEMONIC_LD_WVC,
  29860. + AVR32_MNEMONIC_LD_WQS,
  29861. + AVR32_MNEMONIC_LD_WAL,
  29862. + AVR32_MNEMONIC_LD_WHS,
  29863. + AVR32_MNEMONIC_LD_WLO,
  29864. + AVR32_MNEMONIC_LD_SHEQ,
  29865. + AVR32_MNEMONIC_LD_SHNE,
  29866. + AVR32_MNEMONIC_LD_SHCC,
  29867. + AVR32_MNEMONIC_LD_SHCS,
  29868. + AVR32_MNEMONIC_LD_SHGE,
  29869. + AVR32_MNEMONIC_LD_SHLT,
  29870. + AVR32_MNEMONIC_LD_SHMI,
  29871. + AVR32_MNEMONIC_LD_SHPL,
  29872. + AVR32_MNEMONIC_LD_SHLS,
  29873. + AVR32_MNEMONIC_LD_SHGT,
  29874. + AVR32_MNEMONIC_LD_SHLE,
  29875. + AVR32_MNEMONIC_LD_SHHI,
  29876. + AVR32_MNEMONIC_LD_SHVS,
  29877. + AVR32_MNEMONIC_LD_SHVC,
  29878. + AVR32_MNEMONIC_LD_SHQS,
  29879. + AVR32_MNEMONIC_LD_SHAL,
  29880. + AVR32_MNEMONIC_LD_SHHS,
  29881. + AVR32_MNEMONIC_LD_SHLO,
  29882. + AVR32_MNEMONIC_LD_UHEQ,
  29883. + AVR32_MNEMONIC_LD_UHNE,
  29884. + AVR32_MNEMONIC_LD_UHCC,
  29885. + AVR32_MNEMONIC_LD_UHCS,
  29886. + AVR32_MNEMONIC_LD_UHGE,
  29887. + AVR32_MNEMONIC_LD_UHLT,
  29888. + AVR32_MNEMONIC_LD_UHMI,
  29889. + AVR32_MNEMONIC_LD_UHPL,
  29890. + AVR32_MNEMONIC_LD_UHLS,
  29891. + AVR32_MNEMONIC_LD_UHGT,
  29892. + AVR32_MNEMONIC_LD_UHLE,
  29893. + AVR32_MNEMONIC_LD_UHHI,
  29894. + AVR32_MNEMONIC_LD_UHVS,
  29895. + AVR32_MNEMONIC_LD_UHVC,
  29896. + AVR32_MNEMONIC_LD_UHQS,
  29897. + AVR32_MNEMONIC_LD_UHAL,
  29898. + AVR32_MNEMONIC_LD_UHHS,
  29899. + AVR32_MNEMONIC_LD_UHLO,
  29900. + AVR32_MNEMONIC_LD_SBEQ,
  29901. + AVR32_MNEMONIC_LD_SBNE,
  29902. + AVR32_MNEMONIC_LD_SBCC,
  29903. + AVR32_MNEMONIC_LD_SBCS,
  29904. + AVR32_MNEMONIC_LD_SBGE,
  29905. + AVR32_MNEMONIC_LD_SBLT,
  29906. + AVR32_MNEMONIC_LD_SBMI,
  29907. + AVR32_MNEMONIC_LD_SBPL,
  29908. + AVR32_MNEMONIC_LD_SBLS,
  29909. + AVR32_MNEMONIC_LD_SBGT,
  29910. + AVR32_MNEMONIC_LD_SBLE,
  29911. + AVR32_MNEMONIC_LD_SBHI,
  29912. + AVR32_MNEMONIC_LD_SBVS,
  29913. + AVR32_MNEMONIC_LD_SBVC,
  29914. + AVR32_MNEMONIC_LD_SBQS,
  29915. + AVR32_MNEMONIC_LD_SBAL,
  29916. + AVR32_MNEMONIC_LD_SBHS,
  29917. + AVR32_MNEMONIC_LD_SBLO,
  29918. + AVR32_MNEMONIC_LD_UBEQ,
  29919. + AVR32_MNEMONIC_LD_UBNE,
  29920. + AVR32_MNEMONIC_LD_UBCC,
  29921. + AVR32_MNEMONIC_LD_UBCS,
  29922. + AVR32_MNEMONIC_LD_UBGE,
  29923. + AVR32_MNEMONIC_LD_UBLT,
  29924. + AVR32_MNEMONIC_LD_UBMI,
  29925. + AVR32_MNEMONIC_LD_UBPL,
  29926. + AVR32_MNEMONIC_LD_UBLS,
  29927. + AVR32_MNEMONIC_LD_UBGT,
  29928. + AVR32_MNEMONIC_LD_UBLE,
  29929. + AVR32_MNEMONIC_LD_UBHI,
  29930. + AVR32_MNEMONIC_LD_UBVS,
  29931. + AVR32_MNEMONIC_LD_UBVC,
  29932. + AVR32_MNEMONIC_LD_UBQS,
  29933. + AVR32_MNEMONIC_LD_UBAL,
  29934. + AVR32_MNEMONIC_LD_UBHS,
  29935. + AVR32_MNEMONIC_LD_UBLO,
  29936. + AVR32_MNEMONIC_ST_WEQ,
  29937. + AVR32_MNEMONIC_ST_WNE,
  29938. + AVR32_MNEMONIC_ST_WCC,
  29939. + AVR32_MNEMONIC_ST_WCS,
  29940. + AVR32_MNEMONIC_ST_WGE,
  29941. + AVR32_MNEMONIC_ST_WLT,
  29942. + AVR32_MNEMONIC_ST_WMI,
  29943. + AVR32_MNEMONIC_ST_WPL,
  29944. + AVR32_MNEMONIC_ST_WLS,
  29945. + AVR32_MNEMONIC_ST_WGT,
  29946. + AVR32_MNEMONIC_ST_WLE,
  29947. + AVR32_MNEMONIC_ST_WHI,
  29948. + AVR32_MNEMONIC_ST_WVS,
  29949. + AVR32_MNEMONIC_ST_WVC,
  29950. + AVR32_MNEMONIC_ST_WQS,
  29951. + AVR32_MNEMONIC_ST_WAL,
  29952. + AVR32_MNEMONIC_ST_WHS,
  29953. + AVR32_MNEMONIC_ST_WLO,
  29954. + AVR32_MNEMONIC_ST_HEQ,
  29955. + AVR32_MNEMONIC_ST_HNE,
  29956. + AVR32_MNEMONIC_ST_HCC,
  29957. + AVR32_MNEMONIC_ST_HCS,
  29958. + AVR32_MNEMONIC_ST_HGE,
  29959. + AVR32_MNEMONIC_ST_HLT,
  29960. + AVR32_MNEMONIC_ST_HMI,
  29961. + AVR32_MNEMONIC_ST_HPL,
  29962. + AVR32_MNEMONIC_ST_HLS,
  29963. + AVR32_MNEMONIC_ST_HGT,
  29964. + AVR32_MNEMONIC_ST_HLE,
  29965. + AVR32_MNEMONIC_ST_HHI,
  29966. + AVR32_MNEMONIC_ST_HVS,
  29967. + AVR32_MNEMONIC_ST_HVC,
  29968. + AVR32_MNEMONIC_ST_HQS,
  29969. + AVR32_MNEMONIC_ST_HAL,
  29970. + AVR32_MNEMONIC_ST_HHS,
  29971. + AVR32_MNEMONIC_ST_HLO,
  29972. + AVR32_MNEMONIC_ST_BEQ,
  29973. + AVR32_MNEMONIC_ST_BNE,
  29974. + AVR32_MNEMONIC_ST_BCC,
  29975. + AVR32_MNEMONIC_ST_BCS,
  29976. + AVR32_MNEMONIC_ST_BGE,
  29977. + AVR32_MNEMONIC_ST_BLT,
  29978. + AVR32_MNEMONIC_ST_BMI,
  29979. + AVR32_MNEMONIC_ST_BPL,
  29980. + AVR32_MNEMONIC_ST_BLS,
  29981. + AVR32_MNEMONIC_ST_BGT,
  29982. + AVR32_MNEMONIC_ST_BLE,
  29983. + AVR32_MNEMONIC_ST_BHI,
  29984. + AVR32_MNEMONIC_ST_BVS,
  29985. + AVR32_MNEMONIC_ST_BVC,
  29986. + AVR32_MNEMONIC_ST_BQS,
  29987. + AVR32_MNEMONIC_ST_BAL,
  29988. + AVR32_MNEMONIC_ST_BHS,
  29989. + AVR32_MNEMONIC_ST_BLO,
  29990. + AVR32_MNEMONIC_MOVH,
  29991. + AVR32_MNEMONIC__END_
  29992. +};
  29993. +#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
  29994. +
  29995. +enum avr32_syntax_parser
  29996. + {
  29997. + AVR32_PARSER_NORMAL,
  29998. + AVR32_PARSER_ALIAS,
  29999. + AVR32_PARSER_LDA,
  30000. + AVR32_PARSER_CALL,
  30001. + AVR32_PARSER__END_
  30002. + };
  30003. +#define AVR32_NR_PARSERS AVR32_PARSER__END_
  30004. --- a/opcodes/configure.in
  30005. +++ b/opcodes/configure.in
  30006. @@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
  30007. bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
  30008. bfd_arm_arch) ta="$ta arm-dis.lo" ;;
  30009. bfd_avr_arch) ta="$ta avr-dis.lo" ;;
  30010. + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
  30011. bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
  30012. bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
  30013. bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
  30014. @@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
  30015. ta="$ta sh64-dis.lo sh64-opc.lo"
  30016. archdefs="$archdefs -DINCLUDE_SHMEDIA"
  30017. break;;
  30018. - esac;
  30019. + esac
  30020. done
  30021. ta="$ta sh-dis.lo cgen-bitset.lo" ;;
  30022. bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
  30023. --- a/opcodes/disassemble.c
  30024. +++ b/opcodes/disassemble.c
  30025. @@ -27,6 +27,7 @@
  30026. #define ARCH_arc
  30027. #define ARCH_arm
  30028. #define ARCH_avr
  30029. +#define ARCH_avr32
  30030. #define ARCH_bfin
  30031. #define ARCH_cr16
  30032. #define ARCH_cris
  30033. @@ -128,6 +129,11 @@ disassembler (abfd)
  30034. disassemble = print_insn_avr;
  30035. break;
  30036. #endif
  30037. +#ifdef ARCH_avr32
  30038. + case bfd_arch_avr32:
  30039. + disassemble = print_insn_avr32;
  30040. + break;
  30041. +#endif
  30042. #ifdef ARCH_bfin
  30043. case bfd_arch_bfin:
  30044. disassemble = print_insn_bfin;
  30045. @@ -346,9 +352,9 @@ disassembler (abfd)
  30046. #ifdef ARCH_score
  30047. case bfd_arch_score:
  30048. if (bfd_big_endian (abfd))
  30049. - disassemble = print_insn_big_score;
  30050. + disassemble = print_insn_big_score;
  30051. else
  30052. - disassemble = print_insn_little_score;
  30053. + disassemble = print_insn_little_score;
  30054. break;
  30055. #endif
  30056. #ifdef ARCH_sh
  30057. @@ -466,6 +472,9 @@ disassembler_usage (stream)
  30058. #ifdef ARCH_i386
  30059. print_i386_disassembler_options (stream);
  30060. #endif
  30061. +#ifdef ARCH_avr32
  30062. + print_avr32_disassembler_options (stream);
  30063. +#endif
  30064. return;
  30065. }
  30066. --- a/opcodes/Makefile.am
  30067. +++ b/opcodes/Makefile.am
  30068. @@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
  30069. # Header files.
  30070. HFILES = \
  30071. cgen-ops.h cgen-types.h \
  30072. + avr32-asm.h avr32-opc.h \
  30073. fr30-desc.h fr30-opc.h \
  30074. frv-desc.h frv-opc.h \
  30075. h8500-opc.h \
  30076. @@ -63,6 +64,9 @@ CFILES = \
  30077. arc-ext.c \
  30078. arm-dis.c \
  30079. avr-dis.c \
  30080. + avr32-asm.c \
  30081. + avr32-dis.c \
  30082. + avr32-opc.c \
  30083. bfin-dis.c \
  30084. cgen-asm.c \
  30085. cgen-bitset.c \
  30086. @@ -217,6 +221,9 @@ ALL_MACHINES = \
  30087. arc-ext.lo \
  30088. arm-dis.lo \
  30089. avr-dis.lo \
  30090. + avr32-asm.lo \
  30091. + avr32-dis.lo \
  30092. + avr32-opc.lo \
  30093. bfin-dis.lo \
  30094. cgen-asm.lo \
  30095. cgen-bitset.lo \
  30096. @@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
  30097. $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
  30098. opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
  30099. $(INCDIR)/opcode/avr.h
  30100. +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  30101. + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
  30102. + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
  30103. + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
  30104. +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  30105. + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
  30106. + avr32-opc.h opintl.h
  30107. +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  30108. + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
  30109. bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
  30110. $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
  30111. cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  30112. --- a/bfd/bfd-in2.h
  30113. +++ b/bfd/bfd-in2.h
  30114. @@ -2017,6 +2017,11 @@ enum bfd_architecture
  30115. #define bfd_mach_avr4 4
  30116. #define bfd_mach_avr5 5
  30117. #define bfd_mach_avr6 6
  30118. + bfd_arch_avr32, /* Atmel AVR32 */
  30119. +#define bfd_mach_avr32_ap 7000
  30120. +#define bfd_mach_avr32_uc 3000
  30121. +#define bfd_mach_avr32_ucr1 3001
  30122. +#define bfd_mach_avr32_ucr2 3002
  30123. bfd_arch_bfin, /* ADI Blackfin */
  30124. #define bfd_mach_bfin 1
  30125. bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
  30126. @@ -3758,6 +3763,88 @@ instructions */
  30127. instructions */
  30128. BFD_RELOC_AVR_6_ADIW,
  30129. +/* Difference between two labels: L2 - L1. The value of L1 is encoded
  30130. +as sym + addend, while the initial difference after assembly is
  30131. +inserted into the object file by the assembler. */
  30132. + BFD_RELOC_AVR32_DIFF32,
  30133. + BFD_RELOC_AVR32_DIFF16,
  30134. + BFD_RELOC_AVR32_DIFF8,
  30135. +
  30136. +/* Reference to a symbol through the Global Offset Table. The linker
  30137. +will allocate an entry for symbol in the GOT and insert the offset
  30138. +of this entry as the relocation value. */
  30139. + BFD_RELOC_AVR32_GOT32,
  30140. + BFD_RELOC_AVR32_GOT16,
  30141. + BFD_RELOC_AVR32_GOT8,
  30142. +
  30143. +/* Normal (non-pc-relative) code relocations. Alignment and signedness
  30144. +is indicated by the suffixes. S means signed, U means unsigned. W
  30145. +means word-aligned, H means halfword-aligned, neither means
  30146. +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
  30147. + BFD_RELOC_AVR32_21S,
  30148. + BFD_RELOC_AVR32_16U,
  30149. + BFD_RELOC_AVR32_16S,
  30150. + BFD_RELOC_AVR32_SUB5,
  30151. + BFD_RELOC_AVR32_8S_EXT,
  30152. + BFD_RELOC_AVR32_8S,
  30153. + BFD_RELOC_AVR32_15S,
  30154. +
  30155. +/* PC-relative relocations are signed if neither 'U' nor 'S' is
  30156. +specified. However, we explicitly tack on a 'B' to indicate no
  30157. +alignment, to avoid confusion with data relocs. All of these resolve
  30158. +to sym + addend - offset, except the one with 'N' (negated) suffix.
  30159. +This particular one resolves to offset - sym - addend. */
  30160. + BFD_RELOC_AVR32_22H_PCREL,
  30161. + BFD_RELOC_AVR32_18W_PCREL,
  30162. + BFD_RELOC_AVR32_16B_PCREL,
  30163. + BFD_RELOC_AVR32_16N_PCREL,
  30164. + BFD_RELOC_AVR32_14UW_PCREL,
  30165. + BFD_RELOC_AVR32_11H_PCREL,
  30166. + BFD_RELOC_AVR32_10UW_PCREL,
  30167. + BFD_RELOC_AVR32_9H_PCREL,
  30168. + BFD_RELOC_AVR32_9UW_PCREL,
  30169. +
  30170. +/* Subtract the link-time address of the GOT from (symbol + addend)
  30171. +and insert the result. */
  30172. + BFD_RELOC_AVR32_GOTPC,
  30173. +
  30174. +/* Reference to a symbol through the GOT. The linker will allocate an
  30175. +entry for symbol in the GOT and insert the offset of this entry as
  30176. +the relocation value. addend must be zero. As usual, 'S' means
  30177. +signed, 'W' means word-aligned, etc. */
  30178. + BFD_RELOC_AVR32_GOTCALL,
  30179. + BFD_RELOC_AVR32_LDA_GOT,
  30180. + BFD_RELOC_AVR32_GOT21S,
  30181. + BFD_RELOC_AVR32_GOT18SW,
  30182. + BFD_RELOC_AVR32_GOT16S,
  30183. +
  30184. +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
  30185. +a whole lot of sense. */
  30186. + BFD_RELOC_AVR32_32_CPENT,
  30187. +
  30188. +/* Constant pool references. Some of these relocations are signed,
  30189. +others are unsigned. It doesn't really matter, since the constant
  30190. +pool always comes after the code that references it. */
  30191. + BFD_RELOC_AVR32_CPCALL,
  30192. + BFD_RELOC_AVR32_16_CP,
  30193. + BFD_RELOC_AVR32_9W_CP,
  30194. +
  30195. +/* sym must be the absolute symbol. The addend specifies the alignment
  30196. +order, e.g. if addend is 2, the linker must add padding so that the
  30197. +next address is aligned to a 4-byte boundary. */
  30198. + BFD_RELOC_AVR32_ALIGN,
  30199. +
  30200. +/* Code relocations that will never make it to the output file. */
  30201. + BFD_RELOC_AVR32_14UW,
  30202. + BFD_RELOC_AVR32_10UW,
  30203. + BFD_RELOC_AVR32_10SW,
  30204. + BFD_RELOC_AVR32_STHH_W,
  30205. + BFD_RELOC_AVR32_7UW,
  30206. + BFD_RELOC_AVR32_6S,
  30207. + BFD_RELOC_AVR32_6UW,
  30208. + BFD_RELOC_AVR32_4UH,
  30209. + BFD_RELOC_AVR32_3U,
  30210. +
  30211. /* Direct 12 bit. */
  30212. BFD_RELOC_390_12,
  30213. --- /dev/null
  30214. +++ b/bfd/bfd-in3.h
  30215. @@ -0,0 +1,5406 @@
  30216. +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
  30217. + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
  30218. + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
  30219. + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
  30220. + "linker.c" and "simple.c".
  30221. + Run "make headers" in your build bfd/ to regenerate. */
  30222. +
  30223. +/* Main header file for the bfd library -- portable access to object files.
  30224. +
  30225. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
  30226. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
  30227. + Free Software Foundation, Inc.
  30228. +
  30229. + Contributed by Cygnus Support.
  30230. +
  30231. + This file is part of BFD, the Binary File Descriptor library.
  30232. +
  30233. + This program is free software; you can redistribute it and/or modify
  30234. + it under the terms of the GNU General Public License as published by
  30235. + the Free Software Foundation; either version 3 of the License, or
  30236. + (at your option) any later version.
  30237. +
  30238. + This program is distributed in the hope that it will be useful,
  30239. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  30240. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  30241. + GNU General Public License for more details.
  30242. +
  30243. + You should have received a copy of the GNU General Public License
  30244. + along with this program; if not, write to the Free Software
  30245. + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
  30246. +
  30247. +#ifndef __BFD_H_SEEN__
  30248. +#define __BFD_H_SEEN__
  30249. +
  30250. +#ifdef __cplusplus
  30251. +extern "C" {
  30252. +#endif
  30253. +
  30254. +#include "ansidecl.h"
  30255. +#include "symcat.h"
  30256. +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
  30257. +#ifndef SABER
  30258. +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
  30259. + The problem is, "32_" is not a valid preprocessing token, and we don't
  30260. + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
  30261. + cause the inner CONCAT2 macros to be evaluated first, producing
  30262. + still-valid pp-tokens. Then the final concatenation can be done. */
  30263. +#undef CONCAT4
  30264. +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
  30265. +#endif
  30266. +#endif
  30267. +
  30268. +/* This is a utility macro to handle the situation where the code
  30269. + wants to place a constant string into the code, followed by a
  30270. + comma and then the length of the string. Doing this by hand
  30271. + is error prone, so using this macro is safer. The macro will
  30272. + also safely handle the case where a NULL is passed as the arg. */
  30273. +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
  30274. +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
  30275. + to create the arguments to another macro, since the preprocessor
  30276. + will mis-count the number of arguments to the outer macro (by not
  30277. + evaluating STRING_COMMA_LEN and so missing the comma). This is a
  30278. + problem for example when trying to use STRING_COMMA_LEN to build
  30279. + the arguments to the strncmp() macro. Hence this alternative
  30280. + definition of strncmp is provided here.
  30281. +
  30282. + Note - these macros do NOT work if STR2 is not a constant string. */
  30283. +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
  30284. + /* strcpy() can have a similar problem, but since we know we are
  30285. + copying a constant string, we can use memcpy which will be faster
  30286. + since there is no need to check for a NUL byte inside STR. We
  30287. + can also save time if we do not need to copy the terminating NUL. */
  30288. +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
  30289. +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
  30290. +
  30291. +
  30292. +/* The word size used by BFD on the host. This may be 64 with a 32
  30293. + bit target if the host is 64 bit, or if other 64 bit targets have
  30294. + been selected with --enable-targets, or if --enable-64-bit-bfd. */
  30295. +#define BFD_ARCH_SIZE 32
  30296. +
  30297. +/* The word size of the default bfd target. */
  30298. +#define BFD_DEFAULT_TARGET_SIZE 32
  30299. +
  30300. +#define BFD_HOST_64BIT_LONG 0
  30301. +#define BFD_HOST_64BIT_LONG_LONG 0
  30302. +#define BFD_HOST_LONG_LONG 1
  30303. +#if 1
  30304. +#define BFD_HOST_64_BIT long long
  30305. +#define BFD_HOST_U_64_BIT unsigned long long
  30306. +typedef BFD_HOST_64_BIT bfd_int64_t;
  30307. +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
  30308. +#endif
  30309. +
  30310. +#if BFD_ARCH_SIZE >= 64
  30311. +#define BFD64
  30312. +#endif
  30313. +
  30314. +#ifndef INLINE
  30315. +#if __GNUC__ >= 2
  30316. +#define INLINE __inline__
  30317. +#else
  30318. +#define INLINE
  30319. +#endif
  30320. +#endif
  30321. +
  30322. +/* Declaring a type wide enough to hold a host long and a host pointer. */
  30323. +#define BFD_HOSTPTR_T unsigned long
  30324. +typedef BFD_HOSTPTR_T bfd_hostptr_t;
  30325. +
  30326. +/* Forward declaration. */
  30327. +typedef struct bfd bfd;
  30328. +
  30329. +/* Boolean type used in bfd. Too many systems define their own
  30330. + versions of "boolean" for us to safely typedef a "boolean" of
  30331. + our own. Using an enum for "bfd_boolean" has its own set of
  30332. + problems, with strange looking casts required to avoid warnings
  30333. + on some older compilers. Thus we just use an int.
  30334. +
  30335. + General rule: Functions which are bfd_boolean return TRUE on
  30336. + success and FALSE on failure (unless they're a predicate). */
  30337. +
  30338. +typedef int bfd_boolean;
  30339. +#undef FALSE
  30340. +#undef TRUE
  30341. +#define FALSE 0
  30342. +#define TRUE 1
  30343. +
  30344. +#ifdef BFD64
  30345. +
  30346. +#ifndef BFD_HOST_64_BIT
  30347. + #error No 64 bit integer type available
  30348. +#endif /* ! defined (BFD_HOST_64_BIT) */
  30349. +
  30350. +typedef BFD_HOST_U_64_BIT bfd_vma;
  30351. +typedef BFD_HOST_64_BIT bfd_signed_vma;
  30352. +typedef BFD_HOST_U_64_BIT bfd_size_type;
  30353. +typedef BFD_HOST_U_64_BIT symvalue;
  30354. +
  30355. +#ifndef fprintf_vma
  30356. +#if BFD_HOST_64BIT_LONG
  30357. +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
  30358. +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
  30359. +#elif BFD_HOST_64BIT_LONG_LONG
  30360. +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
  30361. +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
  30362. +#else
  30363. +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
  30364. +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
  30365. +#define fprintf_vma(s,x) \
  30366. + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
  30367. +#define sprintf_vma(s,x) \
  30368. + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
  30369. +#endif
  30370. +#endif
  30371. +
  30372. +#else /* not BFD64 */
  30373. +
  30374. +/* Represent a target address. Also used as a generic unsigned type
  30375. + which is guaranteed to be big enough to hold any arithmetic types
  30376. + we need to deal with. */
  30377. +typedef unsigned long bfd_vma;
  30378. +
  30379. +/* A generic signed type which is guaranteed to be big enough to hold any
  30380. + arithmetic types we need to deal with. Can be assumed to be compatible
  30381. + with bfd_vma in the same way that signed and unsigned ints are compatible
  30382. + (as parameters, in assignment, etc). */
  30383. +typedef long bfd_signed_vma;
  30384. +
  30385. +typedef unsigned long symvalue;
  30386. +typedef unsigned long bfd_size_type;
  30387. +
  30388. +/* Print a bfd_vma x on stream s. */
  30389. +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
  30390. +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
  30391. +
  30392. +#endif /* not BFD64 */
  30393. +
  30394. +#define HALF_BFD_SIZE_TYPE \
  30395. + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
  30396. +
  30397. +#ifndef BFD_HOST_64_BIT
  30398. +/* Fall back on a 32 bit type. The idea is to make these types always
  30399. + available for function return types, but in the case that
  30400. + BFD_HOST_64_BIT is undefined such a function should abort or
  30401. + otherwise signal an error. */
  30402. +typedef bfd_signed_vma bfd_int64_t;
  30403. +typedef bfd_vma bfd_uint64_t;
  30404. +#endif
  30405. +
  30406. +/* An offset into a file. BFD always uses the largest possible offset
  30407. + based on the build time availability of fseek, fseeko, or fseeko64. */
  30408. +typedef BFD_HOST_64_BIT file_ptr;
  30409. +typedef unsigned BFD_HOST_64_BIT ufile_ptr;
  30410. +
  30411. +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
  30412. +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
  30413. +
  30414. +#define printf_vma(x) fprintf_vma(stdout,x)
  30415. +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
  30416. +
  30417. +typedef unsigned int flagword; /* 32 bits of flags */
  30418. +typedef unsigned char bfd_byte;
  30419. +
  30420. +/* File formats. */
  30421. +
  30422. +typedef enum bfd_format
  30423. +{
  30424. + bfd_unknown = 0, /* File format is unknown. */
  30425. + bfd_object, /* Linker/assembler/compiler output. */
  30426. + bfd_archive, /* Object archive file. */
  30427. + bfd_core, /* Core dump. */
  30428. + bfd_type_end /* Marks the end; don't use it! */
  30429. +}
  30430. +bfd_format;
  30431. +
  30432. +/* Values that may appear in the flags field of a BFD. These also
  30433. + appear in the object_flags field of the bfd_target structure, where
  30434. + they indicate the set of flags used by that backend (not all flags
  30435. + are meaningful for all object file formats) (FIXME: at the moment,
  30436. + the object_flags values have mostly just been copied from backend
  30437. + to another, and are not necessarily correct). */
  30438. +
  30439. +/* No flags. */
  30440. +#define BFD_NO_FLAGS 0x00
  30441. +
  30442. +/* BFD contains relocation entries. */
  30443. +#define HAS_RELOC 0x01
  30444. +
  30445. +/* BFD is directly executable. */
  30446. +#define EXEC_P 0x02
  30447. +
  30448. +/* BFD has line number information (basically used for F_LNNO in a
  30449. + COFF header). */
  30450. +#define HAS_LINENO 0x04
  30451. +
  30452. +/* BFD has debugging information. */
  30453. +#define HAS_DEBUG 0x08
  30454. +
  30455. +/* BFD has symbols. */
  30456. +#define HAS_SYMS 0x10
  30457. +
  30458. +/* BFD has local symbols (basically used for F_LSYMS in a COFF
  30459. + header). */
  30460. +#define HAS_LOCALS 0x20
  30461. +
  30462. +/* BFD is a dynamic object. */
  30463. +#define DYNAMIC 0x40
  30464. +
  30465. +/* Text section is write protected (if D_PAGED is not set, this is
  30466. + like an a.out NMAGIC file) (the linker sets this by default, but
  30467. + clears it for -r or -N). */
  30468. +#define WP_TEXT 0x80
  30469. +
  30470. +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
  30471. + linker sets this by default, but clears it for -r or -n or -N). */
  30472. +#define D_PAGED 0x100
  30473. +
  30474. +/* BFD is relaxable (this means that bfd_relax_section may be able to
  30475. + do something) (sometimes bfd_relax_section can do something even if
  30476. + this is not set). */
  30477. +#define BFD_IS_RELAXABLE 0x200
  30478. +
  30479. +/* This may be set before writing out a BFD to request using a
  30480. + traditional format. For example, this is used to request that when
  30481. + writing out an a.out object the symbols not be hashed to eliminate
  30482. + duplicates. */
  30483. +#define BFD_TRADITIONAL_FORMAT 0x400
  30484. +
  30485. +/* This flag indicates that the BFD contents are actually cached in
  30486. + memory. If this is set, iostream points to a bfd_in_memory struct. */
  30487. +#define BFD_IN_MEMORY 0x800
  30488. +
  30489. +/* The sections in this BFD specify a memory page. */
  30490. +#define HAS_LOAD_PAGE 0x1000
  30491. +
  30492. +/* This BFD has been created by the linker and doesn't correspond
  30493. + to any input file. */
  30494. +#define BFD_LINKER_CREATED 0x2000
  30495. +
  30496. +/* Symbols and relocation. */
  30497. +
  30498. +/* A count of carsyms (canonical archive symbols). */
  30499. +typedef unsigned long symindex;
  30500. +
  30501. +/* How to perform a relocation. */
  30502. +typedef const struct reloc_howto_struct reloc_howto_type;
  30503. +
  30504. +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
  30505. +
  30506. +/* General purpose part of a symbol X;
  30507. + target specific parts are in libcoff.h, libaout.h, etc. */
  30508. +
  30509. +#define bfd_get_section(x) ((x)->section)
  30510. +#define bfd_get_output_section(x) ((x)->section->output_section)
  30511. +#define bfd_set_section(x,y) ((x)->section) = (y)
  30512. +#define bfd_asymbol_base(x) ((x)->section->vma)
  30513. +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
  30514. +#define bfd_asymbol_name(x) ((x)->name)
  30515. +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
  30516. +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
  30517. +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
  30518. +
  30519. +/* A canonical archive symbol. */
  30520. +/* This is a type pun with struct ranlib on purpose! */
  30521. +typedef struct carsym
  30522. +{
  30523. + char *name;
  30524. + file_ptr file_offset; /* Look here to find the file. */
  30525. +}
  30526. +carsym; /* To make these you call a carsymogen. */
  30527. +
  30528. +/* Used in generating armaps (archive tables of contents).
  30529. + Perhaps just a forward definition would do? */
  30530. +struct orl /* Output ranlib. */
  30531. +{
  30532. + char **name; /* Symbol name. */
  30533. + union
  30534. + {
  30535. + file_ptr pos;
  30536. + bfd *abfd;
  30537. + } u; /* bfd* or file position. */
  30538. + int namidx; /* Index into string table. */
  30539. +};
  30540. +
  30541. +/* Linenumber stuff. */
  30542. +typedef struct lineno_cache_entry
  30543. +{
  30544. + unsigned int line_number; /* Linenumber from start of function. */
  30545. + union
  30546. + {
  30547. + struct bfd_symbol *sym; /* Function name. */
  30548. + bfd_vma offset; /* Offset into section. */
  30549. + } u;
  30550. +}
  30551. +alent;
  30552. +
  30553. +/* Object and core file sections. */
  30554. +
  30555. +#define align_power(addr, align) \
  30556. + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
  30557. +
  30558. +typedef struct bfd_section *sec_ptr;
  30559. +
  30560. +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
  30561. +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
  30562. +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
  30563. +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
  30564. +#define bfd_section_name(bfd, ptr) ((ptr)->name)
  30565. +#define bfd_section_size(bfd, ptr) ((ptr)->size)
  30566. +#define bfd_get_section_size(ptr) ((ptr)->size)
  30567. +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
  30568. +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
  30569. +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
  30570. +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
  30571. +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
  30572. +
  30573. +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
  30574. +
  30575. +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
  30576. +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
  30577. +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
  30578. +/* Find the address one past the end of SEC. */
  30579. +#define bfd_get_section_limit(bfd, sec) \
  30580. + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
  30581. + / bfd_octets_per_byte (bfd))
  30582. +
  30583. +/* Return TRUE if section has been discarded. */
  30584. +#define elf_discarded_section(sec) \
  30585. + (!bfd_is_abs_section (sec) \
  30586. + && bfd_is_abs_section ((sec)->output_section) \
  30587. + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
  30588. + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
  30589. +
  30590. +/* Forward define. */
  30591. +struct stat;
  30592. +
  30593. +typedef enum bfd_print_symbol
  30594. +{
  30595. + bfd_print_symbol_name,
  30596. + bfd_print_symbol_more,
  30597. + bfd_print_symbol_all
  30598. +} bfd_print_symbol_type;
  30599. +
  30600. +/* Information about a symbol that nm needs. */
  30601. +
  30602. +typedef struct _symbol_info
  30603. +{
  30604. + symvalue value;
  30605. + char type;
  30606. + const char *name; /* Symbol name. */
  30607. + unsigned char stab_type; /* Stab type. */
  30608. + char stab_other; /* Stab other. */
  30609. + short stab_desc; /* Stab desc. */
  30610. + const char *stab_name; /* String for stab type. */
  30611. +} symbol_info;
  30612. +
  30613. +/* Get the name of a stabs type code. */
  30614. +
  30615. +extern const char *bfd_get_stab_name (int);
  30616. +
  30617. +/* Hash table routines. There is no way to free up a hash table. */
  30618. +
  30619. +/* An element in the hash table. Most uses will actually use a larger
  30620. + structure, and an instance of this will be the first field. */
  30621. +
  30622. +struct bfd_hash_entry
  30623. +{
  30624. + /* Next entry for this hash code. */
  30625. + struct bfd_hash_entry *next;
  30626. + /* String being hashed. */
  30627. + const char *string;
  30628. + /* Hash code. This is the full hash code, not the index into the
  30629. + table. */
  30630. + unsigned long hash;
  30631. +};
  30632. +
  30633. +/* A hash table. */
  30634. +
  30635. +struct bfd_hash_table
  30636. +{
  30637. + /* The hash array. */
  30638. + struct bfd_hash_entry **table;
  30639. + /* A function used to create new elements in the hash table. The
  30640. + first entry is itself a pointer to an element. When this
  30641. + function is first invoked, this pointer will be NULL. However,
  30642. + having the pointer permits a hierarchy of method functions to be
  30643. + built each of which calls the function in the superclass. Thus
  30644. + each function should be written to allocate a new block of memory
  30645. + only if the argument is NULL. */
  30646. + struct bfd_hash_entry *(*newfunc)
  30647. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  30648. + /* An objalloc for this hash table. This is a struct objalloc *,
  30649. + but we use void * to avoid requiring the inclusion of objalloc.h. */
  30650. + void *memory;
  30651. + /* The number of slots in the hash table. */
  30652. + unsigned int size;
  30653. + /* The number of entries in the hash table. */
  30654. + unsigned int count;
  30655. + /* The size of elements. */
  30656. + unsigned int entsize;
  30657. + /* If non-zero, don't grow the hash table. */
  30658. + unsigned int frozen:1;
  30659. +};
  30660. +
  30661. +/* Initialize a hash table. */
  30662. +extern bfd_boolean bfd_hash_table_init
  30663. + (struct bfd_hash_table *,
  30664. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  30665. + struct bfd_hash_table *,
  30666. + const char *),
  30667. + unsigned int);
  30668. +
  30669. +/* Initialize a hash table specifying a size. */
  30670. +extern bfd_boolean bfd_hash_table_init_n
  30671. + (struct bfd_hash_table *,
  30672. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  30673. + struct bfd_hash_table *,
  30674. + const char *),
  30675. + unsigned int, unsigned int);
  30676. +
  30677. +/* Free up a hash table. */
  30678. +extern void bfd_hash_table_free
  30679. + (struct bfd_hash_table *);
  30680. +
  30681. +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
  30682. + will be created for this string if one does not already exist. The
  30683. + COPY argument must be TRUE if this routine should copy the string
  30684. + into newly allocated memory when adding an entry. */
  30685. +extern struct bfd_hash_entry *bfd_hash_lookup
  30686. + (struct bfd_hash_table *, const char *, bfd_boolean create,
  30687. + bfd_boolean copy);
  30688. +
  30689. +/* Replace an entry in a hash table. */
  30690. +extern void bfd_hash_replace
  30691. + (struct bfd_hash_table *, struct bfd_hash_entry *old,
  30692. + struct bfd_hash_entry *nw);
  30693. +
  30694. +/* Base method for creating a hash table entry. */
  30695. +extern struct bfd_hash_entry *bfd_hash_newfunc
  30696. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  30697. +
  30698. +/* Grab some space for a hash table entry. */
  30699. +extern void *bfd_hash_allocate
  30700. + (struct bfd_hash_table *, unsigned int);
  30701. +
  30702. +/* Traverse a hash table in a random order, calling a function on each
  30703. + element. If the function returns FALSE, the traversal stops. The
  30704. + INFO argument is passed to the function. */
  30705. +extern void bfd_hash_traverse
  30706. + (struct bfd_hash_table *,
  30707. + bfd_boolean (*) (struct bfd_hash_entry *, void *),
  30708. + void *info);
  30709. +
  30710. +/* Allows the default size of a hash table to be configured. New hash
  30711. + tables allocated using bfd_hash_table_init will be created with
  30712. + this size. */
  30713. +extern void bfd_hash_set_default_size (bfd_size_type);
  30714. +
  30715. +/* This structure is used to keep track of stabs in sections
  30716. + information while linking. */
  30717. +
  30718. +struct stab_info
  30719. +{
  30720. + /* A hash table used to hold stabs strings. */
  30721. + struct bfd_strtab_hash *strings;
  30722. + /* The header file hash table. */
  30723. + struct bfd_hash_table includes;
  30724. + /* The first .stabstr section. */
  30725. + struct bfd_section *stabstr;
  30726. +};
  30727. +
  30728. +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
  30729. +
  30730. +/* User program access to BFD facilities. */
  30731. +
  30732. +/* Direct I/O routines, for programs which know more about the object
  30733. + file than BFD does. Use higher level routines if possible. */
  30734. +
  30735. +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
  30736. +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
  30737. +extern int bfd_seek (bfd *, file_ptr, int);
  30738. +extern file_ptr bfd_tell (bfd *);
  30739. +extern int bfd_flush (bfd *);
  30740. +extern int bfd_stat (bfd *, struct stat *);
  30741. +
  30742. +/* Deprecated old routines. */
  30743. +#if __GNUC__
  30744. +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
  30745. + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
  30746. + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  30747. +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
  30748. + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
  30749. + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  30750. +#else
  30751. +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
  30752. + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
  30753. + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  30754. +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
  30755. + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
  30756. + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  30757. +#endif
  30758. +extern void warn_deprecated (const char *, const char *, int, const char *);
  30759. +
  30760. +/* Cast from const char * to char * so that caller can assign to
  30761. + a char * without a warning. */
  30762. +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
  30763. +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
  30764. +#define bfd_get_format(abfd) ((abfd)->format)
  30765. +#define bfd_get_target(abfd) ((abfd)->xvec->name)
  30766. +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
  30767. +#define bfd_family_coff(abfd) \
  30768. + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
  30769. + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
  30770. +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
  30771. +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
  30772. +#define bfd_header_big_endian(abfd) \
  30773. + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
  30774. +#define bfd_header_little_endian(abfd) \
  30775. + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
  30776. +#define bfd_get_file_flags(abfd) ((abfd)->flags)
  30777. +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
  30778. +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
  30779. +#define bfd_my_archive(abfd) ((abfd)->my_archive)
  30780. +#define bfd_has_map(abfd) ((abfd)->has_armap)
  30781. +
  30782. +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
  30783. +#define bfd_usrdata(abfd) ((abfd)->usrdata)
  30784. +
  30785. +#define bfd_get_start_address(abfd) ((abfd)->start_address)
  30786. +#define bfd_get_symcount(abfd) ((abfd)->symcount)
  30787. +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
  30788. +#define bfd_count_sections(abfd) ((abfd)->section_count)
  30789. +
  30790. +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
  30791. +
  30792. +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
  30793. +
  30794. +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
  30795. +
  30796. +extern bfd_boolean bfd_cache_close
  30797. + (bfd *abfd);
  30798. +/* NB: This declaration should match the autogenerated one in libbfd.h. */
  30799. +
  30800. +extern bfd_boolean bfd_cache_close_all (void);
  30801. +
  30802. +extern bfd_boolean bfd_record_phdr
  30803. + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
  30804. + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
  30805. +
  30806. +/* Byte swapping routines. */
  30807. +
  30808. +bfd_uint64_t bfd_getb64 (const void *);
  30809. +bfd_uint64_t bfd_getl64 (const void *);
  30810. +bfd_int64_t bfd_getb_signed_64 (const void *);
  30811. +bfd_int64_t bfd_getl_signed_64 (const void *);
  30812. +bfd_vma bfd_getb32 (const void *);
  30813. +bfd_vma bfd_getl32 (const void *);
  30814. +bfd_signed_vma bfd_getb_signed_32 (const void *);
  30815. +bfd_signed_vma bfd_getl_signed_32 (const void *);
  30816. +bfd_vma bfd_getb16 (const void *);
  30817. +bfd_vma bfd_getl16 (const void *);
  30818. +bfd_signed_vma bfd_getb_signed_16 (const void *);
  30819. +bfd_signed_vma bfd_getl_signed_16 (const void *);
  30820. +void bfd_putb64 (bfd_uint64_t, void *);
  30821. +void bfd_putl64 (bfd_uint64_t, void *);
  30822. +void bfd_putb32 (bfd_vma, void *);
  30823. +void bfd_putl32 (bfd_vma, void *);
  30824. +void bfd_putb16 (bfd_vma, void *);
  30825. +void bfd_putl16 (bfd_vma, void *);
  30826. +
  30827. +/* Byte swapping routines which take size and endiannes as arguments. */
  30828. +
  30829. +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
  30830. +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
  30831. +
  30832. +extern bfd_boolean bfd_section_already_linked_table_init (void);
  30833. +extern void bfd_section_already_linked_table_free (void);
  30834. +
  30835. +/* Externally visible ECOFF routines. */
  30836. +
  30837. +#if defined(__STDC__) || defined(ALMOST_STDC)
  30838. +struct ecoff_debug_info;
  30839. +struct ecoff_debug_swap;
  30840. +struct ecoff_extr;
  30841. +struct bfd_symbol;
  30842. +struct bfd_link_info;
  30843. +struct bfd_link_hash_entry;
  30844. +struct bfd_elf_version_tree;
  30845. +#endif
  30846. +extern bfd_vma bfd_ecoff_get_gp_value
  30847. + (bfd * abfd);
  30848. +extern bfd_boolean bfd_ecoff_set_gp_value
  30849. + (bfd *abfd, bfd_vma gp_value);
  30850. +extern bfd_boolean bfd_ecoff_set_regmasks
  30851. + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
  30852. + unsigned long *cprmask);
  30853. +extern void *bfd_ecoff_debug_init
  30854. + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
  30855. + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
  30856. +extern void bfd_ecoff_debug_free
  30857. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  30858. + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
  30859. +extern bfd_boolean bfd_ecoff_debug_accumulate
  30860. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  30861. + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
  30862. + struct ecoff_debug_info *input_debug,
  30863. + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
  30864. +extern bfd_boolean bfd_ecoff_debug_accumulate_other
  30865. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  30866. + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
  30867. + struct bfd_link_info *);
  30868. +extern bfd_boolean bfd_ecoff_debug_externals
  30869. + (bfd *abfd, struct ecoff_debug_info *debug,
  30870. + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
  30871. + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
  30872. + void (*set_index) (struct bfd_symbol *, bfd_size_type));
  30873. +extern bfd_boolean bfd_ecoff_debug_one_external
  30874. + (bfd *abfd, struct ecoff_debug_info *debug,
  30875. + const struct ecoff_debug_swap *swap, const char *name,
  30876. + struct ecoff_extr *esym);
  30877. +extern bfd_size_type bfd_ecoff_debug_size
  30878. + (bfd *abfd, struct ecoff_debug_info *debug,
  30879. + const struct ecoff_debug_swap *swap);
  30880. +extern bfd_boolean bfd_ecoff_write_debug
  30881. + (bfd *abfd, struct ecoff_debug_info *debug,
  30882. + const struct ecoff_debug_swap *swap, file_ptr where);
  30883. +extern bfd_boolean bfd_ecoff_write_accumulated_debug
  30884. + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
  30885. + const struct ecoff_debug_swap *swap,
  30886. + struct bfd_link_info *info, file_ptr where);
  30887. +
  30888. +/* Externally visible ELF routines. */
  30889. +
  30890. +struct bfd_link_needed_list
  30891. +{
  30892. + struct bfd_link_needed_list *next;
  30893. + bfd *by;
  30894. + const char *name;
  30895. +};
  30896. +
  30897. +enum dynamic_lib_link_class {
  30898. + DYN_NORMAL = 0,
  30899. + DYN_AS_NEEDED = 1,
  30900. + DYN_DT_NEEDED = 2,
  30901. + DYN_NO_ADD_NEEDED = 4,
  30902. + DYN_NO_NEEDED = 8
  30903. +};
  30904. +
  30905. +enum notice_asneeded_action {
  30906. + notice_as_needed,
  30907. + notice_not_needed,
  30908. + notice_needed
  30909. +};
  30910. +
  30911. +extern bfd_boolean bfd_elf_record_link_assignment
  30912. + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
  30913. + bfd_boolean);
  30914. +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
  30915. + (bfd *, struct bfd_link_info *);
  30916. +extern bfd_boolean bfd_elf_get_bfd_needed_list
  30917. + (bfd *, struct bfd_link_needed_list **);
  30918. +extern bfd_boolean bfd_elf_size_dynamic_sections
  30919. + (bfd *, const char *, const char *, const char *, const char * const *,
  30920. + struct bfd_link_info *, struct bfd_section **,
  30921. + struct bfd_elf_version_tree *);
  30922. +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
  30923. + (bfd *, struct bfd_link_info *);
  30924. +extern void bfd_elf_set_dt_needed_name
  30925. + (bfd *, const char *);
  30926. +extern const char *bfd_elf_get_dt_soname
  30927. + (bfd *);
  30928. +extern void bfd_elf_set_dyn_lib_class
  30929. + (bfd *, enum dynamic_lib_link_class);
  30930. +extern int bfd_elf_get_dyn_lib_class
  30931. + (bfd *);
  30932. +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
  30933. + (bfd *, struct bfd_link_info *);
  30934. +extern bfd_boolean bfd_elf_discard_info
  30935. + (bfd *, struct bfd_link_info *);
  30936. +extern unsigned int _bfd_elf_default_action_discarded
  30937. + (struct bfd_section *);
  30938. +
  30939. +/* Return an upper bound on the number of bytes required to store a
  30940. + copy of ABFD's program header table entries. Return -1 if an error
  30941. + occurs; bfd_get_error will return an appropriate code. */
  30942. +extern long bfd_get_elf_phdr_upper_bound
  30943. + (bfd *abfd);
  30944. +
  30945. +/* Copy ABFD's program header table entries to *PHDRS. The entries
  30946. + will be stored as an array of Elf_Internal_Phdr structures, as
  30947. + defined in include/elf/internal.h. To find out how large the
  30948. + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
  30949. +
  30950. + Return the number of program header table entries read, or -1 if an
  30951. + error occurs; bfd_get_error will return an appropriate code. */
  30952. +extern int bfd_get_elf_phdrs
  30953. + (bfd *abfd, void *phdrs);
  30954. +
  30955. +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
  30956. + reconstruct an ELF file by reading the segments out of remote memory
  30957. + based on the ELF file header at EHDR_VMA and the ELF program headers it
  30958. + points to. If not null, *LOADBASEP is filled in with the difference
  30959. + between the VMAs from which the segments were read, and the VMAs the
  30960. + file headers (and hence BFD's idea of each section's VMA) put them at.
  30961. +
  30962. + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
  30963. + remote memory at target address VMA into the local buffer at MYADDR; it
  30964. + should return zero on success or an `errno' code on failure. TEMPL must
  30965. + be a BFD for an ELF target with the word size and byte order found in
  30966. + the remote memory. */
  30967. +extern bfd *bfd_elf_bfd_from_remote_memory
  30968. + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
  30969. + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
  30970. +
  30971. +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
  30972. +extern int bfd_get_arch_size
  30973. + (bfd *);
  30974. +
  30975. +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
  30976. +extern int bfd_get_sign_extend_vma
  30977. + (bfd *);
  30978. +
  30979. +extern struct bfd_section *_bfd_elf_tls_setup
  30980. + (bfd *, struct bfd_link_info *);
  30981. +
  30982. +extern void _bfd_fix_excluded_sec_syms
  30983. + (bfd *, struct bfd_link_info *);
  30984. +
  30985. +extern unsigned bfd_m68k_mach_to_features (int);
  30986. +
  30987. +extern int bfd_m68k_features_to_mach (unsigned);
  30988. +
  30989. +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
  30990. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
  30991. + char **);
  30992. +
  30993. +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
  30994. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
  30995. + char **);
  30996. +
  30997. +/* SunOS shared library support routines for the linker. */
  30998. +
  30999. +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
  31000. + (bfd *, struct bfd_link_info *);
  31001. +extern bfd_boolean bfd_sunos_record_link_assignment
  31002. + (bfd *, struct bfd_link_info *, const char *);
  31003. +extern bfd_boolean bfd_sunos_size_dynamic_sections
  31004. + (bfd *, struct bfd_link_info *, struct bfd_section **,
  31005. + struct bfd_section **, struct bfd_section **);
  31006. +
  31007. +/* Linux shared library support routines for the linker. */
  31008. +
  31009. +extern bfd_boolean bfd_i386linux_size_dynamic_sections
  31010. + (bfd *, struct bfd_link_info *);
  31011. +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
  31012. + (bfd *, struct bfd_link_info *);
  31013. +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
  31014. + (bfd *, struct bfd_link_info *);
  31015. +
  31016. +/* mmap hacks */
  31017. +
  31018. +struct _bfd_window_internal;
  31019. +typedef struct _bfd_window_internal bfd_window_internal;
  31020. +
  31021. +typedef struct _bfd_window
  31022. +{
  31023. + /* What the user asked for. */
  31024. + void *data;
  31025. + bfd_size_type size;
  31026. + /* The actual window used by BFD. Small user-requested read-only
  31027. + regions sharing a page may share a single window into the object
  31028. + file. Read-write versions shouldn't until I've fixed things to
  31029. + keep track of which portions have been claimed by the
  31030. + application; don't want to give the same region back when the
  31031. + application wants two writable copies! */
  31032. + struct _bfd_window_internal *i;
  31033. +}
  31034. +bfd_window;
  31035. +
  31036. +extern void bfd_init_window
  31037. + (bfd_window *);
  31038. +extern void bfd_free_window
  31039. + (bfd_window *);
  31040. +extern bfd_boolean bfd_get_file_window
  31041. + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
  31042. +
  31043. +/* XCOFF support routines for the linker. */
  31044. +
  31045. +extern bfd_boolean bfd_xcoff_link_record_set
  31046. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
  31047. +extern bfd_boolean bfd_xcoff_import_symbol
  31048. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
  31049. + const char *, const char *, const char *, unsigned int);
  31050. +extern bfd_boolean bfd_xcoff_export_symbol
  31051. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
  31052. +extern bfd_boolean bfd_xcoff_link_count_reloc
  31053. + (bfd *, struct bfd_link_info *, const char *);
  31054. +extern bfd_boolean bfd_xcoff_record_link_assignment
  31055. + (bfd *, struct bfd_link_info *, const char *);
  31056. +extern bfd_boolean bfd_xcoff_size_dynamic_sections
  31057. + (bfd *, struct bfd_link_info *, const char *, const char *,
  31058. + unsigned long, unsigned long, unsigned long, bfd_boolean,
  31059. + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
  31060. +extern bfd_boolean bfd_xcoff_link_generate_rtinit
  31061. + (bfd *, const char *, const char *, bfd_boolean);
  31062. +
  31063. +/* XCOFF support routines for ar. */
  31064. +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
  31065. + (bfd *, char *);
  31066. +
  31067. +/* Externally visible COFF routines. */
  31068. +
  31069. +#if defined(__STDC__) || defined(ALMOST_STDC)
  31070. +struct internal_syment;
  31071. +union internal_auxent;
  31072. +#endif
  31073. +
  31074. +extern bfd_boolean bfd_coff_get_syment
  31075. + (bfd *, struct bfd_symbol *, struct internal_syment *);
  31076. +
  31077. +extern bfd_boolean bfd_coff_get_auxent
  31078. + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
  31079. +
  31080. +extern bfd_boolean bfd_coff_set_symbol_class
  31081. + (bfd *, struct bfd_symbol *, unsigned int);
  31082. +
  31083. +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
  31084. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
  31085. +
  31086. +/* ARM VFP11 erratum workaround support. */
  31087. +typedef enum
  31088. +{
  31089. + BFD_ARM_VFP11_FIX_DEFAULT,
  31090. + BFD_ARM_VFP11_FIX_NONE,
  31091. + BFD_ARM_VFP11_FIX_SCALAR,
  31092. + BFD_ARM_VFP11_FIX_VECTOR
  31093. +} bfd_arm_vfp11_fix;
  31094. +
  31095. +extern void bfd_elf32_arm_init_maps
  31096. + (bfd *);
  31097. +
  31098. +extern void bfd_elf32_arm_set_vfp11_fix
  31099. + (bfd *, struct bfd_link_info *);
  31100. +
  31101. +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
  31102. + (bfd *, struct bfd_link_info *);
  31103. +
  31104. +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
  31105. + (bfd *, struct bfd_link_info *);
  31106. +
  31107. +/* ARM Interworking support. Called from linker. */
  31108. +extern bfd_boolean bfd_arm_allocate_interworking_sections
  31109. + (struct bfd_link_info *);
  31110. +
  31111. +extern bfd_boolean bfd_arm_process_before_allocation
  31112. + (bfd *, struct bfd_link_info *, int);
  31113. +
  31114. +extern bfd_boolean bfd_arm_get_bfd_for_interworking
  31115. + (bfd *, struct bfd_link_info *);
  31116. +
  31117. +/* PE ARM Interworking support. Called from linker. */
  31118. +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
  31119. + (struct bfd_link_info *);
  31120. +
  31121. +extern bfd_boolean bfd_arm_pe_process_before_allocation
  31122. + (bfd *, struct bfd_link_info *, int);
  31123. +
  31124. +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
  31125. + (bfd *, struct bfd_link_info *);
  31126. +
  31127. +/* ELF ARM Interworking support. Called from linker. */
  31128. +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
  31129. + (struct bfd_link_info *);
  31130. +
  31131. +extern bfd_boolean bfd_elf32_arm_process_before_allocation
  31132. + (bfd *, struct bfd_link_info *);
  31133. +
  31134. +void bfd_elf32_arm_set_target_relocs
  31135. + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
  31136. + int, int);
  31137. +
  31138. +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
  31139. + (bfd *, struct bfd_link_info *);
  31140. +
  31141. +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
  31142. + (bfd *, struct bfd_link_info *);
  31143. +
  31144. +/* ELF ARM mapping symbol support */
  31145. +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
  31146. +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
  31147. +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
  31148. +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
  31149. +extern bfd_boolean bfd_is_arm_special_symbol_name
  31150. + (const char * name, int type);
  31151. +
  31152. +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
  31153. +
  31154. +/* ARM Note section processing. */
  31155. +extern bfd_boolean bfd_arm_merge_machines
  31156. + (bfd *, bfd *);
  31157. +
  31158. +extern bfd_boolean bfd_arm_update_notes
  31159. + (bfd *, const char *);
  31160. +
  31161. +extern unsigned int bfd_arm_get_mach_from_notes
  31162. + (bfd *, const char *);
  31163. +
  31164. +/* TI COFF load page support. */
  31165. +extern void bfd_ticoff_set_section_load_page
  31166. + (struct bfd_section *, int);
  31167. +
  31168. +extern int bfd_ticoff_get_section_load_page
  31169. + (struct bfd_section *);
  31170. +
  31171. +/* H8/300 functions. */
  31172. +extern bfd_vma bfd_h8300_pad_address
  31173. + (bfd *, bfd_vma);
  31174. +
  31175. +/* IA64 Itanium code generation. Called from linker. */
  31176. +extern void bfd_elf32_ia64_after_parse
  31177. + (int);
  31178. +
  31179. +extern void bfd_elf64_ia64_after_parse
  31180. + (int);
  31181. +
  31182. +/* This structure is used for a comdat section, as in PE. A comdat
  31183. + section is associated with a particular symbol. When the linker
  31184. + sees a comdat section, it keeps only one of the sections with a
  31185. + given name and associated with a given symbol. */
  31186. +
  31187. +struct coff_comdat_info
  31188. +{
  31189. + /* The name of the symbol associated with a comdat section. */
  31190. + const char *name;
  31191. +
  31192. + /* The local symbol table index of the symbol associated with a
  31193. + comdat section. This is only meaningful to the object file format
  31194. + specific code; it is not an index into the list returned by
  31195. + bfd_canonicalize_symtab. */
  31196. + long symbol;
  31197. +};
  31198. +
  31199. +extern struct coff_comdat_info *bfd_coff_get_comdat_section
  31200. + (bfd *, struct bfd_section *);
  31201. +
  31202. +/* Extracted from init.c. */
  31203. +void bfd_init (void);
  31204. +
  31205. +/* Extracted from opncls.c. */
  31206. +bfd *bfd_fopen (const char *filename, const char *target,
  31207. + const char *mode, int fd);
  31208. +
  31209. +bfd *bfd_openr (const char *filename, const char *target);
  31210. +
  31211. +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
  31212. +
  31213. +bfd *bfd_openstreamr (const char *, const char *, void *);
  31214. +
  31215. +bfd *bfd_openr_iovec (const char *filename, const char *target,
  31216. + void *(*open) (struct bfd *nbfd,
  31217. + void *open_closure),
  31218. + void *open_closure,
  31219. + file_ptr (*pread) (struct bfd *nbfd,
  31220. + void *stream,
  31221. + void *buf,
  31222. + file_ptr nbytes,
  31223. + file_ptr offset),
  31224. + int (*close) (struct bfd *nbfd,
  31225. + void *stream),
  31226. + int (*stat) (struct bfd *abfd,
  31227. + void *stream,
  31228. + struct stat *sb));
  31229. +
  31230. +bfd *bfd_openw (const char *filename, const char *target);
  31231. +
  31232. +bfd_boolean bfd_close (bfd *abfd);
  31233. +
  31234. +bfd_boolean bfd_close_all_done (bfd *);
  31235. +
  31236. +bfd *bfd_create (const char *filename, bfd *templ);
  31237. +
  31238. +bfd_boolean bfd_make_writable (bfd *abfd);
  31239. +
  31240. +bfd_boolean bfd_make_readable (bfd *abfd);
  31241. +
  31242. +unsigned long bfd_calc_gnu_debuglink_crc32
  31243. + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
  31244. +
  31245. +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
  31246. +
  31247. +struct bfd_section *bfd_create_gnu_debuglink_section
  31248. + (bfd *abfd, const char *filename);
  31249. +
  31250. +bfd_boolean bfd_fill_in_gnu_debuglink_section
  31251. + (bfd *abfd, struct bfd_section *sect, const char *filename);
  31252. +
  31253. +/* Extracted from libbfd.c. */
  31254. +
  31255. +/* Byte swapping macros for user section data. */
  31256. +
  31257. +#define bfd_put_8(abfd, val, ptr) \
  31258. + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
  31259. +#define bfd_put_signed_8 \
  31260. + bfd_put_8
  31261. +#define bfd_get_8(abfd, ptr) \
  31262. + (*(unsigned char *) (ptr) & 0xff)
  31263. +#define bfd_get_signed_8(abfd, ptr) \
  31264. + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
  31265. +
  31266. +#define bfd_put_16(abfd, val, ptr) \
  31267. + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
  31268. +#define bfd_put_signed_16 \
  31269. + bfd_put_16
  31270. +#define bfd_get_16(abfd, ptr) \
  31271. + BFD_SEND (abfd, bfd_getx16, (ptr))
  31272. +#define bfd_get_signed_16(abfd, ptr) \
  31273. + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
  31274. +
  31275. +#define bfd_put_32(abfd, val, ptr) \
  31276. + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
  31277. +#define bfd_put_signed_32 \
  31278. + bfd_put_32
  31279. +#define bfd_get_32(abfd, ptr) \
  31280. + BFD_SEND (abfd, bfd_getx32, (ptr))
  31281. +#define bfd_get_signed_32(abfd, ptr) \
  31282. + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
  31283. +
  31284. +#define bfd_put_64(abfd, val, ptr) \
  31285. + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
  31286. +#define bfd_put_signed_64 \
  31287. + bfd_put_64
  31288. +#define bfd_get_64(abfd, ptr) \
  31289. + BFD_SEND (abfd, bfd_getx64, (ptr))
  31290. +#define bfd_get_signed_64(abfd, ptr) \
  31291. + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
  31292. +
  31293. +#define bfd_get(bits, abfd, ptr) \
  31294. + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
  31295. + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
  31296. + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
  31297. + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
  31298. + : (abort (), (bfd_vma) - 1))
  31299. +
  31300. +#define bfd_put(bits, abfd, val, ptr) \
  31301. + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
  31302. + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
  31303. + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
  31304. + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
  31305. + : (abort (), (void) 0))
  31306. +
  31307. +
  31308. +/* Byte swapping macros for file header data. */
  31309. +
  31310. +#define bfd_h_put_8(abfd, val, ptr) \
  31311. + bfd_put_8 (abfd, val, ptr)
  31312. +#define bfd_h_put_signed_8(abfd, val, ptr) \
  31313. + bfd_put_8 (abfd, val, ptr)
  31314. +#define bfd_h_get_8(abfd, ptr) \
  31315. + bfd_get_8 (abfd, ptr)
  31316. +#define bfd_h_get_signed_8(abfd, ptr) \
  31317. + bfd_get_signed_8 (abfd, ptr)
  31318. +
  31319. +#define bfd_h_put_16(abfd, val, ptr) \
  31320. + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
  31321. +#define bfd_h_put_signed_16 \
  31322. + bfd_h_put_16
  31323. +#define bfd_h_get_16(abfd, ptr) \
  31324. + BFD_SEND (abfd, bfd_h_getx16, (ptr))
  31325. +#define bfd_h_get_signed_16(abfd, ptr) \
  31326. + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
  31327. +
  31328. +#define bfd_h_put_32(abfd, val, ptr) \
  31329. + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
  31330. +#define bfd_h_put_signed_32 \
  31331. + bfd_h_put_32
  31332. +#define bfd_h_get_32(abfd, ptr) \
  31333. + BFD_SEND (abfd, bfd_h_getx32, (ptr))
  31334. +#define bfd_h_get_signed_32(abfd, ptr) \
  31335. + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
  31336. +
  31337. +#define bfd_h_put_64(abfd, val, ptr) \
  31338. + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
  31339. +#define bfd_h_put_signed_64 \
  31340. + bfd_h_put_64
  31341. +#define bfd_h_get_64(abfd, ptr) \
  31342. + BFD_SEND (abfd, bfd_h_getx64, (ptr))
  31343. +#define bfd_h_get_signed_64(abfd, ptr) \
  31344. + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
  31345. +
  31346. +/* Aliases for the above, which should eventually go away. */
  31347. +
  31348. +#define H_PUT_64 bfd_h_put_64
  31349. +#define H_PUT_32 bfd_h_put_32
  31350. +#define H_PUT_16 bfd_h_put_16
  31351. +#define H_PUT_8 bfd_h_put_8
  31352. +#define H_PUT_S64 bfd_h_put_signed_64
  31353. +#define H_PUT_S32 bfd_h_put_signed_32
  31354. +#define H_PUT_S16 bfd_h_put_signed_16
  31355. +#define H_PUT_S8 bfd_h_put_signed_8
  31356. +#define H_GET_64 bfd_h_get_64
  31357. +#define H_GET_32 bfd_h_get_32
  31358. +#define H_GET_16 bfd_h_get_16
  31359. +#define H_GET_8 bfd_h_get_8
  31360. +#define H_GET_S64 bfd_h_get_signed_64
  31361. +#define H_GET_S32 bfd_h_get_signed_32
  31362. +#define H_GET_S16 bfd_h_get_signed_16
  31363. +#define H_GET_S8 bfd_h_get_signed_8
  31364. +
  31365. +
  31366. +/* Extracted from bfdio.c. */
  31367. +long bfd_get_mtime (bfd *abfd);
  31368. +
  31369. +file_ptr bfd_get_size (bfd *abfd);
  31370. +
  31371. +/* Extracted from bfdwin.c. */
  31372. +/* Extracted from section.c. */
  31373. +typedef struct bfd_section
  31374. +{
  31375. + /* The name of the section; the name isn't a copy, the pointer is
  31376. + the same as that passed to bfd_make_section. */
  31377. + const char *name;
  31378. +
  31379. + /* A unique sequence number. */
  31380. + int id;
  31381. +
  31382. + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
  31383. + int index;
  31384. +
  31385. + /* The next section in the list belonging to the BFD, or NULL. */
  31386. + struct bfd_section *next;
  31387. +
  31388. + /* The previous section in the list belonging to the BFD, or NULL. */
  31389. + struct bfd_section *prev;
  31390. +
  31391. + /* The field flags contains attributes of the section. Some
  31392. + flags are read in from the object file, and some are
  31393. + synthesized from other information. */
  31394. + flagword flags;
  31395. +
  31396. +#define SEC_NO_FLAGS 0x000
  31397. +
  31398. + /* Tells the OS to allocate space for this section when loading.
  31399. + This is clear for a section containing debug information only. */
  31400. +#define SEC_ALLOC 0x001
  31401. +
  31402. + /* Tells the OS to load the section from the file when loading.
  31403. + This is clear for a .bss section. */
  31404. +#define SEC_LOAD 0x002
  31405. +
  31406. + /* The section contains data still to be relocated, so there is
  31407. + some relocation information too. */
  31408. +#define SEC_RELOC 0x004
  31409. +
  31410. + /* A signal to the OS that the section contains read only data. */
  31411. +#define SEC_READONLY 0x008
  31412. +
  31413. + /* The section contains code only. */
  31414. +#define SEC_CODE 0x010
  31415. +
  31416. + /* The section contains data only. */
  31417. +#define SEC_DATA 0x020
  31418. +
  31419. + /* The section will reside in ROM. */
  31420. +#define SEC_ROM 0x040
  31421. +
  31422. + /* The section contains constructor information. This section
  31423. + type is used by the linker to create lists of constructors and
  31424. + destructors used by <<g++>>. When a back end sees a symbol
  31425. + which should be used in a constructor list, it creates a new
  31426. + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
  31427. + the symbol to it, and builds a relocation. To build the lists
  31428. + of constructors, all the linker has to do is catenate all the
  31429. + sections called <<__CTOR_LIST__>> and relocate the data
  31430. + contained within - exactly the operations it would peform on
  31431. + standard data. */
  31432. +#define SEC_CONSTRUCTOR 0x080
  31433. +
  31434. + /* The section has contents - a data section could be
  31435. + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
  31436. + <<SEC_HAS_CONTENTS>> */
  31437. +#define SEC_HAS_CONTENTS 0x100
  31438. +
  31439. + /* An instruction to the linker to not output the section
  31440. + even if it has information which would normally be written. */
  31441. +#define SEC_NEVER_LOAD 0x200
  31442. +
  31443. + /* The section contains thread local data. */
  31444. +#define SEC_THREAD_LOCAL 0x400
  31445. +
  31446. + /* The section has GOT references. This flag is only for the
  31447. + linker, and is currently only used by the elf32-hppa back end.
  31448. + It will be set if global offset table references were detected
  31449. + in this section, which indicate to the linker that the section
  31450. + contains PIC code, and must be handled specially when doing a
  31451. + static link. */
  31452. +#define SEC_HAS_GOT_REF 0x800
  31453. +
  31454. + /* The section contains common symbols (symbols may be defined
  31455. + multiple times, the value of a symbol is the amount of
  31456. + space it requires, and the largest symbol value is the one
  31457. + used). Most targets have exactly one of these (which we
  31458. + translate to bfd_com_section_ptr), but ECOFF has two. */
  31459. +#define SEC_IS_COMMON 0x1000
  31460. +
  31461. + /* The section contains only debugging information. For
  31462. + example, this is set for ELF .debug and .stab sections.
  31463. + strip tests this flag to see if a section can be
  31464. + discarded. */
  31465. +#define SEC_DEBUGGING 0x2000
  31466. +
  31467. + /* The contents of this section are held in memory pointed to
  31468. + by the contents field. This is checked by bfd_get_section_contents,
  31469. + and the data is retrieved from memory if appropriate. */
  31470. +#define SEC_IN_MEMORY 0x4000
  31471. +
  31472. + /* The contents of this section are to be excluded by the
  31473. + linker for executable and shared objects unless those
  31474. + objects are to be further relocated. */
  31475. +#define SEC_EXCLUDE 0x8000
  31476. +
  31477. + /* The contents of this section are to be sorted based on the sum of
  31478. + the symbol and addend values specified by the associated relocation
  31479. + entries. Entries without associated relocation entries will be
  31480. + appended to the end of the section in an unspecified order. */
  31481. +#define SEC_SORT_ENTRIES 0x10000
  31482. +
  31483. + /* When linking, duplicate sections of the same name should be
  31484. + discarded, rather than being combined into a single section as
  31485. + is usually done. This is similar to how common symbols are
  31486. + handled. See SEC_LINK_DUPLICATES below. */
  31487. +#define SEC_LINK_ONCE 0x20000
  31488. +
  31489. + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
  31490. + should handle duplicate sections. */
  31491. +#define SEC_LINK_DUPLICATES 0x40000
  31492. +
  31493. + /* This value for SEC_LINK_DUPLICATES means that duplicate
  31494. + sections with the same name should simply be discarded. */
  31495. +#define SEC_LINK_DUPLICATES_DISCARD 0x0
  31496. +
  31497. + /* This value for SEC_LINK_DUPLICATES means that the linker
  31498. + should warn if there are any duplicate sections, although
  31499. + it should still only link one copy. */
  31500. +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
  31501. +
  31502. + /* This value for SEC_LINK_DUPLICATES means that the linker
  31503. + should warn if any duplicate sections are a different size. */
  31504. +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
  31505. +
  31506. + /* This value for SEC_LINK_DUPLICATES means that the linker
  31507. + should warn if any duplicate sections contain different
  31508. + contents. */
  31509. +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
  31510. + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
  31511. +
  31512. + /* This section was created by the linker as part of dynamic
  31513. + relocation or other arcane processing. It is skipped when
  31514. + going through the first-pass output, trusting that someone
  31515. + else up the line will take care of it later. */
  31516. +#define SEC_LINKER_CREATED 0x200000
  31517. +
  31518. + /* This section should not be subject to garbage collection.
  31519. + Also set to inform the linker that this section should not be
  31520. + listed in the link map as discarded. */
  31521. +#define SEC_KEEP 0x400000
  31522. +
  31523. + /* This section contains "short" data, and should be placed
  31524. + "near" the GP. */
  31525. +#define SEC_SMALL_DATA 0x800000
  31526. +
  31527. + /* Attempt to merge identical entities in the section.
  31528. + Entity size is given in the entsize field. */
  31529. +#define SEC_MERGE 0x1000000
  31530. +
  31531. + /* If given with SEC_MERGE, entities to merge are zero terminated
  31532. + strings where entsize specifies character size instead of fixed
  31533. + size entries. */
  31534. +#define SEC_STRINGS 0x2000000
  31535. +
  31536. + /* This section contains data about section groups. */
  31537. +#define SEC_GROUP 0x4000000
  31538. +
  31539. + /* The section is a COFF shared library section. This flag is
  31540. + only for the linker. If this type of section appears in
  31541. + the input file, the linker must copy it to the output file
  31542. + without changing the vma or size. FIXME: Although this
  31543. + was originally intended to be general, it really is COFF
  31544. + specific (and the flag was renamed to indicate this). It
  31545. + might be cleaner to have some more general mechanism to
  31546. + allow the back end to control what the linker does with
  31547. + sections. */
  31548. +#define SEC_COFF_SHARED_LIBRARY 0x10000000
  31549. +
  31550. + /* This section contains data which may be shared with other
  31551. + executables or shared objects. This is for COFF only. */
  31552. +#define SEC_COFF_SHARED 0x20000000
  31553. +
  31554. + /* When a section with this flag is being linked, then if the size of
  31555. + the input section is less than a page, it should not cross a page
  31556. + boundary. If the size of the input section is one page or more,
  31557. + it should be aligned on a page boundary. This is for TI
  31558. + TMS320C54X only. */
  31559. +#define SEC_TIC54X_BLOCK 0x40000000
  31560. +
  31561. + /* Conditionally link this section; do not link if there are no
  31562. + references found to any symbol in the section. This is for TI
  31563. + TMS320C54X only. */
  31564. +#define SEC_TIC54X_CLINK 0x80000000
  31565. +
  31566. + /* End of section flags. */
  31567. +
  31568. + /* Some internal packed boolean fields. */
  31569. +
  31570. + /* See the vma field. */
  31571. + unsigned int user_set_vma : 1;
  31572. +
  31573. + /* A mark flag used by some of the linker backends. */
  31574. + unsigned int linker_mark : 1;
  31575. +
  31576. + /* Another mark flag used by some of the linker backends. Set for
  31577. + output sections that have an input section. */
  31578. + unsigned int linker_has_input : 1;
  31579. +
  31580. + /* Mark flags used by some linker backends for garbage collection. */
  31581. + unsigned int gc_mark : 1;
  31582. + unsigned int gc_mark_from_eh : 1;
  31583. +
  31584. + /* The following flags are used by the ELF linker. */
  31585. +
  31586. + /* Mark sections which have been allocated to segments. */
  31587. + unsigned int segment_mark : 1;
  31588. +
  31589. + /* Type of sec_info information. */
  31590. + unsigned int sec_info_type:3;
  31591. +#define ELF_INFO_TYPE_NONE 0
  31592. +#define ELF_INFO_TYPE_STABS 1
  31593. +#define ELF_INFO_TYPE_MERGE 2
  31594. +#define ELF_INFO_TYPE_EH_FRAME 3
  31595. +#define ELF_INFO_TYPE_JUST_SYMS 4
  31596. +
  31597. + /* Nonzero if this section uses RELA relocations, rather than REL. */
  31598. + unsigned int use_rela_p:1;
  31599. +
  31600. + /* Bits used by various backends. The generic code doesn't touch
  31601. + these fields. */
  31602. +
  31603. + /* Nonzero if this section has TLS related relocations. */
  31604. + unsigned int has_tls_reloc:1;
  31605. +
  31606. + /* Nonzero if this section has a gp reloc. */
  31607. + unsigned int has_gp_reloc:1;
  31608. +
  31609. + /* Nonzero if this section needs the relax finalize pass. */
  31610. + unsigned int need_finalize_relax:1;
  31611. +
  31612. + /* Whether relocations have been processed. */
  31613. + unsigned int reloc_done : 1;
  31614. +
  31615. + /* End of internal packed boolean fields. */
  31616. +
  31617. + /* The virtual memory address of the section - where it will be
  31618. + at run time. The symbols are relocated against this. The
  31619. + user_set_vma flag is maintained by bfd; if it's not set, the
  31620. + backend can assign addresses (for example, in <<a.out>>, where
  31621. + the default address for <<.data>> is dependent on the specific
  31622. + target and various flags). */
  31623. + bfd_vma vma;
  31624. +
  31625. + /* The load address of the section - where it would be in a
  31626. + rom image; really only used for writing section header
  31627. + information. */
  31628. + bfd_vma lma;
  31629. +
  31630. + /* The size of the section in octets, as it will be output.
  31631. + Contains a value even if the section has no contents (e.g., the
  31632. + size of <<.bss>>). */
  31633. + bfd_size_type size;
  31634. +
  31635. + /* For input sections, the original size on disk of the section, in
  31636. + octets. This field is used by the linker relaxation code. It is
  31637. + currently only set for sections where the linker relaxation scheme
  31638. + doesn't cache altered section and reloc contents (stabs, eh_frame,
  31639. + SEC_MERGE, some coff relaxing targets), and thus the original size
  31640. + needs to be kept to read the section multiple times.
  31641. + For output sections, rawsize holds the section size calculated on
  31642. + a previous linker relaxation pass. */
  31643. + bfd_size_type rawsize;
  31644. +
  31645. + /* If this section is going to be output, then this value is the
  31646. + offset in *bytes* into the output section of the first byte in the
  31647. + input section (byte ==> smallest addressable unit on the
  31648. + target). In most cases, if this was going to start at the
  31649. + 100th octet (8-bit quantity) in the output section, this value
  31650. + would be 100. However, if the target byte size is 16 bits
  31651. + (bfd_octets_per_byte is "2"), this value would be 50. */
  31652. + bfd_vma output_offset;
  31653. +
  31654. + /* The output section through which to map on output. */
  31655. + struct bfd_section *output_section;
  31656. +
  31657. + /* The alignment requirement of the section, as an exponent of 2 -
  31658. + e.g., 3 aligns to 2^3 (or 8). */
  31659. + unsigned int alignment_power;
  31660. +
  31661. + /* If an input section, a pointer to a vector of relocation
  31662. + records for the data in this section. */
  31663. + struct reloc_cache_entry *relocation;
  31664. +
  31665. + /* If an output section, a pointer to a vector of pointers to
  31666. + relocation records for the data in this section. */
  31667. + struct reloc_cache_entry **orelocation;
  31668. +
  31669. + /* The number of relocation records in one of the above. */
  31670. + unsigned reloc_count;
  31671. +
  31672. + /* Information below is back end specific - and not always used
  31673. + or updated. */
  31674. +
  31675. + /* File position of section data. */
  31676. + file_ptr filepos;
  31677. +
  31678. + /* File position of relocation info. */
  31679. + file_ptr rel_filepos;
  31680. +
  31681. + /* File position of line data. */
  31682. + file_ptr line_filepos;
  31683. +
  31684. + /* Pointer to data for applications. */
  31685. + void *userdata;
  31686. +
  31687. + /* If the SEC_IN_MEMORY flag is set, this points to the actual
  31688. + contents. */
  31689. + unsigned char *contents;
  31690. +
  31691. + /* Attached line number information. */
  31692. + alent *lineno;
  31693. +
  31694. + /* Number of line number records. */
  31695. + unsigned int lineno_count;
  31696. +
  31697. + /* Entity size for merging purposes. */
  31698. + unsigned int entsize;
  31699. +
  31700. + /* Points to the kept section if this section is a link-once section,
  31701. + and is discarded. */
  31702. + struct bfd_section *kept_section;
  31703. +
  31704. + /* When a section is being output, this value changes as more
  31705. + linenumbers are written out. */
  31706. + file_ptr moving_line_filepos;
  31707. +
  31708. + /* What the section number is in the target world. */
  31709. + int target_index;
  31710. +
  31711. + void *used_by_bfd;
  31712. +
  31713. + /* If this is a constructor section then here is a list of the
  31714. + relocations created to relocate items within it. */
  31715. + struct relent_chain *constructor_chain;
  31716. +
  31717. + /* The BFD which owns the section. */
  31718. + bfd *owner;
  31719. +
  31720. + /* A symbol which points at this section only. */
  31721. + struct bfd_symbol *symbol;
  31722. + struct bfd_symbol **symbol_ptr_ptr;
  31723. +
  31724. + /* Early in the link process, map_head and map_tail are used to build
  31725. + a list of input sections attached to an output section. Later,
  31726. + output sections use these fields for a list of bfd_link_order
  31727. + structs. */
  31728. + union {
  31729. + struct bfd_link_order *link_order;
  31730. + struct bfd_section *s;
  31731. + } map_head, map_tail;
  31732. +} asection;
  31733. +
  31734. +/* These sections are global, and are managed by BFD. The application
  31735. + and target back end are not permitted to change the values in
  31736. + these sections. New code should use the section_ptr macros rather
  31737. + than referring directly to the const sections. The const sections
  31738. + may eventually vanish. */
  31739. +#define BFD_ABS_SECTION_NAME "*ABS*"
  31740. +#define BFD_UND_SECTION_NAME "*UND*"
  31741. +#define BFD_COM_SECTION_NAME "*COM*"
  31742. +#define BFD_IND_SECTION_NAME "*IND*"
  31743. +
  31744. +/* The absolute section. */
  31745. +extern asection bfd_abs_section;
  31746. +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
  31747. +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
  31748. +/* Pointer to the undefined section. */
  31749. +extern asection bfd_und_section;
  31750. +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
  31751. +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
  31752. +/* Pointer to the common section. */
  31753. +extern asection bfd_com_section;
  31754. +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
  31755. +/* Pointer to the indirect section. */
  31756. +extern asection bfd_ind_section;
  31757. +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
  31758. +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
  31759. +
  31760. +#define bfd_is_const_section(SEC) \
  31761. + ( ((SEC) == bfd_abs_section_ptr) \
  31762. + || ((SEC) == bfd_und_section_ptr) \
  31763. + || ((SEC) == bfd_com_section_ptr) \
  31764. + || ((SEC) == bfd_ind_section_ptr))
  31765. +
  31766. +/* Macros to handle insertion and deletion of a bfd's sections. These
  31767. + only handle the list pointers, ie. do not adjust section_count,
  31768. + target_index etc. */
  31769. +#define bfd_section_list_remove(ABFD, S) \
  31770. + do \
  31771. + { \
  31772. + asection *_s = S; \
  31773. + asection *_next = _s->next; \
  31774. + asection *_prev = _s->prev; \
  31775. + if (_prev) \
  31776. + _prev->next = _next; \
  31777. + else \
  31778. + (ABFD)->sections = _next; \
  31779. + if (_next) \
  31780. + _next->prev = _prev; \
  31781. + else \
  31782. + (ABFD)->section_last = _prev; \
  31783. + } \
  31784. + while (0)
  31785. +#define bfd_section_list_append(ABFD, S) \
  31786. + do \
  31787. + { \
  31788. + asection *_s = S; \
  31789. + bfd *_abfd = ABFD; \
  31790. + _s->next = NULL; \
  31791. + if (_abfd->section_last) \
  31792. + { \
  31793. + _s->prev = _abfd->section_last; \
  31794. + _abfd->section_last->next = _s; \
  31795. + } \
  31796. + else \
  31797. + { \
  31798. + _s->prev = NULL; \
  31799. + _abfd->sections = _s; \
  31800. + } \
  31801. + _abfd->section_last = _s; \
  31802. + } \
  31803. + while (0)
  31804. +#define bfd_section_list_prepend(ABFD, S) \
  31805. + do \
  31806. + { \
  31807. + asection *_s = S; \
  31808. + bfd *_abfd = ABFD; \
  31809. + _s->prev = NULL; \
  31810. + if (_abfd->sections) \
  31811. + { \
  31812. + _s->next = _abfd->sections; \
  31813. + _abfd->sections->prev = _s; \
  31814. + } \
  31815. + else \
  31816. + { \
  31817. + _s->next = NULL; \
  31818. + _abfd->section_last = _s; \
  31819. + } \
  31820. + _abfd->sections = _s; \
  31821. + } \
  31822. + while (0)
  31823. +#define bfd_section_list_insert_after(ABFD, A, S) \
  31824. + do \
  31825. + { \
  31826. + asection *_a = A; \
  31827. + asection *_s = S; \
  31828. + asection *_next = _a->next; \
  31829. + _s->next = _next; \
  31830. + _s->prev = _a; \
  31831. + _a->next = _s; \
  31832. + if (_next) \
  31833. + _next->prev = _s; \
  31834. + else \
  31835. + (ABFD)->section_last = _s; \
  31836. + } \
  31837. + while (0)
  31838. +#define bfd_section_list_insert_before(ABFD, B, S) \
  31839. + do \
  31840. + { \
  31841. + asection *_b = B; \
  31842. + asection *_s = S; \
  31843. + asection *_prev = _b->prev; \
  31844. + _s->prev = _prev; \
  31845. + _s->next = _b; \
  31846. + _b->prev = _s; \
  31847. + if (_prev) \
  31848. + _prev->next = _s; \
  31849. + else \
  31850. + (ABFD)->sections = _s; \
  31851. + } \
  31852. + while (0)
  31853. +#define bfd_section_removed_from_list(ABFD, S) \
  31854. + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
  31855. +
  31856. +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
  31857. + /* name, id, index, next, prev, flags, user_set_vma, */ \
  31858. + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
  31859. + \
  31860. + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
  31861. + 0, 0, 1, 0, \
  31862. + \
  31863. + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
  31864. + 0, 0, 0, 0, \
  31865. + \
  31866. + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
  31867. + 0, 0, 0, \
  31868. + \
  31869. + /* vma, lma, size, rawsize */ \
  31870. + 0, 0, 0, 0, \
  31871. + \
  31872. + /* output_offset, output_section, alignment_power, */ \
  31873. + 0, (struct bfd_section *) &SEC, 0, \
  31874. + \
  31875. + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
  31876. + NULL, NULL, 0, 0, 0, \
  31877. + \
  31878. + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
  31879. + 0, NULL, NULL, NULL, 0, \
  31880. + \
  31881. + /* entsize, kept_section, moving_line_filepos, */ \
  31882. + 0, NULL, 0, \
  31883. + \
  31884. + /* target_index, used_by_bfd, constructor_chain, owner, */ \
  31885. + 0, NULL, NULL, NULL, \
  31886. + \
  31887. + /* symbol, symbol_ptr_ptr, */ \
  31888. + (struct bfd_symbol *) SYM, &SEC.symbol, \
  31889. + \
  31890. + /* map_head, map_tail */ \
  31891. + { NULL }, { NULL } \
  31892. + }
  31893. +
  31894. +void bfd_section_list_clear (bfd *);
  31895. +
  31896. +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
  31897. +
  31898. +asection *bfd_get_section_by_name_if
  31899. + (bfd *abfd,
  31900. + const char *name,
  31901. + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
  31902. + void *obj);
  31903. +
  31904. +char *bfd_get_unique_section_name
  31905. + (bfd *abfd, const char *templat, int *count);
  31906. +
  31907. +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
  31908. +
  31909. +asection *bfd_make_section_anyway_with_flags
  31910. + (bfd *abfd, const char *name, flagword flags);
  31911. +
  31912. +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
  31913. +
  31914. +asection *bfd_make_section_with_flags
  31915. + (bfd *, const char *name, flagword flags);
  31916. +
  31917. +asection *bfd_make_section (bfd *, const char *name);
  31918. +
  31919. +bfd_boolean bfd_set_section_flags
  31920. + (bfd *abfd, asection *sec, flagword flags);
  31921. +
  31922. +void bfd_map_over_sections
  31923. + (bfd *abfd,
  31924. + void (*func) (bfd *abfd, asection *sect, void *obj),
  31925. + void *obj);
  31926. +
  31927. +asection *bfd_sections_find_if
  31928. + (bfd *abfd,
  31929. + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
  31930. + void *obj);
  31931. +
  31932. +bfd_boolean bfd_set_section_size
  31933. + (bfd *abfd, asection *sec, bfd_size_type val);
  31934. +
  31935. +bfd_boolean bfd_set_section_contents
  31936. + (bfd *abfd, asection *section, const void *data,
  31937. + file_ptr offset, bfd_size_type count);
  31938. +
  31939. +bfd_boolean bfd_get_section_contents
  31940. + (bfd *abfd, asection *section, void *location, file_ptr offset,
  31941. + bfd_size_type count);
  31942. +
  31943. +bfd_boolean bfd_malloc_and_get_section
  31944. + (bfd *abfd, asection *section, bfd_byte **buf);
  31945. +
  31946. +bfd_boolean bfd_copy_private_section_data
  31947. + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
  31948. +
  31949. +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
  31950. + BFD_SEND (obfd, _bfd_copy_private_section_data, \
  31951. + (ibfd, isection, obfd, osection))
  31952. +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
  31953. +
  31954. +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
  31955. +
  31956. +/* Extracted from archures.c. */
  31957. +enum bfd_architecture
  31958. +{
  31959. + bfd_arch_unknown, /* File arch not known. */
  31960. + bfd_arch_obscure, /* Arch known, not one of these. */
  31961. + bfd_arch_m68k, /* Motorola 68xxx */
  31962. +#define bfd_mach_m68000 1
  31963. +#define bfd_mach_m68008 2
  31964. +#define bfd_mach_m68010 3
  31965. +#define bfd_mach_m68020 4
  31966. +#define bfd_mach_m68030 5
  31967. +#define bfd_mach_m68040 6
  31968. +#define bfd_mach_m68060 7
  31969. +#define bfd_mach_cpu32 8
  31970. +#define bfd_mach_fido 9
  31971. +#define bfd_mach_mcf_isa_a_nodiv 10
  31972. +#define bfd_mach_mcf_isa_a 11
  31973. +#define bfd_mach_mcf_isa_a_mac 12
  31974. +#define bfd_mach_mcf_isa_a_emac 13
  31975. +#define bfd_mach_mcf_isa_aplus 14
  31976. +#define bfd_mach_mcf_isa_aplus_mac 15
  31977. +#define bfd_mach_mcf_isa_aplus_emac 16
  31978. +#define bfd_mach_mcf_isa_b_nousp 17
  31979. +#define bfd_mach_mcf_isa_b_nousp_mac 18
  31980. +#define bfd_mach_mcf_isa_b_nousp_emac 19
  31981. +#define bfd_mach_mcf_isa_b 20
  31982. +#define bfd_mach_mcf_isa_b_mac 21
  31983. +#define bfd_mach_mcf_isa_b_emac 22
  31984. +#define bfd_mach_mcf_isa_b_float 23
  31985. +#define bfd_mach_mcf_isa_b_float_mac 24
  31986. +#define bfd_mach_mcf_isa_b_float_emac 25
  31987. +#define bfd_mach_mcf_isa_c 26
  31988. +#define bfd_mach_mcf_isa_c_mac 27
  31989. +#define bfd_mach_mcf_isa_c_emac 28
  31990. + bfd_arch_vax, /* DEC Vax */
  31991. + bfd_arch_i960, /* Intel 960 */
  31992. + /* The order of the following is important.
  31993. + lower number indicates a machine type that
  31994. + only accepts a subset of the instructions
  31995. + available to machines with higher numbers.
  31996. + The exception is the "ca", which is
  31997. + incompatible with all other machines except
  31998. + "core". */
  31999. +
  32000. +#define bfd_mach_i960_core 1
  32001. +#define bfd_mach_i960_ka_sa 2
  32002. +#define bfd_mach_i960_kb_sb 3
  32003. +#define bfd_mach_i960_mc 4
  32004. +#define bfd_mach_i960_xa 5
  32005. +#define bfd_mach_i960_ca 6
  32006. +#define bfd_mach_i960_jx 7
  32007. +#define bfd_mach_i960_hx 8
  32008. +
  32009. + bfd_arch_or32, /* OpenRISC 32 */
  32010. +
  32011. + bfd_arch_sparc, /* SPARC */
  32012. +#define bfd_mach_sparc 1
  32013. +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
  32014. +#define bfd_mach_sparc_sparclet 2
  32015. +#define bfd_mach_sparc_sparclite 3
  32016. +#define bfd_mach_sparc_v8plus 4
  32017. +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
  32018. +#define bfd_mach_sparc_sparclite_le 6
  32019. +#define bfd_mach_sparc_v9 7
  32020. +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
  32021. +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
  32022. +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
  32023. +/* Nonzero if MACH has the v9 instruction set. */
  32024. +#define bfd_mach_sparc_v9_p(mach) \
  32025. + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
  32026. + && (mach) != bfd_mach_sparc_sparclite_le)
  32027. +/* Nonzero if MACH is a 64 bit sparc architecture. */
  32028. +#define bfd_mach_sparc_64bit_p(mach) \
  32029. + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
  32030. + bfd_arch_spu, /* PowerPC SPU */
  32031. +#define bfd_mach_spu 256
  32032. + bfd_arch_mips, /* MIPS Rxxxx */
  32033. +#define bfd_mach_mips3000 3000
  32034. +#define bfd_mach_mips3900 3900
  32035. +#define bfd_mach_mips4000 4000
  32036. +#define bfd_mach_mips4010 4010
  32037. +#define bfd_mach_mips4100 4100
  32038. +#define bfd_mach_mips4111 4111
  32039. +#define bfd_mach_mips4120 4120
  32040. +#define bfd_mach_mips4300 4300
  32041. +#define bfd_mach_mips4400 4400
  32042. +#define bfd_mach_mips4600 4600
  32043. +#define bfd_mach_mips4650 4650
  32044. +#define bfd_mach_mips5000 5000
  32045. +#define bfd_mach_mips5400 5400
  32046. +#define bfd_mach_mips5500 5500
  32047. +#define bfd_mach_mips6000 6000
  32048. +#define bfd_mach_mips7000 7000
  32049. +#define bfd_mach_mips8000 8000
  32050. +#define bfd_mach_mips9000 9000
  32051. +#define bfd_mach_mips10000 10000
  32052. +#define bfd_mach_mips12000 12000
  32053. +#define bfd_mach_mips16 16
  32054. +#define bfd_mach_mips5 5
  32055. +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
  32056. +#define bfd_mach_mipsisa32 32
  32057. +#define bfd_mach_mipsisa32r2 33
  32058. +#define bfd_mach_mipsisa64 64
  32059. +#define bfd_mach_mipsisa64r2 65
  32060. + bfd_arch_i386, /* Intel 386 */
  32061. +#define bfd_mach_i386_i386 1
  32062. +#define bfd_mach_i386_i8086 2
  32063. +#define bfd_mach_i386_i386_intel_syntax 3
  32064. +#define bfd_mach_x86_64 64
  32065. +#define bfd_mach_x86_64_intel_syntax 65
  32066. + bfd_arch_we32k, /* AT&T WE32xxx */
  32067. + bfd_arch_tahoe, /* CCI/Harris Tahoe */
  32068. + bfd_arch_i860, /* Intel 860 */
  32069. + bfd_arch_i370, /* IBM 360/370 Mainframes */
  32070. + bfd_arch_romp, /* IBM ROMP PC/RT */
  32071. + bfd_arch_convex, /* Convex */
  32072. + bfd_arch_m88k, /* Motorola 88xxx */
  32073. + bfd_arch_m98k, /* Motorola 98xxx */
  32074. + bfd_arch_pyramid, /* Pyramid Technology */
  32075. + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
  32076. +#define bfd_mach_h8300 1
  32077. +#define bfd_mach_h8300h 2
  32078. +#define bfd_mach_h8300s 3
  32079. +#define bfd_mach_h8300hn 4
  32080. +#define bfd_mach_h8300sn 5
  32081. +#define bfd_mach_h8300sx 6
  32082. +#define bfd_mach_h8300sxn 7
  32083. + bfd_arch_pdp11, /* DEC PDP-11 */
  32084. + bfd_arch_powerpc, /* PowerPC */
  32085. +#define bfd_mach_ppc 32
  32086. +#define bfd_mach_ppc64 64
  32087. +#define bfd_mach_ppc_403 403
  32088. +#define bfd_mach_ppc_403gc 4030
  32089. +#define bfd_mach_ppc_505 505
  32090. +#define bfd_mach_ppc_601 601
  32091. +#define bfd_mach_ppc_602 602
  32092. +#define bfd_mach_ppc_603 603
  32093. +#define bfd_mach_ppc_ec603e 6031
  32094. +#define bfd_mach_ppc_604 604
  32095. +#define bfd_mach_ppc_620 620
  32096. +#define bfd_mach_ppc_630 630
  32097. +#define bfd_mach_ppc_750 750
  32098. +#define bfd_mach_ppc_860 860
  32099. +#define bfd_mach_ppc_a35 35
  32100. +#define bfd_mach_ppc_rs64ii 642
  32101. +#define bfd_mach_ppc_rs64iii 643
  32102. +#define bfd_mach_ppc_7400 7400
  32103. +#define bfd_mach_ppc_e500 500
  32104. + bfd_arch_rs6000, /* IBM RS/6000 */
  32105. +#define bfd_mach_rs6k 6000
  32106. +#define bfd_mach_rs6k_rs1 6001
  32107. +#define bfd_mach_rs6k_rsc 6003
  32108. +#define bfd_mach_rs6k_rs2 6002
  32109. + bfd_arch_hppa, /* HP PA RISC */
  32110. +#define bfd_mach_hppa10 10
  32111. +#define bfd_mach_hppa11 11
  32112. +#define bfd_mach_hppa20 20
  32113. +#define bfd_mach_hppa20w 25
  32114. + bfd_arch_d10v, /* Mitsubishi D10V */
  32115. +#define bfd_mach_d10v 1
  32116. +#define bfd_mach_d10v_ts2 2
  32117. +#define bfd_mach_d10v_ts3 3
  32118. + bfd_arch_d30v, /* Mitsubishi D30V */
  32119. + bfd_arch_dlx, /* DLX */
  32120. + bfd_arch_m68hc11, /* Motorola 68HC11 */
  32121. + bfd_arch_m68hc12, /* Motorola 68HC12 */
  32122. +#define bfd_mach_m6812_default 0
  32123. +#define bfd_mach_m6812 1
  32124. +#define bfd_mach_m6812s 2
  32125. + bfd_arch_z8k, /* Zilog Z8000 */
  32126. +#define bfd_mach_z8001 1
  32127. +#define bfd_mach_z8002 2
  32128. + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
  32129. + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
  32130. +#define bfd_mach_sh 1
  32131. +#define bfd_mach_sh2 0x20
  32132. +#define bfd_mach_sh_dsp 0x2d
  32133. +#define bfd_mach_sh2a 0x2a
  32134. +#define bfd_mach_sh2a_nofpu 0x2b
  32135. +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
  32136. +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
  32137. +#define bfd_mach_sh2a_or_sh4 0x2a3
  32138. +#define bfd_mach_sh2a_or_sh3e 0x2a4
  32139. +#define bfd_mach_sh2e 0x2e
  32140. +#define bfd_mach_sh3 0x30
  32141. +#define bfd_mach_sh3_nommu 0x31
  32142. +#define bfd_mach_sh3_dsp 0x3d
  32143. +#define bfd_mach_sh3e 0x3e
  32144. +#define bfd_mach_sh4 0x40
  32145. +#define bfd_mach_sh4_nofpu 0x41
  32146. +#define bfd_mach_sh4_nommu_nofpu 0x42
  32147. +#define bfd_mach_sh4a 0x4a
  32148. +#define bfd_mach_sh4a_nofpu 0x4b
  32149. +#define bfd_mach_sh4al_dsp 0x4d
  32150. +#define bfd_mach_sh5 0x50
  32151. + bfd_arch_alpha, /* Dec Alpha */
  32152. +#define bfd_mach_alpha_ev4 0x10
  32153. +#define bfd_mach_alpha_ev5 0x20
  32154. +#define bfd_mach_alpha_ev6 0x30
  32155. + bfd_arch_arm, /* Advanced Risc Machines ARM. */
  32156. +#define bfd_mach_arm_unknown 0
  32157. +#define bfd_mach_arm_2 1
  32158. +#define bfd_mach_arm_2a 2
  32159. +#define bfd_mach_arm_3 3
  32160. +#define bfd_mach_arm_3M 4
  32161. +#define bfd_mach_arm_4 5
  32162. +#define bfd_mach_arm_4T 6
  32163. +#define bfd_mach_arm_5 7
  32164. +#define bfd_mach_arm_5T 8
  32165. +#define bfd_mach_arm_5TE 9
  32166. +#define bfd_mach_arm_XScale 10
  32167. +#define bfd_mach_arm_ep9312 11
  32168. +#define bfd_mach_arm_iWMMXt 12
  32169. +#define bfd_mach_arm_iWMMXt2 13
  32170. + bfd_arch_ns32k, /* National Semiconductors ns32000 */
  32171. + bfd_arch_w65, /* WDC 65816 */
  32172. + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
  32173. + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
  32174. +#define bfd_mach_tic3x 30
  32175. +#define bfd_mach_tic4x 40
  32176. + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
  32177. + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
  32178. + bfd_arch_v850, /* NEC V850 */
  32179. +#define bfd_mach_v850 1
  32180. +#define bfd_mach_v850e 'E'
  32181. +#define bfd_mach_v850e1 '1'
  32182. + bfd_arch_arc, /* ARC Cores */
  32183. +#define bfd_mach_arc_5 5
  32184. +#define bfd_mach_arc_6 6
  32185. +#define bfd_mach_arc_7 7
  32186. +#define bfd_mach_arc_8 8
  32187. + bfd_arch_m32c, /* Renesas M16C/M32C. */
  32188. +#define bfd_mach_m16c 0x75
  32189. +#define bfd_mach_m32c 0x78
  32190. + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
  32191. +#define bfd_mach_m32r 1 /* For backwards compatibility. */
  32192. +#define bfd_mach_m32rx 'x'
  32193. +#define bfd_mach_m32r2 '2'
  32194. + bfd_arch_mn10200, /* Matsushita MN10200 */
  32195. + bfd_arch_mn10300, /* Matsushita MN10300 */
  32196. +#define bfd_mach_mn10300 300
  32197. +#define bfd_mach_am33 330
  32198. +#define bfd_mach_am33_2 332
  32199. + bfd_arch_fr30,
  32200. +#define bfd_mach_fr30 0x46523330
  32201. + bfd_arch_frv,
  32202. +#define bfd_mach_frv 1
  32203. +#define bfd_mach_frvsimple 2
  32204. +#define bfd_mach_fr300 300
  32205. +#define bfd_mach_fr400 400
  32206. +#define bfd_mach_fr450 450
  32207. +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
  32208. +#define bfd_mach_fr500 500
  32209. +#define bfd_mach_fr550 550
  32210. + bfd_arch_mcore,
  32211. + bfd_arch_mep,
  32212. +#define bfd_mach_mep 1
  32213. +#define bfd_mach_mep_h1 0x6831
  32214. + bfd_arch_ia64, /* HP/Intel ia64 */
  32215. +#define bfd_mach_ia64_elf64 64
  32216. +#define bfd_mach_ia64_elf32 32
  32217. + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
  32218. +#define bfd_mach_ip2022 1
  32219. +#define bfd_mach_ip2022ext 2
  32220. + bfd_arch_iq2000, /* Vitesse IQ2000. */
  32221. +#define bfd_mach_iq2000 1
  32222. +#define bfd_mach_iq10 2
  32223. + bfd_arch_mt,
  32224. +#define bfd_mach_ms1 1
  32225. +#define bfd_mach_mrisc2 2
  32226. +#define bfd_mach_ms2 3
  32227. + bfd_arch_pj,
  32228. + bfd_arch_avr, /* Atmel AVR microcontrollers. */
  32229. +#define bfd_mach_avr1 1
  32230. +#define bfd_mach_avr2 2
  32231. +#define bfd_mach_avr3 3
  32232. +#define bfd_mach_avr4 4
  32233. +#define bfd_mach_avr5 5
  32234. +#define bfd_mach_avr6 6
  32235. + bfd_arch_bfin, /* ADI Blackfin */
  32236. +#define bfd_mach_bfin 1
  32237. + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
  32238. +#define bfd_mach_cr16 1
  32239. + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
  32240. +#define bfd_mach_cr16c 1
  32241. + bfd_arch_crx, /* National Semiconductor CRX. */
  32242. +#define bfd_mach_crx 1
  32243. + bfd_arch_cris, /* Axis CRIS */
  32244. +#define bfd_mach_cris_v0_v10 255
  32245. +#define bfd_mach_cris_v32 32
  32246. +#define bfd_mach_cris_v10_v32 1032
  32247. + bfd_arch_s390, /* IBM s390 */
  32248. +#define bfd_mach_s390_31 31
  32249. +#define bfd_mach_s390_64 64
  32250. + bfd_arch_score, /* Sunplus score */
  32251. + bfd_arch_openrisc, /* OpenRISC */
  32252. + bfd_arch_mmix, /* Donald Knuth's educational processor. */
  32253. + bfd_arch_xstormy16,
  32254. +#define bfd_mach_xstormy16 1
  32255. + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
  32256. +#define bfd_mach_msp11 11
  32257. +#define bfd_mach_msp110 110
  32258. +#define bfd_mach_msp12 12
  32259. +#define bfd_mach_msp13 13
  32260. +#define bfd_mach_msp14 14
  32261. +#define bfd_mach_msp15 15
  32262. +#define bfd_mach_msp16 16
  32263. +#define bfd_mach_msp21 21
  32264. +#define bfd_mach_msp31 31
  32265. +#define bfd_mach_msp32 32
  32266. +#define bfd_mach_msp33 33
  32267. +#define bfd_mach_msp41 41
  32268. +#define bfd_mach_msp42 42
  32269. +#define bfd_mach_msp43 43
  32270. +#define bfd_mach_msp44 44
  32271. + bfd_arch_xc16x, /* Infineon's XC16X Series. */
  32272. +#define bfd_mach_xc16x 1
  32273. +#define bfd_mach_xc16xl 2
  32274. +#define bfd_mach_xc16xs 3
  32275. + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
  32276. +#define bfd_mach_xtensa 1
  32277. + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
  32278. +#define bfd_mach_maxq10 10
  32279. +#define bfd_mach_maxq20 20
  32280. + bfd_arch_z80,
  32281. +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
  32282. +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
  32283. +#define bfd_mach_z80full 7 /* All undocumented instructions. */
  32284. +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
  32285. + bfd_arch_last
  32286. + };
  32287. +
  32288. +typedef struct bfd_arch_info
  32289. +{
  32290. + int bits_per_word;
  32291. + int bits_per_address;
  32292. + int bits_per_byte;
  32293. + enum bfd_architecture arch;
  32294. + unsigned long mach;
  32295. + const char *arch_name;
  32296. + const char *printable_name;
  32297. + unsigned int section_align_power;
  32298. + /* TRUE if this is the default machine for the architecture.
  32299. + The default arch should be the first entry for an arch so that
  32300. + all the entries for that arch can be accessed via <<next>>. */
  32301. + bfd_boolean the_default;
  32302. + const struct bfd_arch_info * (*compatible)
  32303. + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
  32304. +
  32305. + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
  32306. +
  32307. + const struct bfd_arch_info *next;
  32308. +}
  32309. +bfd_arch_info_type;
  32310. +
  32311. +const char *bfd_printable_name (bfd *abfd);
  32312. +
  32313. +const bfd_arch_info_type *bfd_scan_arch (const char *string);
  32314. +
  32315. +const char **bfd_arch_list (void);
  32316. +
  32317. +const bfd_arch_info_type *bfd_arch_get_compatible
  32318. + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
  32319. +
  32320. +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
  32321. +
  32322. +enum bfd_architecture bfd_get_arch (bfd *abfd);
  32323. +
  32324. +unsigned long bfd_get_mach (bfd *abfd);
  32325. +
  32326. +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
  32327. +
  32328. +unsigned int bfd_arch_bits_per_address (bfd *abfd);
  32329. +
  32330. +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
  32331. +
  32332. +const bfd_arch_info_type *bfd_lookup_arch
  32333. + (enum bfd_architecture arch, unsigned long machine);
  32334. +
  32335. +const char *bfd_printable_arch_mach
  32336. + (enum bfd_architecture arch, unsigned long machine);
  32337. +
  32338. +unsigned int bfd_octets_per_byte (bfd *abfd);
  32339. +
  32340. +unsigned int bfd_arch_mach_octets_per_byte
  32341. + (enum bfd_architecture arch, unsigned long machine);
  32342. +
  32343. +/* Extracted from reloc.c. */
  32344. +typedef enum bfd_reloc_status
  32345. +{
  32346. + /* No errors detected. */
  32347. + bfd_reloc_ok,
  32348. +
  32349. + /* The relocation was performed, but there was an overflow. */
  32350. + bfd_reloc_overflow,
  32351. +
  32352. + /* The address to relocate was not within the section supplied. */
  32353. + bfd_reloc_outofrange,
  32354. +
  32355. + /* Used by special functions. */
  32356. + bfd_reloc_continue,
  32357. +
  32358. + /* Unsupported relocation size requested. */
  32359. + bfd_reloc_notsupported,
  32360. +
  32361. + /* Unused. */
  32362. + bfd_reloc_other,
  32363. +
  32364. + /* The symbol to relocate against was undefined. */
  32365. + bfd_reloc_undefined,
  32366. +
  32367. + /* The relocation was performed, but may not be ok - presently
  32368. + generated only when linking i960 coff files with i960 b.out
  32369. + symbols. If this type is returned, the error_message argument
  32370. + to bfd_perform_relocation will be set. */
  32371. + bfd_reloc_dangerous
  32372. + }
  32373. + bfd_reloc_status_type;
  32374. +
  32375. +
  32376. +typedef struct reloc_cache_entry
  32377. +{
  32378. + /* A pointer into the canonical table of pointers. */
  32379. + struct bfd_symbol **sym_ptr_ptr;
  32380. +
  32381. + /* offset in section. */
  32382. + bfd_size_type address;
  32383. +
  32384. + /* addend for relocation value. */
  32385. + bfd_vma addend;
  32386. +
  32387. + /* Pointer to how to perform the required relocation. */
  32388. + reloc_howto_type *howto;
  32389. +
  32390. +}
  32391. +arelent;
  32392. +
  32393. +enum complain_overflow
  32394. +{
  32395. + /* Do not complain on overflow. */
  32396. + complain_overflow_dont,
  32397. +
  32398. + /* Complain if the value overflows when considered as a signed
  32399. + number one bit larger than the field. ie. A bitfield of N bits
  32400. + is allowed to represent -2**n to 2**n-1. */
  32401. + complain_overflow_bitfield,
  32402. +
  32403. + /* Complain if the value overflows when considered as a signed
  32404. + number. */
  32405. + complain_overflow_signed,
  32406. +
  32407. + /* Complain if the value overflows when considered as an
  32408. + unsigned number. */
  32409. + complain_overflow_unsigned
  32410. +};
  32411. +
  32412. +struct reloc_howto_struct
  32413. +{
  32414. + /* The type field has mainly a documentary use - the back end can
  32415. + do what it wants with it, though normally the back end's
  32416. + external idea of what a reloc number is stored
  32417. + in this field. For example, a PC relative word relocation
  32418. + in a coff environment has the type 023 - because that's
  32419. + what the outside world calls a R_PCRWORD reloc. */
  32420. + unsigned int type;
  32421. +
  32422. + /* The value the final relocation is shifted right by. This drops
  32423. + unwanted data from the relocation. */
  32424. + unsigned int rightshift;
  32425. +
  32426. + /* The size of the item to be relocated. This is *not* a
  32427. + power-of-two measure. To get the number of bytes operated
  32428. + on by a type of relocation, use bfd_get_reloc_size. */
  32429. + int size;
  32430. +
  32431. + /* The number of bits in the item to be relocated. This is used
  32432. + when doing overflow checking. */
  32433. + unsigned int bitsize;
  32434. +
  32435. + /* Notes that the relocation is relative to the location in the
  32436. + data section of the addend. The relocation function will
  32437. + subtract from the relocation value the address of the location
  32438. + being relocated. */
  32439. + bfd_boolean pc_relative;
  32440. +
  32441. + /* The bit position of the reloc value in the destination.
  32442. + The relocated value is left shifted by this amount. */
  32443. + unsigned int bitpos;
  32444. +
  32445. + /* What type of overflow error should be checked for when
  32446. + relocating. */
  32447. + enum complain_overflow complain_on_overflow;
  32448. +
  32449. + /* If this field is non null, then the supplied function is
  32450. + called rather than the normal function. This allows really
  32451. + strange relocation methods to be accommodated (e.g., i960 callj
  32452. + instructions). */
  32453. + bfd_reloc_status_type (*special_function)
  32454. + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
  32455. + bfd *, char **);
  32456. +
  32457. + /* The textual name of the relocation type. */
  32458. + char *name;
  32459. +
  32460. + /* Some formats record a relocation addend in the section contents
  32461. + rather than with the relocation. For ELF formats this is the
  32462. + distinction between USE_REL and USE_RELA (though the code checks
  32463. + for USE_REL == 1/0). The value of this field is TRUE if the
  32464. + addend is recorded with the section contents; when performing a
  32465. + partial link (ld -r) the section contents (the data) will be
  32466. + modified. The value of this field is FALSE if addends are
  32467. + recorded with the relocation (in arelent.addend); when performing
  32468. + a partial link the relocation will be modified.
  32469. + All relocations for all ELF USE_RELA targets should set this field
  32470. + to FALSE (values of TRUE should be looked on with suspicion).
  32471. + However, the converse is not true: not all relocations of all ELF
  32472. + USE_REL targets set this field to TRUE. Why this is so is peculiar
  32473. + to each particular target. For relocs that aren't used in partial
  32474. + links (e.g. GOT stuff) it doesn't matter what this is set to. */
  32475. + bfd_boolean partial_inplace;
  32476. +
  32477. + /* src_mask selects the part of the instruction (or data) to be used
  32478. + in the relocation sum. If the target relocations don't have an
  32479. + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
  32480. + dst_mask to extract the addend from the section contents. If
  32481. + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
  32482. + field should be zero. Non-zero values for ELF USE_RELA targets are
  32483. + bogus as in those cases the value in the dst_mask part of the
  32484. + section contents should be treated as garbage. */
  32485. + bfd_vma src_mask;
  32486. +
  32487. + /* dst_mask selects which parts of the instruction (or data) are
  32488. + replaced with a relocated value. */
  32489. + bfd_vma dst_mask;
  32490. +
  32491. + /* When some formats create PC relative instructions, they leave
  32492. + the value of the pc of the place being relocated in the offset
  32493. + slot of the instruction, so that a PC relative relocation can
  32494. + be made just by adding in an ordinary offset (e.g., sun3 a.out).
  32495. + Some formats leave the displacement part of an instruction
  32496. + empty (e.g., m88k bcs); this flag signals the fact. */
  32497. + bfd_boolean pcrel_offset;
  32498. +};
  32499. +
  32500. +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
  32501. + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
  32502. +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
  32503. + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
  32504. + NAME, FALSE, 0, 0, IN)
  32505. +
  32506. +#define EMPTY_HOWTO(C) \
  32507. + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
  32508. + NULL, FALSE, 0, 0, FALSE)
  32509. +
  32510. +#define HOWTO_PREPARE(relocation, symbol) \
  32511. + { \
  32512. + if (symbol != NULL) \
  32513. + { \
  32514. + if (bfd_is_com_section (symbol->section)) \
  32515. + { \
  32516. + relocation = 0; \
  32517. + } \
  32518. + else \
  32519. + { \
  32520. + relocation = symbol->value; \
  32521. + } \
  32522. + } \
  32523. + }
  32524. +
  32525. +unsigned int bfd_get_reloc_size (reloc_howto_type *);
  32526. +
  32527. +typedef struct relent_chain
  32528. +{
  32529. + arelent relent;
  32530. + struct relent_chain *next;
  32531. +}
  32532. +arelent_chain;
  32533. +
  32534. +bfd_reloc_status_type bfd_check_overflow
  32535. + (enum complain_overflow how,
  32536. + unsigned int bitsize,
  32537. + unsigned int rightshift,
  32538. + unsigned int addrsize,
  32539. + bfd_vma relocation);
  32540. +
  32541. +bfd_reloc_status_type bfd_perform_relocation
  32542. + (bfd *abfd,
  32543. + arelent *reloc_entry,
  32544. + void *data,
  32545. + asection *input_section,
  32546. + bfd *output_bfd,
  32547. + char **error_message);
  32548. +
  32549. +bfd_reloc_status_type bfd_install_relocation
  32550. + (bfd *abfd,
  32551. + arelent *reloc_entry,
  32552. + void *data, bfd_vma data_start,
  32553. + asection *input_section,
  32554. + char **error_message);
  32555. +
  32556. +enum bfd_reloc_code_real {
  32557. + _dummy_first_bfd_reloc_code_real,
  32558. +
  32559. +
  32560. +/* Basic absolute relocations of N bits. */
  32561. + BFD_RELOC_64,
  32562. + BFD_RELOC_32,
  32563. + BFD_RELOC_26,
  32564. + BFD_RELOC_24,
  32565. + BFD_RELOC_16,
  32566. + BFD_RELOC_14,
  32567. + BFD_RELOC_8,
  32568. +
  32569. +/* PC-relative relocations. Sometimes these are relative to the address
  32570. +of the relocation itself; sometimes they are relative to the start of
  32571. +the section containing the relocation. It depends on the specific target.
  32572. +
  32573. +The 24-bit relocation is used in some Intel 960 configurations. */
  32574. + BFD_RELOC_64_PCREL,
  32575. + BFD_RELOC_32_PCREL,
  32576. + BFD_RELOC_24_PCREL,
  32577. + BFD_RELOC_16_PCREL,
  32578. + BFD_RELOC_12_PCREL,
  32579. + BFD_RELOC_8_PCREL,
  32580. +
  32581. +/* Section relative relocations. Some targets need this for DWARF2. */
  32582. + BFD_RELOC_32_SECREL,
  32583. +
  32584. +/* For ELF. */
  32585. + BFD_RELOC_32_GOT_PCREL,
  32586. + BFD_RELOC_16_GOT_PCREL,
  32587. + BFD_RELOC_8_GOT_PCREL,
  32588. + BFD_RELOC_32_GOTOFF,
  32589. + BFD_RELOC_16_GOTOFF,
  32590. + BFD_RELOC_LO16_GOTOFF,
  32591. + BFD_RELOC_HI16_GOTOFF,
  32592. + BFD_RELOC_HI16_S_GOTOFF,
  32593. + BFD_RELOC_8_GOTOFF,
  32594. + BFD_RELOC_64_PLT_PCREL,
  32595. + BFD_RELOC_32_PLT_PCREL,
  32596. + BFD_RELOC_24_PLT_PCREL,
  32597. + BFD_RELOC_16_PLT_PCREL,
  32598. + BFD_RELOC_8_PLT_PCREL,
  32599. + BFD_RELOC_64_PLTOFF,
  32600. + BFD_RELOC_32_PLTOFF,
  32601. + BFD_RELOC_16_PLTOFF,
  32602. + BFD_RELOC_LO16_PLTOFF,
  32603. + BFD_RELOC_HI16_PLTOFF,
  32604. + BFD_RELOC_HI16_S_PLTOFF,
  32605. + BFD_RELOC_8_PLTOFF,
  32606. +
  32607. +/* Relocations used by 68K ELF. */
  32608. + BFD_RELOC_68K_GLOB_DAT,
  32609. + BFD_RELOC_68K_JMP_SLOT,
  32610. + BFD_RELOC_68K_RELATIVE,
  32611. +
  32612. +/* Linkage-table relative. */
  32613. + BFD_RELOC_32_BASEREL,
  32614. + BFD_RELOC_16_BASEREL,
  32615. + BFD_RELOC_LO16_BASEREL,
  32616. + BFD_RELOC_HI16_BASEREL,
  32617. + BFD_RELOC_HI16_S_BASEREL,
  32618. + BFD_RELOC_8_BASEREL,
  32619. + BFD_RELOC_RVA,
  32620. +
  32621. +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
  32622. + BFD_RELOC_8_FFnn,
  32623. +
  32624. +/* These PC-relative relocations are stored as word displacements --
  32625. +i.e., byte displacements shifted right two bits. The 30-bit word
  32626. +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
  32627. +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
  32628. +signed 16-bit displacement is used on the MIPS, and the 23-bit
  32629. +displacement is used on the Alpha. */
  32630. + BFD_RELOC_32_PCREL_S2,
  32631. + BFD_RELOC_16_PCREL_S2,
  32632. + BFD_RELOC_23_PCREL_S2,
  32633. +
  32634. +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
  32635. +the target word. These are used on the SPARC. */
  32636. + BFD_RELOC_HI22,
  32637. + BFD_RELOC_LO10,
  32638. +
  32639. +/* For systems that allocate a Global Pointer register, these are
  32640. +displacements off that register. These relocation types are
  32641. +handled specially, because the value the register will have is
  32642. +decided relatively late. */
  32643. + BFD_RELOC_GPREL16,
  32644. + BFD_RELOC_GPREL32,
  32645. +
  32646. +/* Reloc types used for i960/b.out. */
  32647. + BFD_RELOC_I960_CALLJ,
  32648. +
  32649. +/* SPARC ELF relocations. There is probably some overlap with other
  32650. +relocation types already defined. */
  32651. + BFD_RELOC_NONE,
  32652. + BFD_RELOC_SPARC_WDISP22,
  32653. + BFD_RELOC_SPARC22,
  32654. + BFD_RELOC_SPARC13,
  32655. + BFD_RELOC_SPARC_GOT10,
  32656. + BFD_RELOC_SPARC_GOT13,
  32657. + BFD_RELOC_SPARC_GOT22,
  32658. + BFD_RELOC_SPARC_PC10,
  32659. + BFD_RELOC_SPARC_PC22,
  32660. + BFD_RELOC_SPARC_WPLT30,
  32661. + BFD_RELOC_SPARC_COPY,
  32662. + BFD_RELOC_SPARC_GLOB_DAT,
  32663. + BFD_RELOC_SPARC_JMP_SLOT,
  32664. + BFD_RELOC_SPARC_RELATIVE,
  32665. + BFD_RELOC_SPARC_UA16,
  32666. + BFD_RELOC_SPARC_UA32,
  32667. + BFD_RELOC_SPARC_UA64,
  32668. +
  32669. +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
  32670. + BFD_RELOC_SPARC_BASE13,
  32671. + BFD_RELOC_SPARC_BASE22,
  32672. +
  32673. +/* SPARC64 relocations */
  32674. +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
  32675. + BFD_RELOC_SPARC_10,
  32676. + BFD_RELOC_SPARC_11,
  32677. + BFD_RELOC_SPARC_OLO10,
  32678. + BFD_RELOC_SPARC_HH22,
  32679. + BFD_RELOC_SPARC_HM10,
  32680. + BFD_RELOC_SPARC_LM22,
  32681. + BFD_RELOC_SPARC_PC_HH22,
  32682. + BFD_RELOC_SPARC_PC_HM10,
  32683. + BFD_RELOC_SPARC_PC_LM22,
  32684. + BFD_RELOC_SPARC_WDISP16,
  32685. + BFD_RELOC_SPARC_WDISP19,
  32686. + BFD_RELOC_SPARC_7,
  32687. + BFD_RELOC_SPARC_6,
  32688. + BFD_RELOC_SPARC_5,
  32689. +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
  32690. + BFD_RELOC_SPARC_PLT32,
  32691. + BFD_RELOC_SPARC_PLT64,
  32692. + BFD_RELOC_SPARC_HIX22,
  32693. + BFD_RELOC_SPARC_LOX10,
  32694. + BFD_RELOC_SPARC_H44,
  32695. + BFD_RELOC_SPARC_M44,
  32696. + BFD_RELOC_SPARC_L44,
  32697. + BFD_RELOC_SPARC_REGISTER,
  32698. +
  32699. +/* SPARC little endian relocation */
  32700. + BFD_RELOC_SPARC_REV32,
  32701. +
  32702. +/* SPARC TLS relocations */
  32703. + BFD_RELOC_SPARC_TLS_GD_HI22,
  32704. + BFD_RELOC_SPARC_TLS_GD_LO10,
  32705. + BFD_RELOC_SPARC_TLS_GD_ADD,
  32706. + BFD_RELOC_SPARC_TLS_GD_CALL,
  32707. + BFD_RELOC_SPARC_TLS_LDM_HI22,
  32708. + BFD_RELOC_SPARC_TLS_LDM_LO10,
  32709. + BFD_RELOC_SPARC_TLS_LDM_ADD,
  32710. + BFD_RELOC_SPARC_TLS_LDM_CALL,
  32711. + BFD_RELOC_SPARC_TLS_LDO_HIX22,
  32712. + BFD_RELOC_SPARC_TLS_LDO_LOX10,
  32713. + BFD_RELOC_SPARC_TLS_LDO_ADD,
  32714. + BFD_RELOC_SPARC_TLS_IE_HI22,
  32715. + BFD_RELOC_SPARC_TLS_IE_LO10,
  32716. + BFD_RELOC_SPARC_TLS_IE_LD,
  32717. + BFD_RELOC_SPARC_TLS_IE_LDX,
  32718. + BFD_RELOC_SPARC_TLS_IE_ADD,
  32719. + BFD_RELOC_SPARC_TLS_LE_HIX22,
  32720. + BFD_RELOC_SPARC_TLS_LE_LOX10,
  32721. + BFD_RELOC_SPARC_TLS_DTPMOD32,
  32722. + BFD_RELOC_SPARC_TLS_DTPMOD64,
  32723. + BFD_RELOC_SPARC_TLS_DTPOFF32,
  32724. + BFD_RELOC_SPARC_TLS_DTPOFF64,
  32725. + BFD_RELOC_SPARC_TLS_TPOFF32,
  32726. + BFD_RELOC_SPARC_TLS_TPOFF64,
  32727. +
  32728. +/* SPU Relocations. */
  32729. + BFD_RELOC_SPU_IMM7,
  32730. + BFD_RELOC_SPU_IMM8,
  32731. + BFD_RELOC_SPU_IMM10,
  32732. + BFD_RELOC_SPU_IMM10W,
  32733. + BFD_RELOC_SPU_IMM16,
  32734. + BFD_RELOC_SPU_IMM16W,
  32735. + BFD_RELOC_SPU_IMM18,
  32736. + BFD_RELOC_SPU_PCREL9a,
  32737. + BFD_RELOC_SPU_PCREL9b,
  32738. + BFD_RELOC_SPU_PCREL16,
  32739. + BFD_RELOC_SPU_LO16,
  32740. + BFD_RELOC_SPU_HI16,
  32741. + BFD_RELOC_SPU_PPU32,
  32742. + BFD_RELOC_SPU_PPU64,
  32743. +
  32744. +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
  32745. +"addend" in some special way.
  32746. +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
  32747. +writing; when reading, it will be the absolute section symbol. The
  32748. +addend is the displacement in bytes of the "lda" instruction from
  32749. +the "ldah" instruction (which is at the address of this reloc). */
  32750. + BFD_RELOC_ALPHA_GPDISP_HI16,
  32751. +
  32752. +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
  32753. +with GPDISP_HI16 relocs. The addend is ignored when writing the
  32754. +relocations out, and is filled in with the file's GP value on
  32755. +reading, for convenience. */
  32756. + BFD_RELOC_ALPHA_GPDISP_LO16,
  32757. +
  32758. +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
  32759. +relocation except that there is no accompanying GPDISP_LO16
  32760. +relocation. */
  32761. + BFD_RELOC_ALPHA_GPDISP,
  32762. +
  32763. +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
  32764. +the assembler turns it into a LDQ instruction to load the address of
  32765. +the symbol, and then fills in a register in the real instruction.
  32766. +
  32767. +The LITERAL reloc, at the LDQ instruction, refers to the .lita
  32768. +section symbol. The addend is ignored when writing, but is filled
  32769. +in with the file's GP value on reading, for convenience, as with the
  32770. +GPDISP_LO16 reloc.
  32771. +
  32772. +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
  32773. +It should refer to the symbol to be referenced, as with 16_GOTOFF,
  32774. +but it generates output not based on the position within the .got
  32775. +section, but relative to the GP value chosen for the file during the
  32776. +final link stage.
  32777. +
  32778. +The LITUSE reloc, on the instruction using the loaded address, gives
  32779. +information to the linker that it might be able to use to optimize
  32780. +away some literal section references. The symbol is ignored (read
  32781. +as the absolute section symbol), and the "addend" indicates the type
  32782. +of instruction using the register:
  32783. +1 - "memory" fmt insn
  32784. +2 - byte-manipulation (byte offset reg)
  32785. +3 - jsr (target of branch) */
  32786. + BFD_RELOC_ALPHA_LITERAL,
  32787. + BFD_RELOC_ALPHA_ELF_LITERAL,
  32788. + BFD_RELOC_ALPHA_LITUSE,
  32789. +
  32790. +/* The HINT relocation indicates a value that should be filled into the
  32791. +"hint" field of a jmp/jsr/ret instruction, for possible branch-
  32792. +prediction logic which may be provided on some processors. */
  32793. + BFD_RELOC_ALPHA_HINT,
  32794. +
  32795. +/* The LINKAGE relocation outputs a linkage pair in the object file,
  32796. +which is filled by the linker. */
  32797. + BFD_RELOC_ALPHA_LINKAGE,
  32798. +
  32799. +/* The CODEADDR relocation outputs a STO_CA in the object file,
  32800. +which is filled by the linker. */
  32801. + BFD_RELOC_ALPHA_CODEADDR,
  32802. +
  32803. +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
  32804. +GP register. */
  32805. + BFD_RELOC_ALPHA_GPREL_HI16,
  32806. + BFD_RELOC_ALPHA_GPREL_LO16,
  32807. +
  32808. +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
  32809. +share a common GP, and the target address is adjusted for
  32810. +STO_ALPHA_STD_GPLOAD. */
  32811. + BFD_RELOC_ALPHA_BRSGP,
  32812. +
  32813. +/* Alpha thread-local storage relocations. */
  32814. + BFD_RELOC_ALPHA_TLSGD,
  32815. + BFD_RELOC_ALPHA_TLSLDM,
  32816. + BFD_RELOC_ALPHA_DTPMOD64,
  32817. + BFD_RELOC_ALPHA_GOTDTPREL16,
  32818. + BFD_RELOC_ALPHA_DTPREL64,
  32819. + BFD_RELOC_ALPHA_DTPREL_HI16,
  32820. + BFD_RELOC_ALPHA_DTPREL_LO16,
  32821. + BFD_RELOC_ALPHA_DTPREL16,
  32822. + BFD_RELOC_ALPHA_GOTTPREL16,
  32823. + BFD_RELOC_ALPHA_TPREL64,
  32824. + BFD_RELOC_ALPHA_TPREL_HI16,
  32825. + BFD_RELOC_ALPHA_TPREL_LO16,
  32826. + BFD_RELOC_ALPHA_TPREL16,
  32827. +
  32828. +/* Bits 27..2 of the relocation address shifted right 2 bits;
  32829. +simple reloc otherwise. */
  32830. + BFD_RELOC_MIPS_JMP,
  32831. +
  32832. +/* The MIPS16 jump instruction. */
  32833. + BFD_RELOC_MIPS16_JMP,
  32834. +
  32835. +/* MIPS16 GP relative reloc. */
  32836. + BFD_RELOC_MIPS16_GPREL,
  32837. +
  32838. +/* High 16 bits of 32-bit value; simple reloc. */
  32839. + BFD_RELOC_HI16,
  32840. +
  32841. +/* High 16 bits of 32-bit value but the low 16 bits will be sign
  32842. +extended and added to form the final result. If the low 16
  32843. +bits form a negative number, we need to add one to the high value
  32844. +to compensate for the borrow when the low bits are added. */
  32845. + BFD_RELOC_HI16_S,
  32846. +
  32847. +/* Low 16 bits. */
  32848. + BFD_RELOC_LO16,
  32849. +
  32850. +/* High 16 bits of 32-bit pc-relative value */
  32851. + BFD_RELOC_HI16_PCREL,
  32852. +
  32853. +/* High 16 bits of 32-bit pc-relative value, adjusted */
  32854. + BFD_RELOC_HI16_S_PCREL,
  32855. +
  32856. +/* Low 16 bits of pc-relative value */
  32857. + BFD_RELOC_LO16_PCREL,
  32858. +
  32859. +/* MIPS16 high 16 bits of 32-bit value. */
  32860. + BFD_RELOC_MIPS16_HI16,
  32861. +
  32862. +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
  32863. +extended and added to form the final result. If the low 16
  32864. +bits form a negative number, we need to add one to the high value
  32865. +to compensate for the borrow when the low bits are added. */
  32866. + BFD_RELOC_MIPS16_HI16_S,
  32867. +
  32868. +/* MIPS16 low 16 bits. */
  32869. + BFD_RELOC_MIPS16_LO16,
  32870. +
  32871. +/* Relocation against a MIPS literal section. */
  32872. + BFD_RELOC_MIPS_LITERAL,
  32873. +
  32874. +/* MIPS ELF relocations. */
  32875. + BFD_RELOC_MIPS_GOT16,
  32876. + BFD_RELOC_MIPS_CALL16,
  32877. + BFD_RELOC_MIPS_GOT_HI16,
  32878. + BFD_RELOC_MIPS_GOT_LO16,
  32879. + BFD_RELOC_MIPS_CALL_HI16,
  32880. + BFD_RELOC_MIPS_CALL_LO16,
  32881. + BFD_RELOC_MIPS_SUB,
  32882. + BFD_RELOC_MIPS_GOT_PAGE,
  32883. + BFD_RELOC_MIPS_GOT_OFST,
  32884. + BFD_RELOC_MIPS_GOT_DISP,
  32885. + BFD_RELOC_MIPS_SHIFT5,
  32886. + BFD_RELOC_MIPS_SHIFT6,
  32887. + BFD_RELOC_MIPS_INSERT_A,
  32888. + BFD_RELOC_MIPS_INSERT_B,
  32889. + BFD_RELOC_MIPS_DELETE,
  32890. + BFD_RELOC_MIPS_HIGHEST,
  32891. + BFD_RELOC_MIPS_HIGHER,
  32892. + BFD_RELOC_MIPS_SCN_DISP,
  32893. + BFD_RELOC_MIPS_REL16,
  32894. + BFD_RELOC_MIPS_RELGOT,
  32895. + BFD_RELOC_MIPS_JALR,
  32896. + BFD_RELOC_MIPS_TLS_DTPMOD32,
  32897. + BFD_RELOC_MIPS_TLS_DTPREL32,
  32898. + BFD_RELOC_MIPS_TLS_DTPMOD64,
  32899. + BFD_RELOC_MIPS_TLS_DTPREL64,
  32900. + BFD_RELOC_MIPS_TLS_GD,
  32901. + BFD_RELOC_MIPS_TLS_LDM,
  32902. + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
  32903. + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
  32904. + BFD_RELOC_MIPS_TLS_GOTTPREL,
  32905. + BFD_RELOC_MIPS_TLS_TPREL32,
  32906. + BFD_RELOC_MIPS_TLS_TPREL64,
  32907. + BFD_RELOC_MIPS_TLS_TPREL_HI16,
  32908. + BFD_RELOC_MIPS_TLS_TPREL_LO16,
  32909. +
  32910. +
  32911. +/* MIPS ELF relocations (VxWorks extensions). */
  32912. + BFD_RELOC_MIPS_COPY,
  32913. + BFD_RELOC_MIPS_JUMP_SLOT,
  32914. +
  32915. +
  32916. +/* Fujitsu Frv Relocations. */
  32917. + BFD_RELOC_FRV_LABEL16,
  32918. + BFD_RELOC_FRV_LABEL24,
  32919. + BFD_RELOC_FRV_LO16,
  32920. + BFD_RELOC_FRV_HI16,
  32921. + BFD_RELOC_FRV_GPREL12,
  32922. + BFD_RELOC_FRV_GPRELU12,
  32923. + BFD_RELOC_FRV_GPREL32,
  32924. + BFD_RELOC_FRV_GPRELHI,
  32925. + BFD_RELOC_FRV_GPRELLO,
  32926. + BFD_RELOC_FRV_GOT12,
  32927. + BFD_RELOC_FRV_GOTHI,
  32928. + BFD_RELOC_FRV_GOTLO,
  32929. + BFD_RELOC_FRV_FUNCDESC,
  32930. + BFD_RELOC_FRV_FUNCDESC_GOT12,
  32931. + BFD_RELOC_FRV_FUNCDESC_GOTHI,
  32932. + BFD_RELOC_FRV_FUNCDESC_GOTLO,
  32933. + BFD_RELOC_FRV_FUNCDESC_VALUE,
  32934. + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
  32935. + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
  32936. + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
  32937. + BFD_RELOC_FRV_GOTOFF12,
  32938. + BFD_RELOC_FRV_GOTOFFHI,
  32939. + BFD_RELOC_FRV_GOTOFFLO,
  32940. + BFD_RELOC_FRV_GETTLSOFF,
  32941. + BFD_RELOC_FRV_TLSDESC_VALUE,
  32942. + BFD_RELOC_FRV_GOTTLSDESC12,
  32943. + BFD_RELOC_FRV_GOTTLSDESCHI,
  32944. + BFD_RELOC_FRV_GOTTLSDESCLO,
  32945. + BFD_RELOC_FRV_TLSMOFF12,
  32946. + BFD_RELOC_FRV_TLSMOFFHI,
  32947. + BFD_RELOC_FRV_TLSMOFFLO,
  32948. + BFD_RELOC_FRV_GOTTLSOFF12,
  32949. + BFD_RELOC_FRV_GOTTLSOFFHI,
  32950. + BFD_RELOC_FRV_GOTTLSOFFLO,
  32951. + BFD_RELOC_FRV_TLSOFF,
  32952. + BFD_RELOC_FRV_TLSDESC_RELAX,
  32953. + BFD_RELOC_FRV_GETTLSOFF_RELAX,
  32954. + BFD_RELOC_FRV_TLSOFF_RELAX,
  32955. + BFD_RELOC_FRV_TLSMOFF,
  32956. +
  32957. +
  32958. +/* This is a 24bit GOT-relative reloc for the mn10300. */
  32959. + BFD_RELOC_MN10300_GOTOFF24,
  32960. +
  32961. +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
  32962. +in the instruction. */
  32963. + BFD_RELOC_MN10300_GOT32,
  32964. +
  32965. +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
  32966. +in the instruction. */
  32967. + BFD_RELOC_MN10300_GOT24,
  32968. +
  32969. +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
  32970. +in the instruction. */
  32971. + BFD_RELOC_MN10300_GOT16,
  32972. +
  32973. +/* Copy symbol at runtime. */
  32974. + BFD_RELOC_MN10300_COPY,
  32975. +
  32976. +/* Create GOT entry. */
  32977. + BFD_RELOC_MN10300_GLOB_DAT,
  32978. +
  32979. +/* Create PLT entry. */
  32980. + BFD_RELOC_MN10300_JMP_SLOT,
  32981. +
  32982. +/* Adjust by program base. */
  32983. + BFD_RELOC_MN10300_RELATIVE,
  32984. +
  32985. +
  32986. +/* i386/elf relocations */
  32987. + BFD_RELOC_386_GOT32,
  32988. + BFD_RELOC_386_PLT32,
  32989. + BFD_RELOC_386_COPY,
  32990. + BFD_RELOC_386_GLOB_DAT,
  32991. + BFD_RELOC_386_JUMP_SLOT,
  32992. + BFD_RELOC_386_RELATIVE,
  32993. + BFD_RELOC_386_GOTOFF,
  32994. + BFD_RELOC_386_GOTPC,
  32995. + BFD_RELOC_386_TLS_TPOFF,
  32996. + BFD_RELOC_386_TLS_IE,
  32997. + BFD_RELOC_386_TLS_GOTIE,
  32998. + BFD_RELOC_386_TLS_LE,
  32999. + BFD_RELOC_386_TLS_GD,
  33000. + BFD_RELOC_386_TLS_LDM,
  33001. + BFD_RELOC_386_TLS_LDO_32,
  33002. + BFD_RELOC_386_TLS_IE_32,
  33003. + BFD_RELOC_386_TLS_LE_32,
  33004. + BFD_RELOC_386_TLS_DTPMOD32,
  33005. + BFD_RELOC_386_TLS_DTPOFF32,
  33006. + BFD_RELOC_386_TLS_TPOFF32,
  33007. + BFD_RELOC_386_TLS_GOTDESC,
  33008. + BFD_RELOC_386_TLS_DESC_CALL,
  33009. + BFD_RELOC_386_TLS_DESC,
  33010. +
  33011. +/* x86-64/elf relocations */
  33012. + BFD_RELOC_X86_64_GOT32,
  33013. + BFD_RELOC_X86_64_PLT32,
  33014. + BFD_RELOC_X86_64_COPY,
  33015. + BFD_RELOC_X86_64_GLOB_DAT,
  33016. + BFD_RELOC_X86_64_JUMP_SLOT,
  33017. + BFD_RELOC_X86_64_RELATIVE,
  33018. + BFD_RELOC_X86_64_GOTPCREL,
  33019. + BFD_RELOC_X86_64_32S,
  33020. + BFD_RELOC_X86_64_DTPMOD64,
  33021. + BFD_RELOC_X86_64_DTPOFF64,
  33022. + BFD_RELOC_X86_64_TPOFF64,
  33023. + BFD_RELOC_X86_64_TLSGD,
  33024. + BFD_RELOC_X86_64_TLSLD,
  33025. + BFD_RELOC_X86_64_DTPOFF32,
  33026. + BFD_RELOC_X86_64_GOTTPOFF,
  33027. + BFD_RELOC_X86_64_TPOFF32,
  33028. + BFD_RELOC_X86_64_GOTOFF64,
  33029. + BFD_RELOC_X86_64_GOTPC32,
  33030. + BFD_RELOC_X86_64_GOT64,
  33031. + BFD_RELOC_X86_64_GOTPCREL64,
  33032. + BFD_RELOC_X86_64_GOTPC64,
  33033. + BFD_RELOC_X86_64_GOTPLT64,
  33034. + BFD_RELOC_X86_64_PLTOFF64,
  33035. + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
  33036. + BFD_RELOC_X86_64_TLSDESC_CALL,
  33037. + BFD_RELOC_X86_64_TLSDESC,
  33038. +
  33039. +/* ns32k relocations */
  33040. + BFD_RELOC_NS32K_IMM_8,
  33041. + BFD_RELOC_NS32K_IMM_16,
  33042. + BFD_RELOC_NS32K_IMM_32,
  33043. + BFD_RELOC_NS32K_IMM_8_PCREL,
  33044. + BFD_RELOC_NS32K_IMM_16_PCREL,
  33045. + BFD_RELOC_NS32K_IMM_32_PCREL,
  33046. + BFD_RELOC_NS32K_DISP_8,
  33047. + BFD_RELOC_NS32K_DISP_16,
  33048. + BFD_RELOC_NS32K_DISP_32,
  33049. + BFD_RELOC_NS32K_DISP_8_PCREL,
  33050. + BFD_RELOC_NS32K_DISP_16_PCREL,
  33051. + BFD_RELOC_NS32K_DISP_32_PCREL,
  33052. +
  33053. +/* PDP11 relocations */
  33054. + BFD_RELOC_PDP11_DISP_8_PCREL,
  33055. + BFD_RELOC_PDP11_DISP_6_PCREL,
  33056. +
  33057. +/* Picojava relocs. Not all of these appear in object files. */
  33058. + BFD_RELOC_PJ_CODE_HI16,
  33059. + BFD_RELOC_PJ_CODE_LO16,
  33060. + BFD_RELOC_PJ_CODE_DIR16,
  33061. + BFD_RELOC_PJ_CODE_DIR32,
  33062. + BFD_RELOC_PJ_CODE_REL16,
  33063. + BFD_RELOC_PJ_CODE_REL32,
  33064. +
  33065. +/* Power(rs6000) and PowerPC relocations. */
  33066. + BFD_RELOC_PPC_B26,
  33067. + BFD_RELOC_PPC_BA26,
  33068. + BFD_RELOC_PPC_TOC16,
  33069. + BFD_RELOC_PPC_B16,
  33070. + BFD_RELOC_PPC_B16_BRTAKEN,
  33071. + BFD_RELOC_PPC_B16_BRNTAKEN,
  33072. + BFD_RELOC_PPC_BA16,
  33073. + BFD_RELOC_PPC_BA16_BRTAKEN,
  33074. + BFD_RELOC_PPC_BA16_BRNTAKEN,
  33075. + BFD_RELOC_PPC_COPY,
  33076. + BFD_RELOC_PPC_GLOB_DAT,
  33077. + BFD_RELOC_PPC_JMP_SLOT,
  33078. + BFD_RELOC_PPC_RELATIVE,
  33079. + BFD_RELOC_PPC_LOCAL24PC,
  33080. + BFD_RELOC_PPC_EMB_NADDR32,
  33081. + BFD_RELOC_PPC_EMB_NADDR16,
  33082. + BFD_RELOC_PPC_EMB_NADDR16_LO,
  33083. + BFD_RELOC_PPC_EMB_NADDR16_HI,
  33084. + BFD_RELOC_PPC_EMB_NADDR16_HA,
  33085. + BFD_RELOC_PPC_EMB_SDAI16,
  33086. + BFD_RELOC_PPC_EMB_SDA2I16,
  33087. + BFD_RELOC_PPC_EMB_SDA2REL,
  33088. + BFD_RELOC_PPC_EMB_SDA21,
  33089. + BFD_RELOC_PPC_EMB_MRKREF,
  33090. + BFD_RELOC_PPC_EMB_RELSEC16,
  33091. + BFD_RELOC_PPC_EMB_RELST_LO,
  33092. + BFD_RELOC_PPC_EMB_RELST_HI,
  33093. + BFD_RELOC_PPC_EMB_RELST_HA,
  33094. + BFD_RELOC_PPC_EMB_BIT_FLD,
  33095. + BFD_RELOC_PPC_EMB_RELSDA,
  33096. + BFD_RELOC_PPC64_HIGHER,
  33097. + BFD_RELOC_PPC64_HIGHER_S,
  33098. + BFD_RELOC_PPC64_HIGHEST,
  33099. + BFD_RELOC_PPC64_HIGHEST_S,
  33100. + BFD_RELOC_PPC64_TOC16_LO,
  33101. + BFD_RELOC_PPC64_TOC16_HI,
  33102. + BFD_RELOC_PPC64_TOC16_HA,
  33103. + BFD_RELOC_PPC64_TOC,
  33104. + BFD_RELOC_PPC64_PLTGOT16,
  33105. + BFD_RELOC_PPC64_PLTGOT16_LO,
  33106. + BFD_RELOC_PPC64_PLTGOT16_HI,
  33107. + BFD_RELOC_PPC64_PLTGOT16_HA,
  33108. + BFD_RELOC_PPC64_ADDR16_DS,
  33109. + BFD_RELOC_PPC64_ADDR16_LO_DS,
  33110. + BFD_RELOC_PPC64_GOT16_DS,
  33111. + BFD_RELOC_PPC64_GOT16_LO_DS,
  33112. + BFD_RELOC_PPC64_PLT16_LO_DS,
  33113. + BFD_RELOC_PPC64_SECTOFF_DS,
  33114. + BFD_RELOC_PPC64_SECTOFF_LO_DS,
  33115. + BFD_RELOC_PPC64_TOC16_DS,
  33116. + BFD_RELOC_PPC64_TOC16_LO_DS,
  33117. + BFD_RELOC_PPC64_PLTGOT16_DS,
  33118. + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
  33119. +
  33120. +/* PowerPC and PowerPC64 thread-local storage relocations. */
  33121. + BFD_RELOC_PPC_TLS,
  33122. + BFD_RELOC_PPC_DTPMOD,
  33123. + BFD_RELOC_PPC_TPREL16,
  33124. + BFD_RELOC_PPC_TPREL16_LO,
  33125. + BFD_RELOC_PPC_TPREL16_HI,
  33126. + BFD_RELOC_PPC_TPREL16_HA,
  33127. + BFD_RELOC_PPC_TPREL,
  33128. + BFD_RELOC_PPC_DTPREL16,
  33129. + BFD_RELOC_PPC_DTPREL16_LO,
  33130. + BFD_RELOC_PPC_DTPREL16_HI,
  33131. + BFD_RELOC_PPC_DTPREL16_HA,
  33132. + BFD_RELOC_PPC_DTPREL,
  33133. + BFD_RELOC_PPC_GOT_TLSGD16,
  33134. + BFD_RELOC_PPC_GOT_TLSGD16_LO,
  33135. + BFD_RELOC_PPC_GOT_TLSGD16_HI,
  33136. + BFD_RELOC_PPC_GOT_TLSGD16_HA,
  33137. + BFD_RELOC_PPC_GOT_TLSLD16,
  33138. + BFD_RELOC_PPC_GOT_TLSLD16_LO,
  33139. + BFD_RELOC_PPC_GOT_TLSLD16_HI,
  33140. + BFD_RELOC_PPC_GOT_TLSLD16_HA,
  33141. + BFD_RELOC_PPC_GOT_TPREL16,
  33142. + BFD_RELOC_PPC_GOT_TPREL16_LO,
  33143. + BFD_RELOC_PPC_GOT_TPREL16_HI,
  33144. + BFD_RELOC_PPC_GOT_TPREL16_HA,
  33145. + BFD_RELOC_PPC_GOT_DTPREL16,
  33146. + BFD_RELOC_PPC_GOT_DTPREL16_LO,
  33147. + BFD_RELOC_PPC_GOT_DTPREL16_HI,
  33148. + BFD_RELOC_PPC_GOT_DTPREL16_HA,
  33149. + BFD_RELOC_PPC64_TPREL16_DS,
  33150. + BFD_RELOC_PPC64_TPREL16_LO_DS,
  33151. + BFD_RELOC_PPC64_TPREL16_HIGHER,
  33152. + BFD_RELOC_PPC64_TPREL16_HIGHERA,
  33153. + BFD_RELOC_PPC64_TPREL16_HIGHEST,
  33154. + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
  33155. + BFD_RELOC_PPC64_DTPREL16_DS,
  33156. + BFD_RELOC_PPC64_DTPREL16_LO_DS,
  33157. + BFD_RELOC_PPC64_DTPREL16_HIGHER,
  33158. + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
  33159. + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
  33160. + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
  33161. +
  33162. +/* IBM 370/390 relocations */
  33163. + BFD_RELOC_I370_D12,
  33164. +
  33165. +/* The type of reloc used to build a constructor table - at the moment
  33166. +probably a 32 bit wide absolute relocation, but the target can choose.
  33167. +It generally does map to one of the other relocation types. */
  33168. + BFD_RELOC_CTOR,
  33169. +
  33170. +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
  33171. +not stored in the instruction. */
  33172. + BFD_RELOC_ARM_PCREL_BRANCH,
  33173. +
  33174. +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
  33175. +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  33176. +field in the instruction. */
  33177. + BFD_RELOC_ARM_PCREL_BLX,
  33178. +
  33179. +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
  33180. +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  33181. +field in the instruction. */
  33182. + BFD_RELOC_THUMB_PCREL_BLX,
  33183. +
  33184. +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
  33185. + BFD_RELOC_ARM_PCREL_CALL,
  33186. +
  33187. +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
  33188. + BFD_RELOC_ARM_PCREL_JUMP,
  33189. +
  33190. +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
  33191. +The lowest bit must be zero and is not stored in the instruction.
  33192. +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
  33193. +"nn" one smaller in all cases. Note further that BRANCH23
  33194. +corresponds to R_ARM_THM_CALL. */
  33195. + BFD_RELOC_THUMB_PCREL_BRANCH7,
  33196. + BFD_RELOC_THUMB_PCREL_BRANCH9,
  33197. + BFD_RELOC_THUMB_PCREL_BRANCH12,
  33198. + BFD_RELOC_THUMB_PCREL_BRANCH20,
  33199. + BFD_RELOC_THUMB_PCREL_BRANCH23,
  33200. + BFD_RELOC_THUMB_PCREL_BRANCH25,
  33201. +
  33202. +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
  33203. + BFD_RELOC_ARM_OFFSET_IMM,
  33204. +
  33205. +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
  33206. + BFD_RELOC_ARM_THUMB_OFFSET,
  33207. +
  33208. +/* Pc-relative or absolute relocation depending on target. Used for
  33209. +entries in .init_array sections. */
  33210. + BFD_RELOC_ARM_TARGET1,
  33211. +
  33212. +/* Read-only segment base relative address. */
  33213. + BFD_RELOC_ARM_ROSEGREL32,
  33214. +
  33215. +/* Data segment base relative address. */
  33216. + BFD_RELOC_ARM_SBREL32,
  33217. +
  33218. +/* This reloc is used for references to RTTI data from exception handling
  33219. +tables. The actual definition depends on the target. It may be a
  33220. +pc-relative or some form of GOT-indirect relocation. */
  33221. + BFD_RELOC_ARM_TARGET2,
  33222. +
  33223. +/* 31-bit PC relative address. */
  33224. + BFD_RELOC_ARM_PREL31,
  33225. +
  33226. +/* Low and High halfword relocations for MOVW and MOVT instructions. */
  33227. + BFD_RELOC_ARM_MOVW,
  33228. + BFD_RELOC_ARM_MOVT,
  33229. + BFD_RELOC_ARM_MOVW_PCREL,
  33230. + BFD_RELOC_ARM_MOVT_PCREL,
  33231. + BFD_RELOC_ARM_THUMB_MOVW,
  33232. + BFD_RELOC_ARM_THUMB_MOVT,
  33233. + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
  33234. + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
  33235. +
  33236. +/* Relocations for setting up GOTs and PLTs for shared libraries. */
  33237. + BFD_RELOC_ARM_JUMP_SLOT,
  33238. + BFD_RELOC_ARM_GLOB_DAT,
  33239. + BFD_RELOC_ARM_GOT32,
  33240. + BFD_RELOC_ARM_PLT32,
  33241. + BFD_RELOC_ARM_RELATIVE,
  33242. + BFD_RELOC_ARM_GOTOFF,
  33243. + BFD_RELOC_ARM_GOTPC,
  33244. +
  33245. +/* ARM thread-local storage relocations. */
  33246. + BFD_RELOC_ARM_TLS_GD32,
  33247. + BFD_RELOC_ARM_TLS_LDO32,
  33248. + BFD_RELOC_ARM_TLS_LDM32,
  33249. + BFD_RELOC_ARM_TLS_DTPOFF32,
  33250. + BFD_RELOC_ARM_TLS_DTPMOD32,
  33251. + BFD_RELOC_ARM_TLS_TPOFF32,
  33252. + BFD_RELOC_ARM_TLS_IE32,
  33253. + BFD_RELOC_ARM_TLS_LE32,
  33254. +
  33255. +/* ARM group relocations. */
  33256. + BFD_RELOC_ARM_ALU_PC_G0_NC,
  33257. + BFD_RELOC_ARM_ALU_PC_G0,
  33258. + BFD_RELOC_ARM_ALU_PC_G1_NC,
  33259. + BFD_RELOC_ARM_ALU_PC_G1,
  33260. + BFD_RELOC_ARM_ALU_PC_G2,
  33261. + BFD_RELOC_ARM_LDR_PC_G0,
  33262. + BFD_RELOC_ARM_LDR_PC_G1,
  33263. + BFD_RELOC_ARM_LDR_PC_G2,
  33264. + BFD_RELOC_ARM_LDRS_PC_G0,
  33265. + BFD_RELOC_ARM_LDRS_PC_G1,
  33266. + BFD_RELOC_ARM_LDRS_PC_G2,
  33267. + BFD_RELOC_ARM_LDC_PC_G0,
  33268. + BFD_RELOC_ARM_LDC_PC_G1,
  33269. + BFD_RELOC_ARM_LDC_PC_G2,
  33270. + BFD_RELOC_ARM_ALU_SB_G0_NC,
  33271. + BFD_RELOC_ARM_ALU_SB_G0,
  33272. + BFD_RELOC_ARM_ALU_SB_G1_NC,
  33273. + BFD_RELOC_ARM_ALU_SB_G1,
  33274. + BFD_RELOC_ARM_ALU_SB_G2,
  33275. + BFD_RELOC_ARM_LDR_SB_G0,
  33276. + BFD_RELOC_ARM_LDR_SB_G1,
  33277. + BFD_RELOC_ARM_LDR_SB_G2,
  33278. + BFD_RELOC_ARM_LDRS_SB_G0,
  33279. + BFD_RELOC_ARM_LDRS_SB_G1,
  33280. + BFD_RELOC_ARM_LDRS_SB_G2,
  33281. + BFD_RELOC_ARM_LDC_SB_G0,
  33282. + BFD_RELOC_ARM_LDC_SB_G1,
  33283. + BFD_RELOC_ARM_LDC_SB_G2,
  33284. +
  33285. +/* These relocs are only used within the ARM assembler. They are not
  33286. +(at present) written to any object files. */
  33287. + BFD_RELOC_ARM_IMMEDIATE,
  33288. + BFD_RELOC_ARM_ADRL_IMMEDIATE,
  33289. + BFD_RELOC_ARM_T32_IMMEDIATE,
  33290. + BFD_RELOC_ARM_T32_ADD_IMM,
  33291. + BFD_RELOC_ARM_T32_IMM12,
  33292. + BFD_RELOC_ARM_T32_ADD_PC12,
  33293. + BFD_RELOC_ARM_SHIFT_IMM,
  33294. + BFD_RELOC_ARM_SMC,
  33295. + BFD_RELOC_ARM_SWI,
  33296. + BFD_RELOC_ARM_MULTI,
  33297. + BFD_RELOC_ARM_CP_OFF_IMM,
  33298. + BFD_RELOC_ARM_CP_OFF_IMM_S2,
  33299. + BFD_RELOC_ARM_T32_CP_OFF_IMM,
  33300. + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
  33301. + BFD_RELOC_ARM_ADR_IMM,
  33302. + BFD_RELOC_ARM_LDR_IMM,
  33303. + BFD_RELOC_ARM_LITERAL,
  33304. + BFD_RELOC_ARM_IN_POOL,
  33305. + BFD_RELOC_ARM_OFFSET_IMM8,
  33306. + BFD_RELOC_ARM_T32_OFFSET_U8,
  33307. + BFD_RELOC_ARM_T32_OFFSET_IMM,
  33308. + BFD_RELOC_ARM_HWLITERAL,
  33309. + BFD_RELOC_ARM_THUMB_ADD,
  33310. + BFD_RELOC_ARM_THUMB_IMM,
  33311. + BFD_RELOC_ARM_THUMB_SHIFT,
  33312. +
  33313. +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
  33314. + BFD_RELOC_SH_PCDISP8BY2,
  33315. + BFD_RELOC_SH_PCDISP12BY2,
  33316. + BFD_RELOC_SH_IMM3,
  33317. + BFD_RELOC_SH_IMM3U,
  33318. + BFD_RELOC_SH_DISP12,
  33319. + BFD_RELOC_SH_DISP12BY2,
  33320. + BFD_RELOC_SH_DISP12BY4,
  33321. + BFD_RELOC_SH_DISP12BY8,
  33322. + BFD_RELOC_SH_DISP20,
  33323. + BFD_RELOC_SH_DISP20BY8,
  33324. + BFD_RELOC_SH_IMM4,
  33325. + BFD_RELOC_SH_IMM4BY2,
  33326. + BFD_RELOC_SH_IMM4BY4,
  33327. + BFD_RELOC_SH_IMM8,
  33328. + BFD_RELOC_SH_IMM8BY2,
  33329. + BFD_RELOC_SH_IMM8BY4,
  33330. + BFD_RELOC_SH_PCRELIMM8BY2,
  33331. + BFD_RELOC_SH_PCRELIMM8BY4,
  33332. + BFD_RELOC_SH_SWITCH16,
  33333. + BFD_RELOC_SH_SWITCH32,
  33334. + BFD_RELOC_SH_USES,
  33335. + BFD_RELOC_SH_COUNT,
  33336. + BFD_RELOC_SH_ALIGN,
  33337. + BFD_RELOC_SH_CODE,
  33338. + BFD_RELOC_SH_DATA,
  33339. + BFD_RELOC_SH_LABEL,
  33340. + BFD_RELOC_SH_LOOP_START,
  33341. + BFD_RELOC_SH_LOOP_END,
  33342. + BFD_RELOC_SH_COPY,
  33343. + BFD_RELOC_SH_GLOB_DAT,
  33344. + BFD_RELOC_SH_JMP_SLOT,
  33345. + BFD_RELOC_SH_RELATIVE,
  33346. + BFD_RELOC_SH_GOTPC,
  33347. + BFD_RELOC_SH_GOT_LOW16,
  33348. + BFD_RELOC_SH_GOT_MEDLOW16,
  33349. + BFD_RELOC_SH_GOT_MEDHI16,
  33350. + BFD_RELOC_SH_GOT_HI16,
  33351. + BFD_RELOC_SH_GOTPLT_LOW16,
  33352. + BFD_RELOC_SH_GOTPLT_MEDLOW16,
  33353. + BFD_RELOC_SH_GOTPLT_MEDHI16,
  33354. + BFD_RELOC_SH_GOTPLT_HI16,
  33355. + BFD_RELOC_SH_PLT_LOW16,
  33356. + BFD_RELOC_SH_PLT_MEDLOW16,
  33357. + BFD_RELOC_SH_PLT_MEDHI16,
  33358. + BFD_RELOC_SH_PLT_HI16,
  33359. + BFD_RELOC_SH_GOTOFF_LOW16,
  33360. + BFD_RELOC_SH_GOTOFF_MEDLOW16,
  33361. + BFD_RELOC_SH_GOTOFF_MEDHI16,
  33362. + BFD_RELOC_SH_GOTOFF_HI16,
  33363. + BFD_RELOC_SH_GOTPC_LOW16,
  33364. + BFD_RELOC_SH_GOTPC_MEDLOW16,
  33365. + BFD_RELOC_SH_GOTPC_MEDHI16,
  33366. + BFD_RELOC_SH_GOTPC_HI16,
  33367. + BFD_RELOC_SH_COPY64,
  33368. + BFD_RELOC_SH_GLOB_DAT64,
  33369. + BFD_RELOC_SH_JMP_SLOT64,
  33370. + BFD_RELOC_SH_RELATIVE64,
  33371. + BFD_RELOC_SH_GOT10BY4,
  33372. + BFD_RELOC_SH_GOT10BY8,
  33373. + BFD_RELOC_SH_GOTPLT10BY4,
  33374. + BFD_RELOC_SH_GOTPLT10BY8,
  33375. + BFD_RELOC_SH_GOTPLT32,
  33376. + BFD_RELOC_SH_SHMEDIA_CODE,
  33377. + BFD_RELOC_SH_IMMU5,
  33378. + BFD_RELOC_SH_IMMS6,
  33379. + BFD_RELOC_SH_IMMS6BY32,
  33380. + BFD_RELOC_SH_IMMU6,
  33381. + BFD_RELOC_SH_IMMS10,
  33382. + BFD_RELOC_SH_IMMS10BY2,
  33383. + BFD_RELOC_SH_IMMS10BY4,
  33384. + BFD_RELOC_SH_IMMS10BY8,
  33385. + BFD_RELOC_SH_IMMS16,
  33386. + BFD_RELOC_SH_IMMU16,
  33387. + BFD_RELOC_SH_IMM_LOW16,
  33388. + BFD_RELOC_SH_IMM_LOW16_PCREL,
  33389. + BFD_RELOC_SH_IMM_MEDLOW16,
  33390. + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
  33391. + BFD_RELOC_SH_IMM_MEDHI16,
  33392. + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
  33393. + BFD_RELOC_SH_IMM_HI16,
  33394. + BFD_RELOC_SH_IMM_HI16_PCREL,
  33395. + BFD_RELOC_SH_PT_16,
  33396. + BFD_RELOC_SH_TLS_GD_32,
  33397. + BFD_RELOC_SH_TLS_LD_32,
  33398. + BFD_RELOC_SH_TLS_LDO_32,
  33399. + BFD_RELOC_SH_TLS_IE_32,
  33400. + BFD_RELOC_SH_TLS_LE_32,
  33401. + BFD_RELOC_SH_TLS_DTPMOD32,
  33402. + BFD_RELOC_SH_TLS_DTPOFF32,
  33403. + BFD_RELOC_SH_TLS_TPOFF32,
  33404. +
  33405. +/* ARC Cores relocs.
  33406. +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
  33407. +not stored in the instruction. The high 20 bits are installed in bits 26
  33408. +through 7 of the instruction. */
  33409. + BFD_RELOC_ARC_B22_PCREL,
  33410. +
  33411. +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
  33412. +stored in the instruction. The high 24 bits are installed in bits 23
  33413. +through 0. */
  33414. + BFD_RELOC_ARC_B26,
  33415. +
  33416. +/* ADI Blackfin 16 bit immediate absolute reloc. */
  33417. + BFD_RELOC_BFIN_16_IMM,
  33418. +
  33419. +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
  33420. + BFD_RELOC_BFIN_16_HIGH,
  33421. +
  33422. +/* ADI Blackfin 'a' part of LSETUP. */
  33423. + BFD_RELOC_BFIN_4_PCREL,
  33424. +
  33425. +/* ADI Blackfin. */
  33426. + BFD_RELOC_BFIN_5_PCREL,
  33427. +
  33428. +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
  33429. + BFD_RELOC_BFIN_16_LOW,
  33430. +
  33431. +/* ADI Blackfin. */
  33432. + BFD_RELOC_BFIN_10_PCREL,
  33433. +
  33434. +/* ADI Blackfin 'b' part of LSETUP. */
  33435. + BFD_RELOC_BFIN_11_PCREL,
  33436. +
  33437. +/* ADI Blackfin. */
  33438. + BFD_RELOC_BFIN_12_PCREL_JUMP,
  33439. +
  33440. +/* ADI Blackfin Short jump, pcrel. */
  33441. + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
  33442. +
  33443. +/* ADI Blackfin Call.x not implemented. */
  33444. + BFD_RELOC_BFIN_24_PCREL_CALL_X,
  33445. +
  33446. +/* ADI Blackfin Long Jump pcrel. */
  33447. + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
  33448. +
  33449. +/* ADI Blackfin FD-PIC relocations. */
  33450. + BFD_RELOC_BFIN_GOT17M4,
  33451. + BFD_RELOC_BFIN_GOTHI,
  33452. + BFD_RELOC_BFIN_GOTLO,
  33453. + BFD_RELOC_BFIN_FUNCDESC,
  33454. + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
  33455. + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
  33456. + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
  33457. + BFD_RELOC_BFIN_FUNCDESC_VALUE,
  33458. + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
  33459. + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
  33460. + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
  33461. + BFD_RELOC_BFIN_GOTOFF17M4,
  33462. + BFD_RELOC_BFIN_GOTOFFHI,
  33463. + BFD_RELOC_BFIN_GOTOFFLO,
  33464. +
  33465. +/* ADI Blackfin GOT relocation. */
  33466. + BFD_RELOC_BFIN_GOT,
  33467. +
  33468. +/* ADI Blackfin PLTPC relocation. */
  33469. + BFD_RELOC_BFIN_PLTPC,
  33470. +
  33471. +/* ADI Blackfin arithmetic relocation. */
  33472. + BFD_ARELOC_BFIN_PUSH,
  33473. +
  33474. +/* ADI Blackfin arithmetic relocation. */
  33475. + BFD_ARELOC_BFIN_CONST,
  33476. +
  33477. +/* ADI Blackfin arithmetic relocation. */
  33478. + BFD_ARELOC_BFIN_ADD,
  33479. +
  33480. +/* ADI Blackfin arithmetic relocation. */
  33481. + BFD_ARELOC_BFIN_SUB,
  33482. +
  33483. +/* ADI Blackfin arithmetic relocation. */
  33484. + BFD_ARELOC_BFIN_MULT,
  33485. +
  33486. +/* ADI Blackfin arithmetic relocation. */
  33487. + BFD_ARELOC_BFIN_DIV,
  33488. +
  33489. +/* ADI Blackfin arithmetic relocation. */
  33490. + BFD_ARELOC_BFIN_MOD,
  33491. +
  33492. +/* ADI Blackfin arithmetic relocation. */
  33493. + BFD_ARELOC_BFIN_LSHIFT,
  33494. +
  33495. +/* ADI Blackfin arithmetic relocation. */
  33496. + BFD_ARELOC_BFIN_RSHIFT,
  33497. +
  33498. +/* ADI Blackfin arithmetic relocation. */
  33499. + BFD_ARELOC_BFIN_AND,
  33500. +
  33501. +/* ADI Blackfin arithmetic relocation. */
  33502. + BFD_ARELOC_BFIN_OR,
  33503. +
  33504. +/* ADI Blackfin arithmetic relocation. */
  33505. + BFD_ARELOC_BFIN_XOR,
  33506. +
  33507. +/* ADI Blackfin arithmetic relocation. */
  33508. + BFD_ARELOC_BFIN_LAND,
  33509. +
  33510. +/* ADI Blackfin arithmetic relocation. */
  33511. + BFD_ARELOC_BFIN_LOR,
  33512. +
  33513. +/* ADI Blackfin arithmetic relocation. */
  33514. + BFD_ARELOC_BFIN_LEN,
  33515. +
  33516. +/* ADI Blackfin arithmetic relocation. */
  33517. + BFD_ARELOC_BFIN_NEG,
  33518. +
  33519. +/* ADI Blackfin arithmetic relocation. */
  33520. + BFD_ARELOC_BFIN_COMP,
  33521. +
  33522. +/* ADI Blackfin arithmetic relocation. */
  33523. + BFD_ARELOC_BFIN_PAGE,
  33524. +
  33525. +/* ADI Blackfin arithmetic relocation. */
  33526. + BFD_ARELOC_BFIN_HWPAGE,
  33527. +
  33528. +/* ADI Blackfin arithmetic relocation. */
  33529. + BFD_ARELOC_BFIN_ADDR,
  33530. +
  33531. +/* Mitsubishi D10V relocs.
  33532. +This is a 10-bit reloc with the right 2 bits
  33533. +assumed to be 0. */
  33534. + BFD_RELOC_D10V_10_PCREL_R,
  33535. +
  33536. +/* Mitsubishi D10V relocs.
  33537. +This is a 10-bit reloc with the right 2 bits
  33538. +assumed to be 0. This is the same as the previous reloc
  33539. +except it is in the left container, i.e.,
  33540. +shifted left 15 bits. */
  33541. + BFD_RELOC_D10V_10_PCREL_L,
  33542. +
  33543. +/* This is an 18-bit reloc with the right 2 bits
  33544. +assumed to be 0. */
  33545. + BFD_RELOC_D10V_18,
  33546. +
  33547. +/* This is an 18-bit reloc with the right 2 bits
  33548. +assumed to be 0. */
  33549. + BFD_RELOC_D10V_18_PCREL,
  33550. +
  33551. +/* Mitsubishi D30V relocs.
  33552. +This is a 6-bit absolute reloc. */
  33553. + BFD_RELOC_D30V_6,
  33554. +
  33555. +/* This is a 6-bit pc-relative reloc with
  33556. +the right 3 bits assumed to be 0. */
  33557. + BFD_RELOC_D30V_9_PCREL,
  33558. +
  33559. +/* This is a 6-bit pc-relative reloc with
  33560. +the right 3 bits assumed to be 0. Same
  33561. +as the previous reloc but on the right side
  33562. +of the container. */
  33563. + BFD_RELOC_D30V_9_PCREL_R,
  33564. +
  33565. +/* This is a 12-bit absolute reloc with the
  33566. +right 3 bitsassumed to be 0. */
  33567. + BFD_RELOC_D30V_15,
  33568. +
  33569. +/* This is a 12-bit pc-relative reloc with
  33570. +the right 3 bits assumed to be 0. */
  33571. + BFD_RELOC_D30V_15_PCREL,
  33572. +
  33573. +/* This is a 12-bit pc-relative reloc with
  33574. +the right 3 bits assumed to be 0. Same
  33575. +as the previous reloc but on the right side
  33576. +of the container. */
  33577. + BFD_RELOC_D30V_15_PCREL_R,
  33578. +
  33579. +/* This is an 18-bit absolute reloc with
  33580. +the right 3 bits assumed to be 0. */
  33581. + BFD_RELOC_D30V_21,
  33582. +
  33583. +/* This is an 18-bit pc-relative reloc with
  33584. +the right 3 bits assumed to be 0. */
  33585. + BFD_RELOC_D30V_21_PCREL,
  33586. +
  33587. +/* This is an 18-bit pc-relative reloc with
  33588. +the right 3 bits assumed to be 0. Same
  33589. +as the previous reloc but on the right side
  33590. +of the container. */
  33591. + BFD_RELOC_D30V_21_PCREL_R,
  33592. +
  33593. +/* This is a 32-bit absolute reloc. */
  33594. + BFD_RELOC_D30V_32,
  33595. +
  33596. +/* This is a 32-bit pc-relative reloc. */
  33597. + BFD_RELOC_D30V_32_PCREL,
  33598. +
  33599. +/* DLX relocs */
  33600. + BFD_RELOC_DLX_HI16_S,
  33601. +
  33602. +/* DLX relocs */
  33603. + BFD_RELOC_DLX_LO16,
  33604. +
  33605. +/* DLX relocs */
  33606. + BFD_RELOC_DLX_JMP26,
  33607. +
  33608. +/* Renesas M16C/M32C Relocations. */
  33609. + BFD_RELOC_M32C_HI8,
  33610. + BFD_RELOC_M32C_RL_JUMP,
  33611. + BFD_RELOC_M32C_RL_1ADDR,
  33612. + BFD_RELOC_M32C_RL_2ADDR,
  33613. +
  33614. +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
  33615. +This is a 24 bit absolute address. */
  33616. + BFD_RELOC_M32R_24,
  33617. +
  33618. +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
  33619. + BFD_RELOC_M32R_10_PCREL,
  33620. +
  33621. +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
  33622. + BFD_RELOC_M32R_18_PCREL,
  33623. +
  33624. +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
  33625. + BFD_RELOC_M32R_26_PCREL,
  33626. +
  33627. +/* This is a 16-bit reloc containing the high 16 bits of an address
  33628. +used when the lower 16 bits are treated as unsigned. */
  33629. + BFD_RELOC_M32R_HI16_ULO,
  33630. +
  33631. +/* This is a 16-bit reloc containing the high 16 bits of an address
  33632. +used when the lower 16 bits are treated as signed. */
  33633. + BFD_RELOC_M32R_HI16_SLO,
  33634. +
  33635. +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
  33636. + BFD_RELOC_M32R_LO16,
  33637. +
  33638. +/* This is a 16-bit reloc containing the small data area offset for use in
  33639. +add3, load, and store instructions. */
  33640. + BFD_RELOC_M32R_SDA16,
  33641. +
  33642. +/* For PIC. */
  33643. + BFD_RELOC_M32R_GOT24,
  33644. + BFD_RELOC_M32R_26_PLTREL,
  33645. + BFD_RELOC_M32R_COPY,
  33646. + BFD_RELOC_M32R_GLOB_DAT,
  33647. + BFD_RELOC_M32R_JMP_SLOT,
  33648. + BFD_RELOC_M32R_RELATIVE,
  33649. + BFD_RELOC_M32R_GOTOFF,
  33650. + BFD_RELOC_M32R_GOTOFF_HI_ULO,
  33651. + BFD_RELOC_M32R_GOTOFF_HI_SLO,
  33652. + BFD_RELOC_M32R_GOTOFF_LO,
  33653. + BFD_RELOC_M32R_GOTPC24,
  33654. + BFD_RELOC_M32R_GOT16_HI_ULO,
  33655. + BFD_RELOC_M32R_GOT16_HI_SLO,
  33656. + BFD_RELOC_M32R_GOT16_LO,
  33657. + BFD_RELOC_M32R_GOTPC_HI_ULO,
  33658. + BFD_RELOC_M32R_GOTPC_HI_SLO,
  33659. + BFD_RELOC_M32R_GOTPC_LO,
  33660. +
  33661. +/* This is a 9-bit reloc */
  33662. + BFD_RELOC_V850_9_PCREL,
  33663. +
  33664. +/* This is a 22-bit reloc */
  33665. + BFD_RELOC_V850_22_PCREL,
  33666. +
  33667. +/* This is a 16 bit offset from the short data area pointer. */
  33668. + BFD_RELOC_V850_SDA_16_16_OFFSET,
  33669. +
  33670. +/* This is a 16 bit offset (of which only 15 bits are used) from the
  33671. +short data area pointer. */
  33672. + BFD_RELOC_V850_SDA_15_16_OFFSET,
  33673. +
  33674. +/* This is a 16 bit offset from the zero data area pointer. */
  33675. + BFD_RELOC_V850_ZDA_16_16_OFFSET,
  33676. +
  33677. +/* This is a 16 bit offset (of which only 15 bits are used) from the
  33678. +zero data area pointer. */
  33679. + BFD_RELOC_V850_ZDA_15_16_OFFSET,
  33680. +
  33681. +/* This is an 8 bit offset (of which only 6 bits are used) from the
  33682. +tiny data area pointer. */
  33683. + BFD_RELOC_V850_TDA_6_8_OFFSET,
  33684. +
  33685. +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
  33686. +data area pointer. */
  33687. + BFD_RELOC_V850_TDA_7_8_OFFSET,
  33688. +
  33689. +/* This is a 7 bit offset from the tiny data area pointer. */
  33690. + BFD_RELOC_V850_TDA_7_7_OFFSET,
  33691. +
  33692. +/* This is a 16 bit offset from the tiny data area pointer. */
  33693. + BFD_RELOC_V850_TDA_16_16_OFFSET,
  33694. +
  33695. +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
  33696. +data area pointer. */
  33697. + BFD_RELOC_V850_TDA_4_5_OFFSET,
  33698. +
  33699. +/* This is a 4 bit offset from the tiny data area pointer. */
  33700. + BFD_RELOC_V850_TDA_4_4_OFFSET,
  33701. +
  33702. +/* This is a 16 bit offset from the short data area pointer, with the
  33703. +bits placed non-contiguously in the instruction. */
  33704. + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
  33705. +
  33706. +/* This is a 16 bit offset from the zero data area pointer, with the
  33707. +bits placed non-contiguously in the instruction. */
  33708. + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
  33709. +
  33710. +/* This is a 6 bit offset from the call table base pointer. */
  33711. + BFD_RELOC_V850_CALLT_6_7_OFFSET,
  33712. +
  33713. +/* This is a 16 bit offset from the call table base pointer. */
  33714. + BFD_RELOC_V850_CALLT_16_16_OFFSET,
  33715. +
  33716. +/* Used for relaxing indirect function calls. */
  33717. + BFD_RELOC_V850_LONGCALL,
  33718. +
  33719. +/* Used for relaxing indirect jumps. */
  33720. + BFD_RELOC_V850_LONGJUMP,
  33721. +
  33722. +/* Used to maintain alignment whilst relaxing. */
  33723. + BFD_RELOC_V850_ALIGN,
  33724. +
  33725. +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
  33726. +instructions. */
  33727. + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
  33728. +
  33729. +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
  33730. +instruction. */
  33731. + BFD_RELOC_MN10300_32_PCREL,
  33732. +
  33733. +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
  33734. +instruction. */
  33735. + BFD_RELOC_MN10300_16_PCREL,
  33736. +
  33737. +/* This is a 8bit DP reloc for the tms320c30, where the most
  33738. +significant 8 bits of a 24 bit word are placed into the least
  33739. +significant 8 bits of the opcode. */
  33740. + BFD_RELOC_TIC30_LDP,
  33741. +
  33742. +/* This is a 7bit reloc for the tms320c54x, where the least
  33743. +significant 7 bits of a 16 bit word are placed into the least
  33744. +significant 7 bits of the opcode. */
  33745. + BFD_RELOC_TIC54X_PARTLS7,
  33746. +
  33747. +/* This is a 9bit DP reloc for the tms320c54x, where the most
  33748. +significant 9 bits of a 16 bit word are placed into the least
  33749. +significant 9 bits of the opcode. */
  33750. + BFD_RELOC_TIC54X_PARTMS9,
  33751. +
  33752. +/* This is an extended address 23-bit reloc for the tms320c54x. */
  33753. + BFD_RELOC_TIC54X_23,
  33754. +
  33755. +/* This is a 16-bit reloc for the tms320c54x, where the least
  33756. +significant 16 bits of a 23-bit extended address are placed into
  33757. +the opcode. */
  33758. + BFD_RELOC_TIC54X_16_OF_23,
  33759. +
  33760. +/* This is a reloc for the tms320c54x, where the most
  33761. +significant 7 bits of a 23-bit extended address are placed into
  33762. +the opcode. */
  33763. + BFD_RELOC_TIC54X_MS7_OF_23,
  33764. +
  33765. +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
  33766. + BFD_RELOC_FR30_48,
  33767. +
  33768. +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
  33769. +two sections. */
  33770. + BFD_RELOC_FR30_20,
  33771. +
  33772. +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
  33773. +4 bits. */
  33774. + BFD_RELOC_FR30_6_IN_4,
  33775. +
  33776. +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
  33777. +into 8 bits. */
  33778. + BFD_RELOC_FR30_8_IN_8,
  33779. +
  33780. +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
  33781. +into 8 bits. */
  33782. + BFD_RELOC_FR30_9_IN_8,
  33783. +
  33784. +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
  33785. +into 8 bits. */
  33786. + BFD_RELOC_FR30_10_IN_8,
  33787. +
  33788. +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
  33789. +short offset into 8 bits. */
  33790. + BFD_RELOC_FR30_9_PCREL,
  33791. +
  33792. +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
  33793. +short offset into 11 bits. */
  33794. + BFD_RELOC_FR30_12_PCREL,
  33795. +
  33796. +/* Motorola Mcore relocations. */
  33797. + BFD_RELOC_MCORE_PCREL_IMM8BY4,
  33798. + BFD_RELOC_MCORE_PCREL_IMM11BY2,
  33799. + BFD_RELOC_MCORE_PCREL_IMM4BY2,
  33800. + BFD_RELOC_MCORE_PCREL_32,
  33801. + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
  33802. + BFD_RELOC_MCORE_RVA,
  33803. +
  33804. +/* Toshiba Media Processor Relocations. */
  33805. + BFD_RELOC_MEP_8,
  33806. + BFD_RELOC_MEP_16,
  33807. + BFD_RELOC_MEP_32,
  33808. + BFD_RELOC_MEP_PCREL8A2,
  33809. + BFD_RELOC_MEP_PCREL12A2,
  33810. + BFD_RELOC_MEP_PCREL17A2,
  33811. + BFD_RELOC_MEP_PCREL24A2,
  33812. + BFD_RELOC_MEP_PCABS24A2,
  33813. + BFD_RELOC_MEP_LOW16,
  33814. + BFD_RELOC_MEP_HI16U,
  33815. + BFD_RELOC_MEP_HI16S,
  33816. + BFD_RELOC_MEP_GPREL,
  33817. + BFD_RELOC_MEP_TPREL,
  33818. + BFD_RELOC_MEP_TPREL7,
  33819. + BFD_RELOC_MEP_TPREL7A2,
  33820. + BFD_RELOC_MEP_TPREL7A4,
  33821. + BFD_RELOC_MEP_UIMM24,
  33822. + BFD_RELOC_MEP_ADDR24A4,
  33823. + BFD_RELOC_MEP_GNU_VTINHERIT,
  33824. + BFD_RELOC_MEP_GNU_VTENTRY,
  33825. +
  33826. +
  33827. +/* These are relocations for the GETA instruction. */
  33828. + BFD_RELOC_MMIX_GETA,
  33829. + BFD_RELOC_MMIX_GETA_1,
  33830. + BFD_RELOC_MMIX_GETA_2,
  33831. + BFD_RELOC_MMIX_GETA_3,
  33832. +
  33833. +/* These are relocations for a conditional branch instruction. */
  33834. + BFD_RELOC_MMIX_CBRANCH,
  33835. + BFD_RELOC_MMIX_CBRANCH_J,
  33836. + BFD_RELOC_MMIX_CBRANCH_1,
  33837. + BFD_RELOC_MMIX_CBRANCH_2,
  33838. + BFD_RELOC_MMIX_CBRANCH_3,
  33839. +
  33840. +/* These are relocations for the PUSHJ instruction. */
  33841. + BFD_RELOC_MMIX_PUSHJ,
  33842. + BFD_RELOC_MMIX_PUSHJ_1,
  33843. + BFD_RELOC_MMIX_PUSHJ_2,
  33844. + BFD_RELOC_MMIX_PUSHJ_3,
  33845. + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
  33846. +
  33847. +/* These are relocations for the JMP instruction. */
  33848. + BFD_RELOC_MMIX_JMP,
  33849. + BFD_RELOC_MMIX_JMP_1,
  33850. + BFD_RELOC_MMIX_JMP_2,
  33851. + BFD_RELOC_MMIX_JMP_3,
  33852. +
  33853. +/* This is a relocation for a relative address as in a GETA instruction or
  33854. +a branch. */
  33855. + BFD_RELOC_MMIX_ADDR19,
  33856. +
  33857. +/* This is a relocation for a relative address as in a JMP instruction. */
  33858. + BFD_RELOC_MMIX_ADDR27,
  33859. +
  33860. +/* This is a relocation for an instruction field that may be a general
  33861. +register or a value 0..255. */
  33862. + BFD_RELOC_MMIX_REG_OR_BYTE,
  33863. +
  33864. +/* This is a relocation for an instruction field that may be a general
  33865. +register. */
  33866. + BFD_RELOC_MMIX_REG,
  33867. +
  33868. +/* This is a relocation for two instruction fields holding a register and
  33869. +an offset, the equivalent of the relocation. */
  33870. + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
  33871. +
  33872. +/* This relocation is an assertion that the expression is not allocated as
  33873. +a global register. It does not modify contents. */
  33874. + BFD_RELOC_MMIX_LOCAL,
  33875. +
  33876. +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
  33877. +short offset into 7 bits. */
  33878. + BFD_RELOC_AVR_7_PCREL,
  33879. +
  33880. +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
  33881. +short offset into 12 bits. */
  33882. + BFD_RELOC_AVR_13_PCREL,
  33883. +
  33884. +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
  33885. +program memory address) into 16 bits. */
  33886. + BFD_RELOC_AVR_16_PM,
  33887. +
  33888. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  33889. +data memory address) into 8 bit immediate value of LDI insn. */
  33890. + BFD_RELOC_AVR_LO8_LDI,
  33891. +
  33892. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  33893. +of data memory address) into 8 bit immediate value of LDI insn. */
  33894. + BFD_RELOC_AVR_HI8_LDI,
  33895. +
  33896. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  33897. +of program memory address) into 8 bit immediate value of LDI insn. */
  33898. + BFD_RELOC_AVR_HH8_LDI,
  33899. +
  33900. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  33901. +of 32 bit value) into 8 bit immediate value of LDI insn. */
  33902. + BFD_RELOC_AVR_MS8_LDI,
  33903. +
  33904. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33905. +(usually data memory address) into 8 bit immediate value of SUBI insn. */
  33906. + BFD_RELOC_AVR_LO8_LDI_NEG,
  33907. +
  33908. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33909. +(high 8 bit of data memory address) into 8 bit immediate value of
  33910. +SUBI insn. */
  33911. + BFD_RELOC_AVR_HI8_LDI_NEG,
  33912. +
  33913. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33914. +(most high 8 bit of program memory address) into 8 bit immediate value
  33915. +of LDI or SUBI insn. */
  33916. + BFD_RELOC_AVR_HH8_LDI_NEG,
  33917. +
  33918. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
  33919. +of 32 bit value) into 8 bit immediate value of LDI insn. */
  33920. + BFD_RELOC_AVR_MS8_LDI_NEG,
  33921. +
  33922. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  33923. +command address) into 8 bit immediate value of LDI insn. */
  33924. + BFD_RELOC_AVR_LO8_LDI_PM,
  33925. +
  33926. +/* This is a 16 bit reloc for the AVR that stores 8 bit value
  33927. +(command address) into 8 bit immediate value of LDI insn. If the address
  33928. +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  33929. +in the lower 128k. */
  33930. + BFD_RELOC_AVR_LO8_LDI_GS,
  33931. +
  33932. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  33933. +of command address) into 8 bit immediate value of LDI insn. */
  33934. + BFD_RELOC_AVR_HI8_LDI_PM,
  33935. +
  33936. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  33937. +of command address) into 8 bit immediate value of LDI insn. If the address
  33938. +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  33939. +below 128k. */
  33940. + BFD_RELOC_AVR_HI8_LDI_GS,
  33941. +
  33942. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  33943. +of command address) into 8 bit immediate value of LDI insn. */
  33944. + BFD_RELOC_AVR_HH8_LDI_PM,
  33945. +
  33946. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33947. +(usually command address) into 8 bit immediate value of SUBI insn. */
  33948. + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
  33949. +
  33950. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33951. +(high 8 bit of 16 bit command address) into 8 bit immediate value
  33952. +of SUBI insn. */
  33953. + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
  33954. +
  33955. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  33956. +(high 6 bit of 22 bit command address) into 8 bit immediate
  33957. +value of SUBI insn. */
  33958. + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
  33959. +
  33960. +/* This is a 32 bit reloc for the AVR that stores 23 bit value
  33961. +into 22 bits. */
  33962. + BFD_RELOC_AVR_CALL,
  33963. +
  33964. +/* This is a 16 bit reloc for the AVR that stores all needed bits
  33965. +for absolute addressing with ldi with overflow check to linktime */
  33966. + BFD_RELOC_AVR_LDI,
  33967. +
  33968. +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
  33969. +instructions */
  33970. + BFD_RELOC_AVR_6,
  33971. +
  33972. +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
  33973. +instructions */
  33974. + BFD_RELOC_AVR_6_ADIW,
  33975. +
  33976. +/* Direct 12 bit. */
  33977. + BFD_RELOC_390_12,
  33978. +
  33979. +/* 12 bit GOT offset. */
  33980. + BFD_RELOC_390_GOT12,
  33981. +
  33982. +/* 32 bit PC relative PLT address. */
  33983. + BFD_RELOC_390_PLT32,
  33984. +
  33985. +/* Copy symbol at runtime. */
  33986. + BFD_RELOC_390_COPY,
  33987. +
  33988. +/* Create GOT entry. */
  33989. + BFD_RELOC_390_GLOB_DAT,
  33990. +
  33991. +/* Create PLT entry. */
  33992. + BFD_RELOC_390_JMP_SLOT,
  33993. +
  33994. +/* Adjust by program base. */
  33995. + BFD_RELOC_390_RELATIVE,
  33996. +
  33997. +/* 32 bit PC relative offset to GOT. */
  33998. + BFD_RELOC_390_GOTPC,
  33999. +
  34000. +/* 16 bit GOT offset. */
  34001. + BFD_RELOC_390_GOT16,
  34002. +
  34003. +/* PC relative 16 bit shifted by 1. */
  34004. + BFD_RELOC_390_PC16DBL,
  34005. +
  34006. +/* 16 bit PC rel. PLT shifted by 1. */
  34007. + BFD_RELOC_390_PLT16DBL,
  34008. +
  34009. +/* PC relative 32 bit shifted by 1. */
  34010. + BFD_RELOC_390_PC32DBL,
  34011. +
  34012. +/* 32 bit PC rel. PLT shifted by 1. */
  34013. + BFD_RELOC_390_PLT32DBL,
  34014. +
  34015. +/* 32 bit PC rel. GOT shifted by 1. */
  34016. + BFD_RELOC_390_GOTPCDBL,
  34017. +
  34018. +/* 64 bit GOT offset. */
  34019. + BFD_RELOC_390_GOT64,
  34020. +
  34021. +/* 64 bit PC relative PLT address. */
  34022. + BFD_RELOC_390_PLT64,
  34023. +
  34024. +/* 32 bit rel. offset to GOT entry. */
  34025. + BFD_RELOC_390_GOTENT,
  34026. +
  34027. +/* 64 bit offset to GOT. */
  34028. + BFD_RELOC_390_GOTOFF64,
  34029. +
  34030. +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
  34031. + BFD_RELOC_390_GOTPLT12,
  34032. +
  34033. +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
  34034. + BFD_RELOC_390_GOTPLT16,
  34035. +
  34036. +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
  34037. + BFD_RELOC_390_GOTPLT32,
  34038. +
  34039. +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
  34040. + BFD_RELOC_390_GOTPLT64,
  34041. +
  34042. +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
  34043. + BFD_RELOC_390_GOTPLTENT,
  34044. +
  34045. +/* 16-bit rel. offset from the GOT to a PLT entry. */
  34046. + BFD_RELOC_390_PLTOFF16,
  34047. +
  34048. +/* 32-bit rel. offset from the GOT to a PLT entry. */
  34049. + BFD_RELOC_390_PLTOFF32,
  34050. +
  34051. +/* 64-bit rel. offset from the GOT to a PLT entry. */
  34052. + BFD_RELOC_390_PLTOFF64,
  34053. +
  34054. +/* s390 tls relocations. */
  34055. + BFD_RELOC_390_TLS_LOAD,
  34056. + BFD_RELOC_390_TLS_GDCALL,
  34057. + BFD_RELOC_390_TLS_LDCALL,
  34058. + BFD_RELOC_390_TLS_GD32,
  34059. + BFD_RELOC_390_TLS_GD64,
  34060. + BFD_RELOC_390_TLS_GOTIE12,
  34061. + BFD_RELOC_390_TLS_GOTIE32,
  34062. + BFD_RELOC_390_TLS_GOTIE64,
  34063. + BFD_RELOC_390_TLS_LDM32,
  34064. + BFD_RELOC_390_TLS_LDM64,
  34065. + BFD_RELOC_390_TLS_IE32,
  34066. + BFD_RELOC_390_TLS_IE64,
  34067. + BFD_RELOC_390_TLS_IEENT,
  34068. + BFD_RELOC_390_TLS_LE32,
  34069. + BFD_RELOC_390_TLS_LE64,
  34070. + BFD_RELOC_390_TLS_LDO32,
  34071. + BFD_RELOC_390_TLS_LDO64,
  34072. + BFD_RELOC_390_TLS_DTPMOD,
  34073. + BFD_RELOC_390_TLS_DTPOFF,
  34074. + BFD_RELOC_390_TLS_TPOFF,
  34075. +
  34076. +/* Long displacement extension. */
  34077. + BFD_RELOC_390_20,
  34078. + BFD_RELOC_390_GOT20,
  34079. + BFD_RELOC_390_GOTPLT20,
  34080. + BFD_RELOC_390_TLS_GOTIE20,
  34081. +
  34082. +/* Score relocations */
  34083. + BFD_RELOC_SCORE_DUMMY1,
  34084. +
  34085. +/* Low 16 bit for load/store */
  34086. + BFD_RELOC_SCORE_GPREL15,
  34087. +
  34088. +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
  34089. + BFD_RELOC_SCORE_DUMMY2,
  34090. + BFD_RELOC_SCORE_JMP,
  34091. +
  34092. +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
  34093. + BFD_RELOC_SCORE_BRANCH,
  34094. +
  34095. +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
  34096. + BFD_RELOC_SCORE16_JMP,
  34097. +
  34098. +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
  34099. + BFD_RELOC_SCORE16_BRANCH,
  34100. +
  34101. +/* Undocumented Score relocs */
  34102. + BFD_RELOC_SCORE_GOT15,
  34103. + BFD_RELOC_SCORE_GOT_LO16,
  34104. + BFD_RELOC_SCORE_CALL15,
  34105. + BFD_RELOC_SCORE_DUMMY_HI16,
  34106. +
  34107. +/* Scenix IP2K - 9-bit register number / data address */
  34108. + BFD_RELOC_IP2K_FR9,
  34109. +
  34110. +/* Scenix IP2K - 4-bit register/data bank number */
  34111. + BFD_RELOC_IP2K_BANK,
  34112. +
  34113. +/* Scenix IP2K - low 13 bits of instruction word address */
  34114. + BFD_RELOC_IP2K_ADDR16CJP,
  34115. +
  34116. +/* Scenix IP2K - high 3 bits of instruction word address */
  34117. + BFD_RELOC_IP2K_PAGE3,
  34118. +
  34119. +/* Scenix IP2K - ext/low/high 8 bits of data address */
  34120. + BFD_RELOC_IP2K_LO8DATA,
  34121. + BFD_RELOC_IP2K_HI8DATA,
  34122. + BFD_RELOC_IP2K_EX8DATA,
  34123. +
  34124. +/* Scenix IP2K - low/high 8 bits of instruction word address */
  34125. + BFD_RELOC_IP2K_LO8INSN,
  34126. + BFD_RELOC_IP2K_HI8INSN,
  34127. +
  34128. +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
  34129. + BFD_RELOC_IP2K_PC_SKIP,
  34130. +
  34131. +/* Scenix IP2K - 16 bit word address in text section. */
  34132. + BFD_RELOC_IP2K_TEXT,
  34133. +
  34134. +/* Scenix IP2K - 7-bit sp or dp offset */
  34135. + BFD_RELOC_IP2K_FR_OFFSET,
  34136. +
  34137. +/* Scenix VPE4K coprocessor - data/insn-space addressing */
  34138. + BFD_RELOC_VPE4KMATH_DATA,
  34139. + BFD_RELOC_VPE4KMATH_INSN,
  34140. +
  34141. +/* These two relocations are used by the linker to determine which of
  34142. +the entries in a C++ virtual function table are actually used. When
  34143. +the --gc-sections option is given, the linker will zero out the entries
  34144. +that are not used, so that the code for those functions need not be
  34145. +included in the output.
  34146. +
  34147. +VTABLE_INHERIT is a zero-space relocation used to describe to the
  34148. +linker the inheritance tree of a C++ virtual function table. The
  34149. +relocation's symbol should be the parent class' vtable, and the
  34150. +relocation should be located at the child vtable.
  34151. +
  34152. +VTABLE_ENTRY is a zero-space relocation that describes the use of a
  34153. +virtual function table entry. The reloc's symbol should refer to the
  34154. +table of the class mentioned in the code. Off of that base, an offset
  34155. +describes the entry that is being used. For Rela hosts, this offset
  34156. +is stored in the reloc's addend. For Rel hosts, we are forced to put
  34157. +this offset in the reloc's section offset. */
  34158. + BFD_RELOC_VTABLE_INHERIT,
  34159. + BFD_RELOC_VTABLE_ENTRY,
  34160. +
  34161. +/* Intel IA64 Relocations. */
  34162. + BFD_RELOC_IA64_IMM14,
  34163. + BFD_RELOC_IA64_IMM22,
  34164. + BFD_RELOC_IA64_IMM64,
  34165. + BFD_RELOC_IA64_DIR32MSB,
  34166. + BFD_RELOC_IA64_DIR32LSB,
  34167. + BFD_RELOC_IA64_DIR64MSB,
  34168. + BFD_RELOC_IA64_DIR64LSB,
  34169. + BFD_RELOC_IA64_GPREL22,
  34170. + BFD_RELOC_IA64_GPREL64I,
  34171. + BFD_RELOC_IA64_GPREL32MSB,
  34172. + BFD_RELOC_IA64_GPREL32LSB,
  34173. + BFD_RELOC_IA64_GPREL64MSB,
  34174. + BFD_RELOC_IA64_GPREL64LSB,
  34175. + BFD_RELOC_IA64_LTOFF22,
  34176. + BFD_RELOC_IA64_LTOFF64I,
  34177. + BFD_RELOC_IA64_PLTOFF22,
  34178. + BFD_RELOC_IA64_PLTOFF64I,
  34179. + BFD_RELOC_IA64_PLTOFF64MSB,
  34180. + BFD_RELOC_IA64_PLTOFF64LSB,
  34181. + BFD_RELOC_IA64_FPTR64I,
  34182. + BFD_RELOC_IA64_FPTR32MSB,
  34183. + BFD_RELOC_IA64_FPTR32LSB,
  34184. + BFD_RELOC_IA64_FPTR64MSB,
  34185. + BFD_RELOC_IA64_FPTR64LSB,
  34186. + BFD_RELOC_IA64_PCREL21B,
  34187. + BFD_RELOC_IA64_PCREL21BI,
  34188. + BFD_RELOC_IA64_PCREL21M,
  34189. + BFD_RELOC_IA64_PCREL21F,
  34190. + BFD_RELOC_IA64_PCREL22,
  34191. + BFD_RELOC_IA64_PCREL60B,
  34192. + BFD_RELOC_IA64_PCREL64I,
  34193. + BFD_RELOC_IA64_PCREL32MSB,
  34194. + BFD_RELOC_IA64_PCREL32LSB,
  34195. + BFD_RELOC_IA64_PCREL64MSB,
  34196. + BFD_RELOC_IA64_PCREL64LSB,
  34197. + BFD_RELOC_IA64_LTOFF_FPTR22,
  34198. + BFD_RELOC_IA64_LTOFF_FPTR64I,
  34199. + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
  34200. + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
  34201. + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
  34202. + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
  34203. + BFD_RELOC_IA64_SEGREL32MSB,
  34204. + BFD_RELOC_IA64_SEGREL32LSB,
  34205. + BFD_RELOC_IA64_SEGREL64MSB,
  34206. + BFD_RELOC_IA64_SEGREL64LSB,
  34207. + BFD_RELOC_IA64_SECREL32MSB,
  34208. + BFD_RELOC_IA64_SECREL32LSB,
  34209. + BFD_RELOC_IA64_SECREL64MSB,
  34210. + BFD_RELOC_IA64_SECREL64LSB,
  34211. + BFD_RELOC_IA64_REL32MSB,
  34212. + BFD_RELOC_IA64_REL32LSB,
  34213. + BFD_RELOC_IA64_REL64MSB,
  34214. + BFD_RELOC_IA64_REL64LSB,
  34215. + BFD_RELOC_IA64_LTV32MSB,
  34216. + BFD_RELOC_IA64_LTV32LSB,
  34217. + BFD_RELOC_IA64_LTV64MSB,
  34218. + BFD_RELOC_IA64_LTV64LSB,
  34219. + BFD_RELOC_IA64_IPLTMSB,
  34220. + BFD_RELOC_IA64_IPLTLSB,
  34221. + BFD_RELOC_IA64_COPY,
  34222. + BFD_RELOC_IA64_LTOFF22X,
  34223. + BFD_RELOC_IA64_LDXMOV,
  34224. + BFD_RELOC_IA64_TPREL14,
  34225. + BFD_RELOC_IA64_TPREL22,
  34226. + BFD_RELOC_IA64_TPREL64I,
  34227. + BFD_RELOC_IA64_TPREL64MSB,
  34228. + BFD_RELOC_IA64_TPREL64LSB,
  34229. + BFD_RELOC_IA64_LTOFF_TPREL22,
  34230. + BFD_RELOC_IA64_DTPMOD64MSB,
  34231. + BFD_RELOC_IA64_DTPMOD64LSB,
  34232. + BFD_RELOC_IA64_LTOFF_DTPMOD22,
  34233. + BFD_RELOC_IA64_DTPREL14,
  34234. + BFD_RELOC_IA64_DTPREL22,
  34235. + BFD_RELOC_IA64_DTPREL64I,
  34236. + BFD_RELOC_IA64_DTPREL32MSB,
  34237. + BFD_RELOC_IA64_DTPREL32LSB,
  34238. + BFD_RELOC_IA64_DTPREL64MSB,
  34239. + BFD_RELOC_IA64_DTPREL64LSB,
  34240. + BFD_RELOC_IA64_LTOFF_DTPREL22,
  34241. +
  34242. +/* Motorola 68HC11 reloc.
  34243. +This is the 8 bit high part of an absolute address. */
  34244. + BFD_RELOC_M68HC11_HI8,
  34245. +
  34246. +/* Motorola 68HC11 reloc.
  34247. +This is the 8 bit low part of an absolute address. */
  34248. + BFD_RELOC_M68HC11_LO8,
  34249. +
  34250. +/* Motorola 68HC11 reloc.
  34251. +This is the 3 bit of a value. */
  34252. + BFD_RELOC_M68HC11_3B,
  34253. +
  34254. +/* Motorola 68HC11 reloc.
  34255. +This reloc marks the beginning of a jump/call instruction.
  34256. +It is used for linker relaxation to correctly identify beginning
  34257. +of instruction and change some branches to use PC-relative
  34258. +addressing mode. */
  34259. + BFD_RELOC_M68HC11_RL_JUMP,
  34260. +
  34261. +/* Motorola 68HC11 reloc.
  34262. +This reloc marks a group of several instructions that gcc generates
  34263. +and for which the linker relaxation pass can modify and/or remove
  34264. +some of them. */
  34265. + BFD_RELOC_M68HC11_RL_GROUP,
  34266. +
  34267. +/* Motorola 68HC11 reloc.
  34268. +This is the 16-bit lower part of an address. It is used for 'call'
  34269. +instruction to specify the symbol address without any special
  34270. +transformation (due to memory bank window). */
  34271. + BFD_RELOC_M68HC11_LO16,
  34272. +
  34273. +/* Motorola 68HC11 reloc.
  34274. +This is a 8-bit reloc that specifies the page number of an address.
  34275. +It is used by 'call' instruction to specify the page number of
  34276. +the symbol. */
  34277. + BFD_RELOC_M68HC11_PAGE,
  34278. +
  34279. +/* Motorola 68HC11 reloc.
  34280. +This is a 24-bit reloc that represents the address with a 16-bit
  34281. +value and a 8-bit page number. The symbol address is transformed
  34282. +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
  34283. + BFD_RELOC_M68HC11_24,
  34284. +
  34285. +/* Motorola 68HC12 reloc.
  34286. +This is the 5 bits of a value. */
  34287. + BFD_RELOC_M68HC12_5B,
  34288. +
  34289. +/* NS CR16C Relocations. */
  34290. + BFD_RELOC_16C_NUM08,
  34291. + BFD_RELOC_16C_NUM08_C,
  34292. + BFD_RELOC_16C_NUM16,
  34293. + BFD_RELOC_16C_NUM16_C,
  34294. + BFD_RELOC_16C_NUM32,
  34295. + BFD_RELOC_16C_NUM32_C,
  34296. + BFD_RELOC_16C_DISP04,
  34297. + BFD_RELOC_16C_DISP04_C,
  34298. + BFD_RELOC_16C_DISP08,
  34299. + BFD_RELOC_16C_DISP08_C,
  34300. + BFD_RELOC_16C_DISP16,
  34301. + BFD_RELOC_16C_DISP16_C,
  34302. + BFD_RELOC_16C_DISP24,
  34303. + BFD_RELOC_16C_DISP24_C,
  34304. + BFD_RELOC_16C_DISP24a,
  34305. + BFD_RELOC_16C_DISP24a_C,
  34306. + BFD_RELOC_16C_REG04,
  34307. + BFD_RELOC_16C_REG04_C,
  34308. + BFD_RELOC_16C_REG04a,
  34309. + BFD_RELOC_16C_REG04a_C,
  34310. + BFD_RELOC_16C_REG14,
  34311. + BFD_RELOC_16C_REG14_C,
  34312. + BFD_RELOC_16C_REG16,
  34313. + BFD_RELOC_16C_REG16_C,
  34314. + BFD_RELOC_16C_REG20,
  34315. + BFD_RELOC_16C_REG20_C,
  34316. + BFD_RELOC_16C_ABS20,
  34317. + BFD_RELOC_16C_ABS20_C,
  34318. + BFD_RELOC_16C_ABS24,
  34319. + BFD_RELOC_16C_ABS24_C,
  34320. + BFD_RELOC_16C_IMM04,
  34321. + BFD_RELOC_16C_IMM04_C,
  34322. + BFD_RELOC_16C_IMM16,
  34323. + BFD_RELOC_16C_IMM16_C,
  34324. + BFD_RELOC_16C_IMM20,
  34325. + BFD_RELOC_16C_IMM20_C,
  34326. + BFD_RELOC_16C_IMM24,
  34327. + BFD_RELOC_16C_IMM24_C,
  34328. + BFD_RELOC_16C_IMM32,
  34329. + BFD_RELOC_16C_IMM32_C,
  34330. +
  34331. +/* NS CR16 Relocations. */
  34332. + BFD_RELOC_CR16_NUM8,
  34333. + BFD_RELOC_CR16_NUM16,
  34334. + BFD_RELOC_CR16_NUM32,
  34335. + BFD_RELOC_CR16_NUM32a,
  34336. + BFD_RELOC_CR16_REGREL0,
  34337. + BFD_RELOC_CR16_REGREL4,
  34338. + BFD_RELOC_CR16_REGREL4a,
  34339. + BFD_RELOC_CR16_REGREL14,
  34340. + BFD_RELOC_CR16_REGREL14a,
  34341. + BFD_RELOC_CR16_REGREL16,
  34342. + BFD_RELOC_CR16_REGREL20,
  34343. + BFD_RELOC_CR16_REGREL20a,
  34344. + BFD_RELOC_CR16_ABS20,
  34345. + BFD_RELOC_CR16_ABS24,
  34346. + BFD_RELOC_CR16_IMM4,
  34347. + BFD_RELOC_CR16_IMM8,
  34348. + BFD_RELOC_CR16_IMM16,
  34349. + BFD_RELOC_CR16_IMM20,
  34350. + BFD_RELOC_CR16_IMM24,
  34351. + BFD_RELOC_CR16_IMM32,
  34352. + BFD_RELOC_CR16_IMM32a,
  34353. + BFD_RELOC_CR16_DISP4,
  34354. + BFD_RELOC_CR16_DISP8,
  34355. + BFD_RELOC_CR16_DISP16,
  34356. + BFD_RELOC_CR16_DISP20,
  34357. + BFD_RELOC_CR16_DISP24,
  34358. + BFD_RELOC_CR16_DISP24a,
  34359. +
  34360. +/* NS CRX Relocations. */
  34361. + BFD_RELOC_CRX_REL4,
  34362. + BFD_RELOC_CRX_REL8,
  34363. + BFD_RELOC_CRX_REL8_CMP,
  34364. + BFD_RELOC_CRX_REL16,
  34365. + BFD_RELOC_CRX_REL24,
  34366. + BFD_RELOC_CRX_REL32,
  34367. + BFD_RELOC_CRX_REGREL12,
  34368. + BFD_RELOC_CRX_REGREL22,
  34369. + BFD_RELOC_CRX_REGREL28,
  34370. + BFD_RELOC_CRX_REGREL32,
  34371. + BFD_RELOC_CRX_ABS16,
  34372. + BFD_RELOC_CRX_ABS32,
  34373. + BFD_RELOC_CRX_NUM8,
  34374. + BFD_RELOC_CRX_NUM16,
  34375. + BFD_RELOC_CRX_NUM32,
  34376. + BFD_RELOC_CRX_IMM16,
  34377. + BFD_RELOC_CRX_IMM32,
  34378. + BFD_RELOC_CRX_SWITCH8,
  34379. + BFD_RELOC_CRX_SWITCH16,
  34380. + BFD_RELOC_CRX_SWITCH32,
  34381. +
  34382. +/* These relocs are only used within the CRIS assembler. They are not
  34383. +(at present) written to any object files. */
  34384. + BFD_RELOC_CRIS_BDISP8,
  34385. + BFD_RELOC_CRIS_UNSIGNED_5,
  34386. + BFD_RELOC_CRIS_SIGNED_6,
  34387. + BFD_RELOC_CRIS_UNSIGNED_6,
  34388. + BFD_RELOC_CRIS_SIGNED_8,
  34389. + BFD_RELOC_CRIS_UNSIGNED_8,
  34390. + BFD_RELOC_CRIS_SIGNED_16,
  34391. + BFD_RELOC_CRIS_UNSIGNED_16,
  34392. + BFD_RELOC_CRIS_LAPCQ_OFFSET,
  34393. + BFD_RELOC_CRIS_UNSIGNED_4,
  34394. +
  34395. +/* Relocs used in ELF shared libraries for CRIS. */
  34396. + BFD_RELOC_CRIS_COPY,
  34397. + BFD_RELOC_CRIS_GLOB_DAT,
  34398. + BFD_RELOC_CRIS_JUMP_SLOT,
  34399. + BFD_RELOC_CRIS_RELATIVE,
  34400. +
  34401. +/* 32-bit offset to symbol-entry within GOT. */
  34402. + BFD_RELOC_CRIS_32_GOT,
  34403. +
  34404. +/* 16-bit offset to symbol-entry within GOT. */
  34405. + BFD_RELOC_CRIS_16_GOT,
  34406. +
  34407. +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
  34408. + BFD_RELOC_CRIS_32_GOTPLT,
  34409. +
  34410. +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
  34411. + BFD_RELOC_CRIS_16_GOTPLT,
  34412. +
  34413. +/* 32-bit offset to symbol, relative to GOT. */
  34414. + BFD_RELOC_CRIS_32_GOTREL,
  34415. +
  34416. +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
  34417. + BFD_RELOC_CRIS_32_PLT_GOTREL,
  34418. +
  34419. +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
  34420. + BFD_RELOC_CRIS_32_PLT_PCREL,
  34421. +
  34422. +/* Intel i860 Relocations. */
  34423. + BFD_RELOC_860_COPY,
  34424. + BFD_RELOC_860_GLOB_DAT,
  34425. + BFD_RELOC_860_JUMP_SLOT,
  34426. + BFD_RELOC_860_RELATIVE,
  34427. + BFD_RELOC_860_PC26,
  34428. + BFD_RELOC_860_PLT26,
  34429. + BFD_RELOC_860_PC16,
  34430. + BFD_RELOC_860_LOW0,
  34431. + BFD_RELOC_860_SPLIT0,
  34432. + BFD_RELOC_860_LOW1,
  34433. + BFD_RELOC_860_SPLIT1,
  34434. + BFD_RELOC_860_LOW2,
  34435. + BFD_RELOC_860_SPLIT2,
  34436. + BFD_RELOC_860_LOW3,
  34437. + BFD_RELOC_860_LOGOT0,
  34438. + BFD_RELOC_860_SPGOT0,
  34439. + BFD_RELOC_860_LOGOT1,
  34440. + BFD_RELOC_860_SPGOT1,
  34441. + BFD_RELOC_860_LOGOTOFF0,
  34442. + BFD_RELOC_860_SPGOTOFF0,
  34443. + BFD_RELOC_860_LOGOTOFF1,
  34444. + BFD_RELOC_860_SPGOTOFF1,
  34445. + BFD_RELOC_860_LOGOTOFF2,
  34446. + BFD_RELOC_860_LOGOTOFF3,
  34447. + BFD_RELOC_860_LOPC,
  34448. + BFD_RELOC_860_HIGHADJ,
  34449. + BFD_RELOC_860_HAGOT,
  34450. + BFD_RELOC_860_HAGOTOFF,
  34451. + BFD_RELOC_860_HAPC,
  34452. + BFD_RELOC_860_HIGH,
  34453. + BFD_RELOC_860_HIGOT,
  34454. + BFD_RELOC_860_HIGOTOFF,
  34455. +
  34456. +/* OpenRISC Relocations. */
  34457. + BFD_RELOC_OPENRISC_ABS_26,
  34458. + BFD_RELOC_OPENRISC_REL_26,
  34459. +
  34460. +/* H8 elf Relocations. */
  34461. + BFD_RELOC_H8_DIR16A8,
  34462. + BFD_RELOC_H8_DIR16R8,
  34463. + BFD_RELOC_H8_DIR24A8,
  34464. + BFD_RELOC_H8_DIR24R8,
  34465. + BFD_RELOC_H8_DIR32A16,
  34466. +
  34467. +/* Sony Xstormy16 Relocations. */
  34468. + BFD_RELOC_XSTORMY16_REL_12,
  34469. + BFD_RELOC_XSTORMY16_12,
  34470. + BFD_RELOC_XSTORMY16_24,
  34471. + BFD_RELOC_XSTORMY16_FPTR16,
  34472. +
  34473. +/* Self-describing complex relocations. */
  34474. + BFD_RELOC_RELC,
  34475. +
  34476. +
  34477. +/* Infineon Relocations. */
  34478. + BFD_RELOC_XC16X_PAG,
  34479. + BFD_RELOC_XC16X_POF,
  34480. + BFD_RELOC_XC16X_SEG,
  34481. + BFD_RELOC_XC16X_SOF,
  34482. +
  34483. +/* Relocations used by VAX ELF. */
  34484. + BFD_RELOC_VAX_GLOB_DAT,
  34485. + BFD_RELOC_VAX_JMP_SLOT,
  34486. + BFD_RELOC_VAX_RELATIVE,
  34487. +
  34488. +/* Morpho MT - 16 bit immediate relocation. */
  34489. + BFD_RELOC_MT_PC16,
  34490. +
  34491. +/* Morpho MT - Hi 16 bits of an address. */
  34492. + BFD_RELOC_MT_HI16,
  34493. +
  34494. +/* Morpho MT - Low 16 bits of an address. */
  34495. + BFD_RELOC_MT_LO16,
  34496. +
  34497. +/* Morpho MT - Used to tell the linker which vtable entries are used. */
  34498. + BFD_RELOC_MT_GNU_VTINHERIT,
  34499. +
  34500. +/* Morpho MT - Used to tell the linker which vtable entries are used. */
  34501. + BFD_RELOC_MT_GNU_VTENTRY,
  34502. +
  34503. +/* Morpho MT - 8 bit immediate relocation. */
  34504. + BFD_RELOC_MT_PCINSN8,
  34505. +
  34506. +/* msp430 specific relocation codes */
  34507. + BFD_RELOC_MSP430_10_PCREL,
  34508. + BFD_RELOC_MSP430_16_PCREL,
  34509. + BFD_RELOC_MSP430_16,
  34510. + BFD_RELOC_MSP430_16_PCREL_BYTE,
  34511. + BFD_RELOC_MSP430_16_BYTE,
  34512. + BFD_RELOC_MSP430_2X_PCREL,
  34513. + BFD_RELOC_MSP430_RL_PCREL,
  34514. +
  34515. +/* IQ2000 Relocations. */
  34516. + BFD_RELOC_IQ2000_OFFSET_16,
  34517. + BFD_RELOC_IQ2000_OFFSET_21,
  34518. + BFD_RELOC_IQ2000_UHI16,
  34519. +
  34520. +/* Special Xtensa relocation used only by PLT entries in ELF shared
  34521. +objects to indicate that the runtime linker should set the value
  34522. +to one of its own internal functions or data structures. */
  34523. + BFD_RELOC_XTENSA_RTLD,
  34524. +
  34525. +/* Xtensa relocations for ELF shared objects. */
  34526. + BFD_RELOC_XTENSA_GLOB_DAT,
  34527. + BFD_RELOC_XTENSA_JMP_SLOT,
  34528. + BFD_RELOC_XTENSA_RELATIVE,
  34529. +
  34530. +/* Xtensa relocation used in ELF object files for symbols that may require
  34531. +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
  34532. + BFD_RELOC_XTENSA_PLT,
  34533. +
  34534. +/* Xtensa relocations to mark the difference of two local symbols.
  34535. +These are only needed to support linker relaxation and can be ignored
  34536. +when not relaxing. The field is set to the value of the difference
  34537. +assuming no relaxation. The relocation encodes the position of the
  34538. +first symbol so the linker can determine whether to adjust the field
  34539. +value. */
  34540. + BFD_RELOC_XTENSA_DIFF8,
  34541. + BFD_RELOC_XTENSA_DIFF16,
  34542. + BFD_RELOC_XTENSA_DIFF32,
  34543. +
  34544. +/* Generic Xtensa relocations for instruction operands. Only the slot
  34545. +number is encoded in the relocation. The relocation applies to the
  34546. +last PC-relative immediate operand, or if there are no PC-relative
  34547. +immediates, to the last immediate operand. */
  34548. + BFD_RELOC_XTENSA_SLOT0_OP,
  34549. + BFD_RELOC_XTENSA_SLOT1_OP,
  34550. + BFD_RELOC_XTENSA_SLOT2_OP,
  34551. + BFD_RELOC_XTENSA_SLOT3_OP,
  34552. + BFD_RELOC_XTENSA_SLOT4_OP,
  34553. + BFD_RELOC_XTENSA_SLOT5_OP,
  34554. + BFD_RELOC_XTENSA_SLOT6_OP,
  34555. + BFD_RELOC_XTENSA_SLOT7_OP,
  34556. + BFD_RELOC_XTENSA_SLOT8_OP,
  34557. + BFD_RELOC_XTENSA_SLOT9_OP,
  34558. + BFD_RELOC_XTENSA_SLOT10_OP,
  34559. + BFD_RELOC_XTENSA_SLOT11_OP,
  34560. + BFD_RELOC_XTENSA_SLOT12_OP,
  34561. + BFD_RELOC_XTENSA_SLOT13_OP,
  34562. + BFD_RELOC_XTENSA_SLOT14_OP,
  34563. +
  34564. +/* Alternate Xtensa relocations. Only the slot is encoded in the
  34565. +relocation. The meaning of these relocations is opcode-specific. */
  34566. + BFD_RELOC_XTENSA_SLOT0_ALT,
  34567. + BFD_RELOC_XTENSA_SLOT1_ALT,
  34568. + BFD_RELOC_XTENSA_SLOT2_ALT,
  34569. + BFD_RELOC_XTENSA_SLOT3_ALT,
  34570. + BFD_RELOC_XTENSA_SLOT4_ALT,
  34571. + BFD_RELOC_XTENSA_SLOT5_ALT,
  34572. + BFD_RELOC_XTENSA_SLOT6_ALT,
  34573. + BFD_RELOC_XTENSA_SLOT7_ALT,
  34574. + BFD_RELOC_XTENSA_SLOT8_ALT,
  34575. + BFD_RELOC_XTENSA_SLOT9_ALT,
  34576. + BFD_RELOC_XTENSA_SLOT10_ALT,
  34577. + BFD_RELOC_XTENSA_SLOT11_ALT,
  34578. + BFD_RELOC_XTENSA_SLOT12_ALT,
  34579. + BFD_RELOC_XTENSA_SLOT13_ALT,
  34580. + BFD_RELOC_XTENSA_SLOT14_ALT,
  34581. +
  34582. +/* Xtensa relocations for backward compatibility. These have all been
  34583. +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
  34584. + BFD_RELOC_XTENSA_OP0,
  34585. + BFD_RELOC_XTENSA_OP1,
  34586. + BFD_RELOC_XTENSA_OP2,
  34587. +
  34588. +/* Xtensa relocation to mark that the assembler expanded the
  34589. +instructions from an original target. The expansion size is
  34590. +encoded in the reloc size. */
  34591. + BFD_RELOC_XTENSA_ASM_EXPAND,
  34592. +
  34593. +/* Xtensa relocation to mark that the linker should simplify
  34594. +assembler-expanded instructions. This is commonly used
  34595. +internally by the linker after analysis of a
  34596. +BFD_RELOC_XTENSA_ASM_EXPAND. */
  34597. + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
  34598. +
  34599. +/* 8 bit signed offset in (ix+d) or (iy+d). */
  34600. + BFD_RELOC_Z80_DISP8,
  34601. +
  34602. +/* DJNZ offset. */
  34603. + BFD_RELOC_Z8K_DISP7,
  34604. +
  34605. +/* CALR offset. */
  34606. + BFD_RELOC_Z8K_CALLR,
  34607. +
  34608. +/* 4 bit value. */
  34609. + BFD_RELOC_Z8K_IMM4L,
  34610. + BFD_RELOC_UNUSED };
  34611. +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
  34612. +reloc_howto_type *bfd_reloc_type_lookup
  34613. + (bfd *abfd, bfd_reloc_code_real_type code);
  34614. +reloc_howto_type *bfd_reloc_name_lookup
  34615. + (bfd *abfd, const char *reloc_name);
  34616. +
  34617. +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
  34618. +
  34619. +/* Extracted from syms.c. */
  34620. +
  34621. +typedef struct bfd_symbol
  34622. +{
  34623. + /* A pointer to the BFD which owns the symbol. This information
  34624. + is necessary so that a back end can work out what additional
  34625. + information (invisible to the application writer) is carried
  34626. + with the symbol.
  34627. +
  34628. + This field is *almost* redundant, since you can use section->owner
  34629. + instead, except that some symbols point to the global sections
  34630. + bfd_{abs,com,und}_section. This could be fixed by making
  34631. + these globals be per-bfd (or per-target-flavor). FIXME. */
  34632. + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
  34633. +
  34634. + /* The text of the symbol. The name is left alone, and not copied; the
  34635. + application may not alter it. */
  34636. + const char *name;
  34637. +
  34638. + /* The value of the symbol. This really should be a union of a
  34639. + numeric value with a pointer, since some flags indicate that
  34640. + a pointer to another symbol is stored here. */
  34641. + symvalue value;
  34642. +
  34643. + /* Attributes of a symbol. */
  34644. +#define BSF_NO_FLAGS 0x00
  34645. +
  34646. + /* The symbol has local scope; <<static>> in <<C>>. The value
  34647. + is the offset into the section of the data. */
  34648. +#define BSF_LOCAL 0x01
  34649. +
  34650. + /* The symbol has global scope; initialized data in <<C>>. The
  34651. + value is the offset into the section of the data. */
  34652. +#define BSF_GLOBAL 0x02
  34653. +
  34654. + /* The symbol has global scope and is exported. The value is
  34655. + the offset into the section of the data. */
  34656. +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
  34657. +
  34658. + /* A normal C symbol would be one of:
  34659. + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
  34660. + <<BSF_GLOBAL>>. */
  34661. +
  34662. + /* The symbol is a debugging record. The value has an arbitrary
  34663. + meaning, unless BSF_DEBUGGING_RELOC is also set. */
  34664. +#define BSF_DEBUGGING 0x08
  34665. +
  34666. + /* The symbol denotes a function entry point. Used in ELF,
  34667. + perhaps others someday. */
  34668. +#define BSF_FUNCTION 0x10
  34669. +
  34670. + /* Used by the linker. */
  34671. +#define BSF_KEEP 0x20
  34672. +#define BSF_KEEP_G 0x40
  34673. +
  34674. + /* A weak global symbol, overridable without warnings by
  34675. + a regular global symbol of the same name. */
  34676. +#define BSF_WEAK 0x80
  34677. +
  34678. + /* This symbol was created to point to a section, e.g. ELF's
  34679. + STT_SECTION symbols. */
  34680. +#define BSF_SECTION_SYM 0x100
  34681. +
  34682. + /* The symbol used to be a common symbol, but now it is
  34683. + allocated. */
  34684. +#define BSF_OLD_COMMON 0x200
  34685. +
  34686. + /* The default value for common data. */
  34687. +#define BFD_FORT_COMM_DEFAULT_VALUE 0
  34688. +
  34689. + /* In some files the type of a symbol sometimes alters its
  34690. + location in an output file - ie in coff a <<ISFCN>> symbol
  34691. + which is also <<C_EXT>> symbol appears where it was
  34692. + declared and not at the end of a section. This bit is set
  34693. + by the target BFD part to convey this information. */
  34694. +#define BSF_NOT_AT_END 0x400
  34695. +
  34696. + /* Signal that the symbol is the label of constructor section. */
  34697. +#define BSF_CONSTRUCTOR 0x800
  34698. +
  34699. + /* Signal that the symbol is a warning symbol. The name is a
  34700. + warning. The name of the next symbol is the one to warn about;
  34701. + if a reference is made to a symbol with the same name as the next
  34702. + symbol, a warning is issued by the linker. */
  34703. +#define BSF_WARNING 0x1000
  34704. +
  34705. + /* Signal that the symbol is indirect. This symbol is an indirect
  34706. + pointer to the symbol with the same name as the next symbol. */
  34707. +#define BSF_INDIRECT 0x2000
  34708. +
  34709. + /* BSF_FILE marks symbols that contain a file name. This is used
  34710. + for ELF STT_FILE symbols. */
  34711. +#define BSF_FILE 0x4000
  34712. +
  34713. + /* Symbol is from dynamic linking information. */
  34714. +#define BSF_DYNAMIC 0x8000
  34715. +
  34716. + /* The symbol denotes a data object. Used in ELF, and perhaps
  34717. + others someday. */
  34718. +#define BSF_OBJECT 0x10000
  34719. +
  34720. + /* This symbol is a debugging symbol. The value is the offset
  34721. + into the section of the data. BSF_DEBUGGING should be set
  34722. + as well. */
  34723. +#define BSF_DEBUGGING_RELOC 0x20000
  34724. +
  34725. + /* This symbol is thread local. Used in ELF. */
  34726. +#define BSF_THREAD_LOCAL 0x40000
  34727. +
  34728. + /* This symbol represents a complex relocation expression,
  34729. + with the expression tree serialized in the symbol name. */
  34730. +#define BSF_RELC 0x80000
  34731. +
  34732. + /* This symbol represents a signed complex relocation expression,
  34733. + with the expression tree serialized in the symbol name. */
  34734. +#define BSF_SRELC 0x100000
  34735. +
  34736. + flagword flags;
  34737. +
  34738. + /* A pointer to the section to which this symbol is
  34739. + relative. This will always be non NULL, there are special
  34740. + sections for undefined and absolute symbols. */
  34741. + struct bfd_section *section;
  34742. +
  34743. + /* Back end special data. */
  34744. + union
  34745. + {
  34746. + void *p;
  34747. + bfd_vma i;
  34748. + }
  34749. + udata;
  34750. +}
  34751. +asymbol;
  34752. +
  34753. +#define bfd_get_symtab_upper_bound(abfd) \
  34754. + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
  34755. +
  34756. +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
  34757. +
  34758. +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
  34759. +
  34760. +#define bfd_is_local_label_name(abfd, name) \
  34761. + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
  34762. +
  34763. +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
  34764. +
  34765. +#define bfd_is_target_special_symbol(abfd, sym) \
  34766. + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
  34767. +
  34768. +#define bfd_canonicalize_symtab(abfd, location) \
  34769. + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
  34770. +
  34771. +bfd_boolean bfd_set_symtab
  34772. + (bfd *abfd, asymbol **location, unsigned int count);
  34773. +
  34774. +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
  34775. +
  34776. +#define bfd_make_empty_symbol(abfd) \
  34777. + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
  34778. +
  34779. +asymbol *_bfd_generic_make_empty_symbol (bfd *);
  34780. +
  34781. +#define bfd_make_debug_symbol(abfd,ptr,size) \
  34782. + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
  34783. +
  34784. +int bfd_decode_symclass (asymbol *symbol);
  34785. +
  34786. +bfd_boolean bfd_is_undefined_symclass (int symclass);
  34787. +
  34788. +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
  34789. +
  34790. +bfd_boolean bfd_copy_private_symbol_data
  34791. + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
  34792. +
  34793. +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
  34794. + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
  34795. + (ibfd, isymbol, obfd, osymbol))
  34796. +
  34797. +/* Extracted from bfd.c. */
  34798. +struct bfd
  34799. +{
  34800. + /* A unique identifier of the BFD */
  34801. + unsigned int id;
  34802. +
  34803. + /* The filename the application opened the BFD with. */
  34804. + const char *filename;
  34805. +
  34806. + /* A pointer to the target jump table. */
  34807. + const struct bfd_target *xvec;
  34808. +
  34809. + /* The IOSTREAM, and corresponding IO vector that provide access
  34810. + to the file backing the BFD. */
  34811. + void *iostream;
  34812. + const struct bfd_iovec *iovec;
  34813. +
  34814. + /* Is the file descriptor being cached? That is, can it be closed as
  34815. + needed, and re-opened when accessed later? */
  34816. + bfd_boolean cacheable;
  34817. +
  34818. + /* Marks whether there was a default target specified when the
  34819. + BFD was opened. This is used to select which matching algorithm
  34820. + to use to choose the back end. */
  34821. + bfd_boolean target_defaulted;
  34822. +
  34823. + /* The caching routines use these to maintain a
  34824. + least-recently-used list of BFDs. */
  34825. + struct bfd *lru_prev, *lru_next;
  34826. +
  34827. + /* When a file is closed by the caching routines, BFD retains
  34828. + state information on the file here... */
  34829. + ufile_ptr where;
  34830. +
  34831. + /* ... and here: (``once'' means at least once). */
  34832. + bfd_boolean opened_once;
  34833. +
  34834. + /* Set if we have a locally maintained mtime value, rather than
  34835. + getting it from the file each time. */
  34836. + bfd_boolean mtime_set;
  34837. +
  34838. + /* File modified time, if mtime_set is TRUE. */
  34839. + long mtime;
  34840. +
  34841. + /* Reserved for an unimplemented file locking extension. */
  34842. + int ifd;
  34843. +
  34844. + /* The format which belongs to the BFD. (object, core, etc.) */
  34845. + bfd_format format;
  34846. +
  34847. + /* The direction with which the BFD was opened. */
  34848. + enum bfd_direction
  34849. + {
  34850. + no_direction = 0,
  34851. + read_direction = 1,
  34852. + write_direction = 2,
  34853. + both_direction = 3
  34854. + }
  34855. + direction;
  34856. +
  34857. + /* Format_specific flags. */
  34858. + flagword flags;
  34859. +
  34860. + /* Currently my_archive is tested before adding origin to
  34861. + anything. I believe that this can become always an add of
  34862. + origin, with origin set to 0 for non archive files. */
  34863. + ufile_ptr origin;
  34864. +
  34865. + /* Remember when output has begun, to stop strange things
  34866. + from happening. */
  34867. + bfd_boolean output_has_begun;
  34868. +
  34869. + /* A hash table for section names. */
  34870. + struct bfd_hash_table section_htab;
  34871. +
  34872. + /* Pointer to linked list of sections. */
  34873. + struct bfd_section *sections;
  34874. +
  34875. + /* The last section on the section list. */
  34876. + struct bfd_section *section_last;
  34877. +
  34878. + /* The number of sections. */
  34879. + unsigned int section_count;
  34880. +
  34881. + /* Stuff only useful for object files:
  34882. + The start address. */
  34883. + bfd_vma start_address;
  34884. +
  34885. + /* Used for input and output. */
  34886. + unsigned int symcount;
  34887. +
  34888. + /* Symbol table for output BFD (with symcount entries). */
  34889. + struct bfd_symbol **outsymbols;
  34890. +
  34891. + /* Used for slurped dynamic symbol tables. */
  34892. + unsigned int dynsymcount;
  34893. +
  34894. + /* Pointer to structure which contains architecture information. */
  34895. + const struct bfd_arch_info *arch_info;
  34896. +
  34897. + /* Flag set if symbols from this BFD should not be exported. */
  34898. + bfd_boolean no_export;
  34899. +
  34900. + /* Stuff only useful for archives. */
  34901. + void *arelt_data;
  34902. + struct bfd *my_archive; /* The containing archive BFD. */
  34903. + struct bfd *archive_next; /* The next BFD in the archive. */
  34904. + struct bfd *archive_head; /* The first BFD in the archive. */
  34905. + bfd_boolean has_armap;
  34906. +
  34907. + /* A chain of BFD structures involved in a link. */
  34908. + struct bfd *link_next;
  34909. +
  34910. + /* A field used by _bfd_generic_link_add_archive_symbols. This will
  34911. + be used only for archive elements. */
  34912. + int archive_pass;
  34913. +
  34914. + /* Used by the back end to hold private data. */
  34915. + union
  34916. + {
  34917. + struct aout_data_struct *aout_data;
  34918. + struct artdata *aout_ar_data;
  34919. + struct _oasys_data *oasys_obj_data;
  34920. + struct _oasys_ar_data *oasys_ar_data;
  34921. + struct coff_tdata *coff_obj_data;
  34922. + struct pe_tdata *pe_obj_data;
  34923. + struct xcoff_tdata *xcoff_obj_data;
  34924. + struct ecoff_tdata *ecoff_obj_data;
  34925. + struct ieee_data_struct *ieee_data;
  34926. + struct ieee_ar_data_struct *ieee_ar_data;
  34927. + struct srec_data_struct *srec_data;
  34928. + struct ihex_data_struct *ihex_data;
  34929. + struct tekhex_data_struct *tekhex_data;
  34930. + struct elf_obj_tdata *elf_obj_data;
  34931. + struct nlm_obj_tdata *nlm_obj_data;
  34932. + struct bout_data_struct *bout_data;
  34933. + struct mmo_data_struct *mmo_data;
  34934. + struct sun_core_struct *sun_core_data;
  34935. + struct sco5_core_struct *sco5_core_data;
  34936. + struct trad_core_struct *trad_core_data;
  34937. + struct som_data_struct *som_data;
  34938. + struct hpux_core_struct *hpux_core_data;
  34939. + struct hppabsd_core_struct *hppabsd_core_data;
  34940. + struct sgi_core_struct *sgi_core_data;
  34941. + struct lynx_core_struct *lynx_core_data;
  34942. + struct osf_core_struct *osf_core_data;
  34943. + struct cisco_core_struct *cisco_core_data;
  34944. + struct versados_data_struct *versados_data;
  34945. + struct netbsd_core_struct *netbsd_core_data;
  34946. + struct mach_o_data_struct *mach_o_data;
  34947. + struct mach_o_fat_data_struct *mach_o_fat_data;
  34948. + struct bfd_pef_data_struct *pef_data;
  34949. + struct bfd_pef_xlib_data_struct *pef_xlib_data;
  34950. + struct bfd_sym_data_struct *sym_data;
  34951. + void *any;
  34952. + }
  34953. + tdata;
  34954. +
  34955. + /* Used by the application to hold private data. */
  34956. + void *usrdata;
  34957. +
  34958. + /* Where all the allocated stuff under this BFD goes. This is a
  34959. + struct objalloc *, but we use void * to avoid requiring the inclusion
  34960. + of objalloc.h. */
  34961. + void *memory;
  34962. +};
  34963. +
  34964. +typedef enum bfd_error
  34965. +{
  34966. + bfd_error_no_error = 0,
  34967. + bfd_error_system_call,
  34968. + bfd_error_invalid_target,
  34969. + bfd_error_wrong_format,
  34970. + bfd_error_wrong_object_format,
  34971. + bfd_error_invalid_operation,
  34972. + bfd_error_no_memory,
  34973. + bfd_error_no_symbols,
  34974. + bfd_error_no_armap,
  34975. + bfd_error_no_more_archived_files,
  34976. + bfd_error_malformed_archive,
  34977. + bfd_error_file_not_recognized,
  34978. + bfd_error_file_ambiguously_recognized,
  34979. + bfd_error_no_contents,
  34980. + bfd_error_nonrepresentable_section,
  34981. + bfd_error_no_debug_section,
  34982. + bfd_error_bad_value,
  34983. + bfd_error_file_truncated,
  34984. + bfd_error_file_too_big,
  34985. + bfd_error_on_input,
  34986. + bfd_error_invalid_error_code
  34987. +}
  34988. +bfd_error_type;
  34989. +
  34990. +bfd_error_type bfd_get_error (void);
  34991. +
  34992. +void bfd_set_error (bfd_error_type error_tag, ...);
  34993. +
  34994. +const char *bfd_errmsg (bfd_error_type error_tag);
  34995. +
  34996. +void bfd_perror (const char *message);
  34997. +
  34998. +typedef void (*bfd_error_handler_type) (const char *, ...);
  34999. +
  35000. +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
  35001. +
  35002. +void bfd_set_error_program_name (const char *);
  35003. +
  35004. +bfd_error_handler_type bfd_get_error_handler (void);
  35005. +
  35006. +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
  35007. +
  35008. +long bfd_canonicalize_reloc
  35009. + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
  35010. +
  35011. +void bfd_set_reloc
  35012. + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
  35013. +
  35014. +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
  35015. +
  35016. +int bfd_get_arch_size (bfd *abfd);
  35017. +
  35018. +int bfd_get_sign_extend_vma (bfd *abfd);
  35019. +
  35020. +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
  35021. +
  35022. +unsigned int bfd_get_gp_size (bfd *abfd);
  35023. +
  35024. +void bfd_set_gp_size (bfd *abfd, unsigned int i);
  35025. +
  35026. +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
  35027. +
  35028. +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
  35029. +
  35030. +#define bfd_copy_private_header_data(ibfd, obfd) \
  35031. + BFD_SEND (obfd, _bfd_copy_private_header_data, \
  35032. + (ibfd, obfd))
  35033. +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
  35034. +
  35035. +#define bfd_copy_private_bfd_data(ibfd, obfd) \
  35036. + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
  35037. + (ibfd, obfd))
  35038. +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
  35039. +
  35040. +#define bfd_merge_private_bfd_data(ibfd, obfd) \
  35041. + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
  35042. + (ibfd, obfd))
  35043. +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
  35044. +
  35045. +#define bfd_set_private_flags(abfd, flags) \
  35046. + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
  35047. +#define bfd_sizeof_headers(abfd, info) \
  35048. + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
  35049. +
  35050. +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
  35051. + BFD_SEND (abfd, _bfd_find_nearest_line, \
  35052. + (abfd, sec, syms, off, file, func, line))
  35053. +
  35054. +#define bfd_find_line(abfd, syms, sym, file, line) \
  35055. + BFD_SEND (abfd, _bfd_find_line, \
  35056. + (abfd, syms, sym, file, line))
  35057. +
  35058. +#define bfd_find_inliner_info(abfd, file, func, line) \
  35059. + BFD_SEND (abfd, _bfd_find_inliner_info, \
  35060. + (abfd, file, func, line))
  35061. +
  35062. +#define bfd_debug_info_start(abfd) \
  35063. + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
  35064. +
  35065. +#define bfd_debug_info_end(abfd) \
  35066. + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
  35067. +
  35068. +#define bfd_debug_info_accumulate(abfd, section) \
  35069. + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
  35070. +
  35071. +#define bfd_stat_arch_elt(abfd, stat) \
  35072. + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
  35073. +
  35074. +#define bfd_update_armap_timestamp(abfd) \
  35075. + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
  35076. +
  35077. +#define bfd_set_arch_mach(abfd, arch, mach)\
  35078. + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
  35079. +
  35080. +#define bfd_relax_section(abfd, section, link_info, again) \
  35081. + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
  35082. +
  35083. +#define bfd_gc_sections(abfd, link_info) \
  35084. + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
  35085. +
  35086. +#define bfd_merge_sections(abfd, link_info) \
  35087. + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
  35088. +
  35089. +#define bfd_is_group_section(abfd, sec) \
  35090. + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
  35091. +
  35092. +#define bfd_discard_group(abfd, sec) \
  35093. + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
  35094. +
  35095. +#define bfd_link_hash_table_create(abfd) \
  35096. + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
  35097. +
  35098. +#define bfd_link_hash_table_free(abfd, hash) \
  35099. + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
  35100. +
  35101. +#define bfd_link_add_symbols(abfd, info) \
  35102. + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
  35103. +
  35104. +#define bfd_link_just_syms(abfd, sec, info) \
  35105. + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
  35106. +
  35107. +#define bfd_final_link(abfd, info) \
  35108. + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
  35109. +
  35110. +#define bfd_free_cached_info(abfd) \
  35111. + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
  35112. +
  35113. +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
  35114. + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
  35115. +
  35116. +#define bfd_print_private_bfd_data(abfd, file)\
  35117. + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
  35118. +
  35119. +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
  35120. + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
  35121. +
  35122. +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
  35123. + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
  35124. + dyncount, dynsyms, ret))
  35125. +
  35126. +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
  35127. + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
  35128. +
  35129. +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
  35130. + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
  35131. +
  35132. +extern bfd_byte *bfd_get_relocated_section_contents
  35133. + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
  35134. + bfd_boolean, asymbol **);
  35135. +
  35136. +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
  35137. +
  35138. +struct bfd_preserve
  35139. +{
  35140. + void *marker;
  35141. + void *tdata;
  35142. + flagword flags;
  35143. + const struct bfd_arch_info *arch_info;
  35144. + struct bfd_section *sections;
  35145. + struct bfd_section *section_last;
  35146. + unsigned int section_count;
  35147. + struct bfd_hash_table section_htab;
  35148. +};
  35149. +
  35150. +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
  35151. +
  35152. +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
  35153. +
  35154. +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
  35155. +
  35156. +bfd_vma bfd_emul_get_maxpagesize (const char *);
  35157. +
  35158. +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
  35159. +
  35160. +bfd_vma bfd_emul_get_commonpagesize (const char *);
  35161. +
  35162. +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
  35163. +
  35164. +char *bfd_demangle (bfd *, const char *, int);
  35165. +
  35166. +/* Extracted from archive.c. */
  35167. +symindex bfd_get_next_mapent
  35168. + (bfd *abfd, symindex previous, carsym **sym);
  35169. +
  35170. +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
  35171. +
  35172. +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
  35173. +
  35174. +/* Extracted from corefile.c. */
  35175. +const char *bfd_core_file_failing_command (bfd *abfd);
  35176. +
  35177. +int bfd_core_file_failing_signal (bfd *abfd);
  35178. +
  35179. +bfd_boolean core_file_matches_executable_p
  35180. + (bfd *core_bfd, bfd *exec_bfd);
  35181. +
  35182. +bfd_boolean generic_core_file_matches_executable_p
  35183. + (bfd *core_bfd, bfd *exec_bfd);
  35184. +
  35185. +/* Extracted from targets.c. */
  35186. +#define BFD_SEND(bfd, message, arglist) \
  35187. + ((*((bfd)->xvec->message)) arglist)
  35188. +
  35189. +#ifdef DEBUG_BFD_SEND
  35190. +#undef BFD_SEND
  35191. +#define BFD_SEND(bfd, message, arglist) \
  35192. + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
  35193. + ((*((bfd)->xvec->message)) arglist) : \
  35194. + (bfd_assert (__FILE__,__LINE__), NULL))
  35195. +#endif
  35196. +#define BFD_SEND_FMT(bfd, message, arglist) \
  35197. + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
  35198. +
  35199. +#ifdef DEBUG_BFD_SEND
  35200. +#undef BFD_SEND_FMT
  35201. +#define BFD_SEND_FMT(bfd, message, arglist) \
  35202. + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
  35203. + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
  35204. + (bfd_assert (__FILE__,__LINE__), NULL))
  35205. +#endif
  35206. +
  35207. +enum bfd_flavour
  35208. +{
  35209. + bfd_target_unknown_flavour,
  35210. + bfd_target_aout_flavour,
  35211. + bfd_target_coff_flavour,
  35212. + bfd_target_ecoff_flavour,
  35213. + bfd_target_xcoff_flavour,
  35214. + bfd_target_elf_flavour,
  35215. + bfd_target_ieee_flavour,
  35216. + bfd_target_nlm_flavour,
  35217. + bfd_target_oasys_flavour,
  35218. + bfd_target_tekhex_flavour,
  35219. + bfd_target_srec_flavour,
  35220. + bfd_target_ihex_flavour,
  35221. + bfd_target_som_flavour,
  35222. + bfd_target_os9k_flavour,
  35223. + bfd_target_versados_flavour,
  35224. + bfd_target_msdos_flavour,
  35225. + bfd_target_ovax_flavour,
  35226. + bfd_target_evax_flavour,
  35227. + bfd_target_mmo_flavour,
  35228. + bfd_target_mach_o_flavour,
  35229. + bfd_target_pef_flavour,
  35230. + bfd_target_pef_xlib_flavour,
  35231. + bfd_target_sym_flavour
  35232. +};
  35233. +
  35234. +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
  35235. +
  35236. +/* Forward declaration. */
  35237. +typedef struct bfd_link_info _bfd_link_info;
  35238. +
  35239. +typedef struct bfd_target
  35240. +{
  35241. + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
  35242. + char *name;
  35243. +
  35244. + /* The "flavour" of a back end is a general indication about
  35245. + the contents of a file. */
  35246. + enum bfd_flavour flavour;
  35247. +
  35248. + /* The order of bytes within the data area of a file. */
  35249. + enum bfd_endian byteorder;
  35250. +
  35251. + /* The order of bytes within the header parts of a file. */
  35252. + enum bfd_endian header_byteorder;
  35253. +
  35254. + /* A mask of all the flags which an executable may have set -
  35255. + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
  35256. + flagword object_flags;
  35257. +
  35258. + /* A mask of all the flags which a section may have set - from
  35259. + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
  35260. + flagword section_flags;
  35261. +
  35262. + /* The character normally found at the front of a symbol.
  35263. + (if any), perhaps `_'. */
  35264. + char symbol_leading_char;
  35265. +
  35266. + /* The pad character for file names within an archive header. */
  35267. + char ar_pad_char;
  35268. +
  35269. + /* The maximum number of characters in an archive header. */
  35270. + unsigned short ar_max_namelen;
  35271. +
  35272. + /* Entries for byte swapping for data. These are different from the
  35273. + other entry points, since they don't take a BFD as the first argument.
  35274. + Certain other handlers could do the same. */
  35275. + bfd_uint64_t (*bfd_getx64) (const void *);
  35276. + bfd_int64_t (*bfd_getx_signed_64) (const void *);
  35277. + void (*bfd_putx64) (bfd_uint64_t, void *);
  35278. + bfd_vma (*bfd_getx32) (const void *);
  35279. + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
  35280. + void (*bfd_putx32) (bfd_vma, void *);
  35281. + bfd_vma (*bfd_getx16) (const void *);
  35282. + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
  35283. + void (*bfd_putx16) (bfd_vma, void *);
  35284. +
  35285. + /* Byte swapping for the headers. */
  35286. + bfd_uint64_t (*bfd_h_getx64) (const void *);
  35287. + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
  35288. + void (*bfd_h_putx64) (bfd_uint64_t, void *);
  35289. + bfd_vma (*bfd_h_getx32) (const void *);
  35290. + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
  35291. + void (*bfd_h_putx32) (bfd_vma, void *);
  35292. + bfd_vma (*bfd_h_getx16) (const void *);
  35293. + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
  35294. + void (*bfd_h_putx16) (bfd_vma, void *);
  35295. +
  35296. + /* Format dependent routines: these are vectors of entry points
  35297. + within the target vector structure, one for each format to check. */
  35298. +
  35299. + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
  35300. + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
  35301. +
  35302. + /* Set the format of a file being written. */
  35303. + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
  35304. +
  35305. + /* Write cached information into a file being written, at <<bfd_close>>. */
  35306. + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
  35307. +
  35308. +
  35309. + /* Generic entry points. */
  35310. +#define BFD_JUMP_TABLE_GENERIC(NAME) \
  35311. + NAME##_close_and_cleanup, \
  35312. + NAME##_bfd_free_cached_info, \
  35313. + NAME##_new_section_hook, \
  35314. + NAME##_get_section_contents, \
  35315. + NAME##_get_section_contents_in_window
  35316. +
  35317. + /* Called when the BFD is being closed to do any necessary cleanup. */
  35318. + bfd_boolean (*_close_and_cleanup) (bfd *);
  35319. + /* Ask the BFD to free all cached information. */
  35320. + bfd_boolean (*_bfd_free_cached_info) (bfd *);
  35321. + /* Called when a new section is created. */
  35322. + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
  35323. + /* Read the contents of a section. */
  35324. + bfd_boolean (*_bfd_get_section_contents)
  35325. + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
  35326. + bfd_boolean (*_bfd_get_section_contents_in_window)
  35327. + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
  35328. +
  35329. + /* Entry points to copy private data. */
  35330. +#define BFD_JUMP_TABLE_COPY(NAME) \
  35331. + NAME##_bfd_copy_private_bfd_data, \
  35332. + NAME##_bfd_merge_private_bfd_data, \
  35333. + _bfd_generic_init_private_section_data, \
  35334. + NAME##_bfd_copy_private_section_data, \
  35335. + NAME##_bfd_copy_private_symbol_data, \
  35336. + NAME##_bfd_copy_private_header_data, \
  35337. + NAME##_bfd_set_private_flags, \
  35338. + NAME##_bfd_print_private_bfd_data
  35339. +
  35340. + /* Called to copy BFD general private data from one object file
  35341. + to another. */
  35342. + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
  35343. + /* Called to merge BFD general private data from one object file
  35344. + to a common output file when linking. */
  35345. + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
  35346. + /* Called to initialize BFD private section data from one object file
  35347. + to another. */
  35348. +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
  35349. + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
  35350. + bfd_boolean (*_bfd_init_private_section_data)
  35351. + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
  35352. + /* Called to copy BFD private section data from one object file
  35353. + to another. */
  35354. + bfd_boolean (*_bfd_copy_private_section_data)
  35355. + (bfd *, sec_ptr, bfd *, sec_ptr);
  35356. + /* Called to copy BFD private symbol data from one symbol
  35357. + to another. */
  35358. + bfd_boolean (*_bfd_copy_private_symbol_data)
  35359. + (bfd *, asymbol *, bfd *, asymbol *);
  35360. + /* Called to copy BFD private header data from one object file
  35361. + to another. */
  35362. + bfd_boolean (*_bfd_copy_private_header_data)
  35363. + (bfd *, bfd *);
  35364. + /* Called to set private backend flags. */
  35365. + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
  35366. +
  35367. + /* Called to print private BFD data. */
  35368. + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
  35369. +
  35370. + /* Core file entry points. */
  35371. +#define BFD_JUMP_TABLE_CORE(NAME) \
  35372. + NAME##_core_file_failing_command, \
  35373. + NAME##_core_file_failing_signal, \
  35374. + NAME##_core_file_matches_executable_p
  35375. +
  35376. + char * (*_core_file_failing_command) (bfd *);
  35377. + int (*_core_file_failing_signal) (bfd *);
  35378. + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
  35379. +
  35380. + /* Archive entry points. */
  35381. +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
  35382. + NAME##_slurp_armap, \
  35383. + NAME##_slurp_extended_name_table, \
  35384. + NAME##_construct_extended_name_table, \
  35385. + NAME##_truncate_arname, \
  35386. + NAME##_write_armap, \
  35387. + NAME##_read_ar_hdr, \
  35388. + NAME##_openr_next_archived_file, \
  35389. + NAME##_get_elt_at_index, \
  35390. + NAME##_generic_stat_arch_elt, \
  35391. + NAME##_update_armap_timestamp
  35392. +
  35393. + bfd_boolean (*_bfd_slurp_armap) (bfd *);
  35394. + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
  35395. + bfd_boolean (*_bfd_construct_extended_name_table)
  35396. + (bfd *, char **, bfd_size_type *, const char **);
  35397. + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
  35398. + bfd_boolean (*write_armap)
  35399. + (bfd *, unsigned int, struct orl *, unsigned int, int);
  35400. + void * (*_bfd_read_ar_hdr_fn) (bfd *);
  35401. + bfd * (*openr_next_archived_file) (bfd *, bfd *);
  35402. +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
  35403. + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
  35404. + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
  35405. + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
  35406. +
  35407. + /* Entry points used for symbols. */
  35408. +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
  35409. + NAME##_get_symtab_upper_bound, \
  35410. + NAME##_canonicalize_symtab, \
  35411. + NAME##_make_empty_symbol, \
  35412. + NAME##_print_symbol, \
  35413. + NAME##_get_symbol_info, \
  35414. + NAME##_bfd_is_local_label_name, \
  35415. + NAME##_bfd_is_target_special_symbol, \
  35416. + NAME##_get_lineno, \
  35417. + NAME##_find_nearest_line, \
  35418. + _bfd_generic_find_line, \
  35419. + NAME##_find_inliner_info, \
  35420. + NAME##_bfd_make_debug_symbol, \
  35421. + NAME##_read_minisymbols, \
  35422. + NAME##_minisymbol_to_symbol
  35423. +
  35424. + long (*_bfd_get_symtab_upper_bound) (bfd *);
  35425. + long (*_bfd_canonicalize_symtab)
  35426. + (bfd *, struct bfd_symbol **);
  35427. + struct bfd_symbol *
  35428. + (*_bfd_make_empty_symbol) (bfd *);
  35429. + void (*_bfd_print_symbol)
  35430. + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
  35431. +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
  35432. + void (*_bfd_get_symbol_info)
  35433. + (bfd *, struct bfd_symbol *, symbol_info *);
  35434. +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
  35435. + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
  35436. + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
  35437. + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
  35438. + bfd_boolean (*_bfd_find_nearest_line)
  35439. + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
  35440. + const char **, const char **, unsigned int *);
  35441. + bfd_boolean (*_bfd_find_line)
  35442. + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
  35443. + const char **, unsigned int *);
  35444. + bfd_boolean (*_bfd_find_inliner_info)
  35445. + (bfd *, const char **, const char **, unsigned int *);
  35446. + /* Back-door to allow format-aware applications to create debug symbols
  35447. + while using BFD for everything else. Currently used by the assembler
  35448. + when creating COFF files. */
  35449. + asymbol * (*_bfd_make_debug_symbol)
  35450. + (bfd *, void *, unsigned long size);
  35451. +#define bfd_read_minisymbols(b, d, m, s) \
  35452. + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
  35453. + long (*_read_minisymbols)
  35454. + (bfd *, bfd_boolean, void **, unsigned int *);
  35455. +#define bfd_minisymbol_to_symbol(b, d, m, f) \
  35456. + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
  35457. + asymbol * (*_minisymbol_to_symbol)
  35458. + (bfd *, bfd_boolean, const void *, asymbol *);
  35459. +
  35460. + /* Routines for relocs. */
  35461. +#define BFD_JUMP_TABLE_RELOCS(NAME) \
  35462. + NAME##_get_reloc_upper_bound, \
  35463. + NAME##_canonicalize_reloc, \
  35464. + NAME##_bfd_reloc_type_lookup, \
  35465. + NAME##_bfd_reloc_name_lookup
  35466. +
  35467. + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
  35468. + long (*_bfd_canonicalize_reloc)
  35469. + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
  35470. + /* See documentation on reloc types. */
  35471. + reloc_howto_type *
  35472. + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
  35473. + reloc_howto_type *
  35474. + (*reloc_name_lookup) (bfd *, const char *);
  35475. +
  35476. +
  35477. + /* Routines used when writing an object file. */
  35478. +#define BFD_JUMP_TABLE_WRITE(NAME) \
  35479. + NAME##_set_arch_mach, \
  35480. + NAME##_set_section_contents
  35481. +
  35482. + bfd_boolean (*_bfd_set_arch_mach)
  35483. + (bfd *, enum bfd_architecture, unsigned long);
  35484. + bfd_boolean (*_bfd_set_section_contents)
  35485. + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
  35486. +
  35487. + /* Routines used by the linker. */
  35488. +#define BFD_JUMP_TABLE_LINK(NAME) \
  35489. + NAME##_sizeof_headers, \
  35490. + NAME##_bfd_get_relocated_section_contents, \
  35491. + NAME##_bfd_relax_section, \
  35492. + NAME##_bfd_link_hash_table_create, \
  35493. + NAME##_bfd_link_hash_table_free, \
  35494. + NAME##_bfd_link_add_symbols, \
  35495. + NAME##_bfd_link_just_syms, \
  35496. + NAME##_bfd_final_link, \
  35497. + NAME##_bfd_link_split_section, \
  35498. + NAME##_bfd_gc_sections, \
  35499. + NAME##_bfd_merge_sections, \
  35500. + NAME##_bfd_is_group_section, \
  35501. + NAME##_bfd_discard_group, \
  35502. + NAME##_section_already_linked \
  35503. +
  35504. + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
  35505. + bfd_byte * (*_bfd_get_relocated_section_contents)
  35506. + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
  35507. + bfd_byte *, bfd_boolean, struct bfd_symbol **);
  35508. +
  35509. + bfd_boolean (*_bfd_relax_section)
  35510. + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
  35511. +
  35512. + /* Create a hash table for the linker. Different backends store
  35513. + different information in this table. */
  35514. + struct bfd_link_hash_table *
  35515. + (*_bfd_link_hash_table_create) (bfd *);
  35516. +
  35517. + /* Release the memory associated with the linker hash table. */
  35518. + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
  35519. +
  35520. + /* Add symbols from this object file into the hash table. */
  35521. + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
  35522. +
  35523. + /* Indicate that we are only retrieving symbol values from this section. */
  35524. + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
  35525. +
  35526. + /* Do a link based on the link_order structures attached to each
  35527. + section of the BFD. */
  35528. + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
  35529. +
  35530. + /* Should this section be split up into smaller pieces during linking. */
  35531. + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
  35532. +
  35533. + /* Remove sections that are not referenced from the output. */
  35534. + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
  35535. +
  35536. + /* Attempt to merge SEC_MERGE sections. */
  35537. + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
  35538. +
  35539. + /* Is this section a member of a group? */
  35540. + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
  35541. +
  35542. + /* Discard members of a group. */
  35543. + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
  35544. +
  35545. + /* Check if SEC has been already linked during a reloceatable or
  35546. + final link. */
  35547. + void (*_section_already_linked) (bfd *, struct bfd_section *,
  35548. + struct bfd_link_info *);
  35549. +
  35550. + /* Routines to handle dynamic symbols and relocs. */
  35551. +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
  35552. + NAME##_get_dynamic_symtab_upper_bound, \
  35553. + NAME##_canonicalize_dynamic_symtab, \
  35554. + NAME##_get_synthetic_symtab, \
  35555. + NAME##_get_dynamic_reloc_upper_bound, \
  35556. + NAME##_canonicalize_dynamic_reloc
  35557. +
  35558. + /* Get the amount of memory required to hold the dynamic symbols. */
  35559. + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
  35560. + /* Read in the dynamic symbols. */
  35561. + long (*_bfd_canonicalize_dynamic_symtab)
  35562. + (bfd *, struct bfd_symbol **);
  35563. + /* Create synthetized symbols. */
  35564. + long (*_bfd_get_synthetic_symtab)
  35565. + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
  35566. + struct bfd_symbol **);
  35567. + /* Get the amount of memory required to hold the dynamic relocs. */
  35568. + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
  35569. + /* Read in the dynamic relocs. */
  35570. + long (*_bfd_canonicalize_dynamic_reloc)
  35571. + (bfd *, arelent **, struct bfd_symbol **);
  35572. +
  35573. + /* Opposite endian version of this target. */
  35574. + const struct bfd_target * alternative_target;
  35575. +
  35576. + /* Data for use by back-end routines, which isn't
  35577. + generic enough to belong in this structure. */
  35578. + const void *backend_data;
  35579. +
  35580. +} bfd_target;
  35581. +
  35582. +bfd_boolean bfd_set_default_target (const char *name);
  35583. +
  35584. +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
  35585. +
  35586. +const char ** bfd_target_list (void);
  35587. +
  35588. +const bfd_target *bfd_search_for_target
  35589. + (int (*search_func) (const bfd_target *, void *),
  35590. + void *);
  35591. +
  35592. +/* Extracted from format.c. */
  35593. +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
  35594. +
  35595. +bfd_boolean bfd_check_format_matches
  35596. + (bfd *abfd, bfd_format format, char ***matching);
  35597. +
  35598. +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
  35599. +
  35600. +const char *bfd_format_string (bfd_format format);
  35601. +
  35602. +/* Extracted from linker.c. */
  35603. +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
  35604. +
  35605. +#define bfd_link_split_section(abfd, sec) \
  35606. + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
  35607. +
  35608. +void bfd_section_already_linked (bfd *abfd, asection *sec,
  35609. + struct bfd_link_info *info);
  35610. +
  35611. +#define bfd_section_already_linked(abfd, sec, info) \
  35612. + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
  35613. +
  35614. +/* Extracted from simple.c. */
  35615. +bfd_byte *bfd_simple_get_relocated_section_contents
  35616. + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
  35617. +
  35618. +#ifdef __cplusplus
  35619. +}
  35620. +#endif
  35621. +#endif
  35622. --- /dev/null
  35623. +++ b/bfd/bfd_stdint.h
  35624. @@ -0,0 +1,47 @@
  35625. +/* generated for gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
  35626. +
  35627. +#ifndef GCC_GENERATED_STDINT_H
  35628. +#define GCC_GENERATED_STDINT_H 1
  35629. +
  35630. +#include <sys/types.h>
  35631. +#include <stdint.h>
  35632. +/* glibc uses these symbols as guards to prevent redefinitions. */
  35633. +#ifdef __int8_t_defined
  35634. +#define _INT8_T
  35635. +#define _INT16_T
  35636. +#define _INT32_T
  35637. +#endif
  35638. +#ifdef __uint32_t_defined
  35639. +#define _UINT32_T
  35640. +#endif
  35641. +
  35642. +
  35643. +/* Some systems have guard macros to prevent redefinitions, define them. */
  35644. +#ifndef _INT8_T
  35645. +#define _INT8_T
  35646. +#endif
  35647. +#ifndef _INT16_T
  35648. +#define _INT16_T
  35649. +#endif
  35650. +#ifndef _INT32_T
  35651. +#define _INT32_T
  35652. +#endif
  35653. +#ifndef _UINT8_T
  35654. +#define _UINT8_T
  35655. +#endif
  35656. +#ifndef _UINT16_T
  35657. +#define _UINT16_T
  35658. +#endif
  35659. +#ifndef _UINT32_T
  35660. +#define _UINT32_T
  35661. +#endif
  35662. +
  35663. +/* system headers have good uint64_t and int64_t */
  35664. +#ifndef _INT64_T
  35665. +#define _INT64_T
  35666. +#endif
  35667. +#ifndef _UINT64_T
  35668. +#define _UINT64_T
  35669. +#endif
  35670. +
  35671. +#endif /* GCC_GENERATED_STDINT_H */
  35672. --- a/bfd/configure
  35673. +++ b/bfd/configure
  35674. @@ -19041,6 +19041,7 @@ do
  35675. bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
  35676. bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
  35677. bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
  35678. + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
  35679. bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
  35680. bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
  35681. bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
  35682. --- /dev/null
  35683. +++ b/bfd/doc/bfd.h
  35684. @@ -0,0 +1,5493 @@
  35685. +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
  35686. + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
  35687. + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
  35688. + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
  35689. + "linker.c" and "simple.c".
  35690. + Run "make headers" in your build bfd/ to regenerate. */
  35691. +
  35692. +/* Main header file for the bfd library -- portable access to object files.
  35693. +
  35694. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
  35695. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
  35696. + Free Software Foundation, Inc.
  35697. +
  35698. + Contributed by Cygnus Support.
  35699. +
  35700. + This file is part of BFD, the Binary File Descriptor library.
  35701. +
  35702. + This program is free software; you can redistribute it and/or modify
  35703. + it under the terms of the GNU General Public License as published by
  35704. + the Free Software Foundation; either version 3 of the License, or
  35705. + (at your option) any later version.
  35706. +
  35707. + This program is distributed in the hope that it will be useful,
  35708. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  35709. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  35710. + GNU General Public License for more details.
  35711. +
  35712. + You should have received a copy of the GNU General Public License
  35713. + along with this program; if not, write to the Free Software
  35714. + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
  35715. +
  35716. +#ifndef __BFD_H_SEEN__
  35717. +#define __BFD_H_SEEN__
  35718. +
  35719. +#ifdef __cplusplus
  35720. +extern "C" {
  35721. +#endif
  35722. +
  35723. +#include "ansidecl.h"
  35724. +#include "symcat.h"
  35725. +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
  35726. +#ifndef SABER
  35727. +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
  35728. + The problem is, "32_" is not a valid preprocessing token, and we don't
  35729. + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
  35730. + cause the inner CONCAT2 macros to be evaluated first, producing
  35731. + still-valid pp-tokens. Then the final concatenation can be done. */
  35732. +#undef CONCAT4
  35733. +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
  35734. +#endif
  35735. +#endif
  35736. +
  35737. +/* This is a utility macro to handle the situation where the code
  35738. + wants to place a constant string into the code, followed by a
  35739. + comma and then the length of the string. Doing this by hand
  35740. + is error prone, so using this macro is safer. The macro will
  35741. + also safely handle the case where a NULL is passed as the arg. */
  35742. +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
  35743. +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
  35744. + to create the arguments to another macro, since the preprocessor
  35745. + will mis-count the number of arguments to the outer macro (by not
  35746. + evaluating STRING_COMMA_LEN and so missing the comma). This is a
  35747. + problem for example when trying to use STRING_COMMA_LEN to build
  35748. + the arguments to the strncmp() macro. Hence this alternative
  35749. + definition of strncmp is provided here.
  35750. +
  35751. + Note - these macros do NOT work if STR2 is not a constant string. */
  35752. +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
  35753. + /* strcpy() can have a similar problem, but since we know we are
  35754. + copying a constant string, we can use memcpy which will be faster
  35755. + since there is no need to check for a NUL byte inside STR. We
  35756. + can also save time if we do not need to copy the terminating NUL. */
  35757. +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
  35758. +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
  35759. +
  35760. +
  35761. +/* The word size used by BFD on the host. This may be 64 with a 32
  35762. + bit target if the host is 64 bit, or if other 64 bit targets have
  35763. + been selected with --enable-targets, or if --enable-64-bit-bfd. */
  35764. +#define BFD_ARCH_SIZE @wordsize@
  35765. +
  35766. +/* The word size of the default bfd target. */
  35767. +#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
  35768. +
  35769. +#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
  35770. +#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
  35771. +#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
  35772. +#if @BFD_HOST_64_BIT_DEFINED@
  35773. +#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
  35774. +#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
  35775. +typedef BFD_HOST_64_BIT bfd_int64_t;
  35776. +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
  35777. +#endif
  35778. +
  35779. +#if BFD_ARCH_SIZE >= 64
  35780. +#define BFD64
  35781. +#endif
  35782. +
  35783. +#ifndef INLINE
  35784. +#if __GNUC__ >= 2
  35785. +#define INLINE __inline__
  35786. +#else
  35787. +#define INLINE
  35788. +#endif
  35789. +#endif
  35790. +
  35791. +/* Declaring a type wide enough to hold a host long and a host pointer. */
  35792. +#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
  35793. +typedef BFD_HOSTPTR_T bfd_hostptr_t;
  35794. +
  35795. +/* Forward declaration. */
  35796. +typedef struct bfd bfd;
  35797. +
  35798. +/* Boolean type used in bfd. Too many systems define their own
  35799. + versions of "boolean" for us to safely typedef a "boolean" of
  35800. + our own. Using an enum for "bfd_boolean" has its own set of
  35801. + problems, with strange looking casts required to avoid warnings
  35802. + on some older compilers. Thus we just use an int.
  35803. +
  35804. + General rule: Functions which are bfd_boolean return TRUE on
  35805. + success and FALSE on failure (unless they're a predicate). */
  35806. +
  35807. +typedef int bfd_boolean;
  35808. +#undef FALSE
  35809. +#undef TRUE
  35810. +#define FALSE 0
  35811. +#define TRUE 1
  35812. +
  35813. +#ifdef BFD64
  35814. +
  35815. +#ifndef BFD_HOST_64_BIT
  35816. + #error No 64 bit integer type available
  35817. +#endif /* ! defined (BFD_HOST_64_BIT) */
  35818. +
  35819. +typedef BFD_HOST_U_64_BIT bfd_vma;
  35820. +typedef BFD_HOST_64_BIT bfd_signed_vma;
  35821. +typedef BFD_HOST_U_64_BIT bfd_size_type;
  35822. +typedef BFD_HOST_U_64_BIT symvalue;
  35823. +
  35824. +#ifndef fprintf_vma
  35825. +#if BFD_HOST_64BIT_LONG
  35826. +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
  35827. +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
  35828. +#elif BFD_HOST_64BIT_LONG_LONG
  35829. +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
  35830. +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
  35831. +#else
  35832. +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
  35833. +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
  35834. +#define fprintf_vma(s,x) \
  35835. + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
  35836. +#define sprintf_vma(s,x) \
  35837. + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
  35838. +#endif
  35839. +#endif
  35840. +
  35841. +#else /* not BFD64 */
  35842. +
  35843. +/* Represent a target address. Also used as a generic unsigned type
  35844. + which is guaranteed to be big enough to hold any arithmetic types
  35845. + we need to deal with. */
  35846. +typedef unsigned long bfd_vma;
  35847. +
  35848. +/* A generic signed type which is guaranteed to be big enough to hold any
  35849. + arithmetic types we need to deal with. Can be assumed to be compatible
  35850. + with bfd_vma in the same way that signed and unsigned ints are compatible
  35851. + (as parameters, in assignment, etc). */
  35852. +typedef long bfd_signed_vma;
  35853. +
  35854. +typedef unsigned long symvalue;
  35855. +typedef unsigned long bfd_size_type;
  35856. +
  35857. +/* Print a bfd_vma x on stream s. */
  35858. +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
  35859. +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
  35860. +
  35861. +#endif /* not BFD64 */
  35862. +
  35863. +#define HALF_BFD_SIZE_TYPE \
  35864. + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
  35865. +
  35866. +#ifndef BFD_HOST_64_BIT
  35867. +/* Fall back on a 32 bit type. The idea is to make these types always
  35868. + available for function return types, but in the case that
  35869. + BFD_HOST_64_BIT is undefined such a function should abort or
  35870. + otherwise signal an error. */
  35871. +typedef bfd_signed_vma bfd_int64_t;
  35872. +typedef bfd_vma bfd_uint64_t;
  35873. +#endif
  35874. +
  35875. +/* An offset into a file. BFD always uses the largest possible offset
  35876. + based on the build time availability of fseek, fseeko, or fseeko64. */
  35877. +typedef @bfd_file_ptr@ file_ptr;
  35878. +typedef unsigned @bfd_file_ptr@ ufile_ptr;
  35879. +
  35880. +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
  35881. +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
  35882. +
  35883. +#define printf_vma(x) fprintf_vma(stdout,x)
  35884. +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
  35885. +
  35886. +typedef unsigned int flagword; /* 32 bits of flags */
  35887. +typedef unsigned char bfd_byte;
  35888. +
  35889. +/* File formats. */
  35890. +
  35891. +typedef enum bfd_format
  35892. +{
  35893. + bfd_unknown = 0, /* File format is unknown. */
  35894. + bfd_object, /* Linker/assembler/compiler output. */
  35895. + bfd_archive, /* Object archive file. */
  35896. + bfd_core, /* Core dump. */
  35897. + bfd_type_end /* Marks the end; don't use it! */
  35898. +}
  35899. +bfd_format;
  35900. +
  35901. +/* Values that may appear in the flags field of a BFD. These also
  35902. + appear in the object_flags field of the bfd_target structure, where
  35903. + they indicate the set of flags used by that backend (not all flags
  35904. + are meaningful for all object file formats) (FIXME: at the moment,
  35905. + the object_flags values have mostly just been copied from backend
  35906. + to another, and are not necessarily correct). */
  35907. +
  35908. +/* No flags. */
  35909. +#define BFD_NO_FLAGS 0x00
  35910. +
  35911. +/* BFD contains relocation entries. */
  35912. +#define HAS_RELOC 0x01
  35913. +
  35914. +/* BFD is directly executable. */
  35915. +#define EXEC_P 0x02
  35916. +
  35917. +/* BFD has line number information (basically used for F_LNNO in a
  35918. + COFF header). */
  35919. +#define HAS_LINENO 0x04
  35920. +
  35921. +/* BFD has debugging information. */
  35922. +#define HAS_DEBUG 0x08
  35923. +
  35924. +/* BFD has symbols. */
  35925. +#define HAS_SYMS 0x10
  35926. +
  35927. +/* BFD has local symbols (basically used for F_LSYMS in a COFF
  35928. + header). */
  35929. +#define HAS_LOCALS 0x20
  35930. +
  35931. +/* BFD is a dynamic object. */
  35932. +#define DYNAMIC 0x40
  35933. +
  35934. +/* Text section is write protected (if D_PAGED is not set, this is
  35935. + like an a.out NMAGIC file) (the linker sets this by default, but
  35936. + clears it for -r or -N). */
  35937. +#define WP_TEXT 0x80
  35938. +
  35939. +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
  35940. + linker sets this by default, but clears it for -r or -n or -N). */
  35941. +#define D_PAGED 0x100
  35942. +
  35943. +/* BFD is relaxable (this means that bfd_relax_section may be able to
  35944. + do something) (sometimes bfd_relax_section can do something even if
  35945. + this is not set). */
  35946. +#define BFD_IS_RELAXABLE 0x200
  35947. +
  35948. +/* This may be set before writing out a BFD to request using a
  35949. + traditional format. For example, this is used to request that when
  35950. + writing out an a.out object the symbols not be hashed to eliminate
  35951. + duplicates. */
  35952. +#define BFD_TRADITIONAL_FORMAT 0x400
  35953. +
  35954. +/* This flag indicates that the BFD contents are actually cached in
  35955. + memory. If this is set, iostream points to a bfd_in_memory struct. */
  35956. +#define BFD_IN_MEMORY 0x800
  35957. +
  35958. +/* The sections in this BFD specify a memory page. */
  35959. +#define HAS_LOAD_PAGE 0x1000
  35960. +
  35961. +/* This BFD has been created by the linker and doesn't correspond
  35962. + to any input file. */
  35963. +#define BFD_LINKER_CREATED 0x2000
  35964. +
  35965. +/* Symbols and relocation. */
  35966. +
  35967. +/* A count of carsyms (canonical archive symbols). */
  35968. +typedef unsigned long symindex;
  35969. +
  35970. +/* How to perform a relocation. */
  35971. +typedef const struct reloc_howto_struct reloc_howto_type;
  35972. +
  35973. +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
  35974. +
  35975. +/* General purpose part of a symbol X;
  35976. + target specific parts are in libcoff.h, libaout.h, etc. */
  35977. +
  35978. +#define bfd_get_section(x) ((x)->section)
  35979. +#define bfd_get_output_section(x) ((x)->section->output_section)
  35980. +#define bfd_set_section(x,y) ((x)->section) = (y)
  35981. +#define bfd_asymbol_base(x) ((x)->section->vma)
  35982. +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
  35983. +#define bfd_asymbol_name(x) ((x)->name)
  35984. +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
  35985. +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
  35986. +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
  35987. +
  35988. +/* A canonical archive symbol. */
  35989. +/* This is a type pun with struct ranlib on purpose! */
  35990. +typedef struct carsym
  35991. +{
  35992. + char *name;
  35993. + file_ptr file_offset; /* Look here to find the file. */
  35994. +}
  35995. +carsym; /* To make these you call a carsymogen. */
  35996. +
  35997. +/* Used in generating armaps (archive tables of contents).
  35998. + Perhaps just a forward definition would do? */
  35999. +struct orl /* Output ranlib. */
  36000. +{
  36001. + char **name; /* Symbol name. */
  36002. + union
  36003. + {
  36004. + file_ptr pos;
  36005. + bfd *abfd;
  36006. + } u; /* bfd* or file position. */
  36007. + int namidx; /* Index into string table. */
  36008. +};
  36009. +
  36010. +/* Linenumber stuff. */
  36011. +typedef struct lineno_cache_entry
  36012. +{
  36013. + unsigned int line_number; /* Linenumber from start of function. */
  36014. + union
  36015. + {
  36016. + struct bfd_symbol *sym; /* Function name. */
  36017. + bfd_vma offset; /* Offset into section. */
  36018. + } u;
  36019. +}
  36020. +alent;
  36021. +
  36022. +/* Object and core file sections. */
  36023. +
  36024. +#define align_power(addr, align) \
  36025. + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
  36026. +
  36027. +typedef struct bfd_section *sec_ptr;
  36028. +
  36029. +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
  36030. +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
  36031. +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
  36032. +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
  36033. +#define bfd_section_name(bfd, ptr) ((ptr)->name)
  36034. +#define bfd_section_size(bfd, ptr) ((ptr)->size)
  36035. +#define bfd_get_section_size(ptr) ((ptr)->size)
  36036. +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
  36037. +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
  36038. +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
  36039. +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
  36040. +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
  36041. +
  36042. +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
  36043. +
  36044. +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
  36045. +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
  36046. +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
  36047. +/* Find the address one past the end of SEC. */
  36048. +#define bfd_get_section_limit(bfd, sec) \
  36049. + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
  36050. + / bfd_octets_per_byte (bfd))
  36051. +
  36052. +/* Return TRUE if section has been discarded. */
  36053. +#define elf_discarded_section(sec) \
  36054. + (!bfd_is_abs_section (sec) \
  36055. + && bfd_is_abs_section ((sec)->output_section) \
  36056. + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
  36057. + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
  36058. +
  36059. +/* Forward define. */
  36060. +struct stat;
  36061. +
  36062. +typedef enum bfd_print_symbol
  36063. +{
  36064. + bfd_print_symbol_name,
  36065. + bfd_print_symbol_more,
  36066. + bfd_print_symbol_all
  36067. +} bfd_print_symbol_type;
  36068. +
  36069. +/* Information about a symbol that nm needs. */
  36070. +
  36071. +typedef struct _symbol_info
  36072. +{
  36073. + symvalue value;
  36074. + char type;
  36075. + const char *name; /* Symbol name. */
  36076. + unsigned char stab_type; /* Stab type. */
  36077. + char stab_other; /* Stab other. */
  36078. + short stab_desc; /* Stab desc. */
  36079. + const char *stab_name; /* String for stab type. */
  36080. +} symbol_info;
  36081. +
  36082. +/* Get the name of a stabs type code. */
  36083. +
  36084. +extern const char *bfd_get_stab_name (int);
  36085. +
  36086. +/* Hash table routines. There is no way to free up a hash table. */
  36087. +
  36088. +/* An element in the hash table. Most uses will actually use a larger
  36089. + structure, and an instance of this will be the first field. */
  36090. +
  36091. +struct bfd_hash_entry
  36092. +{
  36093. + /* Next entry for this hash code. */
  36094. + struct bfd_hash_entry *next;
  36095. + /* String being hashed. */
  36096. + const char *string;
  36097. + /* Hash code. This is the full hash code, not the index into the
  36098. + table. */
  36099. + unsigned long hash;
  36100. +};
  36101. +
  36102. +/* A hash table. */
  36103. +
  36104. +struct bfd_hash_table
  36105. +{
  36106. + /* The hash array. */
  36107. + struct bfd_hash_entry **table;
  36108. + /* A function used to create new elements in the hash table. The
  36109. + first entry is itself a pointer to an element. When this
  36110. + function is first invoked, this pointer will be NULL. However,
  36111. + having the pointer permits a hierarchy of method functions to be
  36112. + built each of which calls the function in the superclass. Thus
  36113. + each function should be written to allocate a new block of memory
  36114. + only if the argument is NULL. */
  36115. + struct bfd_hash_entry *(*newfunc)
  36116. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  36117. + /* An objalloc for this hash table. This is a struct objalloc *,
  36118. + but we use void * to avoid requiring the inclusion of objalloc.h. */
  36119. + void *memory;
  36120. + /* The number of slots in the hash table. */
  36121. + unsigned int size;
  36122. + /* The number of entries in the hash table. */
  36123. + unsigned int count;
  36124. + /* The size of elements. */
  36125. + unsigned int entsize;
  36126. + /* If non-zero, don't grow the hash table. */
  36127. + unsigned int frozen:1;
  36128. +};
  36129. +
  36130. +/* Initialize a hash table. */
  36131. +extern bfd_boolean bfd_hash_table_init
  36132. + (struct bfd_hash_table *,
  36133. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  36134. + struct bfd_hash_table *,
  36135. + const char *),
  36136. + unsigned int);
  36137. +
  36138. +/* Initialize a hash table specifying a size. */
  36139. +extern bfd_boolean bfd_hash_table_init_n
  36140. + (struct bfd_hash_table *,
  36141. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  36142. + struct bfd_hash_table *,
  36143. + const char *),
  36144. + unsigned int, unsigned int);
  36145. +
  36146. +/* Free up a hash table. */
  36147. +extern void bfd_hash_table_free
  36148. + (struct bfd_hash_table *);
  36149. +
  36150. +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
  36151. + will be created for this string if one does not already exist. The
  36152. + COPY argument must be TRUE if this routine should copy the string
  36153. + into newly allocated memory when adding an entry. */
  36154. +extern struct bfd_hash_entry *bfd_hash_lookup
  36155. + (struct bfd_hash_table *, const char *, bfd_boolean create,
  36156. + bfd_boolean copy);
  36157. +
  36158. +/* Replace an entry in a hash table. */
  36159. +extern void bfd_hash_replace
  36160. + (struct bfd_hash_table *, struct bfd_hash_entry *old,
  36161. + struct bfd_hash_entry *nw);
  36162. +
  36163. +/* Base method for creating a hash table entry. */
  36164. +extern struct bfd_hash_entry *bfd_hash_newfunc
  36165. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  36166. +
  36167. +/* Grab some space for a hash table entry. */
  36168. +extern void *bfd_hash_allocate
  36169. + (struct bfd_hash_table *, unsigned int);
  36170. +
  36171. +/* Traverse a hash table in a random order, calling a function on each
  36172. + element. If the function returns FALSE, the traversal stops. The
  36173. + INFO argument is passed to the function. */
  36174. +extern void bfd_hash_traverse
  36175. + (struct bfd_hash_table *,
  36176. + bfd_boolean (*) (struct bfd_hash_entry *, void *),
  36177. + void *info);
  36178. +
  36179. +/* Allows the default size of a hash table to be configured. New hash
  36180. + tables allocated using bfd_hash_table_init will be created with
  36181. + this size. */
  36182. +extern void bfd_hash_set_default_size (bfd_size_type);
  36183. +
  36184. +/* This structure is used to keep track of stabs in sections
  36185. + information while linking. */
  36186. +
  36187. +struct stab_info
  36188. +{
  36189. + /* A hash table used to hold stabs strings. */
  36190. + struct bfd_strtab_hash *strings;
  36191. + /* The header file hash table. */
  36192. + struct bfd_hash_table includes;
  36193. + /* The first .stabstr section. */
  36194. + struct bfd_section *stabstr;
  36195. +};
  36196. +
  36197. +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
  36198. +
  36199. +/* User program access to BFD facilities. */
  36200. +
  36201. +/* Direct I/O routines, for programs which know more about the object
  36202. + file than BFD does. Use higher level routines if possible. */
  36203. +
  36204. +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
  36205. +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
  36206. +extern int bfd_seek (bfd *, file_ptr, int);
  36207. +extern file_ptr bfd_tell (bfd *);
  36208. +extern int bfd_flush (bfd *);
  36209. +extern int bfd_stat (bfd *, struct stat *);
  36210. +
  36211. +/* Deprecated old routines. */
  36212. +#if __GNUC__
  36213. +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
  36214. + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
  36215. + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  36216. +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
  36217. + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
  36218. + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  36219. +#else
  36220. +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
  36221. + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
  36222. + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  36223. +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
  36224. + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
  36225. + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
  36226. +#endif
  36227. +extern void warn_deprecated (const char *, const char *, int, const char *);
  36228. +
  36229. +/* Cast from const char * to char * so that caller can assign to
  36230. + a char * without a warning. */
  36231. +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
  36232. +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
  36233. +#define bfd_get_format(abfd) ((abfd)->format)
  36234. +#define bfd_get_target(abfd) ((abfd)->xvec->name)
  36235. +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
  36236. +#define bfd_family_coff(abfd) \
  36237. + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
  36238. + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
  36239. +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
  36240. +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
  36241. +#define bfd_header_big_endian(abfd) \
  36242. + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
  36243. +#define bfd_header_little_endian(abfd) \
  36244. + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
  36245. +#define bfd_get_file_flags(abfd) ((abfd)->flags)
  36246. +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
  36247. +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
  36248. +#define bfd_my_archive(abfd) ((abfd)->my_archive)
  36249. +#define bfd_has_map(abfd) ((abfd)->has_armap)
  36250. +
  36251. +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
  36252. +#define bfd_usrdata(abfd) ((abfd)->usrdata)
  36253. +
  36254. +#define bfd_get_start_address(abfd) ((abfd)->start_address)
  36255. +#define bfd_get_symcount(abfd) ((abfd)->symcount)
  36256. +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
  36257. +#define bfd_count_sections(abfd) ((abfd)->section_count)
  36258. +
  36259. +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
  36260. +
  36261. +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
  36262. +
  36263. +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
  36264. +
  36265. +extern bfd_boolean bfd_cache_close
  36266. + (bfd *abfd);
  36267. +/* NB: This declaration should match the autogenerated one in libbfd.h. */
  36268. +
  36269. +extern bfd_boolean bfd_cache_close_all (void);
  36270. +
  36271. +extern bfd_boolean bfd_record_phdr
  36272. + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
  36273. + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
  36274. +
  36275. +/* Byte swapping routines. */
  36276. +
  36277. +bfd_uint64_t bfd_getb64 (const void *);
  36278. +bfd_uint64_t bfd_getl64 (const void *);
  36279. +bfd_int64_t bfd_getb_signed_64 (const void *);
  36280. +bfd_int64_t bfd_getl_signed_64 (const void *);
  36281. +bfd_vma bfd_getb32 (const void *);
  36282. +bfd_vma bfd_getl32 (const void *);
  36283. +bfd_signed_vma bfd_getb_signed_32 (const void *);
  36284. +bfd_signed_vma bfd_getl_signed_32 (const void *);
  36285. +bfd_vma bfd_getb16 (const void *);
  36286. +bfd_vma bfd_getl16 (const void *);
  36287. +bfd_signed_vma bfd_getb_signed_16 (const void *);
  36288. +bfd_signed_vma bfd_getl_signed_16 (const void *);
  36289. +void bfd_putb64 (bfd_uint64_t, void *);
  36290. +void bfd_putl64 (bfd_uint64_t, void *);
  36291. +void bfd_putb32 (bfd_vma, void *);
  36292. +void bfd_putl32 (bfd_vma, void *);
  36293. +void bfd_putb16 (bfd_vma, void *);
  36294. +void bfd_putl16 (bfd_vma, void *);
  36295. +
  36296. +/* Byte swapping routines which take size and endiannes as arguments. */
  36297. +
  36298. +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
  36299. +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
  36300. +
  36301. +extern bfd_boolean bfd_section_already_linked_table_init (void);
  36302. +extern void bfd_section_already_linked_table_free (void);
  36303. +
  36304. +/* Externally visible ECOFF routines. */
  36305. +
  36306. +#if defined(__STDC__) || defined(ALMOST_STDC)
  36307. +struct ecoff_debug_info;
  36308. +struct ecoff_debug_swap;
  36309. +struct ecoff_extr;
  36310. +struct bfd_symbol;
  36311. +struct bfd_link_info;
  36312. +struct bfd_link_hash_entry;
  36313. +struct bfd_elf_version_tree;
  36314. +#endif
  36315. +extern bfd_vma bfd_ecoff_get_gp_value
  36316. + (bfd * abfd);
  36317. +extern bfd_boolean bfd_ecoff_set_gp_value
  36318. + (bfd *abfd, bfd_vma gp_value);
  36319. +extern bfd_boolean bfd_ecoff_set_regmasks
  36320. + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
  36321. + unsigned long *cprmask);
  36322. +extern void *bfd_ecoff_debug_init
  36323. + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
  36324. + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
  36325. +extern void bfd_ecoff_debug_free
  36326. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  36327. + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
  36328. +extern bfd_boolean bfd_ecoff_debug_accumulate
  36329. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  36330. + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
  36331. + struct ecoff_debug_info *input_debug,
  36332. + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
  36333. +extern bfd_boolean bfd_ecoff_debug_accumulate_other
  36334. + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
  36335. + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
  36336. + struct bfd_link_info *);
  36337. +extern bfd_boolean bfd_ecoff_debug_externals
  36338. + (bfd *abfd, struct ecoff_debug_info *debug,
  36339. + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
  36340. + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
  36341. + void (*set_index) (struct bfd_symbol *, bfd_size_type));
  36342. +extern bfd_boolean bfd_ecoff_debug_one_external
  36343. + (bfd *abfd, struct ecoff_debug_info *debug,
  36344. + const struct ecoff_debug_swap *swap, const char *name,
  36345. + struct ecoff_extr *esym);
  36346. +extern bfd_size_type bfd_ecoff_debug_size
  36347. + (bfd *abfd, struct ecoff_debug_info *debug,
  36348. + const struct ecoff_debug_swap *swap);
  36349. +extern bfd_boolean bfd_ecoff_write_debug
  36350. + (bfd *abfd, struct ecoff_debug_info *debug,
  36351. + const struct ecoff_debug_swap *swap, file_ptr where);
  36352. +extern bfd_boolean bfd_ecoff_write_accumulated_debug
  36353. + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
  36354. + const struct ecoff_debug_swap *swap,
  36355. + struct bfd_link_info *info, file_ptr where);
  36356. +
  36357. +/* Externally visible ELF routines. */
  36358. +
  36359. +struct bfd_link_needed_list
  36360. +{
  36361. + struct bfd_link_needed_list *next;
  36362. + bfd *by;
  36363. + const char *name;
  36364. +};
  36365. +
  36366. +enum dynamic_lib_link_class {
  36367. + DYN_NORMAL = 0,
  36368. + DYN_AS_NEEDED = 1,
  36369. + DYN_DT_NEEDED = 2,
  36370. + DYN_NO_ADD_NEEDED = 4,
  36371. + DYN_NO_NEEDED = 8
  36372. +};
  36373. +
  36374. +enum notice_asneeded_action {
  36375. + notice_as_needed,
  36376. + notice_not_needed,
  36377. + notice_needed
  36378. +};
  36379. +
  36380. +extern bfd_boolean bfd_elf_record_link_assignment
  36381. + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
  36382. + bfd_boolean);
  36383. +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
  36384. + (bfd *, struct bfd_link_info *);
  36385. +extern bfd_boolean bfd_elf_get_bfd_needed_list
  36386. + (bfd *, struct bfd_link_needed_list **);
  36387. +extern bfd_boolean bfd_elf_size_dynamic_sections
  36388. + (bfd *, const char *, const char *, const char *, const char * const *,
  36389. + struct bfd_link_info *, struct bfd_section **,
  36390. + struct bfd_elf_version_tree *);
  36391. +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
  36392. + (bfd *, struct bfd_link_info *);
  36393. +extern void bfd_elf_set_dt_needed_name
  36394. + (bfd *, const char *);
  36395. +extern const char *bfd_elf_get_dt_soname
  36396. + (bfd *);
  36397. +extern void bfd_elf_set_dyn_lib_class
  36398. + (bfd *, enum dynamic_lib_link_class);
  36399. +extern int bfd_elf_get_dyn_lib_class
  36400. + (bfd *);
  36401. +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
  36402. + (bfd *, struct bfd_link_info *);
  36403. +extern bfd_boolean bfd_elf_discard_info
  36404. + (bfd *, struct bfd_link_info *);
  36405. +extern unsigned int _bfd_elf_default_action_discarded
  36406. + (struct bfd_section *);
  36407. +
  36408. +/* Return an upper bound on the number of bytes required to store a
  36409. + copy of ABFD's program header table entries. Return -1 if an error
  36410. + occurs; bfd_get_error will return an appropriate code. */
  36411. +extern long bfd_get_elf_phdr_upper_bound
  36412. + (bfd *abfd);
  36413. +
  36414. +/* Copy ABFD's program header table entries to *PHDRS. The entries
  36415. + will be stored as an array of Elf_Internal_Phdr structures, as
  36416. + defined in include/elf/internal.h. To find out how large the
  36417. + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
  36418. +
  36419. + Return the number of program header table entries read, or -1 if an
  36420. + error occurs; bfd_get_error will return an appropriate code. */
  36421. +extern int bfd_get_elf_phdrs
  36422. + (bfd *abfd, void *phdrs);
  36423. +
  36424. +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
  36425. + reconstruct an ELF file by reading the segments out of remote memory
  36426. + based on the ELF file header at EHDR_VMA and the ELF program headers it
  36427. + points to. If not null, *LOADBASEP is filled in with the difference
  36428. + between the VMAs from which the segments were read, and the VMAs the
  36429. + file headers (and hence BFD's idea of each section's VMA) put them at.
  36430. +
  36431. + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
  36432. + remote memory at target address VMA into the local buffer at MYADDR; it
  36433. + should return zero on success or an `errno' code on failure. TEMPL must
  36434. + be a BFD for an ELF target with the word size and byte order found in
  36435. + the remote memory. */
  36436. +extern bfd *bfd_elf_bfd_from_remote_memory
  36437. + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
  36438. + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
  36439. +
  36440. +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
  36441. +extern int bfd_get_arch_size
  36442. + (bfd *);
  36443. +
  36444. +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
  36445. +extern int bfd_get_sign_extend_vma
  36446. + (bfd *);
  36447. +
  36448. +extern struct bfd_section *_bfd_elf_tls_setup
  36449. + (bfd *, struct bfd_link_info *);
  36450. +
  36451. +extern void _bfd_fix_excluded_sec_syms
  36452. + (bfd *, struct bfd_link_info *);
  36453. +
  36454. +extern unsigned bfd_m68k_mach_to_features (int);
  36455. +
  36456. +extern int bfd_m68k_features_to_mach (unsigned);
  36457. +
  36458. +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
  36459. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
  36460. + char **);
  36461. +
  36462. +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
  36463. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
  36464. + char **);
  36465. +
  36466. +/* SunOS shared library support routines for the linker. */
  36467. +
  36468. +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
  36469. + (bfd *, struct bfd_link_info *);
  36470. +extern bfd_boolean bfd_sunos_record_link_assignment
  36471. + (bfd *, struct bfd_link_info *, const char *);
  36472. +extern bfd_boolean bfd_sunos_size_dynamic_sections
  36473. + (bfd *, struct bfd_link_info *, struct bfd_section **,
  36474. + struct bfd_section **, struct bfd_section **);
  36475. +
  36476. +/* Linux shared library support routines for the linker. */
  36477. +
  36478. +extern bfd_boolean bfd_i386linux_size_dynamic_sections
  36479. + (bfd *, struct bfd_link_info *);
  36480. +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
  36481. + (bfd *, struct bfd_link_info *);
  36482. +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
  36483. + (bfd *, struct bfd_link_info *);
  36484. +
  36485. +/* mmap hacks */
  36486. +
  36487. +struct _bfd_window_internal;
  36488. +typedef struct _bfd_window_internal bfd_window_internal;
  36489. +
  36490. +typedef struct _bfd_window
  36491. +{
  36492. + /* What the user asked for. */
  36493. + void *data;
  36494. + bfd_size_type size;
  36495. + /* The actual window used by BFD. Small user-requested read-only
  36496. + regions sharing a page may share a single window into the object
  36497. + file. Read-write versions shouldn't until I've fixed things to
  36498. + keep track of which portions have been claimed by the
  36499. + application; don't want to give the same region back when the
  36500. + application wants two writable copies! */
  36501. + struct _bfd_window_internal *i;
  36502. +}
  36503. +bfd_window;
  36504. +
  36505. +extern void bfd_init_window
  36506. + (bfd_window *);
  36507. +extern void bfd_free_window
  36508. + (bfd_window *);
  36509. +extern bfd_boolean bfd_get_file_window
  36510. + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
  36511. +
  36512. +/* XCOFF support routines for the linker. */
  36513. +
  36514. +extern bfd_boolean bfd_xcoff_link_record_set
  36515. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
  36516. +extern bfd_boolean bfd_xcoff_import_symbol
  36517. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
  36518. + const char *, const char *, const char *, unsigned int);
  36519. +extern bfd_boolean bfd_xcoff_export_symbol
  36520. + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
  36521. +extern bfd_boolean bfd_xcoff_link_count_reloc
  36522. + (bfd *, struct bfd_link_info *, const char *);
  36523. +extern bfd_boolean bfd_xcoff_record_link_assignment
  36524. + (bfd *, struct bfd_link_info *, const char *);
  36525. +extern bfd_boolean bfd_xcoff_size_dynamic_sections
  36526. + (bfd *, struct bfd_link_info *, const char *, const char *,
  36527. + unsigned long, unsigned long, unsigned long, bfd_boolean,
  36528. + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
  36529. +extern bfd_boolean bfd_xcoff_link_generate_rtinit
  36530. + (bfd *, const char *, const char *, bfd_boolean);
  36531. +
  36532. +/* XCOFF support routines for ar. */
  36533. +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
  36534. + (bfd *, char *);
  36535. +
  36536. +/* Externally visible COFF routines. */
  36537. +
  36538. +#if defined(__STDC__) || defined(ALMOST_STDC)
  36539. +struct internal_syment;
  36540. +union internal_auxent;
  36541. +#endif
  36542. +
  36543. +extern bfd_boolean bfd_coff_get_syment
  36544. + (bfd *, struct bfd_symbol *, struct internal_syment *);
  36545. +
  36546. +extern bfd_boolean bfd_coff_get_auxent
  36547. + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
  36548. +
  36549. +extern bfd_boolean bfd_coff_set_symbol_class
  36550. + (bfd *, struct bfd_symbol *, unsigned int);
  36551. +
  36552. +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
  36553. + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
  36554. +
  36555. +/* ARM VFP11 erratum workaround support. */
  36556. +typedef enum
  36557. +{
  36558. + BFD_ARM_VFP11_FIX_DEFAULT,
  36559. + BFD_ARM_VFP11_FIX_NONE,
  36560. + BFD_ARM_VFP11_FIX_SCALAR,
  36561. + BFD_ARM_VFP11_FIX_VECTOR
  36562. +} bfd_arm_vfp11_fix;
  36563. +
  36564. +extern void bfd_elf32_arm_init_maps
  36565. + (bfd *);
  36566. +
  36567. +extern void bfd_elf32_arm_set_vfp11_fix
  36568. + (bfd *, struct bfd_link_info *);
  36569. +
  36570. +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
  36571. + (bfd *, struct bfd_link_info *);
  36572. +
  36573. +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
  36574. + (bfd *, struct bfd_link_info *);
  36575. +
  36576. +/* ARM Interworking support. Called from linker. */
  36577. +extern bfd_boolean bfd_arm_allocate_interworking_sections
  36578. + (struct bfd_link_info *);
  36579. +
  36580. +extern bfd_boolean bfd_arm_process_before_allocation
  36581. + (bfd *, struct bfd_link_info *, int);
  36582. +
  36583. +extern bfd_boolean bfd_arm_get_bfd_for_interworking
  36584. + (bfd *, struct bfd_link_info *);
  36585. +
  36586. +/* PE ARM Interworking support. Called from linker. */
  36587. +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
  36588. + (struct bfd_link_info *);
  36589. +
  36590. +extern bfd_boolean bfd_arm_pe_process_before_allocation
  36591. + (bfd *, struct bfd_link_info *, int);
  36592. +
  36593. +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
  36594. + (bfd *, struct bfd_link_info *);
  36595. +
  36596. +/* ELF ARM Interworking support. Called from linker. */
  36597. +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
  36598. + (struct bfd_link_info *);
  36599. +
  36600. +extern bfd_boolean bfd_elf32_arm_process_before_allocation
  36601. + (bfd *, struct bfd_link_info *);
  36602. +
  36603. +void bfd_elf32_arm_set_target_relocs
  36604. + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
  36605. + int, int);
  36606. +
  36607. +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
  36608. + (bfd *, struct bfd_link_info *);
  36609. +
  36610. +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
  36611. + (bfd *, struct bfd_link_info *);
  36612. +
  36613. +/* ELF ARM mapping symbol support */
  36614. +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
  36615. +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
  36616. +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
  36617. +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
  36618. +extern bfd_boolean bfd_is_arm_special_symbol_name
  36619. + (const char * name, int type);
  36620. +
  36621. +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
  36622. +
  36623. +/* ARM Note section processing. */
  36624. +extern bfd_boolean bfd_arm_merge_machines
  36625. + (bfd *, bfd *);
  36626. +
  36627. +extern bfd_boolean bfd_arm_update_notes
  36628. + (bfd *, const char *);
  36629. +
  36630. +extern unsigned int bfd_arm_get_mach_from_notes
  36631. + (bfd *, const char *);
  36632. +
  36633. +/* TI COFF load page support. */
  36634. +extern void bfd_ticoff_set_section_load_page
  36635. + (struct bfd_section *, int);
  36636. +
  36637. +extern int bfd_ticoff_get_section_load_page
  36638. + (struct bfd_section *);
  36639. +
  36640. +/* H8/300 functions. */
  36641. +extern bfd_vma bfd_h8300_pad_address
  36642. + (bfd *, bfd_vma);
  36643. +
  36644. +/* IA64 Itanium code generation. Called from linker. */
  36645. +extern void bfd_elf32_ia64_after_parse
  36646. + (int);
  36647. +
  36648. +extern void bfd_elf64_ia64_after_parse
  36649. + (int);
  36650. +
  36651. +/* This structure is used for a comdat section, as in PE. A comdat
  36652. + section is associated with a particular symbol. When the linker
  36653. + sees a comdat section, it keeps only one of the sections with a
  36654. + given name and associated with a given symbol. */
  36655. +
  36656. +struct coff_comdat_info
  36657. +{
  36658. + /* The name of the symbol associated with a comdat section. */
  36659. + const char *name;
  36660. +
  36661. + /* The local symbol table index of the symbol associated with a
  36662. + comdat section. This is only meaningful to the object file format
  36663. + specific code; it is not an index into the list returned by
  36664. + bfd_canonicalize_symtab. */
  36665. + long symbol;
  36666. +};
  36667. +
  36668. +extern struct coff_comdat_info *bfd_coff_get_comdat_section
  36669. + (bfd *, struct bfd_section *);
  36670. +
  36671. +/* Extracted from init.c. */
  36672. +void bfd_init (void);
  36673. +
  36674. +/* Extracted from opncls.c. */
  36675. +bfd *bfd_fopen (const char *filename, const char *target,
  36676. + const char *mode, int fd);
  36677. +
  36678. +bfd *bfd_openr (const char *filename, const char *target);
  36679. +
  36680. +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
  36681. +
  36682. +bfd *bfd_openstreamr (const char *, const char *, void *);
  36683. +
  36684. +bfd *bfd_openr_iovec (const char *filename, const char *target,
  36685. + void *(*open) (struct bfd *nbfd,
  36686. + void *open_closure),
  36687. + void *open_closure,
  36688. + file_ptr (*pread) (struct bfd *nbfd,
  36689. + void *stream,
  36690. + void *buf,
  36691. + file_ptr nbytes,
  36692. + file_ptr offset),
  36693. + int (*close) (struct bfd *nbfd,
  36694. + void *stream),
  36695. + int (*stat) (struct bfd *abfd,
  36696. + void *stream,
  36697. + struct stat *sb));
  36698. +
  36699. +bfd *bfd_openw (const char *filename, const char *target);
  36700. +
  36701. +bfd_boolean bfd_close (bfd *abfd);
  36702. +
  36703. +bfd_boolean bfd_close_all_done (bfd *);
  36704. +
  36705. +bfd *bfd_create (const char *filename, bfd *templ);
  36706. +
  36707. +bfd_boolean bfd_make_writable (bfd *abfd);
  36708. +
  36709. +bfd_boolean bfd_make_readable (bfd *abfd);
  36710. +
  36711. +unsigned long bfd_calc_gnu_debuglink_crc32
  36712. + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
  36713. +
  36714. +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
  36715. +
  36716. +struct bfd_section *bfd_create_gnu_debuglink_section
  36717. + (bfd *abfd, const char *filename);
  36718. +
  36719. +bfd_boolean bfd_fill_in_gnu_debuglink_section
  36720. + (bfd *abfd, struct bfd_section *sect, const char *filename);
  36721. +
  36722. +/* Extracted from libbfd.c. */
  36723. +
  36724. +/* Byte swapping macros for user section data. */
  36725. +
  36726. +#define bfd_put_8(abfd, val, ptr) \
  36727. + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
  36728. +#define bfd_put_signed_8 \
  36729. + bfd_put_8
  36730. +#define bfd_get_8(abfd, ptr) \
  36731. + (*(unsigned char *) (ptr) & 0xff)
  36732. +#define bfd_get_signed_8(abfd, ptr) \
  36733. + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
  36734. +
  36735. +#define bfd_put_16(abfd, val, ptr) \
  36736. + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
  36737. +#define bfd_put_signed_16 \
  36738. + bfd_put_16
  36739. +#define bfd_get_16(abfd, ptr) \
  36740. + BFD_SEND (abfd, bfd_getx16, (ptr))
  36741. +#define bfd_get_signed_16(abfd, ptr) \
  36742. + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
  36743. +
  36744. +#define bfd_put_32(abfd, val, ptr) \
  36745. + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
  36746. +#define bfd_put_signed_32 \
  36747. + bfd_put_32
  36748. +#define bfd_get_32(abfd, ptr) \
  36749. + BFD_SEND (abfd, bfd_getx32, (ptr))
  36750. +#define bfd_get_signed_32(abfd, ptr) \
  36751. + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
  36752. +
  36753. +#define bfd_put_64(abfd, val, ptr) \
  36754. + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
  36755. +#define bfd_put_signed_64 \
  36756. + bfd_put_64
  36757. +#define bfd_get_64(abfd, ptr) \
  36758. + BFD_SEND (abfd, bfd_getx64, (ptr))
  36759. +#define bfd_get_signed_64(abfd, ptr) \
  36760. + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
  36761. +
  36762. +#define bfd_get(bits, abfd, ptr) \
  36763. + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
  36764. + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
  36765. + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
  36766. + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
  36767. + : (abort (), (bfd_vma) - 1))
  36768. +
  36769. +#define bfd_put(bits, abfd, val, ptr) \
  36770. + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
  36771. + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
  36772. + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
  36773. + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
  36774. + : (abort (), (void) 0))
  36775. +
  36776. +
  36777. +/* Byte swapping macros for file header data. */
  36778. +
  36779. +#define bfd_h_put_8(abfd, val, ptr) \
  36780. + bfd_put_8 (abfd, val, ptr)
  36781. +#define bfd_h_put_signed_8(abfd, val, ptr) \
  36782. + bfd_put_8 (abfd, val, ptr)
  36783. +#define bfd_h_get_8(abfd, ptr) \
  36784. + bfd_get_8 (abfd, ptr)
  36785. +#define bfd_h_get_signed_8(abfd, ptr) \
  36786. + bfd_get_signed_8 (abfd, ptr)
  36787. +
  36788. +#define bfd_h_put_16(abfd, val, ptr) \
  36789. + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
  36790. +#define bfd_h_put_signed_16 \
  36791. + bfd_h_put_16
  36792. +#define bfd_h_get_16(abfd, ptr) \
  36793. + BFD_SEND (abfd, bfd_h_getx16, (ptr))
  36794. +#define bfd_h_get_signed_16(abfd, ptr) \
  36795. + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
  36796. +
  36797. +#define bfd_h_put_32(abfd, val, ptr) \
  36798. + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
  36799. +#define bfd_h_put_signed_32 \
  36800. + bfd_h_put_32
  36801. +#define bfd_h_get_32(abfd, ptr) \
  36802. + BFD_SEND (abfd, bfd_h_getx32, (ptr))
  36803. +#define bfd_h_get_signed_32(abfd, ptr) \
  36804. + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
  36805. +
  36806. +#define bfd_h_put_64(abfd, val, ptr) \
  36807. + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
  36808. +#define bfd_h_put_signed_64 \
  36809. + bfd_h_put_64
  36810. +#define bfd_h_get_64(abfd, ptr) \
  36811. + BFD_SEND (abfd, bfd_h_getx64, (ptr))
  36812. +#define bfd_h_get_signed_64(abfd, ptr) \
  36813. + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
  36814. +
  36815. +/* Aliases for the above, which should eventually go away. */
  36816. +
  36817. +#define H_PUT_64 bfd_h_put_64
  36818. +#define H_PUT_32 bfd_h_put_32
  36819. +#define H_PUT_16 bfd_h_put_16
  36820. +#define H_PUT_8 bfd_h_put_8
  36821. +#define H_PUT_S64 bfd_h_put_signed_64
  36822. +#define H_PUT_S32 bfd_h_put_signed_32
  36823. +#define H_PUT_S16 bfd_h_put_signed_16
  36824. +#define H_PUT_S8 bfd_h_put_signed_8
  36825. +#define H_GET_64 bfd_h_get_64
  36826. +#define H_GET_32 bfd_h_get_32
  36827. +#define H_GET_16 bfd_h_get_16
  36828. +#define H_GET_8 bfd_h_get_8
  36829. +#define H_GET_S64 bfd_h_get_signed_64
  36830. +#define H_GET_S32 bfd_h_get_signed_32
  36831. +#define H_GET_S16 bfd_h_get_signed_16
  36832. +#define H_GET_S8 bfd_h_get_signed_8
  36833. +
  36834. +
  36835. +/* Extracted from bfdio.c. */
  36836. +long bfd_get_mtime (bfd *abfd);
  36837. +
  36838. +file_ptr bfd_get_size (bfd *abfd);
  36839. +
  36840. +/* Extracted from bfdwin.c. */
  36841. +/* Extracted from section.c. */
  36842. +typedef struct bfd_section
  36843. +{
  36844. + /* The name of the section; the name isn't a copy, the pointer is
  36845. + the same as that passed to bfd_make_section. */
  36846. + const char *name;
  36847. +
  36848. + /* A unique sequence number. */
  36849. + int id;
  36850. +
  36851. + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
  36852. + int index;
  36853. +
  36854. + /* The next section in the list belonging to the BFD, or NULL. */
  36855. + struct bfd_section *next;
  36856. +
  36857. + /* The previous section in the list belonging to the BFD, or NULL. */
  36858. + struct bfd_section *prev;
  36859. +
  36860. + /* The field flags contains attributes of the section. Some
  36861. + flags are read in from the object file, and some are
  36862. + synthesized from other information. */
  36863. + flagword flags;
  36864. +
  36865. +#define SEC_NO_FLAGS 0x000
  36866. +
  36867. + /* Tells the OS to allocate space for this section when loading.
  36868. + This is clear for a section containing debug information only. */
  36869. +#define SEC_ALLOC 0x001
  36870. +
  36871. + /* Tells the OS to load the section from the file when loading.
  36872. + This is clear for a .bss section. */
  36873. +#define SEC_LOAD 0x002
  36874. +
  36875. + /* The section contains data still to be relocated, so there is
  36876. + some relocation information too. */
  36877. +#define SEC_RELOC 0x004
  36878. +
  36879. + /* A signal to the OS that the section contains read only data. */
  36880. +#define SEC_READONLY 0x008
  36881. +
  36882. + /* The section contains code only. */
  36883. +#define SEC_CODE 0x010
  36884. +
  36885. + /* The section contains data only. */
  36886. +#define SEC_DATA 0x020
  36887. +
  36888. + /* The section will reside in ROM. */
  36889. +#define SEC_ROM 0x040
  36890. +
  36891. + /* The section contains constructor information. This section
  36892. + type is used by the linker to create lists of constructors and
  36893. + destructors used by <<g++>>. When a back end sees a symbol
  36894. + which should be used in a constructor list, it creates a new
  36895. + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
  36896. + the symbol to it, and builds a relocation. To build the lists
  36897. + of constructors, all the linker has to do is catenate all the
  36898. + sections called <<__CTOR_LIST__>> and relocate the data
  36899. + contained within - exactly the operations it would peform on
  36900. + standard data. */
  36901. +#define SEC_CONSTRUCTOR 0x080
  36902. +
  36903. + /* The section has contents - a data section could be
  36904. + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
  36905. + <<SEC_HAS_CONTENTS>> */
  36906. +#define SEC_HAS_CONTENTS 0x100
  36907. +
  36908. + /* An instruction to the linker to not output the section
  36909. + even if it has information which would normally be written. */
  36910. +#define SEC_NEVER_LOAD 0x200
  36911. +
  36912. + /* The section contains thread local data. */
  36913. +#define SEC_THREAD_LOCAL 0x400
  36914. +
  36915. + /* The section has GOT references. This flag is only for the
  36916. + linker, and is currently only used by the elf32-hppa back end.
  36917. + It will be set if global offset table references were detected
  36918. + in this section, which indicate to the linker that the section
  36919. + contains PIC code, and must be handled specially when doing a
  36920. + static link. */
  36921. +#define SEC_HAS_GOT_REF 0x800
  36922. +
  36923. + /* The section contains common symbols (symbols may be defined
  36924. + multiple times, the value of a symbol is the amount of
  36925. + space it requires, and the largest symbol value is the one
  36926. + used). Most targets have exactly one of these (which we
  36927. + translate to bfd_com_section_ptr), but ECOFF has two. */
  36928. +#define SEC_IS_COMMON 0x1000
  36929. +
  36930. + /* The section contains only debugging information. For
  36931. + example, this is set for ELF .debug and .stab sections.
  36932. + strip tests this flag to see if a section can be
  36933. + discarded. */
  36934. +#define SEC_DEBUGGING 0x2000
  36935. +
  36936. + /* The contents of this section are held in memory pointed to
  36937. + by the contents field. This is checked by bfd_get_section_contents,
  36938. + and the data is retrieved from memory if appropriate. */
  36939. +#define SEC_IN_MEMORY 0x4000
  36940. +
  36941. + /* The contents of this section are to be excluded by the
  36942. + linker for executable and shared objects unless those
  36943. + objects are to be further relocated. */
  36944. +#define SEC_EXCLUDE 0x8000
  36945. +
  36946. + /* The contents of this section are to be sorted based on the sum of
  36947. + the symbol and addend values specified by the associated relocation
  36948. + entries. Entries without associated relocation entries will be
  36949. + appended to the end of the section in an unspecified order. */
  36950. +#define SEC_SORT_ENTRIES 0x10000
  36951. +
  36952. + /* When linking, duplicate sections of the same name should be
  36953. + discarded, rather than being combined into a single section as
  36954. + is usually done. This is similar to how common symbols are
  36955. + handled. See SEC_LINK_DUPLICATES below. */
  36956. +#define SEC_LINK_ONCE 0x20000
  36957. +
  36958. + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
  36959. + should handle duplicate sections. */
  36960. +#define SEC_LINK_DUPLICATES 0x40000
  36961. +
  36962. + /* This value for SEC_LINK_DUPLICATES means that duplicate
  36963. + sections with the same name should simply be discarded. */
  36964. +#define SEC_LINK_DUPLICATES_DISCARD 0x0
  36965. +
  36966. + /* This value for SEC_LINK_DUPLICATES means that the linker
  36967. + should warn if there are any duplicate sections, although
  36968. + it should still only link one copy. */
  36969. +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
  36970. +
  36971. + /* This value for SEC_LINK_DUPLICATES means that the linker
  36972. + should warn if any duplicate sections are a different size. */
  36973. +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
  36974. +
  36975. + /* This value for SEC_LINK_DUPLICATES means that the linker
  36976. + should warn if any duplicate sections contain different
  36977. + contents. */
  36978. +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
  36979. + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
  36980. +
  36981. + /* This section was created by the linker as part of dynamic
  36982. + relocation or other arcane processing. It is skipped when
  36983. + going through the first-pass output, trusting that someone
  36984. + else up the line will take care of it later. */
  36985. +#define SEC_LINKER_CREATED 0x200000
  36986. +
  36987. + /* This section should not be subject to garbage collection.
  36988. + Also set to inform the linker that this section should not be
  36989. + listed in the link map as discarded. */
  36990. +#define SEC_KEEP 0x400000
  36991. +
  36992. + /* This section contains "short" data, and should be placed
  36993. + "near" the GP. */
  36994. +#define SEC_SMALL_DATA 0x800000
  36995. +
  36996. + /* Attempt to merge identical entities in the section.
  36997. + Entity size is given in the entsize field. */
  36998. +#define SEC_MERGE 0x1000000
  36999. +
  37000. + /* If given with SEC_MERGE, entities to merge are zero terminated
  37001. + strings where entsize specifies character size instead of fixed
  37002. + size entries. */
  37003. +#define SEC_STRINGS 0x2000000
  37004. +
  37005. + /* This section contains data about section groups. */
  37006. +#define SEC_GROUP 0x4000000
  37007. +
  37008. + /* The section is a COFF shared library section. This flag is
  37009. + only for the linker. If this type of section appears in
  37010. + the input file, the linker must copy it to the output file
  37011. + without changing the vma or size. FIXME: Although this
  37012. + was originally intended to be general, it really is COFF
  37013. + specific (and the flag was renamed to indicate this). It
  37014. + might be cleaner to have some more general mechanism to
  37015. + allow the back end to control what the linker does with
  37016. + sections. */
  37017. +#define SEC_COFF_SHARED_LIBRARY 0x10000000
  37018. +
  37019. + /* This section contains data which may be shared with other
  37020. + executables or shared objects. This is for COFF only. */
  37021. +#define SEC_COFF_SHARED 0x20000000
  37022. +
  37023. + /* When a section with this flag is being linked, then if the size of
  37024. + the input section is less than a page, it should not cross a page
  37025. + boundary. If the size of the input section is one page or more,
  37026. + it should be aligned on a page boundary. This is for TI
  37027. + TMS320C54X only. */
  37028. +#define SEC_TIC54X_BLOCK 0x40000000
  37029. +
  37030. + /* Conditionally link this section; do not link if there are no
  37031. + references found to any symbol in the section. This is for TI
  37032. + TMS320C54X only. */
  37033. +#define SEC_TIC54X_CLINK 0x80000000
  37034. +
  37035. + /* End of section flags. */
  37036. +
  37037. + /* Some internal packed boolean fields. */
  37038. +
  37039. + /* See the vma field. */
  37040. + unsigned int user_set_vma : 1;
  37041. +
  37042. + /* A mark flag used by some of the linker backends. */
  37043. + unsigned int linker_mark : 1;
  37044. +
  37045. + /* Another mark flag used by some of the linker backends. Set for
  37046. + output sections that have an input section. */
  37047. + unsigned int linker_has_input : 1;
  37048. +
  37049. + /* Mark flags used by some linker backends for garbage collection. */
  37050. + unsigned int gc_mark : 1;
  37051. + unsigned int gc_mark_from_eh : 1;
  37052. +
  37053. + /* The following flags are used by the ELF linker. */
  37054. +
  37055. + /* Mark sections which have been allocated to segments. */
  37056. + unsigned int segment_mark : 1;
  37057. +
  37058. + /* Type of sec_info information. */
  37059. + unsigned int sec_info_type:3;
  37060. +#define ELF_INFO_TYPE_NONE 0
  37061. +#define ELF_INFO_TYPE_STABS 1
  37062. +#define ELF_INFO_TYPE_MERGE 2
  37063. +#define ELF_INFO_TYPE_EH_FRAME 3
  37064. +#define ELF_INFO_TYPE_JUST_SYMS 4
  37065. +
  37066. + /* Nonzero if this section uses RELA relocations, rather than REL. */
  37067. + unsigned int use_rela_p:1;
  37068. +
  37069. + /* Bits used by various backends. The generic code doesn't touch
  37070. + these fields. */
  37071. +
  37072. + /* Nonzero if this section has TLS related relocations. */
  37073. + unsigned int has_tls_reloc:1;
  37074. +
  37075. + /* Nonzero if this section has a gp reloc. */
  37076. + unsigned int has_gp_reloc:1;
  37077. +
  37078. + /* Nonzero if this section needs the relax finalize pass. */
  37079. + unsigned int need_finalize_relax:1;
  37080. +
  37081. + /* Whether relocations have been processed. */
  37082. + unsigned int reloc_done : 1;
  37083. +
  37084. + /* End of internal packed boolean fields. */
  37085. +
  37086. + /* The virtual memory address of the section - where it will be
  37087. + at run time. The symbols are relocated against this. The
  37088. + user_set_vma flag is maintained by bfd; if it's not set, the
  37089. + backend can assign addresses (for example, in <<a.out>>, where
  37090. + the default address for <<.data>> is dependent on the specific
  37091. + target and various flags). */
  37092. + bfd_vma vma;
  37093. +
  37094. + /* The load address of the section - where it would be in a
  37095. + rom image; really only used for writing section header
  37096. + information. */
  37097. + bfd_vma lma;
  37098. +
  37099. + /* The size of the section in octets, as it will be output.
  37100. + Contains a value even if the section has no contents (e.g., the
  37101. + size of <<.bss>>). */
  37102. + bfd_size_type size;
  37103. +
  37104. + /* For input sections, the original size on disk of the section, in
  37105. + octets. This field is used by the linker relaxation code. It is
  37106. + currently only set for sections where the linker relaxation scheme
  37107. + doesn't cache altered section and reloc contents (stabs, eh_frame,
  37108. + SEC_MERGE, some coff relaxing targets), and thus the original size
  37109. + needs to be kept to read the section multiple times.
  37110. + For output sections, rawsize holds the section size calculated on
  37111. + a previous linker relaxation pass. */
  37112. + bfd_size_type rawsize;
  37113. +
  37114. + /* If this section is going to be output, then this value is the
  37115. + offset in *bytes* into the output section of the first byte in the
  37116. + input section (byte ==> smallest addressable unit on the
  37117. + target). In most cases, if this was going to start at the
  37118. + 100th octet (8-bit quantity) in the output section, this value
  37119. + would be 100. However, if the target byte size is 16 bits
  37120. + (bfd_octets_per_byte is "2"), this value would be 50. */
  37121. + bfd_vma output_offset;
  37122. +
  37123. + /* The output section through which to map on output. */
  37124. + struct bfd_section *output_section;
  37125. +
  37126. + /* The alignment requirement of the section, as an exponent of 2 -
  37127. + e.g., 3 aligns to 2^3 (or 8). */
  37128. + unsigned int alignment_power;
  37129. +
  37130. + /* If an input section, a pointer to a vector of relocation
  37131. + records for the data in this section. */
  37132. + struct reloc_cache_entry *relocation;
  37133. +
  37134. + /* If an output section, a pointer to a vector of pointers to
  37135. + relocation records for the data in this section. */
  37136. + struct reloc_cache_entry **orelocation;
  37137. +
  37138. + /* The number of relocation records in one of the above. */
  37139. + unsigned reloc_count;
  37140. +
  37141. + /* Information below is back end specific - and not always used
  37142. + or updated. */
  37143. +
  37144. + /* File position of section data. */
  37145. + file_ptr filepos;
  37146. +
  37147. + /* File position of relocation info. */
  37148. + file_ptr rel_filepos;
  37149. +
  37150. + /* File position of line data. */
  37151. + file_ptr line_filepos;
  37152. +
  37153. + /* Pointer to data for applications. */
  37154. + void *userdata;
  37155. +
  37156. + /* If the SEC_IN_MEMORY flag is set, this points to the actual
  37157. + contents. */
  37158. + unsigned char *contents;
  37159. +
  37160. + /* Attached line number information. */
  37161. + alent *lineno;
  37162. +
  37163. + /* Number of line number records. */
  37164. + unsigned int lineno_count;
  37165. +
  37166. + /* Entity size for merging purposes. */
  37167. + unsigned int entsize;
  37168. +
  37169. + /* Points to the kept section if this section is a link-once section,
  37170. + and is discarded. */
  37171. + struct bfd_section *kept_section;
  37172. +
  37173. + /* When a section is being output, this value changes as more
  37174. + linenumbers are written out. */
  37175. + file_ptr moving_line_filepos;
  37176. +
  37177. + /* What the section number is in the target world. */
  37178. + int target_index;
  37179. +
  37180. + void *used_by_bfd;
  37181. +
  37182. + /* If this is a constructor section then here is a list of the
  37183. + relocations created to relocate items within it. */
  37184. + struct relent_chain *constructor_chain;
  37185. +
  37186. + /* The BFD which owns the section. */
  37187. + bfd *owner;
  37188. +
  37189. + /* A symbol which points at this section only. */
  37190. + struct bfd_symbol *symbol;
  37191. + struct bfd_symbol **symbol_ptr_ptr;
  37192. +
  37193. + /* Early in the link process, map_head and map_tail are used to build
  37194. + a list of input sections attached to an output section. Later,
  37195. + output sections use these fields for a list of bfd_link_order
  37196. + structs. */
  37197. + union {
  37198. + struct bfd_link_order *link_order;
  37199. + struct bfd_section *s;
  37200. + } map_head, map_tail;
  37201. +} asection;
  37202. +
  37203. +/* These sections are global, and are managed by BFD. The application
  37204. + and target back end are not permitted to change the values in
  37205. + these sections. New code should use the section_ptr macros rather
  37206. + than referring directly to the const sections. The const sections
  37207. + may eventually vanish. */
  37208. +#define BFD_ABS_SECTION_NAME "*ABS*"
  37209. +#define BFD_UND_SECTION_NAME "*UND*"
  37210. +#define BFD_COM_SECTION_NAME "*COM*"
  37211. +#define BFD_IND_SECTION_NAME "*IND*"
  37212. +
  37213. +/* The absolute section. */
  37214. +extern asection bfd_abs_section;
  37215. +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
  37216. +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
  37217. +/* Pointer to the undefined section. */
  37218. +extern asection bfd_und_section;
  37219. +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
  37220. +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
  37221. +/* Pointer to the common section. */
  37222. +extern asection bfd_com_section;
  37223. +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
  37224. +/* Pointer to the indirect section. */
  37225. +extern asection bfd_ind_section;
  37226. +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
  37227. +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
  37228. +
  37229. +#define bfd_is_const_section(SEC) \
  37230. + ( ((SEC) == bfd_abs_section_ptr) \
  37231. + || ((SEC) == bfd_und_section_ptr) \
  37232. + || ((SEC) == bfd_com_section_ptr) \
  37233. + || ((SEC) == bfd_ind_section_ptr))
  37234. +
  37235. +/* Macros to handle insertion and deletion of a bfd's sections. These
  37236. + only handle the list pointers, ie. do not adjust section_count,
  37237. + target_index etc. */
  37238. +#define bfd_section_list_remove(ABFD, S) \
  37239. + do \
  37240. + { \
  37241. + asection *_s = S; \
  37242. + asection *_next = _s->next; \
  37243. + asection *_prev = _s->prev; \
  37244. + if (_prev) \
  37245. + _prev->next = _next; \
  37246. + else \
  37247. + (ABFD)->sections = _next; \
  37248. + if (_next) \
  37249. + _next->prev = _prev; \
  37250. + else \
  37251. + (ABFD)->section_last = _prev; \
  37252. + } \
  37253. + while (0)
  37254. +#define bfd_section_list_append(ABFD, S) \
  37255. + do \
  37256. + { \
  37257. + asection *_s = S; \
  37258. + bfd *_abfd = ABFD; \
  37259. + _s->next = NULL; \
  37260. + if (_abfd->section_last) \
  37261. + { \
  37262. + _s->prev = _abfd->section_last; \
  37263. + _abfd->section_last->next = _s; \
  37264. + } \
  37265. + else \
  37266. + { \
  37267. + _s->prev = NULL; \
  37268. + _abfd->sections = _s; \
  37269. + } \
  37270. + _abfd->section_last = _s; \
  37271. + } \
  37272. + while (0)
  37273. +#define bfd_section_list_prepend(ABFD, S) \
  37274. + do \
  37275. + { \
  37276. + asection *_s = S; \
  37277. + bfd *_abfd = ABFD; \
  37278. + _s->prev = NULL; \
  37279. + if (_abfd->sections) \
  37280. + { \
  37281. + _s->next = _abfd->sections; \
  37282. + _abfd->sections->prev = _s; \
  37283. + } \
  37284. + else \
  37285. + { \
  37286. + _s->next = NULL; \
  37287. + _abfd->section_last = _s; \
  37288. + } \
  37289. + _abfd->sections = _s; \
  37290. + } \
  37291. + while (0)
  37292. +#define bfd_section_list_insert_after(ABFD, A, S) \
  37293. + do \
  37294. + { \
  37295. + asection *_a = A; \
  37296. + asection *_s = S; \
  37297. + asection *_next = _a->next; \
  37298. + _s->next = _next; \
  37299. + _s->prev = _a; \
  37300. + _a->next = _s; \
  37301. + if (_next) \
  37302. + _next->prev = _s; \
  37303. + else \
  37304. + (ABFD)->section_last = _s; \
  37305. + } \
  37306. + while (0)
  37307. +#define bfd_section_list_insert_before(ABFD, B, S) \
  37308. + do \
  37309. + { \
  37310. + asection *_b = B; \
  37311. + asection *_s = S; \
  37312. + asection *_prev = _b->prev; \
  37313. + _s->prev = _prev; \
  37314. + _s->next = _b; \
  37315. + _b->prev = _s; \
  37316. + if (_prev) \
  37317. + _prev->next = _s; \
  37318. + else \
  37319. + (ABFD)->sections = _s; \
  37320. + } \
  37321. + while (0)
  37322. +#define bfd_section_removed_from_list(ABFD, S) \
  37323. + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
  37324. +
  37325. +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
  37326. + /* name, id, index, next, prev, flags, user_set_vma, */ \
  37327. + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
  37328. + \
  37329. + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
  37330. + 0, 0, 1, 0, \
  37331. + \
  37332. + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
  37333. + 0, 0, 0, 0, \
  37334. + \
  37335. + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
  37336. + 0, 0, 0, \
  37337. + \
  37338. + /* vma, lma, size, rawsize */ \
  37339. + 0, 0, 0, 0, \
  37340. + \
  37341. + /* output_offset, output_section, alignment_power, */ \
  37342. + 0, (struct bfd_section *) &SEC, 0, \
  37343. + \
  37344. + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
  37345. + NULL, NULL, 0, 0, 0, \
  37346. + \
  37347. + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
  37348. + 0, NULL, NULL, NULL, 0, \
  37349. + \
  37350. + /* entsize, kept_section, moving_line_filepos, */ \
  37351. + 0, NULL, 0, \
  37352. + \
  37353. + /* target_index, used_by_bfd, constructor_chain, owner, */ \
  37354. + 0, NULL, NULL, NULL, \
  37355. + \
  37356. + /* symbol, symbol_ptr_ptr, */ \
  37357. + (struct bfd_symbol *) SYM, &SEC.symbol, \
  37358. + \
  37359. + /* map_head, map_tail */ \
  37360. + { NULL }, { NULL } \
  37361. + }
  37362. +
  37363. +void bfd_section_list_clear (bfd *);
  37364. +
  37365. +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
  37366. +
  37367. +asection *bfd_get_section_by_name_if
  37368. + (bfd *abfd,
  37369. + const char *name,
  37370. + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
  37371. + void *obj);
  37372. +
  37373. +char *bfd_get_unique_section_name
  37374. + (bfd *abfd, const char *templat, int *count);
  37375. +
  37376. +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
  37377. +
  37378. +asection *bfd_make_section_anyway_with_flags
  37379. + (bfd *abfd, const char *name, flagword flags);
  37380. +
  37381. +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
  37382. +
  37383. +asection *bfd_make_section_with_flags
  37384. + (bfd *, const char *name, flagword flags);
  37385. +
  37386. +asection *bfd_make_section (bfd *, const char *name);
  37387. +
  37388. +bfd_boolean bfd_set_section_flags
  37389. + (bfd *abfd, asection *sec, flagword flags);
  37390. +
  37391. +void bfd_map_over_sections
  37392. + (bfd *abfd,
  37393. + void (*func) (bfd *abfd, asection *sect, void *obj),
  37394. + void *obj);
  37395. +
  37396. +asection *bfd_sections_find_if
  37397. + (bfd *abfd,
  37398. + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
  37399. + void *obj);
  37400. +
  37401. +bfd_boolean bfd_set_section_size
  37402. + (bfd *abfd, asection *sec, bfd_size_type val);
  37403. +
  37404. +bfd_boolean bfd_set_section_contents
  37405. + (bfd *abfd, asection *section, const void *data,
  37406. + file_ptr offset, bfd_size_type count);
  37407. +
  37408. +bfd_boolean bfd_get_section_contents
  37409. + (bfd *abfd, asection *section, void *location, file_ptr offset,
  37410. + bfd_size_type count);
  37411. +
  37412. +bfd_boolean bfd_malloc_and_get_section
  37413. + (bfd *abfd, asection *section, bfd_byte **buf);
  37414. +
  37415. +bfd_boolean bfd_copy_private_section_data
  37416. + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
  37417. +
  37418. +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
  37419. + BFD_SEND (obfd, _bfd_copy_private_section_data, \
  37420. + (ibfd, isection, obfd, osection))
  37421. +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
  37422. +
  37423. +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
  37424. +
  37425. +/* Extracted from archures.c. */
  37426. +enum bfd_architecture
  37427. +{
  37428. + bfd_arch_unknown, /* File arch not known. */
  37429. + bfd_arch_obscure, /* Arch known, not one of these. */
  37430. + bfd_arch_m68k, /* Motorola 68xxx */
  37431. +#define bfd_mach_m68000 1
  37432. +#define bfd_mach_m68008 2
  37433. +#define bfd_mach_m68010 3
  37434. +#define bfd_mach_m68020 4
  37435. +#define bfd_mach_m68030 5
  37436. +#define bfd_mach_m68040 6
  37437. +#define bfd_mach_m68060 7
  37438. +#define bfd_mach_cpu32 8
  37439. +#define bfd_mach_fido 9
  37440. +#define bfd_mach_mcf_isa_a_nodiv 10
  37441. +#define bfd_mach_mcf_isa_a 11
  37442. +#define bfd_mach_mcf_isa_a_mac 12
  37443. +#define bfd_mach_mcf_isa_a_emac 13
  37444. +#define bfd_mach_mcf_isa_aplus 14
  37445. +#define bfd_mach_mcf_isa_aplus_mac 15
  37446. +#define bfd_mach_mcf_isa_aplus_emac 16
  37447. +#define bfd_mach_mcf_isa_b_nousp 17
  37448. +#define bfd_mach_mcf_isa_b_nousp_mac 18
  37449. +#define bfd_mach_mcf_isa_b_nousp_emac 19
  37450. +#define bfd_mach_mcf_isa_b 20
  37451. +#define bfd_mach_mcf_isa_b_mac 21
  37452. +#define bfd_mach_mcf_isa_b_emac 22
  37453. +#define bfd_mach_mcf_isa_b_float 23
  37454. +#define bfd_mach_mcf_isa_b_float_mac 24
  37455. +#define bfd_mach_mcf_isa_b_float_emac 25
  37456. +#define bfd_mach_mcf_isa_c 26
  37457. +#define bfd_mach_mcf_isa_c_mac 27
  37458. +#define bfd_mach_mcf_isa_c_emac 28
  37459. + bfd_arch_vax, /* DEC Vax */
  37460. + bfd_arch_i960, /* Intel 960 */
  37461. + /* The order of the following is important.
  37462. + lower number indicates a machine type that
  37463. + only accepts a subset of the instructions
  37464. + available to machines with higher numbers.
  37465. + The exception is the "ca", which is
  37466. + incompatible with all other machines except
  37467. + "core". */
  37468. +
  37469. +#define bfd_mach_i960_core 1
  37470. +#define bfd_mach_i960_ka_sa 2
  37471. +#define bfd_mach_i960_kb_sb 3
  37472. +#define bfd_mach_i960_mc 4
  37473. +#define bfd_mach_i960_xa 5
  37474. +#define bfd_mach_i960_ca 6
  37475. +#define bfd_mach_i960_jx 7
  37476. +#define bfd_mach_i960_hx 8
  37477. +
  37478. + bfd_arch_or32, /* OpenRISC 32 */
  37479. +
  37480. + bfd_arch_sparc, /* SPARC */
  37481. +#define bfd_mach_sparc 1
  37482. +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
  37483. +#define bfd_mach_sparc_sparclet 2
  37484. +#define bfd_mach_sparc_sparclite 3
  37485. +#define bfd_mach_sparc_v8plus 4
  37486. +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
  37487. +#define bfd_mach_sparc_sparclite_le 6
  37488. +#define bfd_mach_sparc_v9 7
  37489. +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
  37490. +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
  37491. +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
  37492. +/* Nonzero if MACH has the v9 instruction set. */
  37493. +#define bfd_mach_sparc_v9_p(mach) \
  37494. + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
  37495. + && (mach) != bfd_mach_sparc_sparclite_le)
  37496. +/* Nonzero if MACH is a 64 bit sparc architecture. */
  37497. +#define bfd_mach_sparc_64bit_p(mach) \
  37498. + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
  37499. + bfd_arch_spu, /* PowerPC SPU */
  37500. +#define bfd_mach_spu 256
  37501. + bfd_arch_mips, /* MIPS Rxxxx */
  37502. +#define bfd_mach_mips3000 3000
  37503. +#define bfd_mach_mips3900 3900
  37504. +#define bfd_mach_mips4000 4000
  37505. +#define bfd_mach_mips4010 4010
  37506. +#define bfd_mach_mips4100 4100
  37507. +#define bfd_mach_mips4111 4111
  37508. +#define bfd_mach_mips4120 4120
  37509. +#define bfd_mach_mips4300 4300
  37510. +#define bfd_mach_mips4400 4400
  37511. +#define bfd_mach_mips4600 4600
  37512. +#define bfd_mach_mips4650 4650
  37513. +#define bfd_mach_mips5000 5000
  37514. +#define bfd_mach_mips5400 5400
  37515. +#define bfd_mach_mips5500 5500
  37516. +#define bfd_mach_mips6000 6000
  37517. +#define bfd_mach_mips7000 7000
  37518. +#define bfd_mach_mips8000 8000
  37519. +#define bfd_mach_mips9000 9000
  37520. +#define bfd_mach_mips10000 10000
  37521. +#define bfd_mach_mips12000 12000
  37522. +#define bfd_mach_mips16 16
  37523. +#define bfd_mach_mips5 5
  37524. +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
  37525. +#define bfd_mach_mipsisa32 32
  37526. +#define bfd_mach_mipsisa32r2 33
  37527. +#define bfd_mach_mipsisa64 64
  37528. +#define bfd_mach_mipsisa64r2 65
  37529. + bfd_arch_i386, /* Intel 386 */
  37530. +#define bfd_mach_i386_i386 1
  37531. +#define bfd_mach_i386_i8086 2
  37532. +#define bfd_mach_i386_i386_intel_syntax 3
  37533. +#define bfd_mach_x86_64 64
  37534. +#define bfd_mach_x86_64_intel_syntax 65
  37535. + bfd_arch_we32k, /* AT&T WE32xxx */
  37536. + bfd_arch_tahoe, /* CCI/Harris Tahoe */
  37537. + bfd_arch_i860, /* Intel 860 */
  37538. + bfd_arch_i370, /* IBM 360/370 Mainframes */
  37539. + bfd_arch_romp, /* IBM ROMP PC/RT */
  37540. + bfd_arch_convex, /* Convex */
  37541. + bfd_arch_m88k, /* Motorola 88xxx */
  37542. + bfd_arch_m98k, /* Motorola 98xxx */
  37543. + bfd_arch_pyramid, /* Pyramid Technology */
  37544. + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
  37545. +#define bfd_mach_h8300 1
  37546. +#define bfd_mach_h8300h 2
  37547. +#define bfd_mach_h8300s 3
  37548. +#define bfd_mach_h8300hn 4
  37549. +#define bfd_mach_h8300sn 5
  37550. +#define bfd_mach_h8300sx 6
  37551. +#define bfd_mach_h8300sxn 7
  37552. + bfd_arch_pdp11, /* DEC PDP-11 */
  37553. + bfd_arch_powerpc, /* PowerPC */
  37554. +#define bfd_mach_ppc 32
  37555. +#define bfd_mach_ppc64 64
  37556. +#define bfd_mach_ppc_403 403
  37557. +#define bfd_mach_ppc_403gc 4030
  37558. +#define bfd_mach_ppc_505 505
  37559. +#define bfd_mach_ppc_601 601
  37560. +#define bfd_mach_ppc_602 602
  37561. +#define bfd_mach_ppc_603 603
  37562. +#define bfd_mach_ppc_ec603e 6031
  37563. +#define bfd_mach_ppc_604 604
  37564. +#define bfd_mach_ppc_620 620
  37565. +#define bfd_mach_ppc_630 630
  37566. +#define bfd_mach_ppc_750 750
  37567. +#define bfd_mach_ppc_860 860
  37568. +#define bfd_mach_ppc_a35 35
  37569. +#define bfd_mach_ppc_rs64ii 642
  37570. +#define bfd_mach_ppc_rs64iii 643
  37571. +#define bfd_mach_ppc_7400 7400
  37572. +#define bfd_mach_ppc_e500 500
  37573. + bfd_arch_rs6000, /* IBM RS/6000 */
  37574. +#define bfd_mach_rs6k 6000
  37575. +#define bfd_mach_rs6k_rs1 6001
  37576. +#define bfd_mach_rs6k_rsc 6003
  37577. +#define bfd_mach_rs6k_rs2 6002
  37578. + bfd_arch_hppa, /* HP PA RISC */
  37579. +#define bfd_mach_hppa10 10
  37580. +#define bfd_mach_hppa11 11
  37581. +#define bfd_mach_hppa20 20
  37582. +#define bfd_mach_hppa20w 25
  37583. + bfd_arch_d10v, /* Mitsubishi D10V */
  37584. +#define bfd_mach_d10v 1
  37585. +#define bfd_mach_d10v_ts2 2
  37586. +#define bfd_mach_d10v_ts3 3
  37587. + bfd_arch_d30v, /* Mitsubishi D30V */
  37588. + bfd_arch_dlx, /* DLX */
  37589. + bfd_arch_m68hc11, /* Motorola 68HC11 */
  37590. + bfd_arch_m68hc12, /* Motorola 68HC12 */
  37591. +#define bfd_mach_m6812_default 0
  37592. +#define bfd_mach_m6812 1
  37593. +#define bfd_mach_m6812s 2
  37594. + bfd_arch_z8k, /* Zilog Z8000 */
  37595. +#define bfd_mach_z8001 1
  37596. +#define bfd_mach_z8002 2
  37597. + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
  37598. + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
  37599. +#define bfd_mach_sh 1
  37600. +#define bfd_mach_sh2 0x20
  37601. +#define bfd_mach_sh_dsp 0x2d
  37602. +#define bfd_mach_sh2a 0x2a
  37603. +#define bfd_mach_sh2a_nofpu 0x2b
  37604. +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
  37605. +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
  37606. +#define bfd_mach_sh2a_or_sh4 0x2a3
  37607. +#define bfd_mach_sh2a_or_sh3e 0x2a4
  37608. +#define bfd_mach_sh2e 0x2e
  37609. +#define bfd_mach_sh3 0x30
  37610. +#define bfd_mach_sh3_nommu 0x31
  37611. +#define bfd_mach_sh3_dsp 0x3d
  37612. +#define bfd_mach_sh3e 0x3e
  37613. +#define bfd_mach_sh4 0x40
  37614. +#define bfd_mach_sh4_nofpu 0x41
  37615. +#define bfd_mach_sh4_nommu_nofpu 0x42
  37616. +#define bfd_mach_sh4a 0x4a
  37617. +#define bfd_mach_sh4a_nofpu 0x4b
  37618. +#define bfd_mach_sh4al_dsp 0x4d
  37619. +#define bfd_mach_sh5 0x50
  37620. + bfd_arch_alpha, /* Dec Alpha */
  37621. +#define bfd_mach_alpha_ev4 0x10
  37622. +#define bfd_mach_alpha_ev5 0x20
  37623. +#define bfd_mach_alpha_ev6 0x30
  37624. + bfd_arch_arm, /* Advanced Risc Machines ARM. */
  37625. +#define bfd_mach_arm_unknown 0
  37626. +#define bfd_mach_arm_2 1
  37627. +#define bfd_mach_arm_2a 2
  37628. +#define bfd_mach_arm_3 3
  37629. +#define bfd_mach_arm_3M 4
  37630. +#define bfd_mach_arm_4 5
  37631. +#define bfd_mach_arm_4T 6
  37632. +#define bfd_mach_arm_5 7
  37633. +#define bfd_mach_arm_5T 8
  37634. +#define bfd_mach_arm_5TE 9
  37635. +#define bfd_mach_arm_XScale 10
  37636. +#define bfd_mach_arm_ep9312 11
  37637. +#define bfd_mach_arm_iWMMXt 12
  37638. +#define bfd_mach_arm_iWMMXt2 13
  37639. + bfd_arch_ns32k, /* National Semiconductors ns32000 */
  37640. + bfd_arch_w65, /* WDC 65816 */
  37641. + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
  37642. + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
  37643. +#define bfd_mach_tic3x 30
  37644. +#define bfd_mach_tic4x 40
  37645. + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
  37646. + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
  37647. + bfd_arch_v850, /* NEC V850 */
  37648. +#define bfd_mach_v850 1
  37649. +#define bfd_mach_v850e 'E'
  37650. +#define bfd_mach_v850e1 '1'
  37651. + bfd_arch_arc, /* ARC Cores */
  37652. +#define bfd_mach_arc_5 5
  37653. +#define bfd_mach_arc_6 6
  37654. +#define bfd_mach_arc_7 7
  37655. +#define bfd_mach_arc_8 8
  37656. + bfd_arch_m32c, /* Renesas M16C/M32C. */
  37657. +#define bfd_mach_m16c 0x75
  37658. +#define bfd_mach_m32c 0x78
  37659. + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
  37660. +#define bfd_mach_m32r 1 /* For backwards compatibility. */
  37661. +#define bfd_mach_m32rx 'x'
  37662. +#define bfd_mach_m32r2 '2'
  37663. + bfd_arch_mn10200, /* Matsushita MN10200 */
  37664. + bfd_arch_mn10300, /* Matsushita MN10300 */
  37665. +#define bfd_mach_mn10300 300
  37666. +#define bfd_mach_am33 330
  37667. +#define bfd_mach_am33_2 332
  37668. + bfd_arch_fr30,
  37669. +#define bfd_mach_fr30 0x46523330
  37670. + bfd_arch_frv,
  37671. +#define bfd_mach_frv 1
  37672. +#define bfd_mach_frvsimple 2
  37673. +#define bfd_mach_fr300 300
  37674. +#define bfd_mach_fr400 400
  37675. +#define bfd_mach_fr450 450
  37676. +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
  37677. +#define bfd_mach_fr500 500
  37678. +#define bfd_mach_fr550 550
  37679. + bfd_arch_mcore,
  37680. + bfd_arch_mep,
  37681. +#define bfd_mach_mep 1
  37682. +#define bfd_mach_mep_h1 0x6831
  37683. + bfd_arch_ia64, /* HP/Intel ia64 */
  37684. +#define bfd_mach_ia64_elf64 64
  37685. +#define bfd_mach_ia64_elf32 32
  37686. + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
  37687. +#define bfd_mach_ip2022 1
  37688. +#define bfd_mach_ip2022ext 2
  37689. + bfd_arch_iq2000, /* Vitesse IQ2000. */
  37690. +#define bfd_mach_iq2000 1
  37691. +#define bfd_mach_iq10 2
  37692. + bfd_arch_mt,
  37693. +#define bfd_mach_ms1 1
  37694. +#define bfd_mach_mrisc2 2
  37695. +#define bfd_mach_ms2 3
  37696. + bfd_arch_pj,
  37697. + bfd_arch_avr, /* Atmel AVR microcontrollers. */
  37698. +#define bfd_mach_avr1 1
  37699. +#define bfd_mach_avr2 2
  37700. +#define bfd_mach_avr3 3
  37701. +#define bfd_mach_avr4 4
  37702. +#define bfd_mach_avr5 5
  37703. +#define bfd_mach_avr6 6
  37704. + bfd_arch_avr32, /* Atmel AVR32 */
  37705. +#define bfd_mach_avr32_ap 7000
  37706. +#define bfd_mach_avr32_uc 3000
  37707. +#define bfd_mach_avr32_ucr1 3001
  37708. +#define bfd_mach_avr32_ucr2 3002
  37709. + bfd_arch_bfin, /* ADI Blackfin */
  37710. +#define bfd_mach_bfin 1
  37711. + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
  37712. +#define bfd_mach_cr16 1
  37713. + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
  37714. +#define bfd_mach_cr16c 1
  37715. + bfd_arch_crx, /* National Semiconductor CRX. */
  37716. +#define bfd_mach_crx 1
  37717. + bfd_arch_cris, /* Axis CRIS */
  37718. +#define bfd_mach_cris_v0_v10 255
  37719. +#define bfd_mach_cris_v32 32
  37720. +#define bfd_mach_cris_v10_v32 1032
  37721. + bfd_arch_s390, /* IBM s390 */
  37722. +#define bfd_mach_s390_31 31
  37723. +#define bfd_mach_s390_64 64
  37724. + bfd_arch_score, /* Sunplus score */
  37725. + bfd_arch_openrisc, /* OpenRISC */
  37726. + bfd_arch_mmix, /* Donald Knuth's educational processor. */
  37727. + bfd_arch_xstormy16,
  37728. +#define bfd_mach_xstormy16 1
  37729. + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
  37730. +#define bfd_mach_msp11 11
  37731. +#define bfd_mach_msp110 110
  37732. +#define bfd_mach_msp12 12
  37733. +#define bfd_mach_msp13 13
  37734. +#define bfd_mach_msp14 14
  37735. +#define bfd_mach_msp15 15
  37736. +#define bfd_mach_msp16 16
  37737. +#define bfd_mach_msp21 21
  37738. +#define bfd_mach_msp31 31
  37739. +#define bfd_mach_msp32 32
  37740. +#define bfd_mach_msp33 33
  37741. +#define bfd_mach_msp41 41
  37742. +#define bfd_mach_msp42 42
  37743. +#define bfd_mach_msp43 43
  37744. +#define bfd_mach_msp44 44
  37745. + bfd_arch_xc16x, /* Infineon's XC16X Series. */
  37746. +#define bfd_mach_xc16x 1
  37747. +#define bfd_mach_xc16xl 2
  37748. +#define bfd_mach_xc16xs 3
  37749. + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
  37750. +#define bfd_mach_xtensa 1
  37751. + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
  37752. +#define bfd_mach_maxq10 10
  37753. +#define bfd_mach_maxq20 20
  37754. + bfd_arch_z80,
  37755. +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
  37756. +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
  37757. +#define bfd_mach_z80full 7 /* All undocumented instructions. */
  37758. +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
  37759. + bfd_arch_last
  37760. + };
  37761. +
  37762. +typedef struct bfd_arch_info
  37763. +{
  37764. + int bits_per_word;
  37765. + int bits_per_address;
  37766. + int bits_per_byte;
  37767. + enum bfd_architecture arch;
  37768. + unsigned long mach;
  37769. + const char *arch_name;
  37770. + const char *printable_name;
  37771. + unsigned int section_align_power;
  37772. + /* TRUE if this is the default machine for the architecture.
  37773. + The default arch should be the first entry for an arch so that
  37774. + all the entries for that arch can be accessed via <<next>>. */
  37775. + bfd_boolean the_default;
  37776. + const struct bfd_arch_info * (*compatible)
  37777. + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
  37778. +
  37779. + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
  37780. +
  37781. + const struct bfd_arch_info *next;
  37782. +}
  37783. +bfd_arch_info_type;
  37784. +
  37785. +const char *bfd_printable_name (bfd *abfd);
  37786. +
  37787. +const bfd_arch_info_type *bfd_scan_arch (const char *string);
  37788. +
  37789. +const char **bfd_arch_list (void);
  37790. +
  37791. +const bfd_arch_info_type *bfd_arch_get_compatible
  37792. + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
  37793. +
  37794. +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
  37795. +
  37796. +enum bfd_architecture bfd_get_arch (bfd *abfd);
  37797. +
  37798. +unsigned long bfd_get_mach (bfd *abfd);
  37799. +
  37800. +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
  37801. +
  37802. +unsigned int bfd_arch_bits_per_address (bfd *abfd);
  37803. +
  37804. +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
  37805. +
  37806. +const bfd_arch_info_type *bfd_lookup_arch
  37807. + (enum bfd_architecture arch, unsigned long machine);
  37808. +
  37809. +const char *bfd_printable_arch_mach
  37810. + (enum bfd_architecture arch, unsigned long machine);
  37811. +
  37812. +unsigned int bfd_octets_per_byte (bfd *abfd);
  37813. +
  37814. +unsigned int bfd_arch_mach_octets_per_byte
  37815. + (enum bfd_architecture arch, unsigned long machine);
  37816. +
  37817. +/* Extracted from reloc.c. */
  37818. +typedef enum bfd_reloc_status
  37819. +{
  37820. + /* No errors detected. */
  37821. + bfd_reloc_ok,
  37822. +
  37823. + /* The relocation was performed, but there was an overflow. */
  37824. + bfd_reloc_overflow,
  37825. +
  37826. + /* The address to relocate was not within the section supplied. */
  37827. + bfd_reloc_outofrange,
  37828. +
  37829. + /* Used by special functions. */
  37830. + bfd_reloc_continue,
  37831. +
  37832. + /* Unsupported relocation size requested. */
  37833. + bfd_reloc_notsupported,
  37834. +
  37835. + /* Unused. */
  37836. + bfd_reloc_other,
  37837. +
  37838. + /* The symbol to relocate against was undefined. */
  37839. + bfd_reloc_undefined,
  37840. +
  37841. + /* The relocation was performed, but may not be ok - presently
  37842. + generated only when linking i960 coff files with i960 b.out
  37843. + symbols. If this type is returned, the error_message argument
  37844. + to bfd_perform_relocation will be set. */
  37845. + bfd_reloc_dangerous
  37846. + }
  37847. + bfd_reloc_status_type;
  37848. +
  37849. +
  37850. +typedef struct reloc_cache_entry
  37851. +{
  37852. + /* A pointer into the canonical table of pointers. */
  37853. + struct bfd_symbol **sym_ptr_ptr;
  37854. +
  37855. + /* offset in section. */
  37856. + bfd_size_type address;
  37857. +
  37858. + /* addend for relocation value. */
  37859. + bfd_vma addend;
  37860. +
  37861. + /* Pointer to how to perform the required relocation. */
  37862. + reloc_howto_type *howto;
  37863. +
  37864. +}
  37865. +arelent;
  37866. +
  37867. +enum complain_overflow
  37868. +{
  37869. + /* Do not complain on overflow. */
  37870. + complain_overflow_dont,
  37871. +
  37872. + /* Complain if the value overflows when considered as a signed
  37873. + number one bit larger than the field. ie. A bitfield of N bits
  37874. + is allowed to represent -2**n to 2**n-1. */
  37875. + complain_overflow_bitfield,
  37876. +
  37877. + /* Complain if the value overflows when considered as a signed
  37878. + number. */
  37879. + complain_overflow_signed,
  37880. +
  37881. + /* Complain if the value overflows when considered as an
  37882. + unsigned number. */
  37883. + complain_overflow_unsigned
  37884. +};
  37885. +
  37886. +struct reloc_howto_struct
  37887. +{
  37888. + /* The type field has mainly a documentary use - the back end can
  37889. + do what it wants with it, though normally the back end's
  37890. + external idea of what a reloc number is stored
  37891. + in this field. For example, a PC relative word relocation
  37892. + in a coff environment has the type 023 - because that's
  37893. + what the outside world calls a R_PCRWORD reloc. */
  37894. + unsigned int type;
  37895. +
  37896. + /* The value the final relocation is shifted right by. This drops
  37897. + unwanted data from the relocation. */
  37898. + unsigned int rightshift;
  37899. +
  37900. + /* The size of the item to be relocated. This is *not* a
  37901. + power-of-two measure. To get the number of bytes operated
  37902. + on by a type of relocation, use bfd_get_reloc_size. */
  37903. + int size;
  37904. +
  37905. + /* The number of bits in the item to be relocated. This is used
  37906. + when doing overflow checking. */
  37907. + unsigned int bitsize;
  37908. +
  37909. + /* Notes that the relocation is relative to the location in the
  37910. + data section of the addend. The relocation function will
  37911. + subtract from the relocation value the address of the location
  37912. + being relocated. */
  37913. + bfd_boolean pc_relative;
  37914. +
  37915. + /* The bit position of the reloc value in the destination.
  37916. + The relocated value is left shifted by this amount. */
  37917. + unsigned int bitpos;
  37918. +
  37919. + /* What type of overflow error should be checked for when
  37920. + relocating. */
  37921. + enum complain_overflow complain_on_overflow;
  37922. +
  37923. + /* If this field is non null, then the supplied function is
  37924. + called rather than the normal function. This allows really
  37925. + strange relocation methods to be accommodated (e.g., i960 callj
  37926. + instructions). */
  37927. + bfd_reloc_status_type (*special_function)
  37928. + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
  37929. + bfd *, char **);
  37930. +
  37931. + /* The textual name of the relocation type. */
  37932. + char *name;
  37933. +
  37934. + /* Some formats record a relocation addend in the section contents
  37935. + rather than with the relocation. For ELF formats this is the
  37936. + distinction between USE_REL and USE_RELA (though the code checks
  37937. + for USE_REL == 1/0). The value of this field is TRUE if the
  37938. + addend is recorded with the section contents; when performing a
  37939. + partial link (ld -r) the section contents (the data) will be
  37940. + modified. The value of this field is FALSE if addends are
  37941. + recorded with the relocation (in arelent.addend); when performing
  37942. + a partial link the relocation will be modified.
  37943. + All relocations for all ELF USE_RELA targets should set this field
  37944. + to FALSE (values of TRUE should be looked on with suspicion).
  37945. + However, the converse is not true: not all relocations of all ELF
  37946. + USE_REL targets set this field to TRUE. Why this is so is peculiar
  37947. + to each particular target. For relocs that aren't used in partial
  37948. + links (e.g. GOT stuff) it doesn't matter what this is set to. */
  37949. + bfd_boolean partial_inplace;
  37950. +
  37951. + /* src_mask selects the part of the instruction (or data) to be used
  37952. + in the relocation sum. If the target relocations don't have an
  37953. + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
  37954. + dst_mask to extract the addend from the section contents. If
  37955. + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
  37956. + field should be zero. Non-zero values for ELF USE_RELA targets are
  37957. + bogus as in those cases the value in the dst_mask part of the
  37958. + section contents should be treated as garbage. */
  37959. + bfd_vma src_mask;
  37960. +
  37961. + /* dst_mask selects which parts of the instruction (or data) are
  37962. + replaced with a relocated value. */
  37963. + bfd_vma dst_mask;
  37964. +
  37965. + /* When some formats create PC relative instructions, they leave
  37966. + the value of the pc of the place being relocated in the offset
  37967. + slot of the instruction, so that a PC relative relocation can
  37968. + be made just by adding in an ordinary offset (e.g., sun3 a.out).
  37969. + Some formats leave the displacement part of an instruction
  37970. + empty (e.g., m88k bcs); this flag signals the fact. */
  37971. + bfd_boolean pcrel_offset;
  37972. +};
  37973. +
  37974. +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
  37975. + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
  37976. +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
  37977. + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
  37978. + NAME, FALSE, 0, 0, IN)
  37979. +
  37980. +#define EMPTY_HOWTO(C) \
  37981. + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
  37982. + NULL, FALSE, 0, 0, FALSE)
  37983. +
  37984. +#define HOWTO_PREPARE(relocation, symbol) \
  37985. + { \
  37986. + if (symbol != NULL) \
  37987. + { \
  37988. + if (bfd_is_com_section (symbol->section)) \
  37989. + { \
  37990. + relocation = 0; \
  37991. + } \
  37992. + else \
  37993. + { \
  37994. + relocation = symbol->value; \
  37995. + } \
  37996. + } \
  37997. + }
  37998. +
  37999. +unsigned int bfd_get_reloc_size (reloc_howto_type *);
  38000. +
  38001. +typedef struct relent_chain
  38002. +{
  38003. + arelent relent;
  38004. + struct relent_chain *next;
  38005. +}
  38006. +arelent_chain;
  38007. +
  38008. +bfd_reloc_status_type bfd_check_overflow
  38009. + (enum complain_overflow how,
  38010. + unsigned int bitsize,
  38011. + unsigned int rightshift,
  38012. + unsigned int addrsize,
  38013. + bfd_vma relocation);
  38014. +
  38015. +bfd_reloc_status_type bfd_perform_relocation
  38016. + (bfd *abfd,
  38017. + arelent *reloc_entry,
  38018. + void *data,
  38019. + asection *input_section,
  38020. + bfd *output_bfd,
  38021. + char **error_message);
  38022. +
  38023. +bfd_reloc_status_type bfd_install_relocation
  38024. + (bfd *abfd,
  38025. + arelent *reloc_entry,
  38026. + void *data, bfd_vma data_start,
  38027. + asection *input_section,
  38028. + char **error_message);
  38029. +
  38030. +enum bfd_reloc_code_real {
  38031. + _dummy_first_bfd_reloc_code_real,
  38032. +
  38033. +
  38034. +/* Basic absolute relocations of N bits. */
  38035. + BFD_RELOC_64,
  38036. + BFD_RELOC_32,
  38037. + BFD_RELOC_26,
  38038. + BFD_RELOC_24,
  38039. + BFD_RELOC_16,
  38040. + BFD_RELOC_14,
  38041. + BFD_RELOC_8,
  38042. +
  38043. +/* PC-relative relocations. Sometimes these are relative to the address
  38044. +of the relocation itself; sometimes they are relative to the start of
  38045. +the section containing the relocation. It depends on the specific target.
  38046. +
  38047. +The 24-bit relocation is used in some Intel 960 configurations. */
  38048. + BFD_RELOC_64_PCREL,
  38049. + BFD_RELOC_32_PCREL,
  38050. + BFD_RELOC_24_PCREL,
  38051. + BFD_RELOC_16_PCREL,
  38052. + BFD_RELOC_12_PCREL,
  38053. + BFD_RELOC_8_PCREL,
  38054. +
  38055. +/* Section relative relocations. Some targets need this for DWARF2. */
  38056. + BFD_RELOC_32_SECREL,
  38057. +
  38058. +/* For ELF. */
  38059. + BFD_RELOC_32_GOT_PCREL,
  38060. + BFD_RELOC_16_GOT_PCREL,
  38061. + BFD_RELOC_8_GOT_PCREL,
  38062. + BFD_RELOC_32_GOTOFF,
  38063. + BFD_RELOC_16_GOTOFF,
  38064. + BFD_RELOC_LO16_GOTOFF,
  38065. + BFD_RELOC_HI16_GOTOFF,
  38066. + BFD_RELOC_HI16_S_GOTOFF,
  38067. + BFD_RELOC_8_GOTOFF,
  38068. + BFD_RELOC_64_PLT_PCREL,
  38069. + BFD_RELOC_32_PLT_PCREL,
  38070. + BFD_RELOC_24_PLT_PCREL,
  38071. + BFD_RELOC_16_PLT_PCREL,
  38072. + BFD_RELOC_8_PLT_PCREL,
  38073. + BFD_RELOC_64_PLTOFF,
  38074. + BFD_RELOC_32_PLTOFF,
  38075. + BFD_RELOC_16_PLTOFF,
  38076. + BFD_RELOC_LO16_PLTOFF,
  38077. + BFD_RELOC_HI16_PLTOFF,
  38078. + BFD_RELOC_HI16_S_PLTOFF,
  38079. + BFD_RELOC_8_PLTOFF,
  38080. +
  38081. +/* Relocations used by 68K ELF. */
  38082. + BFD_RELOC_68K_GLOB_DAT,
  38083. + BFD_RELOC_68K_JMP_SLOT,
  38084. + BFD_RELOC_68K_RELATIVE,
  38085. +
  38086. +/* Linkage-table relative. */
  38087. + BFD_RELOC_32_BASEREL,
  38088. + BFD_RELOC_16_BASEREL,
  38089. + BFD_RELOC_LO16_BASEREL,
  38090. + BFD_RELOC_HI16_BASEREL,
  38091. + BFD_RELOC_HI16_S_BASEREL,
  38092. + BFD_RELOC_8_BASEREL,
  38093. + BFD_RELOC_RVA,
  38094. +
  38095. +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
  38096. + BFD_RELOC_8_FFnn,
  38097. +
  38098. +/* These PC-relative relocations are stored as word displacements --
  38099. +i.e., byte displacements shifted right two bits. The 30-bit word
  38100. +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
  38101. +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
  38102. +signed 16-bit displacement is used on the MIPS, and the 23-bit
  38103. +displacement is used on the Alpha. */
  38104. + BFD_RELOC_32_PCREL_S2,
  38105. + BFD_RELOC_16_PCREL_S2,
  38106. + BFD_RELOC_23_PCREL_S2,
  38107. +
  38108. +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
  38109. +the target word. These are used on the SPARC. */
  38110. + BFD_RELOC_HI22,
  38111. + BFD_RELOC_LO10,
  38112. +
  38113. +/* For systems that allocate a Global Pointer register, these are
  38114. +displacements off that register. These relocation types are
  38115. +handled specially, because the value the register will have is
  38116. +decided relatively late. */
  38117. + BFD_RELOC_GPREL16,
  38118. + BFD_RELOC_GPREL32,
  38119. +
  38120. +/* Reloc types used for i960/b.out. */
  38121. + BFD_RELOC_I960_CALLJ,
  38122. +
  38123. +/* SPARC ELF relocations. There is probably some overlap with other
  38124. +relocation types already defined. */
  38125. + BFD_RELOC_NONE,
  38126. + BFD_RELOC_SPARC_WDISP22,
  38127. + BFD_RELOC_SPARC22,
  38128. + BFD_RELOC_SPARC13,
  38129. + BFD_RELOC_SPARC_GOT10,
  38130. + BFD_RELOC_SPARC_GOT13,
  38131. + BFD_RELOC_SPARC_GOT22,
  38132. + BFD_RELOC_SPARC_PC10,
  38133. + BFD_RELOC_SPARC_PC22,
  38134. + BFD_RELOC_SPARC_WPLT30,
  38135. + BFD_RELOC_SPARC_COPY,
  38136. + BFD_RELOC_SPARC_GLOB_DAT,
  38137. + BFD_RELOC_SPARC_JMP_SLOT,
  38138. + BFD_RELOC_SPARC_RELATIVE,
  38139. + BFD_RELOC_SPARC_UA16,
  38140. + BFD_RELOC_SPARC_UA32,
  38141. + BFD_RELOC_SPARC_UA64,
  38142. +
  38143. +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
  38144. + BFD_RELOC_SPARC_BASE13,
  38145. + BFD_RELOC_SPARC_BASE22,
  38146. +
  38147. +/* SPARC64 relocations */
  38148. +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
  38149. + BFD_RELOC_SPARC_10,
  38150. + BFD_RELOC_SPARC_11,
  38151. + BFD_RELOC_SPARC_OLO10,
  38152. + BFD_RELOC_SPARC_HH22,
  38153. + BFD_RELOC_SPARC_HM10,
  38154. + BFD_RELOC_SPARC_LM22,
  38155. + BFD_RELOC_SPARC_PC_HH22,
  38156. + BFD_RELOC_SPARC_PC_HM10,
  38157. + BFD_RELOC_SPARC_PC_LM22,
  38158. + BFD_RELOC_SPARC_WDISP16,
  38159. + BFD_RELOC_SPARC_WDISP19,
  38160. + BFD_RELOC_SPARC_7,
  38161. + BFD_RELOC_SPARC_6,
  38162. + BFD_RELOC_SPARC_5,
  38163. +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
  38164. + BFD_RELOC_SPARC_PLT32,
  38165. + BFD_RELOC_SPARC_PLT64,
  38166. + BFD_RELOC_SPARC_HIX22,
  38167. + BFD_RELOC_SPARC_LOX10,
  38168. + BFD_RELOC_SPARC_H44,
  38169. + BFD_RELOC_SPARC_M44,
  38170. + BFD_RELOC_SPARC_L44,
  38171. + BFD_RELOC_SPARC_REGISTER,
  38172. +
  38173. +/* SPARC little endian relocation */
  38174. + BFD_RELOC_SPARC_REV32,
  38175. +
  38176. +/* SPARC TLS relocations */
  38177. + BFD_RELOC_SPARC_TLS_GD_HI22,
  38178. + BFD_RELOC_SPARC_TLS_GD_LO10,
  38179. + BFD_RELOC_SPARC_TLS_GD_ADD,
  38180. + BFD_RELOC_SPARC_TLS_GD_CALL,
  38181. + BFD_RELOC_SPARC_TLS_LDM_HI22,
  38182. + BFD_RELOC_SPARC_TLS_LDM_LO10,
  38183. + BFD_RELOC_SPARC_TLS_LDM_ADD,
  38184. + BFD_RELOC_SPARC_TLS_LDM_CALL,
  38185. + BFD_RELOC_SPARC_TLS_LDO_HIX22,
  38186. + BFD_RELOC_SPARC_TLS_LDO_LOX10,
  38187. + BFD_RELOC_SPARC_TLS_LDO_ADD,
  38188. + BFD_RELOC_SPARC_TLS_IE_HI22,
  38189. + BFD_RELOC_SPARC_TLS_IE_LO10,
  38190. + BFD_RELOC_SPARC_TLS_IE_LD,
  38191. + BFD_RELOC_SPARC_TLS_IE_LDX,
  38192. + BFD_RELOC_SPARC_TLS_IE_ADD,
  38193. + BFD_RELOC_SPARC_TLS_LE_HIX22,
  38194. + BFD_RELOC_SPARC_TLS_LE_LOX10,
  38195. + BFD_RELOC_SPARC_TLS_DTPMOD32,
  38196. + BFD_RELOC_SPARC_TLS_DTPMOD64,
  38197. + BFD_RELOC_SPARC_TLS_DTPOFF32,
  38198. + BFD_RELOC_SPARC_TLS_DTPOFF64,
  38199. + BFD_RELOC_SPARC_TLS_TPOFF32,
  38200. + BFD_RELOC_SPARC_TLS_TPOFF64,
  38201. +
  38202. +/* SPU Relocations. */
  38203. + BFD_RELOC_SPU_IMM7,
  38204. + BFD_RELOC_SPU_IMM8,
  38205. + BFD_RELOC_SPU_IMM10,
  38206. + BFD_RELOC_SPU_IMM10W,
  38207. + BFD_RELOC_SPU_IMM16,
  38208. + BFD_RELOC_SPU_IMM16W,
  38209. + BFD_RELOC_SPU_IMM18,
  38210. + BFD_RELOC_SPU_PCREL9a,
  38211. + BFD_RELOC_SPU_PCREL9b,
  38212. + BFD_RELOC_SPU_PCREL16,
  38213. + BFD_RELOC_SPU_LO16,
  38214. + BFD_RELOC_SPU_HI16,
  38215. + BFD_RELOC_SPU_PPU32,
  38216. + BFD_RELOC_SPU_PPU64,
  38217. +
  38218. +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
  38219. +"addend" in some special way.
  38220. +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
  38221. +writing; when reading, it will be the absolute section symbol. The
  38222. +addend is the displacement in bytes of the "lda" instruction from
  38223. +the "ldah" instruction (which is at the address of this reloc). */
  38224. + BFD_RELOC_ALPHA_GPDISP_HI16,
  38225. +
  38226. +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
  38227. +with GPDISP_HI16 relocs. The addend is ignored when writing the
  38228. +relocations out, and is filled in with the file's GP value on
  38229. +reading, for convenience. */
  38230. + BFD_RELOC_ALPHA_GPDISP_LO16,
  38231. +
  38232. +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
  38233. +relocation except that there is no accompanying GPDISP_LO16
  38234. +relocation. */
  38235. + BFD_RELOC_ALPHA_GPDISP,
  38236. +
  38237. +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
  38238. +the assembler turns it into a LDQ instruction to load the address of
  38239. +the symbol, and then fills in a register in the real instruction.
  38240. +
  38241. +The LITERAL reloc, at the LDQ instruction, refers to the .lita
  38242. +section symbol. The addend is ignored when writing, but is filled
  38243. +in with the file's GP value on reading, for convenience, as with the
  38244. +GPDISP_LO16 reloc.
  38245. +
  38246. +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
  38247. +It should refer to the symbol to be referenced, as with 16_GOTOFF,
  38248. +but it generates output not based on the position within the .got
  38249. +section, but relative to the GP value chosen for the file during the
  38250. +final link stage.
  38251. +
  38252. +The LITUSE reloc, on the instruction using the loaded address, gives
  38253. +information to the linker that it might be able to use to optimize
  38254. +away some literal section references. The symbol is ignored (read
  38255. +as the absolute section symbol), and the "addend" indicates the type
  38256. +of instruction using the register:
  38257. +1 - "memory" fmt insn
  38258. +2 - byte-manipulation (byte offset reg)
  38259. +3 - jsr (target of branch) */
  38260. + BFD_RELOC_ALPHA_LITERAL,
  38261. + BFD_RELOC_ALPHA_ELF_LITERAL,
  38262. + BFD_RELOC_ALPHA_LITUSE,
  38263. +
  38264. +/* The HINT relocation indicates a value that should be filled into the
  38265. +"hint" field of a jmp/jsr/ret instruction, for possible branch-
  38266. +prediction logic which may be provided on some processors. */
  38267. + BFD_RELOC_ALPHA_HINT,
  38268. +
  38269. +/* The LINKAGE relocation outputs a linkage pair in the object file,
  38270. +which is filled by the linker. */
  38271. + BFD_RELOC_ALPHA_LINKAGE,
  38272. +
  38273. +/* The CODEADDR relocation outputs a STO_CA in the object file,
  38274. +which is filled by the linker. */
  38275. + BFD_RELOC_ALPHA_CODEADDR,
  38276. +
  38277. +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
  38278. +GP register. */
  38279. + BFD_RELOC_ALPHA_GPREL_HI16,
  38280. + BFD_RELOC_ALPHA_GPREL_LO16,
  38281. +
  38282. +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
  38283. +share a common GP, and the target address is adjusted for
  38284. +STO_ALPHA_STD_GPLOAD. */
  38285. + BFD_RELOC_ALPHA_BRSGP,
  38286. +
  38287. +/* Alpha thread-local storage relocations. */
  38288. + BFD_RELOC_ALPHA_TLSGD,
  38289. + BFD_RELOC_ALPHA_TLSLDM,
  38290. + BFD_RELOC_ALPHA_DTPMOD64,
  38291. + BFD_RELOC_ALPHA_GOTDTPREL16,
  38292. + BFD_RELOC_ALPHA_DTPREL64,
  38293. + BFD_RELOC_ALPHA_DTPREL_HI16,
  38294. + BFD_RELOC_ALPHA_DTPREL_LO16,
  38295. + BFD_RELOC_ALPHA_DTPREL16,
  38296. + BFD_RELOC_ALPHA_GOTTPREL16,
  38297. + BFD_RELOC_ALPHA_TPREL64,
  38298. + BFD_RELOC_ALPHA_TPREL_HI16,
  38299. + BFD_RELOC_ALPHA_TPREL_LO16,
  38300. + BFD_RELOC_ALPHA_TPREL16,
  38301. +
  38302. +/* Bits 27..2 of the relocation address shifted right 2 bits;
  38303. +simple reloc otherwise. */
  38304. + BFD_RELOC_MIPS_JMP,
  38305. +
  38306. +/* The MIPS16 jump instruction. */
  38307. + BFD_RELOC_MIPS16_JMP,
  38308. +
  38309. +/* MIPS16 GP relative reloc. */
  38310. + BFD_RELOC_MIPS16_GPREL,
  38311. +
  38312. +/* High 16 bits of 32-bit value; simple reloc. */
  38313. + BFD_RELOC_HI16,
  38314. +
  38315. +/* High 16 bits of 32-bit value but the low 16 bits will be sign
  38316. +extended and added to form the final result. If the low 16
  38317. +bits form a negative number, we need to add one to the high value
  38318. +to compensate for the borrow when the low bits are added. */
  38319. + BFD_RELOC_HI16_S,
  38320. +
  38321. +/* Low 16 bits. */
  38322. + BFD_RELOC_LO16,
  38323. +
  38324. +/* High 16 bits of 32-bit pc-relative value */
  38325. + BFD_RELOC_HI16_PCREL,
  38326. +
  38327. +/* High 16 bits of 32-bit pc-relative value, adjusted */
  38328. + BFD_RELOC_HI16_S_PCREL,
  38329. +
  38330. +/* Low 16 bits of pc-relative value */
  38331. + BFD_RELOC_LO16_PCREL,
  38332. +
  38333. +/* MIPS16 high 16 bits of 32-bit value. */
  38334. + BFD_RELOC_MIPS16_HI16,
  38335. +
  38336. +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
  38337. +extended and added to form the final result. If the low 16
  38338. +bits form a negative number, we need to add one to the high value
  38339. +to compensate for the borrow when the low bits are added. */
  38340. + BFD_RELOC_MIPS16_HI16_S,
  38341. +
  38342. +/* MIPS16 low 16 bits. */
  38343. + BFD_RELOC_MIPS16_LO16,
  38344. +
  38345. +/* Relocation against a MIPS literal section. */
  38346. + BFD_RELOC_MIPS_LITERAL,
  38347. +
  38348. +/* MIPS ELF relocations. */
  38349. + BFD_RELOC_MIPS_GOT16,
  38350. + BFD_RELOC_MIPS_CALL16,
  38351. + BFD_RELOC_MIPS_GOT_HI16,
  38352. + BFD_RELOC_MIPS_GOT_LO16,
  38353. + BFD_RELOC_MIPS_CALL_HI16,
  38354. + BFD_RELOC_MIPS_CALL_LO16,
  38355. + BFD_RELOC_MIPS_SUB,
  38356. + BFD_RELOC_MIPS_GOT_PAGE,
  38357. + BFD_RELOC_MIPS_GOT_OFST,
  38358. + BFD_RELOC_MIPS_GOT_DISP,
  38359. + BFD_RELOC_MIPS_SHIFT5,
  38360. + BFD_RELOC_MIPS_SHIFT6,
  38361. + BFD_RELOC_MIPS_INSERT_A,
  38362. + BFD_RELOC_MIPS_INSERT_B,
  38363. + BFD_RELOC_MIPS_DELETE,
  38364. + BFD_RELOC_MIPS_HIGHEST,
  38365. + BFD_RELOC_MIPS_HIGHER,
  38366. + BFD_RELOC_MIPS_SCN_DISP,
  38367. + BFD_RELOC_MIPS_REL16,
  38368. + BFD_RELOC_MIPS_RELGOT,
  38369. + BFD_RELOC_MIPS_JALR,
  38370. + BFD_RELOC_MIPS_TLS_DTPMOD32,
  38371. + BFD_RELOC_MIPS_TLS_DTPREL32,
  38372. + BFD_RELOC_MIPS_TLS_DTPMOD64,
  38373. + BFD_RELOC_MIPS_TLS_DTPREL64,
  38374. + BFD_RELOC_MIPS_TLS_GD,
  38375. + BFD_RELOC_MIPS_TLS_LDM,
  38376. + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
  38377. + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
  38378. + BFD_RELOC_MIPS_TLS_GOTTPREL,
  38379. + BFD_RELOC_MIPS_TLS_TPREL32,
  38380. + BFD_RELOC_MIPS_TLS_TPREL64,
  38381. + BFD_RELOC_MIPS_TLS_TPREL_HI16,
  38382. + BFD_RELOC_MIPS_TLS_TPREL_LO16,
  38383. +
  38384. +
  38385. +/* MIPS ELF relocations (VxWorks extensions). */
  38386. + BFD_RELOC_MIPS_COPY,
  38387. + BFD_RELOC_MIPS_JUMP_SLOT,
  38388. +
  38389. +
  38390. +/* Fujitsu Frv Relocations. */
  38391. + BFD_RELOC_FRV_LABEL16,
  38392. + BFD_RELOC_FRV_LABEL24,
  38393. + BFD_RELOC_FRV_LO16,
  38394. + BFD_RELOC_FRV_HI16,
  38395. + BFD_RELOC_FRV_GPREL12,
  38396. + BFD_RELOC_FRV_GPRELU12,
  38397. + BFD_RELOC_FRV_GPREL32,
  38398. + BFD_RELOC_FRV_GPRELHI,
  38399. + BFD_RELOC_FRV_GPRELLO,
  38400. + BFD_RELOC_FRV_GOT12,
  38401. + BFD_RELOC_FRV_GOTHI,
  38402. + BFD_RELOC_FRV_GOTLO,
  38403. + BFD_RELOC_FRV_FUNCDESC,
  38404. + BFD_RELOC_FRV_FUNCDESC_GOT12,
  38405. + BFD_RELOC_FRV_FUNCDESC_GOTHI,
  38406. + BFD_RELOC_FRV_FUNCDESC_GOTLO,
  38407. + BFD_RELOC_FRV_FUNCDESC_VALUE,
  38408. + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
  38409. + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
  38410. + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
  38411. + BFD_RELOC_FRV_GOTOFF12,
  38412. + BFD_RELOC_FRV_GOTOFFHI,
  38413. + BFD_RELOC_FRV_GOTOFFLO,
  38414. + BFD_RELOC_FRV_GETTLSOFF,
  38415. + BFD_RELOC_FRV_TLSDESC_VALUE,
  38416. + BFD_RELOC_FRV_GOTTLSDESC12,
  38417. + BFD_RELOC_FRV_GOTTLSDESCHI,
  38418. + BFD_RELOC_FRV_GOTTLSDESCLO,
  38419. + BFD_RELOC_FRV_TLSMOFF12,
  38420. + BFD_RELOC_FRV_TLSMOFFHI,
  38421. + BFD_RELOC_FRV_TLSMOFFLO,
  38422. + BFD_RELOC_FRV_GOTTLSOFF12,
  38423. + BFD_RELOC_FRV_GOTTLSOFFHI,
  38424. + BFD_RELOC_FRV_GOTTLSOFFLO,
  38425. + BFD_RELOC_FRV_TLSOFF,
  38426. + BFD_RELOC_FRV_TLSDESC_RELAX,
  38427. + BFD_RELOC_FRV_GETTLSOFF_RELAX,
  38428. + BFD_RELOC_FRV_TLSOFF_RELAX,
  38429. + BFD_RELOC_FRV_TLSMOFF,
  38430. +
  38431. +
  38432. +/* This is a 24bit GOT-relative reloc for the mn10300. */
  38433. + BFD_RELOC_MN10300_GOTOFF24,
  38434. +
  38435. +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
  38436. +in the instruction. */
  38437. + BFD_RELOC_MN10300_GOT32,
  38438. +
  38439. +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
  38440. +in the instruction. */
  38441. + BFD_RELOC_MN10300_GOT24,
  38442. +
  38443. +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
  38444. +in the instruction. */
  38445. + BFD_RELOC_MN10300_GOT16,
  38446. +
  38447. +/* Copy symbol at runtime. */
  38448. + BFD_RELOC_MN10300_COPY,
  38449. +
  38450. +/* Create GOT entry. */
  38451. + BFD_RELOC_MN10300_GLOB_DAT,
  38452. +
  38453. +/* Create PLT entry. */
  38454. + BFD_RELOC_MN10300_JMP_SLOT,
  38455. +
  38456. +/* Adjust by program base. */
  38457. + BFD_RELOC_MN10300_RELATIVE,
  38458. +
  38459. +
  38460. +/* i386/elf relocations */
  38461. + BFD_RELOC_386_GOT32,
  38462. + BFD_RELOC_386_PLT32,
  38463. + BFD_RELOC_386_COPY,
  38464. + BFD_RELOC_386_GLOB_DAT,
  38465. + BFD_RELOC_386_JUMP_SLOT,
  38466. + BFD_RELOC_386_RELATIVE,
  38467. + BFD_RELOC_386_GOTOFF,
  38468. + BFD_RELOC_386_GOTPC,
  38469. + BFD_RELOC_386_TLS_TPOFF,
  38470. + BFD_RELOC_386_TLS_IE,
  38471. + BFD_RELOC_386_TLS_GOTIE,
  38472. + BFD_RELOC_386_TLS_LE,
  38473. + BFD_RELOC_386_TLS_GD,
  38474. + BFD_RELOC_386_TLS_LDM,
  38475. + BFD_RELOC_386_TLS_LDO_32,
  38476. + BFD_RELOC_386_TLS_IE_32,
  38477. + BFD_RELOC_386_TLS_LE_32,
  38478. + BFD_RELOC_386_TLS_DTPMOD32,
  38479. + BFD_RELOC_386_TLS_DTPOFF32,
  38480. + BFD_RELOC_386_TLS_TPOFF32,
  38481. + BFD_RELOC_386_TLS_GOTDESC,
  38482. + BFD_RELOC_386_TLS_DESC_CALL,
  38483. + BFD_RELOC_386_TLS_DESC,
  38484. +
  38485. +/* x86-64/elf relocations */
  38486. + BFD_RELOC_X86_64_GOT32,
  38487. + BFD_RELOC_X86_64_PLT32,
  38488. + BFD_RELOC_X86_64_COPY,
  38489. + BFD_RELOC_X86_64_GLOB_DAT,
  38490. + BFD_RELOC_X86_64_JUMP_SLOT,
  38491. + BFD_RELOC_X86_64_RELATIVE,
  38492. + BFD_RELOC_X86_64_GOTPCREL,
  38493. + BFD_RELOC_X86_64_32S,
  38494. + BFD_RELOC_X86_64_DTPMOD64,
  38495. + BFD_RELOC_X86_64_DTPOFF64,
  38496. + BFD_RELOC_X86_64_TPOFF64,
  38497. + BFD_RELOC_X86_64_TLSGD,
  38498. + BFD_RELOC_X86_64_TLSLD,
  38499. + BFD_RELOC_X86_64_DTPOFF32,
  38500. + BFD_RELOC_X86_64_GOTTPOFF,
  38501. + BFD_RELOC_X86_64_TPOFF32,
  38502. + BFD_RELOC_X86_64_GOTOFF64,
  38503. + BFD_RELOC_X86_64_GOTPC32,
  38504. + BFD_RELOC_X86_64_GOT64,
  38505. + BFD_RELOC_X86_64_GOTPCREL64,
  38506. + BFD_RELOC_X86_64_GOTPC64,
  38507. + BFD_RELOC_X86_64_GOTPLT64,
  38508. + BFD_RELOC_X86_64_PLTOFF64,
  38509. + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
  38510. + BFD_RELOC_X86_64_TLSDESC_CALL,
  38511. + BFD_RELOC_X86_64_TLSDESC,
  38512. +
  38513. +/* ns32k relocations */
  38514. + BFD_RELOC_NS32K_IMM_8,
  38515. + BFD_RELOC_NS32K_IMM_16,
  38516. + BFD_RELOC_NS32K_IMM_32,
  38517. + BFD_RELOC_NS32K_IMM_8_PCREL,
  38518. + BFD_RELOC_NS32K_IMM_16_PCREL,
  38519. + BFD_RELOC_NS32K_IMM_32_PCREL,
  38520. + BFD_RELOC_NS32K_DISP_8,
  38521. + BFD_RELOC_NS32K_DISP_16,
  38522. + BFD_RELOC_NS32K_DISP_32,
  38523. + BFD_RELOC_NS32K_DISP_8_PCREL,
  38524. + BFD_RELOC_NS32K_DISP_16_PCREL,
  38525. + BFD_RELOC_NS32K_DISP_32_PCREL,
  38526. +
  38527. +/* PDP11 relocations */
  38528. + BFD_RELOC_PDP11_DISP_8_PCREL,
  38529. + BFD_RELOC_PDP11_DISP_6_PCREL,
  38530. +
  38531. +/* Picojava relocs. Not all of these appear in object files. */
  38532. + BFD_RELOC_PJ_CODE_HI16,
  38533. + BFD_RELOC_PJ_CODE_LO16,
  38534. + BFD_RELOC_PJ_CODE_DIR16,
  38535. + BFD_RELOC_PJ_CODE_DIR32,
  38536. + BFD_RELOC_PJ_CODE_REL16,
  38537. + BFD_RELOC_PJ_CODE_REL32,
  38538. +
  38539. +/* Power(rs6000) and PowerPC relocations. */
  38540. + BFD_RELOC_PPC_B26,
  38541. + BFD_RELOC_PPC_BA26,
  38542. + BFD_RELOC_PPC_TOC16,
  38543. + BFD_RELOC_PPC_B16,
  38544. + BFD_RELOC_PPC_B16_BRTAKEN,
  38545. + BFD_RELOC_PPC_B16_BRNTAKEN,
  38546. + BFD_RELOC_PPC_BA16,
  38547. + BFD_RELOC_PPC_BA16_BRTAKEN,
  38548. + BFD_RELOC_PPC_BA16_BRNTAKEN,
  38549. + BFD_RELOC_PPC_COPY,
  38550. + BFD_RELOC_PPC_GLOB_DAT,
  38551. + BFD_RELOC_PPC_JMP_SLOT,
  38552. + BFD_RELOC_PPC_RELATIVE,
  38553. + BFD_RELOC_PPC_LOCAL24PC,
  38554. + BFD_RELOC_PPC_EMB_NADDR32,
  38555. + BFD_RELOC_PPC_EMB_NADDR16,
  38556. + BFD_RELOC_PPC_EMB_NADDR16_LO,
  38557. + BFD_RELOC_PPC_EMB_NADDR16_HI,
  38558. + BFD_RELOC_PPC_EMB_NADDR16_HA,
  38559. + BFD_RELOC_PPC_EMB_SDAI16,
  38560. + BFD_RELOC_PPC_EMB_SDA2I16,
  38561. + BFD_RELOC_PPC_EMB_SDA2REL,
  38562. + BFD_RELOC_PPC_EMB_SDA21,
  38563. + BFD_RELOC_PPC_EMB_MRKREF,
  38564. + BFD_RELOC_PPC_EMB_RELSEC16,
  38565. + BFD_RELOC_PPC_EMB_RELST_LO,
  38566. + BFD_RELOC_PPC_EMB_RELST_HI,
  38567. + BFD_RELOC_PPC_EMB_RELST_HA,
  38568. + BFD_RELOC_PPC_EMB_BIT_FLD,
  38569. + BFD_RELOC_PPC_EMB_RELSDA,
  38570. + BFD_RELOC_PPC64_HIGHER,
  38571. + BFD_RELOC_PPC64_HIGHER_S,
  38572. + BFD_RELOC_PPC64_HIGHEST,
  38573. + BFD_RELOC_PPC64_HIGHEST_S,
  38574. + BFD_RELOC_PPC64_TOC16_LO,
  38575. + BFD_RELOC_PPC64_TOC16_HI,
  38576. + BFD_RELOC_PPC64_TOC16_HA,
  38577. + BFD_RELOC_PPC64_TOC,
  38578. + BFD_RELOC_PPC64_PLTGOT16,
  38579. + BFD_RELOC_PPC64_PLTGOT16_LO,
  38580. + BFD_RELOC_PPC64_PLTGOT16_HI,
  38581. + BFD_RELOC_PPC64_PLTGOT16_HA,
  38582. + BFD_RELOC_PPC64_ADDR16_DS,
  38583. + BFD_RELOC_PPC64_ADDR16_LO_DS,
  38584. + BFD_RELOC_PPC64_GOT16_DS,
  38585. + BFD_RELOC_PPC64_GOT16_LO_DS,
  38586. + BFD_RELOC_PPC64_PLT16_LO_DS,
  38587. + BFD_RELOC_PPC64_SECTOFF_DS,
  38588. + BFD_RELOC_PPC64_SECTOFF_LO_DS,
  38589. + BFD_RELOC_PPC64_TOC16_DS,
  38590. + BFD_RELOC_PPC64_TOC16_LO_DS,
  38591. + BFD_RELOC_PPC64_PLTGOT16_DS,
  38592. + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
  38593. +
  38594. +/* PowerPC and PowerPC64 thread-local storage relocations. */
  38595. + BFD_RELOC_PPC_TLS,
  38596. + BFD_RELOC_PPC_DTPMOD,
  38597. + BFD_RELOC_PPC_TPREL16,
  38598. + BFD_RELOC_PPC_TPREL16_LO,
  38599. + BFD_RELOC_PPC_TPREL16_HI,
  38600. + BFD_RELOC_PPC_TPREL16_HA,
  38601. + BFD_RELOC_PPC_TPREL,
  38602. + BFD_RELOC_PPC_DTPREL16,
  38603. + BFD_RELOC_PPC_DTPREL16_LO,
  38604. + BFD_RELOC_PPC_DTPREL16_HI,
  38605. + BFD_RELOC_PPC_DTPREL16_HA,
  38606. + BFD_RELOC_PPC_DTPREL,
  38607. + BFD_RELOC_PPC_GOT_TLSGD16,
  38608. + BFD_RELOC_PPC_GOT_TLSGD16_LO,
  38609. + BFD_RELOC_PPC_GOT_TLSGD16_HI,
  38610. + BFD_RELOC_PPC_GOT_TLSGD16_HA,
  38611. + BFD_RELOC_PPC_GOT_TLSLD16,
  38612. + BFD_RELOC_PPC_GOT_TLSLD16_LO,
  38613. + BFD_RELOC_PPC_GOT_TLSLD16_HI,
  38614. + BFD_RELOC_PPC_GOT_TLSLD16_HA,
  38615. + BFD_RELOC_PPC_GOT_TPREL16,
  38616. + BFD_RELOC_PPC_GOT_TPREL16_LO,
  38617. + BFD_RELOC_PPC_GOT_TPREL16_HI,
  38618. + BFD_RELOC_PPC_GOT_TPREL16_HA,
  38619. + BFD_RELOC_PPC_GOT_DTPREL16,
  38620. + BFD_RELOC_PPC_GOT_DTPREL16_LO,
  38621. + BFD_RELOC_PPC_GOT_DTPREL16_HI,
  38622. + BFD_RELOC_PPC_GOT_DTPREL16_HA,
  38623. + BFD_RELOC_PPC64_TPREL16_DS,
  38624. + BFD_RELOC_PPC64_TPREL16_LO_DS,
  38625. + BFD_RELOC_PPC64_TPREL16_HIGHER,
  38626. + BFD_RELOC_PPC64_TPREL16_HIGHERA,
  38627. + BFD_RELOC_PPC64_TPREL16_HIGHEST,
  38628. + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
  38629. + BFD_RELOC_PPC64_DTPREL16_DS,
  38630. + BFD_RELOC_PPC64_DTPREL16_LO_DS,
  38631. + BFD_RELOC_PPC64_DTPREL16_HIGHER,
  38632. + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
  38633. + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
  38634. + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
  38635. +
  38636. +/* IBM 370/390 relocations */
  38637. + BFD_RELOC_I370_D12,
  38638. +
  38639. +/* The type of reloc used to build a constructor table - at the moment
  38640. +probably a 32 bit wide absolute relocation, but the target can choose.
  38641. +It generally does map to one of the other relocation types. */
  38642. + BFD_RELOC_CTOR,
  38643. +
  38644. +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
  38645. +not stored in the instruction. */
  38646. + BFD_RELOC_ARM_PCREL_BRANCH,
  38647. +
  38648. +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
  38649. +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  38650. +field in the instruction. */
  38651. + BFD_RELOC_ARM_PCREL_BLX,
  38652. +
  38653. +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
  38654. +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  38655. +field in the instruction. */
  38656. + BFD_RELOC_THUMB_PCREL_BLX,
  38657. +
  38658. +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
  38659. + BFD_RELOC_ARM_PCREL_CALL,
  38660. +
  38661. +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
  38662. + BFD_RELOC_ARM_PCREL_JUMP,
  38663. +
  38664. +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
  38665. +The lowest bit must be zero and is not stored in the instruction.
  38666. +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
  38667. +"nn" one smaller in all cases. Note further that BRANCH23
  38668. +corresponds to R_ARM_THM_CALL. */
  38669. + BFD_RELOC_THUMB_PCREL_BRANCH7,
  38670. + BFD_RELOC_THUMB_PCREL_BRANCH9,
  38671. + BFD_RELOC_THUMB_PCREL_BRANCH12,
  38672. + BFD_RELOC_THUMB_PCREL_BRANCH20,
  38673. + BFD_RELOC_THUMB_PCREL_BRANCH23,
  38674. + BFD_RELOC_THUMB_PCREL_BRANCH25,
  38675. +
  38676. +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
  38677. + BFD_RELOC_ARM_OFFSET_IMM,
  38678. +
  38679. +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
  38680. + BFD_RELOC_ARM_THUMB_OFFSET,
  38681. +
  38682. +/* Pc-relative or absolute relocation depending on target. Used for
  38683. +entries in .init_array sections. */
  38684. + BFD_RELOC_ARM_TARGET1,
  38685. +
  38686. +/* Read-only segment base relative address. */
  38687. + BFD_RELOC_ARM_ROSEGREL32,
  38688. +
  38689. +/* Data segment base relative address. */
  38690. + BFD_RELOC_ARM_SBREL32,
  38691. +
  38692. +/* This reloc is used for references to RTTI data from exception handling
  38693. +tables. The actual definition depends on the target. It may be a
  38694. +pc-relative or some form of GOT-indirect relocation. */
  38695. + BFD_RELOC_ARM_TARGET2,
  38696. +
  38697. +/* 31-bit PC relative address. */
  38698. + BFD_RELOC_ARM_PREL31,
  38699. +
  38700. +/* Low and High halfword relocations for MOVW and MOVT instructions. */
  38701. + BFD_RELOC_ARM_MOVW,
  38702. + BFD_RELOC_ARM_MOVT,
  38703. + BFD_RELOC_ARM_MOVW_PCREL,
  38704. + BFD_RELOC_ARM_MOVT_PCREL,
  38705. + BFD_RELOC_ARM_THUMB_MOVW,
  38706. + BFD_RELOC_ARM_THUMB_MOVT,
  38707. + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
  38708. + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
  38709. +
  38710. +/* Relocations for setting up GOTs and PLTs for shared libraries. */
  38711. + BFD_RELOC_ARM_JUMP_SLOT,
  38712. + BFD_RELOC_ARM_GLOB_DAT,
  38713. + BFD_RELOC_ARM_GOT32,
  38714. + BFD_RELOC_ARM_PLT32,
  38715. + BFD_RELOC_ARM_RELATIVE,
  38716. + BFD_RELOC_ARM_GOTOFF,
  38717. + BFD_RELOC_ARM_GOTPC,
  38718. +
  38719. +/* ARM thread-local storage relocations. */
  38720. + BFD_RELOC_ARM_TLS_GD32,
  38721. + BFD_RELOC_ARM_TLS_LDO32,
  38722. + BFD_RELOC_ARM_TLS_LDM32,
  38723. + BFD_RELOC_ARM_TLS_DTPOFF32,
  38724. + BFD_RELOC_ARM_TLS_DTPMOD32,
  38725. + BFD_RELOC_ARM_TLS_TPOFF32,
  38726. + BFD_RELOC_ARM_TLS_IE32,
  38727. + BFD_RELOC_ARM_TLS_LE32,
  38728. +
  38729. +/* ARM group relocations. */
  38730. + BFD_RELOC_ARM_ALU_PC_G0_NC,
  38731. + BFD_RELOC_ARM_ALU_PC_G0,
  38732. + BFD_RELOC_ARM_ALU_PC_G1_NC,
  38733. + BFD_RELOC_ARM_ALU_PC_G1,
  38734. + BFD_RELOC_ARM_ALU_PC_G2,
  38735. + BFD_RELOC_ARM_LDR_PC_G0,
  38736. + BFD_RELOC_ARM_LDR_PC_G1,
  38737. + BFD_RELOC_ARM_LDR_PC_G2,
  38738. + BFD_RELOC_ARM_LDRS_PC_G0,
  38739. + BFD_RELOC_ARM_LDRS_PC_G1,
  38740. + BFD_RELOC_ARM_LDRS_PC_G2,
  38741. + BFD_RELOC_ARM_LDC_PC_G0,
  38742. + BFD_RELOC_ARM_LDC_PC_G1,
  38743. + BFD_RELOC_ARM_LDC_PC_G2,
  38744. + BFD_RELOC_ARM_ALU_SB_G0_NC,
  38745. + BFD_RELOC_ARM_ALU_SB_G0,
  38746. + BFD_RELOC_ARM_ALU_SB_G1_NC,
  38747. + BFD_RELOC_ARM_ALU_SB_G1,
  38748. + BFD_RELOC_ARM_ALU_SB_G2,
  38749. + BFD_RELOC_ARM_LDR_SB_G0,
  38750. + BFD_RELOC_ARM_LDR_SB_G1,
  38751. + BFD_RELOC_ARM_LDR_SB_G2,
  38752. + BFD_RELOC_ARM_LDRS_SB_G0,
  38753. + BFD_RELOC_ARM_LDRS_SB_G1,
  38754. + BFD_RELOC_ARM_LDRS_SB_G2,
  38755. + BFD_RELOC_ARM_LDC_SB_G0,
  38756. + BFD_RELOC_ARM_LDC_SB_G1,
  38757. + BFD_RELOC_ARM_LDC_SB_G2,
  38758. +
  38759. +/* These relocs are only used within the ARM assembler. They are not
  38760. +(at present) written to any object files. */
  38761. + BFD_RELOC_ARM_IMMEDIATE,
  38762. + BFD_RELOC_ARM_ADRL_IMMEDIATE,
  38763. + BFD_RELOC_ARM_T32_IMMEDIATE,
  38764. + BFD_RELOC_ARM_T32_ADD_IMM,
  38765. + BFD_RELOC_ARM_T32_IMM12,
  38766. + BFD_RELOC_ARM_T32_ADD_PC12,
  38767. + BFD_RELOC_ARM_SHIFT_IMM,
  38768. + BFD_RELOC_ARM_SMC,
  38769. + BFD_RELOC_ARM_SWI,
  38770. + BFD_RELOC_ARM_MULTI,
  38771. + BFD_RELOC_ARM_CP_OFF_IMM,
  38772. + BFD_RELOC_ARM_CP_OFF_IMM_S2,
  38773. + BFD_RELOC_ARM_T32_CP_OFF_IMM,
  38774. + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
  38775. + BFD_RELOC_ARM_ADR_IMM,
  38776. + BFD_RELOC_ARM_LDR_IMM,
  38777. + BFD_RELOC_ARM_LITERAL,
  38778. + BFD_RELOC_ARM_IN_POOL,
  38779. + BFD_RELOC_ARM_OFFSET_IMM8,
  38780. + BFD_RELOC_ARM_T32_OFFSET_U8,
  38781. + BFD_RELOC_ARM_T32_OFFSET_IMM,
  38782. + BFD_RELOC_ARM_HWLITERAL,
  38783. + BFD_RELOC_ARM_THUMB_ADD,
  38784. + BFD_RELOC_ARM_THUMB_IMM,
  38785. + BFD_RELOC_ARM_THUMB_SHIFT,
  38786. +
  38787. +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
  38788. + BFD_RELOC_SH_PCDISP8BY2,
  38789. + BFD_RELOC_SH_PCDISP12BY2,
  38790. + BFD_RELOC_SH_IMM3,
  38791. + BFD_RELOC_SH_IMM3U,
  38792. + BFD_RELOC_SH_DISP12,
  38793. + BFD_RELOC_SH_DISP12BY2,
  38794. + BFD_RELOC_SH_DISP12BY4,
  38795. + BFD_RELOC_SH_DISP12BY8,
  38796. + BFD_RELOC_SH_DISP20,
  38797. + BFD_RELOC_SH_DISP20BY8,
  38798. + BFD_RELOC_SH_IMM4,
  38799. + BFD_RELOC_SH_IMM4BY2,
  38800. + BFD_RELOC_SH_IMM4BY4,
  38801. + BFD_RELOC_SH_IMM8,
  38802. + BFD_RELOC_SH_IMM8BY2,
  38803. + BFD_RELOC_SH_IMM8BY4,
  38804. + BFD_RELOC_SH_PCRELIMM8BY2,
  38805. + BFD_RELOC_SH_PCRELIMM8BY4,
  38806. + BFD_RELOC_SH_SWITCH16,
  38807. + BFD_RELOC_SH_SWITCH32,
  38808. + BFD_RELOC_SH_USES,
  38809. + BFD_RELOC_SH_COUNT,
  38810. + BFD_RELOC_SH_ALIGN,
  38811. + BFD_RELOC_SH_CODE,
  38812. + BFD_RELOC_SH_DATA,
  38813. + BFD_RELOC_SH_LABEL,
  38814. + BFD_RELOC_SH_LOOP_START,
  38815. + BFD_RELOC_SH_LOOP_END,
  38816. + BFD_RELOC_SH_COPY,
  38817. + BFD_RELOC_SH_GLOB_DAT,
  38818. + BFD_RELOC_SH_JMP_SLOT,
  38819. + BFD_RELOC_SH_RELATIVE,
  38820. + BFD_RELOC_SH_GOTPC,
  38821. + BFD_RELOC_SH_GOT_LOW16,
  38822. + BFD_RELOC_SH_GOT_MEDLOW16,
  38823. + BFD_RELOC_SH_GOT_MEDHI16,
  38824. + BFD_RELOC_SH_GOT_HI16,
  38825. + BFD_RELOC_SH_GOTPLT_LOW16,
  38826. + BFD_RELOC_SH_GOTPLT_MEDLOW16,
  38827. + BFD_RELOC_SH_GOTPLT_MEDHI16,
  38828. + BFD_RELOC_SH_GOTPLT_HI16,
  38829. + BFD_RELOC_SH_PLT_LOW16,
  38830. + BFD_RELOC_SH_PLT_MEDLOW16,
  38831. + BFD_RELOC_SH_PLT_MEDHI16,
  38832. + BFD_RELOC_SH_PLT_HI16,
  38833. + BFD_RELOC_SH_GOTOFF_LOW16,
  38834. + BFD_RELOC_SH_GOTOFF_MEDLOW16,
  38835. + BFD_RELOC_SH_GOTOFF_MEDHI16,
  38836. + BFD_RELOC_SH_GOTOFF_HI16,
  38837. + BFD_RELOC_SH_GOTPC_LOW16,
  38838. + BFD_RELOC_SH_GOTPC_MEDLOW16,
  38839. + BFD_RELOC_SH_GOTPC_MEDHI16,
  38840. + BFD_RELOC_SH_GOTPC_HI16,
  38841. + BFD_RELOC_SH_COPY64,
  38842. + BFD_RELOC_SH_GLOB_DAT64,
  38843. + BFD_RELOC_SH_JMP_SLOT64,
  38844. + BFD_RELOC_SH_RELATIVE64,
  38845. + BFD_RELOC_SH_GOT10BY4,
  38846. + BFD_RELOC_SH_GOT10BY8,
  38847. + BFD_RELOC_SH_GOTPLT10BY4,
  38848. + BFD_RELOC_SH_GOTPLT10BY8,
  38849. + BFD_RELOC_SH_GOTPLT32,
  38850. + BFD_RELOC_SH_SHMEDIA_CODE,
  38851. + BFD_RELOC_SH_IMMU5,
  38852. + BFD_RELOC_SH_IMMS6,
  38853. + BFD_RELOC_SH_IMMS6BY32,
  38854. + BFD_RELOC_SH_IMMU6,
  38855. + BFD_RELOC_SH_IMMS10,
  38856. + BFD_RELOC_SH_IMMS10BY2,
  38857. + BFD_RELOC_SH_IMMS10BY4,
  38858. + BFD_RELOC_SH_IMMS10BY8,
  38859. + BFD_RELOC_SH_IMMS16,
  38860. + BFD_RELOC_SH_IMMU16,
  38861. + BFD_RELOC_SH_IMM_LOW16,
  38862. + BFD_RELOC_SH_IMM_LOW16_PCREL,
  38863. + BFD_RELOC_SH_IMM_MEDLOW16,
  38864. + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
  38865. + BFD_RELOC_SH_IMM_MEDHI16,
  38866. + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
  38867. + BFD_RELOC_SH_IMM_HI16,
  38868. + BFD_RELOC_SH_IMM_HI16_PCREL,
  38869. + BFD_RELOC_SH_PT_16,
  38870. + BFD_RELOC_SH_TLS_GD_32,
  38871. + BFD_RELOC_SH_TLS_LD_32,
  38872. + BFD_RELOC_SH_TLS_LDO_32,
  38873. + BFD_RELOC_SH_TLS_IE_32,
  38874. + BFD_RELOC_SH_TLS_LE_32,
  38875. + BFD_RELOC_SH_TLS_DTPMOD32,
  38876. + BFD_RELOC_SH_TLS_DTPOFF32,
  38877. + BFD_RELOC_SH_TLS_TPOFF32,
  38878. +
  38879. +/* ARC Cores relocs.
  38880. +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
  38881. +not stored in the instruction. The high 20 bits are installed in bits 26
  38882. +through 7 of the instruction. */
  38883. + BFD_RELOC_ARC_B22_PCREL,
  38884. +
  38885. +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
  38886. +stored in the instruction. The high 24 bits are installed in bits 23
  38887. +through 0. */
  38888. + BFD_RELOC_ARC_B26,
  38889. +
  38890. +/* ADI Blackfin 16 bit immediate absolute reloc. */
  38891. + BFD_RELOC_BFIN_16_IMM,
  38892. +
  38893. +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
  38894. + BFD_RELOC_BFIN_16_HIGH,
  38895. +
  38896. +/* ADI Blackfin 'a' part of LSETUP. */
  38897. + BFD_RELOC_BFIN_4_PCREL,
  38898. +
  38899. +/* ADI Blackfin. */
  38900. + BFD_RELOC_BFIN_5_PCREL,
  38901. +
  38902. +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
  38903. + BFD_RELOC_BFIN_16_LOW,
  38904. +
  38905. +/* ADI Blackfin. */
  38906. + BFD_RELOC_BFIN_10_PCREL,
  38907. +
  38908. +/* ADI Blackfin 'b' part of LSETUP. */
  38909. + BFD_RELOC_BFIN_11_PCREL,
  38910. +
  38911. +/* ADI Blackfin. */
  38912. + BFD_RELOC_BFIN_12_PCREL_JUMP,
  38913. +
  38914. +/* ADI Blackfin Short jump, pcrel. */
  38915. + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
  38916. +
  38917. +/* ADI Blackfin Call.x not implemented. */
  38918. + BFD_RELOC_BFIN_24_PCREL_CALL_X,
  38919. +
  38920. +/* ADI Blackfin Long Jump pcrel. */
  38921. + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
  38922. +
  38923. +/* ADI Blackfin FD-PIC relocations. */
  38924. + BFD_RELOC_BFIN_GOT17M4,
  38925. + BFD_RELOC_BFIN_GOTHI,
  38926. + BFD_RELOC_BFIN_GOTLO,
  38927. + BFD_RELOC_BFIN_FUNCDESC,
  38928. + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
  38929. + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
  38930. + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
  38931. + BFD_RELOC_BFIN_FUNCDESC_VALUE,
  38932. + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
  38933. + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
  38934. + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
  38935. + BFD_RELOC_BFIN_GOTOFF17M4,
  38936. + BFD_RELOC_BFIN_GOTOFFHI,
  38937. + BFD_RELOC_BFIN_GOTOFFLO,
  38938. +
  38939. +/* ADI Blackfin GOT relocation. */
  38940. + BFD_RELOC_BFIN_GOT,
  38941. +
  38942. +/* ADI Blackfin PLTPC relocation. */
  38943. + BFD_RELOC_BFIN_PLTPC,
  38944. +
  38945. +/* ADI Blackfin arithmetic relocation. */
  38946. + BFD_ARELOC_BFIN_PUSH,
  38947. +
  38948. +/* ADI Blackfin arithmetic relocation. */
  38949. + BFD_ARELOC_BFIN_CONST,
  38950. +
  38951. +/* ADI Blackfin arithmetic relocation. */
  38952. + BFD_ARELOC_BFIN_ADD,
  38953. +
  38954. +/* ADI Blackfin arithmetic relocation. */
  38955. + BFD_ARELOC_BFIN_SUB,
  38956. +
  38957. +/* ADI Blackfin arithmetic relocation. */
  38958. + BFD_ARELOC_BFIN_MULT,
  38959. +
  38960. +/* ADI Blackfin arithmetic relocation. */
  38961. + BFD_ARELOC_BFIN_DIV,
  38962. +
  38963. +/* ADI Blackfin arithmetic relocation. */
  38964. + BFD_ARELOC_BFIN_MOD,
  38965. +
  38966. +/* ADI Blackfin arithmetic relocation. */
  38967. + BFD_ARELOC_BFIN_LSHIFT,
  38968. +
  38969. +/* ADI Blackfin arithmetic relocation. */
  38970. + BFD_ARELOC_BFIN_RSHIFT,
  38971. +
  38972. +/* ADI Blackfin arithmetic relocation. */
  38973. + BFD_ARELOC_BFIN_AND,
  38974. +
  38975. +/* ADI Blackfin arithmetic relocation. */
  38976. + BFD_ARELOC_BFIN_OR,
  38977. +
  38978. +/* ADI Blackfin arithmetic relocation. */
  38979. + BFD_ARELOC_BFIN_XOR,
  38980. +
  38981. +/* ADI Blackfin arithmetic relocation. */
  38982. + BFD_ARELOC_BFIN_LAND,
  38983. +
  38984. +/* ADI Blackfin arithmetic relocation. */
  38985. + BFD_ARELOC_BFIN_LOR,
  38986. +
  38987. +/* ADI Blackfin arithmetic relocation. */
  38988. + BFD_ARELOC_BFIN_LEN,
  38989. +
  38990. +/* ADI Blackfin arithmetic relocation. */
  38991. + BFD_ARELOC_BFIN_NEG,
  38992. +
  38993. +/* ADI Blackfin arithmetic relocation. */
  38994. + BFD_ARELOC_BFIN_COMP,
  38995. +
  38996. +/* ADI Blackfin arithmetic relocation. */
  38997. + BFD_ARELOC_BFIN_PAGE,
  38998. +
  38999. +/* ADI Blackfin arithmetic relocation. */
  39000. + BFD_ARELOC_BFIN_HWPAGE,
  39001. +
  39002. +/* ADI Blackfin arithmetic relocation. */
  39003. + BFD_ARELOC_BFIN_ADDR,
  39004. +
  39005. +/* Mitsubishi D10V relocs.
  39006. +This is a 10-bit reloc with the right 2 bits
  39007. +assumed to be 0. */
  39008. + BFD_RELOC_D10V_10_PCREL_R,
  39009. +
  39010. +/* Mitsubishi D10V relocs.
  39011. +This is a 10-bit reloc with the right 2 bits
  39012. +assumed to be 0. This is the same as the previous reloc
  39013. +except it is in the left container, i.e.,
  39014. +shifted left 15 bits. */
  39015. + BFD_RELOC_D10V_10_PCREL_L,
  39016. +
  39017. +/* This is an 18-bit reloc with the right 2 bits
  39018. +assumed to be 0. */
  39019. + BFD_RELOC_D10V_18,
  39020. +
  39021. +/* This is an 18-bit reloc with the right 2 bits
  39022. +assumed to be 0. */
  39023. + BFD_RELOC_D10V_18_PCREL,
  39024. +
  39025. +/* Mitsubishi D30V relocs.
  39026. +This is a 6-bit absolute reloc. */
  39027. + BFD_RELOC_D30V_6,
  39028. +
  39029. +/* This is a 6-bit pc-relative reloc with
  39030. +the right 3 bits assumed to be 0. */
  39031. + BFD_RELOC_D30V_9_PCREL,
  39032. +
  39033. +/* This is a 6-bit pc-relative reloc with
  39034. +the right 3 bits assumed to be 0. Same
  39035. +as the previous reloc but on the right side
  39036. +of the container. */
  39037. + BFD_RELOC_D30V_9_PCREL_R,
  39038. +
  39039. +/* This is a 12-bit absolute reloc with the
  39040. +right 3 bitsassumed to be 0. */
  39041. + BFD_RELOC_D30V_15,
  39042. +
  39043. +/* This is a 12-bit pc-relative reloc with
  39044. +the right 3 bits assumed to be 0. */
  39045. + BFD_RELOC_D30V_15_PCREL,
  39046. +
  39047. +/* This is a 12-bit pc-relative reloc with
  39048. +the right 3 bits assumed to be 0. Same
  39049. +as the previous reloc but on the right side
  39050. +of the container. */
  39051. + BFD_RELOC_D30V_15_PCREL_R,
  39052. +
  39053. +/* This is an 18-bit absolute reloc with
  39054. +the right 3 bits assumed to be 0. */
  39055. + BFD_RELOC_D30V_21,
  39056. +
  39057. +/* This is an 18-bit pc-relative reloc with
  39058. +the right 3 bits assumed to be 0. */
  39059. + BFD_RELOC_D30V_21_PCREL,
  39060. +
  39061. +/* This is an 18-bit pc-relative reloc with
  39062. +the right 3 bits assumed to be 0. Same
  39063. +as the previous reloc but on the right side
  39064. +of the container. */
  39065. + BFD_RELOC_D30V_21_PCREL_R,
  39066. +
  39067. +/* This is a 32-bit absolute reloc. */
  39068. + BFD_RELOC_D30V_32,
  39069. +
  39070. +/* This is a 32-bit pc-relative reloc. */
  39071. + BFD_RELOC_D30V_32_PCREL,
  39072. +
  39073. +/* DLX relocs */
  39074. + BFD_RELOC_DLX_HI16_S,
  39075. +
  39076. +/* DLX relocs */
  39077. + BFD_RELOC_DLX_LO16,
  39078. +
  39079. +/* DLX relocs */
  39080. + BFD_RELOC_DLX_JMP26,
  39081. +
  39082. +/* Renesas M16C/M32C Relocations. */
  39083. + BFD_RELOC_M32C_HI8,
  39084. + BFD_RELOC_M32C_RL_JUMP,
  39085. + BFD_RELOC_M32C_RL_1ADDR,
  39086. + BFD_RELOC_M32C_RL_2ADDR,
  39087. +
  39088. +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
  39089. +This is a 24 bit absolute address. */
  39090. + BFD_RELOC_M32R_24,
  39091. +
  39092. +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
  39093. + BFD_RELOC_M32R_10_PCREL,
  39094. +
  39095. +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
  39096. + BFD_RELOC_M32R_18_PCREL,
  39097. +
  39098. +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
  39099. + BFD_RELOC_M32R_26_PCREL,
  39100. +
  39101. +/* This is a 16-bit reloc containing the high 16 bits of an address
  39102. +used when the lower 16 bits are treated as unsigned. */
  39103. + BFD_RELOC_M32R_HI16_ULO,
  39104. +
  39105. +/* This is a 16-bit reloc containing the high 16 bits of an address
  39106. +used when the lower 16 bits are treated as signed. */
  39107. + BFD_RELOC_M32R_HI16_SLO,
  39108. +
  39109. +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
  39110. + BFD_RELOC_M32R_LO16,
  39111. +
  39112. +/* This is a 16-bit reloc containing the small data area offset for use in
  39113. +add3, load, and store instructions. */
  39114. + BFD_RELOC_M32R_SDA16,
  39115. +
  39116. +/* For PIC. */
  39117. + BFD_RELOC_M32R_GOT24,
  39118. + BFD_RELOC_M32R_26_PLTREL,
  39119. + BFD_RELOC_M32R_COPY,
  39120. + BFD_RELOC_M32R_GLOB_DAT,
  39121. + BFD_RELOC_M32R_JMP_SLOT,
  39122. + BFD_RELOC_M32R_RELATIVE,
  39123. + BFD_RELOC_M32R_GOTOFF,
  39124. + BFD_RELOC_M32R_GOTOFF_HI_ULO,
  39125. + BFD_RELOC_M32R_GOTOFF_HI_SLO,
  39126. + BFD_RELOC_M32R_GOTOFF_LO,
  39127. + BFD_RELOC_M32R_GOTPC24,
  39128. + BFD_RELOC_M32R_GOT16_HI_ULO,
  39129. + BFD_RELOC_M32R_GOT16_HI_SLO,
  39130. + BFD_RELOC_M32R_GOT16_LO,
  39131. + BFD_RELOC_M32R_GOTPC_HI_ULO,
  39132. + BFD_RELOC_M32R_GOTPC_HI_SLO,
  39133. + BFD_RELOC_M32R_GOTPC_LO,
  39134. +
  39135. +/* This is a 9-bit reloc */
  39136. + BFD_RELOC_V850_9_PCREL,
  39137. +
  39138. +/* This is a 22-bit reloc */
  39139. + BFD_RELOC_V850_22_PCREL,
  39140. +
  39141. +/* This is a 16 bit offset from the short data area pointer. */
  39142. + BFD_RELOC_V850_SDA_16_16_OFFSET,
  39143. +
  39144. +/* This is a 16 bit offset (of which only 15 bits are used) from the
  39145. +short data area pointer. */
  39146. + BFD_RELOC_V850_SDA_15_16_OFFSET,
  39147. +
  39148. +/* This is a 16 bit offset from the zero data area pointer. */
  39149. + BFD_RELOC_V850_ZDA_16_16_OFFSET,
  39150. +
  39151. +/* This is a 16 bit offset (of which only 15 bits are used) from the
  39152. +zero data area pointer. */
  39153. + BFD_RELOC_V850_ZDA_15_16_OFFSET,
  39154. +
  39155. +/* This is an 8 bit offset (of which only 6 bits are used) from the
  39156. +tiny data area pointer. */
  39157. + BFD_RELOC_V850_TDA_6_8_OFFSET,
  39158. +
  39159. +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
  39160. +data area pointer. */
  39161. + BFD_RELOC_V850_TDA_7_8_OFFSET,
  39162. +
  39163. +/* This is a 7 bit offset from the tiny data area pointer. */
  39164. + BFD_RELOC_V850_TDA_7_7_OFFSET,
  39165. +
  39166. +/* This is a 16 bit offset from the tiny data area pointer. */
  39167. + BFD_RELOC_V850_TDA_16_16_OFFSET,
  39168. +
  39169. +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
  39170. +data area pointer. */
  39171. + BFD_RELOC_V850_TDA_4_5_OFFSET,
  39172. +
  39173. +/* This is a 4 bit offset from the tiny data area pointer. */
  39174. + BFD_RELOC_V850_TDA_4_4_OFFSET,
  39175. +
  39176. +/* This is a 16 bit offset from the short data area pointer, with the
  39177. +bits placed non-contiguously in the instruction. */
  39178. + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
  39179. +
  39180. +/* This is a 16 bit offset from the zero data area pointer, with the
  39181. +bits placed non-contiguously in the instruction. */
  39182. + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
  39183. +
  39184. +/* This is a 6 bit offset from the call table base pointer. */
  39185. + BFD_RELOC_V850_CALLT_6_7_OFFSET,
  39186. +
  39187. +/* This is a 16 bit offset from the call table base pointer. */
  39188. + BFD_RELOC_V850_CALLT_16_16_OFFSET,
  39189. +
  39190. +/* Used for relaxing indirect function calls. */
  39191. + BFD_RELOC_V850_LONGCALL,
  39192. +
  39193. +/* Used for relaxing indirect jumps. */
  39194. + BFD_RELOC_V850_LONGJUMP,
  39195. +
  39196. +/* Used to maintain alignment whilst relaxing. */
  39197. + BFD_RELOC_V850_ALIGN,
  39198. +
  39199. +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
  39200. +instructions. */
  39201. + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
  39202. +
  39203. +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
  39204. +instruction. */
  39205. + BFD_RELOC_MN10300_32_PCREL,
  39206. +
  39207. +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
  39208. +instruction. */
  39209. + BFD_RELOC_MN10300_16_PCREL,
  39210. +
  39211. +/* This is a 8bit DP reloc for the tms320c30, where the most
  39212. +significant 8 bits of a 24 bit word are placed into the least
  39213. +significant 8 bits of the opcode. */
  39214. + BFD_RELOC_TIC30_LDP,
  39215. +
  39216. +/* This is a 7bit reloc for the tms320c54x, where the least
  39217. +significant 7 bits of a 16 bit word are placed into the least
  39218. +significant 7 bits of the opcode. */
  39219. + BFD_RELOC_TIC54X_PARTLS7,
  39220. +
  39221. +/* This is a 9bit DP reloc for the tms320c54x, where the most
  39222. +significant 9 bits of a 16 bit word are placed into the least
  39223. +significant 9 bits of the opcode. */
  39224. + BFD_RELOC_TIC54X_PARTMS9,
  39225. +
  39226. +/* This is an extended address 23-bit reloc for the tms320c54x. */
  39227. + BFD_RELOC_TIC54X_23,
  39228. +
  39229. +/* This is a 16-bit reloc for the tms320c54x, where the least
  39230. +significant 16 bits of a 23-bit extended address are placed into
  39231. +the opcode. */
  39232. + BFD_RELOC_TIC54X_16_OF_23,
  39233. +
  39234. +/* This is a reloc for the tms320c54x, where the most
  39235. +significant 7 bits of a 23-bit extended address are placed into
  39236. +the opcode. */
  39237. + BFD_RELOC_TIC54X_MS7_OF_23,
  39238. +
  39239. +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
  39240. + BFD_RELOC_FR30_48,
  39241. +
  39242. +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
  39243. +two sections. */
  39244. + BFD_RELOC_FR30_20,
  39245. +
  39246. +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
  39247. +4 bits. */
  39248. + BFD_RELOC_FR30_6_IN_4,
  39249. +
  39250. +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
  39251. +into 8 bits. */
  39252. + BFD_RELOC_FR30_8_IN_8,
  39253. +
  39254. +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
  39255. +into 8 bits. */
  39256. + BFD_RELOC_FR30_9_IN_8,
  39257. +
  39258. +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
  39259. +into 8 bits. */
  39260. + BFD_RELOC_FR30_10_IN_8,
  39261. +
  39262. +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
  39263. +short offset into 8 bits. */
  39264. + BFD_RELOC_FR30_9_PCREL,
  39265. +
  39266. +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
  39267. +short offset into 11 bits. */
  39268. + BFD_RELOC_FR30_12_PCREL,
  39269. +
  39270. +/* Motorola Mcore relocations. */
  39271. + BFD_RELOC_MCORE_PCREL_IMM8BY4,
  39272. + BFD_RELOC_MCORE_PCREL_IMM11BY2,
  39273. + BFD_RELOC_MCORE_PCREL_IMM4BY2,
  39274. + BFD_RELOC_MCORE_PCREL_32,
  39275. + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
  39276. + BFD_RELOC_MCORE_RVA,
  39277. +
  39278. +/* Toshiba Media Processor Relocations. */
  39279. + BFD_RELOC_MEP_8,
  39280. + BFD_RELOC_MEP_16,
  39281. + BFD_RELOC_MEP_32,
  39282. + BFD_RELOC_MEP_PCREL8A2,
  39283. + BFD_RELOC_MEP_PCREL12A2,
  39284. + BFD_RELOC_MEP_PCREL17A2,
  39285. + BFD_RELOC_MEP_PCREL24A2,
  39286. + BFD_RELOC_MEP_PCABS24A2,
  39287. + BFD_RELOC_MEP_LOW16,
  39288. + BFD_RELOC_MEP_HI16U,
  39289. + BFD_RELOC_MEP_HI16S,
  39290. + BFD_RELOC_MEP_GPREL,
  39291. + BFD_RELOC_MEP_TPREL,
  39292. + BFD_RELOC_MEP_TPREL7,
  39293. + BFD_RELOC_MEP_TPREL7A2,
  39294. + BFD_RELOC_MEP_TPREL7A4,
  39295. + BFD_RELOC_MEP_UIMM24,
  39296. + BFD_RELOC_MEP_ADDR24A4,
  39297. + BFD_RELOC_MEP_GNU_VTINHERIT,
  39298. + BFD_RELOC_MEP_GNU_VTENTRY,
  39299. +
  39300. +
  39301. +/* These are relocations for the GETA instruction. */
  39302. + BFD_RELOC_MMIX_GETA,
  39303. + BFD_RELOC_MMIX_GETA_1,
  39304. + BFD_RELOC_MMIX_GETA_2,
  39305. + BFD_RELOC_MMIX_GETA_3,
  39306. +
  39307. +/* These are relocations for a conditional branch instruction. */
  39308. + BFD_RELOC_MMIX_CBRANCH,
  39309. + BFD_RELOC_MMIX_CBRANCH_J,
  39310. + BFD_RELOC_MMIX_CBRANCH_1,
  39311. + BFD_RELOC_MMIX_CBRANCH_2,
  39312. + BFD_RELOC_MMIX_CBRANCH_3,
  39313. +
  39314. +/* These are relocations for the PUSHJ instruction. */
  39315. + BFD_RELOC_MMIX_PUSHJ,
  39316. + BFD_RELOC_MMIX_PUSHJ_1,
  39317. + BFD_RELOC_MMIX_PUSHJ_2,
  39318. + BFD_RELOC_MMIX_PUSHJ_3,
  39319. + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
  39320. +
  39321. +/* These are relocations for the JMP instruction. */
  39322. + BFD_RELOC_MMIX_JMP,
  39323. + BFD_RELOC_MMIX_JMP_1,
  39324. + BFD_RELOC_MMIX_JMP_2,
  39325. + BFD_RELOC_MMIX_JMP_3,
  39326. +
  39327. +/* This is a relocation for a relative address as in a GETA instruction or
  39328. +a branch. */
  39329. + BFD_RELOC_MMIX_ADDR19,
  39330. +
  39331. +/* This is a relocation for a relative address as in a JMP instruction. */
  39332. + BFD_RELOC_MMIX_ADDR27,
  39333. +
  39334. +/* This is a relocation for an instruction field that may be a general
  39335. +register or a value 0..255. */
  39336. + BFD_RELOC_MMIX_REG_OR_BYTE,
  39337. +
  39338. +/* This is a relocation for an instruction field that may be a general
  39339. +register. */
  39340. + BFD_RELOC_MMIX_REG,
  39341. +
  39342. +/* This is a relocation for two instruction fields holding a register and
  39343. +an offset, the equivalent of the relocation. */
  39344. + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
  39345. +
  39346. +/* This relocation is an assertion that the expression is not allocated as
  39347. +a global register. It does not modify contents. */
  39348. + BFD_RELOC_MMIX_LOCAL,
  39349. +
  39350. +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
  39351. +short offset into 7 bits. */
  39352. + BFD_RELOC_AVR_7_PCREL,
  39353. +
  39354. +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
  39355. +short offset into 12 bits. */
  39356. + BFD_RELOC_AVR_13_PCREL,
  39357. +
  39358. +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
  39359. +program memory address) into 16 bits. */
  39360. + BFD_RELOC_AVR_16_PM,
  39361. +
  39362. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  39363. +data memory address) into 8 bit immediate value of LDI insn. */
  39364. + BFD_RELOC_AVR_LO8_LDI,
  39365. +
  39366. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  39367. +of data memory address) into 8 bit immediate value of LDI insn. */
  39368. + BFD_RELOC_AVR_HI8_LDI,
  39369. +
  39370. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  39371. +of program memory address) into 8 bit immediate value of LDI insn. */
  39372. + BFD_RELOC_AVR_HH8_LDI,
  39373. +
  39374. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  39375. +of 32 bit value) into 8 bit immediate value of LDI insn. */
  39376. + BFD_RELOC_AVR_MS8_LDI,
  39377. +
  39378. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39379. +(usually data memory address) into 8 bit immediate value of SUBI insn. */
  39380. + BFD_RELOC_AVR_LO8_LDI_NEG,
  39381. +
  39382. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39383. +(high 8 bit of data memory address) into 8 bit immediate value of
  39384. +SUBI insn. */
  39385. + BFD_RELOC_AVR_HI8_LDI_NEG,
  39386. +
  39387. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39388. +(most high 8 bit of program memory address) into 8 bit immediate value
  39389. +of LDI or SUBI insn. */
  39390. + BFD_RELOC_AVR_HH8_LDI_NEG,
  39391. +
  39392. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
  39393. +of 32 bit value) into 8 bit immediate value of LDI insn. */
  39394. + BFD_RELOC_AVR_MS8_LDI_NEG,
  39395. +
  39396. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  39397. +command address) into 8 bit immediate value of LDI insn. */
  39398. + BFD_RELOC_AVR_LO8_LDI_PM,
  39399. +
  39400. +/* This is a 16 bit reloc for the AVR that stores 8 bit value
  39401. +(command address) into 8 bit immediate value of LDI insn. If the address
  39402. +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  39403. +in the lower 128k. */
  39404. + BFD_RELOC_AVR_LO8_LDI_GS,
  39405. +
  39406. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  39407. +of command address) into 8 bit immediate value of LDI insn. */
  39408. + BFD_RELOC_AVR_HI8_LDI_PM,
  39409. +
  39410. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  39411. +of command address) into 8 bit immediate value of LDI insn. If the address
  39412. +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  39413. +below 128k. */
  39414. + BFD_RELOC_AVR_HI8_LDI_GS,
  39415. +
  39416. +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  39417. +of command address) into 8 bit immediate value of LDI insn. */
  39418. + BFD_RELOC_AVR_HH8_LDI_PM,
  39419. +
  39420. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39421. +(usually command address) into 8 bit immediate value of SUBI insn. */
  39422. + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
  39423. +
  39424. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39425. +(high 8 bit of 16 bit command address) into 8 bit immediate value
  39426. +of SUBI insn. */
  39427. + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
  39428. +
  39429. +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
  39430. +(high 6 bit of 22 bit command address) into 8 bit immediate
  39431. +value of SUBI insn. */
  39432. + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
  39433. +
  39434. +/* This is a 32 bit reloc for the AVR that stores 23 bit value
  39435. +into 22 bits. */
  39436. + BFD_RELOC_AVR_CALL,
  39437. +
  39438. +/* This is a 16 bit reloc for the AVR that stores all needed bits
  39439. +for absolute addressing with ldi with overflow check to linktime */
  39440. + BFD_RELOC_AVR_LDI,
  39441. +
  39442. +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
  39443. +instructions */
  39444. + BFD_RELOC_AVR_6,
  39445. +
  39446. +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
  39447. +instructions */
  39448. + BFD_RELOC_AVR_6_ADIW,
  39449. +
  39450. +/* Difference between two labels: L2 - L1. The value of L1 is encoded
  39451. +as sym + addend, while the initial difference after assembly is
  39452. +inserted into the object file by the assembler. */
  39453. + BFD_RELOC_AVR32_DIFF32,
  39454. + BFD_RELOC_AVR32_DIFF16,
  39455. + BFD_RELOC_AVR32_DIFF8,
  39456. +
  39457. +/* Reference to a symbol through the Global Offset Table. The linker
  39458. +will allocate an entry for symbol in the GOT and insert the offset
  39459. +of this entry as the relocation value. */
  39460. + BFD_RELOC_AVR32_GOT32,
  39461. + BFD_RELOC_AVR32_GOT16,
  39462. + BFD_RELOC_AVR32_GOT8,
  39463. +
  39464. +/* Normal (non-pc-relative) code relocations. Alignment and signedness
  39465. +is indicated by the suffixes. S means signed, U means unsigned. W
  39466. +means word-aligned, H means halfword-aligned, neither means
  39467. +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
  39468. + BFD_RELOC_AVR32_21S,
  39469. + BFD_RELOC_AVR32_16U,
  39470. + BFD_RELOC_AVR32_16S,
  39471. + BFD_RELOC_AVR32_SUB5,
  39472. + BFD_RELOC_AVR32_8S_EXT,
  39473. + BFD_RELOC_AVR32_8S,
  39474. + BFD_RELOC_AVR32_15S,
  39475. +
  39476. +/* PC-relative relocations are signed if neither 'U' nor 'S' is
  39477. +specified. However, we explicitly tack on a 'B' to indicate no
  39478. +alignment, to avoid confusion with data relocs. All of these resolve
  39479. +to sym + addend - offset, except the one with 'N' (negated) suffix.
  39480. +This particular one resolves to offset - sym - addend. */
  39481. + BFD_RELOC_AVR32_22H_PCREL,
  39482. + BFD_RELOC_AVR32_18W_PCREL,
  39483. + BFD_RELOC_AVR32_16B_PCREL,
  39484. + BFD_RELOC_AVR32_16N_PCREL,
  39485. + BFD_RELOC_AVR32_14UW_PCREL,
  39486. + BFD_RELOC_AVR32_11H_PCREL,
  39487. + BFD_RELOC_AVR32_10UW_PCREL,
  39488. + BFD_RELOC_AVR32_9H_PCREL,
  39489. + BFD_RELOC_AVR32_9UW_PCREL,
  39490. +
  39491. +/* Subtract the link-time address of the GOT from (symbol + addend)
  39492. +and insert the result. */
  39493. + BFD_RELOC_AVR32_GOTPC,
  39494. +
  39495. +/* Reference to a symbol through the GOT. The linker will allocate an
  39496. +entry for symbol in the GOT and insert the offset of this entry as
  39497. +the relocation value. addend must be zero. As usual, 'S' means
  39498. +signed, 'W' means word-aligned, etc. */
  39499. + BFD_RELOC_AVR32_GOTCALL,
  39500. + BFD_RELOC_AVR32_LDA_GOT,
  39501. + BFD_RELOC_AVR32_GOT21S,
  39502. + BFD_RELOC_AVR32_GOT18SW,
  39503. + BFD_RELOC_AVR32_GOT16S,
  39504. +
  39505. +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
  39506. +a whole lot of sense. */
  39507. + BFD_RELOC_AVR32_32_CPENT,
  39508. +
  39509. +/* Constant pool references. Some of these relocations are signed,
  39510. +others are unsigned. It doesn't really matter, since the constant
  39511. +pool always comes after the code that references it. */
  39512. + BFD_RELOC_AVR32_CPCALL,
  39513. + BFD_RELOC_AVR32_16_CP,
  39514. + BFD_RELOC_AVR32_9W_CP,
  39515. +
  39516. +/* sym must be the absolute symbol. The addend specifies the alignment
  39517. +order, e.g. if addend is 2, the linker must add padding so that the
  39518. +next address is aligned to a 4-byte boundary. */
  39519. + BFD_RELOC_AVR32_ALIGN,
  39520. +
  39521. +/* Code relocations that will never make it to the output file. */
  39522. + BFD_RELOC_AVR32_14UW,
  39523. + BFD_RELOC_AVR32_10UW,
  39524. + BFD_RELOC_AVR32_10SW,
  39525. + BFD_RELOC_AVR32_STHH_W,
  39526. + BFD_RELOC_AVR32_7UW,
  39527. + BFD_RELOC_AVR32_6S,
  39528. + BFD_RELOC_AVR32_6UW,
  39529. + BFD_RELOC_AVR32_4UH,
  39530. + BFD_RELOC_AVR32_3U,
  39531. +
  39532. +/* Direct 12 bit. */
  39533. + BFD_RELOC_390_12,
  39534. +
  39535. +/* 12 bit GOT offset. */
  39536. + BFD_RELOC_390_GOT12,
  39537. +
  39538. +/* 32 bit PC relative PLT address. */
  39539. + BFD_RELOC_390_PLT32,
  39540. +
  39541. +/* Copy symbol at runtime. */
  39542. + BFD_RELOC_390_COPY,
  39543. +
  39544. +/* Create GOT entry. */
  39545. + BFD_RELOC_390_GLOB_DAT,
  39546. +
  39547. +/* Create PLT entry. */
  39548. + BFD_RELOC_390_JMP_SLOT,
  39549. +
  39550. +/* Adjust by program base. */
  39551. + BFD_RELOC_390_RELATIVE,
  39552. +
  39553. +/* 32 bit PC relative offset to GOT. */
  39554. + BFD_RELOC_390_GOTPC,
  39555. +
  39556. +/* 16 bit GOT offset. */
  39557. + BFD_RELOC_390_GOT16,
  39558. +
  39559. +/* PC relative 16 bit shifted by 1. */
  39560. + BFD_RELOC_390_PC16DBL,
  39561. +
  39562. +/* 16 bit PC rel. PLT shifted by 1. */
  39563. + BFD_RELOC_390_PLT16DBL,
  39564. +
  39565. +/* PC relative 32 bit shifted by 1. */
  39566. + BFD_RELOC_390_PC32DBL,
  39567. +
  39568. +/* 32 bit PC rel. PLT shifted by 1. */
  39569. + BFD_RELOC_390_PLT32DBL,
  39570. +
  39571. +/* 32 bit PC rel. GOT shifted by 1. */
  39572. + BFD_RELOC_390_GOTPCDBL,
  39573. +
  39574. +/* 64 bit GOT offset. */
  39575. + BFD_RELOC_390_GOT64,
  39576. +
  39577. +/* 64 bit PC relative PLT address. */
  39578. + BFD_RELOC_390_PLT64,
  39579. +
  39580. +/* 32 bit rel. offset to GOT entry. */
  39581. + BFD_RELOC_390_GOTENT,
  39582. +
  39583. +/* 64 bit offset to GOT. */
  39584. + BFD_RELOC_390_GOTOFF64,
  39585. +
  39586. +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
  39587. + BFD_RELOC_390_GOTPLT12,
  39588. +
  39589. +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
  39590. + BFD_RELOC_390_GOTPLT16,
  39591. +
  39592. +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
  39593. + BFD_RELOC_390_GOTPLT32,
  39594. +
  39595. +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
  39596. + BFD_RELOC_390_GOTPLT64,
  39597. +
  39598. +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
  39599. + BFD_RELOC_390_GOTPLTENT,
  39600. +
  39601. +/* 16-bit rel. offset from the GOT to a PLT entry. */
  39602. + BFD_RELOC_390_PLTOFF16,
  39603. +
  39604. +/* 32-bit rel. offset from the GOT to a PLT entry. */
  39605. + BFD_RELOC_390_PLTOFF32,
  39606. +
  39607. +/* 64-bit rel. offset from the GOT to a PLT entry. */
  39608. + BFD_RELOC_390_PLTOFF64,
  39609. +
  39610. +/* s390 tls relocations. */
  39611. + BFD_RELOC_390_TLS_LOAD,
  39612. + BFD_RELOC_390_TLS_GDCALL,
  39613. + BFD_RELOC_390_TLS_LDCALL,
  39614. + BFD_RELOC_390_TLS_GD32,
  39615. + BFD_RELOC_390_TLS_GD64,
  39616. + BFD_RELOC_390_TLS_GOTIE12,
  39617. + BFD_RELOC_390_TLS_GOTIE32,
  39618. + BFD_RELOC_390_TLS_GOTIE64,
  39619. + BFD_RELOC_390_TLS_LDM32,
  39620. + BFD_RELOC_390_TLS_LDM64,
  39621. + BFD_RELOC_390_TLS_IE32,
  39622. + BFD_RELOC_390_TLS_IE64,
  39623. + BFD_RELOC_390_TLS_IEENT,
  39624. + BFD_RELOC_390_TLS_LE32,
  39625. + BFD_RELOC_390_TLS_LE64,
  39626. + BFD_RELOC_390_TLS_LDO32,
  39627. + BFD_RELOC_390_TLS_LDO64,
  39628. + BFD_RELOC_390_TLS_DTPMOD,
  39629. + BFD_RELOC_390_TLS_DTPOFF,
  39630. + BFD_RELOC_390_TLS_TPOFF,
  39631. +
  39632. +/* Long displacement extension. */
  39633. + BFD_RELOC_390_20,
  39634. + BFD_RELOC_390_GOT20,
  39635. + BFD_RELOC_390_GOTPLT20,
  39636. + BFD_RELOC_390_TLS_GOTIE20,
  39637. +
  39638. +/* Score relocations */
  39639. + BFD_RELOC_SCORE_DUMMY1,
  39640. +
  39641. +/* Low 16 bit for load/store */
  39642. + BFD_RELOC_SCORE_GPREL15,
  39643. +
  39644. +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
  39645. + BFD_RELOC_SCORE_DUMMY2,
  39646. + BFD_RELOC_SCORE_JMP,
  39647. +
  39648. +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
  39649. + BFD_RELOC_SCORE_BRANCH,
  39650. +
  39651. +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
  39652. + BFD_RELOC_SCORE16_JMP,
  39653. +
  39654. +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
  39655. + BFD_RELOC_SCORE16_BRANCH,
  39656. +
  39657. +/* Undocumented Score relocs */
  39658. + BFD_RELOC_SCORE_GOT15,
  39659. + BFD_RELOC_SCORE_GOT_LO16,
  39660. + BFD_RELOC_SCORE_CALL15,
  39661. + BFD_RELOC_SCORE_DUMMY_HI16,
  39662. +
  39663. +/* Scenix IP2K - 9-bit register number / data address */
  39664. + BFD_RELOC_IP2K_FR9,
  39665. +
  39666. +/* Scenix IP2K - 4-bit register/data bank number */
  39667. + BFD_RELOC_IP2K_BANK,
  39668. +
  39669. +/* Scenix IP2K - low 13 bits of instruction word address */
  39670. + BFD_RELOC_IP2K_ADDR16CJP,
  39671. +
  39672. +/* Scenix IP2K - high 3 bits of instruction word address */
  39673. + BFD_RELOC_IP2K_PAGE3,
  39674. +
  39675. +/* Scenix IP2K - ext/low/high 8 bits of data address */
  39676. + BFD_RELOC_IP2K_LO8DATA,
  39677. + BFD_RELOC_IP2K_HI8DATA,
  39678. + BFD_RELOC_IP2K_EX8DATA,
  39679. +
  39680. +/* Scenix IP2K - low/high 8 bits of instruction word address */
  39681. + BFD_RELOC_IP2K_LO8INSN,
  39682. + BFD_RELOC_IP2K_HI8INSN,
  39683. +
  39684. +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
  39685. + BFD_RELOC_IP2K_PC_SKIP,
  39686. +
  39687. +/* Scenix IP2K - 16 bit word address in text section. */
  39688. + BFD_RELOC_IP2K_TEXT,
  39689. +
  39690. +/* Scenix IP2K - 7-bit sp or dp offset */
  39691. + BFD_RELOC_IP2K_FR_OFFSET,
  39692. +
  39693. +/* Scenix VPE4K coprocessor - data/insn-space addressing */
  39694. + BFD_RELOC_VPE4KMATH_DATA,
  39695. + BFD_RELOC_VPE4KMATH_INSN,
  39696. +
  39697. +/* These two relocations are used by the linker to determine which of
  39698. +the entries in a C++ virtual function table are actually used. When
  39699. +the --gc-sections option is given, the linker will zero out the entries
  39700. +that are not used, so that the code for those functions need not be
  39701. +included in the output.
  39702. +
  39703. +VTABLE_INHERIT is a zero-space relocation used to describe to the
  39704. +linker the inheritance tree of a C++ virtual function table. The
  39705. +relocation's symbol should be the parent class' vtable, and the
  39706. +relocation should be located at the child vtable.
  39707. +
  39708. +VTABLE_ENTRY is a zero-space relocation that describes the use of a
  39709. +virtual function table entry. The reloc's symbol should refer to the
  39710. +table of the class mentioned in the code. Off of that base, an offset
  39711. +describes the entry that is being used. For Rela hosts, this offset
  39712. +is stored in the reloc's addend. For Rel hosts, we are forced to put
  39713. +this offset in the reloc's section offset. */
  39714. + BFD_RELOC_VTABLE_INHERIT,
  39715. + BFD_RELOC_VTABLE_ENTRY,
  39716. +
  39717. +/* Intel IA64 Relocations. */
  39718. + BFD_RELOC_IA64_IMM14,
  39719. + BFD_RELOC_IA64_IMM22,
  39720. + BFD_RELOC_IA64_IMM64,
  39721. + BFD_RELOC_IA64_DIR32MSB,
  39722. + BFD_RELOC_IA64_DIR32LSB,
  39723. + BFD_RELOC_IA64_DIR64MSB,
  39724. + BFD_RELOC_IA64_DIR64LSB,
  39725. + BFD_RELOC_IA64_GPREL22,
  39726. + BFD_RELOC_IA64_GPREL64I,
  39727. + BFD_RELOC_IA64_GPREL32MSB,
  39728. + BFD_RELOC_IA64_GPREL32LSB,
  39729. + BFD_RELOC_IA64_GPREL64MSB,
  39730. + BFD_RELOC_IA64_GPREL64LSB,
  39731. + BFD_RELOC_IA64_LTOFF22,
  39732. + BFD_RELOC_IA64_LTOFF64I,
  39733. + BFD_RELOC_IA64_PLTOFF22,
  39734. + BFD_RELOC_IA64_PLTOFF64I,
  39735. + BFD_RELOC_IA64_PLTOFF64MSB,
  39736. + BFD_RELOC_IA64_PLTOFF64LSB,
  39737. + BFD_RELOC_IA64_FPTR64I,
  39738. + BFD_RELOC_IA64_FPTR32MSB,
  39739. + BFD_RELOC_IA64_FPTR32LSB,
  39740. + BFD_RELOC_IA64_FPTR64MSB,
  39741. + BFD_RELOC_IA64_FPTR64LSB,
  39742. + BFD_RELOC_IA64_PCREL21B,
  39743. + BFD_RELOC_IA64_PCREL21BI,
  39744. + BFD_RELOC_IA64_PCREL21M,
  39745. + BFD_RELOC_IA64_PCREL21F,
  39746. + BFD_RELOC_IA64_PCREL22,
  39747. + BFD_RELOC_IA64_PCREL60B,
  39748. + BFD_RELOC_IA64_PCREL64I,
  39749. + BFD_RELOC_IA64_PCREL32MSB,
  39750. + BFD_RELOC_IA64_PCREL32LSB,
  39751. + BFD_RELOC_IA64_PCREL64MSB,
  39752. + BFD_RELOC_IA64_PCREL64LSB,
  39753. + BFD_RELOC_IA64_LTOFF_FPTR22,
  39754. + BFD_RELOC_IA64_LTOFF_FPTR64I,
  39755. + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
  39756. + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
  39757. + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
  39758. + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
  39759. + BFD_RELOC_IA64_SEGREL32MSB,
  39760. + BFD_RELOC_IA64_SEGREL32LSB,
  39761. + BFD_RELOC_IA64_SEGREL64MSB,
  39762. + BFD_RELOC_IA64_SEGREL64LSB,
  39763. + BFD_RELOC_IA64_SECREL32MSB,
  39764. + BFD_RELOC_IA64_SECREL32LSB,
  39765. + BFD_RELOC_IA64_SECREL64MSB,
  39766. + BFD_RELOC_IA64_SECREL64LSB,
  39767. + BFD_RELOC_IA64_REL32MSB,
  39768. + BFD_RELOC_IA64_REL32LSB,
  39769. + BFD_RELOC_IA64_REL64MSB,
  39770. + BFD_RELOC_IA64_REL64LSB,
  39771. + BFD_RELOC_IA64_LTV32MSB,
  39772. + BFD_RELOC_IA64_LTV32LSB,
  39773. + BFD_RELOC_IA64_LTV64MSB,
  39774. + BFD_RELOC_IA64_LTV64LSB,
  39775. + BFD_RELOC_IA64_IPLTMSB,
  39776. + BFD_RELOC_IA64_IPLTLSB,
  39777. + BFD_RELOC_IA64_COPY,
  39778. + BFD_RELOC_IA64_LTOFF22X,
  39779. + BFD_RELOC_IA64_LDXMOV,
  39780. + BFD_RELOC_IA64_TPREL14,
  39781. + BFD_RELOC_IA64_TPREL22,
  39782. + BFD_RELOC_IA64_TPREL64I,
  39783. + BFD_RELOC_IA64_TPREL64MSB,
  39784. + BFD_RELOC_IA64_TPREL64LSB,
  39785. + BFD_RELOC_IA64_LTOFF_TPREL22,
  39786. + BFD_RELOC_IA64_DTPMOD64MSB,
  39787. + BFD_RELOC_IA64_DTPMOD64LSB,
  39788. + BFD_RELOC_IA64_LTOFF_DTPMOD22,
  39789. + BFD_RELOC_IA64_DTPREL14,
  39790. + BFD_RELOC_IA64_DTPREL22,
  39791. + BFD_RELOC_IA64_DTPREL64I,
  39792. + BFD_RELOC_IA64_DTPREL32MSB,
  39793. + BFD_RELOC_IA64_DTPREL32LSB,
  39794. + BFD_RELOC_IA64_DTPREL64MSB,
  39795. + BFD_RELOC_IA64_DTPREL64LSB,
  39796. + BFD_RELOC_IA64_LTOFF_DTPREL22,
  39797. +
  39798. +/* Motorola 68HC11 reloc.
  39799. +This is the 8 bit high part of an absolute address. */
  39800. + BFD_RELOC_M68HC11_HI8,
  39801. +
  39802. +/* Motorola 68HC11 reloc.
  39803. +This is the 8 bit low part of an absolute address. */
  39804. + BFD_RELOC_M68HC11_LO8,
  39805. +
  39806. +/* Motorola 68HC11 reloc.
  39807. +This is the 3 bit of a value. */
  39808. + BFD_RELOC_M68HC11_3B,
  39809. +
  39810. +/* Motorola 68HC11 reloc.
  39811. +This reloc marks the beginning of a jump/call instruction.
  39812. +It is used for linker relaxation to correctly identify beginning
  39813. +of instruction and change some branches to use PC-relative
  39814. +addressing mode. */
  39815. + BFD_RELOC_M68HC11_RL_JUMP,
  39816. +
  39817. +/* Motorola 68HC11 reloc.
  39818. +This reloc marks a group of several instructions that gcc generates
  39819. +and for which the linker relaxation pass can modify and/or remove
  39820. +some of them. */
  39821. + BFD_RELOC_M68HC11_RL_GROUP,
  39822. +
  39823. +/* Motorola 68HC11 reloc.
  39824. +This is the 16-bit lower part of an address. It is used for 'call'
  39825. +instruction to specify the symbol address without any special
  39826. +transformation (due to memory bank window). */
  39827. + BFD_RELOC_M68HC11_LO16,
  39828. +
  39829. +/* Motorola 68HC11 reloc.
  39830. +This is a 8-bit reloc that specifies the page number of an address.
  39831. +It is used by 'call' instruction to specify the page number of
  39832. +the symbol. */
  39833. + BFD_RELOC_M68HC11_PAGE,
  39834. +
  39835. +/* Motorola 68HC11 reloc.
  39836. +This is a 24-bit reloc that represents the address with a 16-bit
  39837. +value and a 8-bit page number. The symbol address is transformed
  39838. +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
  39839. + BFD_RELOC_M68HC11_24,
  39840. +
  39841. +/* Motorola 68HC12 reloc.
  39842. +This is the 5 bits of a value. */
  39843. + BFD_RELOC_M68HC12_5B,
  39844. +
  39845. +/* NS CR16C Relocations. */
  39846. + BFD_RELOC_16C_NUM08,
  39847. + BFD_RELOC_16C_NUM08_C,
  39848. + BFD_RELOC_16C_NUM16,
  39849. + BFD_RELOC_16C_NUM16_C,
  39850. + BFD_RELOC_16C_NUM32,
  39851. + BFD_RELOC_16C_NUM32_C,
  39852. + BFD_RELOC_16C_DISP04,
  39853. + BFD_RELOC_16C_DISP04_C,
  39854. + BFD_RELOC_16C_DISP08,
  39855. + BFD_RELOC_16C_DISP08_C,
  39856. + BFD_RELOC_16C_DISP16,
  39857. + BFD_RELOC_16C_DISP16_C,
  39858. + BFD_RELOC_16C_DISP24,
  39859. + BFD_RELOC_16C_DISP24_C,
  39860. + BFD_RELOC_16C_DISP24a,
  39861. + BFD_RELOC_16C_DISP24a_C,
  39862. + BFD_RELOC_16C_REG04,
  39863. + BFD_RELOC_16C_REG04_C,
  39864. + BFD_RELOC_16C_REG04a,
  39865. + BFD_RELOC_16C_REG04a_C,
  39866. + BFD_RELOC_16C_REG14,
  39867. + BFD_RELOC_16C_REG14_C,
  39868. + BFD_RELOC_16C_REG16,
  39869. + BFD_RELOC_16C_REG16_C,
  39870. + BFD_RELOC_16C_REG20,
  39871. + BFD_RELOC_16C_REG20_C,
  39872. + BFD_RELOC_16C_ABS20,
  39873. + BFD_RELOC_16C_ABS20_C,
  39874. + BFD_RELOC_16C_ABS24,
  39875. + BFD_RELOC_16C_ABS24_C,
  39876. + BFD_RELOC_16C_IMM04,
  39877. + BFD_RELOC_16C_IMM04_C,
  39878. + BFD_RELOC_16C_IMM16,
  39879. + BFD_RELOC_16C_IMM16_C,
  39880. + BFD_RELOC_16C_IMM20,
  39881. + BFD_RELOC_16C_IMM20_C,
  39882. + BFD_RELOC_16C_IMM24,
  39883. + BFD_RELOC_16C_IMM24_C,
  39884. + BFD_RELOC_16C_IMM32,
  39885. + BFD_RELOC_16C_IMM32_C,
  39886. +
  39887. +/* NS CR16 Relocations. */
  39888. + BFD_RELOC_CR16_NUM8,
  39889. + BFD_RELOC_CR16_NUM16,
  39890. + BFD_RELOC_CR16_NUM32,
  39891. + BFD_RELOC_CR16_NUM32a,
  39892. + BFD_RELOC_CR16_REGREL0,
  39893. + BFD_RELOC_CR16_REGREL4,
  39894. + BFD_RELOC_CR16_REGREL4a,
  39895. + BFD_RELOC_CR16_REGREL14,
  39896. + BFD_RELOC_CR16_REGREL14a,
  39897. + BFD_RELOC_CR16_REGREL16,
  39898. + BFD_RELOC_CR16_REGREL20,
  39899. + BFD_RELOC_CR16_REGREL20a,
  39900. + BFD_RELOC_CR16_ABS20,
  39901. + BFD_RELOC_CR16_ABS24,
  39902. + BFD_RELOC_CR16_IMM4,
  39903. + BFD_RELOC_CR16_IMM8,
  39904. + BFD_RELOC_CR16_IMM16,
  39905. + BFD_RELOC_CR16_IMM20,
  39906. + BFD_RELOC_CR16_IMM24,
  39907. + BFD_RELOC_CR16_IMM32,
  39908. + BFD_RELOC_CR16_IMM32a,
  39909. + BFD_RELOC_CR16_DISP4,
  39910. + BFD_RELOC_CR16_DISP8,
  39911. + BFD_RELOC_CR16_DISP16,
  39912. + BFD_RELOC_CR16_DISP20,
  39913. + BFD_RELOC_CR16_DISP24,
  39914. + BFD_RELOC_CR16_DISP24a,
  39915. +
  39916. +/* NS CRX Relocations. */
  39917. + BFD_RELOC_CRX_REL4,
  39918. + BFD_RELOC_CRX_REL8,
  39919. + BFD_RELOC_CRX_REL8_CMP,
  39920. + BFD_RELOC_CRX_REL16,
  39921. + BFD_RELOC_CRX_REL24,
  39922. + BFD_RELOC_CRX_REL32,
  39923. + BFD_RELOC_CRX_REGREL12,
  39924. + BFD_RELOC_CRX_REGREL22,
  39925. + BFD_RELOC_CRX_REGREL28,
  39926. + BFD_RELOC_CRX_REGREL32,
  39927. + BFD_RELOC_CRX_ABS16,
  39928. + BFD_RELOC_CRX_ABS32,
  39929. + BFD_RELOC_CRX_NUM8,
  39930. + BFD_RELOC_CRX_NUM16,
  39931. + BFD_RELOC_CRX_NUM32,
  39932. + BFD_RELOC_CRX_IMM16,
  39933. + BFD_RELOC_CRX_IMM32,
  39934. + BFD_RELOC_CRX_SWITCH8,
  39935. + BFD_RELOC_CRX_SWITCH16,
  39936. + BFD_RELOC_CRX_SWITCH32,
  39937. +
  39938. +/* These relocs are only used within the CRIS assembler. They are not
  39939. +(at present) written to any object files. */
  39940. + BFD_RELOC_CRIS_BDISP8,
  39941. + BFD_RELOC_CRIS_UNSIGNED_5,
  39942. + BFD_RELOC_CRIS_SIGNED_6,
  39943. + BFD_RELOC_CRIS_UNSIGNED_6,
  39944. + BFD_RELOC_CRIS_SIGNED_8,
  39945. + BFD_RELOC_CRIS_UNSIGNED_8,
  39946. + BFD_RELOC_CRIS_SIGNED_16,
  39947. + BFD_RELOC_CRIS_UNSIGNED_16,
  39948. + BFD_RELOC_CRIS_LAPCQ_OFFSET,
  39949. + BFD_RELOC_CRIS_UNSIGNED_4,
  39950. +
  39951. +/* Relocs used in ELF shared libraries for CRIS. */
  39952. + BFD_RELOC_CRIS_COPY,
  39953. + BFD_RELOC_CRIS_GLOB_DAT,
  39954. + BFD_RELOC_CRIS_JUMP_SLOT,
  39955. + BFD_RELOC_CRIS_RELATIVE,
  39956. +
  39957. +/* 32-bit offset to symbol-entry within GOT. */
  39958. + BFD_RELOC_CRIS_32_GOT,
  39959. +
  39960. +/* 16-bit offset to symbol-entry within GOT. */
  39961. + BFD_RELOC_CRIS_16_GOT,
  39962. +
  39963. +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
  39964. + BFD_RELOC_CRIS_32_GOTPLT,
  39965. +
  39966. +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
  39967. + BFD_RELOC_CRIS_16_GOTPLT,
  39968. +
  39969. +/* 32-bit offset to symbol, relative to GOT. */
  39970. + BFD_RELOC_CRIS_32_GOTREL,
  39971. +
  39972. +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
  39973. + BFD_RELOC_CRIS_32_PLT_GOTREL,
  39974. +
  39975. +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
  39976. + BFD_RELOC_CRIS_32_PLT_PCREL,
  39977. +
  39978. +/* Intel i860 Relocations. */
  39979. + BFD_RELOC_860_COPY,
  39980. + BFD_RELOC_860_GLOB_DAT,
  39981. + BFD_RELOC_860_JUMP_SLOT,
  39982. + BFD_RELOC_860_RELATIVE,
  39983. + BFD_RELOC_860_PC26,
  39984. + BFD_RELOC_860_PLT26,
  39985. + BFD_RELOC_860_PC16,
  39986. + BFD_RELOC_860_LOW0,
  39987. + BFD_RELOC_860_SPLIT0,
  39988. + BFD_RELOC_860_LOW1,
  39989. + BFD_RELOC_860_SPLIT1,
  39990. + BFD_RELOC_860_LOW2,
  39991. + BFD_RELOC_860_SPLIT2,
  39992. + BFD_RELOC_860_LOW3,
  39993. + BFD_RELOC_860_LOGOT0,
  39994. + BFD_RELOC_860_SPGOT0,
  39995. + BFD_RELOC_860_LOGOT1,
  39996. + BFD_RELOC_860_SPGOT1,
  39997. + BFD_RELOC_860_LOGOTOFF0,
  39998. + BFD_RELOC_860_SPGOTOFF0,
  39999. + BFD_RELOC_860_LOGOTOFF1,
  40000. + BFD_RELOC_860_SPGOTOFF1,
  40001. + BFD_RELOC_860_LOGOTOFF2,
  40002. + BFD_RELOC_860_LOGOTOFF3,
  40003. + BFD_RELOC_860_LOPC,
  40004. + BFD_RELOC_860_HIGHADJ,
  40005. + BFD_RELOC_860_HAGOT,
  40006. + BFD_RELOC_860_HAGOTOFF,
  40007. + BFD_RELOC_860_HAPC,
  40008. + BFD_RELOC_860_HIGH,
  40009. + BFD_RELOC_860_HIGOT,
  40010. + BFD_RELOC_860_HIGOTOFF,
  40011. +
  40012. +/* OpenRISC Relocations. */
  40013. + BFD_RELOC_OPENRISC_ABS_26,
  40014. + BFD_RELOC_OPENRISC_REL_26,
  40015. +
  40016. +/* H8 elf Relocations. */
  40017. + BFD_RELOC_H8_DIR16A8,
  40018. + BFD_RELOC_H8_DIR16R8,
  40019. + BFD_RELOC_H8_DIR24A8,
  40020. + BFD_RELOC_H8_DIR24R8,
  40021. + BFD_RELOC_H8_DIR32A16,
  40022. +
  40023. +/* Sony Xstormy16 Relocations. */
  40024. + BFD_RELOC_XSTORMY16_REL_12,
  40025. + BFD_RELOC_XSTORMY16_12,
  40026. + BFD_RELOC_XSTORMY16_24,
  40027. + BFD_RELOC_XSTORMY16_FPTR16,
  40028. +
  40029. +/* Self-describing complex relocations. */
  40030. + BFD_RELOC_RELC,
  40031. +
  40032. +
  40033. +/* Infineon Relocations. */
  40034. + BFD_RELOC_XC16X_PAG,
  40035. + BFD_RELOC_XC16X_POF,
  40036. + BFD_RELOC_XC16X_SEG,
  40037. + BFD_RELOC_XC16X_SOF,
  40038. +
  40039. +/* Relocations used by VAX ELF. */
  40040. + BFD_RELOC_VAX_GLOB_DAT,
  40041. + BFD_RELOC_VAX_JMP_SLOT,
  40042. + BFD_RELOC_VAX_RELATIVE,
  40043. +
  40044. +/* Morpho MT - 16 bit immediate relocation. */
  40045. + BFD_RELOC_MT_PC16,
  40046. +
  40047. +/* Morpho MT - Hi 16 bits of an address. */
  40048. + BFD_RELOC_MT_HI16,
  40049. +
  40050. +/* Morpho MT - Low 16 bits of an address. */
  40051. + BFD_RELOC_MT_LO16,
  40052. +
  40053. +/* Morpho MT - Used to tell the linker which vtable entries are used. */
  40054. + BFD_RELOC_MT_GNU_VTINHERIT,
  40055. +
  40056. +/* Morpho MT - Used to tell the linker which vtable entries are used. */
  40057. + BFD_RELOC_MT_GNU_VTENTRY,
  40058. +
  40059. +/* Morpho MT - 8 bit immediate relocation. */
  40060. + BFD_RELOC_MT_PCINSN8,
  40061. +
  40062. +/* msp430 specific relocation codes */
  40063. + BFD_RELOC_MSP430_10_PCREL,
  40064. + BFD_RELOC_MSP430_16_PCREL,
  40065. + BFD_RELOC_MSP430_16,
  40066. + BFD_RELOC_MSP430_16_PCREL_BYTE,
  40067. + BFD_RELOC_MSP430_16_BYTE,
  40068. + BFD_RELOC_MSP430_2X_PCREL,
  40069. + BFD_RELOC_MSP430_RL_PCREL,
  40070. +
  40071. +/* IQ2000 Relocations. */
  40072. + BFD_RELOC_IQ2000_OFFSET_16,
  40073. + BFD_RELOC_IQ2000_OFFSET_21,
  40074. + BFD_RELOC_IQ2000_UHI16,
  40075. +
  40076. +/* Special Xtensa relocation used only by PLT entries in ELF shared
  40077. +objects to indicate that the runtime linker should set the value
  40078. +to one of its own internal functions or data structures. */
  40079. + BFD_RELOC_XTENSA_RTLD,
  40080. +
  40081. +/* Xtensa relocations for ELF shared objects. */
  40082. + BFD_RELOC_XTENSA_GLOB_DAT,
  40083. + BFD_RELOC_XTENSA_JMP_SLOT,
  40084. + BFD_RELOC_XTENSA_RELATIVE,
  40085. +
  40086. +/* Xtensa relocation used in ELF object files for symbols that may require
  40087. +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
  40088. + BFD_RELOC_XTENSA_PLT,
  40089. +
  40090. +/* Xtensa relocations to mark the difference of two local symbols.
  40091. +These are only needed to support linker relaxation and can be ignored
  40092. +when not relaxing. The field is set to the value of the difference
  40093. +assuming no relaxation. The relocation encodes the position of the
  40094. +first symbol so the linker can determine whether to adjust the field
  40095. +value. */
  40096. + BFD_RELOC_XTENSA_DIFF8,
  40097. + BFD_RELOC_XTENSA_DIFF16,
  40098. + BFD_RELOC_XTENSA_DIFF32,
  40099. +
  40100. +/* Generic Xtensa relocations for instruction operands. Only the slot
  40101. +number is encoded in the relocation. The relocation applies to the
  40102. +last PC-relative immediate operand, or if there are no PC-relative
  40103. +immediates, to the last immediate operand. */
  40104. + BFD_RELOC_XTENSA_SLOT0_OP,
  40105. + BFD_RELOC_XTENSA_SLOT1_OP,
  40106. + BFD_RELOC_XTENSA_SLOT2_OP,
  40107. + BFD_RELOC_XTENSA_SLOT3_OP,
  40108. + BFD_RELOC_XTENSA_SLOT4_OP,
  40109. + BFD_RELOC_XTENSA_SLOT5_OP,
  40110. + BFD_RELOC_XTENSA_SLOT6_OP,
  40111. + BFD_RELOC_XTENSA_SLOT7_OP,
  40112. + BFD_RELOC_XTENSA_SLOT8_OP,
  40113. + BFD_RELOC_XTENSA_SLOT9_OP,
  40114. + BFD_RELOC_XTENSA_SLOT10_OP,
  40115. + BFD_RELOC_XTENSA_SLOT11_OP,
  40116. + BFD_RELOC_XTENSA_SLOT12_OP,
  40117. + BFD_RELOC_XTENSA_SLOT13_OP,
  40118. + BFD_RELOC_XTENSA_SLOT14_OP,
  40119. +
  40120. +/* Alternate Xtensa relocations. Only the slot is encoded in the
  40121. +relocation. The meaning of these relocations is opcode-specific. */
  40122. + BFD_RELOC_XTENSA_SLOT0_ALT,
  40123. + BFD_RELOC_XTENSA_SLOT1_ALT,
  40124. + BFD_RELOC_XTENSA_SLOT2_ALT,
  40125. + BFD_RELOC_XTENSA_SLOT3_ALT,
  40126. + BFD_RELOC_XTENSA_SLOT4_ALT,
  40127. + BFD_RELOC_XTENSA_SLOT5_ALT,
  40128. + BFD_RELOC_XTENSA_SLOT6_ALT,
  40129. + BFD_RELOC_XTENSA_SLOT7_ALT,
  40130. + BFD_RELOC_XTENSA_SLOT8_ALT,
  40131. + BFD_RELOC_XTENSA_SLOT9_ALT,
  40132. + BFD_RELOC_XTENSA_SLOT10_ALT,
  40133. + BFD_RELOC_XTENSA_SLOT11_ALT,
  40134. + BFD_RELOC_XTENSA_SLOT12_ALT,
  40135. + BFD_RELOC_XTENSA_SLOT13_ALT,
  40136. + BFD_RELOC_XTENSA_SLOT14_ALT,
  40137. +
  40138. +/* Xtensa relocations for backward compatibility. These have all been
  40139. +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
  40140. + BFD_RELOC_XTENSA_OP0,
  40141. + BFD_RELOC_XTENSA_OP1,
  40142. + BFD_RELOC_XTENSA_OP2,
  40143. +
  40144. +/* Xtensa relocation to mark that the assembler expanded the
  40145. +instructions from an original target. The expansion size is
  40146. +encoded in the reloc size. */
  40147. + BFD_RELOC_XTENSA_ASM_EXPAND,
  40148. +
  40149. +/* Xtensa relocation to mark that the linker should simplify
  40150. +assembler-expanded instructions. This is commonly used
  40151. +internally by the linker after analysis of a
  40152. +BFD_RELOC_XTENSA_ASM_EXPAND. */
  40153. + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
  40154. +
  40155. +/* 8 bit signed offset in (ix+d) or (iy+d). */
  40156. + BFD_RELOC_Z80_DISP8,
  40157. +
  40158. +/* DJNZ offset. */
  40159. + BFD_RELOC_Z8K_DISP7,
  40160. +
  40161. +/* CALR offset. */
  40162. + BFD_RELOC_Z8K_CALLR,
  40163. +
  40164. +/* 4 bit value. */
  40165. + BFD_RELOC_Z8K_IMM4L,
  40166. + BFD_RELOC_UNUSED };
  40167. +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
  40168. +reloc_howto_type *bfd_reloc_type_lookup
  40169. + (bfd *abfd, bfd_reloc_code_real_type code);
  40170. +reloc_howto_type *bfd_reloc_name_lookup
  40171. + (bfd *abfd, const char *reloc_name);
  40172. +
  40173. +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
  40174. +
  40175. +/* Extracted from syms.c. */
  40176. +
  40177. +typedef struct bfd_symbol
  40178. +{
  40179. + /* A pointer to the BFD which owns the symbol. This information
  40180. + is necessary so that a back end can work out what additional
  40181. + information (invisible to the application writer) is carried
  40182. + with the symbol.
  40183. +
  40184. + This field is *almost* redundant, since you can use section->owner
  40185. + instead, except that some symbols point to the global sections
  40186. + bfd_{abs,com,und}_section. This could be fixed by making
  40187. + these globals be per-bfd (or per-target-flavor). FIXME. */
  40188. + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
  40189. +
  40190. + /* The text of the symbol. The name is left alone, and not copied; the
  40191. + application may not alter it. */
  40192. + const char *name;
  40193. +
  40194. + /* The value of the symbol. This really should be a union of a
  40195. + numeric value with a pointer, since some flags indicate that
  40196. + a pointer to another symbol is stored here. */
  40197. + symvalue value;
  40198. +
  40199. + /* Attributes of a symbol. */
  40200. +#define BSF_NO_FLAGS 0x00
  40201. +
  40202. + /* The symbol has local scope; <<static>> in <<C>>. The value
  40203. + is the offset into the section of the data. */
  40204. +#define BSF_LOCAL 0x01
  40205. +
  40206. + /* The symbol has global scope; initialized data in <<C>>. The
  40207. + value is the offset into the section of the data. */
  40208. +#define BSF_GLOBAL 0x02
  40209. +
  40210. + /* The symbol has global scope and is exported. The value is
  40211. + the offset into the section of the data. */
  40212. +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
  40213. +
  40214. + /* A normal C symbol would be one of:
  40215. + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
  40216. + <<BSF_GLOBAL>>. */
  40217. +
  40218. + /* The symbol is a debugging record. The value has an arbitrary
  40219. + meaning, unless BSF_DEBUGGING_RELOC is also set. */
  40220. +#define BSF_DEBUGGING 0x08
  40221. +
  40222. + /* The symbol denotes a function entry point. Used in ELF,
  40223. + perhaps others someday. */
  40224. +#define BSF_FUNCTION 0x10
  40225. +
  40226. + /* Used by the linker. */
  40227. +#define BSF_KEEP 0x20
  40228. +#define BSF_KEEP_G 0x40
  40229. +
  40230. + /* A weak global symbol, overridable without warnings by
  40231. + a regular global symbol of the same name. */
  40232. +#define BSF_WEAK 0x80
  40233. +
  40234. + /* This symbol was created to point to a section, e.g. ELF's
  40235. + STT_SECTION symbols. */
  40236. +#define BSF_SECTION_SYM 0x100
  40237. +
  40238. + /* The symbol used to be a common symbol, but now it is
  40239. + allocated. */
  40240. +#define BSF_OLD_COMMON 0x200
  40241. +
  40242. + /* The default value for common data. */
  40243. +#define BFD_FORT_COMM_DEFAULT_VALUE 0
  40244. +
  40245. + /* In some files the type of a symbol sometimes alters its
  40246. + location in an output file - ie in coff a <<ISFCN>> symbol
  40247. + which is also <<C_EXT>> symbol appears where it was
  40248. + declared and not at the end of a section. This bit is set
  40249. + by the target BFD part to convey this information. */
  40250. +#define BSF_NOT_AT_END 0x400
  40251. +
  40252. + /* Signal that the symbol is the label of constructor section. */
  40253. +#define BSF_CONSTRUCTOR 0x800
  40254. +
  40255. + /* Signal that the symbol is a warning symbol. The name is a
  40256. + warning. The name of the next symbol is the one to warn about;
  40257. + if a reference is made to a symbol with the same name as the next
  40258. + symbol, a warning is issued by the linker. */
  40259. +#define BSF_WARNING 0x1000
  40260. +
  40261. + /* Signal that the symbol is indirect. This symbol is an indirect
  40262. + pointer to the symbol with the same name as the next symbol. */
  40263. +#define BSF_INDIRECT 0x2000
  40264. +
  40265. + /* BSF_FILE marks symbols that contain a file name. This is used
  40266. + for ELF STT_FILE symbols. */
  40267. +#define BSF_FILE 0x4000
  40268. +
  40269. + /* Symbol is from dynamic linking information. */
  40270. +#define BSF_DYNAMIC 0x8000
  40271. +
  40272. + /* The symbol denotes a data object. Used in ELF, and perhaps
  40273. + others someday. */
  40274. +#define BSF_OBJECT 0x10000
  40275. +
  40276. + /* This symbol is a debugging symbol. The value is the offset
  40277. + into the section of the data. BSF_DEBUGGING should be set
  40278. + as well. */
  40279. +#define BSF_DEBUGGING_RELOC 0x20000
  40280. +
  40281. + /* This symbol is thread local. Used in ELF. */
  40282. +#define BSF_THREAD_LOCAL 0x40000
  40283. +
  40284. + /* This symbol represents a complex relocation expression,
  40285. + with the expression tree serialized in the symbol name. */
  40286. +#define BSF_RELC 0x80000
  40287. +
  40288. + /* This symbol represents a signed complex relocation expression,
  40289. + with the expression tree serialized in the symbol name. */
  40290. +#define BSF_SRELC 0x100000
  40291. +
  40292. + flagword flags;
  40293. +
  40294. + /* A pointer to the section to which this symbol is
  40295. + relative. This will always be non NULL, there are special
  40296. + sections for undefined and absolute symbols. */
  40297. + struct bfd_section *section;
  40298. +
  40299. + /* Back end special data. */
  40300. + union
  40301. + {
  40302. + void *p;
  40303. + bfd_vma i;
  40304. + }
  40305. + udata;
  40306. +}
  40307. +asymbol;
  40308. +
  40309. +#define bfd_get_symtab_upper_bound(abfd) \
  40310. + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
  40311. +
  40312. +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
  40313. +
  40314. +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
  40315. +
  40316. +#define bfd_is_local_label_name(abfd, name) \
  40317. + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
  40318. +
  40319. +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
  40320. +
  40321. +#define bfd_is_target_special_symbol(abfd, sym) \
  40322. + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
  40323. +
  40324. +#define bfd_canonicalize_symtab(abfd, location) \
  40325. + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
  40326. +
  40327. +bfd_boolean bfd_set_symtab
  40328. + (bfd *abfd, asymbol **location, unsigned int count);
  40329. +
  40330. +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
  40331. +
  40332. +#define bfd_make_empty_symbol(abfd) \
  40333. + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
  40334. +
  40335. +asymbol *_bfd_generic_make_empty_symbol (bfd *);
  40336. +
  40337. +#define bfd_make_debug_symbol(abfd,ptr,size) \
  40338. + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
  40339. +
  40340. +int bfd_decode_symclass (asymbol *symbol);
  40341. +
  40342. +bfd_boolean bfd_is_undefined_symclass (int symclass);
  40343. +
  40344. +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
  40345. +
  40346. +bfd_boolean bfd_copy_private_symbol_data
  40347. + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
  40348. +
  40349. +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
  40350. + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
  40351. + (ibfd, isymbol, obfd, osymbol))
  40352. +
  40353. +/* Extracted from bfd.c. */
  40354. +struct bfd
  40355. +{
  40356. + /* A unique identifier of the BFD */
  40357. + unsigned int id;
  40358. +
  40359. + /* The filename the application opened the BFD with. */
  40360. + const char *filename;
  40361. +
  40362. + /* A pointer to the target jump table. */
  40363. + const struct bfd_target *xvec;
  40364. +
  40365. + /* The IOSTREAM, and corresponding IO vector that provide access
  40366. + to the file backing the BFD. */
  40367. + void *iostream;
  40368. + const struct bfd_iovec *iovec;
  40369. +
  40370. + /* Is the file descriptor being cached? That is, can it be closed as
  40371. + needed, and re-opened when accessed later? */
  40372. + bfd_boolean cacheable;
  40373. +
  40374. + /* Marks whether there was a default target specified when the
  40375. + BFD was opened. This is used to select which matching algorithm
  40376. + to use to choose the back end. */
  40377. + bfd_boolean target_defaulted;
  40378. +
  40379. + /* The caching routines use these to maintain a
  40380. + least-recently-used list of BFDs. */
  40381. + struct bfd *lru_prev, *lru_next;
  40382. +
  40383. + /* When a file is closed by the caching routines, BFD retains
  40384. + state information on the file here... */
  40385. + ufile_ptr where;
  40386. +
  40387. + /* ... and here: (``once'' means at least once). */
  40388. + bfd_boolean opened_once;
  40389. +
  40390. + /* Set if we have a locally maintained mtime value, rather than
  40391. + getting it from the file each time. */
  40392. + bfd_boolean mtime_set;
  40393. +
  40394. + /* File modified time, if mtime_set is TRUE. */
  40395. + long mtime;
  40396. +
  40397. + /* Reserved for an unimplemented file locking extension. */
  40398. + int ifd;
  40399. +
  40400. + /* The format which belongs to the BFD. (object, core, etc.) */
  40401. + bfd_format format;
  40402. +
  40403. + /* The direction with which the BFD was opened. */
  40404. + enum bfd_direction
  40405. + {
  40406. + no_direction = 0,
  40407. + read_direction = 1,
  40408. + write_direction = 2,
  40409. + both_direction = 3
  40410. + }
  40411. + direction;
  40412. +
  40413. + /* Format_specific flags. */
  40414. + flagword flags;
  40415. +
  40416. + /* Currently my_archive is tested before adding origin to
  40417. + anything. I believe that this can become always an add of
  40418. + origin, with origin set to 0 for non archive files. */
  40419. + ufile_ptr origin;
  40420. +
  40421. + /* Remember when output has begun, to stop strange things
  40422. + from happening. */
  40423. + bfd_boolean output_has_begun;
  40424. +
  40425. + /* A hash table for section names. */
  40426. + struct bfd_hash_table section_htab;
  40427. +
  40428. + /* Pointer to linked list of sections. */
  40429. + struct bfd_section *sections;
  40430. +
  40431. + /* The last section on the section list. */
  40432. + struct bfd_section *section_last;
  40433. +
  40434. + /* The number of sections. */
  40435. + unsigned int section_count;
  40436. +
  40437. + /* Stuff only useful for object files:
  40438. + The start address. */
  40439. + bfd_vma start_address;
  40440. +
  40441. + /* Used for input and output. */
  40442. + unsigned int symcount;
  40443. +
  40444. + /* Symbol table for output BFD (with symcount entries). */
  40445. + struct bfd_symbol **outsymbols;
  40446. +
  40447. + /* Used for slurped dynamic symbol tables. */
  40448. + unsigned int dynsymcount;
  40449. +
  40450. + /* Pointer to structure which contains architecture information. */
  40451. + const struct bfd_arch_info *arch_info;
  40452. +
  40453. + /* Flag set if symbols from this BFD should not be exported. */
  40454. + bfd_boolean no_export;
  40455. +
  40456. + /* Stuff only useful for archives. */
  40457. + void *arelt_data;
  40458. + struct bfd *my_archive; /* The containing archive BFD. */
  40459. + struct bfd *archive_next; /* The next BFD in the archive. */
  40460. + struct bfd *archive_head; /* The first BFD in the archive. */
  40461. + bfd_boolean has_armap;
  40462. +
  40463. + /* A chain of BFD structures involved in a link. */
  40464. + struct bfd *link_next;
  40465. +
  40466. + /* A field used by _bfd_generic_link_add_archive_symbols. This will
  40467. + be used only for archive elements. */
  40468. + int archive_pass;
  40469. +
  40470. + /* Used by the back end to hold private data. */
  40471. + union
  40472. + {
  40473. + struct aout_data_struct *aout_data;
  40474. + struct artdata *aout_ar_data;
  40475. + struct _oasys_data *oasys_obj_data;
  40476. + struct _oasys_ar_data *oasys_ar_data;
  40477. + struct coff_tdata *coff_obj_data;
  40478. + struct pe_tdata *pe_obj_data;
  40479. + struct xcoff_tdata *xcoff_obj_data;
  40480. + struct ecoff_tdata *ecoff_obj_data;
  40481. + struct ieee_data_struct *ieee_data;
  40482. + struct ieee_ar_data_struct *ieee_ar_data;
  40483. + struct srec_data_struct *srec_data;
  40484. + struct ihex_data_struct *ihex_data;
  40485. + struct tekhex_data_struct *tekhex_data;
  40486. + struct elf_obj_tdata *elf_obj_data;
  40487. + struct nlm_obj_tdata *nlm_obj_data;
  40488. + struct bout_data_struct *bout_data;
  40489. + struct mmo_data_struct *mmo_data;
  40490. + struct sun_core_struct *sun_core_data;
  40491. + struct sco5_core_struct *sco5_core_data;
  40492. + struct trad_core_struct *trad_core_data;
  40493. + struct som_data_struct *som_data;
  40494. + struct hpux_core_struct *hpux_core_data;
  40495. + struct hppabsd_core_struct *hppabsd_core_data;
  40496. + struct sgi_core_struct *sgi_core_data;
  40497. + struct lynx_core_struct *lynx_core_data;
  40498. + struct osf_core_struct *osf_core_data;
  40499. + struct cisco_core_struct *cisco_core_data;
  40500. + struct versados_data_struct *versados_data;
  40501. + struct netbsd_core_struct *netbsd_core_data;
  40502. + struct mach_o_data_struct *mach_o_data;
  40503. + struct mach_o_fat_data_struct *mach_o_fat_data;
  40504. + struct bfd_pef_data_struct *pef_data;
  40505. + struct bfd_pef_xlib_data_struct *pef_xlib_data;
  40506. + struct bfd_sym_data_struct *sym_data;
  40507. + void *any;
  40508. + }
  40509. + tdata;
  40510. +
  40511. + /* Used by the application to hold private data. */
  40512. + void *usrdata;
  40513. +
  40514. + /* Where all the allocated stuff under this BFD goes. This is a
  40515. + struct objalloc *, but we use void * to avoid requiring the inclusion
  40516. + of objalloc.h. */
  40517. + void *memory;
  40518. +};
  40519. +
  40520. +typedef enum bfd_error
  40521. +{
  40522. + bfd_error_no_error = 0,
  40523. + bfd_error_system_call,
  40524. + bfd_error_invalid_target,
  40525. + bfd_error_wrong_format,
  40526. + bfd_error_wrong_object_format,
  40527. + bfd_error_invalid_operation,
  40528. + bfd_error_no_memory,
  40529. + bfd_error_no_symbols,
  40530. + bfd_error_no_armap,
  40531. + bfd_error_no_more_archived_files,
  40532. + bfd_error_malformed_archive,
  40533. + bfd_error_file_not_recognized,
  40534. + bfd_error_file_ambiguously_recognized,
  40535. + bfd_error_no_contents,
  40536. + bfd_error_nonrepresentable_section,
  40537. + bfd_error_no_debug_section,
  40538. + bfd_error_bad_value,
  40539. + bfd_error_file_truncated,
  40540. + bfd_error_file_too_big,
  40541. + bfd_error_on_input,
  40542. + bfd_error_invalid_error_code
  40543. +}
  40544. +bfd_error_type;
  40545. +
  40546. +bfd_error_type bfd_get_error (void);
  40547. +
  40548. +void bfd_set_error (bfd_error_type error_tag, ...);
  40549. +
  40550. +const char *bfd_errmsg (bfd_error_type error_tag);
  40551. +
  40552. +void bfd_perror (const char *message);
  40553. +
  40554. +typedef void (*bfd_error_handler_type) (const char *, ...);
  40555. +
  40556. +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
  40557. +
  40558. +void bfd_set_error_program_name (const char *);
  40559. +
  40560. +bfd_error_handler_type bfd_get_error_handler (void);
  40561. +
  40562. +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
  40563. +
  40564. +long bfd_canonicalize_reloc
  40565. + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
  40566. +
  40567. +void bfd_set_reloc
  40568. + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
  40569. +
  40570. +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
  40571. +
  40572. +int bfd_get_arch_size (bfd *abfd);
  40573. +
  40574. +int bfd_get_sign_extend_vma (bfd *abfd);
  40575. +
  40576. +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
  40577. +
  40578. +unsigned int bfd_get_gp_size (bfd *abfd);
  40579. +
  40580. +void bfd_set_gp_size (bfd *abfd, unsigned int i);
  40581. +
  40582. +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
  40583. +
  40584. +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
  40585. +
  40586. +#define bfd_copy_private_header_data(ibfd, obfd) \
  40587. + BFD_SEND (obfd, _bfd_copy_private_header_data, \
  40588. + (ibfd, obfd))
  40589. +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
  40590. +
  40591. +#define bfd_copy_private_bfd_data(ibfd, obfd) \
  40592. + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
  40593. + (ibfd, obfd))
  40594. +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
  40595. +
  40596. +#define bfd_merge_private_bfd_data(ibfd, obfd) \
  40597. + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
  40598. + (ibfd, obfd))
  40599. +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
  40600. +
  40601. +#define bfd_set_private_flags(abfd, flags) \
  40602. + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
  40603. +#define bfd_sizeof_headers(abfd, info) \
  40604. + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
  40605. +
  40606. +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
  40607. + BFD_SEND (abfd, _bfd_find_nearest_line, \
  40608. + (abfd, sec, syms, off, file, func, line))
  40609. +
  40610. +#define bfd_find_line(abfd, syms, sym, file, line) \
  40611. + BFD_SEND (abfd, _bfd_find_line, \
  40612. + (abfd, syms, sym, file, line))
  40613. +
  40614. +#define bfd_find_inliner_info(abfd, file, func, line) \
  40615. + BFD_SEND (abfd, _bfd_find_inliner_info, \
  40616. + (abfd, file, func, line))
  40617. +
  40618. +#define bfd_debug_info_start(abfd) \
  40619. + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
  40620. +
  40621. +#define bfd_debug_info_end(abfd) \
  40622. + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
  40623. +
  40624. +#define bfd_debug_info_accumulate(abfd, section) \
  40625. + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
  40626. +
  40627. +#define bfd_stat_arch_elt(abfd, stat) \
  40628. + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
  40629. +
  40630. +#define bfd_update_armap_timestamp(abfd) \
  40631. + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
  40632. +
  40633. +#define bfd_set_arch_mach(abfd, arch, mach)\
  40634. + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
  40635. +
  40636. +#define bfd_relax_section(abfd, section, link_info, again) \
  40637. + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
  40638. +
  40639. +#define bfd_gc_sections(abfd, link_info) \
  40640. + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
  40641. +
  40642. +#define bfd_merge_sections(abfd, link_info) \
  40643. + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
  40644. +
  40645. +#define bfd_is_group_section(abfd, sec) \
  40646. + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
  40647. +
  40648. +#define bfd_discard_group(abfd, sec) \
  40649. + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
  40650. +
  40651. +#define bfd_link_hash_table_create(abfd) \
  40652. + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
  40653. +
  40654. +#define bfd_link_hash_table_free(abfd, hash) \
  40655. + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
  40656. +
  40657. +#define bfd_link_add_symbols(abfd, info) \
  40658. + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
  40659. +
  40660. +#define bfd_link_just_syms(abfd, sec, info) \
  40661. + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
  40662. +
  40663. +#define bfd_final_link(abfd, info) \
  40664. + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
  40665. +
  40666. +#define bfd_free_cached_info(abfd) \
  40667. + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
  40668. +
  40669. +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
  40670. + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
  40671. +
  40672. +#define bfd_print_private_bfd_data(abfd, file)\
  40673. + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
  40674. +
  40675. +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
  40676. + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
  40677. +
  40678. +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
  40679. + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
  40680. + dyncount, dynsyms, ret))
  40681. +
  40682. +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
  40683. + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
  40684. +
  40685. +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
  40686. + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
  40687. +
  40688. +extern bfd_byte *bfd_get_relocated_section_contents
  40689. + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
  40690. + bfd_boolean, asymbol **);
  40691. +
  40692. +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
  40693. +
  40694. +struct bfd_preserve
  40695. +{
  40696. + void *marker;
  40697. + void *tdata;
  40698. + flagword flags;
  40699. + const struct bfd_arch_info *arch_info;
  40700. + struct bfd_section *sections;
  40701. + struct bfd_section *section_last;
  40702. + unsigned int section_count;
  40703. + struct bfd_hash_table section_htab;
  40704. +};
  40705. +
  40706. +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
  40707. +
  40708. +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
  40709. +
  40710. +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
  40711. +
  40712. +bfd_vma bfd_emul_get_maxpagesize (const char *);
  40713. +
  40714. +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
  40715. +
  40716. +bfd_vma bfd_emul_get_commonpagesize (const char *);
  40717. +
  40718. +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
  40719. +
  40720. +char *bfd_demangle (bfd *, const char *, int);
  40721. +
  40722. +/* Extracted from archive.c. */
  40723. +symindex bfd_get_next_mapent
  40724. + (bfd *abfd, symindex previous, carsym **sym);
  40725. +
  40726. +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
  40727. +
  40728. +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
  40729. +
  40730. +/* Extracted from corefile.c. */
  40731. +const char *bfd_core_file_failing_command (bfd *abfd);
  40732. +
  40733. +int bfd_core_file_failing_signal (bfd *abfd);
  40734. +
  40735. +bfd_boolean core_file_matches_executable_p
  40736. + (bfd *core_bfd, bfd *exec_bfd);
  40737. +
  40738. +bfd_boolean generic_core_file_matches_executable_p
  40739. + (bfd *core_bfd, bfd *exec_bfd);
  40740. +
  40741. +/* Extracted from targets.c. */
  40742. +#define BFD_SEND(bfd, message, arglist) \
  40743. + ((*((bfd)->xvec->message)) arglist)
  40744. +
  40745. +#ifdef DEBUG_BFD_SEND
  40746. +#undef BFD_SEND
  40747. +#define BFD_SEND(bfd, message, arglist) \
  40748. + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
  40749. + ((*((bfd)->xvec->message)) arglist) : \
  40750. + (bfd_assert (__FILE__,__LINE__), NULL))
  40751. +#endif
  40752. +#define BFD_SEND_FMT(bfd, message, arglist) \
  40753. + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
  40754. +
  40755. +#ifdef DEBUG_BFD_SEND
  40756. +#undef BFD_SEND_FMT
  40757. +#define BFD_SEND_FMT(bfd, message, arglist) \
  40758. + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
  40759. + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
  40760. + (bfd_assert (__FILE__,__LINE__), NULL))
  40761. +#endif
  40762. +
  40763. +enum bfd_flavour
  40764. +{
  40765. + bfd_target_unknown_flavour,
  40766. + bfd_target_aout_flavour,
  40767. + bfd_target_coff_flavour,
  40768. + bfd_target_ecoff_flavour,
  40769. + bfd_target_xcoff_flavour,
  40770. + bfd_target_elf_flavour,
  40771. + bfd_target_ieee_flavour,
  40772. + bfd_target_nlm_flavour,
  40773. + bfd_target_oasys_flavour,
  40774. + bfd_target_tekhex_flavour,
  40775. + bfd_target_srec_flavour,
  40776. + bfd_target_ihex_flavour,
  40777. + bfd_target_som_flavour,
  40778. + bfd_target_os9k_flavour,
  40779. + bfd_target_versados_flavour,
  40780. + bfd_target_msdos_flavour,
  40781. + bfd_target_ovax_flavour,
  40782. + bfd_target_evax_flavour,
  40783. + bfd_target_mmo_flavour,
  40784. + bfd_target_mach_o_flavour,
  40785. + bfd_target_pef_flavour,
  40786. + bfd_target_pef_xlib_flavour,
  40787. + bfd_target_sym_flavour
  40788. +};
  40789. +
  40790. +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
  40791. +
  40792. +/* Forward declaration. */
  40793. +typedef struct bfd_link_info _bfd_link_info;
  40794. +
  40795. +typedef struct bfd_target
  40796. +{
  40797. + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
  40798. + char *name;
  40799. +
  40800. + /* The "flavour" of a back end is a general indication about
  40801. + the contents of a file. */
  40802. + enum bfd_flavour flavour;
  40803. +
  40804. + /* The order of bytes within the data area of a file. */
  40805. + enum bfd_endian byteorder;
  40806. +
  40807. + /* The order of bytes within the header parts of a file. */
  40808. + enum bfd_endian header_byteorder;
  40809. +
  40810. + /* A mask of all the flags which an executable may have set -
  40811. + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
  40812. + flagword object_flags;
  40813. +
  40814. + /* A mask of all the flags which a section may have set - from
  40815. + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
  40816. + flagword section_flags;
  40817. +
  40818. + /* The character normally found at the front of a symbol.
  40819. + (if any), perhaps `_'. */
  40820. + char symbol_leading_char;
  40821. +
  40822. + /* The pad character for file names within an archive header. */
  40823. + char ar_pad_char;
  40824. +
  40825. + /* The maximum number of characters in an archive header. */
  40826. + unsigned short ar_max_namelen;
  40827. +
  40828. + /* Entries for byte swapping for data. These are different from the
  40829. + other entry points, since they don't take a BFD as the first argument.
  40830. + Certain other handlers could do the same. */
  40831. + bfd_uint64_t (*bfd_getx64) (const void *);
  40832. + bfd_int64_t (*bfd_getx_signed_64) (const void *);
  40833. + void (*bfd_putx64) (bfd_uint64_t, void *);
  40834. + bfd_vma (*bfd_getx32) (const void *);
  40835. + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
  40836. + void (*bfd_putx32) (bfd_vma, void *);
  40837. + bfd_vma (*bfd_getx16) (const void *);
  40838. + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
  40839. + void (*bfd_putx16) (bfd_vma, void *);
  40840. +
  40841. + /* Byte swapping for the headers. */
  40842. + bfd_uint64_t (*bfd_h_getx64) (const void *);
  40843. + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
  40844. + void (*bfd_h_putx64) (bfd_uint64_t, void *);
  40845. + bfd_vma (*bfd_h_getx32) (const void *);
  40846. + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
  40847. + void (*bfd_h_putx32) (bfd_vma, void *);
  40848. + bfd_vma (*bfd_h_getx16) (const void *);
  40849. + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
  40850. + void (*bfd_h_putx16) (bfd_vma, void *);
  40851. +
  40852. + /* Format dependent routines: these are vectors of entry points
  40853. + within the target vector structure, one for each format to check. */
  40854. +
  40855. + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
  40856. + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
  40857. +
  40858. + /* Set the format of a file being written. */
  40859. + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
  40860. +
  40861. + /* Write cached information into a file being written, at <<bfd_close>>. */
  40862. + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
  40863. +
  40864. +
  40865. + /* Generic entry points. */
  40866. +#define BFD_JUMP_TABLE_GENERIC(NAME) \
  40867. + NAME##_close_and_cleanup, \
  40868. + NAME##_bfd_free_cached_info, \
  40869. + NAME##_new_section_hook, \
  40870. + NAME##_get_section_contents, \
  40871. + NAME##_get_section_contents_in_window
  40872. +
  40873. + /* Called when the BFD is being closed to do any necessary cleanup. */
  40874. + bfd_boolean (*_close_and_cleanup) (bfd *);
  40875. + /* Ask the BFD to free all cached information. */
  40876. + bfd_boolean (*_bfd_free_cached_info) (bfd *);
  40877. + /* Called when a new section is created. */
  40878. + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
  40879. + /* Read the contents of a section. */
  40880. + bfd_boolean (*_bfd_get_section_contents)
  40881. + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
  40882. + bfd_boolean (*_bfd_get_section_contents_in_window)
  40883. + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
  40884. +
  40885. + /* Entry points to copy private data. */
  40886. +#define BFD_JUMP_TABLE_COPY(NAME) \
  40887. + NAME##_bfd_copy_private_bfd_data, \
  40888. + NAME##_bfd_merge_private_bfd_data, \
  40889. + _bfd_generic_init_private_section_data, \
  40890. + NAME##_bfd_copy_private_section_data, \
  40891. + NAME##_bfd_copy_private_symbol_data, \
  40892. + NAME##_bfd_copy_private_header_data, \
  40893. + NAME##_bfd_set_private_flags, \
  40894. + NAME##_bfd_print_private_bfd_data
  40895. +
  40896. + /* Called to copy BFD general private data from one object file
  40897. + to another. */
  40898. + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
  40899. + /* Called to merge BFD general private data from one object file
  40900. + to a common output file when linking. */
  40901. + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
  40902. + /* Called to initialize BFD private section data from one object file
  40903. + to another. */
  40904. +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
  40905. + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
  40906. + bfd_boolean (*_bfd_init_private_section_data)
  40907. + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
  40908. + /* Called to copy BFD private section data from one object file
  40909. + to another. */
  40910. + bfd_boolean (*_bfd_copy_private_section_data)
  40911. + (bfd *, sec_ptr, bfd *, sec_ptr);
  40912. + /* Called to copy BFD private symbol data from one symbol
  40913. + to another. */
  40914. + bfd_boolean (*_bfd_copy_private_symbol_data)
  40915. + (bfd *, asymbol *, bfd *, asymbol *);
  40916. + /* Called to copy BFD private header data from one object file
  40917. + to another. */
  40918. + bfd_boolean (*_bfd_copy_private_header_data)
  40919. + (bfd *, bfd *);
  40920. + /* Called to set private backend flags. */
  40921. + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
  40922. +
  40923. + /* Called to print private BFD data. */
  40924. + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
  40925. +
  40926. + /* Core file entry points. */
  40927. +#define BFD_JUMP_TABLE_CORE(NAME) \
  40928. + NAME##_core_file_failing_command, \
  40929. + NAME##_core_file_failing_signal, \
  40930. + NAME##_core_file_matches_executable_p
  40931. +
  40932. + char * (*_core_file_failing_command) (bfd *);
  40933. + int (*_core_file_failing_signal) (bfd *);
  40934. + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
  40935. +
  40936. + /* Archive entry points. */
  40937. +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
  40938. + NAME##_slurp_armap, \
  40939. + NAME##_slurp_extended_name_table, \
  40940. + NAME##_construct_extended_name_table, \
  40941. + NAME##_truncate_arname, \
  40942. + NAME##_write_armap, \
  40943. + NAME##_read_ar_hdr, \
  40944. + NAME##_openr_next_archived_file, \
  40945. + NAME##_get_elt_at_index, \
  40946. + NAME##_generic_stat_arch_elt, \
  40947. + NAME##_update_armap_timestamp
  40948. +
  40949. + bfd_boolean (*_bfd_slurp_armap) (bfd *);
  40950. + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
  40951. + bfd_boolean (*_bfd_construct_extended_name_table)
  40952. + (bfd *, char **, bfd_size_type *, const char **);
  40953. + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
  40954. + bfd_boolean (*write_armap)
  40955. + (bfd *, unsigned int, struct orl *, unsigned int, int);
  40956. + void * (*_bfd_read_ar_hdr_fn) (bfd *);
  40957. + bfd * (*openr_next_archived_file) (bfd *, bfd *);
  40958. +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
  40959. + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
  40960. + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
  40961. + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
  40962. +
  40963. + /* Entry points used for symbols. */
  40964. +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
  40965. + NAME##_get_symtab_upper_bound, \
  40966. + NAME##_canonicalize_symtab, \
  40967. + NAME##_make_empty_symbol, \
  40968. + NAME##_print_symbol, \
  40969. + NAME##_get_symbol_info, \
  40970. + NAME##_bfd_is_local_label_name, \
  40971. + NAME##_bfd_is_target_special_symbol, \
  40972. + NAME##_get_lineno, \
  40973. + NAME##_find_nearest_line, \
  40974. + _bfd_generic_find_line, \
  40975. + NAME##_find_inliner_info, \
  40976. + NAME##_bfd_make_debug_symbol, \
  40977. + NAME##_read_minisymbols, \
  40978. + NAME##_minisymbol_to_symbol
  40979. +
  40980. + long (*_bfd_get_symtab_upper_bound) (bfd *);
  40981. + long (*_bfd_canonicalize_symtab)
  40982. + (bfd *, struct bfd_symbol **);
  40983. + struct bfd_symbol *
  40984. + (*_bfd_make_empty_symbol) (bfd *);
  40985. + void (*_bfd_print_symbol)
  40986. + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
  40987. +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
  40988. + void (*_bfd_get_symbol_info)
  40989. + (bfd *, struct bfd_symbol *, symbol_info *);
  40990. +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
  40991. + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
  40992. + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
  40993. + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
  40994. + bfd_boolean (*_bfd_find_nearest_line)
  40995. + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
  40996. + const char **, const char **, unsigned int *);
  40997. + bfd_boolean (*_bfd_find_line)
  40998. + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
  40999. + const char **, unsigned int *);
  41000. + bfd_boolean (*_bfd_find_inliner_info)
  41001. + (bfd *, const char **, const char **, unsigned int *);
  41002. + /* Back-door to allow format-aware applications to create debug symbols
  41003. + while using BFD for everything else. Currently used by the assembler
  41004. + when creating COFF files. */
  41005. + asymbol * (*_bfd_make_debug_symbol)
  41006. + (bfd *, void *, unsigned long size);
  41007. +#define bfd_read_minisymbols(b, d, m, s) \
  41008. + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
  41009. + long (*_read_minisymbols)
  41010. + (bfd *, bfd_boolean, void **, unsigned int *);
  41011. +#define bfd_minisymbol_to_symbol(b, d, m, f) \
  41012. + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
  41013. + asymbol * (*_minisymbol_to_symbol)
  41014. + (bfd *, bfd_boolean, const void *, asymbol *);
  41015. +
  41016. + /* Routines for relocs. */
  41017. +#define BFD_JUMP_TABLE_RELOCS(NAME) \
  41018. + NAME##_get_reloc_upper_bound, \
  41019. + NAME##_canonicalize_reloc, \
  41020. + NAME##_bfd_reloc_type_lookup, \
  41021. + NAME##_bfd_reloc_name_lookup
  41022. +
  41023. + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
  41024. + long (*_bfd_canonicalize_reloc)
  41025. + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
  41026. + /* See documentation on reloc types. */
  41027. + reloc_howto_type *
  41028. + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
  41029. + reloc_howto_type *
  41030. + (*reloc_name_lookup) (bfd *, const char *);
  41031. +
  41032. +
  41033. + /* Routines used when writing an object file. */
  41034. +#define BFD_JUMP_TABLE_WRITE(NAME) \
  41035. + NAME##_set_arch_mach, \
  41036. + NAME##_set_section_contents
  41037. +
  41038. + bfd_boolean (*_bfd_set_arch_mach)
  41039. + (bfd *, enum bfd_architecture, unsigned long);
  41040. + bfd_boolean (*_bfd_set_section_contents)
  41041. + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
  41042. +
  41043. + /* Routines used by the linker. */
  41044. +#define BFD_JUMP_TABLE_LINK(NAME) \
  41045. + NAME##_sizeof_headers, \
  41046. + NAME##_bfd_get_relocated_section_contents, \
  41047. + NAME##_bfd_relax_section, \
  41048. + NAME##_bfd_link_hash_table_create, \
  41049. + NAME##_bfd_link_hash_table_free, \
  41050. + NAME##_bfd_link_add_symbols, \
  41051. + NAME##_bfd_link_just_syms, \
  41052. + NAME##_bfd_final_link, \
  41053. + NAME##_bfd_link_split_section, \
  41054. + NAME##_bfd_gc_sections, \
  41055. + NAME##_bfd_merge_sections, \
  41056. + NAME##_bfd_is_group_section, \
  41057. + NAME##_bfd_discard_group, \
  41058. + NAME##_section_already_linked \
  41059. +
  41060. + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
  41061. + bfd_byte * (*_bfd_get_relocated_section_contents)
  41062. + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
  41063. + bfd_byte *, bfd_boolean, struct bfd_symbol **);
  41064. +
  41065. + bfd_boolean (*_bfd_relax_section)
  41066. + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
  41067. +
  41068. + /* Create a hash table for the linker. Different backends store
  41069. + different information in this table. */
  41070. + struct bfd_link_hash_table *
  41071. + (*_bfd_link_hash_table_create) (bfd *);
  41072. +
  41073. + /* Release the memory associated with the linker hash table. */
  41074. + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
  41075. +
  41076. + /* Add symbols from this object file into the hash table. */
  41077. + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
  41078. +
  41079. + /* Indicate that we are only retrieving symbol values from this section. */
  41080. + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
  41081. +
  41082. + /* Do a link based on the link_order structures attached to each
  41083. + section of the BFD. */
  41084. + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
  41085. +
  41086. + /* Should this section be split up into smaller pieces during linking. */
  41087. + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
  41088. +
  41089. + /* Remove sections that are not referenced from the output. */
  41090. + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
  41091. +
  41092. + /* Attempt to merge SEC_MERGE sections. */
  41093. + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
  41094. +
  41095. + /* Is this section a member of a group? */
  41096. + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
  41097. +
  41098. + /* Discard members of a group. */
  41099. + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
  41100. +
  41101. + /* Check if SEC has been already linked during a reloceatable or
  41102. + final link. */
  41103. + void (*_section_already_linked) (bfd *, struct bfd_section *,
  41104. + struct bfd_link_info *);
  41105. +
  41106. + /* Routines to handle dynamic symbols and relocs. */
  41107. +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
  41108. + NAME##_get_dynamic_symtab_upper_bound, \
  41109. + NAME##_canonicalize_dynamic_symtab, \
  41110. + NAME##_get_synthetic_symtab, \
  41111. + NAME##_get_dynamic_reloc_upper_bound, \
  41112. + NAME##_canonicalize_dynamic_reloc
  41113. +
  41114. + /* Get the amount of memory required to hold the dynamic symbols. */
  41115. + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
  41116. + /* Read in the dynamic symbols. */
  41117. + long (*_bfd_canonicalize_dynamic_symtab)
  41118. + (bfd *, struct bfd_symbol **);
  41119. + /* Create synthetized symbols. */
  41120. + long (*_bfd_get_synthetic_symtab)
  41121. + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
  41122. + struct bfd_symbol **);
  41123. + /* Get the amount of memory required to hold the dynamic relocs. */
  41124. + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
  41125. + /* Read in the dynamic relocs. */
  41126. + long (*_bfd_canonicalize_dynamic_reloc)
  41127. + (bfd *, arelent **, struct bfd_symbol **);
  41128. +
  41129. + /* Opposite endian version of this target. */
  41130. + const struct bfd_target * alternative_target;
  41131. +
  41132. + /* Data for use by back-end routines, which isn't
  41133. + generic enough to belong in this structure. */
  41134. + const void *backend_data;
  41135. +
  41136. +} bfd_target;
  41137. +
  41138. +bfd_boolean bfd_set_default_target (const char *name);
  41139. +
  41140. +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
  41141. +
  41142. +const char ** bfd_target_list (void);
  41143. +
  41144. +const bfd_target *bfd_search_for_target
  41145. + (int (*search_func) (const bfd_target *, void *),
  41146. + void *);
  41147. +
  41148. +/* Extracted from format.c. */
  41149. +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
  41150. +
  41151. +bfd_boolean bfd_check_format_matches
  41152. + (bfd *abfd, bfd_format format, char ***matching);
  41153. +
  41154. +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
  41155. +
  41156. +const char *bfd_format_string (bfd_format format);
  41157. +
  41158. +/* Extracted from linker.c. */
  41159. +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
  41160. +
  41161. +#define bfd_link_split_section(abfd, sec) \
  41162. + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
  41163. +
  41164. +void bfd_section_already_linked (bfd *abfd, asection *sec,
  41165. + struct bfd_link_info *info);
  41166. +
  41167. +#define bfd_section_already_linked(abfd, sec, info) \
  41168. + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
  41169. +
  41170. +/* Extracted from simple.c. */
  41171. +bfd_byte *bfd_simple_get_relocated_section_contents
  41172. + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
  41173. +
  41174. +#ifdef __cplusplus
  41175. +}
  41176. +#endif
  41177. +#endif
  41178. --- /dev/null
  41179. +++ b/bfd/doc/libbfd.h
  41180. @@ -0,0 +1,2074 @@
  41181. +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
  41182. + generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c",
  41183. + "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
  41184. + Run "make headers" in your build bfd/ to regenerate. */
  41185. +
  41186. +/* libbfd.h -- Declarations used by bfd library *implementation*.
  41187. + (This include file is not for users of the library.)
  41188. +
  41189. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
  41190. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
  41191. + Free Software Foundation, Inc.
  41192. +
  41193. + Written by Cygnus Support.
  41194. +
  41195. + This file is part of BFD, the Binary File Descriptor library.
  41196. +
  41197. + This program is free software; you can redistribute it and/or modify
  41198. + it under the terms of the GNU General Public License as published by
  41199. + the Free Software Foundation; either version 3 of the License, or
  41200. + (at your option) any later version.
  41201. +
  41202. + This program is distributed in the hope that it will be useful,
  41203. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  41204. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  41205. + GNU General Public License for more details.
  41206. +
  41207. + You should have received a copy of the GNU General Public License
  41208. + along with this program; if not, write to the Free Software
  41209. + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  41210. + MA 02110-1301, USA. */
  41211. +
  41212. +#include "hashtab.h"
  41213. +
  41214. +/* Align an address upward to a boundary, expressed as a number of bytes.
  41215. + E.g. align to an 8-byte boundary with argument of 8. Take care never
  41216. + to wrap around if the address is within boundary-1 of the end of the
  41217. + address space. */
  41218. +#define BFD_ALIGN(this, boundary) \
  41219. + ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
  41220. + ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
  41221. + : ~ (bfd_vma) 0)
  41222. +
  41223. +/* If you want to read and write large blocks, you might want to do it
  41224. + in quanta of this amount */
  41225. +#define DEFAULT_BUFFERSIZE 8192
  41226. +
  41227. +/* Set a tdata field. Can't use the other macros for this, since they
  41228. + do casts, and casting to the left of assignment isn't portable. */
  41229. +#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
  41230. +
  41231. +/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
  41232. + to an instance of this structure. */
  41233. +
  41234. +struct bfd_in_memory
  41235. +{
  41236. + /* Size of buffer. */
  41237. + bfd_size_type size;
  41238. + /* Buffer holding contents of BFD. */
  41239. + bfd_byte *buffer;
  41240. +};
  41241. +
  41242. +struct section_hash_entry
  41243. +{
  41244. + struct bfd_hash_entry root;
  41245. + asection section;
  41246. +};
  41247. +
  41248. +/* tdata for an archive. For an input archive, cache
  41249. + needs to be free()'d. For an output archive, symdefs do. */
  41250. +
  41251. +struct artdata {
  41252. + file_ptr first_file_filepos;
  41253. + /* Speed up searching the armap */
  41254. + htab_t cache;
  41255. + bfd *archive_head; /* Only interesting in output routines */
  41256. + carsym *symdefs; /* the symdef entries */
  41257. + symindex symdef_count; /* how many there are */
  41258. + char *extended_names; /* clever intel extension */
  41259. + bfd_size_type extended_names_size; /* Size of extended names */
  41260. + /* when more compilers are standard C, this can be a time_t */
  41261. + long armap_timestamp; /* Timestamp value written into armap.
  41262. + This is used for BSD archives to check
  41263. + that the timestamp is recent enough
  41264. + for the BSD linker to not complain,
  41265. + just before we finish writing an
  41266. + archive. */
  41267. + file_ptr armap_datepos; /* Position within archive to seek to
  41268. + rewrite the date field. */
  41269. + void *tdata; /* Backend specific information. */
  41270. +};
  41271. +
  41272. +#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
  41273. +
  41274. +/* Goes in bfd's arelt_data slot */
  41275. +struct areltdata {
  41276. + char * arch_header; /* it's actually a string */
  41277. + unsigned int parsed_size; /* octets of filesize not including ar_hdr */
  41278. + char *filename; /* null-terminated */
  41279. +};
  41280. +
  41281. +#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
  41282. +
  41283. +extern void *bfd_malloc
  41284. + (bfd_size_type);
  41285. +extern void *bfd_realloc
  41286. + (void *, bfd_size_type);
  41287. +extern void *bfd_zmalloc
  41288. + (bfd_size_type);
  41289. +extern void *bfd_malloc2
  41290. + (bfd_size_type, bfd_size_type);
  41291. +extern void *bfd_realloc2
  41292. + (void *, bfd_size_type, bfd_size_type);
  41293. +extern void *bfd_zmalloc2
  41294. + (bfd_size_type, bfd_size_type);
  41295. +
  41296. +extern void _bfd_default_error_handler (const char *s, ...);
  41297. +extern bfd_error_handler_type _bfd_error_handler;
  41298. +
  41299. +/* These routines allocate and free things on the BFD's objalloc. */
  41300. +
  41301. +extern void *bfd_alloc
  41302. + (bfd *, bfd_size_type);
  41303. +extern void *bfd_zalloc
  41304. + (bfd *, bfd_size_type);
  41305. +extern void *bfd_alloc2
  41306. + (bfd *, bfd_size_type, bfd_size_type);
  41307. +extern void *bfd_zalloc2
  41308. + (bfd *, bfd_size_type, bfd_size_type);
  41309. +extern void bfd_release
  41310. + (bfd *, void *);
  41311. +
  41312. +bfd * _bfd_create_empty_archive_element_shell
  41313. + (bfd *obfd);
  41314. +bfd * _bfd_look_for_bfd_in_cache
  41315. + (bfd *, file_ptr);
  41316. +bfd_boolean _bfd_add_bfd_to_archive_cache
  41317. + (bfd *, file_ptr, bfd *);
  41318. +bfd_boolean _bfd_generic_mkarchive
  41319. + (bfd *abfd);
  41320. +const bfd_target *bfd_generic_archive_p
  41321. + (bfd *abfd);
  41322. +bfd_boolean bfd_slurp_armap
  41323. + (bfd *abfd);
  41324. +bfd_boolean bfd_slurp_bsd_armap_f2
  41325. + (bfd *abfd);
  41326. +#define bfd_slurp_bsd_armap bfd_slurp_armap
  41327. +#define bfd_slurp_coff_armap bfd_slurp_armap
  41328. +bfd_boolean _bfd_slurp_extended_name_table
  41329. + (bfd *abfd);
  41330. +extern bfd_boolean _bfd_construct_extended_name_table
  41331. + (bfd *, bfd_boolean, char **, bfd_size_type *);
  41332. +bfd_boolean _bfd_write_archive_contents
  41333. + (bfd *abfd);
  41334. +bfd_boolean _bfd_compute_and_write_armap
  41335. + (bfd *, unsigned int elength);
  41336. +bfd *_bfd_get_elt_at_filepos
  41337. + (bfd *archive, file_ptr filepos);
  41338. +extern bfd *_bfd_generic_get_elt_at_index
  41339. + (bfd *, symindex);
  41340. +bfd * _bfd_new_bfd
  41341. + (void);
  41342. +void _bfd_delete_bfd
  41343. + (bfd *);
  41344. +bfd_boolean _bfd_free_cached_info
  41345. + (bfd *);
  41346. +
  41347. +bfd_boolean bfd_false
  41348. + (bfd *ignore);
  41349. +bfd_boolean bfd_true
  41350. + (bfd *ignore);
  41351. +void *bfd_nullvoidptr
  41352. + (bfd *ignore);
  41353. +int bfd_0
  41354. + (bfd *ignore);
  41355. +unsigned int bfd_0u
  41356. + (bfd *ignore);
  41357. +long bfd_0l
  41358. + (bfd *ignore);
  41359. +long _bfd_n1
  41360. + (bfd *ignore);
  41361. +void bfd_void
  41362. + (bfd *ignore);
  41363. +
  41364. +bfd *_bfd_new_bfd_contained_in
  41365. + (bfd *);
  41366. +const bfd_target *_bfd_dummy_target
  41367. + (bfd *abfd);
  41368. +
  41369. +void bfd_dont_truncate_arname
  41370. + (bfd *abfd, const char *filename, char *hdr);
  41371. +void bfd_bsd_truncate_arname
  41372. + (bfd *abfd, const char *filename, char *hdr);
  41373. +void bfd_gnu_truncate_arname
  41374. + (bfd *abfd, const char *filename, char *hdr);
  41375. +
  41376. +bfd_boolean bsd_write_armap
  41377. + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
  41378. + int stridx);
  41379. +
  41380. +bfd_boolean coff_write_armap
  41381. + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
  41382. + int stridx);
  41383. +
  41384. +extern void *_bfd_generic_read_ar_hdr
  41385. + (bfd *);
  41386. +extern void _bfd_ar_spacepad
  41387. + (char *, size_t, const char *, long);
  41388. +
  41389. +extern void *_bfd_generic_read_ar_hdr_mag
  41390. + (bfd *, const char *);
  41391. +
  41392. +bfd * bfd_generic_openr_next_archived_file
  41393. + (bfd *archive, bfd *last_file);
  41394. +
  41395. +int bfd_generic_stat_arch_elt
  41396. + (bfd *, struct stat *);
  41397. +
  41398. +#define _bfd_read_ar_hdr(abfd) \
  41399. + BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
  41400. +
  41401. +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
  41402. + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
  41403. +
  41404. +#define _bfd_generic_close_and_cleanup bfd_true
  41405. +#define _bfd_generic_bfd_free_cached_info bfd_true
  41406. +extern bfd_boolean _bfd_generic_new_section_hook
  41407. + (bfd *, asection *);
  41408. +extern bfd_boolean _bfd_generic_get_section_contents
  41409. + (bfd *, asection *, void *, file_ptr, bfd_size_type);
  41410. +extern bfd_boolean _bfd_generic_get_section_contents_in_window
  41411. + (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
  41412. +
  41413. +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use
  41414. + BFD_JUMP_TABLE_COPY (_bfd_generic). */
  41415. +
  41416. +#define _bfd_generic_bfd_copy_private_bfd_data \
  41417. + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
  41418. +#define _bfd_generic_bfd_merge_private_bfd_data \
  41419. + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
  41420. +#define _bfd_generic_bfd_set_private_flags \
  41421. + ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
  41422. +#define _bfd_generic_bfd_copy_private_section_data \
  41423. + ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
  41424. +#define _bfd_generic_bfd_copy_private_symbol_data \
  41425. + ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
  41426. +#define _bfd_generic_bfd_copy_private_header_data \
  41427. + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
  41428. +#define _bfd_generic_bfd_print_private_bfd_data \
  41429. + ((bfd_boolean (*) (bfd *, void *)) bfd_true)
  41430. +
  41431. +extern bfd_boolean _bfd_generic_init_private_section_data
  41432. + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
  41433. +
  41434. +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
  41435. + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */
  41436. +
  41437. +extern char *_bfd_nocore_core_file_failing_command
  41438. + (bfd *);
  41439. +extern int _bfd_nocore_core_file_failing_signal
  41440. + (bfd *);
  41441. +extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
  41442. + (bfd *, bfd *);
  41443. +
  41444. +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
  41445. + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */
  41446. +
  41447. +#define _bfd_noarchive_slurp_armap bfd_false
  41448. +#define _bfd_noarchive_slurp_extended_name_table bfd_false
  41449. +#define _bfd_noarchive_construct_extended_name_table \
  41450. + ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
  41451. + bfd_false)
  41452. +#define _bfd_noarchive_truncate_arname \
  41453. + ((void (*) (bfd *, const char *, char *)) bfd_void)
  41454. +#define _bfd_noarchive_write_armap \
  41455. + ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
  41456. + bfd_false)
  41457. +#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
  41458. +#define _bfd_noarchive_openr_next_archived_file \
  41459. + ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
  41460. +#define _bfd_noarchive_get_elt_at_index \
  41461. + ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
  41462. +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
  41463. +#define _bfd_noarchive_update_armap_timestamp bfd_false
  41464. +
  41465. +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
  41466. + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */
  41467. +
  41468. +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
  41469. +#define _bfd_archive_bsd_slurp_extended_name_table \
  41470. + _bfd_slurp_extended_name_table
  41471. +extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
  41472. + (bfd *, char **, bfd_size_type *, const char **);
  41473. +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
  41474. +#define _bfd_archive_bsd_write_armap bsd_write_armap
  41475. +#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
  41476. +#define _bfd_archive_bsd_openr_next_archived_file \
  41477. + bfd_generic_openr_next_archived_file
  41478. +#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
  41479. +#define _bfd_archive_bsd_generic_stat_arch_elt \
  41480. + bfd_generic_stat_arch_elt
  41481. +extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
  41482. + (bfd *);
  41483. +
  41484. +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
  41485. + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */
  41486. +
  41487. +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
  41488. +#define _bfd_archive_coff_slurp_extended_name_table \
  41489. + _bfd_slurp_extended_name_table
  41490. +extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
  41491. + (bfd *, char **, bfd_size_type *, const char **);
  41492. +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
  41493. +#define _bfd_archive_coff_write_armap coff_write_armap
  41494. +#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
  41495. +#define _bfd_archive_coff_openr_next_archived_file \
  41496. + bfd_generic_openr_next_archived_file
  41497. +#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
  41498. +#define _bfd_archive_coff_generic_stat_arch_elt \
  41499. + bfd_generic_stat_arch_elt
  41500. +#define _bfd_archive_coff_update_armap_timestamp bfd_true
  41501. +
  41502. +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
  41503. + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
  41504. +
  41505. +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
  41506. +#define _bfd_nosymbols_canonicalize_symtab \
  41507. + ((long (*) (bfd *, asymbol **)) _bfd_n1)
  41508. +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
  41509. +#define _bfd_nosymbols_print_symbol \
  41510. + ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
  41511. +#define _bfd_nosymbols_get_symbol_info \
  41512. + ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
  41513. +#define _bfd_nosymbols_bfd_is_local_label_name \
  41514. + ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
  41515. +#define _bfd_nosymbols_bfd_is_target_special_symbol \
  41516. + ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
  41517. +#define _bfd_nosymbols_get_lineno \
  41518. + ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
  41519. +#define _bfd_nosymbols_find_nearest_line \
  41520. + ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
  41521. + const char **, unsigned int *)) \
  41522. + bfd_false)
  41523. +#define _bfd_nosymbols_find_inliner_info \
  41524. + ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
  41525. + bfd_false)
  41526. +#define _bfd_nosymbols_bfd_make_debug_symbol \
  41527. + ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
  41528. +#define _bfd_nosymbols_read_minisymbols \
  41529. + ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
  41530. +#define _bfd_nosymbols_minisymbol_to_symbol \
  41531. + ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
  41532. + bfd_nullvoidptr)
  41533. +
  41534. +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
  41535. + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */
  41536. +
  41537. +extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
  41538. +extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
  41539. + arelent **, asymbol **);
  41540. +#define _bfd_norelocs_bfd_reloc_type_lookup \
  41541. + ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
  41542. +#define _bfd_norelocs_bfd_reloc_name_lookup \
  41543. + ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
  41544. +
  41545. +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
  41546. + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */
  41547. +
  41548. +#define _bfd_nowrite_set_arch_mach \
  41549. + ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
  41550. + bfd_false)
  41551. +#define _bfd_nowrite_set_section_contents \
  41552. + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
  41553. + bfd_false)
  41554. +
  41555. +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use
  41556. + BFD_JUMP_TABLE_WRITE (_bfd_generic). */
  41557. +
  41558. +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
  41559. +extern bfd_boolean _bfd_generic_set_section_contents
  41560. + (bfd *, asection *, const void *, file_ptr, bfd_size_type);
  41561. +
  41562. +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
  41563. + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */
  41564. +
  41565. +#define _bfd_nolink_sizeof_headers \
  41566. + ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
  41567. +#define _bfd_nolink_bfd_get_relocated_section_contents \
  41568. + ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
  41569. + bfd_byte *, bfd_boolean, asymbol **)) \
  41570. + bfd_nullvoidptr)
  41571. +#define _bfd_nolink_bfd_relax_section \
  41572. + ((bfd_boolean (*) \
  41573. + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
  41574. + bfd_false)
  41575. +#define _bfd_nolink_bfd_gc_sections \
  41576. + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
  41577. + bfd_false)
  41578. +#define _bfd_nolink_bfd_merge_sections \
  41579. + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
  41580. + bfd_false)
  41581. +#define _bfd_nolink_bfd_is_group_section \
  41582. + ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
  41583. + bfd_false)
  41584. +#define _bfd_nolink_bfd_discard_group \
  41585. + ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
  41586. + bfd_false)
  41587. +#define _bfd_nolink_bfd_link_hash_table_create \
  41588. + ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
  41589. +#define _bfd_nolink_bfd_link_hash_table_free \
  41590. + ((void (*) (struct bfd_link_hash_table *)) bfd_void)
  41591. +#define _bfd_nolink_bfd_link_add_symbols \
  41592. + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
  41593. +#define _bfd_nolink_bfd_link_just_syms \
  41594. + ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
  41595. +#define _bfd_nolink_bfd_final_link \
  41596. + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
  41597. +#define _bfd_nolink_bfd_link_split_section \
  41598. + ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
  41599. +#define _bfd_nolink_section_already_linked \
  41600. + ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
  41601. +
  41602. +/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
  41603. + have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
  41604. + (_bfd_nodynamic). */
  41605. +
  41606. +#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
  41607. +#define _bfd_nodynamic_canonicalize_dynamic_symtab \
  41608. + ((long (*) (bfd *, asymbol **)) _bfd_n1)
  41609. +#define _bfd_nodynamic_get_synthetic_symtab \
  41610. + ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
  41611. +#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
  41612. +#define _bfd_nodynamic_canonicalize_dynamic_reloc \
  41613. + ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
  41614. +
  41615. +/* Generic routine to determine of the given symbol is a local
  41616. + label. */
  41617. +extern bfd_boolean bfd_generic_is_local_label_name
  41618. + (bfd *, const char *);
  41619. +
  41620. +/* Generic minisymbol routines. */
  41621. +extern long _bfd_generic_read_minisymbols
  41622. + (bfd *, bfd_boolean, void **, unsigned int *);
  41623. +extern asymbol *_bfd_generic_minisymbol_to_symbol
  41624. + (bfd *, bfd_boolean, const void *, asymbol *);
  41625. +
  41626. +/* Find the nearest line using .stab/.stabstr sections. */
  41627. +extern bfd_boolean _bfd_stab_section_find_nearest_line
  41628. + (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
  41629. + const char **, const char **, unsigned int *, void **);
  41630. +
  41631. +/* Find the nearest line using DWARF 1 debugging information. */
  41632. +extern bfd_boolean _bfd_dwarf1_find_nearest_line
  41633. + (bfd *, asection *, asymbol **, bfd_vma, const char **,
  41634. + const char **, unsigned int *);
  41635. +
  41636. +/* Find the nearest line using DWARF 2 debugging information. */
  41637. +extern bfd_boolean _bfd_dwarf2_find_nearest_line
  41638. + (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
  41639. + unsigned int *, unsigned int, void **);
  41640. +
  41641. +/* Find the line using DWARF 2 debugging information. */
  41642. +extern bfd_boolean _bfd_dwarf2_find_line
  41643. + (bfd *, asymbol **, asymbol *, const char **,
  41644. + unsigned int *, unsigned int, void **);
  41645. +
  41646. +bfd_boolean _bfd_generic_find_line
  41647. + (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
  41648. +
  41649. +/* Find inliner info after calling bfd_find_nearest_line. */
  41650. +extern bfd_boolean _bfd_dwarf2_find_inliner_info
  41651. + (bfd *, const char **, const char **, unsigned int *, void **);
  41652. +
  41653. +/* Create a new section entry. */
  41654. +extern struct bfd_hash_entry *bfd_section_hash_newfunc
  41655. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  41656. +
  41657. +/* A routine to create entries for a bfd_link_hash_table. */
  41658. +extern struct bfd_hash_entry *_bfd_link_hash_newfunc
  41659. + (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
  41660. + const char *string);
  41661. +
  41662. +/* Initialize a bfd_link_hash_table. */
  41663. +extern bfd_boolean _bfd_link_hash_table_init
  41664. + (struct bfd_link_hash_table *, bfd *,
  41665. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  41666. + struct bfd_hash_table *,
  41667. + const char *),
  41668. + unsigned int);
  41669. +
  41670. +/* Generic link hash table creation routine. */
  41671. +extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
  41672. + (bfd *);
  41673. +
  41674. +/* Generic link hash table destruction routine. */
  41675. +extern void _bfd_generic_link_hash_table_free
  41676. + (struct bfd_link_hash_table *);
  41677. +
  41678. +/* Generic add symbol routine. */
  41679. +extern bfd_boolean _bfd_generic_link_add_symbols
  41680. + (bfd *, struct bfd_link_info *);
  41681. +
  41682. +/* Generic add symbol routine. This version is used by targets for
  41683. + which the linker must collect constructors and destructors by name,
  41684. + as the collect2 program does. */
  41685. +extern bfd_boolean _bfd_generic_link_add_symbols_collect
  41686. + (bfd *, struct bfd_link_info *);
  41687. +
  41688. +/* Generic archive add symbol routine. */
  41689. +extern bfd_boolean _bfd_generic_link_add_archive_symbols
  41690. + (bfd *, struct bfd_link_info *,
  41691. + bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
  41692. +
  41693. +/* Forward declaration to avoid prototype errors. */
  41694. +typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
  41695. +
  41696. +/* Generic routine to add a single symbol. */
  41697. +extern bfd_boolean _bfd_generic_link_add_one_symbol
  41698. + (struct bfd_link_info *, bfd *, const char *name, flagword,
  41699. + asection *, bfd_vma, const char *, bfd_boolean copy,
  41700. + bfd_boolean constructor, struct bfd_link_hash_entry **);
  41701. +
  41702. +/* Generic routine to mark section as supplying symbols only. */
  41703. +extern void _bfd_generic_link_just_syms
  41704. + (asection *, struct bfd_link_info *);
  41705. +
  41706. +/* Generic link routine. */
  41707. +extern bfd_boolean _bfd_generic_final_link
  41708. + (bfd *, struct bfd_link_info *);
  41709. +
  41710. +extern bfd_boolean _bfd_generic_link_split_section
  41711. + (bfd *, struct bfd_section *);
  41712. +
  41713. +extern void _bfd_generic_section_already_linked
  41714. + (bfd *, struct bfd_section *, struct bfd_link_info *);
  41715. +
  41716. +/* Generic reloc_link_order processing routine. */
  41717. +extern bfd_boolean _bfd_generic_reloc_link_order
  41718. + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
  41719. +
  41720. +/* Default link order processing routine. */
  41721. +extern bfd_boolean _bfd_default_link_order
  41722. + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
  41723. +
  41724. +/* Count the number of reloc entries in a link order list. */
  41725. +extern unsigned int _bfd_count_link_order_relocs
  41726. + (struct bfd_link_order *);
  41727. +
  41728. +/* Final link relocation routine. */
  41729. +extern bfd_reloc_status_type _bfd_final_link_relocate
  41730. + (reloc_howto_type *, bfd *, asection *, bfd_byte *,
  41731. + bfd_vma, bfd_vma, bfd_vma);
  41732. +
  41733. +/* Relocate a particular location by a howto and a value. */
  41734. +extern bfd_reloc_status_type _bfd_relocate_contents
  41735. + (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
  41736. +
  41737. +/* Clear a given location using a given howto. */
  41738. +extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
  41739. + bfd_byte *location);
  41740. +
  41741. +/* Link stabs in sections in the first pass. */
  41742. +
  41743. +extern bfd_boolean _bfd_link_section_stabs
  41744. + (bfd *, struct stab_info *, asection *, asection *, void **,
  41745. + bfd_size_type *);
  41746. +
  41747. +/* Eliminate stabs for discarded functions and symbols. */
  41748. +extern bfd_boolean _bfd_discard_section_stabs
  41749. + (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
  41750. +
  41751. +/* Write out the .stab section when linking stabs in sections. */
  41752. +
  41753. +extern bfd_boolean _bfd_write_section_stabs
  41754. + (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
  41755. +
  41756. +/* Write out the .stabstr string table when linking stabs in sections. */
  41757. +
  41758. +extern bfd_boolean _bfd_write_stab_strings
  41759. + (bfd *, struct stab_info *);
  41760. +
  41761. +/* Find an offset within a .stab section when linking stabs in
  41762. + sections. */
  41763. +
  41764. +extern bfd_vma _bfd_stab_section_offset
  41765. + (asection *, void *, bfd_vma);
  41766. +
  41767. +/* Register a SEC_MERGE section as a candidate for merging. */
  41768. +
  41769. +extern bfd_boolean _bfd_add_merge_section
  41770. + (bfd *, void **, asection *, void **);
  41771. +
  41772. +/* Attempt to merge SEC_MERGE sections. */
  41773. +
  41774. +extern bfd_boolean _bfd_merge_sections
  41775. + (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
  41776. +
  41777. +/* Write out a merged section. */
  41778. +
  41779. +extern bfd_boolean _bfd_write_merged_section
  41780. + (bfd *, asection *, void *);
  41781. +
  41782. +/* Find an offset within a modified SEC_MERGE section. */
  41783. +
  41784. +extern bfd_vma _bfd_merged_section_offset
  41785. + (bfd *, asection **, void *, bfd_vma);
  41786. +
  41787. +/* Create a string table. */
  41788. +extern struct bfd_strtab_hash *_bfd_stringtab_init
  41789. + (void);
  41790. +
  41791. +/* Create an XCOFF .debug section style string table. */
  41792. +extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
  41793. + (void);
  41794. +
  41795. +/* Free a string table. */
  41796. +extern void _bfd_stringtab_free
  41797. + (struct bfd_strtab_hash *);
  41798. +
  41799. +/* Get the size of a string table. */
  41800. +extern bfd_size_type _bfd_stringtab_size
  41801. + (struct bfd_strtab_hash *);
  41802. +
  41803. +/* Add a string to a string table. */
  41804. +extern bfd_size_type _bfd_stringtab_add
  41805. + (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
  41806. +
  41807. +/* Write out a string table. */
  41808. +extern bfd_boolean _bfd_stringtab_emit
  41809. + (bfd *, struct bfd_strtab_hash *);
  41810. +
  41811. +/* Check that endianness of input and output file match. */
  41812. +extern bfd_boolean _bfd_generic_verify_endian_match
  41813. + (bfd *, bfd *);
  41814. +
  41815. +/* Macros to tell if bfds are read or write enabled.
  41816. +
  41817. + Note that bfds open for read may be scribbled into if the fd passed
  41818. + to bfd_fdopenr is actually open both for read and write
  41819. + simultaneously. However an output bfd will never be open for
  41820. + read. Therefore sometimes you want to check bfd_read_p or
  41821. + !bfd_read_p, and only sometimes bfd_write_p.
  41822. +*/
  41823. +
  41824. +#define bfd_read_p(abfd) \
  41825. + ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
  41826. +#define bfd_write_p(abfd) \
  41827. + ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
  41828. +
  41829. +void bfd_assert
  41830. + (const char*,int);
  41831. +
  41832. +#define BFD_ASSERT(x) \
  41833. + do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
  41834. +
  41835. +#define BFD_FAIL() \
  41836. + do { bfd_assert(__FILE__,__LINE__); } while (0)
  41837. +
  41838. +extern void _bfd_abort
  41839. + (const char *, int, const char *) ATTRIBUTE_NORETURN;
  41840. +
  41841. +/* if gcc >= 2.6, we can give a function name, too */
  41842. +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
  41843. +#define __PRETTY_FUNCTION__ ((char *) NULL)
  41844. +#endif
  41845. +
  41846. +#undef abort
  41847. +#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
  41848. +
  41849. +/* Manipulate a system FILE but using BFD's "file_ptr", rather than
  41850. + the system "off_t" or "off64_t", as the offset. */
  41851. +extern file_ptr real_ftell (FILE *file);
  41852. +extern int real_fseek (FILE *file, file_ptr offset, int whence);
  41853. +extern FILE *real_fopen (const char *filename, const char *modes);
  41854. +
  41855. +/* List of supported target vectors, and the default vector (if
  41856. + bfd_default_vector[0] is NULL, there is no default). */
  41857. +extern const bfd_target * const *bfd_target_vector;
  41858. +extern const bfd_target *bfd_default_vector[];
  41859. +
  41860. +/* List of associated target vectors. */
  41861. +extern const bfd_target * const *bfd_associated_vector;
  41862. +
  41863. +/* Functions shared by the ECOFF and MIPS ELF backends, which have no
  41864. + other common header files. */
  41865. +
  41866. +#if defined(__STDC__) || defined(ALMOST_STDC)
  41867. +struct ecoff_find_line;
  41868. +#endif
  41869. +
  41870. +extern bfd_boolean _bfd_ecoff_locate_line
  41871. + (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
  41872. + const struct ecoff_debug_swap * const, struct ecoff_find_line *,
  41873. + const char **, const char **, unsigned int *);
  41874. +extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
  41875. + (void *, bfd_byte *);
  41876. +extern bfd_boolean _bfd_ecoff_get_accumulated_sym
  41877. + (void *, bfd_byte *);
  41878. +extern bfd_boolean _bfd_ecoff_get_accumulated_ss
  41879. + (void *, bfd_byte *);
  41880. +
  41881. +extern bfd_vma _bfd_get_gp_value
  41882. + (bfd *);
  41883. +extern void _bfd_set_gp_value
  41884. + (bfd *, bfd_vma);
  41885. +
  41886. +/* Function shared by the COFF and ELF SH backends, which have no
  41887. + other common header files. */
  41888. +
  41889. +#ifndef _bfd_sh_align_load_span
  41890. +extern bfd_boolean _bfd_sh_align_load_span
  41891. + (bfd *, asection *, bfd_byte *,
  41892. + bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
  41893. + void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
  41894. +#endif
  41895. +
  41896. +/* This is the shape of the elements inside the already_linked hash
  41897. + table. It maps a name onto a list of already_linked elements with
  41898. + the same name. */
  41899. +
  41900. +struct bfd_section_already_linked_hash_entry
  41901. +{
  41902. + struct bfd_hash_entry root;
  41903. + struct bfd_section_already_linked *entry;
  41904. +};
  41905. +
  41906. +struct bfd_section_already_linked
  41907. +{
  41908. + struct bfd_section_already_linked *next;
  41909. + asection *sec;
  41910. +};
  41911. +
  41912. +extern struct bfd_section_already_linked_hash_entry *
  41913. + bfd_section_already_linked_table_lookup (const char *);
  41914. +extern bfd_boolean bfd_section_already_linked_table_insert
  41915. + (struct bfd_section_already_linked_hash_entry *, asection *);
  41916. +extern void bfd_section_already_linked_table_traverse
  41917. + (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
  41918. + void *), void *);
  41919. +
  41920. +extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
  41921. +extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
  41922. +
  41923. +/* Extracted from init.c. */
  41924. +/* Extracted from libbfd.c. */
  41925. +bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
  41926. +
  41927. +unsigned int bfd_log2 (bfd_vma x);
  41928. +
  41929. +/* Extracted from bfdio.c. */
  41930. +struct bfd_iovec
  41931. +{
  41932. + /* To avoid problems with macros, a "b" rather than "f"
  41933. + prefix is prepended to each method name. */
  41934. + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
  41935. + bytes starting at PTR. Return the number of bytes actually
  41936. + transfered (a read past end-of-file returns less than NBYTES),
  41937. + or -1 (setting <<bfd_error>>) if an error occurs. */
  41938. + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
  41939. + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
  41940. + file_ptr nbytes);
  41941. + /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
  41942. + if an error occurs. */
  41943. + file_ptr (*btell) (struct bfd *abfd);
  41944. + /* For the following, on successful completion a value of 0 is returned.
  41945. + Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
  41946. + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
  41947. + int (*bclose) (struct bfd *abfd);
  41948. + int (*bflush) (struct bfd *abfd);
  41949. + int (*bstat) (struct bfd *abfd, struct stat *sb);
  41950. +};
  41951. +/* Extracted from bfdwin.c. */
  41952. +struct _bfd_window_internal {
  41953. + struct _bfd_window_internal *next;
  41954. + void *data;
  41955. + bfd_size_type size;
  41956. + int refcount : 31; /* should be enough... */
  41957. + unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
  41958. +};
  41959. +/* Extracted from cache.c. */
  41960. +bfd_boolean bfd_cache_init (bfd *abfd);
  41961. +
  41962. +bfd_boolean bfd_cache_close (bfd *abfd);
  41963. +
  41964. +FILE* bfd_open_file (bfd *abfd);
  41965. +
  41966. +/* Extracted from reloc.c. */
  41967. +#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
  41968. +
  41969. +static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
  41970. +
  41971. + "BFD_RELOC_64",
  41972. + "BFD_RELOC_32",
  41973. + "BFD_RELOC_26",
  41974. + "BFD_RELOC_24",
  41975. + "BFD_RELOC_16",
  41976. + "BFD_RELOC_14",
  41977. + "BFD_RELOC_8",
  41978. + "BFD_RELOC_64_PCREL",
  41979. + "BFD_RELOC_32_PCREL",
  41980. + "BFD_RELOC_24_PCREL",
  41981. + "BFD_RELOC_16_PCREL",
  41982. + "BFD_RELOC_12_PCREL",
  41983. + "BFD_RELOC_8_PCREL",
  41984. + "BFD_RELOC_32_SECREL",
  41985. + "BFD_RELOC_32_GOT_PCREL",
  41986. + "BFD_RELOC_16_GOT_PCREL",
  41987. + "BFD_RELOC_8_GOT_PCREL",
  41988. + "BFD_RELOC_32_GOTOFF",
  41989. + "BFD_RELOC_16_GOTOFF",
  41990. + "BFD_RELOC_LO16_GOTOFF",
  41991. + "BFD_RELOC_HI16_GOTOFF",
  41992. + "BFD_RELOC_HI16_S_GOTOFF",
  41993. + "BFD_RELOC_8_GOTOFF",
  41994. + "BFD_RELOC_64_PLT_PCREL",
  41995. + "BFD_RELOC_32_PLT_PCREL",
  41996. + "BFD_RELOC_24_PLT_PCREL",
  41997. + "BFD_RELOC_16_PLT_PCREL",
  41998. + "BFD_RELOC_8_PLT_PCREL",
  41999. + "BFD_RELOC_64_PLTOFF",
  42000. + "BFD_RELOC_32_PLTOFF",
  42001. + "BFD_RELOC_16_PLTOFF",
  42002. + "BFD_RELOC_LO16_PLTOFF",
  42003. + "BFD_RELOC_HI16_PLTOFF",
  42004. + "BFD_RELOC_HI16_S_PLTOFF",
  42005. + "BFD_RELOC_8_PLTOFF",
  42006. + "BFD_RELOC_68K_GLOB_DAT",
  42007. + "BFD_RELOC_68K_JMP_SLOT",
  42008. + "BFD_RELOC_68K_RELATIVE",
  42009. + "BFD_RELOC_32_BASEREL",
  42010. + "BFD_RELOC_16_BASEREL",
  42011. + "BFD_RELOC_LO16_BASEREL",
  42012. + "BFD_RELOC_HI16_BASEREL",
  42013. + "BFD_RELOC_HI16_S_BASEREL",
  42014. + "BFD_RELOC_8_BASEREL",
  42015. + "BFD_RELOC_RVA",
  42016. + "BFD_RELOC_8_FFnn",
  42017. + "BFD_RELOC_32_PCREL_S2",
  42018. + "BFD_RELOC_16_PCREL_S2",
  42019. + "BFD_RELOC_23_PCREL_S2",
  42020. + "BFD_RELOC_HI22",
  42021. + "BFD_RELOC_LO10",
  42022. + "BFD_RELOC_GPREL16",
  42023. + "BFD_RELOC_GPREL32",
  42024. + "BFD_RELOC_I960_CALLJ",
  42025. + "BFD_RELOC_NONE",
  42026. + "BFD_RELOC_SPARC_WDISP22",
  42027. + "BFD_RELOC_SPARC22",
  42028. + "BFD_RELOC_SPARC13",
  42029. + "BFD_RELOC_SPARC_GOT10",
  42030. + "BFD_RELOC_SPARC_GOT13",
  42031. + "BFD_RELOC_SPARC_GOT22",
  42032. + "BFD_RELOC_SPARC_PC10",
  42033. + "BFD_RELOC_SPARC_PC22",
  42034. + "BFD_RELOC_SPARC_WPLT30",
  42035. + "BFD_RELOC_SPARC_COPY",
  42036. + "BFD_RELOC_SPARC_GLOB_DAT",
  42037. + "BFD_RELOC_SPARC_JMP_SLOT",
  42038. + "BFD_RELOC_SPARC_RELATIVE",
  42039. + "BFD_RELOC_SPARC_UA16",
  42040. + "BFD_RELOC_SPARC_UA32",
  42041. + "BFD_RELOC_SPARC_UA64",
  42042. + "BFD_RELOC_SPARC_BASE13",
  42043. + "BFD_RELOC_SPARC_BASE22",
  42044. + "BFD_RELOC_SPARC_10",
  42045. + "BFD_RELOC_SPARC_11",
  42046. + "BFD_RELOC_SPARC_OLO10",
  42047. + "BFD_RELOC_SPARC_HH22",
  42048. + "BFD_RELOC_SPARC_HM10",
  42049. + "BFD_RELOC_SPARC_LM22",
  42050. + "BFD_RELOC_SPARC_PC_HH22",
  42051. + "BFD_RELOC_SPARC_PC_HM10",
  42052. + "BFD_RELOC_SPARC_PC_LM22",
  42053. + "BFD_RELOC_SPARC_WDISP16",
  42054. + "BFD_RELOC_SPARC_WDISP19",
  42055. + "BFD_RELOC_SPARC_7",
  42056. + "BFD_RELOC_SPARC_6",
  42057. + "BFD_RELOC_SPARC_5",
  42058. + "BFD_RELOC_SPARC_PLT32",
  42059. + "BFD_RELOC_SPARC_PLT64",
  42060. + "BFD_RELOC_SPARC_HIX22",
  42061. + "BFD_RELOC_SPARC_LOX10",
  42062. + "BFD_RELOC_SPARC_H44",
  42063. + "BFD_RELOC_SPARC_M44",
  42064. + "BFD_RELOC_SPARC_L44",
  42065. + "BFD_RELOC_SPARC_REGISTER",
  42066. + "BFD_RELOC_SPARC_REV32",
  42067. + "BFD_RELOC_SPARC_TLS_GD_HI22",
  42068. + "BFD_RELOC_SPARC_TLS_GD_LO10",
  42069. + "BFD_RELOC_SPARC_TLS_GD_ADD",
  42070. + "BFD_RELOC_SPARC_TLS_GD_CALL",
  42071. + "BFD_RELOC_SPARC_TLS_LDM_HI22",
  42072. + "BFD_RELOC_SPARC_TLS_LDM_LO10",
  42073. + "BFD_RELOC_SPARC_TLS_LDM_ADD",
  42074. + "BFD_RELOC_SPARC_TLS_LDM_CALL",
  42075. + "BFD_RELOC_SPARC_TLS_LDO_HIX22",
  42076. + "BFD_RELOC_SPARC_TLS_LDO_LOX10",
  42077. + "BFD_RELOC_SPARC_TLS_LDO_ADD",
  42078. + "BFD_RELOC_SPARC_TLS_IE_HI22",
  42079. + "BFD_RELOC_SPARC_TLS_IE_LO10",
  42080. + "BFD_RELOC_SPARC_TLS_IE_LD",
  42081. + "BFD_RELOC_SPARC_TLS_IE_LDX",
  42082. + "BFD_RELOC_SPARC_TLS_IE_ADD",
  42083. + "BFD_RELOC_SPARC_TLS_LE_HIX22",
  42084. + "BFD_RELOC_SPARC_TLS_LE_LOX10",
  42085. + "BFD_RELOC_SPARC_TLS_DTPMOD32",
  42086. + "BFD_RELOC_SPARC_TLS_DTPMOD64",
  42087. + "BFD_RELOC_SPARC_TLS_DTPOFF32",
  42088. + "BFD_RELOC_SPARC_TLS_DTPOFF64",
  42089. + "BFD_RELOC_SPARC_TLS_TPOFF32",
  42090. + "BFD_RELOC_SPARC_TLS_TPOFF64",
  42091. + "BFD_RELOC_SPU_IMM7",
  42092. + "BFD_RELOC_SPU_IMM8",
  42093. + "BFD_RELOC_SPU_IMM10",
  42094. + "BFD_RELOC_SPU_IMM10W",
  42095. + "BFD_RELOC_SPU_IMM16",
  42096. + "BFD_RELOC_SPU_IMM16W",
  42097. + "BFD_RELOC_SPU_IMM18",
  42098. + "BFD_RELOC_SPU_PCREL9a",
  42099. + "BFD_RELOC_SPU_PCREL9b",
  42100. + "BFD_RELOC_SPU_PCREL16",
  42101. + "BFD_RELOC_SPU_LO16",
  42102. + "BFD_RELOC_SPU_HI16",
  42103. + "BFD_RELOC_SPU_PPU32",
  42104. + "BFD_RELOC_SPU_PPU64",
  42105. + "BFD_RELOC_ALPHA_GPDISP_HI16",
  42106. + "BFD_RELOC_ALPHA_GPDISP_LO16",
  42107. + "BFD_RELOC_ALPHA_GPDISP",
  42108. + "BFD_RELOC_ALPHA_LITERAL",
  42109. + "BFD_RELOC_ALPHA_ELF_LITERAL",
  42110. + "BFD_RELOC_ALPHA_LITUSE",
  42111. + "BFD_RELOC_ALPHA_HINT",
  42112. + "BFD_RELOC_ALPHA_LINKAGE",
  42113. + "BFD_RELOC_ALPHA_CODEADDR",
  42114. + "BFD_RELOC_ALPHA_GPREL_HI16",
  42115. + "BFD_RELOC_ALPHA_GPREL_LO16",
  42116. + "BFD_RELOC_ALPHA_BRSGP",
  42117. + "BFD_RELOC_ALPHA_TLSGD",
  42118. + "BFD_RELOC_ALPHA_TLSLDM",
  42119. + "BFD_RELOC_ALPHA_DTPMOD64",
  42120. + "BFD_RELOC_ALPHA_GOTDTPREL16",
  42121. + "BFD_RELOC_ALPHA_DTPREL64",
  42122. + "BFD_RELOC_ALPHA_DTPREL_HI16",
  42123. + "BFD_RELOC_ALPHA_DTPREL_LO16",
  42124. + "BFD_RELOC_ALPHA_DTPREL16",
  42125. + "BFD_RELOC_ALPHA_GOTTPREL16",
  42126. + "BFD_RELOC_ALPHA_TPREL64",
  42127. + "BFD_RELOC_ALPHA_TPREL_HI16",
  42128. + "BFD_RELOC_ALPHA_TPREL_LO16",
  42129. + "BFD_RELOC_ALPHA_TPREL16",
  42130. + "BFD_RELOC_MIPS_JMP",
  42131. + "BFD_RELOC_MIPS16_JMP",
  42132. + "BFD_RELOC_MIPS16_GPREL",
  42133. + "BFD_RELOC_HI16",
  42134. + "BFD_RELOC_HI16_S",
  42135. + "BFD_RELOC_LO16",
  42136. + "BFD_RELOC_HI16_PCREL",
  42137. + "BFD_RELOC_HI16_S_PCREL",
  42138. + "BFD_RELOC_LO16_PCREL",
  42139. + "BFD_RELOC_MIPS16_HI16",
  42140. + "BFD_RELOC_MIPS16_HI16_S",
  42141. + "BFD_RELOC_MIPS16_LO16",
  42142. + "BFD_RELOC_MIPS_LITERAL",
  42143. + "BFD_RELOC_MIPS_GOT16",
  42144. + "BFD_RELOC_MIPS_CALL16",
  42145. + "BFD_RELOC_MIPS_GOT_HI16",
  42146. + "BFD_RELOC_MIPS_GOT_LO16",
  42147. + "BFD_RELOC_MIPS_CALL_HI16",
  42148. + "BFD_RELOC_MIPS_CALL_LO16",
  42149. + "BFD_RELOC_MIPS_SUB",
  42150. + "BFD_RELOC_MIPS_GOT_PAGE",
  42151. + "BFD_RELOC_MIPS_GOT_OFST",
  42152. + "BFD_RELOC_MIPS_GOT_DISP",
  42153. + "BFD_RELOC_MIPS_SHIFT5",
  42154. + "BFD_RELOC_MIPS_SHIFT6",
  42155. + "BFD_RELOC_MIPS_INSERT_A",
  42156. + "BFD_RELOC_MIPS_INSERT_B",
  42157. + "BFD_RELOC_MIPS_DELETE",
  42158. + "BFD_RELOC_MIPS_HIGHEST",
  42159. + "BFD_RELOC_MIPS_HIGHER",
  42160. + "BFD_RELOC_MIPS_SCN_DISP",
  42161. + "BFD_RELOC_MIPS_REL16",
  42162. + "BFD_RELOC_MIPS_RELGOT",
  42163. + "BFD_RELOC_MIPS_JALR",
  42164. + "BFD_RELOC_MIPS_TLS_DTPMOD32",
  42165. + "BFD_RELOC_MIPS_TLS_DTPREL32",
  42166. + "BFD_RELOC_MIPS_TLS_DTPMOD64",
  42167. + "BFD_RELOC_MIPS_TLS_DTPREL64",
  42168. + "BFD_RELOC_MIPS_TLS_GD",
  42169. + "BFD_RELOC_MIPS_TLS_LDM",
  42170. + "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
  42171. + "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
  42172. + "BFD_RELOC_MIPS_TLS_GOTTPREL",
  42173. + "BFD_RELOC_MIPS_TLS_TPREL32",
  42174. + "BFD_RELOC_MIPS_TLS_TPREL64",
  42175. + "BFD_RELOC_MIPS_TLS_TPREL_HI16",
  42176. + "BFD_RELOC_MIPS_TLS_TPREL_LO16",
  42177. +
  42178. + "BFD_RELOC_MIPS_COPY",
  42179. + "BFD_RELOC_MIPS_JUMP_SLOT",
  42180. +
  42181. + "BFD_RELOC_FRV_LABEL16",
  42182. + "BFD_RELOC_FRV_LABEL24",
  42183. + "BFD_RELOC_FRV_LO16",
  42184. + "BFD_RELOC_FRV_HI16",
  42185. + "BFD_RELOC_FRV_GPREL12",
  42186. + "BFD_RELOC_FRV_GPRELU12",
  42187. + "BFD_RELOC_FRV_GPREL32",
  42188. + "BFD_RELOC_FRV_GPRELHI",
  42189. + "BFD_RELOC_FRV_GPRELLO",
  42190. + "BFD_RELOC_FRV_GOT12",
  42191. + "BFD_RELOC_FRV_GOTHI",
  42192. + "BFD_RELOC_FRV_GOTLO",
  42193. + "BFD_RELOC_FRV_FUNCDESC",
  42194. + "BFD_RELOC_FRV_FUNCDESC_GOT12",
  42195. + "BFD_RELOC_FRV_FUNCDESC_GOTHI",
  42196. + "BFD_RELOC_FRV_FUNCDESC_GOTLO",
  42197. + "BFD_RELOC_FRV_FUNCDESC_VALUE",
  42198. + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
  42199. + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
  42200. + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
  42201. + "BFD_RELOC_FRV_GOTOFF12",
  42202. + "BFD_RELOC_FRV_GOTOFFHI",
  42203. + "BFD_RELOC_FRV_GOTOFFLO",
  42204. + "BFD_RELOC_FRV_GETTLSOFF",
  42205. + "BFD_RELOC_FRV_TLSDESC_VALUE",
  42206. + "BFD_RELOC_FRV_GOTTLSDESC12",
  42207. + "BFD_RELOC_FRV_GOTTLSDESCHI",
  42208. + "BFD_RELOC_FRV_GOTTLSDESCLO",
  42209. + "BFD_RELOC_FRV_TLSMOFF12",
  42210. + "BFD_RELOC_FRV_TLSMOFFHI",
  42211. + "BFD_RELOC_FRV_TLSMOFFLO",
  42212. + "BFD_RELOC_FRV_GOTTLSOFF12",
  42213. + "BFD_RELOC_FRV_GOTTLSOFFHI",
  42214. + "BFD_RELOC_FRV_GOTTLSOFFLO",
  42215. + "BFD_RELOC_FRV_TLSOFF",
  42216. + "BFD_RELOC_FRV_TLSDESC_RELAX",
  42217. + "BFD_RELOC_FRV_GETTLSOFF_RELAX",
  42218. + "BFD_RELOC_FRV_TLSOFF_RELAX",
  42219. + "BFD_RELOC_FRV_TLSMOFF",
  42220. +
  42221. + "BFD_RELOC_MN10300_GOTOFF24",
  42222. + "BFD_RELOC_MN10300_GOT32",
  42223. + "BFD_RELOC_MN10300_GOT24",
  42224. + "BFD_RELOC_MN10300_GOT16",
  42225. + "BFD_RELOC_MN10300_COPY",
  42226. + "BFD_RELOC_MN10300_GLOB_DAT",
  42227. + "BFD_RELOC_MN10300_JMP_SLOT",
  42228. + "BFD_RELOC_MN10300_RELATIVE",
  42229. +
  42230. + "BFD_RELOC_386_GOT32",
  42231. + "BFD_RELOC_386_PLT32",
  42232. + "BFD_RELOC_386_COPY",
  42233. + "BFD_RELOC_386_GLOB_DAT",
  42234. + "BFD_RELOC_386_JUMP_SLOT",
  42235. + "BFD_RELOC_386_RELATIVE",
  42236. + "BFD_RELOC_386_GOTOFF",
  42237. + "BFD_RELOC_386_GOTPC",
  42238. + "BFD_RELOC_386_TLS_TPOFF",
  42239. + "BFD_RELOC_386_TLS_IE",
  42240. + "BFD_RELOC_386_TLS_GOTIE",
  42241. + "BFD_RELOC_386_TLS_LE",
  42242. + "BFD_RELOC_386_TLS_GD",
  42243. + "BFD_RELOC_386_TLS_LDM",
  42244. + "BFD_RELOC_386_TLS_LDO_32",
  42245. + "BFD_RELOC_386_TLS_IE_32",
  42246. + "BFD_RELOC_386_TLS_LE_32",
  42247. + "BFD_RELOC_386_TLS_DTPMOD32",
  42248. + "BFD_RELOC_386_TLS_DTPOFF32",
  42249. + "BFD_RELOC_386_TLS_TPOFF32",
  42250. + "BFD_RELOC_386_TLS_GOTDESC",
  42251. + "BFD_RELOC_386_TLS_DESC_CALL",
  42252. + "BFD_RELOC_386_TLS_DESC",
  42253. + "BFD_RELOC_X86_64_GOT32",
  42254. + "BFD_RELOC_X86_64_PLT32",
  42255. + "BFD_RELOC_X86_64_COPY",
  42256. + "BFD_RELOC_X86_64_GLOB_DAT",
  42257. + "BFD_RELOC_X86_64_JUMP_SLOT",
  42258. + "BFD_RELOC_X86_64_RELATIVE",
  42259. + "BFD_RELOC_X86_64_GOTPCREL",
  42260. + "BFD_RELOC_X86_64_32S",
  42261. + "BFD_RELOC_X86_64_DTPMOD64",
  42262. + "BFD_RELOC_X86_64_DTPOFF64",
  42263. + "BFD_RELOC_X86_64_TPOFF64",
  42264. + "BFD_RELOC_X86_64_TLSGD",
  42265. + "BFD_RELOC_X86_64_TLSLD",
  42266. + "BFD_RELOC_X86_64_DTPOFF32",
  42267. + "BFD_RELOC_X86_64_GOTTPOFF",
  42268. + "BFD_RELOC_X86_64_TPOFF32",
  42269. + "BFD_RELOC_X86_64_GOTOFF64",
  42270. + "BFD_RELOC_X86_64_GOTPC32",
  42271. + "BFD_RELOC_X86_64_GOT64",
  42272. + "BFD_RELOC_X86_64_GOTPCREL64",
  42273. + "BFD_RELOC_X86_64_GOTPC64",
  42274. + "BFD_RELOC_X86_64_GOTPLT64",
  42275. + "BFD_RELOC_X86_64_PLTOFF64",
  42276. + "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
  42277. + "BFD_RELOC_X86_64_TLSDESC_CALL",
  42278. + "BFD_RELOC_X86_64_TLSDESC",
  42279. + "BFD_RELOC_NS32K_IMM_8",
  42280. + "BFD_RELOC_NS32K_IMM_16",
  42281. + "BFD_RELOC_NS32K_IMM_32",
  42282. + "BFD_RELOC_NS32K_IMM_8_PCREL",
  42283. + "BFD_RELOC_NS32K_IMM_16_PCREL",
  42284. + "BFD_RELOC_NS32K_IMM_32_PCREL",
  42285. + "BFD_RELOC_NS32K_DISP_8",
  42286. + "BFD_RELOC_NS32K_DISP_16",
  42287. + "BFD_RELOC_NS32K_DISP_32",
  42288. + "BFD_RELOC_NS32K_DISP_8_PCREL",
  42289. + "BFD_RELOC_NS32K_DISP_16_PCREL",
  42290. + "BFD_RELOC_NS32K_DISP_32_PCREL",
  42291. + "BFD_RELOC_PDP11_DISP_8_PCREL",
  42292. + "BFD_RELOC_PDP11_DISP_6_PCREL",
  42293. + "BFD_RELOC_PJ_CODE_HI16",
  42294. + "BFD_RELOC_PJ_CODE_LO16",
  42295. + "BFD_RELOC_PJ_CODE_DIR16",
  42296. + "BFD_RELOC_PJ_CODE_DIR32",
  42297. + "BFD_RELOC_PJ_CODE_REL16",
  42298. + "BFD_RELOC_PJ_CODE_REL32",
  42299. + "BFD_RELOC_PPC_B26",
  42300. + "BFD_RELOC_PPC_BA26",
  42301. + "BFD_RELOC_PPC_TOC16",
  42302. + "BFD_RELOC_PPC_B16",
  42303. + "BFD_RELOC_PPC_B16_BRTAKEN",
  42304. + "BFD_RELOC_PPC_B16_BRNTAKEN",
  42305. + "BFD_RELOC_PPC_BA16",
  42306. + "BFD_RELOC_PPC_BA16_BRTAKEN",
  42307. + "BFD_RELOC_PPC_BA16_BRNTAKEN",
  42308. + "BFD_RELOC_PPC_COPY",
  42309. + "BFD_RELOC_PPC_GLOB_DAT",
  42310. + "BFD_RELOC_PPC_JMP_SLOT",
  42311. + "BFD_RELOC_PPC_RELATIVE",
  42312. + "BFD_RELOC_PPC_LOCAL24PC",
  42313. + "BFD_RELOC_PPC_EMB_NADDR32",
  42314. + "BFD_RELOC_PPC_EMB_NADDR16",
  42315. + "BFD_RELOC_PPC_EMB_NADDR16_LO",
  42316. + "BFD_RELOC_PPC_EMB_NADDR16_HI",
  42317. + "BFD_RELOC_PPC_EMB_NADDR16_HA",
  42318. + "BFD_RELOC_PPC_EMB_SDAI16",
  42319. + "BFD_RELOC_PPC_EMB_SDA2I16",
  42320. + "BFD_RELOC_PPC_EMB_SDA2REL",
  42321. + "BFD_RELOC_PPC_EMB_SDA21",
  42322. + "BFD_RELOC_PPC_EMB_MRKREF",
  42323. + "BFD_RELOC_PPC_EMB_RELSEC16",
  42324. + "BFD_RELOC_PPC_EMB_RELST_LO",
  42325. + "BFD_RELOC_PPC_EMB_RELST_HI",
  42326. + "BFD_RELOC_PPC_EMB_RELST_HA",
  42327. + "BFD_RELOC_PPC_EMB_BIT_FLD",
  42328. + "BFD_RELOC_PPC_EMB_RELSDA",
  42329. + "BFD_RELOC_PPC64_HIGHER",
  42330. + "BFD_RELOC_PPC64_HIGHER_S",
  42331. + "BFD_RELOC_PPC64_HIGHEST",
  42332. + "BFD_RELOC_PPC64_HIGHEST_S",
  42333. + "BFD_RELOC_PPC64_TOC16_LO",
  42334. + "BFD_RELOC_PPC64_TOC16_HI",
  42335. + "BFD_RELOC_PPC64_TOC16_HA",
  42336. + "BFD_RELOC_PPC64_TOC",
  42337. + "BFD_RELOC_PPC64_PLTGOT16",
  42338. + "BFD_RELOC_PPC64_PLTGOT16_LO",
  42339. + "BFD_RELOC_PPC64_PLTGOT16_HI",
  42340. + "BFD_RELOC_PPC64_PLTGOT16_HA",
  42341. + "BFD_RELOC_PPC64_ADDR16_DS",
  42342. + "BFD_RELOC_PPC64_ADDR16_LO_DS",
  42343. + "BFD_RELOC_PPC64_GOT16_DS",
  42344. + "BFD_RELOC_PPC64_GOT16_LO_DS",
  42345. + "BFD_RELOC_PPC64_PLT16_LO_DS",
  42346. + "BFD_RELOC_PPC64_SECTOFF_DS",
  42347. + "BFD_RELOC_PPC64_SECTOFF_LO_DS",
  42348. + "BFD_RELOC_PPC64_TOC16_DS",
  42349. + "BFD_RELOC_PPC64_TOC16_LO_DS",
  42350. + "BFD_RELOC_PPC64_PLTGOT16_DS",
  42351. + "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
  42352. + "BFD_RELOC_PPC_TLS",
  42353. + "BFD_RELOC_PPC_DTPMOD",
  42354. + "BFD_RELOC_PPC_TPREL16",
  42355. + "BFD_RELOC_PPC_TPREL16_LO",
  42356. + "BFD_RELOC_PPC_TPREL16_HI",
  42357. + "BFD_RELOC_PPC_TPREL16_HA",
  42358. + "BFD_RELOC_PPC_TPREL",
  42359. + "BFD_RELOC_PPC_DTPREL16",
  42360. + "BFD_RELOC_PPC_DTPREL16_LO",
  42361. + "BFD_RELOC_PPC_DTPREL16_HI",
  42362. + "BFD_RELOC_PPC_DTPREL16_HA",
  42363. + "BFD_RELOC_PPC_DTPREL",
  42364. + "BFD_RELOC_PPC_GOT_TLSGD16",
  42365. + "BFD_RELOC_PPC_GOT_TLSGD16_LO",
  42366. + "BFD_RELOC_PPC_GOT_TLSGD16_HI",
  42367. + "BFD_RELOC_PPC_GOT_TLSGD16_HA",
  42368. + "BFD_RELOC_PPC_GOT_TLSLD16",
  42369. + "BFD_RELOC_PPC_GOT_TLSLD16_LO",
  42370. + "BFD_RELOC_PPC_GOT_TLSLD16_HI",
  42371. + "BFD_RELOC_PPC_GOT_TLSLD16_HA",
  42372. + "BFD_RELOC_PPC_GOT_TPREL16",
  42373. + "BFD_RELOC_PPC_GOT_TPREL16_LO",
  42374. + "BFD_RELOC_PPC_GOT_TPREL16_HI",
  42375. + "BFD_RELOC_PPC_GOT_TPREL16_HA",
  42376. + "BFD_RELOC_PPC_GOT_DTPREL16",
  42377. + "BFD_RELOC_PPC_GOT_DTPREL16_LO",
  42378. + "BFD_RELOC_PPC_GOT_DTPREL16_HI",
  42379. + "BFD_RELOC_PPC_GOT_DTPREL16_HA",
  42380. + "BFD_RELOC_PPC64_TPREL16_DS",
  42381. + "BFD_RELOC_PPC64_TPREL16_LO_DS",
  42382. + "BFD_RELOC_PPC64_TPREL16_HIGHER",
  42383. + "BFD_RELOC_PPC64_TPREL16_HIGHERA",
  42384. + "BFD_RELOC_PPC64_TPREL16_HIGHEST",
  42385. + "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
  42386. + "BFD_RELOC_PPC64_DTPREL16_DS",
  42387. + "BFD_RELOC_PPC64_DTPREL16_LO_DS",
  42388. + "BFD_RELOC_PPC64_DTPREL16_HIGHER",
  42389. + "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
  42390. + "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
  42391. + "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
  42392. + "BFD_RELOC_I370_D12",
  42393. + "BFD_RELOC_CTOR",
  42394. + "BFD_RELOC_ARM_PCREL_BRANCH",
  42395. + "BFD_RELOC_ARM_PCREL_BLX",
  42396. + "BFD_RELOC_THUMB_PCREL_BLX",
  42397. + "BFD_RELOC_ARM_PCREL_CALL",
  42398. + "BFD_RELOC_ARM_PCREL_JUMP",
  42399. + "BFD_RELOC_THUMB_PCREL_BRANCH7",
  42400. + "BFD_RELOC_THUMB_PCREL_BRANCH9",
  42401. + "BFD_RELOC_THUMB_PCREL_BRANCH12",
  42402. + "BFD_RELOC_THUMB_PCREL_BRANCH20",
  42403. + "BFD_RELOC_THUMB_PCREL_BRANCH23",
  42404. + "BFD_RELOC_THUMB_PCREL_BRANCH25",
  42405. + "BFD_RELOC_ARM_OFFSET_IMM",
  42406. + "BFD_RELOC_ARM_THUMB_OFFSET",
  42407. + "BFD_RELOC_ARM_TARGET1",
  42408. + "BFD_RELOC_ARM_ROSEGREL32",
  42409. + "BFD_RELOC_ARM_SBREL32",
  42410. + "BFD_RELOC_ARM_TARGET2",
  42411. + "BFD_RELOC_ARM_PREL31",
  42412. + "BFD_RELOC_ARM_MOVW",
  42413. + "BFD_RELOC_ARM_MOVT",
  42414. + "BFD_RELOC_ARM_MOVW_PCREL",
  42415. + "BFD_RELOC_ARM_MOVT_PCREL",
  42416. + "BFD_RELOC_ARM_THUMB_MOVW",
  42417. + "BFD_RELOC_ARM_THUMB_MOVT",
  42418. + "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
  42419. + "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
  42420. + "BFD_RELOC_ARM_JUMP_SLOT",
  42421. + "BFD_RELOC_ARM_GLOB_DAT",
  42422. + "BFD_RELOC_ARM_GOT32",
  42423. + "BFD_RELOC_ARM_PLT32",
  42424. + "BFD_RELOC_ARM_RELATIVE",
  42425. + "BFD_RELOC_ARM_GOTOFF",
  42426. + "BFD_RELOC_ARM_GOTPC",
  42427. + "BFD_RELOC_ARM_TLS_GD32",
  42428. + "BFD_RELOC_ARM_TLS_LDO32",
  42429. + "BFD_RELOC_ARM_TLS_LDM32",
  42430. + "BFD_RELOC_ARM_TLS_DTPOFF32",
  42431. + "BFD_RELOC_ARM_TLS_DTPMOD32",
  42432. + "BFD_RELOC_ARM_TLS_TPOFF32",
  42433. + "BFD_RELOC_ARM_TLS_IE32",
  42434. + "BFD_RELOC_ARM_TLS_LE32",
  42435. + "BFD_RELOC_ARM_ALU_PC_G0_NC",
  42436. + "BFD_RELOC_ARM_ALU_PC_G0",
  42437. + "BFD_RELOC_ARM_ALU_PC_G1_NC",
  42438. + "BFD_RELOC_ARM_ALU_PC_G1",
  42439. + "BFD_RELOC_ARM_ALU_PC_G2",
  42440. + "BFD_RELOC_ARM_LDR_PC_G0",
  42441. + "BFD_RELOC_ARM_LDR_PC_G1",
  42442. + "BFD_RELOC_ARM_LDR_PC_G2",
  42443. + "BFD_RELOC_ARM_LDRS_PC_G0",
  42444. + "BFD_RELOC_ARM_LDRS_PC_G1",
  42445. + "BFD_RELOC_ARM_LDRS_PC_G2",
  42446. + "BFD_RELOC_ARM_LDC_PC_G0",
  42447. + "BFD_RELOC_ARM_LDC_PC_G1",
  42448. + "BFD_RELOC_ARM_LDC_PC_G2",
  42449. + "BFD_RELOC_ARM_ALU_SB_G0_NC",
  42450. + "BFD_RELOC_ARM_ALU_SB_G0",
  42451. + "BFD_RELOC_ARM_ALU_SB_G1_NC",
  42452. + "BFD_RELOC_ARM_ALU_SB_G1",
  42453. + "BFD_RELOC_ARM_ALU_SB_G2",
  42454. + "BFD_RELOC_ARM_LDR_SB_G0",
  42455. + "BFD_RELOC_ARM_LDR_SB_G1",
  42456. + "BFD_RELOC_ARM_LDR_SB_G2",
  42457. + "BFD_RELOC_ARM_LDRS_SB_G0",
  42458. + "BFD_RELOC_ARM_LDRS_SB_G1",
  42459. + "BFD_RELOC_ARM_LDRS_SB_G2",
  42460. + "BFD_RELOC_ARM_LDC_SB_G0",
  42461. + "BFD_RELOC_ARM_LDC_SB_G1",
  42462. + "BFD_RELOC_ARM_LDC_SB_G2",
  42463. + "BFD_RELOC_ARM_IMMEDIATE",
  42464. + "BFD_RELOC_ARM_ADRL_IMMEDIATE",
  42465. + "BFD_RELOC_ARM_T32_IMMEDIATE",
  42466. + "BFD_RELOC_ARM_T32_ADD_IMM",
  42467. + "BFD_RELOC_ARM_T32_IMM12",
  42468. + "BFD_RELOC_ARM_T32_ADD_PC12",
  42469. + "BFD_RELOC_ARM_SHIFT_IMM",
  42470. + "BFD_RELOC_ARM_SMC",
  42471. + "BFD_RELOC_ARM_SWI",
  42472. + "BFD_RELOC_ARM_MULTI",
  42473. + "BFD_RELOC_ARM_CP_OFF_IMM",
  42474. + "BFD_RELOC_ARM_CP_OFF_IMM_S2",
  42475. + "BFD_RELOC_ARM_T32_CP_OFF_IMM",
  42476. + "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
  42477. + "BFD_RELOC_ARM_ADR_IMM",
  42478. + "BFD_RELOC_ARM_LDR_IMM",
  42479. + "BFD_RELOC_ARM_LITERAL",
  42480. + "BFD_RELOC_ARM_IN_POOL",
  42481. + "BFD_RELOC_ARM_OFFSET_IMM8",
  42482. + "BFD_RELOC_ARM_T32_OFFSET_U8",
  42483. + "BFD_RELOC_ARM_T32_OFFSET_IMM",
  42484. + "BFD_RELOC_ARM_HWLITERAL",
  42485. + "BFD_RELOC_ARM_THUMB_ADD",
  42486. + "BFD_RELOC_ARM_THUMB_IMM",
  42487. + "BFD_RELOC_ARM_THUMB_SHIFT",
  42488. + "BFD_RELOC_SH_PCDISP8BY2",
  42489. + "BFD_RELOC_SH_PCDISP12BY2",
  42490. + "BFD_RELOC_SH_IMM3",
  42491. + "BFD_RELOC_SH_IMM3U",
  42492. + "BFD_RELOC_SH_DISP12",
  42493. + "BFD_RELOC_SH_DISP12BY2",
  42494. + "BFD_RELOC_SH_DISP12BY4",
  42495. + "BFD_RELOC_SH_DISP12BY8",
  42496. + "BFD_RELOC_SH_DISP20",
  42497. + "BFD_RELOC_SH_DISP20BY8",
  42498. + "BFD_RELOC_SH_IMM4",
  42499. + "BFD_RELOC_SH_IMM4BY2",
  42500. + "BFD_RELOC_SH_IMM4BY4",
  42501. + "BFD_RELOC_SH_IMM8",
  42502. + "BFD_RELOC_SH_IMM8BY2",
  42503. + "BFD_RELOC_SH_IMM8BY4",
  42504. + "BFD_RELOC_SH_PCRELIMM8BY2",
  42505. + "BFD_RELOC_SH_PCRELIMM8BY4",
  42506. + "BFD_RELOC_SH_SWITCH16",
  42507. + "BFD_RELOC_SH_SWITCH32",
  42508. + "BFD_RELOC_SH_USES",
  42509. + "BFD_RELOC_SH_COUNT",
  42510. + "BFD_RELOC_SH_ALIGN",
  42511. + "BFD_RELOC_SH_CODE",
  42512. + "BFD_RELOC_SH_DATA",
  42513. + "BFD_RELOC_SH_LABEL",
  42514. + "BFD_RELOC_SH_LOOP_START",
  42515. + "BFD_RELOC_SH_LOOP_END",
  42516. + "BFD_RELOC_SH_COPY",
  42517. + "BFD_RELOC_SH_GLOB_DAT",
  42518. + "BFD_RELOC_SH_JMP_SLOT",
  42519. + "BFD_RELOC_SH_RELATIVE",
  42520. + "BFD_RELOC_SH_GOTPC",
  42521. + "BFD_RELOC_SH_GOT_LOW16",
  42522. + "BFD_RELOC_SH_GOT_MEDLOW16",
  42523. + "BFD_RELOC_SH_GOT_MEDHI16",
  42524. + "BFD_RELOC_SH_GOT_HI16",
  42525. + "BFD_RELOC_SH_GOTPLT_LOW16",
  42526. + "BFD_RELOC_SH_GOTPLT_MEDLOW16",
  42527. + "BFD_RELOC_SH_GOTPLT_MEDHI16",
  42528. + "BFD_RELOC_SH_GOTPLT_HI16",
  42529. + "BFD_RELOC_SH_PLT_LOW16",
  42530. + "BFD_RELOC_SH_PLT_MEDLOW16",
  42531. + "BFD_RELOC_SH_PLT_MEDHI16",
  42532. + "BFD_RELOC_SH_PLT_HI16",
  42533. + "BFD_RELOC_SH_GOTOFF_LOW16",
  42534. + "BFD_RELOC_SH_GOTOFF_MEDLOW16",
  42535. + "BFD_RELOC_SH_GOTOFF_MEDHI16",
  42536. + "BFD_RELOC_SH_GOTOFF_HI16",
  42537. + "BFD_RELOC_SH_GOTPC_LOW16",
  42538. + "BFD_RELOC_SH_GOTPC_MEDLOW16",
  42539. + "BFD_RELOC_SH_GOTPC_MEDHI16",
  42540. + "BFD_RELOC_SH_GOTPC_HI16",
  42541. + "BFD_RELOC_SH_COPY64",
  42542. + "BFD_RELOC_SH_GLOB_DAT64",
  42543. + "BFD_RELOC_SH_JMP_SLOT64",
  42544. + "BFD_RELOC_SH_RELATIVE64",
  42545. + "BFD_RELOC_SH_GOT10BY4",
  42546. + "BFD_RELOC_SH_GOT10BY8",
  42547. + "BFD_RELOC_SH_GOTPLT10BY4",
  42548. + "BFD_RELOC_SH_GOTPLT10BY8",
  42549. + "BFD_RELOC_SH_GOTPLT32",
  42550. + "BFD_RELOC_SH_SHMEDIA_CODE",
  42551. + "BFD_RELOC_SH_IMMU5",
  42552. + "BFD_RELOC_SH_IMMS6",
  42553. + "BFD_RELOC_SH_IMMS6BY32",
  42554. + "BFD_RELOC_SH_IMMU6",
  42555. + "BFD_RELOC_SH_IMMS10",
  42556. + "BFD_RELOC_SH_IMMS10BY2",
  42557. + "BFD_RELOC_SH_IMMS10BY4",
  42558. + "BFD_RELOC_SH_IMMS10BY8",
  42559. + "BFD_RELOC_SH_IMMS16",
  42560. + "BFD_RELOC_SH_IMMU16",
  42561. + "BFD_RELOC_SH_IMM_LOW16",
  42562. + "BFD_RELOC_SH_IMM_LOW16_PCREL",
  42563. + "BFD_RELOC_SH_IMM_MEDLOW16",
  42564. + "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
  42565. + "BFD_RELOC_SH_IMM_MEDHI16",
  42566. + "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
  42567. + "BFD_RELOC_SH_IMM_HI16",
  42568. + "BFD_RELOC_SH_IMM_HI16_PCREL",
  42569. + "BFD_RELOC_SH_PT_16",
  42570. + "BFD_RELOC_SH_TLS_GD_32",
  42571. + "BFD_RELOC_SH_TLS_LD_32",
  42572. + "BFD_RELOC_SH_TLS_LDO_32",
  42573. + "BFD_RELOC_SH_TLS_IE_32",
  42574. + "BFD_RELOC_SH_TLS_LE_32",
  42575. + "BFD_RELOC_SH_TLS_DTPMOD32",
  42576. + "BFD_RELOC_SH_TLS_DTPOFF32",
  42577. + "BFD_RELOC_SH_TLS_TPOFF32",
  42578. + "BFD_RELOC_ARC_B22_PCREL",
  42579. + "BFD_RELOC_ARC_B26",
  42580. + "BFD_RELOC_BFIN_16_IMM",
  42581. + "BFD_RELOC_BFIN_16_HIGH",
  42582. + "BFD_RELOC_BFIN_4_PCREL",
  42583. + "BFD_RELOC_BFIN_5_PCREL",
  42584. + "BFD_RELOC_BFIN_16_LOW",
  42585. + "BFD_RELOC_BFIN_10_PCREL",
  42586. + "BFD_RELOC_BFIN_11_PCREL",
  42587. + "BFD_RELOC_BFIN_12_PCREL_JUMP",
  42588. + "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
  42589. + "BFD_RELOC_BFIN_24_PCREL_CALL_X",
  42590. + "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
  42591. + "BFD_RELOC_BFIN_GOT17M4",
  42592. + "BFD_RELOC_BFIN_GOTHI",
  42593. + "BFD_RELOC_BFIN_GOTLO",
  42594. + "BFD_RELOC_BFIN_FUNCDESC",
  42595. + "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
  42596. + "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
  42597. + "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
  42598. + "BFD_RELOC_BFIN_FUNCDESC_VALUE",
  42599. + "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
  42600. + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
  42601. + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
  42602. + "BFD_RELOC_BFIN_GOTOFF17M4",
  42603. + "BFD_RELOC_BFIN_GOTOFFHI",
  42604. + "BFD_RELOC_BFIN_GOTOFFLO",
  42605. + "BFD_RELOC_BFIN_GOT",
  42606. + "BFD_RELOC_BFIN_PLTPC",
  42607. + "BFD_ARELOC_BFIN_PUSH",
  42608. + "BFD_ARELOC_BFIN_CONST",
  42609. + "BFD_ARELOC_BFIN_ADD",
  42610. + "BFD_ARELOC_BFIN_SUB",
  42611. + "BFD_ARELOC_BFIN_MULT",
  42612. + "BFD_ARELOC_BFIN_DIV",
  42613. + "BFD_ARELOC_BFIN_MOD",
  42614. + "BFD_ARELOC_BFIN_LSHIFT",
  42615. + "BFD_ARELOC_BFIN_RSHIFT",
  42616. + "BFD_ARELOC_BFIN_AND",
  42617. + "BFD_ARELOC_BFIN_OR",
  42618. + "BFD_ARELOC_BFIN_XOR",
  42619. + "BFD_ARELOC_BFIN_LAND",
  42620. + "BFD_ARELOC_BFIN_LOR",
  42621. + "BFD_ARELOC_BFIN_LEN",
  42622. + "BFD_ARELOC_BFIN_NEG",
  42623. + "BFD_ARELOC_BFIN_COMP",
  42624. + "BFD_ARELOC_BFIN_PAGE",
  42625. + "BFD_ARELOC_BFIN_HWPAGE",
  42626. + "BFD_ARELOC_BFIN_ADDR",
  42627. + "BFD_RELOC_D10V_10_PCREL_R",
  42628. + "BFD_RELOC_D10V_10_PCREL_L",
  42629. + "BFD_RELOC_D10V_18",
  42630. + "BFD_RELOC_D10V_18_PCREL",
  42631. + "BFD_RELOC_D30V_6",
  42632. + "BFD_RELOC_D30V_9_PCREL",
  42633. + "BFD_RELOC_D30V_9_PCREL_R",
  42634. + "BFD_RELOC_D30V_15",
  42635. + "BFD_RELOC_D30V_15_PCREL",
  42636. + "BFD_RELOC_D30V_15_PCREL_R",
  42637. + "BFD_RELOC_D30V_21",
  42638. + "BFD_RELOC_D30V_21_PCREL",
  42639. + "BFD_RELOC_D30V_21_PCREL_R",
  42640. + "BFD_RELOC_D30V_32",
  42641. + "BFD_RELOC_D30V_32_PCREL",
  42642. + "BFD_RELOC_DLX_HI16_S",
  42643. + "BFD_RELOC_DLX_LO16",
  42644. + "BFD_RELOC_DLX_JMP26",
  42645. + "BFD_RELOC_M32C_HI8",
  42646. + "BFD_RELOC_M32C_RL_JUMP",
  42647. + "BFD_RELOC_M32C_RL_1ADDR",
  42648. + "BFD_RELOC_M32C_RL_2ADDR",
  42649. + "BFD_RELOC_M32R_24",
  42650. + "BFD_RELOC_M32R_10_PCREL",
  42651. + "BFD_RELOC_M32R_18_PCREL",
  42652. + "BFD_RELOC_M32R_26_PCREL",
  42653. + "BFD_RELOC_M32R_HI16_ULO",
  42654. + "BFD_RELOC_M32R_HI16_SLO",
  42655. + "BFD_RELOC_M32R_LO16",
  42656. + "BFD_RELOC_M32R_SDA16",
  42657. + "BFD_RELOC_M32R_GOT24",
  42658. + "BFD_RELOC_M32R_26_PLTREL",
  42659. + "BFD_RELOC_M32R_COPY",
  42660. + "BFD_RELOC_M32R_GLOB_DAT",
  42661. + "BFD_RELOC_M32R_JMP_SLOT",
  42662. + "BFD_RELOC_M32R_RELATIVE",
  42663. + "BFD_RELOC_M32R_GOTOFF",
  42664. + "BFD_RELOC_M32R_GOTOFF_HI_ULO",
  42665. + "BFD_RELOC_M32R_GOTOFF_HI_SLO",
  42666. + "BFD_RELOC_M32R_GOTOFF_LO",
  42667. + "BFD_RELOC_M32R_GOTPC24",
  42668. + "BFD_RELOC_M32R_GOT16_HI_ULO",
  42669. + "BFD_RELOC_M32R_GOT16_HI_SLO",
  42670. + "BFD_RELOC_M32R_GOT16_LO",
  42671. + "BFD_RELOC_M32R_GOTPC_HI_ULO",
  42672. + "BFD_RELOC_M32R_GOTPC_HI_SLO",
  42673. + "BFD_RELOC_M32R_GOTPC_LO",
  42674. + "BFD_RELOC_V850_9_PCREL",
  42675. + "BFD_RELOC_V850_22_PCREL",
  42676. + "BFD_RELOC_V850_SDA_16_16_OFFSET",
  42677. + "BFD_RELOC_V850_SDA_15_16_OFFSET",
  42678. + "BFD_RELOC_V850_ZDA_16_16_OFFSET",
  42679. + "BFD_RELOC_V850_ZDA_15_16_OFFSET",
  42680. + "BFD_RELOC_V850_TDA_6_8_OFFSET",
  42681. + "BFD_RELOC_V850_TDA_7_8_OFFSET",
  42682. + "BFD_RELOC_V850_TDA_7_7_OFFSET",
  42683. + "BFD_RELOC_V850_TDA_16_16_OFFSET",
  42684. + "BFD_RELOC_V850_TDA_4_5_OFFSET",
  42685. + "BFD_RELOC_V850_TDA_4_4_OFFSET",
  42686. + "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
  42687. + "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
  42688. + "BFD_RELOC_V850_CALLT_6_7_OFFSET",
  42689. + "BFD_RELOC_V850_CALLT_16_16_OFFSET",
  42690. + "BFD_RELOC_V850_LONGCALL",
  42691. + "BFD_RELOC_V850_LONGJUMP",
  42692. + "BFD_RELOC_V850_ALIGN",
  42693. + "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
  42694. + "BFD_RELOC_MN10300_32_PCREL",
  42695. + "BFD_RELOC_MN10300_16_PCREL",
  42696. + "BFD_RELOC_TIC30_LDP",
  42697. + "BFD_RELOC_TIC54X_PARTLS7",
  42698. + "BFD_RELOC_TIC54X_PARTMS9",
  42699. + "BFD_RELOC_TIC54X_23",
  42700. + "BFD_RELOC_TIC54X_16_OF_23",
  42701. + "BFD_RELOC_TIC54X_MS7_OF_23",
  42702. + "BFD_RELOC_FR30_48",
  42703. + "BFD_RELOC_FR30_20",
  42704. + "BFD_RELOC_FR30_6_IN_4",
  42705. + "BFD_RELOC_FR30_8_IN_8",
  42706. + "BFD_RELOC_FR30_9_IN_8",
  42707. + "BFD_RELOC_FR30_10_IN_8",
  42708. + "BFD_RELOC_FR30_9_PCREL",
  42709. + "BFD_RELOC_FR30_12_PCREL",
  42710. + "BFD_RELOC_MCORE_PCREL_IMM8BY4",
  42711. + "BFD_RELOC_MCORE_PCREL_IMM11BY2",
  42712. + "BFD_RELOC_MCORE_PCREL_IMM4BY2",
  42713. + "BFD_RELOC_MCORE_PCREL_32",
  42714. + "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
  42715. + "BFD_RELOC_MCORE_RVA",
  42716. + "BFD_RELOC_MEP_8",
  42717. + "BFD_RELOC_MEP_16",
  42718. + "BFD_RELOC_MEP_32",
  42719. + "BFD_RELOC_MEP_PCREL8A2",
  42720. + "BFD_RELOC_MEP_PCREL12A2",
  42721. + "BFD_RELOC_MEP_PCREL17A2",
  42722. + "BFD_RELOC_MEP_PCREL24A2",
  42723. + "BFD_RELOC_MEP_PCABS24A2",
  42724. + "BFD_RELOC_MEP_LOW16",
  42725. + "BFD_RELOC_MEP_HI16U",
  42726. + "BFD_RELOC_MEP_HI16S",
  42727. + "BFD_RELOC_MEP_GPREL",
  42728. + "BFD_RELOC_MEP_TPREL",
  42729. + "BFD_RELOC_MEP_TPREL7",
  42730. + "BFD_RELOC_MEP_TPREL7A2",
  42731. + "BFD_RELOC_MEP_TPREL7A4",
  42732. + "BFD_RELOC_MEP_UIMM24",
  42733. + "BFD_RELOC_MEP_ADDR24A4",
  42734. + "BFD_RELOC_MEP_GNU_VTINHERIT",
  42735. + "BFD_RELOC_MEP_GNU_VTENTRY",
  42736. +
  42737. + "BFD_RELOC_MMIX_GETA",
  42738. + "BFD_RELOC_MMIX_GETA_1",
  42739. + "BFD_RELOC_MMIX_GETA_2",
  42740. + "BFD_RELOC_MMIX_GETA_3",
  42741. + "BFD_RELOC_MMIX_CBRANCH",
  42742. + "BFD_RELOC_MMIX_CBRANCH_J",
  42743. + "BFD_RELOC_MMIX_CBRANCH_1",
  42744. + "BFD_RELOC_MMIX_CBRANCH_2",
  42745. + "BFD_RELOC_MMIX_CBRANCH_3",
  42746. + "BFD_RELOC_MMIX_PUSHJ",
  42747. + "BFD_RELOC_MMIX_PUSHJ_1",
  42748. + "BFD_RELOC_MMIX_PUSHJ_2",
  42749. + "BFD_RELOC_MMIX_PUSHJ_3",
  42750. + "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
  42751. + "BFD_RELOC_MMIX_JMP",
  42752. + "BFD_RELOC_MMIX_JMP_1",
  42753. + "BFD_RELOC_MMIX_JMP_2",
  42754. + "BFD_RELOC_MMIX_JMP_3",
  42755. + "BFD_RELOC_MMIX_ADDR19",
  42756. + "BFD_RELOC_MMIX_ADDR27",
  42757. + "BFD_RELOC_MMIX_REG_OR_BYTE",
  42758. + "BFD_RELOC_MMIX_REG",
  42759. + "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
  42760. + "BFD_RELOC_MMIX_LOCAL",
  42761. + "BFD_RELOC_AVR_7_PCREL",
  42762. + "BFD_RELOC_AVR_13_PCREL",
  42763. + "BFD_RELOC_AVR_16_PM",
  42764. + "BFD_RELOC_AVR_LO8_LDI",
  42765. + "BFD_RELOC_AVR_HI8_LDI",
  42766. + "BFD_RELOC_AVR_HH8_LDI",
  42767. + "BFD_RELOC_AVR_MS8_LDI",
  42768. + "BFD_RELOC_AVR_LO8_LDI_NEG",
  42769. + "BFD_RELOC_AVR_HI8_LDI_NEG",
  42770. + "BFD_RELOC_AVR_HH8_LDI_NEG",
  42771. + "BFD_RELOC_AVR_MS8_LDI_NEG",
  42772. + "BFD_RELOC_AVR_LO8_LDI_PM",
  42773. + "BFD_RELOC_AVR_LO8_LDI_GS",
  42774. + "BFD_RELOC_AVR_HI8_LDI_PM",
  42775. + "BFD_RELOC_AVR_HI8_LDI_GS",
  42776. + "BFD_RELOC_AVR_HH8_LDI_PM",
  42777. + "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
  42778. + "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
  42779. + "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
  42780. + "BFD_RELOC_AVR_CALL",
  42781. + "BFD_RELOC_AVR_LDI",
  42782. + "BFD_RELOC_AVR_6",
  42783. + "BFD_RELOC_AVR_6_ADIW",
  42784. + "BFD_RELOC_AVR32_DIFF32",
  42785. + "BFD_RELOC_AVR32_DIFF16",
  42786. + "BFD_RELOC_AVR32_DIFF8",
  42787. + "BFD_RELOC_AVR32_GOT32",
  42788. + "BFD_RELOC_AVR32_GOT16",
  42789. + "BFD_RELOC_AVR32_GOT8",
  42790. + "BFD_RELOC_AVR32_21S",
  42791. + "BFD_RELOC_AVR32_16U",
  42792. + "BFD_RELOC_AVR32_16S",
  42793. + "BFD_RELOC_AVR32_SUB5",
  42794. + "BFD_RELOC_AVR32_8S_EXT",
  42795. + "BFD_RELOC_AVR32_8S",
  42796. + "BFD_RELOC_AVR32_15S",
  42797. + "BFD_RELOC_AVR32_22H_PCREL",
  42798. + "BFD_RELOC_AVR32_18W_PCREL",
  42799. + "BFD_RELOC_AVR32_16B_PCREL",
  42800. + "BFD_RELOC_AVR32_16N_PCREL",
  42801. + "BFD_RELOC_AVR32_14UW_PCREL",
  42802. + "BFD_RELOC_AVR32_11H_PCREL",
  42803. + "BFD_RELOC_AVR32_10UW_PCREL",
  42804. + "BFD_RELOC_AVR32_9H_PCREL",
  42805. + "BFD_RELOC_AVR32_9UW_PCREL",
  42806. + "BFD_RELOC_AVR32_GOTPC",
  42807. + "BFD_RELOC_AVR32_GOTCALL",
  42808. + "BFD_RELOC_AVR32_LDA_GOT",
  42809. + "BFD_RELOC_AVR32_GOT21S",
  42810. + "BFD_RELOC_AVR32_GOT18SW",
  42811. + "BFD_RELOC_AVR32_GOT16S",
  42812. + "BFD_RELOC_AVR32_32_CPENT",
  42813. + "BFD_RELOC_AVR32_CPCALL",
  42814. + "BFD_RELOC_AVR32_16_CP",
  42815. + "BFD_RELOC_AVR32_9W_CP",
  42816. + "BFD_RELOC_AVR32_ALIGN",
  42817. + "BFD_RELOC_AVR32_14UW",
  42818. + "BFD_RELOC_AVR32_10UW",
  42819. + "BFD_RELOC_AVR32_10SW",
  42820. + "BFD_RELOC_AVR32_STHH_W",
  42821. + "BFD_RELOC_AVR32_7UW",
  42822. + "BFD_RELOC_AVR32_6S",
  42823. + "BFD_RELOC_AVR32_6UW",
  42824. + "BFD_RELOC_AVR32_4UH",
  42825. + "BFD_RELOC_AVR32_3U",
  42826. + "BFD_RELOC_390_12",
  42827. + "BFD_RELOC_390_GOT12",
  42828. + "BFD_RELOC_390_PLT32",
  42829. + "BFD_RELOC_390_COPY",
  42830. + "BFD_RELOC_390_GLOB_DAT",
  42831. + "BFD_RELOC_390_JMP_SLOT",
  42832. + "BFD_RELOC_390_RELATIVE",
  42833. + "BFD_RELOC_390_GOTPC",
  42834. + "BFD_RELOC_390_GOT16",
  42835. + "BFD_RELOC_390_PC16DBL",
  42836. + "BFD_RELOC_390_PLT16DBL",
  42837. + "BFD_RELOC_390_PC32DBL",
  42838. + "BFD_RELOC_390_PLT32DBL",
  42839. + "BFD_RELOC_390_GOTPCDBL",
  42840. + "BFD_RELOC_390_GOT64",
  42841. + "BFD_RELOC_390_PLT64",
  42842. + "BFD_RELOC_390_GOTENT",
  42843. + "BFD_RELOC_390_GOTOFF64",
  42844. + "BFD_RELOC_390_GOTPLT12",
  42845. + "BFD_RELOC_390_GOTPLT16",
  42846. + "BFD_RELOC_390_GOTPLT32",
  42847. + "BFD_RELOC_390_GOTPLT64",
  42848. + "BFD_RELOC_390_GOTPLTENT",
  42849. + "BFD_RELOC_390_PLTOFF16",
  42850. + "BFD_RELOC_390_PLTOFF32",
  42851. + "BFD_RELOC_390_PLTOFF64",
  42852. + "BFD_RELOC_390_TLS_LOAD",
  42853. + "BFD_RELOC_390_TLS_GDCALL",
  42854. + "BFD_RELOC_390_TLS_LDCALL",
  42855. + "BFD_RELOC_390_TLS_GD32",
  42856. + "BFD_RELOC_390_TLS_GD64",
  42857. + "BFD_RELOC_390_TLS_GOTIE12",
  42858. + "BFD_RELOC_390_TLS_GOTIE32",
  42859. + "BFD_RELOC_390_TLS_GOTIE64",
  42860. + "BFD_RELOC_390_TLS_LDM32",
  42861. + "BFD_RELOC_390_TLS_LDM64",
  42862. + "BFD_RELOC_390_TLS_IE32",
  42863. + "BFD_RELOC_390_TLS_IE64",
  42864. + "BFD_RELOC_390_TLS_IEENT",
  42865. + "BFD_RELOC_390_TLS_LE32",
  42866. + "BFD_RELOC_390_TLS_LE64",
  42867. + "BFD_RELOC_390_TLS_LDO32",
  42868. + "BFD_RELOC_390_TLS_LDO64",
  42869. + "BFD_RELOC_390_TLS_DTPMOD",
  42870. + "BFD_RELOC_390_TLS_DTPOFF",
  42871. + "BFD_RELOC_390_TLS_TPOFF",
  42872. + "BFD_RELOC_390_20",
  42873. + "BFD_RELOC_390_GOT20",
  42874. + "BFD_RELOC_390_GOTPLT20",
  42875. + "BFD_RELOC_390_TLS_GOTIE20",
  42876. + "BFD_RELOC_SCORE_DUMMY1",
  42877. + "BFD_RELOC_SCORE_GPREL15",
  42878. + "BFD_RELOC_SCORE_DUMMY2",
  42879. + "BFD_RELOC_SCORE_JMP",
  42880. + "BFD_RELOC_SCORE_BRANCH",
  42881. + "BFD_RELOC_SCORE16_JMP",
  42882. + "BFD_RELOC_SCORE16_BRANCH",
  42883. + "BFD_RELOC_SCORE_GOT15",
  42884. + "BFD_RELOC_SCORE_GOT_LO16",
  42885. + "BFD_RELOC_SCORE_CALL15",
  42886. + "BFD_RELOC_SCORE_DUMMY_HI16",
  42887. + "BFD_RELOC_IP2K_FR9",
  42888. + "BFD_RELOC_IP2K_BANK",
  42889. + "BFD_RELOC_IP2K_ADDR16CJP",
  42890. + "BFD_RELOC_IP2K_PAGE3",
  42891. + "BFD_RELOC_IP2K_LO8DATA",
  42892. + "BFD_RELOC_IP2K_HI8DATA",
  42893. + "BFD_RELOC_IP2K_EX8DATA",
  42894. + "BFD_RELOC_IP2K_LO8INSN",
  42895. + "BFD_RELOC_IP2K_HI8INSN",
  42896. + "BFD_RELOC_IP2K_PC_SKIP",
  42897. + "BFD_RELOC_IP2K_TEXT",
  42898. + "BFD_RELOC_IP2K_FR_OFFSET",
  42899. + "BFD_RELOC_VPE4KMATH_DATA",
  42900. + "BFD_RELOC_VPE4KMATH_INSN",
  42901. + "BFD_RELOC_VTABLE_INHERIT",
  42902. + "BFD_RELOC_VTABLE_ENTRY",
  42903. + "BFD_RELOC_IA64_IMM14",
  42904. + "BFD_RELOC_IA64_IMM22",
  42905. + "BFD_RELOC_IA64_IMM64",
  42906. + "BFD_RELOC_IA64_DIR32MSB",
  42907. + "BFD_RELOC_IA64_DIR32LSB",
  42908. + "BFD_RELOC_IA64_DIR64MSB",
  42909. + "BFD_RELOC_IA64_DIR64LSB",
  42910. + "BFD_RELOC_IA64_GPREL22",
  42911. + "BFD_RELOC_IA64_GPREL64I",
  42912. + "BFD_RELOC_IA64_GPREL32MSB",
  42913. + "BFD_RELOC_IA64_GPREL32LSB",
  42914. + "BFD_RELOC_IA64_GPREL64MSB",
  42915. + "BFD_RELOC_IA64_GPREL64LSB",
  42916. + "BFD_RELOC_IA64_LTOFF22",
  42917. + "BFD_RELOC_IA64_LTOFF64I",
  42918. + "BFD_RELOC_IA64_PLTOFF22",
  42919. + "BFD_RELOC_IA64_PLTOFF64I",
  42920. + "BFD_RELOC_IA64_PLTOFF64MSB",
  42921. + "BFD_RELOC_IA64_PLTOFF64LSB",
  42922. + "BFD_RELOC_IA64_FPTR64I",
  42923. + "BFD_RELOC_IA64_FPTR32MSB",
  42924. + "BFD_RELOC_IA64_FPTR32LSB",
  42925. + "BFD_RELOC_IA64_FPTR64MSB",
  42926. + "BFD_RELOC_IA64_FPTR64LSB",
  42927. + "BFD_RELOC_IA64_PCREL21B",
  42928. + "BFD_RELOC_IA64_PCREL21BI",
  42929. + "BFD_RELOC_IA64_PCREL21M",
  42930. + "BFD_RELOC_IA64_PCREL21F",
  42931. + "BFD_RELOC_IA64_PCREL22",
  42932. + "BFD_RELOC_IA64_PCREL60B",
  42933. + "BFD_RELOC_IA64_PCREL64I",
  42934. + "BFD_RELOC_IA64_PCREL32MSB",
  42935. + "BFD_RELOC_IA64_PCREL32LSB",
  42936. + "BFD_RELOC_IA64_PCREL64MSB",
  42937. + "BFD_RELOC_IA64_PCREL64LSB",
  42938. + "BFD_RELOC_IA64_LTOFF_FPTR22",
  42939. + "BFD_RELOC_IA64_LTOFF_FPTR64I",
  42940. + "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
  42941. + "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
  42942. + "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
  42943. + "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
  42944. + "BFD_RELOC_IA64_SEGREL32MSB",
  42945. + "BFD_RELOC_IA64_SEGREL32LSB",
  42946. + "BFD_RELOC_IA64_SEGREL64MSB",
  42947. + "BFD_RELOC_IA64_SEGREL64LSB",
  42948. + "BFD_RELOC_IA64_SECREL32MSB",
  42949. + "BFD_RELOC_IA64_SECREL32LSB",
  42950. + "BFD_RELOC_IA64_SECREL64MSB",
  42951. + "BFD_RELOC_IA64_SECREL64LSB",
  42952. + "BFD_RELOC_IA64_REL32MSB",
  42953. + "BFD_RELOC_IA64_REL32LSB",
  42954. + "BFD_RELOC_IA64_REL64MSB",
  42955. + "BFD_RELOC_IA64_REL64LSB",
  42956. + "BFD_RELOC_IA64_LTV32MSB",
  42957. + "BFD_RELOC_IA64_LTV32LSB",
  42958. + "BFD_RELOC_IA64_LTV64MSB",
  42959. + "BFD_RELOC_IA64_LTV64LSB",
  42960. + "BFD_RELOC_IA64_IPLTMSB",
  42961. + "BFD_RELOC_IA64_IPLTLSB",
  42962. + "BFD_RELOC_IA64_COPY",
  42963. + "BFD_RELOC_IA64_LTOFF22X",
  42964. + "BFD_RELOC_IA64_LDXMOV",
  42965. + "BFD_RELOC_IA64_TPREL14",
  42966. + "BFD_RELOC_IA64_TPREL22",
  42967. + "BFD_RELOC_IA64_TPREL64I",
  42968. + "BFD_RELOC_IA64_TPREL64MSB",
  42969. + "BFD_RELOC_IA64_TPREL64LSB",
  42970. + "BFD_RELOC_IA64_LTOFF_TPREL22",
  42971. + "BFD_RELOC_IA64_DTPMOD64MSB",
  42972. + "BFD_RELOC_IA64_DTPMOD64LSB",
  42973. + "BFD_RELOC_IA64_LTOFF_DTPMOD22",
  42974. + "BFD_RELOC_IA64_DTPREL14",
  42975. + "BFD_RELOC_IA64_DTPREL22",
  42976. + "BFD_RELOC_IA64_DTPREL64I",
  42977. + "BFD_RELOC_IA64_DTPREL32MSB",
  42978. + "BFD_RELOC_IA64_DTPREL32LSB",
  42979. + "BFD_RELOC_IA64_DTPREL64MSB",
  42980. + "BFD_RELOC_IA64_DTPREL64LSB",
  42981. + "BFD_RELOC_IA64_LTOFF_DTPREL22",
  42982. + "BFD_RELOC_M68HC11_HI8",
  42983. + "BFD_RELOC_M68HC11_LO8",
  42984. + "BFD_RELOC_M68HC11_3B",
  42985. + "BFD_RELOC_M68HC11_RL_JUMP",
  42986. + "BFD_RELOC_M68HC11_RL_GROUP",
  42987. + "BFD_RELOC_M68HC11_LO16",
  42988. + "BFD_RELOC_M68HC11_PAGE",
  42989. + "BFD_RELOC_M68HC11_24",
  42990. + "BFD_RELOC_M68HC12_5B",
  42991. + "BFD_RELOC_16C_NUM08",
  42992. + "BFD_RELOC_16C_NUM08_C",
  42993. + "BFD_RELOC_16C_NUM16",
  42994. + "BFD_RELOC_16C_NUM16_C",
  42995. + "BFD_RELOC_16C_NUM32",
  42996. + "BFD_RELOC_16C_NUM32_C",
  42997. + "BFD_RELOC_16C_DISP04",
  42998. + "BFD_RELOC_16C_DISP04_C",
  42999. + "BFD_RELOC_16C_DISP08",
  43000. + "BFD_RELOC_16C_DISP08_C",
  43001. + "BFD_RELOC_16C_DISP16",
  43002. + "BFD_RELOC_16C_DISP16_C",
  43003. + "BFD_RELOC_16C_DISP24",
  43004. + "BFD_RELOC_16C_DISP24_C",
  43005. + "BFD_RELOC_16C_DISP24a",
  43006. + "BFD_RELOC_16C_DISP24a_C",
  43007. + "BFD_RELOC_16C_REG04",
  43008. + "BFD_RELOC_16C_REG04_C",
  43009. + "BFD_RELOC_16C_REG04a",
  43010. + "BFD_RELOC_16C_REG04a_C",
  43011. + "BFD_RELOC_16C_REG14",
  43012. + "BFD_RELOC_16C_REG14_C",
  43013. + "BFD_RELOC_16C_REG16",
  43014. + "BFD_RELOC_16C_REG16_C",
  43015. + "BFD_RELOC_16C_REG20",
  43016. + "BFD_RELOC_16C_REG20_C",
  43017. + "BFD_RELOC_16C_ABS20",
  43018. + "BFD_RELOC_16C_ABS20_C",
  43019. + "BFD_RELOC_16C_ABS24",
  43020. + "BFD_RELOC_16C_ABS24_C",
  43021. + "BFD_RELOC_16C_IMM04",
  43022. + "BFD_RELOC_16C_IMM04_C",
  43023. + "BFD_RELOC_16C_IMM16",
  43024. + "BFD_RELOC_16C_IMM16_C",
  43025. + "BFD_RELOC_16C_IMM20",
  43026. + "BFD_RELOC_16C_IMM20_C",
  43027. + "BFD_RELOC_16C_IMM24",
  43028. + "BFD_RELOC_16C_IMM24_C",
  43029. + "BFD_RELOC_16C_IMM32",
  43030. + "BFD_RELOC_16C_IMM32_C",
  43031. + "BFD_RELOC_CR16_NUM8",
  43032. + "BFD_RELOC_CR16_NUM16",
  43033. + "BFD_RELOC_CR16_NUM32",
  43034. + "BFD_RELOC_CR16_NUM32a",
  43035. + "BFD_RELOC_CR16_REGREL0",
  43036. + "BFD_RELOC_CR16_REGREL4",
  43037. + "BFD_RELOC_CR16_REGREL4a",
  43038. + "BFD_RELOC_CR16_REGREL14",
  43039. + "BFD_RELOC_CR16_REGREL14a",
  43040. + "BFD_RELOC_CR16_REGREL16",
  43041. + "BFD_RELOC_CR16_REGREL20",
  43042. + "BFD_RELOC_CR16_REGREL20a",
  43043. + "BFD_RELOC_CR16_ABS20",
  43044. + "BFD_RELOC_CR16_ABS24",
  43045. + "BFD_RELOC_CR16_IMM4",
  43046. + "BFD_RELOC_CR16_IMM8",
  43047. + "BFD_RELOC_CR16_IMM16",
  43048. + "BFD_RELOC_CR16_IMM20",
  43049. + "BFD_RELOC_CR16_IMM24",
  43050. + "BFD_RELOC_CR16_IMM32",
  43051. + "BFD_RELOC_CR16_IMM32a",
  43052. + "BFD_RELOC_CR16_DISP4",
  43053. + "BFD_RELOC_CR16_DISP8",
  43054. + "BFD_RELOC_CR16_DISP16",
  43055. + "BFD_RELOC_CR16_DISP20",
  43056. + "BFD_RELOC_CR16_DISP24",
  43057. + "BFD_RELOC_CR16_DISP24a",
  43058. + "BFD_RELOC_CRX_REL4",
  43059. + "BFD_RELOC_CRX_REL8",
  43060. + "BFD_RELOC_CRX_REL8_CMP",
  43061. + "BFD_RELOC_CRX_REL16",
  43062. + "BFD_RELOC_CRX_REL24",
  43063. + "BFD_RELOC_CRX_REL32",
  43064. + "BFD_RELOC_CRX_REGREL12",
  43065. + "BFD_RELOC_CRX_REGREL22",
  43066. + "BFD_RELOC_CRX_REGREL28",
  43067. + "BFD_RELOC_CRX_REGREL32",
  43068. + "BFD_RELOC_CRX_ABS16",
  43069. + "BFD_RELOC_CRX_ABS32",
  43070. + "BFD_RELOC_CRX_NUM8",
  43071. + "BFD_RELOC_CRX_NUM16",
  43072. + "BFD_RELOC_CRX_NUM32",
  43073. + "BFD_RELOC_CRX_IMM16",
  43074. + "BFD_RELOC_CRX_IMM32",
  43075. + "BFD_RELOC_CRX_SWITCH8",
  43076. + "BFD_RELOC_CRX_SWITCH16",
  43077. + "BFD_RELOC_CRX_SWITCH32",
  43078. + "BFD_RELOC_CRIS_BDISP8",
  43079. + "BFD_RELOC_CRIS_UNSIGNED_5",
  43080. + "BFD_RELOC_CRIS_SIGNED_6",
  43081. + "BFD_RELOC_CRIS_UNSIGNED_6",
  43082. + "BFD_RELOC_CRIS_SIGNED_8",
  43083. + "BFD_RELOC_CRIS_UNSIGNED_8",
  43084. + "BFD_RELOC_CRIS_SIGNED_16",
  43085. + "BFD_RELOC_CRIS_UNSIGNED_16",
  43086. + "BFD_RELOC_CRIS_LAPCQ_OFFSET",
  43087. + "BFD_RELOC_CRIS_UNSIGNED_4",
  43088. + "BFD_RELOC_CRIS_COPY",
  43089. + "BFD_RELOC_CRIS_GLOB_DAT",
  43090. + "BFD_RELOC_CRIS_JUMP_SLOT",
  43091. + "BFD_RELOC_CRIS_RELATIVE",
  43092. + "BFD_RELOC_CRIS_32_GOT",
  43093. + "BFD_RELOC_CRIS_16_GOT",
  43094. + "BFD_RELOC_CRIS_32_GOTPLT",
  43095. + "BFD_RELOC_CRIS_16_GOTPLT",
  43096. + "BFD_RELOC_CRIS_32_GOTREL",
  43097. + "BFD_RELOC_CRIS_32_PLT_GOTREL",
  43098. + "BFD_RELOC_CRIS_32_PLT_PCREL",
  43099. + "BFD_RELOC_860_COPY",
  43100. + "BFD_RELOC_860_GLOB_DAT",
  43101. + "BFD_RELOC_860_JUMP_SLOT",
  43102. + "BFD_RELOC_860_RELATIVE",
  43103. + "BFD_RELOC_860_PC26",
  43104. + "BFD_RELOC_860_PLT26",
  43105. + "BFD_RELOC_860_PC16",
  43106. + "BFD_RELOC_860_LOW0",
  43107. + "BFD_RELOC_860_SPLIT0",
  43108. + "BFD_RELOC_860_LOW1",
  43109. + "BFD_RELOC_860_SPLIT1",
  43110. + "BFD_RELOC_860_LOW2",
  43111. + "BFD_RELOC_860_SPLIT2",
  43112. + "BFD_RELOC_860_LOW3",
  43113. + "BFD_RELOC_860_LOGOT0",
  43114. + "BFD_RELOC_860_SPGOT0",
  43115. + "BFD_RELOC_860_LOGOT1",
  43116. + "BFD_RELOC_860_SPGOT1",
  43117. + "BFD_RELOC_860_LOGOTOFF0",
  43118. + "BFD_RELOC_860_SPGOTOFF0",
  43119. + "BFD_RELOC_860_LOGOTOFF1",
  43120. + "BFD_RELOC_860_SPGOTOFF1",
  43121. + "BFD_RELOC_860_LOGOTOFF2",
  43122. + "BFD_RELOC_860_LOGOTOFF3",
  43123. + "BFD_RELOC_860_LOPC",
  43124. + "BFD_RELOC_860_HIGHADJ",
  43125. + "BFD_RELOC_860_HAGOT",
  43126. + "BFD_RELOC_860_HAGOTOFF",
  43127. + "BFD_RELOC_860_HAPC",
  43128. + "BFD_RELOC_860_HIGH",
  43129. + "BFD_RELOC_860_HIGOT",
  43130. + "BFD_RELOC_860_HIGOTOFF",
  43131. + "BFD_RELOC_OPENRISC_ABS_26",
  43132. + "BFD_RELOC_OPENRISC_REL_26",
  43133. + "BFD_RELOC_H8_DIR16A8",
  43134. + "BFD_RELOC_H8_DIR16R8",
  43135. + "BFD_RELOC_H8_DIR24A8",
  43136. + "BFD_RELOC_H8_DIR24R8",
  43137. + "BFD_RELOC_H8_DIR32A16",
  43138. + "BFD_RELOC_XSTORMY16_REL_12",
  43139. + "BFD_RELOC_XSTORMY16_12",
  43140. + "BFD_RELOC_XSTORMY16_24",
  43141. + "BFD_RELOC_XSTORMY16_FPTR16",
  43142. + "BFD_RELOC_RELC",
  43143. +
  43144. + "BFD_RELOC_XC16X_PAG",
  43145. + "BFD_RELOC_XC16X_POF",
  43146. + "BFD_RELOC_XC16X_SEG",
  43147. + "BFD_RELOC_XC16X_SOF",
  43148. + "BFD_RELOC_VAX_GLOB_DAT",
  43149. + "BFD_RELOC_VAX_JMP_SLOT",
  43150. + "BFD_RELOC_VAX_RELATIVE",
  43151. + "BFD_RELOC_MT_PC16",
  43152. + "BFD_RELOC_MT_HI16",
  43153. + "BFD_RELOC_MT_LO16",
  43154. + "BFD_RELOC_MT_GNU_VTINHERIT",
  43155. + "BFD_RELOC_MT_GNU_VTENTRY",
  43156. + "BFD_RELOC_MT_PCINSN8",
  43157. + "BFD_RELOC_MSP430_10_PCREL",
  43158. + "BFD_RELOC_MSP430_16_PCREL",
  43159. + "BFD_RELOC_MSP430_16",
  43160. + "BFD_RELOC_MSP430_16_PCREL_BYTE",
  43161. + "BFD_RELOC_MSP430_16_BYTE",
  43162. + "BFD_RELOC_MSP430_2X_PCREL",
  43163. + "BFD_RELOC_MSP430_RL_PCREL",
  43164. + "BFD_RELOC_IQ2000_OFFSET_16",
  43165. + "BFD_RELOC_IQ2000_OFFSET_21",
  43166. + "BFD_RELOC_IQ2000_UHI16",
  43167. + "BFD_RELOC_XTENSA_RTLD",
  43168. + "BFD_RELOC_XTENSA_GLOB_DAT",
  43169. + "BFD_RELOC_XTENSA_JMP_SLOT",
  43170. + "BFD_RELOC_XTENSA_RELATIVE",
  43171. + "BFD_RELOC_XTENSA_PLT",
  43172. + "BFD_RELOC_XTENSA_DIFF8",
  43173. + "BFD_RELOC_XTENSA_DIFF16",
  43174. + "BFD_RELOC_XTENSA_DIFF32",
  43175. + "BFD_RELOC_XTENSA_SLOT0_OP",
  43176. + "BFD_RELOC_XTENSA_SLOT1_OP",
  43177. + "BFD_RELOC_XTENSA_SLOT2_OP",
  43178. + "BFD_RELOC_XTENSA_SLOT3_OP",
  43179. + "BFD_RELOC_XTENSA_SLOT4_OP",
  43180. + "BFD_RELOC_XTENSA_SLOT5_OP",
  43181. + "BFD_RELOC_XTENSA_SLOT6_OP",
  43182. + "BFD_RELOC_XTENSA_SLOT7_OP",
  43183. + "BFD_RELOC_XTENSA_SLOT8_OP",
  43184. + "BFD_RELOC_XTENSA_SLOT9_OP",
  43185. + "BFD_RELOC_XTENSA_SLOT10_OP",
  43186. + "BFD_RELOC_XTENSA_SLOT11_OP",
  43187. + "BFD_RELOC_XTENSA_SLOT12_OP",
  43188. + "BFD_RELOC_XTENSA_SLOT13_OP",
  43189. + "BFD_RELOC_XTENSA_SLOT14_OP",
  43190. + "BFD_RELOC_XTENSA_SLOT0_ALT",
  43191. + "BFD_RELOC_XTENSA_SLOT1_ALT",
  43192. + "BFD_RELOC_XTENSA_SLOT2_ALT",
  43193. + "BFD_RELOC_XTENSA_SLOT3_ALT",
  43194. + "BFD_RELOC_XTENSA_SLOT4_ALT",
  43195. + "BFD_RELOC_XTENSA_SLOT5_ALT",
  43196. + "BFD_RELOC_XTENSA_SLOT6_ALT",
  43197. + "BFD_RELOC_XTENSA_SLOT7_ALT",
  43198. + "BFD_RELOC_XTENSA_SLOT8_ALT",
  43199. + "BFD_RELOC_XTENSA_SLOT9_ALT",
  43200. + "BFD_RELOC_XTENSA_SLOT10_ALT",
  43201. + "BFD_RELOC_XTENSA_SLOT11_ALT",
  43202. + "BFD_RELOC_XTENSA_SLOT12_ALT",
  43203. + "BFD_RELOC_XTENSA_SLOT13_ALT",
  43204. + "BFD_RELOC_XTENSA_SLOT14_ALT",
  43205. + "BFD_RELOC_XTENSA_OP0",
  43206. + "BFD_RELOC_XTENSA_OP1",
  43207. + "BFD_RELOC_XTENSA_OP2",
  43208. + "BFD_RELOC_XTENSA_ASM_EXPAND",
  43209. + "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
  43210. + "BFD_RELOC_Z80_DISP8",
  43211. + "BFD_RELOC_Z8K_DISP7",
  43212. + "BFD_RELOC_Z8K_CALLR",
  43213. + "BFD_RELOC_Z8K_IMM4L",
  43214. + "@@overflow: BFD_RELOC_UNUSED@@",
  43215. +};
  43216. +#endif
  43217. +
  43218. +reloc_howto_type *bfd_default_reloc_type_lookup
  43219. + (bfd *abfd, bfd_reloc_code_real_type code);
  43220. +
  43221. +bfd_boolean bfd_generic_relax_section
  43222. + (bfd *abfd,
  43223. + asection *section,
  43224. + struct bfd_link_info *,
  43225. + bfd_boolean *);
  43226. +
  43227. +bfd_boolean bfd_generic_gc_sections
  43228. + (bfd *, struct bfd_link_info *);
  43229. +
  43230. +bfd_boolean bfd_generic_merge_sections
  43231. + (bfd *, struct bfd_link_info *);
  43232. +
  43233. +bfd_byte *bfd_generic_get_relocated_section_contents
  43234. + (bfd *abfd,
  43235. + struct bfd_link_info *link_info,
  43236. + struct bfd_link_order *link_order,
  43237. + bfd_byte *data,
  43238. + bfd_boolean relocatable,
  43239. + asymbol **symbols);
  43240. +
  43241. +/* Extracted from archures.c. */
  43242. +extern const bfd_arch_info_type bfd_default_arch_struct;
  43243. +bfd_boolean bfd_default_set_arch_mach
  43244. + (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
  43245. +
  43246. +const bfd_arch_info_type *bfd_default_compatible
  43247. + (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
  43248. +
  43249. +bfd_boolean bfd_default_scan
  43250. + (const struct bfd_arch_info *info, const char *string);
  43251. +
  43252. +/* Extracted from elf.c. */
  43253. +struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
  43254. +
  43255. --- /dev/null
  43256. +++ b/bfd/doc/libcoff.h
  43257. @@ -0,0 +1,936 @@
  43258. +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
  43259. + generated from "libcoff-in.h" and "coffcode.h".
  43260. + Run "make headers" in your build bfd/ to regenerate. */
  43261. +
  43262. +/* BFD COFF object file private structure.
  43263. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
  43264. + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
  43265. + Free Software Foundation, Inc.
  43266. + Written by Cygnus Support.
  43267. +
  43268. + This file is part of BFD, the Binary File Descriptor library.
  43269. +
  43270. + This program is free software; you can redistribute it and/or modify
  43271. + it under the terms of the GNU General Public License as published by
  43272. + the Free Software Foundation; either version 3 of the License, or
  43273. + (at your option) any later version.
  43274. +
  43275. + This program is distributed in the hope that it will be useful,
  43276. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  43277. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  43278. + GNU General Public License for more details.
  43279. +
  43280. + You should have received a copy of the GNU General Public License
  43281. + along with this program; if not, write to the Free Software
  43282. + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  43283. + MA 02110-1301, USA. */
  43284. +
  43285. +#include "bfdlink.h"
  43286. +
  43287. +/* Object file tdata; access macros. */
  43288. +
  43289. +#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
  43290. +#define exec_hdr(bfd) (coff_data (bfd)->hdr)
  43291. +#define obj_pe(bfd) (coff_data (bfd)->pe)
  43292. +#define obj_symbols(bfd) (coff_data (bfd)->symbols)
  43293. +#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
  43294. +#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
  43295. +#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
  43296. +#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
  43297. +#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
  43298. +#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
  43299. +#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
  43300. +#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
  43301. +#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
  43302. +#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
  43303. +#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
  43304. +#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
  43305. +#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
  43306. +
  43307. +/* `Tdata' information kept for COFF files. */
  43308. +
  43309. +typedef struct coff_tdata
  43310. +{
  43311. + struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
  43312. + unsigned int *conversion_table;
  43313. + int conv_table_size;
  43314. + file_ptr sym_filepos;
  43315. +
  43316. + struct coff_ptr_struct *raw_syments;
  43317. + unsigned long raw_syment_count;
  43318. +
  43319. + /* These are only valid once writing has begun. */
  43320. + long int relocbase;
  43321. +
  43322. + /* These members communicate important constants about the symbol table
  43323. + to GDB's symbol-reading code. These `constants' unfortunately vary
  43324. + from coff implementation to implementation... */
  43325. + unsigned local_n_btmask;
  43326. + unsigned local_n_btshft;
  43327. + unsigned local_n_tmask;
  43328. + unsigned local_n_tshift;
  43329. + unsigned local_symesz;
  43330. + unsigned local_auxesz;
  43331. + unsigned local_linesz;
  43332. +
  43333. + /* The unswapped external symbols. May be NULL. Read by
  43334. + _bfd_coff_get_external_symbols. */
  43335. + void * external_syms;
  43336. + /* If this is TRUE, the external_syms may not be freed. */
  43337. + bfd_boolean keep_syms;
  43338. +
  43339. + /* The string table. May be NULL. Read by
  43340. + _bfd_coff_read_string_table. */
  43341. + char *strings;
  43342. + /* If this is TRUE, the strings may not be freed. */
  43343. + bfd_boolean keep_strings;
  43344. + /* If this is TRUE, the strings have been written out already. */
  43345. + bfd_boolean strings_written;
  43346. +
  43347. + /* Is this a PE format coff file? */
  43348. + int pe;
  43349. + /* Used by the COFF backend linker. */
  43350. + struct coff_link_hash_entry **sym_hashes;
  43351. +
  43352. + /* Used by the pe linker for PowerPC. */
  43353. + int *local_toc_sym_map;
  43354. +
  43355. + struct bfd_link_info *link_info;
  43356. +
  43357. + /* Used by coff_find_nearest_line. */
  43358. + void * line_info;
  43359. +
  43360. + /* A place to stash dwarf2 info for this bfd. */
  43361. + void * dwarf2_find_line_info;
  43362. +
  43363. + /* The timestamp from the COFF file header. */
  43364. + long timestamp;
  43365. +
  43366. + /* Copy of some of the f_flags bits in the COFF filehdr structure,
  43367. + used by ARM code. */
  43368. + flagword flags;
  43369. +
  43370. +} coff_data_type;
  43371. +
  43372. +/* Tdata for pe image files. */
  43373. +typedef struct pe_tdata
  43374. +{
  43375. + coff_data_type coff;
  43376. + struct internal_extra_pe_aouthdr pe_opthdr;
  43377. + int dll;
  43378. + int has_reloc_section;
  43379. + bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
  43380. + flagword real_flags;
  43381. + int target_subsystem;
  43382. + bfd_boolean force_minimum_alignment;
  43383. +} pe_data_type;
  43384. +
  43385. +#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
  43386. +
  43387. +/* Tdata for XCOFF files. */
  43388. +
  43389. +struct xcoff_tdata
  43390. +{
  43391. + /* Basic COFF information. */
  43392. + coff_data_type coff;
  43393. +
  43394. + /* TRUE if this is an XCOFF64 file. */
  43395. + bfd_boolean xcoff64;
  43396. +
  43397. + /* TRUE if a large a.out header should be generated. */
  43398. + bfd_boolean full_aouthdr;
  43399. +
  43400. + /* TOC value. */
  43401. + bfd_vma toc;
  43402. +
  43403. + /* Index of section holding TOC. */
  43404. + int sntoc;
  43405. +
  43406. + /* Index of section holding entry point. */
  43407. + int snentry;
  43408. +
  43409. + /* .text alignment from optional header. */
  43410. + int text_align_power;
  43411. +
  43412. + /* .data alignment from optional header. */
  43413. + int data_align_power;
  43414. +
  43415. + /* modtype from optional header. */
  43416. + short modtype;
  43417. +
  43418. + /* cputype from optional header. */
  43419. + short cputype;
  43420. +
  43421. + /* maxdata from optional header. */
  43422. + bfd_vma maxdata;
  43423. +
  43424. + /* maxstack from optional header. */
  43425. + bfd_vma maxstack;
  43426. +
  43427. + /* Used by the XCOFF backend linker. */
  43428. + asection **csects;
  43429. + unsigned long *debug_indices;
  43430. + unsigned int import_file_id;
  43431. +};
  43432. +
  43433. +#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
  43434. +
  43435. +/* We take the address of the first element of an asymbol to ensure that the
  43436. + macro is only ever applied to an asymbol. */
  43437. +#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
  43438. +
  43439. +/* The used_by_bfd field of a section may be set to a pointer to this
  43440. + structure. */
  43441. +
  43442. +struct coff_section_tdata
  43443. +{
  43444. + /* The relocs, swapped into COFF internal form. This may be NULL. */
  43445. + struct internal_reloc *relocs;
  43446. + /* If this is TRUE, the relocs entry may not be freed. */
  43447. + bfd_boolean keep_relocs;
  43448. + /* The section contents. This may be NULL. */
  43449. + bfd_byte *contents;
  43450. + /* If this is TRUE, the contents entry may not be freed. */
  43451. + bfd_boolean keep_contents;
  43452. + /* Information cached by coff_find_nearest_line. */
  43453. + bfd_vma offset;
  43454. + unsigned int i;
  43455. + const char *function;
  43456. + /* Optional information about a COMDAT entry; NULL if not COMDAT. */
  43457. + struct coff_comdat_info *comdat;
  43458. + int line_base;
  43459. + /* A pointer used for .stab linking optimizations. */
  43460. + void * stab_info;
  43461. + /* Available for individual backends. */
  43462. + void * tdata;
  43463. +};
  43464. +
  43465. +/* An accessor macro for the coff_section_tdata structure. */
  43466. +#define coff_section_data(abfd, sec) \
  43467. + ((struct coff_section_tdata *) (sec)->used_by_bfd)
  43468. +
  43469. +/* Tdata for sections in XCOFF files. This is used by the linker. */
  43470. +
  43471. +struct xcoff_section_tdata
  43472. +{
  43473. + /* Used for XCOFF csects created by the linker; points to the real
  43474. + XCOFF section which contains this csect. */
  43475. + asection *enclosing;
  43476. + /* The lineno_count field for the enclosing section, because we are
  43477. + going to clobber it there. */
  43478. + unsigned int lineno_count;
  43479. + /* The first and one past the last symbol indices for symbols used
  43480. + by this csect. */
  43481. + unsigned long first_symndx;
  43482. + unsigned long last_symndx;
  43483. +};
  43484. +
  43485. +/* An accessor macro the xcoff_section_tdata structure. */
  43486. +#define xcoff_section_data(abfd, sec) \
  43487. + ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
  43488. +
  43489. +/* Tdata for sections in PE files. */
  43490. +
  43491. +struct pei_section_tdata
  43492. +{
  43493. + /* The virtual size of the section. */
  43494. + bfd_size_type virt_size;
  43495. + /* The PE section flags. */
  43496. + long pe_flags;
  43497. +};
  43498. +
  43499. +/* An accessor macro for the pei_section_tdata structure. */
  43500. +#define pei_section_data(abfd, sec) \
  43501. + ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
  43502. +
  43503. +/* COFF linker hash table entries. */
  43504. +
  43505. +struct coff_link_hash_entry
  43506. +{
  43507. + struct bfd_link_hash_entry root;
  43508. +
  43509. + /* Symbol index in output file. Set to -1 initially. Set to -2 if
  43510. + there is a reloc against this symbol. */
  43511. + long indx;
  43512. +
  43513. + /* Symbol type. */
  43514. + unsigned short type;
  43515. +
  43516. + /* Symbol class. */
  43517. + unsigned char class;
  43518. +
  43519. + /* Number of auxiliary entries. */
  43520. + char numaux;
  43521. +
  43522. + /* BFD to take auxiliary entries from. */
  43523. + bfd *auxbfd;
  43524. +
  43525. + /* Pointer to array of auxiliary entries, if any. */
  43526. + union internal_auxent *aux;
  43527. +
  43528. + /* Flag word; legal values follow. */
  43529. + unsigned short coff_link_hash_flags;
  43530. + /* Symbol is a PE section symbol. */
  43531. +#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
  43532. +};
  43533. +
  43534. +/* COFF linker hash table. */
  43535. +
  43536. +struct coff_link_hash_table
  43537. +{
  43538. + struct bfd_link_hash_table root;
  43539. + /* A pointer to information used to link stabs in sections. */
  43540. + struct stab_info stab_info;
  43541. +};
  43542. +
  43543. +/* Look up an entry in a COFF linker hash table. */
  43544. +
  43545. +#define coff_link_hash_lookup(table, string, create, copy, follow) \
  43546. + ((struct coff_link_hash_entry *) \
  43547. + bfd_link_hash_lookup (&(table)->root, (string), (create), \
  43548. + (copy), (follow)))
  43549. +
  43550. +/* Traverse a COFF linker hash table. */
  43551. +
  43552. +#define coff_link_hash_traverse(table, func, info) \
  43553. + (bfd_link_hash_traverse \
  43554. + (&(table)->root, \
  43555. + (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
  43556. + (info)))
  43557. +
  43558. +/* Get the COFF linker hash table from a link_info structure. */
  43559. +
  43560. +#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
  43561. +
  43562. +/* Functions in coffgen.c. */
  43563. +extern const bfd_target *coff_object_p
  43564. + (bfd *);
  43565. +extern struct bfd_section *coff_section_from_bfd_index
  43566. + (bfd *, int);
  43567. +extern long coff_get_symtab_upper_bound
  43568. + (bfd *);
  43569. +extern long coff_canonicalize_symtab
  43570. + (bfd *, asymbol **);
  43571. +extern int coff_count_linenumbers
  43572. + (bfd *);
  43573. +extern struct coff_symbol_struct *coff_symbol_from
  43574. + (bfd *, asymbol *);
  43575. +extern bfd_boolean coff_renumber_symbols
  43576. + (bfd *, int *);
  43577. +extern void coff_mangle_symbols
  43578. + (bfd *);
  43579. +extern bfd_boolean coff_write_symbols
  43580. + (bfd *);
  43581. +extern bfd_boolean coff_write_linenumbers
  43582. + (bfd *);
  43583. +extern alent *coff_get_lineno
  43584. + (bfd *, asymbol *);
  43585. +extern asymbol *coff_section_symbol
  43586. + (bfd *, char *);
  43587. +extern bfd_boolean _bfd_coff_get_external_symbols
  43588. + (bfd *);
  43589. +extern const char *_bfd_coff_read_string_table
  43590. + (bfd *);
  43591. +extern bfd_boolean _bfd_coff_free_symbols
  43592. + (bfd *);
  43593. +extern struct coff_ptr_struct *coff_get_normalized_symtab
  43594. + (bfd *);
  43595. +extern long coff_get_reloc_upper_bound
  43596. + (bfd *, sec_ptr);
  43597. +extern asymbol *coff_make_empty_symbol
  43598. + (bfd *);
  43599. +extern void coff_print_symbol
  43600. + (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
  43601. +extern void coff_get_symbol_info
  43602. + (bfd *, asymbol *, symbol_info *ret);
  43603. +extern bfd_boolean _bfd_coff_is_local_label_name
  43604. + (bfd *, const char *);
  43605. +extern asymbol *coff_bfd_make_debug_symbol
  43606. + (bfd *, void *, unsigned long);
  43607. +extern bfd_boolean coff_find_nearest_line
  43608. + (bfd *, asection *, asymbol **, bfd_vma, const char **,
  43609. + const char **, unsigned int *);
  43610. +extern bfd_boolean coff_find_inliner_info
  43611. + (bfd *, const char **, const char **, unsigned int *);
  43612. +extern int coff_sizeof_headers
  43613. + (bfd *, struct bfd_link_info *);
  43614. +extern bfd_boolean bfd_coff_reloc16_relax_section
  43615. + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
  43616. +extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
  43617. + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
  43618. + bfd_byte *, bfd_boolean, asymbol **);
  43619. +extern bfd_vma bfd_coff_reloc16_get_value
  43620. + (arelent *, struct bfd_link_info *, asection *);
  43621. +extern void bfd_perform_slip
  43622. + (bfd *, unsigned int, asection *, bfd_vma);
  43623. +
  43624. +/* Functions and types in cofflink.c. */
  43625. +
  43626. +#define STRING_SIZE_SIZE 4
  43627. +
  43628. +/* We use a hash table to merge identical enum, struct, and union
  43629. + definitions in the linker. */
  43630. +
  43631. +/* Information we keep for a single element (an enum value, a
  43632. + structure or union field) in the debug merge hash table. */
  43633. +
  43634. +struct coff_debug_merge_element
  43635. +{
  43636. + /* Next element. */
  43637. + struct coff_debug_merge_element *next;
  43638. +
  43639. + /* Name. */
  43640. + const char *name;
  43641. +
  43642. + /* Type. */
  43643. + unsigned int type;
  43644. +
  43645. + /* Symbol index for complex type. */
  43646. + long tagndx;
  43647. +};
  43648. +
  43649. +/* A linked list of debug merge entries for a given name. */
  43650. +
  43651. +struct coff_debug_merge_type
  43652. +{
  43653. + /* Next type with the same name. */
  43654. + struct coff_debug_merge_type *next;
  43655. +
  43656. + /* Class of type. */
  43657. + int class;
  43658. +
  43659. + /* Symbol index where this type is defined. */
  43660. + long indx;
  43661. +
  43662. + /* List of elements. */
  43663. + struct coff_debug_merge_element *elements;
  43664. +};
  43665. +
  43666. +/* Information we store in the debug merge hash table. */
  43667. +
  43668. +struct coff_debug_merge_hash_entry
  43669. +{
  43670. + struct bfd_hash_entry root;
  43671. +
  43672. + /* A list of types with this name. */
  43673. + struct coff_debug_merge_type *types;
  43674. +};
  43675. +
  43676. +/* The debug merge hash table. */
  43677. +
  43678. +struct coff_debug_merge_hash_table
  43679. +{
  43680. + struct bfd_hash_table root;
  43681. +};
  43682. +
  43683. +/* Initialize a COFF debug merge hash table. */
  43684. +
  43685. +#define coff_debug_merge_hash_table_init(table) \
  43686. + (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
  43687. + sizeof (struct coff_debug_merge_hash_entry)))
  43688. +
  43689. +/* Free a COFF debug merge hash table. */
  43690. +
  43691. +#define coff_debug_merge_hash_table_free(table) \
  43692. + (bfd_hash_table_free (&(table)->root))
  43693. +
  43694. +/* Look up an entry in a COFF debug merge hash table. */
  43695. +
  43696. +#define coff_debug_merge_hash_lookup(table, string, create, copy) \
  43697. + ((struct coff_debug_merge_hash_entry *) \
  43698. + bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
  43699. +
  43700. +/* Information we keep for each section in the output file when doing
  43701. + a relocatable link. */
  43702. +
  43703. +struct coff_link_section_info
  43704. +{
  43705. + /* The relocs to be output. */
  43706. + struct internal_reloc *relocs;
  43707. + /* For each reloc against a global symbol whose index was not known
  43708. + when the reloc was handled, the global hash table entry. */
  43709. + struct coff_link_hash_entry **rel_hashes;
  43710. +};
  43711. +
  43712. +/* Information that we pass around while doing the final link step. */
  43713. +
  43714. +struct coff_final_link_info
  43715. +{
  43716. + /* General link information. */
  43717. + struct bfd_link_info *info;
  43718. + /* Output BFD. */
  43719. + bfd *output_bfd;
  43720. + /* Used to indicate failure in traversal routine. */
  43721. + bfd_boolean failed;
  43722. + /* If doing "task linking" set only during the time when we want the
  43723. + global symbol writer to convert the storage class of defined global
  43724. + symbols from global to static. */
  43725. + bfd_boolean global_to_static;
  43726. + /* Hash table for long symbol names. */
  43727. + struct bfd_strtab_hash *strtab;
  43728. + /* When doing a relocatable link, an array of information kept for
  43729. + each output section, indexed by the target_index field. */
  43730. + struct coff_link_section_info *section_info;
  43731. + /* Symbol index of last C_FILE symbol (-1 if none). */
  43732. + long last_file_index;
  43733. + /* Contents of last C_FILE symbol. */
  43734. + struct internal_syment last_file;
  43735. + /* Symbol index of first aux entry of last .bf symbol with an empty
  43736. + endndx field (-1 if none). */
  43737. + long last_bf_index;
  43738. + /* Contents of last_bf_index aux entry. */
  43739. + union internal_auxent last_bf;
  43740. + /* Hash table used to merge debug information. */
  43741. + struct coff_debug_merge_hash_table debug_merge;
  43742. + /* Buffer large enough to hold swapped symbols of any input file. */
  43743. + struct internal_syment *internal_syms;
  43744. + /* Buffer large enough to hold sections of symbols of any input file. */
  43745. + asection **sec_ptrs;
  43746. + /* Buffer large enough to hold output indices of symbols of any
  43747. + input file. */
  43748. + long *sym_indices;
  43749. + /* Buffer large enough to hold output symbols for any input file. */
  43750. + bfd_byte *outsyms;
  43751. + /* Buffer large enough to hold external line numbers for any input
  43752. + section. */
  43753. + bfd_byte *linenos;
  43754. + /* Buffer large enough to hold any input section. */
  43755. + bfd_byte *contents;
  43756. + /* Buffer large enough to hold external relocs of any input section. */
  43757. + bfd_byte *external_relocs;
  43758. + /* Buffer large enough to hold swapped relocs of any input section. */
  43759. + struct internal_reloc *internal_relocs;
  43760. +};
  43761. +
  43762. +/* Most COFF variants have no way to record the alignment of a
  43763. + section. This struct is used to set a specific alignment based on
  43764. + the name of the section. */
  43765. +
  43766. +struct coff_section_alignment_entry
  43767. +{
  43768. + /* The section name. */
  43769. + const char *name;
  43770. +
  43771. + /* This is either (unsigned int) -1, indicating that the section
  43772. + name must match exactly, or it is the number of letters which
  43773. + must match at the start of the name. */
  43774. + unsigned int comparison_length;
  43775. +
  43776. + /* These macros may be used to fill in the first two fields in a
  43777. + structure initialization. */
  43778. +#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
  43779. +#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
  43780. +
  43781. + /* Only use this entry if the default section alignment for this
  43782. + target is at least that much (as a power of two). If this field
  43783. + is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
  43784. + unsigned int default_alignment_min;
  43785. +
  43786. + /* Only use this entry if the default section alignment for this
  43787. + target is no greater than this (as a power of two). If this
  43788. + field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
  43789. + unsigned int default_alignment_max;
  43790. +
  43791. +#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
  43792. +
  43793. + /* The desired alignment for this section (as a power of two). */
  43794. + unsigned int alignment_power;
  43795. +};
  43796. +
  43797. +extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
  43798. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  43799. +extern bfd_boolean _bfd_coff_link_hash_table_init
  43800. + (struct coff_link_hash_table *, bfd *,
  43801. + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
  43802. + struct bfd_hash_table *,
  43803. + const char *),
  43804. + unsigned int);
  43805. +extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
  43806. + (bfd *);
  43807. +extern const char *_bfd_coff_internal_syment_name
  43808. + (bfd *, const struct internal_syment *, char *);
  43809. +extern bfd_boolean _bfd_coff_link_add_symbols
  43810. + (bfd *, struct bfd_link_info *);
  43811. +extern bfd_boolean _bfd_coff_final_link
  43812. + (bfd *, struct bfd_link_info *);
  43813. +extern struct internal_reloc *_bfd_coff_read_internal_relocs
  43814. + (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
  43815. + struct internal_reloc *);
  43816. +extern bfd_boolean _bfd_coff_generic_relocate_section
  43817. + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
  43818. + struct internal_reloc *, struct internal_syment *, asection **);
  43819. +extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
  43820. + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
  43821. +extern bfd_boolean _bfd_coff_write_global_sym
  43822. + (struct coff_link_hash_entry *, void *);
  43823. +extern bfd_boolean _bfd_coff_write_task_globals
  43824. + (struct coff_link_hash_entry *, void *);
  43825. +extern bfd_boolean _bfd_coff_link_input_bfd
  43826. + (struct coff_final_link_info *, bfd *);
  43827. +extern bfd_boolean _bfd_coff_reloc_link_order
  43828. + (bfd *, struct coff_final_link_info *, asection *,
  43829. + struct bfd_link_order *);
  43830. +
  43831. +
  43832. +#define coff_get_section_contents_in_window \
  43833. + _bfd_generic_get_section_contents_in_window
  43834. +
  43835. +/* Functions in xcofflink.c. */
  43836. +
  43837. +extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
  43838. + (bfd *);
  43839. +extern long _bfd_xcoff_canonicalize_dynamic_symtab
  43840. + (bfd *, asymbol **);
  43841. +extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
  43842. + (bfd *);
  43843. +extern long _bfd_xcoff_canonicalize_dynamic_reloc
  43844. + (bfd *, arelent **, asymbol **);
  43845. +extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
  43846. + (bfd *);
  43847. +extern void _bfd_xcoff_bfd_link_hash_table_free
  43848. + (struct bfd_link_hash_table *);
  43849. +extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
  43850. + (bfd *, struct bfd_link_info *);
  43851. +extern bfd_boolean _bfd_xcoff_bfd_final_link
  43852. + (bfd *, struct bfd_link_info *);
  43853. +extern bfd_boolean _bfd_ppc_xcoff_relocate_section
  43854. + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
  43855. + struct internal_reloc *, struct internal_syment *, asection **);
  43856. +
  43857. +/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the
  43858. + linker, and so should start with bfd and be declared in bfd.h. */
  43859. +
  43860. +extern bfd_boolean ppc_allocate_toc_section
  43861. + (struct bfd_link_info *);
  43862. +extern bfd_boolean ppc_process_before_allocation
  43863. + (bfd *, struct bfd_link_info *);
  43864. +
  43865. +/* Extracted from coffcode.h. */
  43866. +typedef struct coff_ptr_struct
  43867. +{
  43868. + /* Remembers the offset from the first symbol in the file for
  43869. + this symbol. Generated by coff_renumber_symbols. */
  43870. + unsigned int offset;
  43871. +
  43872. + /* Should the value of this symbol be renumbered. Used for
  43873. + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
  43874. + unsigned int fix_value : 1;
  43875. +
  43876. + /* Should the tag field of this symbol be renumbered.
  43877. + Created by coff_pointerize_aux. */
  43878. + unsigned int fix_tag : 1;
  43879. +
  43880. + /* Should the endidx field of this symbol be renumbered.
  43881. + Created by coff_pointerize_aux. */
  43882. + unsigned int fix_end : 1;
  43883. +
  43884. + /* Should the x_csect.x_scnlen field be renumbered.
  43885. + Created by coff_pointerize_aux. */
  43886. + unsigned int fix_scnlen : 1;
  43887. +
  43888. + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
  43889. + index into the line number entries. Set by coff_slurp_symbol_table. */
  43890. + unsigned int fix_line : 1;
  43891. +
  43892. + /* The container for the symbol structure as read and translated
  43893. + from the file. */
  43894. + union
  43895. + {
  43896. + union internal_auxent auxent;
  43897. + struct internal_syment syment;
  43898. + } u;
  43899. +} combined_entry_type;
  43900. +
  43901. +
  43902. +/* Each canonical asymbol really looks like this: */
  43903. +
  43904. +typedef struct coff_symbol_struct
  43905. +{
  43906. + /* The actual symbol which the rest of BFD works with */
  43907. + asymbol symbol;
  43908. +
  43909. + /* A pointer to the hidden information for this symbol */
  43910. + combined_entry_type *native;
  43911. +
  43912. + /* A pointer to the linenumber information for this symbol */
  43913. + struct lineno_cache_entry *lineno;
  43914. +
  43915. + /* Have the line numbers been relocated yet ? */
  43916. + bfd_boolean done_lineno;
  43917. +} coff_symbol_type;
  43918. +/* COFF symbol classifications. */
  43919. +
  43920. +enum coff_symbol_classification
  43921. +{
  43922. + /* Global symbol. */
  43923. + COFF_SYMBOL_GLOBAL,
  43924. + /* Common symbol. */
  43925. + COFF_SYMBOL_COMMON,
  43926. + /* Undefined symbol. */
  43927. + COFF_SYMBOL_UNDEFINED,
  43928. + /* Local symbol. */
  43929. + COFF_SYMBOL_LOCAL,
  43930. + /* PE section symbol. */
  43931. + COFF_SYMBOL_PE_SECTION
  43932. +};
  43933. +
  43934. +typedef struct
  43935. +{
  43936. + void (*_bfd_coff_swap_aux_in)
  43937. + (bfd *, void *, int, int, int, int, void *);
  43938. +
  43939. + void (*_bfd_coff_swap_sym_in)
  43940. + (bfd *, void *, void *);
  43941. +
  43942. + void (*_bfd_coff_swap_lineno_in)
  43943. + (bfd *, void *, void *);
  43944. +
  43945. + unsigned int (*_bfd_coff_swap_aux_out)
  43946. + (bfd *, void *, int, int, int, int, void *);
  43947. +
  43948. + unsigned int (*_bfd_coff_swap_sym_out)
  43949. + (bfd *, void *, void *);
  43950. +
  43951. + unsigned int (*_bfd_coff_swap_lineno_out)
  43952. + (bfd *, void *, void *);
  43953. +
  43954. + unsigned int (*_bfd_coff_swap_reloc_out)
  43955. + (bfd *, void *, void *);
  43956. +
  43957. + unsigned int (*_bfd_coff_swap_filehdr_out)
  43958. + (bfd *, void *, void *);
  43959. +
  43960. + unsigned int (*_bfd_coff_swap_aouthdr_out)
  43961. + (bfd *, void *, void *);
  43962. +
  43963. + unsigned int (*_bfd_coff_swap_scnhdr_out)
  43964. + (bfd *, void *, void *);
  43965. +
  43966. + unsigned int _bfd_filhsz;
  43967. + unsigned int _bfd_aoutsz;
  43968. + unsigned int _bfd_scnhsz;
  43969. + unsigned int _bfd_symesz;
  43970. + unsigned int _bfd_auxesz;
  43971. + unsigned int _bfd_relsz;
  43972. + unsigned int _bfd_linesz;
  43973. + unsigned int _bfd_filnmlen;
  43974. + bfd_boolean _bfd_coff_long_filenames;
  43975. + bfd_boolean _bfd_coff_long_section_names;
  43976. + unsigned int _bfd_coff_default_section_alignment_power;
  43977. + bfd_boolean _bfd_coff_force_symnames_in_strings;
  43978. + unsigned int _bfd_coff_debug_string_prefix_length;
  43979. +
  43980. + void (*_bfd_coff_swap_filehdr_in)
  43981. + (bfd *, void *, void *);
  43982. +
  43983. + void (*_bfd_coff_swap_aouthdr_in)
  43984. + (bfd *, void *, void *);
  43985. +
  43986. + void (*_bfd_coff_swap_scnhdr_in)
  43987. + (bfd *, void *, void *);
  43988. +
  43989. + void (*_bfd_coff_swap_reloc_in)
  43990. + (bfd *abfd, void *, void *);
  43991. +
  43992. + bfd_boolean (*_bfd_coff_bad_format_hook)
  43993. + (bfd *, void *);
  43994. +
  43995. + bfd_boolean (*_bfd_coff_set_arch_mach_hook)
  43996. + (bfd *, void *);
  43997. +
  43998. + void * (*_bfd_coff_mkobject_hook)
  43999. + (bfd *, void *, void *);
  44000. +
  44001. + bfd_boolean (*_bfd_styp_to_sec_flags_hook)
  44002. + (bfd *, void *, const char *, asection *, flagword *);
  44003. +
  44004. + void (*_bfd_set_alignment_hook)
  44005. + (bfd *, asection *, void *);
  44006. +
  44007. + bfd_boolean (*_bfd_coff_slurp_symbol_table)
  44008. + (bfd *);
  44009. +
  44010. + bfd_boolean (*_bfd_coff_symname_in_debug)
  44011. + (bfd *, struct internal_syment *);
  44012. +
  44013. + bfd_boolean (*_bfd_coff_pointerize_aux_hook)
  44014. + (bfd *, combined_entry_type *, combined_entry_type *,
  44015. + unsigned int, combined_entry_type *);
  44016. +
  44017. + bfd_boolean (*_bfd_coff_print_aux)
  44018. + (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
  44019. + combined_entry_type *, unsigned int);
  44020. +
  44021. + void (*_bfd_coff_reloc16_extra_cases)
  44022. + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
  44023. + bfd_byte *, unsigned int *, unsigned int *);
  44024. +
  44025. + int (*_bfd_coff_reloc16_estimate)
  44026. + (bfd *, asection *, arelent *, unsigned int,
  44027. + struct bfd_link_info *);
  44028. +
  44029. + enum coff_symbol_classification (*_bfd_coff_classify_symbol)
  44030. + (bfd *, struct internal_syment *);
  44031. +
  44032. + bfd_boolean (*_bfd_coff_compute_section_file_positions)
  44033. + (bfd *);
  44034. +
  44035. + bfd_boolean (*_bfd_coff_start_final_link)
  44036. + (bfd *, struct bfd_link_info *);
  44037. +
  44038. + bfd_boolean (*_bfd_coff_relocate_section)
  44039. + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
  44040. + struct internal_reloc *, struct internal_syment *, asection **);
  44041. +
  44042. + reloc_howto_type *(*_bfd_coff_rtype_to_howto)
  44043. + (bfd *, asection *, struct internal_reloc *,
  44044. + struct coff_link_hash_entry *, struct internal_syment *,
  44045. + bfd_vma *);
  44046. +
  44047. + bfd_boolean (*_bfd_coff_adjust_symndx)
  44048. + (bfd *, struct bfd_link_info *, bfd *, asection *,
  44049. + struct internal_reloc *, bfd_boolean *);
  44050. +
  44051. + bfd_boolean (*_bfd_coff_link_add_one_symbol)
  44052. + (struct bfd_link_info *, bfd *, const char *, flagword,
  44053. + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
  44054. + struct bfd_link_hash_entry **);
  44055. +
  44056. + bfd_boolean (*_bfd_coff_link_output_has_begun)
  44057. + (bfd *, struct coff_final_link_info *);
  44058. +
  44059. + bfd_boolean (*_bfd_coff_final_link_postscript)
  44060. + (bfd *, struct coff_final_link_info *);
  44061. +
  44062. +} bfd_coff_backend_data;
  44063. +
  44064. +#define coff_backend_info(abfd) \
  44065. + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
  44066. +
  44067. +#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
  44068. + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
  44069. +
  44070. +#define bfd_coff_swap_sym_in(a,e,i) \
  44071. + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
  44072. +
  44073. +#define bfd_coff_swap_lineno_in(a,e,i) \
  44074. + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
  44075. +
  44076. +#define bfd_coff_swap_reloc_out(abfd, i, o) \
  44077. + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
  44078. +
  44079. +#define bfd_coff_swap_lineno_out(abfd, i, o) \
  44080. + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
  44081. +
  44082. +#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
  44083. + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
  44084. +
  44085. +#define bfd_coff_swap_sym_out(abfd, i,o) \
  44086. + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
  44087. +
  44088. +#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
  44089. + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
  44090. +
  44091. +#define bfd_coff_swap_filehdr_out(abfd, i,o) \
  44092. + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
  44093. +
  44094. +#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
  44095. + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
  44096. +
  44097. +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
  44098. +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
  44099. +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
  44100. +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
  44101. +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
  44102. +#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
  44103. +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
  44104. +#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
  44105. +#define bfd_coff_long_filenames(abfd) \
  44106. + (coff_backend_info (abfd)->_bfd_coff_long_filenames)
  44107. +#define bfd_coff_long_section_names(abfd) \
  44108. + (coff_backend_info (abfd)->_bfd_coff_long_section_names)
  44109. +#define bfd_coff_default_section_alignment_power(abfd) \
  44110. + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
  44111. +#define bfd_coff_swap_filehdr_in(abfd, i,o) \
  44112. + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
  44113. +
  44114. +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
  44115. + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
  44116. +
  44117. +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
  44118. + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
  44119. +
  44120. +#define bfd_coff_swap_reloc_in(abfd, i, o) \
  44121. + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
  44122. +
  44123. +#define bfd_coff_bad_format_hook(abfd, filehdr) \
  44124. + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
  44125. +
  44126. +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
  44127. + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
  44128. +#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
  44129. + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
  44130. + (abfd, filehdr, aouthdr))
  44131. +
  44132. +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
  44133. + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
  44134. + (abfd, scnhdr, name, section, flags_ptr))
  44135. +
  44136. +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
  44137. + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
  44138. +
  44139. +#define bfd_coff_slurp_symbol_table(abfd)\
  44140. + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
  44141. +
  44142. +#define bfd_coff_symname_in_debug(abfd, sym)\
  44143. + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
  44144. +
  44145. +#define bfd_coff_force_symnames_in_strings(abfd)\
  44146. + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
  44147. +
  44148. +#define bfd_coff_debug_string_prefix_length(abfd)\
  44149. + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
  44150. +
  44151. +#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
  44152. + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
  44153. + (abfd, file, base, symbol, aux, indaux))
  44154. +
  44155. +#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
  44156. + reloc, data, src_ptr, dst_ptr)\
  44157. + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
  44158. + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
  44159. +
  44160. +#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
  44161. + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
  44162. + (abfd, section, reloc, shrink, link_info))
  44163. +
  44164. +#define bfd_coff_classify_symbol(abfd, sym)\
  44165. + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
  44166. + (abfd, sym))
  44167. +
  44168. +#define bfd_coff_compute_section_file_positions(abfd)\
  44169. + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
  44170. + (abfd))
  44171. +
  44172. +#define bfd_coff_start_final_link(obfd, info)\
  44173. + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
  44174. + (obfd, info))
  44175. +#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
  44176. + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
  44177. + (obfd, info, ibfd, o, con, rel, isyms, secs))
  44178. +#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
  44179. + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
  44180. + (abfd, sec, rel, h, sym, addendp))
  44181. +#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
  44182. + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
  44183. + (obfd, info, ibfd, sec, rel, adjustedp))
  44184. +#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
  44185. + value, string, cp, coll, hashp)\
  44186. + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
  44187. + (info, abfd, name, flags, section, value, string, cp, coll, hashp))
  44188. +
  44189. +#define bfd_coff_link_output_has_begun(a,p) \
  44190. + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
  44191. +#define bfd_coff_final_link_postscript(a,p) \
  44192. + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
  44193. +
  44194. --- a/bfd/libbfd.h
  44195. +++ b/bfd/libbfd.h
  44196. @@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
  44197. "BFD_RELOC_AVR_LDI",
  44198. "BFD_RELOC_AVR_6",
  44199. "BFD_RELOC_AVR_6_ADIW",
  44200. + "BFD_RELOC_AVR32_DIFF32",
  44201. + "BFD_RELOC_AVR32_DIFF16",
  44202. + "BFD_RELOC_AVR32_DIFF8",
  44203. + "BFD_RELOC_AVR32_GOT32",
  44204. + "BFD_RELOC_AVR32_GOT16",
  44205. + "BFD_RELOC_AVR32_GOT8",
  44206. + "BFD_RELOC_AVR32_21S",
  44207. + "BFD_RELOC_AVR32_16U",
  44208. + "BFD_RELOC_AVR32_16S",
  44209. + "BFD_RELOC_AVR32_SUB5",
  44210. + "BFD_RELOC_AVR32_8S_EXT",
  44211. + "BFD_RELOC_AVR32_8S",
  44212. + "BFD_RELOC_AVR32_15S",
  44213. + "BFD_RELOC_AVR32_22H_PCREL",
  44214. + "BFD_RELOC_AVR32_18W_PCREL",
  44215. + "BFD_RELOC_AVR32_16B_PCREL",
  44216. + "BFD_RELOC_AVR32_16N_PCREL",
  44217. + "BFD_RELOC_AVR32_14UW_PCREL",
  44218. + "BFD_RELOC_AVR32_11H_PCREL",
  44219. + "BFD_RELOC_AVR32_10UW_PCREL",
  44220. + "BFD_RELOC_AVR32_9H_PCREL",
  44221. + "BFD_RELOC_AVR32_9UW_PCREL",
  44222. + "BFD_RELOC_AVR32_GOTPC",
  44223. + "BFD_RELOC_AVR32_GOTCALL",
  44224. + "BFD_RELOC_AVR32_LDA_GOT",
  44225. + "BFD_RELOC_AVR32_GOT21S",
  44226. + "BFD_RELOC_AVR32_GOT18SW",
  44227. + "BFD_RELOC_AVR32_GOT16S",
  44228. + "BFD_RELOC_AVR32_32_CPENT",
  44229. + "BFD_RELOC_AVR32_CPCALL",
  44230. + "BFD_RELOC_AVR32_16_CP",
  44231. + "BFD_RELOC_AVR32_9W_CP",
  44232. + "BFD_RELOC_AVR32_ALIGN",
  44233. + "BFD_RELOC_AVR32_14UW",
  44234. + "BFD_RELOC_AVR32_10UW",
  44235. + "BFD_RELOC_AVR32_10SW",
  44236. + "BFD_RELOC_AVR32_STHH_W",
  44237. + "BFD_RELOC_AVR32_7UW",
  44238. + "BFD_RELOC_AVR32_6S",
  44239. + "BFD_RELOC_AVR32_6UW",
  44240. + "BFD_RELOC_AVR32_4UH",
  44241. + "BFD_RELOC_AVR32_3U",
  44242. "BFD_RELOC_390_12",
  44243. "BFD_RELOC_390_GOT12",
  44244. "BFD_RELOC_390_PLT32",
  44245. --- /dev/null
  44246. +++ b/bfd/libtool
  44247. @@ -0,0 +1,7871 @@
  44248. +#! /bin/bash
  44249. +
  44250. +# libtool - Provide generalized library-building support services.
  44251. +# Generated automatically by config.status (bfd) 2.18
  44252. +# Libtool was configured on host hcegtvedt:
  44253. +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
  44254. +#
  44255. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
  44256. +# 2006, 2007, 2008 Free Software Foundation, Inc.
  44257. +# Written by Gordon Matzigkeit, 1996
  44258. +#
  44259. +# This file is part of GNU Libtool.
  44260. +#
  44261. +# GNU Libtool is free software; you can redistribute it and/or
  44262. +# modify it under the terms of the GNU General Public License as
  44263. +# published by the Free Software Foundation; either version 2 of
  44264. +# the License, or (at your option) any later version.
  44265. +#
  44266. +# As a special exception to the GNU General Public License,
  44267. +# if you distribute this file as part of a program or library that
  44268. +# is built using GNU Libtool, you may include this file under the
  44269. +# same distribution terms that you use for the rest of that program.
  44270. +#
  44271. +# GNU Libtool is distributed in the hope that it will be useful,
  44272. +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  44273. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  44274. +# GNU General Public License for more details.
  44275. +#
  44276. +# You should have received a copy of the GNU General Public License
  44277. +# along with GNU Libtool; see the file COPYING. If not, a copy
  44278. +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
  44279. +# obtained by writing to the Free Software Foundation, Inc.,
  44280. +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  44281. +
  44282. +
  44283. +# The names of the tagged configurations supported by this script.
  44284. +available_tags=""
  44285. +
  44286. +# ### BEGIN LIBTOOL CONFIG
  44287. +
  44288. +# Whether or not to build shared libraries.
  44289. +build_libtool_libs=no
  44290. +
  44291. +# Which release of libtool.m4 was used?
  44292. +macro_version=2.2.4
  44293. +macro_revision=1.2976
  44294. +
  44295. +# Whether or not to build static libraries.
  44296. +build_old_libs=yes
  44297. +
  44298. +# What type of objects to build.
  44299. +pic_mode=default
  44300. +
  44301. +# Whether or not to optimize for fast installation.
  44302. +fast_install=needless
  44303. +
  44304. +# The host system.
  44305. +host_alias=i686-pc-linux-gnu
  44306. +host=i686-pc-linux-gnu
  44307. +host_os=linux-gnu
  44308. +
  44309. +# The build system.
  44310. +build_alias=i686-pc-linux-gnu
  44311. +build=i686-pc-linux-gnu
  44312. +build_os=linux-gnu
  44313. +
  44314. +# A sed program that does not truncate output.
  44315. +SED="/bin/sed"
  44316. +
  44317. +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
  44318. +Xsed="$SED -e 1s/^X//"
  44319. +
  44320. +# A grep program that handles long lines.
  44321. +GREP="/bin/grep"
  44322. +
  44323. +# An ERE matcher.
  44324. +EGREP="/bin/grep -E"
  44325. +
  44326. +# A literal string matcher.
  44327. +FGREP="/bin/grep -F"
  44328. +
  44329. +# A BSD- or MS-compatible name lister.
  44330. +NM="nm"
  44331. +
  44332. +# Whether we need soft or hard links.
  44333. +LN_S="ln -s"
  44334. +
  44335. +# What is the maximum length of a command?
  44336. +max_cmd_len=805306365
  44337. +
  44338. +# Object file suffix (normally "o").
  44339. +objext=o
  44340. +
  44341. +# Executable file suffix (normally "").
  44342. +exeext=
  44343. +
  44344. +# whether the shell understands "unset".
  44345. +lt_unset=unset
  44346. +
  44347. +# turn spaces into newlines.
  44348. +SP2NL="tr \\040 \\012"
  44349. +
  44350. +# turn newlines into spaces.
  44351. +NL2SP="tr \\015\\012 \\040\\040"
  44352. +
  44353. +# How to create reloadable object files.
  44354. +reload_flag=" -r"
  44355. +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
  44356. +
  44357. +# Method to check whether dependent libraries are shared objects.
  44358. +deplibs_check_method="pass_all"
  44359. +
  44360. +# Command to use when deplibs_check_method == "file_magic".
  44361. +file_magic_cmd="\$MAGIC_CMD"
  44362. +
  44363. +# The archiver.
  44364. +AR="ar"
  44365. +AR_FLAGS="cru"
  44366. +
  44367. +# A symbol stripping program.
  44368. +STRIP="strip"
  44369. +
  44370. +# Commands used to install an old-style archive.
  44371. +RANLIB="ranlib"
  44372. +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
  44373. +old_postuninstall_cmds=""
  44374. +
  44375. +# A C compiler.
  44376. +LTCC="gcc"
  44377. +
  44378. +# LTCC compiler flags.
  44379. +LTCFLAGS="-g -O2"
  44380. +
  44381. +# Take the output of nm and produce a listing of raw symbols and C names.
  44382. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
  44383. +
  44384. +# Transform the output of nm in a proper C declaration.
  44385. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
  44386. +
  44387. +# Transform the output of nm in a C name address pair.
  44388. +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
  44389. +
  44390. +# Transform the output of nm in a C name address pair when lib prefix is needed.
  44391. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'"
  44392. +
  44393. +# The name of the directory that contains temporary libtool files.
  44394. +objdir=.libs
  44395. +
  44396. +# Shell to use when invoking shell scripts.
  44397. +SHELL="/bin/bash"
  44398. +
  44399. +# An echo program that does not interpret backslashes.
  44400. +ECHO="echo"
  44401. +
  44402. +# Used to examine libraries when file_magic_cmd begins with "file".
  44403. +MAGIC_CMD=file
  44404. +
  44405. +# Must we lock files when doing compilation?
  44406. +need_locks="no"
  44407. +
  44408. +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
  44409. +DSYMUTIL=""
  44410. +
  44411. +# Tool to change global to local symbols on Mac OS X.
  44412. +NMEDIT=""
  44413. +
  44414. +# Tool to manipulate fat objects and archives on Mac OS X.
  44415. +LIPO=""
  44416. +
  44417. +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
  44418. +OTOOL=""
  44419. +
  44420. +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
  44421. +OTOOL64=""
  44422. +
  44423. +# Old archive suffix (normally "a").
  44424. +libext=a
  44425. +
  44426. +# Shared library suffix (normally ".so").
  44427. +shrext_cmds=".so"
  44428. +
  44429. +# The commands to extract the exported symbol list from a shared archive.
  44430. +extract_expsyms_cmds=""
  44431. +
  44432. +# Variables whose values should be saved in libtool wrapper scripts and
  44433. +# restored at link time.
  44434. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
  44435. +
  44436. +# Do we need the "lib" prefix for modules?
  44437. +need_lib_prefix=no
  44438. +
  44439. +# Do we need a version for libraries?
  44440. +need_version=no
  44441. +
  44442. +# Library versioning type.
  44443. +version_type=linux
  44444. +
  44445. +# Shared library runtime path variable.
  44446. +runpath_var=LD_RUN_PATH
  44447. +
  44448. +# Shared library path variable.
  44449. +shlibpath_var=LD_LIBRARY_PATH
  44450. +
  44451. +# Is shlibpath searched before the hard-coded library search path?
  44452. +shlibpath_overrides_runpath=no
  44453. +
  44454. +# Format of library name prefix.
  44455. +libname_spec="lib\$name"
  44456. +
  44457. +# List of archive names. First name is the real one, the rest are links.
  44458. +# The last name is the one that the linker finds with -lNAME
  44459. +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
  44460. +
  44461. +# The coded name of the library, if different from the real name.
  44462. +soname_spec="\${libname}\${release}\${shared_ext}\$major"
  44463. +
  44464. +# Command to use after installation of a shared archive.
  44465. +postinstall_cmds=""
  44466. +
  44467. +# Command to use after uninstallation of a shared archive.
  44468. +postuninstall_cmds=""
  44469. +
  44470. +# Commands used to finish a libtool library installation in a directory.
  44471. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
  44472. +
  44473. +# As "finish_cmds", except a single script fragment to be evaled but
  44474. +# not shown.
  44475. +finish_eval=""
  44476. +
  44477. +# Whether we should hardcode library paths into libraries.
  44478. +hardcode_into_libs=yes
  44479. +
  44480. +# Compile-time system search path for libraries.
  44481. +sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
  44482. +
  44483. +# Run-time system search path for libraries.
  44484. +sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
  44485. +
  44486. +# Whether dlopen is supported.
  44487. +dlopen_support=unknown
  44488. +
  44489. +# Whether dlopen of programs is supported.
  44490. +dlopen_self=unknown
  44491. +
  44492. +# Whether dlopen of statically linked programs is supported.
  44493. +dlopen_self_static=unknown
  44494. +
  44495. +# Commands to strip libraries.
  44496. +old_striplib="strip --strip-debug"
  44497. +striplib="strip --strip-unneeded"
  44498. +
  44499. +
  44500. +# The linker used to build libraries.
  44501. +LD="ld"
  44502. +
  44503. +# Commands used to build an old-style archive.
  44504. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
  44505. +
  44506. +# A language specific compiler.
  44507. +CC="gcc"
  44508. +
  44509. +# Is the compiler the GNU compiler?
  44510. +with_gcc=yes
  44511. +
  44512. +# Compiler flag to turn off builtin functions.
  44513. +no_builtin_flag=" -fno-builtin"
  44514. +
  44515. +# How to pass a linker flag through the compiler.
  44516. +wl="-Wl,"
  44517. +
  44518. +# Additional compiler flags for building library objects.
  44519. +pic_flag=" -fPIC -DPIC"
  44520. +
  44521. +# Compiler flag to prevent dynamic linking.
  44522. +link_static_flag="-static"
  44523. +
  44524. +# Does compiler simultaneously support -c and -o options?
  44525. +compiler_c_o="yes"
  44526. +
  44527. +# Whether or not to add -lc for building shared libraries.
  44528. +build_libtool_need_lc=yes
  44529. +
  44530. +# Whether or not to disallow shared libs when runtime libs are static.
  44531. +allow_libtool_libs_with_static_runtimes=no
  44532. +
  44533. +# Compiler flag to allow reflexive dlopens.
  44534. +export_dynamic_flag_spec="\${wl}--export-dynamic"
  44535. +
  44536. +# Compiler flag to generate shared objects directly from archives.
  44537. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
  44538. +
  44539. +# Whether the compiler copes with passing no objects directly.
  44540. +compiler_needs_object="no"
  44541. +
  44542. +# Create an old-style archive from a shared archive.
  44543. +old_archive_from_new_cmds=""
  44544. +
  44545. +# Create a temporary old-style archive to link instead of a shared archive.
  44546. +old_archive_from_expsyms_cmds=""
  44547. +
  44548. +# Commands used to build a shared archive.
  44549. +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
  44550. +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
  44551. + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
  44552. + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
  44553. + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
  44554. +
  44555. +# Commands used to build a loadable module if different from building
  44556. +# a shared archive.
  44557. +module_cmds=""
  44558. +module_expsym_cmds=""
  44559. +
  44560. +# Whether we are building with GNU ld or not.
  44561. +with_gnu_ld="yes"
  44562. +
  44563. +# Flag that allows shared libraries with undefined symbols to be built.
  44564. +allow_undefined_flag=""
  44565. +
  44566. +# Flag that enforces no undefined symbols.
  44567. +no_undefined_flag=""
  44568. +
  44569. +# Flag to hardcode $libdir into a binary during linking.
  44570. +# This must work even if $libdir does not exist
  44571. +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
  44572. +
  44573. +# If ld is used when linking, flag to hardcode $libdir into a binary
  44574. +# during linking. This must work even if $libdir does not exist.
  44575. +hardcode_libdir_flag_spec_ld=""
  44576. +
  44577. +# Whether we need a single "-rpath" flag with a separated argument.
  44578. +hardcode_libdir_separator=""
  44579. +
  44580. +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
  44581. +# DIR into the resulting binary.
  44582. +hardcode_direct=no
  44583. +
  44584. +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
  44585. +# DIR into the resulting binary and the resulting library dependency is
  44586. +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
  44587. +# library is relocated.
  44588. +hardcode_direct_absolute=no
  44589. +
  44590. +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
  44591. +# into the resulting binary.
  44592. +hardcode_minus_L=no
  44593. +
  44594. +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
  44595. +# into the resulting binary.
  44596. +hardcode_shlibpath_var=unsupported
  44597. +
  44598. +# Set to "yes" if building a shared library automatically hardcodes DIR
  44599. +# into the library and all subsequent libraries and executables linked
  44600. +# against it.
  44601. +hardcode_automatic=no
  44602. +
  44603. +# Set to yes if linker adds runtime paths of dependent libraries
  44604. +# to runtime path list.
  44605. +inherit_rpath=no
  44606. +
  44607. +# Whether libtool must link a program against all its dependency libraries.
  44608. +link_all_deplibs=unknown
  44609. +
  44610. +# Fix the shell variable $srcfile for the compiler.
  44611. +fix_srcfile_path=""
  44612. +
  44613. +# Set to "yes" if exported symbols are required.
  44614. +always_export_symbols=no
  44615. +
  44616. +# The commands to list exported symbols.
  44617. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
  44618. +
  44619. +# Symbols that should not be listed in the preloaded symbols.
  44620. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
  44621. +
  44622. +# Symbols that must always be exported.
  44623. +include_expsyms=""
  44624. +
  44625. +# Commands necessary for linking programs (against libraries) with templates.
  44626. +prelink_cmds=""
  44627. +
  44628. +# Specify filename containing input files.
  44629. +file_list_spec=""
  44630. +
  44631. +# How to hardcode a shared library path into an executable.
  44632. +hardcode_action=immediate
  44633. +
  44634. +# ### END LIBTOOL CONFIG
  44635. +
  44636. +# Generated from ltmain.m4sh; do not edit by hand
  44637. +
  44638. +# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
  44639. +# Written by Gordon Matzigkeit <[email protected]>, 1996
  44640. +
  44641. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
  44642. +# This is free software; see the source for copying conditions. There is NO
  44643. +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  44644. +
  44645. +# This program is free software; you can redistribute it and/or modify
  44646. +# it under the terms of the GNU General Public License as published by
  44647. +# the Free Software Foundation; either version 2 of the License, or
  44648. +# (at your option) any later version.
  44649. +#
  44650. +# This program is distributed in the hope that it will be useful, but
  44651. +# WITHOUT ANY WARRANTY; without even the implied warranty of
  44652. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  44653. +# General Public License for more details.
  44654. +#
  44655. +# You should have received a copy of the GNU General Public License
  44656. +# along with this program; if not, write to the Free Software
  44657. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  44658. +#
  44659. +# As a special exception to the GNU General Public License, if you
  44660. +# distribute this file as part of a program that contains a
  44661. +# configuration script generated by Autoconf, you may include it under
  44662. +# the same distribution terms that you use for the rest of that program.
  44663. +
  44664. +# Usage: $progname [OPTION]... [MODE-ARG]...
  44665. +#
  44666. +# Provide generalized library-building support services.
  44667. +#
  44668. +# --config show all configuration variables
  44669. +# --debug enable verbose shell tracing
  44670. +# -n, --dry-run display commands without modifying any files
  44671. +# --features display basic configuration information and exit
  44672. +# --mode=MODE use operation mode MODE
  44673. +# --preserve-dup-deps don't remove duplicate dependency libraries
  44674. +# --quiet, --silent don't print informational messages
  44675. +# --tag=TAG use configuration variables from tag TAG
  44676. +# -v, --verbose print informational messages (default)
  44677. +# --version print version information
  44678. +# -h, --help print short or long help message
  44679. +#
  44680. +# MODE must be one of the following:
  44681. +#
  44682. +# clean remove files from the build directory
  44683. +# compile compile a source file into a libtool object
  44684. +# execute automatically set library path, then run a program
  44685. +# finish complete the installation of libtool libraries
  44686. +# install install libraries or executables
  44687. +# link create a library or an executable
  44688. +# uninstall remove libraries from an installed directory
  44689. +#
  44690. +# MODE-ARGS vary depending on the MODE.
  44691. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
  44692. +#
  44693. +# When reporting a bug, please describe a test case to reproduce it and
  44694. +# include the following information:
  44695. +#
  44696. +# host-triplet: $host
  44697. +# shell: $SHELL
  44698. +# compiler: $LTCC
  44699. +# compiler flags: $LTCFLAGS
  44700. +# linker: $LD (gnu? $with_gnu_ld)
  44701. +# $progname: (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
  44702. +# automake: $automake_version
  44703. +# autoconf: $autoconf_version
  44704. +#
  44705. +# Report bugs to <[email protected]>.
  44706. +
  44707. +PROGRAM=ltmain.sh
  44708. +PACKAGE=libtool
  44709. +VERSION=2.1a
  44710. +TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
  44711. +package_revision=1.2435
  44712. +
  44713. +# Be Bourne compatible
  44714. +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  44715. + emulate sh
  44716. + NULLCMD=:
  44717. + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
  44718. + # is contrary to our usage. Disable this feature.
  44719. + alias -g '${1+"$@"}'='"$@"'
  44720. + setopt NO_GLOB_SUBST
  44721. +else
  44722. + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
  44723. +fi
  44724. +BIN_SH=xpg4; export BIN_SH # for Tru64
  44725. +DUALCASE=1; export DUALCASE # for MKS sh
  44726. +
  44727. +# NLS nuisances: We save the old values to restore during execute mode.
  44728. +# Only set LANG and LC_ALL to C if already set.
  44729. +# These must not be set unconditionally because not all systems understand
  44730. +# e.g. LANG=C (notably SCO).
  44731. +for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
  44732. +do
  44733. + eval "if test \"\${$lt_var+set}\" = set; then
  44734. + save_$lt_var=\$$lt_var
  44735. + $lt_var=C
  44736. + export $lt_var
  44737. + fi"
  44738. +done
  44739. +
  44740. +$lt_unset CDPATH
  44741. +
  44742. +
  44743. +
  44744. +
  44745. +
  44746. +: ${CP="cp -f"}
  44747. +: ${ECHO="echo"}
  44748. +: ${EGREP="/bin/grep -E"}
  44749. +: ${FGREP="/bin/grep -F"}
  44750. +: ${GREP="/bin/grep"}
  44751. +: ${LN_S="ln -s"}
  44752. +: ${MAKE="make"}
  44753. +: ${MKDIR="mkdir"}
  44754. +: ${MV="mv -f"}
  44755. +: ${RM="rm -f"}
  44756. +: ${SED="/bin/sed"}
  44757. +: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
  44758. +: ${Xsed="$SED -e 1s/^X//"}
  44759. +
  44760. +# Global variables:
  44761. +EXIT_SUCCESS=0
  44762. +EXIT_FAILURE=1
  44763. +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
  44764. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
  44765. +
  44766. +exit_status=$EXIT_SUCCESS
  44767. +
  44768. +# Make sure IFS has a sensible default
  44769. +lt_nl='
  44770. +'
  44771. +IFS=" $lt_nl"
  44772. +
  44773. +dirname="s,/[^/]*$,,"
  44774. +basename="s,^.*/,,"
  44775. +
  44776. +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
  44777. +# is ksh but when the shell is invoked as "sh" and the current value of
  44778. +# the _XPG environment variable is not equal to 1 (one), the special
  44779. +# positional parameter $0, within a function call, is the name of the
  44780. +# function.
  44781. +progpath="$0"
  44782. +
  44783. +# The name of this program:
  44784. +# In the unlikely event $progname began with a '-', it would play havoc with
  44785. +# func_echo (imagine progname=-n), so we prepend ./ in that case:
  44786. +progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
  44787. +
  44788. +# Make sure we have an absolute path for reexecution:
  44789. +case $progpath in
  44790. + [\\/]*|[A-Za-z]:\\*) ;;
  44791. + *[\\/]*)
  44792. + progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
  44793. + progdir=`cd "$progdir" && pwd`
  44794. + progpath="$progdir/$progname"
  44795. + ;;
  44796. + *)
  44797. + save_IFS="$IFS"
  44798. + IFS=:
  44799. + for progdir in $PATH; do
  44800. + IFS="$save_IFS"
  44801. + test -x "$progdir/$progname" && break
  44802. + done
  44803. + IFS="$save_IFS"
  44804. + test -n "$progdir" || progdir=`pwd`
  44805. + progpath="$progdir/$progname"
  44806. + ;;
  44807. +esac
  44808. +
  44809. +# Sed substitution that helps us do robust quoting. It backslashifies
  44810. +# metacharacters that are still active within double-quoted strings.
  44811. +Xsed="${SED}"' -e 1s/^X//'
  44812. +sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
  44813. +
  44814. +# Same as above, but do not quote variable references.
  44815. +double_quote_subst='s/\(["`\\]\)/\\\1/g'
  44816. +
  44817. +# Re-`\' parameter expansions in output of double_quote_subst that were
  44818. +# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
  44819. +# in input to double_quote_subst, that '$' was protected from expansion.
  44820. +# Since each input `\' is now two `\'s, look for any number of runs of
  44821. +# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
  44822. +bs='\\'
  44823. +bs2='\\\\'
  44824. +bs4='\\\\\\\\'
  44825. +dollar='\$'
  44826. +sed_double_backslash="\
  44827. + s/$bs4/&\\
  44828. +/g
  44829. + s/^$bs2$dollar/$bs&/
  44830. + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
  44831. + s/\n//g"
  44832. +
  44833. +# Standard options:
  44834. +opt_dry_run=false
  44835. +opt_help=false
  44836. +opt_quiet=false
  44837. +opt_verbose=false
  44838. +
  44839. +# func_echo arg...
  44840. +# Echo program name prefixed message, along with the current mode
  44841. +# name if it has been set yet.
  44842. +func_echo ()
  44843. +{
  44844. + $ECHO "$progname${mode+: }$mode: "${1+"$@"}
  44845. +}
  44846. +
  44847. +# func_verbose arg...
  44848. +# Echo program name prefixed message in verbose mode only.
  44849. +func_verbose ()
  44850. +{
  44851. + $opt_verbose && func_echo ${1+"$@"}
  44852. +
  44853. + # A bug in bash halts the script if the last line of a function
  44854. + # fails when set -e is in force, so we need another command to
  44855. + # work around that:
  44856. + :
  44857. +}
  44858. +
  44859. +# func_error arg...
  44860. +# Echo program name prefixed message to standard error.
  44861. +func_error ()
  44862. +{
  44863. + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
  44864. +}
  44865. +
  44866. +# func_warning arg...
  44867. +# Echo program name prefixed warning message to standard error.
  44868. +func_warning ()
  44869. +{
  44870. + $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
  44871. +}
  44872. +
  44873. +# func_fatal_error arg...
  44874. +# Echo program name prefixed message to standard error, and exit.
  44875. +func_fatal_error ()
  44876. +{
  44877. + func_error ${1+"$@"}
  44878. + exit $EXIT_FAILURE
  44879. +}
  44880. +
  44881. +# func_fatal_help arg...
  44882. +# Echo program name prefixed message to standard error, followed by
  44883. +# a help hint, and exit.
  44884. +func_fatal_help ()
  44885. +{
  44886. + func_error ${1+"$@"}
  44887. + func_fatal_error "$help"
  44888. +}
  44889. +help="Try \`$progname --help' for more information." ## default
  44890. +
  44891. +
  44892. +# func_grep expression filename
  44893. +# Check whether EXPRESSION matches any line of FILENAME, without output.
  44894. +func_grep ()
  44895. +{
  44896. + $GREP "$1" "$2" >/dev/null 2>&1
  44897. +}
  44898. +
  44899. +
  44900. +# func_mkdir_p directory-path
  44901. +# Make sure the entire path to DIRECTORY-PATH is available.
  44902. +func_mkdir_p ()
  44903. +{
  44904. + my_directory_path="$1"
  44905. + my_dir_list=
  44906. +
  44907. + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
  44908. +
  44909. + # Protect directory names starting with `-'
  44910. + case $my_directory_path in
  44911. + -*) my_directory_path="./$my_directory_path" ;;
  44912. + esac
  44913. +
  44914. + # While some portion of DIR does not yet exist...
  44915. + while test ! -d "$my_directory_path"; do
  44916. + # ...make a list in topmost first order. Use a colon delimited
  44917. + # list incase some portion of path contains whitespace.
  44918. + my_dir_list="$my_directory_path:$my_dir_list"
  44919. +
  44920. + # If the last portion added has no slash in it, the list is done
  44921. + case $my_directory_path in */*) ;; *) break ;; esac
  44922. +
  44923. + # ...otherwise throw away the child directory and loop
  44924. + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
  44925. + done
  44926. + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
  44927. +
  44928. + save_mkdir_p_IFS="$IFS"; IFS=':'
  44929. + for my_dir in $my_dir_list; do
  44930. + IFS="$save_mkdir_p_IFS"
  44931. + # mkdir can fail with a `File exist' error if two processes
  44932. + # try to create one of the directories concurrently. Don't
  44933. + # stop in that case!
  44934. + $MKDIR "$my_dir" 2>/dev/null || :
  44935. + done
  44936. + IFS="$save_mkdir_p_IFS"
  44937. +
  44938. + # Bail out if we (or some other process) failed to create a directory.
  44939. + test -d "$my_directory_path" || \
  44940. + func_fatal_error "Failed to create \`$1'"
  44941. + fi
  44942. +}
  44943. +
  44944. +
  44945. +# func_mktempdir [string]
  44946. +# Make a temporary directory that won't clash with other running
  44947. +# libtool processes, and avoids race conditions if possible. If
  44948. +# given, STRING is the basename for that directory.
  44949. +func_mktempdir ()
  44950. +{
  44951. + my_template="${TMPDIR-/tmp}/${1-$progname}"
  44952. +
  44953. + if test "$opt_dry_run" = ":"; then
  44954. + # Return a directory name, but don't create it in dry-run mode
  44955. + my_tmpdir="${my_template}-$$"
  44956. + else
  44957. +
  44958. + # If mktemp works, use that first and foremost
  44959. + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
  44960. +
  44961. + if test ! -d "$my_tmpdir"; then
  44962. + # Failing that, at least try and use $RANDOM to avoid a race
  44963. + my_tmpdir="${my_template}-${RANDOM-0}$$"
  44964. +
  44965. + save_mktempdir_umask=`umask`
  44966. + umask 0077
  44967. + $MKDIR "$my_tmpdir"
  44968. + umask $save_mktempdir_umask
  44969. + fi
  44970. +
  44971. + # If we're not in dry-run mode, bomb out on failure
  44972. + test -d "$my_tmpdir" || \
  44973. + func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
  44974. + fi
  44975. +
  44976. + $ECHO "X$my_tmpdir" | $Xsed
  44977. +}
  44978. +
  44979. +
  44980. +# func_quote_for_eval arg
  44981. +# Aesthetically quote ARG to be evaled later.
  44982. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
  44983. +# is double-quoted, suitable for a subsequent eval, whereas
  44984. +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
  44985. +# which are still active within double quotes backslashified.
  44986. +func_quote_for_eval ()
  44987. +{
  44988. + case $1 in
  44989. + *[\\\`\"\$]*)
  44990. + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
  44991. + *)
  44992. + func_quote_for_eval_unquoted_result="$1" ;;
  44993. + esac
  44994. +
  44995. + case $func_quote_for_eval_unquoted_result in
  44996. + # Double-quote args containing shell metacharacters to delay
  44997. + # word splitting, command substitution and and variable
  44998. + # expansion for a subsequent eval.
  44999. + # Many Bourne shells cannot handle close brackets correctly
  45000. + # in scan sets, so we specify it separately.
  45001. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
  45002. + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
  45003. + ;;
  45004. + *)
  45005. + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
  45006. + esac
  45007. +}
  45008. +
  45009. +
  45010. +# func_quote_for_expand arg
  45011. +# Aesthetically quote ARG to be evaled later; same as above,
  45012. +# but do not quote variable references.
  45013. +func_quote_for_expand ()
  45014. +{
  45015. + case $1 in
  45016. + *[\\\`\"]*)
  45017. + my_arg=`$ECHO "X$1" | $Xsed \
  45018. + -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
  45019. + *)
  45020. + my_arg="$1" ;;
  45021. + esac
  45022. +
  45023. + case $my_arg in
  45024. + # Double-quote args containing shell metacharacters to delay
  45025. + # word splitting and command substitution for a subsequent eval.
  45026. + # Many Bourne shells cannot handle close brackets correctly
  45027. + # in scan sets, so we specify it separately.
  45028. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
  45029. + my_arg="\"$my_arg\""
  45030. + ;;
  45031. + esac
  45032. +
  45033. + func_quote_for_expand_result="$my_arg"
  45034. +}
  45035. +
  45036. +
  45037. +# func_show_eval cmd [fail_exp]
  45038. +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
  45039. +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
  45040. +# is given, then evaluate it.
  45041. +func_show_eval ()
  45042. +{
  45043. + my_cmd="$1"
  45044. + my_fail_exp="${2-:}"
  45045. +
  45046. + ${opt_silent-false} || {
  45047. + func_quote_for_expand "$my_cmd"
  45048. + eval "func_echo $func_quote_for_expand_result"
  45049. + }
  45050. +
  45051. + if ${opt_dry_run-false}; then :; else
  45052. + eval "$my_cmd"
  45053. + my_status=$?
  45054. + if test "$my_status" -eq 0; then :; else
  45055. + eval "(exit $my_status); $my_fail_exp"
  45056. + fi
  45057. + fi
  45058. +}
  45059. +
  45060. +
  45061. +
  45062. +
  45063. +
  45064. +# func_version
  45065. +# Echo version message to standard output and exit.
  45066. +func_version ()
  45067. +{
  45068. + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
  45069. + s/^# //
  45070. + s/^# *$//
  45071. + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
  45072. + p
  45073. + }' < "$progpath"
  45074. + exit $?
  45075. +}
  45076. +
  45077. +# func_usage
  45078. +# Echo short help message to standard output and exit.
  45079. +func_usage ()
  45080. +{
  45081. + $SED -n '/^# Usage:/,/# -h/ {
  45082. + s/^# //
  45083. + s/^# *$//
  45084. + s/\$progname/'$progname'/
  45085. + p
  45086. + }' < "$progpath"
  45087. + $ECHO
  45088. + $ECHO "run \`$progname --help | more' for full usage"
  45089. + exit $?
  45090. +}
  45091. +
  45092. +# func_help
  45093. +# Echo long help message to standard output and exit.
  45094. +func_help ()
  45095. +{
  45096. + $SED -n '/^# Usage:/,/# Report bugs to/ {
  45097. + s/^# //
  45098. + s/^# *$//
  45099. + s*\$progname*'$progname'*
  45100. + s*\$host*'"$host"'*
  45101. + s*\$SHELL*'"$SHELL"'*
  45102. + s*\$LTCC*'"$LTCC"'*
  45103. + s*\$LTCFLAGS*'"$LTCFLAGS"'*
  45104. + s*\$LD*'"$LD"'*
  45105. + s/\$with_gnu_ld/'"$with_gnu_ld"'/
  45106. + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
  45107. + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
  45108. + p
  45109. + }' < "$progpath"
  45110. + exit $?
  45111. +}
  45112. +
  45113. +# func_missing_arg argname
  45114. +# Echo program name prefixed message to standard error and set global
  45115. +# exit_cmd.
  45116. +func_missing_arg ()
  45117. +{
  45118. + func_error "missing argument for $1"
  45119. + exit_cmd=exit
  45120. +}
  45121. +
  45122. +exit_cmd=:
  45123. +
  45124. +
  45125. +
  45126. +
  45127. +
  45128. +# Check that we have a working $ECHO.
  45129. +if test "X$1" = X--no-reexec; then
  45130. + # Discard the --no-reexec flag, and continue.
  45131. + shift
  45132. +elif test "X$1" = X--fallback-echo; then
  45133. + # Avoid inline document here, it may be left over
  45134. + :
  45135. +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
  45136. + # Yippee, $ECHO works!
  45137. + :
  45138. +else
  45139. + # Restart under the correct shell, and then maybe $ECHO will work.
  45140. + exec $SHELL "$progpath" --no-reexec ${1+"$@"}
  45141. +fi
  45142. +
  45143. +if test "X$1" = X--fallback-echo; then
  45144. + # used as fallback echo
  45145. + shift
  45146. + cat <<EOF
  45147. +$*
  45148. +EOF
  45149. + exit $EXIT_SUCCESS
  45150. +fi
  45151. +
  45152. +magic="%%%MAGIC variable%%%"
  45153. +
  45154. +
  45155. +# Global variables.
  45156. +# $mode is unset
  45157. +nonopt=
  45158. +execute_dlfiles=
  45159. +preserve_args=
  45160. +lo2o="s/\\.lo\$/.${objext}/"
  45161. +o2lo="s/\\.${objext}\$/.lo/"
  45162. +extracted_archives=
  45163. +extracted_serial=0
  45164. +
  45165. +opt_dry_run=false
  45166. +opt_duplicate_deps=false
  45167. +opt_silent=false
  45168. +opt_debug=:
  45169. +
  45170. +# If this variable is set in any of the actions, the command in it
  45171. +# will be execed at the end. This prevents here-documents from being
  45172. +# left over by shells.
  45173. +exec_cmd=
  45174. +
  45175. +# func_fatal_configuration arg...
  45176. +# Echo program name prefixed message to standard error, followed by
  45177. +# a configuration failure hint, and exit.
  45178. +func_fatal_configuration ()
  45179. +{
  45180. + func_error ${1+"$@"}
  45181. + func_error "See the $PACKAGE documentation for more information."
  45182. + func_fatal_error "Fatal configuration error."
  45183. +}
  45184. +
  45185. +
  45186. +# func_config
  45187. +# Display the configuration for all the tags in this script.
  45188. +func_config ()
  45189. +{
  45190. + re_begincf='^# ### BEGIN LIBTOOL'
  45191. + re_endcf='^# ### END LIBTOOL'
  45192. +
  45193. + # Default configuration.
  45194. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
  45195. +
  45196. + # Now print the configurations for the tags.
  45197. + for tagname in $taglist; do
  45198. + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
  45199. + done
  45200. +
  45201. + exit $?
  45202. +}
  45203. +
  45204. +# func_features
  45205. +# Display the features supported by this script.
  45206. +func_features ()
  45207. +{
  45208. + $ECHO "host: $host"
  45209. + if test "$build_libtool_libs" = yes; then
  45210. + $ECHO "enable shared libraries"
  45211. + else
  45212. + $ECHO "disable shared libraries"
  45213. + fi
  45214. + if test "$build_old_libs" = yes; then
  45215. + $ECHO "enable static libraries"
  45216. + else
  45217. + $ECHO "disable static libraries"
  45218. + fi
  45219. +
  45220. + exit $?
  45221. +}
  45222. +
  45223. +# func_enable_tag tagname
  45224. +# Verify that TAGNAME is valid, and either flag an error and exit, or
  45225. +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
  45226. +# variable here.
  45227. +func_enable_tag ()
  45228. +{
  45229. + # Global variable:
  45230. + tagname="$1"
  45231. +
  45232. + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
  45233. + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
  45234. + sed_extractcf="/$re_begincf/,/$re_endcf/p"
  45235. +
  45236. + # Validate tagname.
  45237. + case $tagname in
  45238. + *[!-_A-Za-z0-9,/]*)
  45239. + func_fatal_error "invalid tag name: $tagname"
  45240. + ;;
  45241. + esac
  45242. +
  45243. + # Don't test for the "default" C tag, as we know it's
  45244. + # there but not specially marked.
  45245. + case $tagname in
  45246. + CC) ;;
  45247. + *)
  45248. + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
  45249. + taglist="$taglist $tagname"
  45250. +
  45251. + # Evaluate the configuration. Be careful to quote the path
  45252. + # and the sed script, to avoid splitting on whitespace, but
  45253. + # also don't use non-portable quotes within backquotes within
  45254. + # quotes we have to do it in 2 steps:
  45255. + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
  45256. + eval "$extractedcf"
  45257. + else
  45258. + func_error "ignoring unknown tag $tagname"
  45259. + fi
  45260. + ;;
  45261. + esac
  45262. +}
  45263. +
  45264. +
  45265. +func_mode_help ()
  45266. +{
  45267. + # We need to display help for each of the modes.
  45268. + case $mode in
  45269. + "")
  45270. + # Generic help is extracted from the usage comments
  45271. + # at the start of this file.
  45272. + func_help
  45273. + ;;
  45274. +
  45275. + clean)
  45276. + $ECHO \
  45277. +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
  45278. +
  45279. +Remove files from the build directory.
  45280. +
  45281. +RM is the name of the program to use to delete files associated with each FILE
  45282. +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
  45283. +to RM.
  45284. +
  45285. +If FILE is a libtool library, object or program, all the files associated
  45286. +with it are deleted. Otherwise, only FILE itself is deleted using RM."
  45287. + ;;
  45288. +
  45289. + compile)
  45290. + $ECHO \
  45291. +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
  45292. +
  45293. +Compile a source file into a libtool library object.
  45294. +
  45295. +This mode accepts the following additional options:
  45296. +
  45297. + -o OUTPUT-FILE set the output file name to OUTPUT-FILE
  45298. + -no-suppress do not suppress compiler output for multiple passes
  45299. + -prefer-pic try to building PIC objects only
  45300. + -prefer-non-pic try to building non-PIC objects only
  45301. + -shared do not build a \`.o' file suitable for static linking
  45302. + -static only build a \`.o' file suitable for static linking
  45303. +
  45304. +COMPILE-COMMAND is a command to be used in creating a \`standard' object file
  45305. +from the given SOURCEFILE.
  45306. +
  45307. +The output file name is determined by removing the directory component from
  45308. +SOURCEFILE, then substituting the C source code suffix \`.c' with the
  45309. +library object suffix, \`.lo'."
  45310. + ;;
  45311. +
  45312. + execute)
  45313. + $ECHO \
  45314. +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
  45315. +
  45316. +Automatically set library path, then run a program.
  45317. +
  45318. +This mode accepts the following additional options:
  45319. +
  45320. + -dlopen FILE add the directory containing FILE to the library path
  45321. +
  45322. +This mode sets the library path environment variable according to \`-dlopen'
  45323. +flags.
  45324. +
  45325. +If any of the ARGS are libtool executable wrappers, then they are translated
  45326. +into their corresponding uninstalled binary, and any of their required library
  45327. +directories are added to the library path.
  45328. +
  45329. +Then, COMMAND is executed, with ARGS as arguments."
  45330. + ;;
  45331. +
  45332. + finish)
  45333. + $ECHO \
  45334. +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
  45335. +
  45336. +Complete the installation of libtool libraries.
  45337. +
  45338. +Each LIBDIR is a directory that contains libtool libraries.
  45339. +
  45340. +The commands that this mode executes may require superuser privileges. Use
  45341. +the \`--dry-run' option if you just want to see what would be executed."
  45342. + ;;
  45343. +
  45344. + install)
  45345. + $ECHO \
  45346. +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
  45347. +
  45348. +Install executables or libraries.
  45349. +
  45350. +INSTALL-COMMAND is the installation command. The first component should be
  45351. +either the \`install' or \`cp' program.
  45352. +
  45353. +The following components of INSTALL-COMMAND are treated specially:
  45354. +
  45355. + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
  45356. +
  45357. +The rest of the components are interpreted as arguments to that command (only
  45358. +BSD-compatible install options are recognized)."
  45359. + ;;
  45360. +
  45361. + link)
  45362. + $ECHO \
  45363. +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
  45364. +
  45365. +Link object files or libraries together to form another library, or to
  45366. +create an executable program.
  45367. +
  45368. +LINK-COMMAND is a command using the C compiler that you would use to create
  45369. +a program from several object files.
  45370. +
  45371. +The following components of LINK-COMMAND are treated specially:
  45372. +
  45373. + -all-static do not do any dynamic linking at all
  45374. + -avoid-version do not add a version suffix if possible
  45375. + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
  45376. + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
  45377. + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
  45378. + -export-symbols SYMFILE
  45379. + try to export only the symbols listed in SYMFILE
  45380. + -export-symbols-regex REGEX
  45381. + try to export only the symbols matching REGEX
  45382. + -LLIBDIR search LIBDIR for required installed libraries
  45383. + -lNAME OUTPUT-FILE requires the installed library libNAME
  45384. + -module build a library that can dlopened
  45385. + -no-fast-install disable the fast-install mode
  45386. + -no-install link a not-installable executable
  45387. + -no-undefined declare that a library does not refer to external symbols
  45388. + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
  45389. + -objectlist FILE Use a list of object files found in FILE to specify objects
  45390. + -precious-files-regex REGEX
  45391. + don't remove output files matching REGEX
  45392. + -release RELEASE specify package release information
  45393. + -rpath LIBDIR the created library will eventually be installed in LIBDIR
  45394. + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
  45395. + -shared only do dynamic linking of libtool libraries
  45396. + -shrext SUFFIX override the standard shared library file extension
  45397. + -static do not do any dynamic linking of uninstalled libtool libraries
  45398. + -static-libtool-libs
  45399. + do not do any dynamic linking of libtool libraries
  45400. + -version-info CURRENT[:REVISION[:AGE]]
  45401. + specify library version info [each variable defaults to 0]
  45402. + -weak LIBNAME declare that the target provides the LIBNAME interface
  45403. +
  45404. +All other options (arguments beginning with \`-') are ignored.
  45405. +
  45406. +Every other argument is treated as a filename. Files ending in \`.la' are
  45407. +treated as uninstalled libtool libraries, other files are standard or library
  45408. +object files.
  45409. +
  45410. +If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
  45411. +only library objects (\`.lo' files) may be specified, and \`-rpath' is
  45412. +required, except when creating a convenience library.
  45413. +
  45414. +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
  45415. +using \`ar' and \`ranlib', or on Windows using \`lib'.
  45416. +
  45417. +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
  45418. +is created, otherwise an executable program is created."
  45419. + ;;
  45420. +
  45421. + uninstall)
  45422. + $ECHO \
  45423. +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
  45424. +
  45425. +Remove libraries from an installation directory.
  45426. +
  45427. +RM is the name of the program to use to delete files associated with each FILE
  45428. +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
  45429. +to RM.
  45430. +
  45431. +If FILE is a libtool library, all the files associated with it are deleted.
  45432. +Otherwise, only FILE itself is deleted using RM."
  45433. + ;;
  45434. +
  45435. + *)
  45436. + func_fatal_help "invalid operation mode \`$mode'"
  45437. + ;;
  45438. + esac
  45439. +
  45440. + $ECHO
  45441. + $ECHO "Try \`$progname --help' for more information about other modes."
  45442. +
  45443. + exit $?
  45444. +}
  45445. +
  45446. +# Generated shell functions inserted here.
  45447. +
  45448. +# func_dirname file append nondir_replacement
  45449. +# Compute the dirname of FILE. If nonempty, add APPEND to the result,
  45450. +# otherwise set result to NONDIR_REPLACEMENT.
  45451. +func_dirname ()
  45452. +{
  45453. + case ${1} in
  45454. + */*) func_dirname_result="${1%/*}${2}" ;;
  45455. + * ) func_dirname_result="${3}" ;;
  45456. + esac
  45457. +}
  45458. +
  45459. +# func_basename file
  45460. +func_basename ()
  45461. +{
  45462. + func_basename_result="${1##*/}"
  45463. +}
  45464. +
  45465. +# func_dirname_and_basename file append nondir_replacement
  45466. +# perform func_basename and func_dirname in a single function
  45467. +# call:
  45468. +# dirname: Compute the dirname of FILE. If nonempty,
  45469. +# add APPEND to the result, otherwise set result
  45470. +# to NONDIR_REPLACEMENT.
  45471. +# value returned in "$func_dirname_result"
  45472. +# basename: Compute filename of FILE.
  45473. +# value retuned in "$func_basename_result"
  45474. +# Implementation must be kept synchronized with func_dirname
  45475. +# and func_basename. For efficiency, we do not delegate to
  45476. +# those functions but instead duplicate the functionality here.
  45477. +func_dirname_and_basename ()
  45478. +{
  45479. + case ${1} in
  45480. + */*) func_dirname_result="${1%/*}${2}" ;;
  45481. + * ) func_dirname_result="${3}" ;;
  45482. + esac
  45483. + func_basename_result="${1##*/}"
  45484. +}
  45485. +
  45486. +# func_stripname prefix suffix name
  45487. +# strip PREFIX and SUFFIX off of NAME.
  45488. +# PREFIX and SUFFIX must not contain globbing or regex special
  45489. +# characters, hashes, percent signs, but SUFFIX may contain a leading
  45490. +# dot (in which case that matches only a dot).
  45491. +func_stripname ()
  45492. +{
  45493. + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
  45494. + # positional parameters, so assign one to ordinary parameter first.
  45495. + func_stripname_result=${3}
  45496. + func_stripname_result=${func_stripname_result#"${1}"}
  45497. + func_stripname_result=${func_stripname_result%"${2}"}
  45498. +}
  45499. +
  45500. +# func_opt_split
  45501. +func_opt_split ()
  45502. +{
  45503. + func_opt_split_opt=${1%%=*}
  45504. + func_opt_split_arg=${1#*=}
  45505. +}
  45506. +
  45507. +# func_lo2o object
  45508. +func_lo2o ()
  45509. +{
  45510. + case ${1} in
  45511. + *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
  45512. + *) func_lo2o_result=${1} ;;
  45513. + esac
  45514. +}
  45515. +
  45516. +# func_xform libobj-or-source
  45517. +func_xform ()
  45518. +{
  45519. + func_xform_result=${1%.*}.lo
  45520. +}
  45521. +
  45522. +# func_arith arithmetic-term...
  45523. +func_arith ()
  45524. +{
  45525. + func_arith_result=$(( $* ))
  45526. +}
  45527. +
  45528. +# func_len string
  45529. +# STRING may not start with a hyphen.
  45530. +func_len ()
  45531. +{
  45532. + func_len_result=${#1}
  45533. +}
  45534. +
  45535. +
  45536. +# func_append var value
  45537. +# Append VALUE to the end of shell variable VAR.
  45538. +func_append ()
  45539. +{
  45540. + eval "$1+=\$2"
  45541. +}
  45542. +# Generated shell functions inserted here.
  45543. +
  45544. +
  45545. +# Parse options once, thoroughly. This comes as soon as possible in
  45546. +# the script to make things like `libtool --version' happen quickly.
  45547. +{
  45548. +
  45549. + # Shorthand for --mode=foo, only valid as the first argument
  45550. + case $1 in
  45551. + clean|clea|cle|cl)
  45552. + shift; set dummy --mode clean ${1+"$@"}; shift
  45553. + ;;
  45554. + compile|compil|compi|comp|com|co|c)
  45555. + shift; set dummy --mode compile ${1+"$@"}; shift
  45556. + ;;
  45557. + execute|execut|execu|exec|exe|ex|e)
  45558. + shift; set dummy --mode execute ${1+"$@"}; shift
  45559. + ;;
  45560. + finish|finis|fini|fin|fi|f)
  45561. + shift; set dummy --mode finish ${1+"$@"}; shift
  45562. + ;;
  45563. + install|instal|insta|inst|ins|in|i)
  45564. + shift; set dummy --mode install ${1+"$@"}; shift
  45565. + ;;
  45566. + link|lin|li|l)
  45567. + shift; set dummy --mode link ${1+"$@"}; shift
  45568. + ;;
  45569. + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
  45570. + shift; set dummy --mode uninstall ${1+"$@"}; shift
  45571. + ;;
  45572. + esac
  45573. +
  45574. + # Parse non-mode specific arguments:
  45575. + while test "$#" -gt 0; do
  45576. + opt="$1"
  45577. + shift
  45578. +
  45579. + case $opt in
  45580. + --config) func_config ;;
  45581. +
  45582. + --debug) preserve_args="$preserve_args $opt"
  45583. + func_echo "enabling shell trace mode"
  45584. + opt_debug='set -x'
  45585. + $opt_debug
  45586. + ;;
  45587. +
  45588. + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
  45589. + execute_dlfiles="$execute_dlfiles $1"
  45590. + shift
  45591. + ;;
  45592. +
  45593. + --dry-run | -n) opt_dry_run=: ;;
  45594. + --features) func_features ;;
  45595. + --finish) mode="finish" ;;
  45596. +
  45597. + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
  45598. + case $1 in
  45599. + # Valid mode arguments:
  45600. + clean) ;;
  45601. + compile) ;;
  45602. + execute) ;;
  45603. + finish) ;;
  45604. + install) ;;
  45605. + link) ;;
  45606. + relink) ;;
  45607. + uninstall) ;;
  45608. +
  45609. + # Catch anything else as an error
  45610. + *) func_error "invalid argument for $opt"
  45611. + exit_cmd=exit
  45612. + break
  45613. + ;;
  45614. + esac
  45615. +
  45616. + mode="$1"
  45617. + shift
  45618. + ;;
  45619. +
  45620. + --preserve-dup-deps)
  45621. + opt_duplicate_deps=: ;;
  45622. +
  45623. + --quiet|--silent) preserve_args="$preserve_args $opt"
  45624. + opt_silent=:
  45625. + ;;
  45626. +
  45627. + --verbose| -v) preserve_args="$preserve_args $opt"
  45628. + opt_silent=false
  45629. + ;;
  45630. +
  45631. + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
  45632. + preserve_args="$preserve_args $opt $1"
  45633. + func_enable_tag "$1" # tagname is set here
  45634. + shift
  45635. + ;;
  45636. +
  45637. + # Separate optargs to long options:
  45638. + -dlopen=*|--mode=*|--tag=*)
  45639. + func_opt_split "$opt"
  45640. + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
  45641. + shift
  45642. + ;;
  45643. +
  45644. + -\?|-h) func_usage ;;
  45645. + --help) opt_help=: ;;
  45646. + --version) func_version ;;
  45647. +
  45648. + -*) func_fatal_help "unrecognized option \`$opt'" ;;
  45649. +
  45650. + *) nonopt="$opt"
  45651. + break
  45652. + ;;
  45653. + esac
  45654. + done
  45655. +
  45656. + # Now that we've collected a possible --mode arg, show help if necessary
  45657. + $opt_help && func_mode_help
  45658. +
  45659. + case $host in
  45660. + *cygwin* | *mingw* | *pw32*)
  45661. + # don't eliminate duplications in $postdeps and $predeps
  45662. + opt_duplicate_compiler_generated_deps=:
  45663. + ;;
  45664. + *)
  45665. + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
  45666. + ;;
  45667. + esac
  45668. +
  45669. + # Having warned about all mis-specified options, bail out if
  45670. + # anything was wrong.
  45671. + $exit_cmd $EXIT_FAILURE
  45672. +}
  45673. +
  45674. +# func_check_version_match
  45675. +# Ensure that we are using m4 macros, and libtool script from the same
  45676. +# release of libtool.
  45677. +func_check_version_match ()
  45678. +{
  45679. + if test "$package_revision" != "$macro_revision"; then
  45680. + if test "$VERSION" != "$macro_version"; then
  45681. + if test -z "$macro_version"; then
  45682. + cat >&2 <<_LT_EOF
  45683. +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
  45684. +$progname: definition of this LT_INIT comes from an older release.
  45685. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
  45686. +$progname: and run autoconf again.
  45687. +_LT_EOF
  45688. + else
  45689. + cat >&2 <<_LT_EOF
  45690. +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
  45691. +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
  45692. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
  45693. +$progname: and run autoconf again.
  45694. +_LT_EOF
  45695. + fi
  45696. + else
  45697. + cat >&2 <<_LT_EOF
  45698. +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
  45699. +$progname: but the definition of this LT_INIT comes from revision $macro_revision.
  45700. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision
  45701. +$progname: of $PACKAGE $VERSION and run autoconf again.
  45702. +_LT_EOF
  45703. + fi
  45704. +
  45705. + exit $EXIT_MISMATCH
  45706. + fi
  45707. +}
  45708. +
  45709. +
  45710. +## ----------- ##
  45711. +## Main. ##
  45712. +## ----------- ##
  45713. +
  45714. +{
  45715. + # Sanity checks first:
  45716. + func_check_version_match
  45717. +
  45718. + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
  45719. + func_fatal_configuration "not configured to build any kind of library"
  45720. + fi
  45721. +
  45722. + test -z "$mode" && func_fatal_error "error: you must specify a MODE."
  45723. +
  45724. +
  45725. + # Darwin sucks
  45726. + eval std_shrext=\"$shrext_cmds\"
  45727. +
  45728. +
  45729. + # Only execute mode is allowed to have -dlopen flags.
  45730. + if test -n "$execute_dlfiles" && test "$mode" != execute; then
  45731. + func_error "unrecognized option \`-dlopen'"
  45732. + $ECHO "$help" 1>&2
  45733. + exit $EXIT_FAILURE
  45734. + fi
  45735. +
  45736. + # Change the help message to a mode-specific one.
  45737. + generic_help="$help"
  45738. + help="Try \`$progname --help --mode=$mode' for more information."
  45739. +}
  45740. +
  45741. +
  45742. +# func_lalib_p file
  45743. +# True iff FILE is a libtool `.la' library or `.lo' object file.
  45744. +# This function is only a basic sanity check; it will hardly flush out
  45745. +# determined imposters.
  45746. +func_lalib_p ()
  45747. +{
  45748. + $SED -e 4q "$1" 2>/dev/null \
  45749. + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
  45750. +}
  45751. +
  45752. +# func_lalib_unsafe_p file
  45753. +# True iff FILE is a libtool `.la' library or `.lo' object file.
  45754. +# This function implements the same check as func_lalib_p without
  45755. +# resorting to external programs. To this end, it redirects stdin and
  45756. +# closes it afterwards, without saving the original file descriptor.
  45757. +# As a safety measure, use it only where a negative result would be
  45758. +# fatal anyway. Works if `file' does not exist.
  45759. +func_lalib_unsafe_p ()
  45760. +{
  45761. + lalib_p=no
  45762. + if test -r "$1" && exec 5<&1 <"$1"; then
  45763. + for lalib_p_l in 1 2 3 4
  45764. + do
  45765. + read lalib_p_line
  45766. + case "$lalib_p_line" in
  45767. + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
  45768. + esac
  45769. + done
  45770. + exec 1<&5 5<&-
  45771. + fi
  45772. + test "$lalib_p" = yes
  45773. +}
  45774. +
  45775. +# func_ltwrapper_p file
  45776. +# True iff FILE is a libtool wrapper script.
  45777. +# This function is only a basic sanity check; it will hardly flush out
  45778. +# determined imposters.
  45779. +func_ltwrapper_p ()
  45780. +{
  45781. + func_lalib_p "$1"
  45782. +}
  45783. +
  45784. +
  45785. +# func_execute_cmds commands fail_cmd
  45786. +# Execute tilde-delimited COMMANDS.
  45787. +# If FAIL_CMD is given, eval that upon failure.
  45788. +# FAIL_CMD may read-access the current command in variable CMD!
  45789. +func_execute_cmds ()
  45790. +{
  45791. + $opt_debug
  45792. + save_ifs=$IFS; IFS='~'
  45793. + for cmd in $1; do
  45794. + IFS=$save_ifs
  45795. + eval cmd=\"$cmd\"
  45796. + func_show_eval "$cmd" "${2-:}"
  45797. + done
  45798. + IFS=$save_ifs
  45799. +}
  45800. +
  45801. +
  45802. +# func_source file
  45803. +# Source FILE, adding directory component if necessary.
  45804. +# Note that it is not necessary on cygwin/mingw to append a dot to
  45805. +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
  45806. +# behavior happens only for exec(3), not for open(2)! Also, sourcing
  45807. +# `FILE.' does not work on cygwin managed mounts.
  45808. +func_source ()
  45809. +{
  45810. + $opt_debug
  45811. + case $1 in
  45812. + */* | *\\*) . "$1" ;;
  45813. + *) . "./$1" ;;
  45814. + esac
  45815. +}
  45816. +
  45817. +
  45818. +# func_win32_libid arg
  45819. +# return the library type of file 'arg'
  45820. +#
  45821. +# Need a lot of goo to handle *both* DLLs and import libs
  45822. +# Has to be a shell function in order to 'eat' the argument
  45823. +# that is supplied when $file_magic_command is called.
  45824. +func_win32_libid ()
  45825. +{
  45826. + $opt_debug
  45827. + win32_libid_type="unknown"
  45828. + win32_fileres=`file -L $1 2>/dev/null`
  45829. + case $win32_fileres in
  45830. + *ar\ archive\ import\ library*) # definitely import
  45831. + win32_libid_type="x86 archive import"
  45832. + ;;
  45833. + *ar\ archive*) # could be an import, or static
  45834. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
  45835. + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
  45836. + win32_nmres=`eval $NM -f posix -A $1 |
  45837. + $SED -n -e '
  45838. + 1,100{
  45839. + / I /{
  45840. + s,.*,import,
  45841. + p
  45842. + q
  45843. + }
  45844. + }'`
  45845. + case $win32_nmres in
  45846. + import*) win32_libid_type="x86 archive import";;
  45847. + *) win32_libid_type="x86 archive static";;
  45848. + esac
  45849. + fi
  45850. + ;;
  45851. + *DLL*)
  45852. + win32_libid_type="x86 DLL"
  45853. + ;;
  45854. + *executable*) # but shell scripts are "executable" too...
  45855. + case $win32_fileres in
  45856. + *MS\ Windows\ PE\ Intel*)
  45857. + win32_libid_type="x86 DLL"
  45858. + ;;
  45859. + esac
  45860. + ;;
  45861. + esac
  45862. + $ECHO "$win32_libid_type"
  45863. +}
  45864. +
  45865. +
  45866. +
  45867. +# func_infer_tag arg
  45868. +# Infer tagged configuration to use if any are available and
  45869. +# if one wasn't chosen via the "--tag" command line option.
  45870. +# Only attempt this if the compiler in the base compile
  45871. +# command doesn't match the default compiler.
  45872. +# arg is usually of the form 'gcc ...'
  45873. +func_infer_tag ()
  45874. +{
  45875. + $opt_debug
  45876. + if test -n "$available_tags" && test -z "$tagname"; then
  45877. + CC_quoted=
  45878. + for arg in $CC; do
  45879. + func_quote_for_eval "$arg"
  45880. + CC_quoted="$CC_quoted $func_quote_for_eval_result"
  45881. + done
  45882. + case $@ in
  45883. + # Blanks in the command may have been stripped by the calling shell,
  45884. + # but not from the CC environment variable when configure was run.
  45885. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
  45886. + # Blanks at the start of $base_compile will cause this to fail
  45887. + # if we don't check for them as well.
  45888. + *)
  45889. + for z in $available_tags; do
  45890. + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
  45891. + # Evaluate the configuration.
  45892. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
  45893. + CC_quoted=
  45894. + for arg in $CC; do
  45895. + # Double-quote args containing other shell metacharacters.
  45896. + func_quote_for_eval "$arg"
  45897. + CC_quoted="$CC_quoted $func_quote_for_eval_result"
  45898. + done
  45899. + case "$@ " in
  45900. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
  45901. + # The compiler in the base compile command matches
  45902. + # the one in the tagged configuration.
  45903. + # Assume this is the tagged configuration we want.
  45904. + tagname=$z
  45905. + break
  45906. + ;;
  45907. + esac
  45908. + fi
  45909. + done
  45910. + # If $tagname still isn't set, then no tagged configuration
  45911. + # was found and let the user know that the "--tag" command
  45912. + # line option must be used.
  45913. + if test -z "$tagname"; then
  45914. + func_echo "unable to infer tagged configuration"
  45915. + func_fatal_error "specify a tag with \`--tag'"
  45916. +# else
  45917. +# func_verbose "using $tagname tagged configuration"
  45918. + fi
  45919. + ;;
  45920. + esac
  45921. + fi
  45922. +}
  45923. +
  45924. +
  45925. +
  45926. +# func_generate_dlsyms outputname originator pic_p
  45927. +# Extract symbols from dlprefiles and create ${outputname}S.o with
  45928. +# a dlpreopen symbol table.
  45929. +func_generate_dlsyms ()
  45930. +{
  45931. + $opt_debug
  45932. + my_outputname="$1"
  45933. + my_originator="$2"
  45934. + my_pic_p="${3-no}"
  45935. + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
  45936. + my_dlsyms=
  45937. +
  45938. + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  45939. + if test -n "$NM" && test -n "$global_symbol_pipe"; then
  45940. + my_dlsyms="${my_outputname}S.c"
  45941. + else
  45942. + func_error "not configured to extract global symbols from dlpreopened files"
  45943. + fi
  45944. + fi
  45945. +
  45946. + if test -n "$my_dlsyms"; then
  45947. + case $my_dlsyms in
  45948. + "") ;;
  45949. + *.c)
  45950. + # Discover the nlist of each of the dlfiles.
  45951. + nlist="$output_objdir/${my_outputname}.nm"
  45952. +
  45953. + func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
  45954. +
  45955. + # Parse the name list into a source file.
  45956. + func_echo "creating $output_objdir/$my_dlsyms"
  45957. +
  45958. + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
  45959. +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
  45960. +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
  45961. +
  45962. +#ifdef __cplusplus
  45963. +extern \"C\" {
  45964. +#endif
  45965. +
  45966. +/* External symbol declarations for the compiler. */\
  45967. +"
  45968. +
  45969. + if test "$dlself" = yes; then
  45970. + func_echo "generating symbol list for \`$output'"
  45971. +
  45972. + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
  45973. +
  45974. + # Add our own program objects to the symbol list.
  45975. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
  45976. + for progfile in $progfiles; do
  45977. + func_echo "extracting global C symbols from \`$progfile'"
  45978. + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
  45979. + done
  45980. +
  45981. + if test -n "$exclude_expsyms"; then
  45982. + $opt_dry_run || {
  45983. + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
  45984. + eval '$MV "$nlist"T "$nlist"'
  45985. + }
  45986. + fi
  45987. +
  45988. + if test -n "$export_symbols_regex"; then
  45989. + $opt_dry_run || {
  45990. + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
  45991. + eval '$MV "$nlist"T "$nlist"'
  45992. + }
  45993. + fi
  45994. +
  45995. + # Prepare the list of exported symbols
  45996. + if test -z "$export_symbols"; then
  45997. + export_symbols="$output_objdir/$outputname.exp"
  45998. + $opt_dry_run || {
  45999. + $RM $export_symbols
  46000. + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
  46001. + case $host in
  46002. + *cygwin* | *mingw* )
  46003. + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
  46004. + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
  46005. + ;;
  46006. + esac
  46007. + }
  46008. + else
  46009. + $opt_dry_run || {
  46010. + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
  46011. + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
  46012. + eval '$MV "$nlist"T "$nlist"'
  46013. + case $host in
  46014. + *cygwin | *mingw* )
  46015. + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
  46016. + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
  46017. + ;;
  46018. + esac
  46019. + }
  46020. + fi
  46021. + fi
  46022. +
  46023. + for dlprefile in $dlprefiles; do
  46024. + func_echo "extracting global C symbols from \`$dlprefile'"
  46025. + func_basename "$dlprefile"
  46026. + name="$func_basename_result"
  46027. + $opt_dry_run || {
  46028. + eval '$ECHO ": $name " >> "$nlist"'
  46029. + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
  46030. + }
  46031. + done
  46032. +
  46033. + $opt_dry_run || {
  46034. + # Make sure we have at least an empty file.
  46035. + test -f "$nlist" || : > "$nlist"
  46036. +
  46037. + if test -n "$exclude_expsyms"; then
  46038. + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
  46039. + $MV "$nlist"T "$nlist"
  46040. + fi
  46041. +
  46042. + # Try sorting and uniquifying the output.
  46043. + if $GREP -v "^: " < "$nlist" |
  46044. + if sort -k 3 </dev/null >/dev/null 2>&1; then
  46045. + sort -k 3
  46046. + else
  46047. + sort +2
  46048. + fi |
  46049. + uniq > "$nlist"S; then
  46050. + :
  46051. + else
  46052. + $GREP -v "^: " < "$nlist" > "$nlist"S
  46053. + fi
  46054. +
  46055. + if test -f "$nlist"S; then
  46056. + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
  46057. + else
  46058. + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
  46059. + fi
  46060. +
  46061. + $ECHO >> "$output_objdir/$my_dlsyms" "\
  46062. +
  46063. +/* The mapping between symbol names and symbols. */
  46064. +typedef struct {
  46065. + const char *name;
  46066. + void *address;
  46067. +} lt_dlsymlist;
  46068. +"
  46069. + case $host in
  46070. + *cygwin* | *mingw* )
  46071. + $ECHO >> "$output_objdir/$my_dlsyms" "\
  46072. +/* DATA imports from DLLs on WIN32 con't be const, because
  46073. + runtime relocations are performed -- see ld's documentation
  46074. + on pseudo-relocs. */"
  46075. + lt_dlsym_const= ;;
  46076. + *osf5*)
  46077. + echo >> "$output_objdir/$my_dlsyms" "\
  46078. +/* This system does not cope well with relocations in const data */"
  46079. + lt_dlsym_const= ;;
  46080. + *)
  46081. + lt_dlsym_const=const ;;
  46082. + esac
  46083. +
  46084. + $ECHO >> "$output_objdir/$my_dlsyms" "\
  46085. +extern $lt_dlsym_const lt_dlsymlist
  46086. +lt_${my_prefix}_LTX_preloaded_symbols[];
  46087. +$lt_dlsym_const lt_dlsymlist
  46088. +lt_${my_prefix}_LTX_preloaded_symbols[] =
  46089. +{\
  46090. + { \"$my_originator\", (void *) 0 },"
  46091. +
  46092. + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
  46093. +
  46094. + $ECHO >> "$output_objdir/$my_dlsyms" "\
  46095. + {0, (void *) 0}
  46096. +};
  46097. +
  46098. +/* This works around a problem in FreeBSD linker */
  46099. +#ifdef FREEBSD_WORKAROUND
  46100. +static const void *lt_preloaded_setup() {
  46101. + return lt_${my_prefix}_LTX_preloaded_symbols;
  46102. +}
  46103. +#endif
  46104. +
  46105. +#ifdef __cplusplus
  46106. +}
  46107. +#endif\
  46108. +"
  46109. + } # !$opt_dry_run
  46110. +
  46111. + pic_flag_for_symtable=
  46112. + case "$compile_command " in
  46113. + *" -static "*) ;;
  46114. + *)
  46115. + case $host in
  46116. + # compiling the symbol table file with pic_flag works around
  46117. + # a FreeBSD bug that causes programs to crash when -lm is
  46118. + # linked before any other PIC object. But we must not use
  46119. + # pic_flag when linking with -static. The problem exists in
  46120. + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
  46121. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
  46122. + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
  46123. + *-*-hpux*)
  46124. + pic_flag_for_symtable=" $pic_flag" ;;
  46125. + *)
  46126. + if test "X$my_pic_p" != Xno; then
  46127. + pic_flag_for_symtable=" $pic_flag"
  46128. + fi
  46129. + ;;
  46130. + esac
  46131. + ;;
  46132. + esac
  46133. + symtab_cflags=
  46134. + for arg in $LTCFLAGS; do
  46135. + case $arg in
  46136. + -pie | -fpie | -fPIE) ;;
  46137. + *) symtab_cflags="$symtab_cflags $arg" ;;
  46138. + esac
  46139. + done
  46140. +
  46141. + # Now compile the dynamic symbol file.
  46142. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
  46143. +
  46144. + # Clean up the generated files.
  46145. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
  46146. +
  46147. + # Transform the symbol file into the correct name.
  46148. + symfileobj="$output_objdir/${my_outputname}S.$objext"
  46149. + case $host in
  46150. + *cygwin* | *mingw* )
  46151. + if test -f "$output_objdir/$my_outputname.def"; then
  46152. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
  46153. + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
  46154. + else
  46155. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
  46156. + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
  46157. + fi
  46158. + ;;
  46159. + *)
  46160. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
  46161. + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
  46162. + ;;
  46163. + esac
  46164. + ;;
  46165. + *)
  46166. + func_fatal_error "unknown suffix for \`$my_dlsyms'"
  46167. + ;;
  46168. + esac
  46169. + else
  46170. + # We keep going just in case the user didn't refer to
  46171. + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
  46172. + # really was required.
  46173. +
  46174. + # Nullify the symbol file.
  46175. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
  46176. + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
  46177. + fi
  46178. +}
  46179. +
  46180. +# func_extract_an_archive dir oldlib
  46181. +func_extract_an_archive ()
  46182. +{
  46183. + $opt_debug
  46184. + f_ex_an_ar_dir="$1"; shift
  46185. + f_ex_an_ar_oldlib="$1"
  46186. + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
  46187. + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
  46188. + :
  46189. + else
  46190. + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
  46191. + fi
  46192. +}
  46193. +
  46194. +
  46195. +# func_extract_archives gentop oldlib ...
  46196. +func_extract_archives ()
  46197. +{
  46198. + $opt_debug
  46199. + my_gentop="$1"; shift
  46200. + my_oldlibs=${1+"$@"}
  46201. + my_oldobjs=""
  46202. + my_xlib=""
  46203. + my_xabs=""
  46204. + my_xdir=""
  46205. +
  46206. + for my_xlib in $my_oldlibs; do
  46207. + # Extract the objects.
  46208. + case $my_xlib in
  46209. + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
  46210. + *) my_xabs=`pwd`"/$my_xlib" ;;
  46211. + esac
  46212. + func_basename "$my_xlib"
  46213. + my_xlib="$func_basename_result"
  46214. + my_xlib_u=$my_xlib
  46215. + while :; do
  46216. + case " $extracted_archives " in
  46217. + *" $my_xlib_u "*)
  46218. + extracted_serial=`expr $extracted_serial + 1`
  46219. + my_xlib_u=lt$extracted_serial-$my_xlib ;;
  46220. + *) break ;;
  46221. + esac
  46222. + done
  46223. + extracted_archives="$extracted_archives $my_xlib_u"
  46224. + my_xdir="$my_gentop/$my_xlib_u"
  46225. +
  46226. + func_mkdir_p "$my_xdir"
  46227. +
  46228. + case $host in
  46229. + *-darwin*)
  46230. + func_echo "Extracting $my_xabs"
  46231. + # Do not bother doing anything if just a dry run
  46232. + $opt_dry_run || {
  46233. + darwin_orig_dir=`pwd`
  46234. + cd $my_xdir || exit $?
  46235. + darwin_archive=$my_xabs
  46236. + darwin_curdir=`pwd`
  46237. + darwin_base_archive=`basename $darwin_archive`
  46238. + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
  46239. + if test -n "$darwin_arches"; then
  46240. + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
  46241. + darwin_arch=
  46242. + func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
  46243. + for darwin_arch in $darwin_arches ; do
  46244. + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  46245. + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
  46246. + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  46247. + func_extract_an_archive "`pwd`" "${darwin_base_archive}"
  46248. + cd "$darwin_curdir"
  46249. + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
  46250. + done # $darwin_arches
  46251. + ## Okay now we've a bunch of thin objects, gotta fatten them up :)
  46252. + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
  46253. + darwin_file=
  46254. + darwin_files=
  46255. + for darwin_file in $darwin_filelist; do
  46256. + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
  46257. + lipo -create -output "$darwin_file" $darwin_files
  46258. + done # $darwin_filelist
  46259. + $RM -rf unfat-$$
  46260. + cd "$darwin_orig_dir"
  46261. + else
  46262. + cd $darwin_orig_dir
  46263. + func_extract_an_archive "$my_xdir" "$my_xabs"
  46264. + fi # $darwin_arches
  46265. + } # !$opt_dry_run
  46266. + ;;
  46267. + *)
  46268. + func_extract_an_archive "$my_xdir" "$my_xabs"
  46269. + ;;
  46270. + esac
  46271. + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
  46272. + done
  46273. +
  46274. + func_extract_archives_result="$my_oldobjs"
  46275. +}
  46276. +
  46277. +
  46278. +
  46279. +# func_write_libtool_object output_name pic_name nonpic_name
  46280. +# Create a libtool object file (analogous to a ".la" file),
  46281. +# but don't create it if we're doing a dry run.
  46282. +func_write_libtool_object ()
  46283. +{
  46284. + write_libobj=${1}
  46285. + if test "$build_libtool_libs" = yes; then
  46286. + write_lobj=\'${2}\'
  46287. + else
  46288. + write_lobj=none
  46289. + fi
  46290. +
  46291. + if test "$build_old_libs" = yes; then
  46292. + write_oldobj=\'${3}\'
  46293. + else
  46294. + write_oldobj=none
  46295. + fi
  46296. +
  46297. + $opt_dry_run || {
  46298. + cat >${write_libobj}T <<EOF
  46299. +# $write_libobj - a libtool object file
  46300. +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  46301. +#
  46302. +# Please DO NOT delete this file!
  46303. +# It is necessary for linking the library.
  46304. +
  46305. +# Name of the PIC object.
  46306. +pic_object=$write_lobj
  46307. +
  46308. +# Name of the non-PIC object
  46309. +non_pic_object=$write_oldobj
  46310. +
  46311. +EOF
  46312. + mv -f "${write_libobj}T" "${write_libobj}"
  46313. + }
  46314. +}
  46315. +
  46316. +# func_mode_compile arg...
  46317. +func_mode_compile ()
  46318. +{
  46319. + $opt_debug
  46320. + # Get the compilation command and the source file.
  46321. + base_compile=
  46322. + srcfile="$nonopt" # always keep a non-empty value in "srcfile"
  46323. + suppress_opt=yes
  46324. + suppress_output=
  46325. + arg_mode=normal
  46326. + libobj=
  46327. + later=
  46328. + pie_flag=
  46329. +
  46330. + for arg
  46331. + do
  46332. + case $arg_mode in
  46333. + arg )
  46334. + # do not "continue". Instead, add this to base_compile
  46335. + lastarg="$arg"
  46336. + arg_mode=normal
  46337. + ;;
  46338. +
  46339. + target )
  46340. + libobj="$arg"
  46341. + arg_mode=normal
  46342. + continue
  46343. + ;;
  46344. +
  46345. + normal )
  46346. + # Accept any command-line options.
  46347. + case $arg in
  46348. + -o)
  46349. + test -n "$libobj" && \
  46350. + func_fatal_error "you cannot specify \`-o' more than once"
  46351. + arg_mode=target
  46352. + continue
  46353. + ;;
  46354. +
  46355. + -pie | -fpie | -fPIE)
  46356. + pie_flag="$pie_flag $arg"
  46357. + continue
  46358. + ;;
  46359. +
  46360. + -shared | -static | -prefer-pic | -prefer-non-pic)
  46361. + later="$later $arg"
  46362. + continue
  46363. + ;;
  46364. +
  46365. + -no-suppress)
  46366. + suppress_opt=no
  46367. + continue
  46368. + ;;
  46369. +
  46370. + -Xcompiler)
  46371. + arg_mode=arg # the next one goes into the "base_compile" arg list
  46372. + continue # The current "srcfile" will either be retained or
  46373. + ;; # replaced later. I would guess that would be a bug.
  46374. +
  46375. + -Wc,*)
  46376. + func_stripname '-Wc,' '' "$arg"
  46377. + args=$func_stripname_result
  46378. + lastarg=
  46379. + save_ifs="$IFS"; IFS=','
  46380. + for arg in $args; do
  46381. + IFS="$save_ifs"
  46382. + func_quote_for_eval "$arg"
  46383. + lastarg="$lastarg $func_quote_for_eval_result"
  46384. + done
  46385. + IFS="$save_ifs"
  46386. + func_stripname ' ' '' "$lastarg"
  46387. + lastarg=$func_stripname_result
  46388. +
  46389. + # Add the arguments to base_compile.
  46390. + base_compile="$base_compile $lastarg"
  46391. + continue
  46392. + ;;
  46393. +
  46394. + *)
  46395. + # Accept the current argument as the source file.
  46396. + # The previous "srcfile" becomes the current argument.
  46397. + #
  46398. + lastarg="$srcfile"
  46399. + srcfile="$arg"
  46400. + ;;
  46401. + esac # case $arg
  46402. + ;;
  46403. + esac # case $arg_mode
  46404. +
  46405. + # Aesthetically quote the previous argument.
  46406. + func_quote_for_eval "$lastarg"
  46407. + base_compile="$base_compile $func_quote_for_eval_result"
  46408. + done # for arg
  46409. +
  46410. + case $arg_mode in
  46411. + arg)
  46412. + func_fatal_error "you must specify an argument for -Xcompile"
  46413. + ;;
  46414. + target)
  46415. + func_fatal_error "you must specify a target with \`-o'"
  46416. + ;;
  46417. + *)
  46418. + # Get the name of the library object.
  46419. + test -z "$libobj" && {
  46420. + func_basename "$srcfile"
  46421. + libobj="$func_basename_result"
  46422. + }
  46423. + ;;
  46424. + esac
  46425. +
  46426. + # Recognize several different file suffixes.
  46427. + # If the user specifies -o file.o, it is replaced with file.lo
  46428. + xform='[cCFSifmso]'
  46429. + case $libobj in
  46430. + *.ada) xform=ada ;;
  46431. + *.adb) xform=adb ;;
  46432. + *.ads) xform=ads ;;
  46433. + *.asm) xform=asm ;;
  46434. + *.c++) xform=c++ ;;
  46435. + *.cc) xform=cc ;;
  46436. + *.ii) xform=ii ;;
  46437. + *.class) xform=class ;;
  46438. + *.cpp) xform=cpp ;;
  46439. + *.cxx) xform=cxx ;;
  46440. + *.[fF][09]?) xform='[fF][09].' ;;
  46441. + *.for) xform=for ;;
  46442. + *.java) xform=java ;;
  46443. + *.obj) xform=obj ;;
  46444. + esac
  46445. +
  46446. + libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
  46447. +
  46448. + case $libobj in
  46449. + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
  46450. + *)
  46451. + func_fatal_error "cannot determine name of library object from \`$libobj'"
  46452. + ;;
  46453. + esac
  46454. +
  46455. + func_infer_tag $base_compile
  46456. +
  46457. + for arg in $later; do
  46458. + case $arg in
  46459. + -shared)
  46460. + test "$build_libtool_libs" != yes && \
  46461. + func_fatal_configuration "can not build a shared library"
  46462. + build_old_libs=no
  46463. + continue
  46464. + ;;
  46465. +
  46466. + -static)
  46467. + build_libtool_libs=no
  46468. + build_old_libs=yes
  46469. + continue
  46470. + ;;
  46471. +
  46472. + -prefer-pic)
  46473. + pic_mode=yes
  46474. + continue
  46475. + ;;
  46476. +
  46477. + -prefer-non-pic)
  46478. + pic_mode=no
  46479. + continue
  46480. + ;;
  46481. + esac
  46482. + done
  46483. +
  46484. + func_quote_for_eval "$libobj"
  46485. + test "X$libobj" != "X$func_quote_for_eval_result" \
  46486. + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
  46487. + && func_warning "libobj name \`$libobj' may not contain shell special characters."
  46488. + func_basename "$obj"
  46489. + objname="$func_basename_result"
  46490. + func_dirname "$obj" "/" ""
  46491. + xdir="$func_dirname_result"
  46492. + lobj=${xdir}$objdir/$objname
  46493. +
  46494. + test -z "$base_compile" && \
  46495. + func_fatal_help "you must specify a compilation command"
  46496. +
  46497. + # Delete any leftover library objects.
  46498. + if test "$build_old_libs" = yes; then
  46499. + removelist="$obj $lobj $libobj ${libobj}T"
  46500. + else
  46501. + removelist="$lobj $libobj ${libobj}T"
  46502. + fi
  46503. +
  46504. + $opt_dry_run || $RM $removelist
  46505. + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
  46506. +
  46507. + # On Cygwin there's no "real" PIC flag so we must build both object types
  46508. + case $host_os in
  46509. + cygwin* | mingw* | pw32* | os2*)
  46510. + pic_mode=default
  46511. + ;;
  46512. + esac
  46513. + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
  46514. + # non-PIC code in shared libraries is not supported
  46515. + pic_mode=default
  46516. + fi
  46517. +
  46518. + # Calculate the filename of the output object if compiler does
  46519. + # not support -o with -c
  46520. + if test "$compiler_c_o" = no; then
  46521. + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
  46522. + lockfile="$output_obj.lock"
  46523. + removelist="$removelist $output_obj $lockfile"
  46524. + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
  46525. + else
  46526. + output_obj=
  46527. + need_locks=no
  46528. + lockfile=
  46529. + fi
  46530. +
  46531. + # Lock this critical section if it is needed
  46532. + # We use this script file to make the link, it avoids creating a new file
  46533. + if test "$need_locks" = yes; then
  46534. + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
  46535. + func_echo "Waiting for $lockfile to be removed"
  46536. + sleep 2
  46537. + done
  46538. + elif test "$need_locks" = warn; then
  46539. + if test -f "$lockfile"; then
  46540. + $ECHO "\
  46541. +*** ERROR, $lockfile exists and contains:
  46542. +`cat $lockfile 2>/dev/null`
  46543. +
  46544. +This indicates that another process is trying to use the same
  46545. +temporary object file, and libtool could not work around it because
  46546. +your compiler does not support \`-c' and \`-o' together. If you
  46547. +repeat this compilation, it may succeed, by chance, but you had better
  46548. +avoid parallel builds (make -j) in this platform, or get a better
  46549. +compiler."
  46550. +
  46551. + $opt_dry_run || $RM $removelist
  46552. + exit $EXIT_FAILURE
  46553. + fi
  46554. + $ECHO "$srcfile" > "$lockfile"
  46555. + fi
  46556. +
  46557. + if test -n "$fix_srcfile_path"; then
  46558. + eval srcfile=\"$fix_srcfile_path\"
  46559. + fi
  46560. + func_quote_for_eval "$srcfile"
  46561. + qsrcfile=$func_quote_for_eval_result
  46562. +
  46563. + $opt_dry_run || $RM "$libobj" "${libobj}T"
  46564. +
  46565. + # Only build a PIC object if we are building libtool libraries.
  46566. + if test "$build_libtool_libs" = yes; then
  46567. + # Without this assignment, base_compile gets emptied.
  46568. + fbsd_hideous_sh_bug=$base_compile
  46569. +
  46570. + if test "$pic_mode" != no; then
  46571. + command="$base_compile $qsrcfile $pic_flag"
  46572. + else
  46573. + # Don't build PIC code
  46574. + command="$base_compile $qsrcfile"
  46575. + fi
  46576. +
  46577. + func_mkdir_p "$xdir$objdir"
  46578. +
  46579. + if test -z "$output_obj"; then
  46580. + # Place PIC objects in $objdir
  46581. + command="$command -o $lobj"
  46582. + fi
  46583. +
  46584. + $opt_dry_run || $RM "$lobj" "$output_obj"
  46585. +
  46586. + func_show_eval "$command" \
  46587. + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
  46588. +
  46589. + if test "$need_locks" = warn &&
  46590. + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
  46591. + $ECHO "\
  46592. +*** ERROR, $lockfile contains:
  46593. +`cat $lockfile 2>/dev/null`
  46594. +
  46595. +but it should contain:
  46596. +$srcfile
  46597. +
  46598. +This indicates that another process is trying to use the same
  46599. +temporary object file, and libtool could not work around it because
  46600. +your compiler does not support \`-c' and \`-o' together. If you
  46601. +repeat this compilation, it may succeed, by chance, but you had better
  46602. +avoid parallel builds (make -j) in this platform, or get a better
  46603. +compiler."
  46604. +
  46605. + $opt_dry_run || $RM $removelist
  46606. + exit $EXIT_FAILURE
  46607. + fi
  46608. +
  46609. + # Just move the object if needed, then go on to compile the next one
  46610. + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
  46611. + func_show_eval '$MV "$output_obj" "$lobj"' \
  46612. + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
  46613. + fi
  46614. +
  46615. + # Allow error messages only from the first compilation.
  46616. + if test "$suppress_opt" = yes; then
  46617. + suppress_output=' >/dev/null 2>&1'
  46618. + fi
  46619. + fi
  46620. +
  46621. + # Only build a position-dependent object if we build old libraries.
  46622. + if test "$build_old_libs" = yes; then
  46623. + if test "$pic_mode" != yes; then
  46624. + # Don't build PIC code
  46625. + command="$base_compile $qsrcfile$pie_flag"
  46626. + else
  46627. + command="$base_compile $qsrcfile $pic_flag"
  46628. + fi
  46629. + if test "$compiler_c_o" = yes; then
  46630. + command="$command -o $obj"
  46631. + fi
  46632. +
  46633. + # Suppress compiler output if we already did a PIC compilation.
  46634. + command="$command$suppress_output"
  46635. + $opt_dry_run || $RM "$obj" "$output_obj"
  46636. + func_show_eval "$command" \
  46637. + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
  46638. +
  46639. + if test "$need_locks" = warn &&
  46640. + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
  46641. + $ECHO "\
  46642. +*** ERROR, $lockfile contains:
  46643. +`cat $lockfile 2>/dev/null`
  46644. +
  46645. +but it should contain:
  46646. +$srcfile
  46647. +
  46648. +This indicates that another process is trying to use the same
  46649. +temporary object file, and libtool could not work around it because
  46650. +your compiler does not support \`-c' and \`-o' together. If you
  46651. +repeat this compilation, it may succeed, by chance, but you had better
  46652. +avoid parallel builds (make -j) in this platform, or get a better
  46653. +compiler."
  46654. +
  46655. + $opt_dry_run || $RM $removelist
  46656. + exit $EXIT_FAILURE
  46657. + fi
  46658. +
  46659. + # Just move the object if needed
  46660. + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
  46661. + func_show_eval '$MV "$output_obj" "$obj"' \
  46662. + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
  46663. + fi
  46664. + fi
  46665. +
  46666. + $opt_dry_run || {
  46667. + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
  46668. +
  46669. + # Unlock the critical section if it was locked
  46670. + if test "$need_locks" != no; then
  46671. + $RM "$lockfile"
  46672. + fi
  46673. + }
  46674. +
  46675. + exit $EXIT_SUCCESS
  46676. +}
  46677. +
  46678. +test "$mode" = compile && func_mode_compile ${1+"$@"}
  46679. +
  46680. +
  46681. +# func_mode_execute arg...
  46682. +func_mode_execute ()
  46683. +{
  46684. + $opt_debug
  46685. + # The first argument is the command name.
  46686. + cmd="$nonopt"
  46687. + test -z "$cmd" && \
  46688. + func_fatal_help "you must specify a COMMAND"
  46689. +
  46690. + # Handle -dlopen flags immediately.
  46691. + for file in $execute_dlfiles; do
  46692. + test -f "$file" \
  46693. + || func_fatal_help "\`$file' is not a file"
  46694. +
  46695. + dir=
  46696. + case $file in
  46697. + *.la)
  46698. + # Check to see that this really is a libtool archive.
  46699. + func_lalib_unsafe_p "$file" \
  46700. + || func_fatal_help "\`$lib' is not a valid libtool archive"
  46701. +
  46702. + # Read the libtool library.
  46703. + dlname=
  46704. + library_names=
  46705. + func_source "$file"
  46706. +
  46707. + # Skip this library if it cannot be dlopened.
  46708. + if test -z "$dlname"; then
  46709. + # Warn if it was a shared library.
  46710. + test -n "$library_names" && \
  46711. + func_warning "\`$file' was not linked with \`-export-dynamic'"
  46712. + continue
  46713. + fi
  46714. +
  46715. + func_dirname "$file" "" "."
  46716. + dir="$func_dirname_result"
  46717. +
  46718. + if test -f "$dir/$objdir/$dlname"; then
  46719. + dir="$dir/$objdir"
  46720. + else
  46721. + if test ! -f "$dir/$dlname"; then
  46722. + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
  46723. + fi
  46724. + fi
  46725. + ;;
  46726. +
  46727. + *.lo)
  46728. + # Just add the directory containing the .lo file.
  46729. + func_dirname "$file" "" "."
  46730. + dir="$func_dirname_result"
  46731. + ;;
  46732. +
  46733. + *)
  46734. + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
  46735. + continue
  46736. + ;;
  46737. + esac
  46738. +
  46739. + # Get the absolute pathname.
  46740. + absdir=`cd "$dir" && pwd`
  46741. + test -n "$absdir" && dir="$absdir"
  46742. +
  46743. + # Now add the directory to shlibpath_var.
  46744. + if eval "test -z \"\$$shlibpath_var\""; then
  46745. + eval "$shlibpath_var=\"\$dir\""
  46746. + else
  46747. + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
  46748. + fi
  46749. + done
  46750. +
  46751. + # This variable tells wrapper scripts just to set shlibpath_var
  46752. + # rather than running their programs.
  46753. + libtool_execute_magic="$magic"
  46754. +
  46755. + # Check if any of the arguments is a wrapper script.
  46756. + args=
  46757. + for file
  46758. + do
  46759. + case $file in
  46760. + -*) ;;
  46761. + *)
  46762. + # Do a test to see if this is really a libtool program.
  46763. + if func_ltwrapper_p "$file"; then
  46764. + func_source "$file"
  46765. +
  46766. + # Transform arg to wrapped name.
  46767. + file="$progdir/$program"
  46768. + fi
  46769. + ;;
  46770. + esac
  46771. + # Quote arguments (to preserve shell metacharacters).
  46772. + func_quote_for_eval "$file"
  46773. + args="$args $func_quote_for_eval_result"
  46774. + done
  46775. +
  46776. + if test "X$opt_dry_run" = Xfalse; then
  46777. + if test -n "$shlibpath_var"; then
  46778. + # Export the shlibpath_var.
  46779. + eval "export $shlibpath_var"
  46780. + fi
  46781. +
  46782. + # Restore saved environment variables
  46783. + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
  46784. + do
  46785. + eval "if test \"\${save_$lt_var+set}\" = set; then
  46786. + $lt_var=\$save_$lt_var; export $lt_var
  46787. + else
  46788. + $lt_unset $lt_var
  46789. + fi"
  46790. + done
  46791. +
  46792. + # Now prepare to actually exec the command.
  46793. + exec_cmd="\$cmd$args"
  46794. + else
  46795. + # Display what would be done.
  46796. + if test -n "$shlibpath_var"; then
  46797. + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
  46798. + $ECHO "export $shlibpath_var"
  46799. + fi
  46800. + $ECHO "$cmd$args"
  46801. + exit $EXIT_SUCCESS
  46802. + fi
  46803. +}
  46804. +
  46805. +test "$mode" = execute && func_mode_execute ${1+"$@"}
  46806. +
  46807. +
  46808. +# func_mode_finish arg...
  46809. +func_mode_finish ()
  46810. +{
  46811. + $opt_debug
  46812. + libdirs="$nonopt"
  46813. + admincmds=
  46814. +
  46815. + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
  46816. + for dir
  46817. + do
  46818. + libdirs="$libdirs $dir"
  46819. + done
  46820. +
  46821. + for libdir in $libdirs; do
  46822. + if test -n "$finish_cmds"; then
  46823. + # Do each command in the finish commands.
  46824. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
  46825. +'"$cmd"'"'
  46826. + fi
  46827. + if test -n "$finish_eval"; then
  46828. + # Do the single finish_eval.
  46829. + eval cmds=\"$finish_eval\"
  46830. + $opt_dry_run || eval "$cmds" || admincmds="$admincmds
  46831. + $cmds"
  46832. + fi
  46833. + done
  46834. + fi
  46835. +
  46836. + # Exit here if they wanted silent mode.
  46837. + $opt_silent && exit $EXIT_SUCCESS
  46838. +
  46839. + $ECHO "X----------------------------------------------------------------------" | $Xsed
  46840. + $ECHO "Libraries have been installed in:"
  46841. + for libdir in $libdirs; do
  46842. + $ECHO " $libdir"
  46843. + done
  46844. + $ECHO
  46845. + $ECHO "If you ever happen to want to link against installed libraries"
  46846. + $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
  46847. + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
  46848. + $ECHO "flag during linking and do at least one of the following:"
  46849. + if test -n "$shlibpath_var"; then
  46850. + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
  46851. + $ECHO " during execution"
  46852. + fi
  46853. + if test -n "$runpath_var"; then
  46854. + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
  46855. + $ECHO " during linking"
  46856. + fi
  46857. + if test -n "$hardcode_libdir_flag_spec"; then
  46858. + libdir=LIBDIR
  46859. + eval flag=\"$hardcode_libdir_flag_spec\"
  46860. +
  46861. + $ECHO " - use the \`$flag' linker flag"
  46862. + fi
  46863. + if test -n "$admincmds"; then
  46864. + $ECHO " - have your system administrator run these commands:$admincmds"
  46865. + fi
  46866. + if test -f /etc/ld.so.conf; then
  46867. + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
  46868. + fi
  46869. + $ECHO
  46870. +
  46871. + $ECHO "See any operating system documentation about shared libraries for"
  46872. + case $host in
  46873. + solaris2.[6789]|solaris2.1[0-9])
  46874. + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
  46875. + $ECHO "pages."
  46876. + ;;
  46877. + *)
  46878. + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
  46879. + ;;
  46880. + esac
  46881. + $ECHO "X----------------------------------------------------------------------" | $Xsed
  46882. + exit $EXIT_SUCCESS
  46883. +}
  46884. +
  46885. +test "$mode" = finish && func_mode_finish ${1+"$@"}
  46886. +
  46887. +
  46888. +# func_mode_install arg...
  46889. +func_mode_install ()
  46890. +{
  46891. + $opt_debug
  46892. + # There may be an optional sh(1) argument at the beginning of
  46893. + # install_prog (especially on Windows NT).
  46894. + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
  46895. + # Allow the use of GNU shtool's install command.
  46896. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
  46897. + # Aesthetically quote it.
  46898. + func_quote_for_eval "$nonopt"
  46899. + install_prog="$func_quote_for_eval_result "
  46900. + arg=$1
  46901. + shift
  46902. + else
  46903. + install_prog=
  46904. + arg=$nonopt
  46905. + fi
  46906. +
  46907. + # The real first argument should be the name of the installation program.
  46908. + # Aesthetically quote it.
  46909. + func_quote_for_eval "$arg"
  46910. + install_prog="$install_prog$func_quote_for_eval_result"
  46911. +
  46912. + # We need to accept at least all the BSD install flags.
  46913. + dest=
  46914. + files=
  46915. + opts=
  46916. + prev=
  46917. + install_type=
  46918. + isdir=no
  46919. + stripme=
  46920. + for arg
  46921. + do
  46922. + if test -n "$dest"; then
  46923. + files="$files $dest"
  46924. + dest=$arg
  46925. + continue
  46926. + fi
  46927. +
  46928. + case $arg in
  46929. + -d) isdir=yes ;;
  46930. + -f)
  46931. + case " $install_prog " in
  46932. + *[\\\ /]cp\ *) ;;
  46933. + *) prev=$arg ;;
  46934. + esac
  46935. + ;;
  46936. + -g | -m | -o)
  46937. + prev=$arg
  46938. + ;;
  46939. + -s)
  46940. + stripme=" -s"
  46941. + continue
  46942. + ;;
  46943. + -*)
  46944. + ;;
  46945. + *)
  46946. + # If the previous option needed an argument, then skip it.
  46947. + if test -n "$prev"; then
  46948. + prev=
  46949. + else
  46950. + dest=$arg
  46951. + continue
  46952. + fi
  46953. + ;;
  46954. + esac
  46955. +
  46956. + # Aesthetically quote the argument.
  46957. + func_quote_for_eval "$arg"
  46958. + install_prog="$install_prog $func_quote_for_eval_result"
  46959. + done
  46960. +
  46961. + test -z "$install_prog" && \
  46962. + func_fatal_help "you must specify an install program"
  46963. +
  46964. + test -n "$prev" && \
  46965. + func_fatal_help "the \`$prev' option requires an argument"
  46966. +
  46967. + if test -z "$files"; then
  46968. + if test -z "$dest"; then
  46969. + func_fatal_help "no file or destination specified"
  46970. + else
  46971. + func_fatal_help "you must specify a destination"
  46972. + fi
  46973. + fi
  46974. +
  46975. + # Strip any trailing slash from the destination.
  46976. + func_stripname '' '/' "$dest"
  46977. + dest=$func_stripname_result
  46978. +
  46979. + # Check to see that the destination is a directory.
  46980. + test -d "$dest" && isdir=yes
  46981. + if test "$isdir" = yes; then
  46982. + destdir="$dest"
  46983. + destname=
  46984. + else
  46985. + func_dirname "$dest" "" "."
  46986. + destdir="$func_dirname_result"
  46987. + func_basename "$dest"
  46988. + destname="$func_basename_result"
  46989. +
  46990. + # Not a directory, so check to see that there is only one file specified.
  46991. + set dummy $files; shift
  46992. + test "$#" -gt 1 && \
  46993. + func_fatal_help "\`$dest' is not a directory"
  46994. + fi
  46995. + case $destdir in
  46996. + [\\/]* | [A-Za-z]:[\\/]*) ;;
  46997. + *)
  46998. + for file in $files; do
  46999. + case $file in
  47000. + *.lo) ;;
  47001. + *)
  47002. + func_fatal_help "\`$destdir' must be an absolute directory name"
  47003. + ;;
  47004. + esac
  47005. + done
  47006. + ;;
  47007. + esac
  47008. +
  47009. + # This variable tells wrapper scripts just to set variables rather
  47010. + # than running their programs.
  47011. + libtool_install_magic="$magic"
  47012. +
  47013. + staticlibs=
  47014. + future_libdirs=
  47015. + current_libdirs=
  47016. + for file in $files; do
  47017. +
  47018. + # Do each installation.
  47019. + case $file in
  47020. + *.$libext)
  47021. + # Do the static libraries later.
  47022. + staticlibs="$staticlibs $file"
  47023. + ;;
  47024. +
  47025. + *.la)
  47026. + # Check to see that this really is a libtool archive.
  47027. + func_lalib_unsafe_p "$file" \
  47028. + || func_fatal_help "\`$file' is not a valid libtool archive"
  47029. +
  47030. + library_names=
  47031. + old_library=
  47032. + relink_command=
  47033. + func_source "$file"
  47034. +
  47035. + # Add the libdir to current_libdirs if it is the destination.
  47036. + if test "X$destdir" = "X$libdir"; then
  47037. + case "$current_libdirs " in
  47038. + *" $libdir "*) ;;
  47039. + *) current_libdirs="$current_libdirs $libdir" ;;
  47040. + esac
  47041. + else
  47042. + # Note the libdir as a future libdir.
  47043. + case "$future_libdirs " in
  47044. + *" $libdir "*) ;;
  47045. + *) future_libdirs="$future_libdirs $libdir" ;;
  47046. + esac
  47047. + fi
  47048. +
  47049. + func_dirname "$file" "/" ""
  47050. + dir="$func_dirname_result"
  47051. + dir="$dir$objdir"
  47052. +
  47053. + if test -n "$relink_command"; then
  47054. + # Determine the prefix the user has applied to our future dir.
  47055. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
  47056. +
  47057. + # Don't allow the user to place us outside of our expected
  47058. + # location b/c this prevents finding dependent libraries that
  47059. + # are installed to the same prefix.
  47060. + # At present, this check doesn't affect windows .dll's that
  47061. + # are installed into $libdir/../bin (currently, that works fine)
  47062. + # but it's something to keep an eye on.
  47063. + test "$inst_prefix_dir" = "$destdir" && \
  47064. + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
  47065. +
  47066. + if test -n "$inst_prefix_dir"; then
  47067. + # Stick the inst_prefix_dir data into the link command.
  47068. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
  47069. + else
  47070. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
  47071. + fi
  47072. +
  47073. + func_warning "relinking \`$file'"
  47074. + func_show_eval "$relink_command" \
  47075. + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
  47076. + fi
  47077. +
  47078. + # See the names of the shared library.
  47079. + set dummy $library_names; shift
  47080. + if test -n "$1"; then
  47081. + realname="$1"
  47082. + shift
  47083. +
  47084. + srcname="$realname"
  47085. + test -n "$relink_command" && srcname="$realname"T
  47086. +
  47087. + # Install the shared library and build the symlinks.
  47088. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
  47089. + 'exit $?'
  47090. + tstripme="$stripme"
  47091. + case $host_os in
  47092. + cygwin* | mingw* | pw32*)
  47093. + case $realname in
  47094. + *.dll.a)
  47095. + tstripme=""
  47096. + ;;
  47097. + esac
  47098. + ;;
  47099. + esac
  47100. + if test -n "$tstripme" && test -n "$striplib"; then
  47101. + func_show_eval "$striplib $destdir/$realname" 'exit $?'
  47102. + fi
  47103. +
  47104. + if test "$#" -gt 0; then
  47105. + # Delete the old symlinks, and create new ones.
  47106. + # Try `ln -sf' first, because the `ln' binary might depend on
  47107. + # the symlink we replace! Solaris /bin/ln does not understand -f,
  47108. + # so we also need to try rm && ln -s.
  47109. + for linkname
  47110. + do
  47111. + test "$linkname" != "$realname" \
  47112. + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
  47113. + done
  47114. + fi
  47115. +
  47116. + # Do each command in the postinstall commands.
  47117. + lib="$destdir/$realname"
  47118. + func_execute_cmds "$postinstall_cmds" 'exit $?'
  47119. + fi
  47120. +
  47121. + # Install the pseudo-library for information purposes.
  47122. + func_basename "$file"
  47123. + name="$func_basename_result"
  47124. + instname="$dir/$name"i
  47125. + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
  47126. +
  47127. + # Maybe install the static library, too.
  47128. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
  47129. + ;;
  47130. +
  47131. + *.lo)
  47132. + # Install (i.e. copy) a libtool object.
  47133. +
  47134. + # Figure out destination file name, if it wasn't already specified.
  47135. + if test -n "$destname"; then
  47136. + destfile="$destdir/$destname"
  47137. + else
  47138. + func_basename "$file"
  47139. + destfile="$func_basename_result"
  47140. + destfile="$destdir/$destfile"
  47141. + fi
  47142. +
  47143. + # Deduce the name of the destination old-style object file.
  47144. + case $destfile in
  47145. + *.lo)
  47146. + func_lo2o "$destfile"
  47147. + staticdest=$func_lo2o_result
  47148. + ;;
  47149. + *.$objext)
  47150. + staticdest="$destfile"
  47151. + destfile=
  47152. + ;;
  47153. + *)
  47154. + func_fatal_help "cannot copy a libtool object to \`$destfile'"
  47155. + ;;
  47156. + esac
  47157. +
  47158. + # Install the libtool object if requested.
  47159. + test -n "$destfile" && \
  47160. + func_show_eval "$install_prog $file $destfile" 'exit $?'
  47161. +
  47162. + # Install the old object if enabled.
  47163. + if test "$build_old_libs" = yes; then
  47164. + # Deduce the name of the old-style object file.
  47165. + func_lo2o "$file"
  47166. + staticobj=$func_lo2o_result
  47167. + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
  47168. + fi
  47169. + exit $EXIT_SUCCESS
  47170. + ;;
  47171. +
  47172. + *)
  47173. + # Figure out destination file name, if it wasn't already specified.
  47174. + if test -n "$destname"; then
  47175. + destfile="$destdir/$destname"
  47176. + else
  47177. + func_basename "$file"
  47178. + destfile="$func_basename_result"
  47179. + destfile="$destdir/$destfile"
  47180. + fi
  47181. +
  47182. + # If the file is missing, and there is a .exe on the end, strip it
  47183. + # because it is most likely a libtool script we actually want to
  47184. + # install
  47185. + stripped_ext=""
  47186. + case $file in
  47187. + *.exe)
  47188. + if test ! -f "$file"; then
  47189. + func_stripname '' '.exe' "$file"
  47190. + file=$func_stripname_result
  47191. + stripped_ext=".exe"
  47192. + fi
  47193. + ;;
  47194. + esac
  47195. +
  47196. + # Do a test to see if this is really a libtool program.
  47197. + case $host in
  47198. + *cygwin*|*mingw*)
  47199. + func_stripname '' '.exe' "$file"
  47200. + wrapper=$func_stripname_result
  47201. + ;;
  47202. + *)
  47203. + wrapper=$file
  47204. + ;;
  47205. + esac
  47206. + if func_ltwrapper_p "$wrapper"; then
  47207. + notinst_deplibs=
  47208. + relink_command=
  47209. +
  47210. + func_source "$wrapper"
  47211. +
  47212. + # Check the variables that should have been set.
  47213. + test -z "$generated_by_libtool_version" && \
  47214. + func_fatal_error "invalid libtool wrapper script \`$wrapper'"
  47215. +
  47216. + finalize=yes
  47217. + for lib in $notinst_deplibs; do
  47218. + # Check to see that each library is installed.
  47219. + libdir=
  47220. + if test -f "$lib"; then
  47221. + func_source "$lib"
  47222. + fi
  47223. + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
  47224. + if test -n "$libdir" && test ! -f "$libfile"; then
  47225. + func_warning "\`$lib' has not been installed in \`$libdir'"
  47226. + finalize=no
  47227. + fi
  47228. + done
  47229. +
  47230. + relink_command=
  47231. + func_source "$wrapper"
  47232. +
  47233. + outputname=
  47234. + if test "$fast_install" = no && test -n "$relink_command"; then
  47235. + $opt_dry_run || {
  47236. + if test "$finalize" = yes; then
  47237. + tmpdir=`func_mktempdir`
  47238. + func_basename "$file$stripped_ext"
  47239. + file="$func_basename_result"
  47240. + outputname="$tmpdir/$file"
  47241. + # Replace the output file specification.
  47242. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
  47243. +
  47244. + $opt_silent || {
  47245. + func_quote_for_expand "$relink_command"
  47246. + eval "func_echo $func_quote_for_expand_result"
  47247. + }
  47248. + if eval "$relink_command"; then :
  47249. + else
  47250. + func_error "error: relink \`$file' with the above command before installing it"
  47251. + $opt_dry_run || ${RM}r "$tmpdir"
  47252. + continue
  47253. + fi
  47254. + file="$outputname"
  47255. + else
  47256. + func_warning "cannot relink \`$file'"
  47257. + fi
  47258. + }
  47259. + else
  47260. + # Install the binary that we compiled earlier.
  47261. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
  47262. + fi
  47263. + fi
  47264. +
  47265. + # remove .exe since cygwin /usr/bin/install will append another
  47266. + # one anyway
  47267. + case $install_prog,$host in
  47268. + */usr/bin/install*,*cygwin*)
  47269. + case $file:$destfile in
  47270. + *.exe:*.exe)
  47271. + # this is ok
  47272. + ;;
  47273. + *.exe:*)
  47274. + destfile=$destfile.exe
  47275. + ;;
  47276. + *:*.exe)
  47277. + func_stripname '' '.exe' "$destfile"
  47278. + destfile=$func_stripname_result
  47279. + ;;
  47280. + esac
  47281. + ;;
  47282. + esac
  47283. + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
  47284. + $opt_dry_run || if test -n "$outputname"; then
  47285. + ${RM}r "$tmpdir"
  47286. + fi
  47287. + ;;
  47288. + esac
  47289. + done
  47290. +
  47291. + for file in $staticlibs; do
  47292. + func_basename "$file"
  47293. + name="$func_basename_result"
  47294. +
  47295. + # Set up the ranlib parameters.
  47296. + oldlib="$destdir/$name"
  47297. +
  47298. + func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
  47299. +
  47300. + if test -n "$stripme" && test -n "$old_striplib"; then
  47301. + func_show_eval "$old_striplib $oldlib" 'exit $?'
  47302. + fi
  47303. +
  47304. + # Do each command in the postinstall commands.
  47305. + func_execute_cmds "$old_postinstall_cmds" 'exit $?'
  47306. + done
  47307. +
  47308. + test -n "$future_libdirs" && \
  47309. + func_warning "remember to run \`$progname --finish$future_libdirs'"
  47310. +
  47311. + if test -n "$current_libdirs"; then
  47312. + # Maybe just do a dry run.
  47313. + $opt_dry_run && current_libdirs=" -n$current_libdirs"
  47314. + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
  47315. + else
  47316. + exit $EXIT_SUCCESS
  47317. + fi
  47318. +}
  47319. +
  47320. +test "$mode" = install && func_mode_install ${1+"$@"}
  47321. +
  47322. +
  47323. +# func_mode_link arg...
  47324. +func_mode_link ()
  47325. +{
  47326. + $opt_debug
  47327. + case $host in
  47328. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
  47329. + # It is impossible to link a dll without this setting, and
  47330. + # we shouldn't force the makefile maintainer to figure out
  47331. + # which system we are compiling for in order to pass an extra
  47332. + # flag for every libtool invocation.
  47333. + # allow_undefined=no
  47334. +
  47335. + # FIXME: Unfortunately, there are problems with the above when trying
  47336. + # to make a dll which has undefined symbols, in which case not
  47337. + # even a static library is built. For now, we need to specify
  47338. + # -no-undefined on the libtool link line when we can be certain
  47339. + # that all symbols are satisfied, otherwise we get a static library.
  47340. + allow_undefined=yes
  47341. + ;;
  47342. + *)
  47343. + allow_undefined=yes
  47344. + ;;
  47345. + esac
  47346. + libtool_args=$nonopt
  47347. + base_compile="$nonopt $@"
  47348. + compile_command=$nonopt
  47349. + finalize_command=$nonopt
  47350. +
  47351. + compile_rpath=
  47352. + finalize_rpath=
  47353. + compile_shlibpath=
  47354. + finalize_shlibpath=
  47355. + convenience=
  47356. + old_convenience=
  47357. + deplibs=
  47358. + old_deplibs=
  47359. + compiler_flags=
  47360. + linker_flags=
  47361. + dllsearchpath=
  47362. + lib_search_path=`pwd`
  47363. + inst_prefix_dir=
  47364. + new_inherited_linker_flags=
  47365. +
  47366. + avoid_version=no
  47367. + dlfiles=
  47368. + dlprefiles=
  47369. + dlself=no
  47370. + export_dynamic=no
  47371. + export_symbols=
  47372. + export_symbols_regex=
  47373. + generated=
  47374. + libobjs=
  47375. + ltlibs=
  47376. + module=no
  47377. + no_install=no
  47378. + objs=
  47379. + non_pic_objects=
  47380. + precious_files_regex=
  47381. + prefer_static_libs=no
  47382. + preload=no
  47383. + prev=
  47384. + prevarg=
  47385. + release=
  47386. + rpath=
  47387. + xrpath=
  47388. + perm_rpath=
  47389. + temp_rpath=
  47390. + thread_safe=no
  47391. + vinfo=
  47392. + vinfo_number=no
  47393. + weak_libs=
  47394. + single_module="${wl}-single_module"
  47395. + func_infer_tag $base_compile
  47396. +
  47397. + # We need to know -static, to get the right output filenames.
  47398. + for arg
  47399. + do
  47400. + case $arg in
  47401. + -shared)
  47402. + test "$build_libtool_libs" != yes && \
  47403. + func_fatal_configuration "can not build a shared library"
  47404. + build_old_libs=no
  47405. + break
  47406. + ;;
  47407. + -all-static | -static | -static-libtool-libs)
  47408. + case $arg in
  47409. + -all-static)
  47410. + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
  47411. + func_warning "complete static linking is impossible in this configuration"
  47412. + fi
  47413. + if test -n "$link_static_flag"; then
  47414. + dlopen_self=$dlopen_self_static
  47415. + # See comment for -static flag below, for more details.
  47416. + func_append compile_command " $link_static_flag"
  47417. + func_append finalize_command " $link_static_flag"
  47418. + fi
  47419. + prefer_static_libs=yes
  47420. + ;;
  47421. + -static)
  47422. + if test -z "$pic_flag" && test -n "$link_static_flag"; then
  47423. + dlopen_self=$dlopen_self_static
  47424. + fi
  47425. + prefer_static_libs=built
  47426. + ;;
  47427. + -static-libtool-libs)
  47428. + if test -z "$pic_flag" && test -n "$link_static_flag"; then
  47429. + dlopen_self=$dlopen_self_static
  47430. + fi
  47431. + prefer_static_libs=yes
  47432. + ;;
  47433. + esac
  47434. + build_libtool_libs=no
  47435. + build_old_libs=yes
  47436. + break
  47437. + ;;
  47438. + esac
  47439. + done
  47440. +
  47441. + # See if our shared archives depend on static archives.
  47442. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes
  47443. +
  47444. + # Go through the arguments, transforming them on the way.
  47445. + while test "$#" -gt 0; do
  47446. + arg="$1"
  47447. + shift
  47448. + func_quote_for_eval "$arg"
  47449. + qarg=$func_quote_for_eval_unquoted_result
  47450. + func_append libtool_args " $func_quote_for_eval_result"
  47451. +
  47452. + # If the previous option needs an argument, assign it.
  47453. + if test -n "$prev"; then
  47454. + case $prev in
  47455. + output)
  47456. + func_append compile_command " @OUTPUT@"
  47457. + func_append finalize_command " @OUTPUT@"
  47458. + ;;
  47459. + esac
  47460. +
  47461. + case $prev in
  47462. + dlfiles|dlprefiles)
  47463. + if test "$preload" = no; then
  47464. + # Add the symbol object into the linking commands.
  47465. + func_append compile_command " @SYMFILE@"
  47466. + func_append finalize_command " @SYMFILE@"
  47467. + preload=yes
  47468. + fi
  47469. + case $arg in
  47470. + *.la | *.lo) ;; # We handle these cases below.
  47471. + force)
  47472. + if test "$dlself" = no; then
  47473. + dlself=needless
  47474. + export_dynamic=yes
  47475. + fi
  47476. + prev=
  47477. + continue
  47478. + ;;
  47479. + self)
  47480. + if test "$prev" = dlprefiles; then
  47481. + dlself=yes
  47482. + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
  47483. + dlself=yes
  47484. + else
  47485. + dlself=needless
  47486. + export_dynamic=yes
  47487. + fi
  47488. + prev=
  47489. + continue
  47490. + ;;
  47491. + *)
  47492. + if test "$prev" = dlfiles; then
  47493. + dlfiles="$dlfiles $arg"
  47494. + else
  47495. + dlprefiles="$dlprefiles $arg"
  47496. + fi
  47497. + prev=
  47498. + continue
  47499. + ;;
  47500. + esac
  47501. + ;;
  47502. + expsyms)
  47503. + export_symbols="$arg"
  47504. + test -f "$arg" \
  47505. + || func_fatal_error "symbol file \`$arg' does not exist"
  47506. + prev=
  47507. + continue
  47508. + ;;
  47509. + expsyms_regex)
  47510. + export_symbols_regex="$arg"
  47511. + prev=
  47512. + continue
  47513. + ;;
  47514. + framework)
  47515. + case $host in
  47516. + *-*-darwin*)
  47517. + case "$deplibs " in
  47518. + *" $qarg.ltframework "*) ;;
  47519. + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
  47520. + ;;
  47521. + esac
  47522. + ;;
  47523. + esac
  47524. + prev=
  47525. + continue
  47526. + ;;
  47527. + inst_prefix)
  47528. + inst_prefix_dir="$arg"
  47529. + prev=
  47530. + continue
  47531. + ;;
  47532. + objectlist)
  47533. + if test -f "$arg"; then
  47534. + save_arg=$arg
  47535. + moreargs=
  47536. + for fil in `cat "$save_arg"`
  47537. + do
  47538. +# moreargs="$moreargs $fil"
  47539. + arg=$fil
  47540. + # A libtool-controlled object.
  47541. +
  47542. + # Check to see that this really is a libtool object.
  47543. + if func_lalib_unsafe_p "$arg"; then
  47544. + pic_object=
  47545. + non_pic_object=
  47546. +
  47547. + # Read the .lo file
  47548. + func_source "$arg"
  47549. +
  47550. + if test -z "$pic_object" ||
  47551. + test -z "$non_pic_object" ||
  47552. + test "$pic_object" = none &&
  47553. + test "$non_pic_object" = none; then
  47554. + func_fatal_error "cannot find name of object for \`$arg'"
  47555. + fi
  47556. +
  47557. + # Extract subdirectory from the argument.
  47558. + func_dirname "$arg" "/" ""
  47559. + xdir="$func_dirname_result"
  47560. +
  47561. + if test "$pic_object" != none; then
  47562. + # Prepend the subdirectory the object is found in.
  47563. + pic_object="$xdir$pic_object"
  47564. +
  47565. + if test "$prev" = dlfiles; then
  47566. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
  47567. + dlfiles="$dlfiles $pic_object"
  47568. + prev=
  47569. + continue
  47570. + else
  47571. + # If libtool objects are unsupported, then we need to preload.
  47572. + prev=dlprefiles
  47573. + fi
  47574. + fi
  47575. +
  47576. + # CHECK ME: I think I busted this. -Ossama
  47577. + if test "$prev" = dlprefiles; then
  47578. + # Preload the old-style object.
  47579. + dlprefiles="$dlprefiles $pic_object"
  47580. + prev=
  47581. + fi
  47582. +
  47583. + # A PIC object.
  47584. + func_append libobjs " $pic_object"
  47585. + arg="$pic_object"
  47586. + fi
  47587. +
  47588. + # Non-PIC object.
  47589. + if test "$non_pic_object" != none; then
  47590. + # Prepend the subdirectory the object is found in.
  47591. + non_pic_object="$xdir$non_pic_object"
  47592. +
  47593. + # A standard non-PIC object
  47594. + func_append non_pic_objects " $non_pic_object"
  47595. + if test -z "$pic_object" || test "$pic_object" = none ; then
  47596. + arg="$non_pic_object"
  47597. + fi
  47598. + else
  47599. + # If the PIC object exists, use it instead.
  47600. + # $xdir was prepended to $pic_object above.
  47601. + non_pic_object="$pic_object"
  47602. + func_append non_pic_objects " $non_pic_object"
  47603. + fi
  47604. + else
  47605. + # Only an error if not doing a dry-run.
  47606. + if $opt_dry_run; then
  47607. + # Extract subdirectory from the argument.
  47608. + func_dirname "$arg" "/" ""
  47609. + xdir="$func_dirname_result"
  47610. +
  47611. + func_lo2o "$arg"
  47612. + pic_object=$xdir$objdir/$func_lo2o_result
  47613. + non_pic_object=$xdir$func_lo2o_result
  47614. + func_append libobjs " $pic_object"
  47615. + func_append non_pic_objects " $non_pic_object"
  47616. + else
  47617. + func_fatal_error "\`$arg' is not a valid libtool object"
  47618. + fi
  47619. + fi
  47620. + done
  47621. + else
  47622. + func_fatal_error "link input file \`$arg' does not exist"
  47623. + fi
  47624. + arg=$save_arg
  47625. + prev=
  47626. + continue
  47627. + ;;
  47628. + precious_regex)
  47629. + precious_files_regex="$arg"
  47630. + prev=
  47631. + continue
  47632. + ;;
  47633. + release)
  47634. + release="-$arg"
  47635. + prev=
  47636. + continue
  47637. + ;;
  47638. + rpath | xrpath)
  47639. + # We need an absolute path.
  47640. + case $arg in
  47641. + [\\/]* | [A-Za-z]:[\\/]*) ;;
  47642. + *)
  47643. + func_fatal_error "only absolute run-paths are allowed"
  47644. + ;;
  47645. + esac
  47646. + if test "$prev" = rpath; then
  47647. + case "$rpath " in
  47648. + *" $arg "*) ;;
  47649. + *) rpath="$rpath $arg" ;;
  47650. + esac
  47651. + else
  47652. + case "$xrpath " in
  47653. + *" $arg "*) ;;
  47654. + *) xrpath="$xrpath $arg" ;;
  47655. + esac
  47656. + fi
  47657. + prev=
  47658. + continue
  47659. + ;;
  47660. + shrext)
  47661. + shrext_cmds="$arg"
  47662. + prev=
  47663. + continue
  47664. + ;;
  47665. + weak)
  47666. + weak_libs="$weak_libs $arg"
  47667. + prev=
  47668. + continue
  47669. + ;;
  47670. + xcclinker)
  47671. + linker_flags="$linker_flags $qarg"
  47672. + compiler_flags="$compiler_flags $qarg"
  47673. + prev=
  47674. + func_append compile_command " $qarg"
  47675. + func_append finalize_command " $qarg"
  47676. + continue
  47677. + ;;
  47678. + xcompiler)
  47679. + compiler_flags="$compiler_flags $qarg"
  47680. + prev=
  47681. + func_append compile_command " $qarg"
  47682. + func_append finalize_command " $qarg"
  47683. + continue
  47684. + ;;
  47685. + xlinker)
  47686. + linker_flags="$linker_flags $qarg"
  47687. + compiler_flags="$compiler_flags $wl$qarg"
  47688. + prev=
  47689. + func_append compile_command " $wl$qarg"
  47690. + func_append finalize_command " $wl$qarg"
  47691. + continue
  47692. + ;;
  47693. + *)
  47694. + eval "$prev=\"\$arg\""
  47695. + prev=
  47696. + continue
  47697. + ;;
  47698. + esac
  47699. + fi # test -n "$prev"
  47700. +
  47701. + prevarg="$arg"
  47702. +
  47703. + case $arg in
  47704. + -all-static)
  47705. + # The effects of -all-static are defined in a previous loop.
  47706. + continue
  47707. + ;;
  47708. +
  47709. + -allow-undefined)
  47710. + # FIXME: remove this flag sometime in the future.
  47711. + func_fatal_error "\`-allow-undefined' must not be used because it is the default"
  47712. + ;;
  47713. +
  47714. + -avoid-version)
  47715. + avoid_version=yes
  47716. + continue
  47717. + ;;
  47718. +
  47719. + -dlopen)
  47720. + prev=dlfiles
  47721. + continue
  47722. + ;;
  47723. +
  47724. + -dlpreopen)
  47725. + prev=dlprefiles
  47726. + continue
  47727. + ;;
  47728. +
  47729. + -export-dynamic)
  47730. + export_dynamic=yes
  47731. + continue
  47732. + ;;
  47733. +
  47734. + -export-symbols | -export-symbols-regex)
  47735. + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
  47736. + func_fatal_error "more than one -exported-symbols argument is not allowed"
  47737. + fi
  47738. + if test "X$arg" = "X-export-symbols"; then
  47739. + prev=expsyms
  47740. + else
  47741. + prev=expsyms_regex
  47742. + fi
  47743. + continue
  47744. + ;;
  47745. +
  47746. + -framework)
  47747. + prev=framework
  47748. + continue
  47749. + ;;
  47750. +
  47751. + -inst-prefix-dir)
  47752. + prev=inst_prefix
  47753. + continue
  47754. + ;;
  47755. +
  47756. + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
  47757. + # so, if we see these flags be careful not to treat them like -L
  47758. + -L[A-Z][A-Z]*:*)
  47759. + case $with_gcc/$host in
  47760. + no/*-*-irix* | /*-*-irix*)
  47761. + func_append compile_command " $arg"
  47762. + func_append finalize_command " $arg"
  47763. + ;;
  47764. + esac
  47765. + continue
  47766. + ;;
  47767. +
  47768. + -L*)
  47769. + func_stripname '-L' '' "$arg"
  47770. + dir=$func_stripname_result
  47771. + # We need an absolute path.
  47772. + case $dir in
  47773. + [\\/]* | [A-Za-z]:[\\/]*) ;;
  47774. + *)
  47775. + absdir=`cd "$dir" && pwd`
  47776. + test -z "$absdir" && \
  47777. + func_fatal_error "cannot determine absolute directory name of \`$dir'"
  47778. + dir="$absdir"
  47779. + ;;
  47780. + esac
  47781. + case "$deplibs " in
  47782. + *" -L$dir "*) ;;
  47783. + *)
  47784. + deplibs="$deplibs -L$dir"
  47785. + lib_search_path="$lib_search_path $dir"
  47786. + ;;
  47787. + esac
  47788. + case $host in
  47789. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
  47790. + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
  47791. + case :$dllsearchpath: in
  47792. + *":$dir:"*) ;;
  47793. + *) dllsearchpath="$dllsearchpath:$dir";;
  47794. + esac
  47795. + case :$dllsearchpath: in
  47796. + *":$testbindir:"*) ;;
  47797. + *) dllsearchpath="$dllsearchpath:$testbindir";;
  47798. + esac
  47799. + ;;
  47800. + esac
  47801. + continue
  47802. + ;;
  47803. +
  47804. + -l*)
  47805. + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
  47806. + case $host in
  47807. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
  47808. + # These systems don't actually have a C or math library (as such)
  47809. + continue
  47810. + ;;
  47811. + *-*-os2*)
  47812. + # These systems don't actually have a C library (as such)
  47813. + test "X$arg" = "X-lc" && continue
  47814. + ;;
  47815. + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  47816. + # Do not include libc due to us having libc/libc_r.
  47817. + test "X$arg" = "X-lc" && continue
  47818. + ;;
  47819. + *-*-rhapsody* | *-*-darwin1.[012])
  47820. + # Rhapsody C and math libraries are in the System framework
  47821. + deplibs="$deplibs System.ltframework"
  47822. + continue
  47823. + ;;
  47824. + *-*-sco3.2v5* | *-*-sco5v6*)
  47825. + # Causes problems with __ctype
  47826. + test "X$arg" = "X-lc" && continue
  47827. + ;;
  47828. + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
  47829. + # Compiler inserts libc in the correct place for threads to work
  47830. + test "X$arg" = "X-lc" && continue
  47831. + ;;
  47832. + esac
  47833. + elif test "X$arg" = "X-lc_r"; then
  47834. + case $host in
  47835. + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  47836. + # Do not include libc_r directly, use -pthread flag.
  47837. + continue
  47838. + ;;
  47839. + esac
  47840. + fi
  47841. + deplibs="$deplibs $arg"
  47842. + continue
  47843. + ;;
  47844. +
  47845. + -module)
  47846. + module=yes
  47847. + continue
  47848. + ;;
  47849. +
  47850. + # Tru64 UNIX uses -model [arg] to determine the layout of C++
  47851. + # classes, name mangling, and exception handling.
  47852. + # Darwin uses the -arch flag to determine output architecture.
  47853. + -model|-arch|-isysroot)
  47854. + compiler_flags="$compiler_flags $arg"
  47855. + func_append compile_command " $arg"
  47856. + func_append finalize_command " $arg"
  47857. + prev=xcompiler
  47858. + continue
  47859. + ;;
  47860. +
  47861. + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
  47862. + compiler_flags="$compiler_flags $arg"
  47863. + func_append compile_command " $arg"
  47864. + func_append finalize_command " $arg"
  47865. + case "$new_inherited_linker_flags " in
  47866. + *" $arg "*) ;;
  47867. + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
  47868. + esac
  47869. + continue
  47870. + ;;
  47871. +
  47872. + -multi_module)
  47873. + single_module="${wl}-multi_module"
  47874. + continue
  47875. + ;;
  47876. +
  47877. + -no-fast-install)
  47878. + fast_install=no
  47879. + continue
  47880. + ;;
  47881. +
  47882. + -no-install)
  47883. + case $host in
  47884. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
  47885. + # The PATH hackery in wrapper scripts is required on Windows
  47886. + # in order for the loader to find any dlls it needs.
  47887. + func_warning "\`-no-install' is ignored for $host"
  47888. + func_warning "assuming \`-no-fast-install' instead"
  47889. + fast_install=no
  47890. + ;;
  47891. + *) no_install=yes ;;
  47892. + esac
  47893. + continue
  47894. + ;;
  47895. +
  47896. + -no-undefined)
  47897. + allow_undefined=no
  47898. + continue
  47899. + ;;
  47900. +
  47901. + -objectlist)
  47902. + prev=objectlist
  47903. + continue
  47904. + ;;
  47905. +
  47906. + -o) prev=output ;;
  47907. +
  47908. + -precious-files-regex)
  47909. + prev=precious_regex
  47910. + continue
  47911. + ;;
  47912. +
  47913. + -release)
  47914. + prev=release
  47915. + continue
  47916. + ;;
  47917. +
  47918. + -rpath)
  47919. + prev=rpath
  47920. + continue
  47921. + ;;
  47922. +
  47923. + -R)
  47924. + prev=xrpath
  47925. + continue
  47926. + ;;
  47927. +
  47928. + -R*)
  47929. + func_stripname '-R' '' "$arg"
  47930. + dir=$func_stripname_result
  47931. + # We need an absolute path.
  47932. + case $dir in
  47933. + [\\/]* | [A-Za-z]:[\\/]*) ;;
  47934. + *)
  47935. + func_fatal_error "only absolute run-paths are allowed"
  47936. + ;;
  47937. + esac
  47938. + case "$xrpath " in
  47939. + *" $dir "*) ;;
  47940. + *) xrpath="$xrpath $dir" ;;
  47941. + esac
  47942. + continue
  47943. + ;;
  47944. +
  47945. + -shared)
  47946. + # The effects of -shared are defined in a previous loop.
  47947. + continue
  47948. + ;;
  47949. +
  47950. + -shrext)
  47951. + prev=shrext
  47952. + continue
  47953. + ;;
  47954. +
  47955. + -static | -static-libtool-libs)
  47956. + # The effects of -static are defined in a previous loop.
  47957. + # We used to do the same as -all-static on platforms that
  47958. + # didn't have a PIC flag, but the assumption that the effects
  47959. + # would be equivalent was wrong. It would break on at least
  47960. + # Digital Unix and AIX.
  47961. + continue
  47962. + ;;
  47963. +
  47964. + -thread-safe)
  47965. + thread_safe=yes
  47966. + continue
  47967. + ;;
  47968. +
  47969. + -version-info)
  47970. + prev=vinfo
  47971. + continue
  47972. + ;;
  47973. +
  47974. + -version-number)
  47975. + prev=vinfo
  47976. + vinfo_number=yes
  47977. + continue
  47978. + ;;
  47979. +
  47980. + -weak)
  47981. + prev=weak
  47982. + continue
  47983. + ;;
  47984. +
  47985. + -Wc,*)
  47986. + func_stripname '-Wc,' '' "$arg"
  47987. + args=$func_stripname_result
  47988. + arg=
  47989. + save_ifs="$IFS"; IFS=','
  47990. + for flag in $args; do
  47991. + IFS="$save_ifs"
  47992. + func_quote_for_eval "$flag"
  47993. + arg="$arg $wl$func_quote_for_eval_result"
  47994. + compiler_flags="$compiler_flags $func_quote_for_eval_result"
  47995. + done
  47996. + IFS="$save_ifs"
  47997. + func_stripname ' ' '' "$arg"
  47998. + arg=$func_stripname_result
  47999. + ;;
  48000. +
  48001. + -Wl,*)
  48002. + func_stripname '-Wl,' '' "$arg"
  48003. + args=$func_stripname_result
  48004. + arg=
  48005. + save_ifs="$IFS"; IFS=','
  48006. + for flag in $args; do
  48007. + IFS="$save_ifs"
  48008. + func_quote_for_eval "$flag"
  48009. + arg="$arg $wl$func_quote_for_eval_result"
  48010. + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
  48011. + linker_flags="$linker_flags $func_quote_for_eval_result"
  48012. + done
  48013. + IFS="$save_ifs"
  48014. + func_stripname ' ' '' "$arg"
  48015. + arg=$func_stripname_result
  48016. + ;;
  48017. +
  48018. + -Xcompiler)
  48019. + prev=xcompiler
  48020. + continue
  48021. + ;;
  48022. +
  48023. + -Xlinker)
  48024. + prev=xlinker
  48025. + continue
  48026. + ;;
  48027. +
  48028. + -XCClinker)
  48029. + prev=xcclinker
  48030. + continue
  48031. + ;;
  48032. +
  48033. + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
  48034. + # -r[0-9][0-9]* specifies the processor on the SGI compiler
  48035. + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
  48036. + # +DA*, +DD* enable 64-bit mode on the HP compiler
  48037. + # -q* pass through compiler args for the IBM compiler
  48038. + # -m*, -t[45]*, -txscale* pass through architecture-specific
  48039. + # compiler args for GCC
  48040. + # -F/path gives path to uninstalled frameworks, gcc on darwin
  48041. + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
  48042. + # @file GCC response files
  48043. + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
  48044. + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
  48045. + func_quote_for_eval "$arg"
  48046. + arg="$func_quote_for_eval_result"
  48047. + func_append compile_command " $arg"
  48048. + func_append finalize_command " $arg"
  48049. + compiler_flags="$compiler_flags $arg"
  48050. + continue
  48051. + ;;
  48052. +
  48053. + # Some other compiler flag.
  48054. + -* | +*)
  48055. + func_quote_for_eval "$arg"
  48056. + arg="$func_quote_for_eval_result"
  48057. + ;;
  48058. +
  48059. + *.$objext)
  48060. + # A standard object.
  48061. + objs="$objs $arg"
  48062. + ;;
  48063. +
  48064. + *.lo)
  48065. + # A libtool-controlled object.
  48066. +
  48067. + # Check to see that this really is a libtool object.
  48068. + if func_lalib_unsafe_p "$arg"; then
  48069. + pic_object=
  48070. + non_pic_object=
  48071. +
  48072. + # Read the .lo file
  48073. + func_source "$arg"
  48074. +
  48075. + if test -z "$pic_object" ||
  48076. + test -z "$non_pic_object" ||
  48077. + test "$pic_object" = none &&
  48078. + test "$non_pic_object" = none; then
  48079. + func_fatal_error "cannot find name of object for \`$arg'"
  48080. + fi
  48081. +
  48082. + # Extract subdirectory from the argument.
  48083. + func_dirname "$arg" "/" ""
  48084. + xdir="$func_dirname_result"
  48085. +
  48086. + if test "$pic_object" != none; then
  48087. + # Prepend the subdirectory the object is found in.
  48088. + pic_object="$xdir$pic_object"
  48089. +
  48090. + if test "$prev" = dlfiles; then
  48091. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
  48092. + dlfiles="$dlfiles $pic_object"
  48093. + prev=
  48094. + continue
  48095. + else
  48096. + # If libtool objects are unsupported, then we need to preload.
  48097. + prev=dlprefiles
  48098. + fi
  48099. + fi
  48100. +
  48101. + # CHECK ME: I think I busted this. -Ossama
  48102. + if test "$prev" = dlprefiles; then
  48103. + # Preload the old-style object.
  48104. + dlprefiles="$dlprefiles $pic_object"
  48105. + prev=
  48106. + fi
  48107. +
  48108. + # A PIC object.
  48109. + func_append libobjs " $pic_object"
  48110. + arg="$pic_object"
  48111. + fi
  48112. +
  48113. + # Non-PIC object.
  48114. + if test "$non_pic_object" != none; then
  48115. + # Prepend the subdirectory the object is found in.
  48116. + non_pic_object="$xdir$non_pic_object"
  48117. +
  48118. + # A standard non-PIC object
  48119. + func_append non_pic_objects " $non_pic_object"
  48120. + if test -z "$pic_object" || test "$pic_object" = none ; then
  48121. + arg="$non_pic_object"
  48122. + fi
  48123. + else
  48124. + # If the PIC object exists, use it instead.
  48125. + # $xdir was prepended to $pic_object above.
  48126. + non_pic_object="$pic_object"
  48127. + func_append non_pic_objects " $non_pic_object"
  48128. + fi
  48129. + else
  48130. + # Only an error if not doing a dry-run.
  48131. + if $opt_dry_run; then
  48132. + # Extract subdirectory from the argument.
  48133. + func_dirname "$arg" "/" ""
  48134. + xdir="$func_dirname_result"
  48135. +
  48136. + func_lo2o "$arg"
  48137. + pic_object=$xdir$objdir/$func_lo2o_result
  48138. + non_pic_object=$xdir$func_lo2o_result
  48139. + func_append libobjs " $pic_object"
  48140. + func_append non_pic_objects " $non_pic_object"
  48141. + else
  48142. + func_fatal_error "\`$arg' is not a valid libtool object"
  48143. + fi
  48144. + fi
  48145. + ;;
  48146. +
  48147. + *.$libext)
  48148. + # An archive.
  48149. + deplibs="$deplibs $arg"
  48150. + old_deplibs="$old_deplibs $arg"
  48151. + continue
  48152. + ;;
  48153. +
  48154. + *.la)
  48155. + # A libtool-controlled library.
  48156. +
  48157. + if test "$prev" = dlfiles; then
  48158. + # This library was specified with -dlopen.
  48159. + dlfiles="$dlfiles $arg"
  48160. + prev=
  48161. + elif test "$prev" = dlprefiles; then
  48162. + # The library was specified with -dlpreopen.
  48163. + dlprefiles="$dlprefiles $arg"
  48164. + prev=
  48165. + else
  48166. + deplibs="$deplibs $arg"
  48167. + fi
  48168. + continue
  48169. + ;;
  48170. +
  48171. + # Some other compiler argument.
  48172. + *)
  48173. + # Unknown arguments in both finalize_command and compile_command need
  48174. + # to be aesthetically quoted because they are evaled later.
  48175. + func_quote_for_eval "$arg"
  48176. + arg="$func_quote_for_eval_result"
  48177. + ;;
  48178. + esac # arg
  48179. +
  48180. + # Now actually substitute the argument into the commands.
  48181. + if test -n "$arg"; then
  48182. + func_append compile_command " $arg"
  48183. + func_append finalize_command " $arg"
  48184. + fi
  48185. + done # argument parsing loop
  48186. +
  48187. + test -n "$prev" && \
  48188. + func_fatal_help "the \`$prevarg' option requires an argument"
  48189. +
  48190. + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
  48191. + eval arg=\"$export_dynamic_flag_spec\"
  48192. + func_append compile_command " $arg"
  48193. + func_append finalize_command " $arg"
  48194. + fi
  48195. +
  48196. + oldlibs=
  48197. + # calculate the name of the file, without its directory
  48198. + func_basename "$output"
  48199. + outputname="$func_basename_result"
  48200. + libobjs_save="$libobjs"
  48201. +
  48202. + if test -n "$shlibpath_var"; then
  48203. + # get the directories listed in $shlibpath_var
  48204. + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
  48205. + else
  48206. + shlib_search_path=
  48207. + fi
  48208. + eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
  48209. + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
  48210. +
  48211. + func_dirname "$output" "/" ""
  48212. + output_objdir="$func_dirname_result$objdir"
  48213. + # Create the object directory.
  48214. + func_mkdir_p "$output_objdir"
  48215. +
  48216. + # Determine the type of output
  48217. + case $output in
  48218. + "")
  48219. + func_fatal_help "you must specify an output file"
  48220. + ;;
  48221. + *.$libext) linkmode=oldlib ;;
  48222. + *.lo | *.$objext) linkmode=obj ;;
  48223. + *.la) linkmode=lib ;;
  48224. + *) linkmode=prog ;; # Anything else should be a program.
  48225. + esac
  48226. +
  48227. + specialdeplibs=
  48228. +
  48229. + libs=
  48230. + # Find all interdependent deplibs by searching for libraries
  48231. + # that are linked more than once (e.g. -la -lb -la)
  48232. + for deplib in $deplibs; do
  48233. + if $opt_duplicate_deps ; then
  48234. + case "$libs " in
  48235. + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
  48236. + esac
  48237. + fi
  48238. + libs="$libs $deplib"
  48239. + done
  48240. +
  48241. + if test "$linkmode" = lib; then
  48242. + libs="$predeps $libs $compiler_lib_search_path $postdeps"
  48243. +
  48244. + # Compute libraries that are listed more than once in $predeps
  48245. + # $postdeps and mark them as special (i.e., whose duplicates are
  48246. + # not to be eliminated).
  48247. + pre_post_deps=
  48248. + if $opt_duplicate_compiler_generated_deps; then
  48249. + for pre_post_dep in $predeps $postdeps; do
  48250. + case "$pre_post_deps " in
  48251. + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
  48252. + esac
  48253. + pre_post_deps="$pre_post_deps $pre_post_dep"
  48254. + done
  48255. + fi
  48256. + pre_post_deps=
  48257. + fi
  48258. +
  48259. + deplibs=
  48260. + newdependency_libs=
  48261. + newlib_search_path=
  48262. + need_relink=no # whether we're linking any uninstalled libtool libraries
  48263. + notinst_deplibs= # not-installed libtool libraries
  48264. + notinst_path= # paths that contain not-installed libtool libraries
  48265. +
  48266. + case $linkmode in
  48267. + lib)
  48268. + passes="conv dlpreopen link"
  48269. + for file in $dlfiles $dlprefiles; do
  48270. + case $file in
  48271. + *.la) ;;
  48272. + *)
  48273. + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
  48274. + ;;
  48275. + esac
  48276. + done
  48277. + ;;
  48278. + prog)
  48279. + compile_deplibs=
  48280. + finalize_deplibs=
  48281. + alldeplibs=no
  48282. + newdlfiles=
  48283. + newdlprefiles=
  48284. + passes="conv scan dlopen dlpreopen link"
  48285. + ;;
  48286. + *) passes="conv"
  48287. + ;;
  48288. + esac
  48289. +
  48290. + for pass in $passes; do
  48291. + # The preopen pass in lib mode reverses $deplibs; put it back here
  48292. + # so that -L comes before libs that need it for instance...
  48293. + if test "$linkmode,$pass" = "lib,link"; then
  48294. + ## FIXME: Find the place where the list is rebuilt in the wrong
  48295. + ## order, and fix it there properly
  48296. + tmp_deplibs=
  48297. + for deplib in $deplibs; do
  48298. + tmp_deplibs="$deplib $tmp_deplibs"
  48299. + done
  48300. + deplibs="$tmp_deplibs"
  48301. + fi
  48302. +
  48303. + if test "$linkmode,$pass" = "lib,link" ||
  48304. + test "$linkmode,$pass" = "prog,scan"; then
  48305. + libs="$deplibs"
  48306. + deplibs=
  48307. + fi
  48308. + if test "$linkmode" = prog; then
  48309. + case $pass in
  48310. + dlopen) libs="$dlfiles" ;;
  48311. + dlpreopen) libs="$dlprefiles" ;;
  48312. + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
  48313. + esac
  48314. + fi
  48315. + if test "$linkmode,$pass" = "lib,dlpreopen"; then
  48316. + # Collect and forward deplibs of preopened libtool libs
  48317. + for lib in $dlprefiles; do
  48318. + # Ignore non-libtool-libs
  48319. + dependency_libs=
  48320. + case $lib in
  48321. + *.la) func_source "$lib" ;;
  48322. + esac
  48323. +
  48324. + # Collect preopened libtool deplibs, except any this library
  48325. + # has declared as weak libs
  48326. + for deplib in $dependency_libs; do
  48327. + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
  48328. + case " $weak_libs " in
  48329. + *" $deplib_base "*) ;;
  48330. + *) deplibs="$deplibs $deplib" ;;
  48331. + esac
  48332. + done
  48333. + done
  48334. + libs="$dlprefiles"
  48335. + fi
  48336. + if test "$pass" = dlopen; then
  48337. + # Collect dlpreopened libraries
  48338. + save_deplibs="$deplibs"
  48339. + deplibs=
  48340. + fi
  48341. +
  48342. + for deplib in $libs; do
  48343. + lib=
  48344. + found=no
  48345. + case $deplib in
  48346. + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
  48347. + if test "$linkmode,$pass" = "prog,link"; then
  48348. + compile_deplibs="$deplib $compile_deplibs"
  48349. + finalize_deplibs="$deplib $finalize_deplibs"
  48350. + else
  48351. + compiler_flags="$compiler_flags $deplib"
  48352. + if test "$linkmode" = lib ; then
  48353. + case "$new_inherited_linker_flags " in
  48354. + *" $deplib "*) ;;
  48355. + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
  48356. + esac
  48357. + fi
  48358. + fi
  48359. + continue
  48360. + ;;
  48361. + -l*)
  48362. + if test "$linkmode" != lib && test "$linkmode" != prog; then
  48363. + func_warning "\`-l' is ignored for archives/objects"
  48364. + continue
  48365. + fi
  48366. + func_stripname '-l' '' "$deplib"
  48367. + name=$func_stripname_result
  48368. + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
  48369. + for search_ext in .la $std_shrext .so .a; do
  48370. + # Search the libtool library
  48371. + lib="$searchdir/lib${name}${search_ext}"
  48372. + if test -f "$lib"; then
  48373. + if test "$search_ext" = ".la"; then
  48374. + found=yes
  48375. + else
  48376. + found=no
  48377. + fi
  48378. + break 2
  48379. + fi
  48380. + done
  48381. + done
  48382. + if test "$found" != yes; then
  48383. + # deplib doesn't seem to be a libtool library
  48384. + if test "$linkmode,$pass" = "prog,link"; then
  48385. + compile_deplibs="$deplib $compile_deplibs"
  48386. + finalize_deplibs="$deplib $finalize_deplibs"
  48387. + else
  48388. + deplibs="$deplib $deplibs"
  48389. + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
  48390. + fi
  48391. + continue
  48392. + else # deplib is a libtool library
  48393. + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
  48394. + # We need to do some special things here, and not later.
  48395. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  48396. + case " $predeps $postdeps " in
  48397. + *" $deplib "*)
  48398. + if func_lalib_p "$lib"; then
  48399. + library_names=
  48400. + old_library=
  48401. + func_source "$lib"
  48402. + for l in $old_library $library_names; do
  48403. + ll="$l"
  48404. + done
  48405. + if test "X$ll" = "X$old_library" ; then # only static version available
  48406. + found=no
  48407. + func_dirname "$lib" "" "."
  48408. + ladir="$func_dirname_result"
  48409. + lib=$ladir/$old_library
  48410. + if test "$linkmode,$pass" = "prog,link"; then
  48411. + compile_deplibs="$deplib $compile_deplibs"
  48412. + finalize_deplibs="$deplib $finalize_deplibs"
  48413. + else
  48414. + deplibs="$deplib $deplibs"
  48415. + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
  48416. + fi
  48417. + continue
  48418. + fi
  48419. + fi
  48420. + ;;
  48421. + *) ;;
  48422. + esac
  48423. + fi
  48424. + fi
  48425. + ;; # -l
  48426. + *.ltframework)
  48427. + if test "$linkmode,$pass" = "prog,link"; then
  48428. + compile_deplibs="$deplib $compile_deplibs"
  48429. + finalize_deplibs="$deplib $finalize_deplibs"
  48430. + else
  48431. + deplibs="$deplib $deplibs"
  48432. + if test "$linkmode" = lib ; then
  48433. + case "$new_inherited_linker_flags " in
  48434. + *" $deplib "*) ;;
  48435. + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
  48436. + esac
  48437. + fi
  48438. + fi
  48439. + continue
  48440. + ;;
  48441. + -L*)
  48442. + case $linkmode in
  48443. + lib)
  48444. + deplibs="$deplib $deplibs"
  48445. + test "$pass" = conv && continue
  48446. + newdependency_libs="$deplib $newdependency_libs"
  48447. + func_stripname '-L' '' "$deplib"
  48448. + newlib_search_path="$newlib_search_path $func_stripname_result"
  48449. + ;;
  48450. + prog)
  48451. + if test "$pass" = conv; then
  48452. + deplibs="$deplib $deplibs"
  48453. + continue
  48454. + fi
  48455. + if test "$pass" = scan; then
  48456. + deplibs="$deplib $deplibs"
  48457. + else
  48458. + compile_deplibs="$deplib $compile_deplibs"
  48459. + finalize_deplibs="$deplib $finalize_deplibs"
  48460. + fi
  48461. + func_stripname '-L' '' "$deplib"
  48462. + newlib_search_path="$newlib_search_path $func_stripname_result"
  48463. + ;;
  48464. + *)
  48465. + func_warning "\`-L' is ignored for archives/objects"
  48466. + ;;
  48467. + esac # linkmode
  48468. + continue
  48469. + ;; # -L
  48470. + -R*)
  48471. + if test "$pass" = link; then
  48472. + func_stripname '-R' '' "$deplib"
  48473. + dir=$func_stripname_result
  48474. + # Make sure the xrpath contains only unique directories.
  48475. + case "$xrpath " in
  48476. + *" $dir "*) ;;
  48477. + *) xrpath="$xrpath $dir" ;;
  48478. + esac
  48479. + fi
  48480. + deplibs="$deplib $deplibs"
  48481. + continue
  48482. + ;;
  48483. + *.la) lib="$deplib" ;;
  48484. + *.$libext)
  48485. + if test "$pass" = conv; then
  48486. + deplibs="$deplib $deplibs"
  48487. + continue
  48488. + fi
  48489. + case $linkmode in
  48490. + lib)
  48491. + # Linking convenience modules into shared libraries is allowed,
  48492. + # but linking other static libraries is non-portable.
  48493. + case " $dlpreconveniencelibs " in
  48494. + *" $deplib "*) ;;
  48495. + *)
  48496. + valid_a_lib=no
  48497. + case $deplibs_check_method in
  48498. + match_pattern*)
  48499. + set dummy $deplibs_check_method; shift
  48500. + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  48501. + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
  48502. + | $EGREP "$match_pattern_regex" > /dev/null; then
  48503. + valid_a_lib=yes
  48504. + fi
  48505. + ;;
  48506. + pass_all)
  48507. + valid_a_lib=yes
  48508. + ;;
  48509. + esac
  48510. + if test "$valid_a_lib" != yes; then
  48511. + $ECHO
  48512. + $ECHO "*** Warning: Trying to link with static lib archive $deplib."
  48513. + $ECHO "*** I have the capability to make that library automatically link in when"
  48514. + $ECHO "*** you link to this library. But I can only do this if you have a"
  48515. + $ECHO "*** shared version of the library, which you do not appear to have"
  48516. + $ECHO "*** because the file extensions .$libext of this argument makes me believe"
  48517. + $ECHO "*** that it is just a static archive that I should not use here."
  48518. + else
  48519. + $ECHO
  48520. + $ECHO "*** Warning: Linking the shared library $output against the"
  48521. + $ECHO "*** static library $deplib is not portable!"
  48522. + deplibs="$deplib $deplibs"
  48523. + fi
  48524. + ;;
  48525. + esac
  48526. + continue
  48527. + ;;
  48528. + prog)
  48529. + if test "$pass" != link; then
  48530. + deplibs="$deplib $deplibs"
  48531. + else
  48532. + compile_deplibs="$deplib $compile_deplibs"
  48533. + finalize_deplibs="$deplib $finalize_deplibs"
  48534. + fi
  48535. + continue
  48536. + ;;
  48537. + esac # linkmode
  48538. + ;; # *.$libext
  48539. + *.lo | *.$objext)
  48540. + if test "$pass" = conv; then
  48541. + deplibs="$deplib $deplibs"
  48542. + elif test "$linkmode" = prog; then
  48543. + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
  48544. + # If there is no dlopen support or we're linking statically,
  48545. + # we need to preload.
  48546. + newdlprefiles="$newdlprefiles $deplib"
  48547. + compile_deplibs="$deplib $compile_deplibs"
  48548. + finalize_deplibs="$deplib $finalize_deplibs"
  48549. + else
  48550. + newdlfiles="$newdlfiles $deplib"
  48551. + fi
  48552. + fi
  48553. + continue
  48554. + ;;
  48555. + %DEPLIBS%)
  48556. + alldeplibs=yes
  48557. + continue
  48558. + ;;
  48559. + esac # case $deplib
  48560. +
  48561. + if test "$found" = yes || test -f "$lib"; then :
  48562. + else
  48563. + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
  48564. + fi
  48565. +
  48566. + # Check to see that this really is a libtool archive.
  48567. + func_lalib_unsafe_p "$lib" \
  48568. + || func_fatal_error "\`$lib' is not a valid libtool archive"
  48569. +
  48570. + func_dirname "$lib" "" "."
  48571. + ladir="$func_dirname_result"
  48572. +
  48573. + dlname=
  48574. + dlopen=
  48575. + dlpreopen=
  48576. + libdir=
  48577. + library_names=
  48578. + old_library=
  48579. + inherited_linker_flags=
  48580. + # If the library was installed with an old release of libtool,
  48581. + # it will not redefine variables installed, or shouldnotlink
  48582. + installed=yes
  48583. + shouldnotlink=no
  48584. + avoidtemprpath=
  48585. +
  48586. +
  48587. + # Read the .la file
  48588. + func_source "$lib"
  48589. +
  48590. + # Convert "-framework foo" to "foo.ltframework"
  48591. + if test -n "$inherited_linker_flags"; then
  48592. + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
  48593. + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
  48594. + case " $new_inherited_linker_flags " in
  48595. + *" $tmp_inherited_linker_flag "*) ;;
  48596. + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
  48597. + esac
  48598. + done
  48599. + fi
  48600. + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  48601. + if test "$linkmode,$pass" = "prog,link"; then
  48602. + compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
  48603. + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
  48604. + else
  48605. + compiler_flags="$compiler_flags $inherited_linker_flags"
  48606. + fi
  48607. + if test "$linkmode,$pass" = "lib,link" ||
  48608. + test "$linkmode,$pass" = "prog,scan" ||
  48609. + { test "$linkmode" != prog && test "$linkmode" != lib; }; then
  48610. + test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
  48611. + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
  48612. + fi
  48613. +
  48614. + if test "$pass" = conv; then
  48615. + # Only check for convenience libraries
  48616. + deplibs="$lib $deplibs"
  48617. + if test -z "$libdir"; then
  48618. + if test -z "$old_library"; then
  48619. + func_fatal_error "cannot find name of link library for \`$lib'"
  48620. + fi
  48621. + # It is a libtool convenience library, so add in its objects.
  48622. + convenience="$convenience $ladir/$objdir/$old_library"
  48623. + old_convenience="$old_convenience $ladir/$objdir/$old_library"
  48624. + elif test "$linkmode" != prog && test "$linkmode" != lib; then
  48625. + func_fatal_error "\`$lib' is not a convenience library"
  48626. + fi
  48627. + tmp_libs=
  48628. + for deplib in $dependency_libs; do
  48629. + deplibs="$deplib $deplibs"
  48630. + if $opt_duplicate_deps ; then
  48631. + case "$tmp_libs " in
  48632. + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
  48633. + esac
  48634. + fi
  48635. + tmp_libs="$tmp_libs $deplib"
  48636. + done
  48637. + continue
  48638. + fi # $pass = conv
  48639. +
  48640. +
  48641. + # Get the name of the library we link against.
  48642. + linklib=
  48643. + for l in $old_library $library_names; do
  48644. + linklib="$l"
  48645. + done
  48646. + if test -z "$linklib"; then
  48647. + func_fatal_error "cannot find name of link library for \`$lib'"
  48648. + fi
  48649. +
  48650. + # This library was specified with -dlopen.
  48651. + if test "$pass" = dlopen; then
  48652. + if test -z "$libdir"; then
  48653. + func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
  48654. + fi
  48655. + if test -z "$dlname" ||
  48656. + test "$dlopen_support" != yes ||
  48657. + test "$build_libtool_libs" = no; then
  48658. + # If there is no dlname, no dlopen support or we're linking
  48659. + # statically, we need to preload. We also need to preload any
  48660. + # dependent libraries so libltdl's deplib preloader doesn't
  48661. + # bomb out in the load deplibs phase.
  48662. + dlprefiles="$dlprefiles $lib $dependency_libs"
  48663. + else
  48664. + newdlfiles="$newdlfiles $lib"
  48665. + fi
  48666. + continue
  48667. + fi # $pass = dlopen
  48668. +
  48669. + # We need an absolute path.
  48670. + case $ladir in
  48671. + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
  48672. + *)
  48673. + abs_ladir=`cd "$ladir" && pwd`
  48674. + if test -z "$abs_ladir"; then
  48675. + func_warning "cannot determine absolute directory name of \`$ladir'"
  48676. + func_warning "passing it literally to the linker, although it might fail"
  48677. + abs_ladir="$ladir"
  48678. + fi
  48679. + ;;
  48680. + esac
  48681. + func_basename "$lib"
  48682. + laname="$func_basename_result"
  48683. +
  48684. + # Find the relevant object directory and library name.
  48685. + if test "X$installed" = Xyes; then
  48686. + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
  48687. + func_warning "library \`$lib' was moved."
  48688. + dir="$ladir"
  48689. + absdir="$abs_ladir"
  48690. + libdir="$abs_ladir"
  48691. + else
  48692. + dir="$libdir"
  48693. + absdir="$libdir"
  48694. + fi
  48695. + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
  48696. + else
  48697. + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
  48698. + dir="$ladir"
  48699. + absdir="$abs_ladir"
  48700. + # Remove this search path later
  48701. + notinst_path="$notinst_path $abs_ladir"
  48702. + else
  48703. + dir="$ladir/$objdir"
  48704. + absdir="$abs_ladir/$objdir"
  48705. + # Remove this search path later
  48706. + notinst_path="$notinst_path $abs_ladir"
  48707. + fi
  48708. + fi # $installed = yes
  48709. + func_stripname 'lib' '.la' "$laname"
  48710. + name=$func_stripname_result
  48711. +
  48712. + # This library was specified with -dlpreopen.
  48713. + if test "$pass" = dlpreopen; then
  48714. + if test -z "$libdir" && test "$linkmode" = prog; then
  48715. + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
  48716. + fi
  48717. + # Prefer using a static library (so that no silly _DYNAMIC symbols
  48718. + # are required to link).
  48719. + if test -n "$old_library"; then
  48720. + newdlprefiles="$newdlprefiles $dir/$old_library"
  48721. + # Keep a list of preopened convenience libraries to check
  48722. + # that they are being used correctly in the link pass.
  48723. + test -z "$libdir" && \
  48724. + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
  48725. + # Otherwise, use the dlname, so that lt_dlopen finds it.
  48726. + elif test -n "$dlname"; then
  48727. + newdlprefiles="$newdlprefiles $dir/$dlname"
  48728. + else
  48729. + newdlprefiles="$newdlprefiles $dir/$linklib"
  48730. + fi
  48731. + fi # $pass = dlpreopen
  48732. +
  48733. + if test -z "$libdir"; then
  48734. + # Link the convenience library
  48735. + if test "$linkmode" = lib; then
  48736. + deplibs="$dir/$old_library $deplibs"
  48737. + elif test "$linkmode,$pass" = "prog,link"; then
  48738. + compile_deplibs="$dir/$old_library $compile_deplibs"
  48739. + finalize_deplibs="$dir/$old_library $finalize_deplibs"
  48740. + else
  48741. + deplibs="$lib $deplibs" # used for prog,scan pass
  48742. + fi
  48743. + continue
  48744. + fi
  48745. +
  48746. +
  48747. + if test "$linkmode" = prog && test "$pass" != link; then
  48748. + newlib_search_path="$newlib_search_path $ladir"
  48749. + deplibs="$lib $deplibs"
  48750. +
  48751. + linkalldeplibs=no
  48752. + if test "$link_all_deplibs" != no || test -z "$library_names" ||
  48753. + test "$build_libtool_libs" = no; then
  48754. + linkalldeplibs=yes
  48755. + fi
  48756. +
  48757. + tmp_libs=
  48758. + for deplib in $dependency_libs; do
  48759. + case $deplib in
  48760. + -L*) func_stripname '-L' '' "$deplib"
  48761. + newlib_search_path="$newlib_search_path $func_stripname_result"
  48762. + ;;
  48763. + esac
  48764. + # Need to link against all dependency_libs?
  48765. + if test "$linkalldeplibs" = yes; then
  48766. + deplibs="$deplib $deplibs"
  48767. + else
  48768. + # Need to hardcode shared library paths
  48769. + # or/and link against static libraries
  48770. + newdependency_libs="$deplib $newdependency_libs"
  48771. + fi
  48772. + if $opt_duplicate_deps ; then
  48773. + case "$tmp_libs " in
  48774. + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
  48775. + esac
  48776. + fi
  48777. + tmp_libs="$tmp_libs $deplib"
  48778. + done # for deplib
  48779. + continue
  48780. + fi # $linkmode = prog...
  48781. +
  48782. + if test "$linkmode,$pass" = "prog,link"; then
  48783. + if test -n "$library_names" &&
  48784. + { { test "$prefer_static_libs" = no ||
  48785. + test "$prefer_static_libs,$installed" = "built,yes"; } ||
  48786. + test -z "$old_library"; }; then
  48787. + # We need to hardcode the library path
  48788. + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
  48789. + # Make sure the rpath contains only unique directories.
  48790. + case "$temp_rpath:" in
  48791. + *"$absdir:"*) ;;
  48792. + *) temp_rpath="$temp_rpath$absdir:" ;;
  48793. + esac
  48794. + fi
  48795. +
  48796. + # Hardcode the library path.
  48797. + # Skip directories that are in the system default run-time
  48798. + # search path.
  48799. + case " $sys_lib_dlsearch_path " in
  48800. + *" $absdir "*) ;;
  48801. + *)
  48802. + case "$compile_rpath " in
  48803. + *" $absdir "*) ;;
  48804. + *) compile_rpath="$compile_rpath $absdir"
  48805. + esac
  48806. + ;;
  48807. + esac
  48808. + case " $sys_lib_dlsearch_path " in
  48809. + *" $libdir "*) ;;
  48810. + *)
  48811. + case "$finalize_rpath " in
  48812. + *" $libdir "*) ;;
  48813. + *) finalize_rpath="$finalize_rpath $libdir"
  48814. + esac
  48815. + ;;
  48816. + esac
  48817. + fi # $linkmode,$pass = prog,link...
  48818. +
  48819. + if test "$alldeplibs" = yes &&
  48820. + { test "$deplibs_check_method" = pass_all ||
  48821. + { test "$build_libtool_libs" = yes &&
  48822. + test -n "$library_names"; }; }; then
  48823. + # We only need to search for static libraries
  48824. + continue
  48825. + fi
  48826. + fi
  48827. +
  48828. + link_static=no # Whether the deplib will be linked statically
  48829. + use_static_libs=$prefer_static_libs
  48830. + if test "$use_static_libs" = built && test "$installed" = yes; then
  48831. + use_static_libs=no
  48832. + fi
  48833. + if test -n "$library_names" &&
  48834. + { test "$use_static_libs" = no || test -z "$old_library"; }; then
  48835. + case $host in
  48836. + *cygwin* | *mingw*)
  48837. + # No point in relinking DLLs because paths are not encoded
  48838. + notinst_deplibs="$notinst_deplibs $lib"
  48839. + need_relink=no
  48840. + ;;
  48841. + *)
  48842. + if test "$installed" = no; then
  48843. + notinst_deplibs="$notinst_deplibs $lib"
  48844. + need_relink=yes
  48845. + fi
  48846. + ;;
  48847. + esac
  48848. + # This is a shared library
  48849. +
  48850. + # Warn about portability, can't link against -module's on some
  48851. + # systems (darwin). Don't bleat about dlopened modules though!
  48852. + dlopenmodule=""
  48853. + for dlpremoduletest in $dlprefiles; do
  48854. + if test "X$dlpremoduletest" = "X$lib"; then
  48855. + dlopenmodule="$dlpremoduletest"
  48856. + break
  48857. + fi
  48858. + done
  48859. + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
  48860. + $ECHO
  48861. + if test "$linkmode" = prog; then
  48862. + $ECHO "*** Warning: Linking the executable $output against the loadable module"
  48863. + else
  48864. + $ECHO "*** Warning: Linking the shared library $output against the loadable module"
  48865. + fi
  48866. + $ECHO "*** $linklib is not portable!"
  48867. + fi
  48868. + if test "$linkmode" = lib &&
  48869. + test "$hardcode_into_libs" = yes; then
  48870. + # Hardcode the library path.
  48871. + # Skip directories that are in the system default run-time
  48872. + # search path.
  48873. + case " $sys_lib_dlsearch_path " in
  48874. + *" $absdir "*) ;;
  48875. + *)
  48876. + case "$compile_rpath " in
  48877. + *" $absdir "*) ;;
  48878. + *) compile_rpath="$compile_rpath $absdir"
  48879. + esac
  48880. + ;;
  48881. + esac
  48882. + case " $sys_lib_dlsearch_path " in
  48883. + *" $libdir "*) ;;
  48884. + *)
  48885. + case "$finalize_rpath " in
  48886. + *" $libdir "*) ;;
  48887. + *) finalize_rpath="$finalize_rpath $libdir"
  48888. + esac
  48889. + ;;
  48890. + esac
  48891. + fi
  48892. +
  48893. + if test -n "$old_archive_from_expsyms_cmds"; then
  48894. + # figure out the soname
  48895. + set dummy $library_names
  48896. + shift
  48897. + realname="$1"
  48898. + shift
  48899. + libname=`eval "\\$ECHO \"$libname_spec\""`
  48900. + # use dlname if we got it. it's perfectly good, no?
  48901. + if test -n "$dlname"; then
  48902. + soname="$dlname"
  48903. + elif test -n "$soname_spec"; then
  48904. + # bleh windows
  48905. + case $host in
  48906. + *cygwin* | mingw*)
  48907. + major=`expr $current - $age`
  48908. + versuffix="-$major"
  48909. + ;;
  48910. + esac
  48911. + eval soname=\"$soname_spec\"
  48912. + else
  48913. + soname="$realname"
  48914. + fi
  48915. +
  48916. + # Make a new name for the extract_expsyms_cmds to use
  48917. + soroot="$soname"
  48918. + func_basename "$soroot"
  48919. + soname="$func_basename_result"
  48920. + func_stripname 'lib' '.dll' "$soname"
  48921. + newlib=libimp-$func_stripname_result.a
  48922. +
  48923. + # If the library has no export list, then create one now
  48924. + if test -f "$output_objdir/$soname-def"; then :
  48925. + else
  48926. + func_echo "extracting exported symbol list from \`$soname'"
  48927. + func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
  48928. + fi
  48929. +
  48930. + # Create $newlib
  48931. + if test -f "$output_objdir/$newlib"; then :; else
  48932. + func_echo "generating import library for \`$soname'"
  48933. + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
  48934. + fi
  48935. + # make sure the library variables are pointing to the new library
  48936. + dir=$output_objdir
  48937. + linklib=$newlib
  48938. + fi # test -n "$old_archive_from_expsyms_cmds"
  48939. +
  48940. + if test "$linkmode" = prog || test "$mode" != relink; then
  48941. + add_shlibpath=
  48942. + add_dir=
  48943. + add=
  48944. + lib_linked=yes
  48945. + case $hardcode_action in
  48946. + immediate | unsupported)
  48947. + if test "$hardcode_direct" = no; then
  48948. + add="$dir/$linklib"
  48949. + case $host in
  48950. + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
  48951. + *-*-sysv4*uw2*) add_dir="-L$dir" ;;
  48952. + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
  48953. + *-*-unixware7*) add_dir="-L$dir" ;;
  48954. + *-*-darwin* )
  48955. + # if the lib is a (non-dlopened) module then we can not
  48956. + # link against it, someone is ignoring the earlier warnings
  48957. + if /usr/bin/file -L $add 2> /dev/null |
  48958. + $GREP ": [^:]* bundle" >/dev/null ; then
  48959. + if test "X$dlopenmodule" != "X$lib"; then
  48960. + $ECHO "*** Warning: lib $linklib is a module, not a shared library"
  48961. + if test -z "$old_library" ; then
  48962. + $ECHO
  48963. + $ECHO "*** And there doesn't seem to be a static archive available"
  48964. + $ECHO "*** The link will probably fail, sorry"
  48965. + else
  48966. + add="$dir/$old_library"
  48967. + fi
  48968. + elif test -n "$old_library"; then
  48969. + add="$dir/$old_library"
  48970. + fi
  48971. + fi
  48972. + esac
  48973. + elif test "$hardcode_minus_L" = no; then
  48974. + case $host in
  48975. + *-*-sunos*) add_shlibpath="$dir" ;;
  48976. + esac
  48977. + add_dir="-L$dir"
  48978. + add="-l$name"
  48979. + elif test "$hardcode_shlibpath_var" = no; then
  48980. + add_shlibpath="$dir"
  48981. + add="-l$name"
  48982. + else
  48983. + lib_linked=no
  48984. + fi
  48985. + ;;
  48986. + relink)
  48987. + if test "$hardcode_direct" = yes &&
  48988. + test "$hardcode_direct_absolute" = no; then
  48989. + add="$dir/$linklib"
  48990. + elif test "$hardcode_minus_L" = yes; then
  48991. + add_dir="-L$dir"
  48992. + # Try looking first in the location we're being installed to.
  48993. + if test -n "$inst_prefix_dir"; then
  48994. + case $libdir in
  48995. + [\\/]*)
  48996. + add_dir="$add_dir -L$inst_prefix_dir$libdir"
  48997. + ;;
  48998. + esac
  48999. + fi
  49000. + add="-l$name"
  49001. + elif test "$hardcode_shlibpath_var" = yes; then
  49002. + add_shlibpath="$dir"
  49003. + add="-l$name"
  49004. + else
  49005. + lib_linked=no
  49006. + fi
  49007. + ;;
  49008. + *) lib_linked=no ;;
  49009. + esac
  49010. +
  49011. + if test "$lib_linked" != yes; then
  49012. + func_fatal_configuration "unsupported hardcode properties"
  49013. + fi
  49014. +
  49015. + if test -n "$add_shlibpath"; then
  49016. + case :$compile_shlibpath: in
  49017. + *":$add_shlibpath:"*) ;;
  49018. + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
  49019. + esac
  49020. + fi
  49021. + if test "$linkmode" = prog; then
  49022. + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
  49023. + test -n "$add" && compile_deplibs="$add $compile_deplibs"
  49024. + else
  49025. + test -n "$add_dir" && deplibs="$add_dir $deplibs"
  49026. + test -n "$add" && deplibs="$add $deplibs"
  49027. + if test "$hardcode_direct" != yes &&
  49028. + test "$hardcode_minus_L" != yes &&
  49029. + test "$hardcode_shlibpath_var" = yes; then
  49030. + case :$finalize_shlibpath: in
  49031. + *":$libdir:"*) ;;
  49032. + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
  49033. + esac
  49034. + fi
  49035. + fi
  49036. + fi
  49037. +
  49038. + if test "$linkmode" = prog || test "$mode" = relink; then
  49039. + add_shlibpath=
  49040. + add_dir=
  49041. + add=
  49042. + # Finalize command for both is simple: just hardcode it.
  49043. + if test "$hardcode_direct" = yes &&
  49044. + test "$hardcode_direct_absolute" = no; then
  49045. + add="$libdir/$linklib"
  49046. + elif test "$hardcode_minus_L" = yes; then
  49047. + add_dir="-L$libdir"
  49048. + add="-l$name"
  49049. + elif test "$hardcode_shlibpath_var" = yes; then
  49050. + case :$finalize_shlibpath: in
  49051. + *":$libdir:"*) ;;
  49052. + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
  49053. + esac
  49054. + add="-l$name"
  49055. + elif test "$hardcode_automatic" = yes; then
  49056. + if test -n "$inst_prefix_dir" &&
  49057. + test -f "$inst_prefix_dir$libdir/$linklib" ; then
  49058. + add="$inst_prefix_dir$libdir/$linklib"
  49059. + else
  49060. + add="$libdir/$linklib"
  49061. + fi
  49062. + else
  49063. + # We cannot seem to hardcode it, guess we'll fake it.
  49064. + add_dir="-L$libdir"
  49065. + # Try looking first in the location we're being installed to.
  49066. + if test -n "$inst_prefix_dir"; then
  49067. + case $libdir in
  49068. + [\\/]*)
  49069. + add_dir="$add_dir -L$inst_prefix_dir$libdir"
  49070. + ;;
  49071. + esac
  49072. + fi
  49073. + add="-l$name"
  49074. + fi
  49075. +
  49076. + if test "$linkmode" = prog; then
  49077. + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
  49078. + test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
  49079. + else
  49080. + test -n "$add_dir" && deplibs="$add_dir $deplibs"
  49081. + test -n "$add" && deplibs="$add $deplibs"
  49082. + fi
  49083. + fi
  49084. + elif test "$linkmode" = prog; then
  49085. + # Here we assume that one of hardcode_direct or hardcode_minus_L
  49086. + # is not unsupported. This is valid on all known static and
  49087. + # shared platforms.
  49088. + if test "$hardcode_direct" != unsupported; then
  49089. + test -n "$old_library" && linklib="$old_library"
  49090. + compile_deplibs="$dir/$linklib $compile_deplibs"
  49091. + finalize_deplibs="$dir/$linklib $finalize_deplibs"
  49092. + else
  49093. + compile_deplibs="-l$name -L$dir $compile_deplibs"
  49094. + finalize_deplibs="-l$name -L$dir $finalize_deplibs"
  49095. + fi
  49096. + elif test "$build_libtool_libs" = yes; then
  49097. + # Not a shared library
  49098. + if test "$deplibs_check_method" != pass_all; then
  49099. + # We're trying link a shared library against a static one
  49100. + # but the system doesn't support it.
  49101. +
  49102. + # Just print a warning and add the library to dependency_libs so
  49103. + # that the program can be linked against the static library.
  49104. + $ECHO
  49105. + $ECHO "*** Warning: This system can not link to static lib archive $lib."
  49106. + $ECHO "*** I have the capability to make that library automatically link in when"
  49107. + $ECHO "*** you link to this library. But I can only do this if you have a"
  49108. + $ECHO "*** shared version of the library, which you do not appear to have."
  49109. + if test "$module" = yes; then
  49110. + $ECHO "*** But as you try to build a module library, libtool will still create "
  49111. + $ECHO "*** a static module, that should work as long as the dlopening application"
  49112. + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
  49113. + if test -z "$global_symbol_pipe"; then
  49114. + $ECHO
  49115. + $ECHO "*** However, this would only work if libtool was able to extract symbol"
  49116. + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
  49117. + $ECHO "*** not find such a program. So, this module is probably useless."
  49118. + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
  49119. + fi
  49120. + if test "$build_old_libs" = no; then
  49121. + build_libtool_libs=module
  49122. + build_old_libs=yes
  49123. + else
  49124. + build_libtool_libs=no
  49125. + fi
  49126. + fi
  49127. + else
  49128. + deplibs="$dir/$old_library $deplibs"
  49129. + link_static=yes
  49130. + fi
  49131. + fi # link shared/static library?
  49132. +
  49133. + if test "$linkmode" = lib; then
  49134. + if test -n "$dependency_libs" &&
  49135. + { test "$hardcode_into_libs" != yes ||
  49136. + test "$build_old_libs" = yes ||
  49137. + test "$link_static" = yes; }; then
  49138. + # Extract -R from dependency_libs
  49139. + temp_deplibs=
  49140. + for libdir in $dependency_libs; do
  49141. + case $libdir in
  49142. + -R*) func_stripname '-R' '' "$libdir"
  49143. + temp_xrpath=$func_stripname_result
  49144. + case " $xrpath " in
  49145. + *" $temp_xrpath "*) ;;
  49146. + *) xrpath="$xrpath $temp_xrpath";;
  49147. + esac;;
  49148. + *) temp_deplibs="$temp_deplibs $libdir";;
  49149. + esac
  49150. + done
  49151. + dependency_libs="$temp_deplibs"
  49152. + fi
  49153. +
  49154. + newlib_search_path="$newlib_search_path $absdir"
  49155. + # Link against this library
  49156. + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
  49157. + # ... and its dependency_libs
  49158. + tmp_libs=
  49159. + for deplib in $dependency_libs; do
  49160. + newdependency_libs="$deplib $newdependency_libs"
  49161. + if $opt_duplicate_deps ; then
  49162. + case "$tmp_libs " in
  49163. + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
  49164. + esac
  49165. + fi
  49166. + tmp_libs="$tmp_libs $deplib"
  49167. + done
  49168. +
  49169. + if test "$link_all_deplibs" != no; then
  49170. + # Add the search paths of all dependency libraries
  49171. + for deplib in $dependency_libs; do
  49172. + case $deplib in
  49173. + -L*) path="$deplib" ;;
  49174. + *.la)
  49175. + func_dirname "$deplib" "" "."
  49176. + dir="$func_dirname_result"
  49177. + # We need an absolute path.
  49178. + case $dir in
  49179. + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
  49180. + *)
  49181. + absdir=`cd "$dir" && pwd`
  49182. + if test -z "$absdir"; then
  49183. + func_warning "cannot determine absolute directory name of \`$dir'"
  49184. + absdir="$dir"
  49185. + fi
  49186. + ;;
  49187. + esac
  49188. + if $GREP "^installed=no" $deplib > /dev/null; then
  49189. + case $host in
  49190. + *-*-darwin*)
  49191. + depdepl=
  49192. + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
  49193. + if test -n "$deplibrary_names" ; then
  49194. + for tmp in $deplibrary_names ; do
  49195. + depdepl=$tmp
  49196. + done
  49197. + if test -f "$absdir/$objdir/$depdepl" ; then
  49198. + depdepl="$absdir/$objdir/$depdepl"
  49199. + darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
  49200. + darwin_install_name=`$ECHO $darwin_install_name`
  49201. + if test -z "$darwin_install_name"; then
  49202. + darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
  49203. + darwin_install_name=`$ECHO $darwin_install_name`
  49204. + fi
  49205. + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
  49206. + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
  49207. + path=
  49208. + fi
  49209. + fi
  49210. + ;;
  49211. + *)
  49212. + path="-L$absdir/$objdir"
  49213. + ;;
  49214. + esac
  49215. + else
  49216. + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
  49217. + test -z "$libdir" && \
  49218. + func_fatal_error "\`$deplib' is not a valid libtool archive"
  49219. + test "$absdir" != "$libdir" && \
  49220. + func_warning "\`$deplib' seems to be moved"
  49221. +
  49222. + path="-L$absdir"
  49223. + fi
  49224. + ;;
  49225. + esac
  49226. + case " $deplibs " in
  49227. + *" $path "*) ;;
  49228. + *) deplibs="$path $deplibs" ;;
  49229. + esac
  49230. + done
  49231. + fi # link_all_deplibs != no
  49232. + fi # linkmode = lib
  49233. + done # for deplib in $libs
  49234. + dependency_libs="$newdependency_libs"
  49235. + if test "$pass" = dlpreopen; then
  49236. + # Link the dlpreopened libraries before other libraries
  49237. + for deplib in $save_deplibs; do
  49238. + deplibs="$deplib $deplibs"
  49239. + done
  49240. + fi
  49241. + if test "$pass" != dlopen; then
  49242. + if test "$pass" != conv; then
  49243. + # Make sure lib_search_path contains only unique directories.
  49244. + lib_search_path=
  49245. + for dir in $newlib_search_path; do
  49246. + case "$lib_search_path " in
  49247. + *" $dir "*) ;;
  49248. + *) lib_search_path="$lib_search_path $dir" ;;
  49249. + esac
  49250. + done
  49251. + newlib_search_path=
  49252. + fi
  49253. +
  49254. + if test "$linkmode,$pass" != "prog,link"; then
  49255. + vars="deplibs"
  49256. + else
  49257. + vars="compile_deplibs finalize_deplibs"
  49258. + fi
  49259. + for var in $vars dependency_libs; do
  49260. + # Add libraries to $var in reverse order
  49261. + eval tmp_libs=\"\$$var\"
  49262. + new_libs=
  49263. + for deplib in $tmp_libs; do
  49264. + # FIXME: Pedantically, this is the right thing to do, so
  49265. + # that some nasty dependency loop isn't accidentally
  49266. + # broken:
  49267. + #new_libs="$deplib $new_libs"
  49268. + # Pragmatically, this seems to cause very few problems in
  49269. + # practice:
  49270. + case $deplib in
  49271. + -L*) new_libs="$deplib $new_libs" ;;
  49272. + -R*) ;;
  49273. + *)
  49274. + # And here is the reason: when a library appears more
  49275. + # than once as an explicit dependence of a library, or
  49276. + # is implicitly linked in more than once by the
  49277. + # compiler, it is considered special, and multiple
  49278. + # occurrences thereof are not removed. Compare this
  49279. + # with having the same library being listed as a
  49280. + # dependency of multiple other libraries: in this case,
  49281. + # we know (pedantically, we assume) the library does not
  49282. + # need to be listed more than once, so we keep only the
  49283. + # last copy. This is not always right, but it is rare
  49284. + # enough that we require users that really mean to play
  49285. + # such unportable linking tricks to link the library
  49286. + # using -Wl,-lname, so that libtool does not consider it
  49287. + # for duplicate removal.
  49288. + case " $specialdeplibs " in
  49289. + *" $deplib "*) new_libs="$deplib $new_libs" ;;
  49290. + *)
  49291. + case " $new_libs " in
  49292. + *" $deplib "*) ;;
  49293. + *) new_libs="$deplib $new_libs" ;;
  49294. + esac
  49295. + ;;
  49296. + esac
  49297. + ;;
  49298. + esac
  49299. + done
  49300. + tmp_libs=
  49301. + for deplib in $new_libs; do
  49302. + case $deplib in
  49303. + -L*)
  49304. + case " $tmp_libs " in
  49305. + *" $deplib "*) ;;
  49306. + *) tmp_libs="$tmp_libs $deplib" ;;
  49307. + esac
  49308. + ;;
  49309. + *) tmp_libs="$tmp_libs $deplib" ;;
  49310. + esac
  49311. + done
  49312. + eval $var=\"$tmp_libs\"
  49313. + done # for var
  49314. + fi
  49315. + # Last step: remove runtime libs from dependency_libs
  49316. + # (they stay in deplibs)
  49317. + tmp_libs=
  49318. + for i in $dependency_libs ; do
  49319. + case " $predeps $postdeps $compiler_lib_search_path " in
  49320. + *" $i "*)
  49321. + i=""
  49322. + ;;
  49323. + esac
  49324. + if test -n "$i" ; then
  49325. + tmp_libs="$tmp_libs $i"
  49326. + fi
  49327. + done
  49328. + dependency_libs=$tmp_libs
  49329. + done # for pass
  49330. + if test "$linkmode" = prog; then
  49331. + dlfiles="$newdlfiles"
  49332. + fi
  49333. + if test "$linkmode" = prog || test "$linkmode" = lib; then
  49334. + dlprefiles="$newdlprefiles"
  49335. + fi
  49336. +
  49337. + case $linkmode in
  49338. + oldlib)
  49339. + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  49340. + func_warning "\`-dlopen' is ignored for archives"
  49341. + fi
  49342. +
  49343. + test -n "$deplibs" && \
  49344. + func_warning "\`-l' and \`-L' are ignored for archives"
  49345. +
  49346. +
  49347. + test -n "$rpath" && \
  49348. + func_warning "\`-rpath' is ignored for archives"
  49349. +
  49350. + test -n "$xrpath" && \
  49351. + func_warning "\`-R' is ignored for archives"
  49352. +
  49353. + test -n "$vinfo" && \
  49354. + func_warning "\`-version-info/-version-number' is ignored for archives"
  49355. +
  49356. + test -n "$release" && \
  49357. + func_warning "\`-release' is ignored for archives"
  49358. +
  49359. + test -n "$export_symbols$export_symbols_regex" && \
  49360. + func_warning "\`-export-symbols' is ignored for archives"
  49361. +
  49362. + # Now set the variables for building old libraries.
  49363. + build_libtool_libs=no
  49364. + oldlibs="$output"
  49365. + objs="$objs$old_deplibs"
  49366. + ;;
  49367. +
  49368. + lib)
  49369. + # Make sure we only generate libraries of the form `libNAME.la'.
  49370. + case $outputname in
  49371. + lib*)
  49372. + func_stripname 'lib' '.la' "$outputname"
  49373. + name=$func_stripname_result
  49374. + eval shared_ext=\"$shrext_cmds\"
  49375. + eval libname=\"$libname_spec\"
  49376. + ;;
  49377. + *)
  49378. + test "$module" = no && \
  49379. + func_fatal_help "libtool library \`$output' must begin with \`lib'"
  49380. +
  49381. + if test "$need_lib_prefix" != no; then
  49382. + # Add the "lib" prefix for modules if required
  49383. + func_stripname '' '.la' "$outputname"
  49384. + name=$func_stripname_result
  49385. + eval shared_ext=\"$shrext_cmds\"
  49386. + eval libname=\"$libname_spec\"
  49387. + else
  49388. + func_stripname '' '.la' "$outputname"
  49389. + libname=$func_stripname_result
  49390. + fi
  49391. + ;;
  49392. + esac
  49393. +
  49394. + if test -n "$objs"; then
  49395. + if test "$deplibs_check_method" != pass_all; then
  49396. + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
  49397. + else
  49398. + $ECHO
  49399. + $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
  49400. + $ECHO "*** objects $objs is not portable!"
  49401. + libobjs="$libobjs $objs"
  49402. + fi
  49403. + fi
  49404. +
  49405. + test "$dlself" != no && \
  49406. + func_warning "\`-dlopen self' is ignored for libtool libraries"
  49407. +
  49408. + set dummy $rpath
  49409. + shift
  49410. + test "$#" -gt 1 && \
  49411. + func_warning "ignoring multiple \`-rpath's for a libtool library"
  49412. +
  49413. + install_libdir="$1"
  49414. +
  49415. + oldlibs=
  49416. + if test -z "$rpath"; then
  49417. + if test "$build_libtool_libs" = yes; then
  49418. + # Building a libtool convenience library.
  49419. + # Some compilers have problems with a `.al' extension so
  49420. + # convenience libraries should have the same extension an
  49421. + # archive normally would.
  49422. + oldlibs="$output_objdir/$libname.$libext $oldlibs"
  49423. + build_libtool_libs=convenience
  49424. + build_old_libs=yes
  49425. + fi
  49426. +
  49427. + test -n "$vinfo" && \
  49428. + func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
  49429. +
  49430. + test -n "$release" && \
  49431. + func_warning "\`-release' is ignored for convenience libraries"
  49432. + else
  49433. +
  49434. + # Parse the version information argument.
  49435. + save_ifs="$IFS"; IFS=':'
  49436. + set dummy $vinfo 0 0 0
  49437. + shift
  49438. + IFS="$save_ifs"
  49439. +
  49440. + test -n "$7" && \
  49441. + func_fatal_help "too many parameters to \`-version-info'"
  49442. +
  49443. + # convert absolute version numbers to libtool ages
  49444. + # this retains compatibility with .la files and attempts
  49445. + # to make the code below a bit more comprehensible
  49446. +
  49447. + case $vinfo_number in
  49448. + yes)
  49449. + number_major="$1"
  49450. + number_minor="$2"
  49451. + number_revision="$3"
  49452. + #
  49453. + # There are really only two kinds -- those that
  49454. + # use the current revision as the major version
  49455. + # and those that subtract age and use age as
  49456. + # a minor version. But, then there is irix
  49457. + # which has an extra 1 added just for fun
  49458. + #
  49459. + case $version_type in
  49460. + darwin|linux|osf|windows|none)
  49461. + current=`expr $number_major + $number_minor`
  49462. + age="$number_minor"
  49463. + revision="$number_revision"
  49464. + ;;
  49465. + freebsd-aout|freebsd-elf|sunos)
  49466. + current="$number_major"
  49467. + revision="$number_minor"
  49468. + age="0"
  49469. + ;;
  49470. + irix|nonstopux)
  49471. + current=`expr $number_major + $number_minor - 1`
  49472. + age="$number_minor"
  49473. + revision="$number_minor"
  49474. + ;;
  49475. + esac
  49476. + ;;
  49477. + no)
  49478. + current="$1"
  49479. + revision="$2"
  49480. + age="$3"
  49481. + ;;
  49482. + esac
  49483. +
  49484. + # Check that each of the things are valid numbers.
  49485. + case $current in
  49486. + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  49487. + *)
  49488. + func_error "CURRENT \`$current' must be a nonnegative integer"
  49489. + func_fatal_error "\`$vinfo' is not valid version information"
  49490. + ;;
  49491. + esac
  49492. +
  49493. + case $revision in
  49494. + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  49495. + *)
  49496. + func_error "REVISION \`$revision' must be a nonnegative integer"
  49497. + func_fatal_error "\`$vinfo' is not valid version information"
  49498. + ;;
  49499. + esac
  49500. +
  49501. + case $age in
  49502. + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  49503. + *)
  49504. + func_error "AGE \`$age' must be a nonnegative integer"
  49505. + func_fatal_error "\`$vinfo' is not valid version information"
  49506. + ;;
  49507. + esac
  49508. +
  49509. + if test "$age" -gt "$current"; then
  49510. + func_error "AGE \`$age' is greater than the current interface number \`$current'"
  49511. + func_fatal_error "\`$vinfo' is not valid version information"
  49512. + fi
  49513. +
  49514. + # Calculate the version variables.
  49515. + major=
  49516. + versuffix=
  49517. + verstring=
  49518. + case $version_type in
  49519. + none) ;;
  49520. +
  49521. + darwin)
  49522. + # Like Linux, but with the current version available in
  49523. + # verstring for coding it into the library header
  49524. + major=.`expr $current - $age`
  49525. + versuffix="$major.$age.$revision"
  49526. + # Darwin ld doesn't like 0 for these options...
  49527. + minor_current=`expr $current + 1`
  49528. + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
  49529. + ;;
  49530. +
  49531. + freebsd-aout)
  49532. + major=".$current"
  49533. + versuffix=".$current.$revision";
  49534. + ;;
  49535. +
  49536. + freebsd-elf)
  49537. + major=".$current"
  49538. + versuffix=".$current"
  49539. + ;;
  49540. +
  49541. + irix | nonstopux)
  49542. + major=`expr $current - $age + 1`
  49543. +
  49544. + case $version_type in
  49545. + nonstopux) verstring_prefix=nonstopux ;;
  49546. + *) verstring_prefix=sgi ;;
  49547. + esac
  49548. + verstring="$verstring_prefix$major.$revision"
  49549. +
  49550. + # Add in all the interfaces that we are compatible with.
  49551. + loop=$revision
  49552. + while test "$loop" -ne 0; do
  49553. + iface=`expr $revision - $loop`
  49554. + loop=`expr $loop - 1`
  49555. + verstring="$verstring_prefix$major.$iface:$verstring"
  49556. + done
  49557. +
  49558. + # Before this point, $major must not contain `.'.
  49559. + major=.$major
  49560. + versuffix="$major.$revision"
  49561. + ;;
  49562. +
  49563. + linux)
  49564. + major=.`expr $current - $age`
  49565. + versuffix="$major.$age.$revision"
  49566. + ;;
  49567. +
  49568. + osf)
  49569. + major=.`expr $current - $age`
  49570. + versuffix=".$current.$age.$revision"
  49571. + verstring="$current.$age.$revision"
  49572. +
  49573. + # Add in all the interfaces that we are compatible with.
  49574. + loop=$age
  49575. + while test "$loop" -ne 0; do
  49576. + iface=`expr $current - $loop`
  49577. + loop=`expr $loop - 1`
  49578. + verstring="$verstring:${iface}.0"
  49579. + done
  49580. +
  49581. + # Make executables depend on our current version.
  49582. + verstring="$verstring:${current}.0"
  49583. + ;;
  49584. +
  49585. + qnx)
  49586. + major=".$current"
  49587. + versuffix=".$current"
  49588. + ;;
  49589. +
  49590. + sunos)
  49591. + major=".$current"
  49592. + versuffix=".$current.$revision"
  49593. + ;;
  49594. +
  49595. + windows)
  49596. + # Use '-' rather than '.', since we only want one
  49597. + # extension on DOS 8.3 filesystems.
  49598. + major=`expr $current - $age`
  49599. + versuffix="-$major"
  49600. + ;;
  49601. +
  49602. + *)
  49603. + func_fatal_configuration "unknown library version type \`$version_type'"
  49604. + ;;
  49605. + esac
  49606. +
  49607. + # Clear the version info if we defaulted, and they specified a release.
  49608. + if test -z "$vinfo" && test -n "$release"; then
  49609. + major=
  49610. + case $version_type in
  49611. + darwin)
  49612. + # we can't check for "0.0" in archive_cmds due to quoting
  49613. + # problems, so we reset it completely
  49614. + verstring=
  49615. + ;;
  49616. + *)
  49617. + verstring="0.0"
  49618. + ;;
  49619. + esac
  49620. + if test "$need_version" = no; then
  49621. + versuffix=
  49622. + else
  49623. + versuffix=".0.0"
  49624. + fi
  49625. + fi
  49626. +
  49627. + # Remove version info from name if versioning should be avoided
  49628. + if test "$avoid_version" = yes && test "$need_version" = no; then
  49629. + major=
  49630. + versuffix=
  49631. + verstring=""
  49632. + fi
  49633. +
  49634. + # Check to see if the archive will have undefined symbols.
  49635. + if test "$allow_undefined" = yes; then
  49636. + if test "$allow_undefined_flag" = unsupported; then
  49637. + func_warning "undefined symbols not allowed in $host shared libraries"
  49638. + build_libtool_libs=no
  49639. + build_old_libs=yes
  49640. + fi
  49641. + else
  49642. + # Don't allow undefined symbols.
  49643. + allow_undefined_flag="$no_undefined_flag"
  49644. + fi
  49645. +
  49646. + fi
  49647. +
  49648. + func_generate_dlsyms "$libname" "$libname" "yes"
  49649. + libobjs="$libobjs $symfileobj"
  49650. + test "X$libobjs" = "X " && libobjs=
  49651. +
  49652. + if test "$mode" != relink; then
  49653. + # Remove our outputs, but don't remove object files since they
  49654. + # may have been created when compiling PIC objects.
  49655. + removelist=
  49656. + tempremovelist=`$ECHO "$output_objdir/*"`
  49657. + for p in $tempremovelist; do
  49658. + case $p in
  49659. + *.$objext)
  49660. + ;;
  49661. + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
  49662. + if test "X$precious_files_regex" != "X"; then
  49663. + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
  49664. + then
  49665. + continue
  49666. + fi
  49667. + fi
  49668. + removelist="$removelist $p"
  49669. + ;;
  49670. + *) ;;
  49671. + esac
  49672. + done
  49673. + test -n "$removelist" && \
  49674. + func_show_eval "${RM}r \$removelist"
  49675. + fi
  49676. +
  49677. + # Now set the variables for building old libraries.
  49678. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
  49679. + oldlibs="$oldlibs $output_objdir/$libname.$libext"
  49680. +
  49681. + # Transform .lo files to .o files.
  49682. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
  49683. + fi
  49684. +
  49685. + # Eliminate all temporary directories.
  49686. + #for path in $notinst_path; do
  49687. + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
  49688. + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
  49689. + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
  49690. + #done
  49691. +
  49692. + if test -n "$xrpath"; then
  49693. + # If the user specified any rpath flags, then add them.
  49694. + temp_xrpath=
  49695. + for libdir in $xrpath; do
  49696. + temp_xrpath="$temp_xrpath -R$libdir"
  49697. + case "$finalize_rpath " in
  49698. + *" $libdir "*) ;;
  49699. + *) finalize_rpath="$finalize_rpath $libdir" ;;
  49700. + esac
  49701. + done
  49702. + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
  49703. + dependency_libs="$temp_xrpath $dependency_libs"
  49704. + fi
  49705. + fi
  49706. +
  49707. + # Make sure dlfiles contains only unique files that won't be dlpreopened
  49708. + old_dlfiles="$dlfiles"
  49709. + dlfiles=
  49710. + for lib in $old_dlfiles; do
  49711. + case " $dlprefiles $dlfiles " in
  49712. + *" $lib "*) ;;
  49713. + *) dlfiles="$dlfiles $lib" ;;
  49714. + esac
  49715. + done
  49716. +
  49717. + # Make sure dlprefiles contains only unique files
  49718. + old_dlprefiles="$dlprefiles"
  49719. + dlprefiles=
  49720. + for lib in $old_dlprefiles; do
  49721. + case "$dlprefiles " in
  49722. + *" $lib "*) ;;
  49723. + *) dlprefiles="$dlprefiles $lib" ;;
  49724. + esac
  49725. + done
  49726. +
  49727. + if test "$build_libtool_libs" = yes; then
  49728. + if test -n "$rpath"; then
  49729. + case $host in
  49730. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
  49731. + # these systems don't actually have a c library (as such)!
  49732. + ;;
  49733. + *-*-rhapsody* | *-*-darwin1.[012])
  49734. + # Rhapsody C library is in the System framework
  49735. + deplibs="$deplibs System.ltframework"
  49736. + ;;
  49737. + *-*-netbsd*)
  49738. + # Don't link with libc until the a.out ld.so is fixed.
  49739. + ;;
  49740. + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  49741. + # Do not include libc due to us having libc/libc_r.
  49742. + ;;
  49743. + *-*-sco3.2v5* | *-*-sco5v6*)
  49744. + # Causes problems with __ctype
  49745. + ;;
  49746. + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
  49747. + # Compiler inserts libc in the correct place for threads to work
  49748. + ;;
  49749. + *)
  49750. + # Add libc to deplibs on all other systems if necessary.
  49751. + if test "$build_libtool_need_lc" = "yes"; then
  49752. + deplibs="$deplibs -lc"
  49753. + fi
  49754. + ;;
  49755. + esac
  49756. + fi
  49757. +
  49758. + # Transform deplibs into only deplibs that can be linked in shared.
  49759. + name_save=$name
  49760. + libname_save=$libname
  49761. + release_save=$release
  49762. + versuffix_save=$versuffix
  49763. + major_save=$major
  49764. + # I'm not sure if I'm treating the release correctly. I think
  49765. + # release should show up in the -l (ie -lgmp5) so we don't want to
  49766. + # add it in twice. Is that correct?
  49767. + release=""
  49768. + versuffix=""
  49769. + major=""
  49770. + newdeplibs=
  49771. + droppeddeps=no
  49772. + case $deplibs_check_method in
  49773. + pass_all)
  49774. + # Don't check for shared/static. Everything works.
  49775. + # This might be a little naive. We might want to check
  49776. + # whether the library exists or not. But this is on
  49777. + # osf3 & osf4 and I'm not really sure... Just
  49778. + # implementing what was already the behavior.
  49779. + newdeplibs=$deplibs
  49780. + ;;
  49781. + test_compile)
  49782. + # This code stresses the "libraries are programs" paradigm to its
  49783. + # limits. Maybe even breaks it. We compile a program, linking it
  49784. + # against the deplibs as a proxy for the library. Then we can check
  49785. + # whether they linked in statically or dynamically with ldd.
  49786. + $opt_dry_run || $RM conftest.c
  49787. + cat > conftest.c <<EOF
  49788. + int main() { return 0; }
  49789. +EOF
  49790. + $opt_dry_run || $RM conftest
  49791. + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
  49792. + ldd_output=`ldd conftest`
  49793. + for i in $deplibs; do
  49794. + name=`expr $i : '-l\(.*\)'`
  49795. + # If $name is empty we are operating on a -L argument.
  49796. + if test "$name" != "" && test "$name" != "0"; then
  49797. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  49798. + case " $predeps $postdeps " in
  49799. + *" $i "*)
  49800. + newdeplibs="$newdeplibs $i"
  49801. + i=""
  49802. + ;;
  49803. + esac
  49804. + fi
  49805. + if test -n "$i" ; then
  49806. + libname=`eval "\\$ECHO \"$libname_spec\""`
  49807. + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
  49808. + set dummy $deplib_matches; shift
  49809. + deplib_match=$1
  49810. + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
  49811. + newdeplibs="$newdeplibs $i"
  49812. + else
  49813. + droppeddeps=yes
  49814. + $ECHO
  49815. + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
  49816. + $ECHO "*** I have the capability to make that library automatically link in when"
  49817. + $ECHO "*** you link to this library. But I can only do this if you have a"
  49818. + $ECHO "*** shared version of the library, which I believe you do not have"
  49819. + $ECHO "*** because a test_compile did reveal that the linker did not use it for"
  49820. + $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
  49821. + fi
  49822. + fi
  49823. + else
  49824. + newdeplibs="$newdeplibs $i"
  49825. + fi
  49826. + done
  49827. + else
  49828. + # Error occurred in the first compile. Let's try to salvage
  49829. + # the situation: Compile a separate program for each library.
  49830. + for i in $deplibs; do
  49831. + name=`expr $i : '-l\(.*\)'`
  49832. + # If $name is empty we are operating on a -L argument.
  49833. + if test "$name" != "" && test "$name" != "0"; then
  49834. + $opt_dry_run || $RM conftest
  49835. + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
  49836. + ldd_output=`ldd conftest`
  49837. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  49838. + case " $predeps $postdeps " in
  49839. + *" $i "*)
  49840. + newdeplibs="$newdeplibs $i"
  49841. + i=""
  49842. + ;;
  49843. + esac
  49844. + fi
  49845. + if test -n "$i" ; then
  49846. + libname=`eval "\\$ECHO \"$libname_spec\""`
  49847. + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
  49848. + set dummy $deplib_matches; shift
  49849. + deplib_match=$1
  49850. + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
  49851. + newdeplibs="$newdeplibs $i"
  49852. + else
  49853. + droppeddeps=yes
  49854. + $ECHO
  49855. + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
  49856. + $ECHO "*** I have the capability to make that library automatically link in when"
  49857. + $ECHO "*** you link to this library. But I can only do this if you have a"
  49858. + $ECHO "*** shared version of the library, which you do not appear to have"
  49859. + $ECHO "*** because a test_compile did reveal that the linker did not use this one"
  49860. + $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
  49861. + fi
  49862. + fi
  49863. + else
  49864. + droppeddeps=yes
  49865. + $ECHO
  49866. + $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
  49867. + $ECHO "*** make it link in! You will probably need to install it or some"
  49868. + $ECHO "*** library that it depends on before this library will be fully"
  49869. + $ECHO "*** functional. Installing it before continuing would be even better."
  49870. + fi
  49871. + else
  49872. + newdeplibs="$newdeplibs $i"
  49873. + fi
  49874. + done
  49875. + fi
  49876. + ;;
  49877. + file_magic*)
  49878. + set dummy $deplibs_check_method; shift
  49879. + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  49880. + for a_deplib in $deplibs; do
  49881. + name=`expr $a_deplib : '-l\(.*\)'`
  49882. + # If $name is empty we are operating on a -L argument.
  49883. + if test "$name" != "" && test "$name" != "0"; then
  49884. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  49885. + case " $predeps $postdeps " in
  49886. + *" $a_deplib "*)
  49887. + newdeplibs="$newdeplibs $a_deplib"
  49888. + a_deplib=""
  49889. + ;;
  49890. + esac
  49891. + fi
  49892. + if test -n "$a_deplib" ; then
  49893. + libname=`eval "\\$ECHO \"$libname_spec\""`
  49894. + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
  49895. + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
  49896. + for potent_lib in $potential_libs; do
  49897. + # Follow soft links.
  49898. + if ls -lLd "$potent_lib" 2>/dev/null |
  49899. + $GREP " -> " >/dev/null; then
  49900. + continue
  49901. + fi
  49902. + # The statement above tries to avoid entering an
  49903. + # endless loop below, in case of cyclic links.
  49904. + # We might still enter an endless loop, since a link
  49905. + # loop can be closed while we follow links,
  49906. + # but so what?
  49907. + potlib="$potent_lib"
  49908. + while test -h "$potlib" 2>/dev/null; do
  49909. + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
  49910. + case $potliblink in
  49911. + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
  49912. + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
  49913. + esac
  49914. + done
  49915. + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
  49916. + $SED -e 10q |
  49917. + $EGREP "$file_magic_regex" > /dev/null; then
  49918. + newdeplibs="$newdeplibs $a_deplib"
  49919. + a_deplib=""
  49920. + break 2
  49921. + fi
  49922. + done
  49923. + done
  49924. + fi
  49925. + if test -n "$a_deplib" ; then
  49926. + droppeddeps=yes
  49927. + $ECHO
  49928. + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
  49929. + $ECHO "*** I have the capability to make that library automatically link in when"
  49930. + $ECHO "*** you link to this library. But I can only do this if you have a"
  49931. + $ECHO "*** shared version of the library, which you do not appear to have"
  49932. + $ECHO "*** because I did check the linker path looking for a file starting"
  49933. + if test -z "$potlib" ; then
  49934. + $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
  49935. + else
  49936. + $ECHO "*** with $libname and none of the candidates passed a file format test"
  49937. + $ECHO "*** using a file magic. Last file checked: $potlib"
  49938. + fi
  49939. + fi
  49940. + else
  49941. + # Add a -L argument.
  49942. + newdeplibs="$newdeplibs $a_deplib"
  49943. + fi
  49944. + done # Gone through all deplibs.
  49945. + ;;
  49946. + match_pattern*)
  49947. + set dummy $deplibs_check_method; shift
  49948. + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  49949. + for a_deplib in $deplibs; do
  49950. + name=`expr $a_deplib : '-l\(.*\)'`
  49951. + # If $name is empty we are operating on a -L argument.
  49952. + if test -n "$name" && test "$name" != "0"; then
  49953. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  49954. + case " $predeps $postdeps " in
  49955. + *" $a_deplib "*)
  49956. + newdeplibs="$newdeplibs $a_deplib"
  49957. + a_deplib=""
  49958. + ;;
  49959. + esac
  49960. + fi
  49961. + if test -n "$a_deplib" ; then
  49962. + libname=`eval "\\$ECHO \"$libname_spec\""`
  49963. + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
  49964. + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
  49965. + for potent_lib in $potential_libs; do
  49966. + potlib="$potent_lib" # see symlink-check above in file_magic test
  49967. + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
  49968. + $EGREP "$match_pattern_regex" > /dev/null; then
  49969. + newdeplibs="$newdeplibs $a_deplib"
  49970. + a_deplib=""
  49971. + break 2
  49972. + fi
  49973. + done
  49974. + done
  49975. + fi
  49976. + if test -n "$a_deplib" ; then
  49977. + droppeddeps=yes
  49978. + $ECHO
  49979. + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
  49980. + $ECHO "*** I have the capability to make that library automatically link in when"
  49981. + $ECHO "*** you link to this library. But I can only do this if you have a"
  49982. + $ECHO "*** shared version of the library, which you do not appear to have"
  49983. + $ECHO "*** because I did check the linker path looking for a file starting"
  49984. + if test -z "$potlib" ; then
  49985. + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
  49986. + else
  49987. + $ECHO "*** with $libname and none of the candidates passed a file format test"
  49988. + $ECHO "*** using a regex pattern. Last file checked: $potlib"
  49989. + fi
  49990. + fi
  49991. + else
  49992. + # Add a -L argument.
  49993. + newdeplibs="$newdeplibs $a_deplib"
  49994. + fi
  49995. + done # Gone through all deplibs.
  49996. + ;;
  49997. + none | unknown | *)
  49998. + newdeplibs=""
  49999. + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
  50000. + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
  50001. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  50002. + for i in $predeps $postdeps ; do
  50003. + # can't use Xsed below, because $i might contain '/'
  50004. + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
  50005. + done
  50006. + fi
  50007. + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
  50008. + $GREP . >/dev/null; then
  50009. + $ECHO
  50010. + if test "X$deplibs_check_method" = "Xnone"; then
  50011. + $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
  50012. + else
  50013. + $ECHO "*** Warning: inter-library dependencies are not known to be supported."
  50014. + fi
  50015. + $ECHO "*** All declared inter-library dependencies are being dropped."
  50016. + droppeddeps=yes
  50017. + fi
  50018. + ;;
  50019. + esac
  50020. + versuffix=$versuffix_save
  50021. + major=$major_save
  50022. + release=$release_save
  50023. + libname=$libname_save
  50024. + name=$name_save
  50025. +
  50026. + case $host in
  50027. + *-*-rhapsody* | *-*-darwin1.[012])
  50028. + # On Rhapsody replace the C library with the System framework
  50029. + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
  50030. + ;;
  50031. + esac
  50032. +
  50033. + if test "$droppeddeps" = yes; then
  50034. + if test "$module" = yes; then
  50035. + $ECHO
  50036. + $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
  50037. + $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
  50038. + $ECHO "*** a static module, that should work as long as the dlopening"
  50039. + $ECHO "*** application is linked with the -dlopen flag."
  50040. + if test -z "$global_symbol_pipe"; then
  50041. + $ECHO
  50042. + $ECHO "*** However, this would only work if libtool was able to extract symbol"
  50043. + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
  50044. + $ECHO "*** not find such a program. So, this module is probably useless."
  50045. + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
  50046. + fi
  50047. + if test "$build_old_libs" = no; then
  50048. + oldlibs="$output_objdir/$libname.$libext"
  50049. + build_libtool_libs=module
  50050. + build_old_libs=yes
  50051. + else
  50052. + build_libtool_libs=no
  50053. + fi
  50054. + else
  50055. + $ECHO "*** The inter-library dependencies that have been dropped here will be"
  50056. + $ECHO "*** automatically added whenever a program is linked with this library"
  50057. + $ECHO "*** or is declared to -dlopen it."
  50058. +
  50059. + if test "$allow_undefined" = no; then
  50060. + $ECHO
  50061. + $ECHO "*** Since this library must not contain undefined symbols,"
  50062. + $ECHO "*** because either the platform does not support them or"
  50063. + $ECHO "*** it was explicitly requested with -no-undefined,"
  50064. + $ECHO "*** libtool will only create a static version of it."
  50065. + if test "$build_old_libs" = no; then
  50066. + oldlibs="$output_objdir/$libname.$libext"
  50067. + build_libtool_libs=module
  50068. + build_old_libs=yes
  50069. + else
  50070. + build_libtool_libs=no
  50071. + fi
  50072. + fi
  50073. + fi
  50074. + fi
  50075. + # Done checking deplibs!
  50076. + deplibs=$newdeplibs
  50077. + fi
  50078. + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
  50079. + case $host in
  50080. + *-*-darwin*)
  50081. + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  50082. + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  50083. + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  50084. + ;;
  50085. + esac
  50086. +
  50087. + # move library search paths that coincide with paths to not yet
  50088. + # installed libraries to the beginning of the library search list
  50089. + new_libs=
  50090. + for path in $notinst_path; do
  50091. + case " $new_libs " in
  50092. + *" -L$path/$objdir "*) ;;
  50093. + *)
  50094. + case " $deplibs " in
  50095. + *" -L$path/$objdir "*)
  50096. + new_libs="$new_libs -L$path/$objdir" ;;
  50097. + esac
  50098. + ;;
  50099. + esac
  50100. + done
  50101. + for deplib in $deplibs; do
  50102. + case $deplib in
  50103. + -L*)
  50104. + case " $new_libs " in
  50105. + *" $deplib "*) ;;
  50106. + *) new_libs="$new_libs $deplib" ;;
  50107. + esac
  50108. + ;;
  50109. + *) new_libs="$new_libs $deplib" ;;
  50110. + esac
  50111. + done
  50112. + deplibs="$new_libs"
  50113. +
  50114. + # All the library-specific variables (install_libdir is set above).
  50115. + library_names=
  50116. + old_library=
  50117. + dlname=
  50118. +
  50119. + # Test again, we may have decided not to build it any more
  50120. + if test "$build_libtool_libs" = yes; then
  50121. + if test "$hardcode_into_libs" = yes; then
  50122. + # Hardcode the library paths
  50123. + hardcode_libdirs=
  50124. + dep_rpath=
  50125. + rpath="$finalize_rpath"
  50126. + test "$mode" != relink && rpath="$compile_rpath$rpath"
  50127. + for libdir in $rpath; do
  50128. + if test -n "$hardcode_libdir_flag_spec"; then
  50129. + if test -n "$hardcode_libdir_separator"; then
  50130. + if test -z "$hardcode_libdirs"; then
  50131. + hardcode_libdirs="$libdir"
  50132. + else
  50133. + # Just accumulate the unique libdirs.
  50134. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  50135. + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  50136. + ;;
  50137. + *)
  50138. + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
  50139. + ;;
  50140. + esac
  50141. + fi
  50142. + else
  50143. + eval flag=\"$hardcode_libdir_flag_spec\"
  50144. + dep_rpath="$dep_rpath $flag"
  50145. + fi
  50146. + elif test -n "$runpath_var"; then
  50147. + case "$perm_rpath " in
  50148. + *" $libdir "*) ;;
  50149. + *) perm_rpath="$perm_rpath $libdir" ;;
  50150. + esac
  50151. + fi
  50152. + done
  50153. + # Substitute the hardcoded libdirs into the rpath.
  50154. + if test -n "$hardcode_libdir_separator" &&
  50155. + test -n "$hardcode_libdirs"; then
  50156. + libdir="$hardcode_libdirs"
  50157. + if test -n "$hardcode_libdir_flag_spec_ld"; then
  50158. + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
  50159. + else
  50160. + eval dep_rpath=\"$hardcode_libdir_flag_spec\"
  50161. + fi
  50162. + fi
  50163. + if test -n "$runpath_var" && test -n "$perm_rpath"; then
  50164. + # We should set the runpath_var.
  50165. + rpath=
  50166. + for dir in $perm_rpath; do
  50167. + rpath="$rpath$dir:"
  50168. + done
  50169. + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
  50170. + fi
  50171. + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
  50172. + fi
  50173. +
  50174. + shlibpath="$finalize_shlibpath"
  50175. + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
  50176. + if test -n "$shlibpath"; then
  50177. + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
  50178. + fi
  50179. +
  50180. + # Get the real and link names of the library.
  50181. + eval shared_ext=\"$shrext_cmds\"
  50182. + eval library_names=\"$library_names_spec\"
  50183. + set dummy $library_names
  50184. + shift
  50185. + realname="$1"
  50186. + shift
  50187. +
  50188. + if test -n "$soname_spec"; then
  50189. + eval soname=\"$soname_spec\"
  50190. + else
  50191. + soname="$realname"
  50192. + fi
  50193. + if test -z "$dlname"; then
  50194. + dlname=$soname
  50195. + fi
  50196. +
  50197. + lib="$output_objdir/$realname"
  50198. + linknames=
  50199. + for link
  50200. + do
  50201. + linknames="$linknames $link"
  50202. + done
  50203. +
  50204. + # Use standard objects if they are pic
  50205. + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
  50206. + test "X$libobjs" = "X " && libobjs=
  50207. +
  50208. + delfiles=
  50209. + if test -n "$export_symbols" && test -n "$include_expsyms"; then
  50210. + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
  50211. + export_symbols="$output_objdir/$libname.uexp"
  50212. + delfiles="$delfiles $export_symbols"
  50213. + fi
  50214. +
  50215. + orig_export_symbols=
  50216. + case $host_os in
  50217. + cygwin* | mingw*)
  50218. + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
  50219. + # exporting using user supplied symfile
  50220. + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
  50221. + # and it's NOT already a .def file. Must figure out
  50222. + # which of the given symbols are data symbols and tag
  50223. + # them as such. So, trigger use of export_symbols_cmds.
  50224. + # export_symbols gets reassigned inside the "prepare
  50225. + # the list of exported symbols" if statement, so the
  50226. + # include_expsyms logic still works.
  50227. + orig_export_symbols="$export_symbols"
  50228. + export_symbols=
  50229. + always_export_symbols=yes
  50230. + fi
  50231. + fi
  50232. + ;;
  50233. + esac
  50234. +
  50235. + # Prepare the list of exported symbols
  50236. + if test -z "$export_symbols"; then
  50237. + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
  50238. + func_echo "generating symbol list for \`$libname.la'"
  50239. + export_symbols="$output_objdir/$libname.exp"
  50240. + $opt_dry_run || $RM $export_symbols
  50241. + cmds=$export_symbols_cmds
  50242. + save_ifs="$IFS"; IFS='~'
  50243. + for cmd in $cmds; do
  50244. + IFS="$save_ifs"
  50245. + eval cmd=\"$cmd\"
  50246. + if len=`expr "X$cmd" : ".*"` &&
  50247. + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
  50248. + func_show_eval "$cmd" 'exit $?'
  50249. + skipped_export=false
  50250. + else
  50251. + # The command line is too long to execute in one step.
  50252. + func_echo "using reloadable object file for export list..."
  50253. + skipped_export=:
  50254. + # Break out early, otherwise skipped_export may be
  50255. + # set to false by a later but shorter cmd.
  50256. + break
  50257. + fi
  50258. + done
  50259. + IFS="$save_ifs"
  50260. + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
  50261. + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
  50262. + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
  50263. + fi
  50264. + fi
  50265. + fi
  50266. +
  50267. + if test -n "$export_symbols" && test -n "$include_expsyms"; then
  50268. + tmp_export_symbols="$export_symbols"
  50269. + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
  50270. + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
  50271. + fi
  50272. +
  50273. + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
  50274. + # The given exports_symbols file has to be filtered, so filter it.
  50275. + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
  50276. + # FIXME: $output_objdir/$libname.filter potentially contains lots of
  50277. + # 's' commands which not all seds can handle. GNU sed should be fine
  50278. + # though. Also, the filter scales superlinearly with the number of
  50279. + # global variables. join(1) would be nice here, but unfortunately
  50280. + # isn't a blessed tool.
  50281. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
  50282. + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
  50283. + export_symbols=$output_objdir/$libname.def
  50284. + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
  50285. + fi
  50286. +
  50287. + tmp_deplibs=
  50288. + for test_deplib in $deplibs; do
  50289. + case " $convenience " in
  50290. + *" $test_deplib "*) ;;
  50291. + *)
  50292. + tmp_deplibs="$tmp_deplibs $test_deplib"
  50293. + ;;
  50294. + esac
  50295. + done
  50296. + deplibs="$tmp_deplibs"
  50297. +
  50298. + if test -n "$convenience"; then
  50299. + if test -n "$whole_archive_flag_spec" &&
  50300. + test "$compiler_needs_object" = yes &&
  50301. + test -z "$libobjs"; then
  50302. + # extract the archives, so we have objects to list.
  50303. + # TODO: could optimize this to just extract one archive.
  50304. + whole_archive_flag_spec=
  50305. + fi
  50306. + if test -n "$whole_archive_flag_spec"; then
  50307. + save_libobjs=$libobjs
  50308. + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
  50309. + test "X$libobjs" = "X " && libobjs=
  50310. + else
  50311. + gentop="$output_objdir/${outputname}x"
  50312. + generated="$generated $gentop"
  50313. +
  50314. + func_extract_archives $gentop $convenience
  50315. + libobjs="$libobjs $func_extract_archives_result"
  50316. + test "X$libobjs" = "X " && libobjs=
  50317. + fi
  50318. + fi
  50319. +
  50320. + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
  50321. + eval flag=\"$thread_safe_flag_spec\"
  50322. + linker_flags="$linker_flags $flag"
  50323. + fi
  50324. +
  50325. + # Make a backup of the uninstalled library when relinking
  50326. + if test "$mode" = relink; then
  50327. + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
  50328. + fi
  50329. +
  50330. + # Do each of the archive commands.
  50331. + if test "$module" = yes && test -n "$module_cmds" ; then
  50332. + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
  50333. + eval test_cmds=\"$module_expsym_cmds\"
  50334. + cmds=$module_expsym_cmds
  50335. + else
  50336. + eval test_cmds=\"$module_cmds\"
  50337. + cmds=$module_cmds
  50338. + fi
  50339. + else
  50340. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
  50341. + eval test_cmds=\"$archive_expsym_cmds\"
  50342. + cmds=$archive_expsym_cmds
  50343. + else
  50344. + eval test_cmds=\"$archive_cmds\"
  50345. + cmds=$archive_cmds
  50346. + fi
  50347. + fi
  50348. +
  50349. + if test "X$skipped_export" != "X:" &&
  50350. + len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
  50351. + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
  50352. + :
  50353. + else
  50354. + # The command line is too long to link in one step, link piecewise
  50355. + # or, if using GNU ld and skipped_export is not :, use a linker
  50356. + # script.
  50357. +
  50358. + # Save the value of $output and $libobjs because we want to
  50359. + # use them later. If we have whole_archive_flag_spec, we
  50360. + # want to use save_libobjs as it was before
  50361. + # whole_archive_flag_spec was expanded, because we can't
  50362. + # assume the linker understands whole_archive_flag_spec.
  50363. + # This may have to be revisited, in case too many
  50364. + # convenience libraries get linked in and end up exceeding
  50365. + # the spec.
  50366. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
  50367. + save_libobjs=$libobjs
  50368. + fi
  50369. + save_output=$output
  50370. + output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
  50371. +
  50372. + # Clear the reloadable object creation command queue and
  50373. + # initialize k to one.
  50374. + test_cmds=
  50375. + concat_cmds=
  50376. + objlist=
  50377. + last_robj=
  50378. + k=1
  50379. +
  50380. + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
  50381. + output=${output_objdir}/${output_la}.lnkscript
  50382. + func_echo "creating GNU ld script: $output"
  50383. + $ECHO 'INPUT (' > $output
  50384. + for obj in $save_libobjs
  50385. + do
  50386. + $ECHO "$obj" >> $output
  50387. + done
  50388. + $ECHO ')' >> $output
  50389. + delfiles="$delfiles $output"
  50390. + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
  50391. + output=${output_objdir}/${output_la}.lnk
  50392. + func_echo "creating linker input file list: $output"
  50393. + : > $output
  50394. + set x $save_libobjs
  50395. + shift
  50396. + firstobj=
  50397. + if test "$compiler_needs_object" = yes; then
  50398. + firstobj="$1 "
  50399. + shift
  50400. + fi
  50401. + for obj
  50402. + do
  50403. + $ECHO "$obj" >> $output
  50404. + done
  50405. + delfiles="$delfiles $output"
  50406. + output=$firstobj\"$file_list_spec$output\"
  50407. + else
  50408. + if test -n "$save_libobjs"; then
  50409. + func_echo "creating reloadable object files..."
  50410. + output=$output_objdir/$output_la-${k}.$objext
  50411. + # Loop over the list of objects to be linked.
  50412. + for obj in $save_libobjs
  50413. + do
  50414. + eval test_cmds=\"$reload_cmds $objlist $last_robj\"
  50415. + if test "X$objlist" = X ||
  50416. + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
  50417. + test "$len" -le "$max_cmd_len"; }; then
  50418. + objlist="$objlist $obj"
  50419. + else
  50420. + # The command $test_cmds is almost too long, add a
  50421. + # command to the queue.
  50422. + if test "$k" -eq 1 ; then
  50423. + # The first file doesn't have a previous command to add.
  50424. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
  50425. + else
  50426. + # All subsequent reloadable object files will link in
  50427. + # the last one created.
  50428. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
  50429. + fi
  50430. + last_robj=$output_objdir/$output_la-${k}.$objext
  50431. + k=`expr $k + 1`
  50432. + output=$output_objdir/$output_la-${k}.$objext
  50433. + objlist=$obj
  50434. + len=1
  50435. + fi
  50436. + done
  50437. + # Handle the remaining objects by creating one last
  50438. + # reloadable object file. All subsequent reloadable object
  50439. + # files will link in the last one created.
  50440. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  50441. + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
  50442. +
  50443. + # Set up a command to remove the reloadable object files
  50444. + # after they are used.
  50445. + i=0
  50446. + while test "$i" -lt "$k"
  50447. + do
  50448. + i=`expr $i + 1`
  50449. + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
  50450. + done
  50451. + else
  50452. + output=
  50453. + fi
  50454. +
  50455. + if ${skipped_export-false}; then
  50456. + func_echo "generating symbol list for \`$libname.la'"
  50457. + export_symbols="$output_objdir/$libname.exp"
  50458. + $opt_dry_run || $RM $export_symbols
  50459. + libobjs=$output
  50460. + # Append the command to create the export file.
  50461. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  50462. + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
  50463. + fi
  50464. +
  50465. + test -n "$save_libobjs" &&
  50466. + func_echo "creating a temporary reloadable object file: $output"
  50467. +
  50468. + # Loop through the commands generated above and execute them.
  50469. + save_ifs="$IFS"; IFS='~'
  50470. + for cmd in $concat_cmds; do
  50471. + IFS="$save_ifs"
  50472. + $opt_silent || {
  50473. + func_quote_for_expand "$cmd"
  50474. + eval "func_echo $func_quote_for_expand_result"
  50475. + }
  50476. + $opt_dry_run || eval "$cmd" || {
  50477. + lt_exit=$?
  50478. +
  50479. + # Restore the uninstalled library and exit
  50480. + if test "$mode" = relink; then
  50481. + ( cd "$output_objdir" && \
  50482. + $RM "${realname}T" && \
  50483. + $MV "${realname}U" "$realname" )
  50484. + fi
  50485. +
  50486. + exit $lt_exit
  50487. + }
  50488. + done
  50489. + IFS="$save_ifs"
  50490. +
  50491. + if test -n "$export_symbols_regex" && ${skipped_export-false}; then
  50492. + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
  50493. + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
  50494. + fi
  50495. + fi
  50496. +
  50497. + if ${skipped_export-false}; then
  50498. + if test -n "$export_symbols" && test -n "$include_expsyms"; then
  50499. + tmp_export_symbols="$export_symbols"
  50500. + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
  50501. + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
  50502. + fi
  50503. +
  50504. + if test -n "$orig_export_symbols"; then
  50505. + # The given exports_symbols file has to be filtered, so filter it.
  50506. + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
  50507. + # FIXME: $output_objdir/$libname.filter potentially contains lots of
  50508. + # 's' commands which not all seds can handle. GNU sed should be fine
  50509. + # though. Also, the filter scales superlinearly with the number of
  50510. + # global variables. join(1) would be nice here, but unfortunately
  50511. + # isn't a blessed tool.
  50512. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
  50513. + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
  50514. + export_symbols=$output_objdir/$libname.def
  50515. + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
  50516. + fi
  50517. + fi
  50518. +
  50519. + libobjs=$output
  50520. + # Restore the value of output.
  50521. + output=$save_output
  50522. +
  50523. + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
  50524. + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
  50525. + test "X$libobjs" = "X " && libobjs=
  50526. + fi
  50527. + # Expand the library linking commands again to reset the
  50528. + # value of $libobjs for piecewise linking.
  50529. +
  50530. + # Do each of the archive commands.
  50531. + if test "$module" = yes && test -n "$module_cmds" ; then
  50532. + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
  50533. + cmds=$module_expsym_cmds
  50534. + else
  50535. + cmds=$module_cmds
  50536. + fi
  50537. + else
  50538. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
  50539. + cmds=$archive_expsym_cmds
  50540. + else
  50541. + cmds=$archive_cmds
  50542. + fi
  50543. + fi
  50544. + fi
  50545. +
  50546. + if test -n "$delfiles"; then
  50547. + # Append the command to remove temporary files to $cmds.
  50548. + eval cmds=\"\$cmds~\$RM $delfiles\"
  50549. + fi
  50550. +
  50551. + # Add any objects from preloaded convenience libraries
  50552. + if test -n "$dlprefiles"; then
  50553. + gentop="$output_objdir/${outputname}x"
  50554. + generated="$generated $gentop"
  50555. +
  50556. + func_extract_archives $gentop $dlprefiles
  50557. + libobjs="$libobjs $func_extract_archives_result"
  50558. + test "X$libobjs" = "X " && libobjs=
  50559. + fi
  50560. +
  50561. + save_ifs="$IFS"; IFS='~'
  50562. + for cmd in $cmds; do
  50563. + IFS="$save_ifs"
  50564. + eval cmd=\"$cmd\"
  50565. + $opt_silent || {
  50566. + func_quote_for_expand "$cmd"
  50567. + eval "func_echo $func_quote_for_expand_result"
  50568. + }
  50569. + $opt_dry_run || eval "$cmd" || {
  50570. + lt_exit=$?
  50571. +
  50572. + # Restore the uninstalled library and exit
  50573. + if test "$mode" = relink; then
  50574. + ( cd "$output_objdir" && \
  50575. + $RM "${realname}T" && \
  50576. + $MV "${realname}U" "$realname" )
  50577. + fi
  50578. +
  50579. + exit $lt_exit
  50580. + }
  50581. + done
  50582. + IFS="$save_ifs"
  50583. +
  50584. + # Restore the uninstalled library and exit
  50585. + if test "$mode" = relink; then
  50586. + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
  50587. +
  50588. + if test -n "$convenience"; then
  50589. + if test -z "$whole_archive_flag_spec"; then
  50590. + func_show_eval '${RM}r "$gentop"'
  50591. + fi
  50592. + fi
  50593. +
  50594. + exit $EXIT_SUCCESS
  50595. + fi
  50596. +
  50597. + # Create links to the real library.
  50598. + for linkname in $linknames; do
  50599. + if test "$realname" != "$linkname"; then
  50600. + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
  50601. + fi
  50602. + done
  50603. +
  50604. + # If -module or -export-dynamic was specified, set the dlname.
  50605. + if test "$module" = yes || test "$export_dynamic" = yes; then
  50606. + # On all known operating systems, these are identical.
  50607. + dlname="$soname"
  50608. + fi
  50609. + fi
  50610. + ;;
  50611. +
  50612. + obj)
  50613. + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  50614. + func_warning "\`-dlopen' is ignored for objects"
  50615. + fi
  50616. +
  50617. + test -n "$deplibs" && \
  50618. + func_warning "\`-l' and \`-L' are ignored for objects"
  50619. +
  50620. + test -n "$rpath" && \
  50621. + func_warning "\`-rpath' is ignored for objects"
  50622. +
  50623. + test -n "$xrpath" && \
  50624. + func_warning "\`-R' is ignored for objects"
  50625. +
  50626. + test -n "$vinfo" && \
  50627. + func_warning "\`-version-info' is ignored for objects"
  50628. +
  50629. + test -n "$release" && \
  50630. + func_warning "\`-release' is ignored for objects"
  50631. +
  50632. + case $output in
  50633. + *.lo)
  50634. + test -n "$objs$old_deplibs" && \
  50635. + func_fatal_error "cannot build library object \`$output' from non-libtool objects"
  50636. +
  50637. + libobj=$output
  50638. + func_lo2o "$libobj"
  50639. + obj=$func_lo2o_result
  50640. + ;;
  50641. + *)
  50642. + libobj=
  50643. + obj="$output"
  50644. + ;;
  50645. + esac
  50646. +
  50647. + # Delete the old objects.
  50648. + $opt_dry_run || $RM $obj $libobj
  50649. +
  50650. + # Objects from convenience libraries. This assumes
  50651. + # single-version convenience libraries. Whenever we create
  50652. + # different ones for PIC/non-PIC, this we'll have to duplicate
  50653. + # the extraction.
  50654. + reload_conv_objs=
  50655. + gentop=
  50656. + # reload_cmds runs $LD directly, so let us get rid of
  50657. + # -Wl from whole_archive_flag_spec and hope we can get by with
  50658. + # turning comma into space..
  50659. + wl=
  50660. +
  50661. + if test -n "$convenience"; then
  50662. + if test -n "$whole_archive_flag_spec"; then
  50663. + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
  50664. + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
  50665. + else
  50666. + gentop="$output_objdir/${obj}x"
  50667. + generated="$generated $gentop"
  50668. +
  50669. + func_extract_archives $gentop $convenience
  50670. + reload_conv_objs="$reload_objs $func_extract_archives_result"
  50671. + fi
  50672. + fi
  50673. +
  50674. + # Create the old-style object.
  50675. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
  50676. +
  50677. + output="$obj"
  50678. + func_execute_cmds "$reload_cmds" 'exit $?'
  50679. +
  50680. + # Exit if we aren't doing a library object file.
  50681. + if test -z "$libobj"; then
  50682. + if test -n "$gentop"; then
  50683. + func_show_eval '${RM}r "$gentop"'
  50684. + fi
  50685. +
  50686. + exit $EXIT_SUCCESS
  50687. + fi
  50688. +
  50689. + if test "$build_libtool_libs" != yes; then
  50690. + if test -n "$gentop"; then
  50691. + func_show_eval '${RM}r "$gentop"'
  50692. + fi
  50693. +
  50694. + # Create an invalid libtool object if no PIC, so that we don't
  50695. + # accidentally link it into a program.
  50696. + # $show "echo timestamp > $libobj"
  50697. + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
  50698. + exit $EXIT_SUCCESS
  50699. + fi
  50700. +
  50701. + if test -n "$pic_flag" || test "$pic_mode" != default; then
  50702. + # Only do commands if we really have different PIC objects.
  50703. + reload_objs="$libobjs $reload_conv_objs"
  50704. + output="$libobj"
  50705. + func_execute_cmds "$reload_cmds" 'exit $?'
  50706. + fi
  50707. +
  50708. + if test -n "$gentop"; then
  50709. + func_show_eval '${RM}r "$gentop"'
  50710. + fi
  50711. +
  50712. + exit $EXIT_SUCCESS
  50713. + ;;
  50714. +
  50715. + prog)
  50716. + case $host in
  50717. + *cygwin*) func_stripname '' '.exe' "$output"
  50718. + output=$func_stripname_result.exe;;
  50719. + esac
  50720. + test -n "$vinfo" && \
  50721. + func_warning "\`-version-info' is ignored for programs"
  50722. +
  50723. + test -n "$release" && \
  50724. + func_warning "\`-release' is ignored for programs"
  50725. +
  50726. + test "$preload" = yes \
  50727. + && test "$dlopen_support" = unknown \
  50728. + && test "$dlopen_self" = unknown \
  50729. + && test "$dlopen_self_static" = unknown && \
  50730. + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
  50731. +
  50732. + case $host in
  50733. + *-*-rhapsody* | *-*-darwin1.[012])
  50734. + # On Rhapsody replace the C library is the System framework
  50735. + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
  50736. + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
  50737. + ;;
  50738. + esac
  50739. +
  50740. + case $host in
  50741. + *-*-darwin*)
  50742. + # Don't allow lazy linking, it breaks C++ global constructors
  50743. + # But is supposedly fixed on 10.4 or later (yay!).
  50744. + if test "$tagname" = CXX ; then
  50745. + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
  50746. + 10.[0123])
  50747. + compile_command="$compile_command ${wl}-bind_at_load"
  50748. + finalize_command="$finalize_command ${wl}-bind_at_load"
  50749. + ;;
  50750. + esac
  50751. + fi
  50752. + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
  50753. + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  50754. + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
  50755. + ;;
  50756. + esac
  50757. +
  50758. +
  50759. + # move library search paths that coincide with paths to not yet
  50760. + # installed libraries to the beginning of the library search list
  50761. + new_libs=
  50762. + for path in $notinst_path; do
  50763. + case " $new_libs " in
  50764. + *" -L$path/$objdir "*) ;;
  50765. + *)
  50766. + case " $compile_deplibs " in
  50767. + *" -L$path/$objdir "*)
  50768. + new_libs="$new_libs -L$path/$objdir" ;;
  50769. + esac
  50770. + ;;
  50771. + esac
  50772. + done
  50773. + for deplib in $compile_deplibs; do
  50774. + case $deplib in
  50775. + -L*)
  50776. + case " $new_libs " in
  50777. + *" $deplib "*) ;;
  50778. + *) new_libs="$new_libs $deplib" ;;
  50779. + esac
  50780. + ;;
  50781. + *) new_libs="$new_libs $deplib" ;;
  50782. + esac
  50783. + done
  50784. + compile_deplibs="$new_libs"
  50785. +
  50786. +
  50787. + compile_command="$compile_command $compile_deplibs"
  50788. + finalize_command="$finalize_command $finalize_deplibs"
  50789. +
  50790. + if test -n "$rpath$xrpath"; then
  50791. + # If the user specified any rpath flags, then add them.
  50792. + for libdir in $rpath $xrpath; do
  50793. + # This is the magic to use -rpath.
  50794. + case "$finalize_rpath " in
  50795. + *" $libdir "*) ;;
  50796. + *) finalize_rpath="$finalize_rpath $libdir" ;;
  50797. + esac
  50798. + done
  50799. + fi
  50800. +
  50801. + # Now hardcode the library paths
  50802. + rpath=
  50803. + hardcode_libdirs=
  50804. + for libdir in $compile_rpath $finalize_rpath; do
  50805. + if test -n "$hardcode_libdir_flag_spec"; then
  50806. + if test -n "$hardcode_libdir_separator"; then
  50807. + if test -z "$hardcode_libdirs"; then
  50808. + hardcode_libdirs="$libdir"
  50809. + else
  50810. + # Just accumulate the unique libdirs.
  50811. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  50812. + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  50813. + ;;
  50814. + *)
  50815. + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
  50816. + ;;
  50817. + esac
  50818. + fi
  50819. + else
  50820. + eval flag=\"$hardcode_libdir_flag_spec\"
  50821. + rpath="$rpath $flag"
  50822. + fi
  50823. + elif test -n "$runpath_var"; then
  50824. + case "$perm_rpath " in
  50825. + *" $libdir "*) ;;
  50826. + *) perm_rpath="$perm_rpath $libdir" ;;
  50827. + esac
  50828. + fi
  50829. + case $host in
  50830. + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
  50831. + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
  50832. + case :$dllsearchpath: in
  50833. + *":$libdir:"*) ;;
  50834. + *) dllsearchpath="$dllsearchpath:$libdir";;
  50835. + esac
  50836. + case :$dllsearchpath: in
  50837. + *":$testbindir:"*) ;;
  50838. + *) dllsearchpath="$dllsearchpath:$testbindir";;
  50839. + esac
  50840. + ;;
  50841. + esac
  50842. + done
  50843. + # Substitute the hardcoded libdirs into the rpath.
  50844. + if test -n "$hardcode_libdir_separator" &&
  50845. + test -n "$hardcode_libdirs"; then
  50846. + libdir="$hardcode_libdirs"
  50847. + eval rpath=\" $hardcode_libdir_flag_spec\"
  50848. + fi
  50849. + compile_rpath="$rpath"
  50850. +
  50851. + rpath=
  50852. + hardcode_libdirs=
  50853. + for libdir in $finalize_rpath; do
  50854. + if test -n "$hardcode_libdir_flag_spec"; then
  50855. + if test -n "$hardcode_libdir_separator"; then
  50856. + if test -z "$hardcode_libdirs"; then
  50857. + hardcode_libdirs="$libdir"
  50858. + else
  50859. + # Just accumulate the unique libdirs.
  50860. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  50861. + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  50862. + ;;
  50863. + *)
  50864. + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
  50865. + ;;
  50866. + esac
  50867. + fi
  50868. + else
  50869. + eval flag=\"$hardcode_libdir_flag_spec\"
  50870. + rpath="$rpath $flag"
  50871. + fi
  50872. + elif test -n "$runpath_var"; then
  50873. + case "$finalize_perm_rpath " in
  50874. + *" $libdir "*) ;;
  50875. + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
  50876. + esac
  50877. + fi
  50878. + done
  50879. + # Substitute the hardcoded libdirs into the rpath.
  50880. + if test -n "$hardcode_libdir_separator" &&
  50881. + test -n "$hardcode_libdirs"; then
  50882. + libdir="$hardcode_libdirs"
  50883. + eval rpath=\" $hardcode_libdir_flag_spec\"
  50884. + fi
  50885. + finalize_rpath="$rpath"
  50886. +
  50887. + if test -n "$libobjs" && test "$build_old_libs" = yes; then
  50888. + # Transform all the library objects into standard objects.
  50889. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
  50890. + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
  50891. + fi
  50892. +
  50893. + func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
  50894. +
  50895. + # template prelinking step
  50896. + if test -n "$prelink_cmds"; then
  50897. + func_execute_cmds "$prelink_cmds" 'exit $?'
  50898. + fi
  50899. +
  50900. + wrappers_required=yes
  50901. + case $host in
  50902. + *cygwin* | *mingw* )
  50903. + if test "$build_libtool_libs" != yes; then
  50904. + wrappers_required=no
  50905. + fi
  50906. + ;;
  50907. + *)
  50908. + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
  50909. + wrappers_required=no
  50910. + fi
  50911. + ;;
  50912. + esac
  50913. + if test "$wrappers_required" = no; then
  50914. + # Replace the output file specification.
  50915. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
  50916. + link_command="$compile_command$compile_rpath"
  50917. +
  50918. + # We have no uninstalled library dependencies, so finalize right now.
  50919. + exit_status=0
  50920. + func_show_eval "$link_command" 'exit_status=$?'
  50921. +
  50922. + # Delete the generated files.
  50923. + if test -f "$output_objdir/${outputname}S.${objext}"; then
  50924. + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
  50925. + fi
  50926. +
  50927. + exit $exit_status
  50928. + fi
  50929. +
  50930. + if test -n "$compile_shlibpath$finalize_shlibpath"; then
  50931. + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
  50932. + fi
  50933. + if test -n "$finalize_shlibpath"; then
  50934. + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
  50935. + fi
  50936. +
  50937. + compile_var=
  50938. + finalize_var=
  50939. + if test -n "$runpath_var"; then
  50940. + if test -n "$perm_rpath"; then
  50941. + # We should set the runpath_var.
  50942. + rpath=
  50943. + for dir in $perm_rpath; do
  50944. + rpath="$rpath$dir:"
  50945. + done
  50946. + compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
  50947. + fi
  50948. + if test -n "$finalize_perm_rpath"; then
  50949. + # We should set the runpath_var.
  50950. + rpath=
  50951. + for dir in $finalize_perm_rpath; do
  50952. + rpath="$rpath$dir:"
  50953. + done
  50954. + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
  50955. + fi
  50956. + fi
  50957. +
  50958. + if test "$no_install" = yes; then
  50959. + # We don't need to create a wrapper script.
  50960. + link_command="$compile_var$compile_command$compile_rpath"
  50961. + # Replace the output file specification.
  50962. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
  50963. + # Delete the old output file.
  50964. + $opt_dry_run || $RM $output
  50965. + # Link the executable and exit
  50966. + func_show_eval "$link_command" 'exit $?'
  50967. + exit $EXIT_SUCCESS
  50968. + fi
  50969. +
  50970. + if test "$hardcode_action" = relink; then
  50971. + # Fast installation is not supported
  50972. + link_command="$compile_var$compile_command$compile_rpath"
  50973. + relink_command="$finalize_var$finalize_command$finalize_rpath"
  50974. +
  50975. + func_warning "this platform does not like uninstalled shared libraries"
  50976. + func_warning "\`$output' will be relinked during installation"
  50977. + else
  50978. + if test "$fast_install" != no; then
  50979. + link_command="$finalize_var$compile_command$finalize_rpath"
  50980. + if test "$fast_install" = yes; then
  50981. + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
  50982. + else
  50983. + # fast_install is set to needless
  50984. + relink_command=
  50985. + fi
  50986. + else
  50987. + link_command="$compile_var$compile_command$compile_rpath"
  50988. + relink_command="$finalize_var$finalize_command$finalize_rpath"
  50989. + fi
  50990. + fi
  50991. +
  50992. + # Replace the output file specification.
  50993. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
  50994. +
  50995. + # Delete the old output files.
  50996. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
  50997. +
  50998. + func_show_eval "$link_command" 'exit $?'
  50999. +
  51000. + # Now create the wrapper script.
  51001. + func_echo "creating $output"
  51002. +
  51003. + # Quote the relink command for shipping.
  51004. + if test -n "$relink_command"; then
  51005. + # Preserve any variables that may affect compiler behavior
  51006. + for var in $variables_saved_for_relink; do
  51007. + if eval test -z \"\${$var+set}\"; then
  51008. + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
  51009. + elif eval var_value=\$$var; test -z "$var_value"; then
  51010. + relink_command="$var=; export $var; $relink_command"
  51011. + else
  51012. + func_quote_for_eval "$var_value"
  51013. + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
  51014. + fi
  51015. + done
  51016. + relink_command="(cd `pwd`; $relink_command)"
  51017. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
  51018. + fi
  51019. +
  51020. + # Quote $ECHO for shipping.
  51021. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
  51022. + case $progpath in
  51023. + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
  51024. + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
  51025. + esac
  51026. + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
  51027. + else
  51028. + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
  51029. + fi
  51030. +
  51031. + # Only actually do things if not in dry run mode.
  51032. + $opt_dry_run || {
  51033. + # win32 will think the script is a binary if it has
  51034. + # a .exe suffix, so we strip it off here.
  51035. + case $output in
  51036. + *.exe) func_stripname '' '.exe' "$output"
  51037. + output=$func_stripname_result ;;
  51038. + esac
  51039. + # test for cygwin because mv fails w/o .exe extensions
  51040. + case $host in
  51041. + *cygwin*)
  51042. + exeext=.exe
  51043. + func_stripname '' '.exe' "$outputname"
  51044. + outputname=$func_stripname_result ;;
  51045. + *) exeext= ;;
  51046. + esac
  51047. + case $host in
  51048. + *cygwin* | *mingw* )
  51049. + output_name=`basename $output`
  51050. + output_path=`dirname $output`
  51051. + cwrappersource="$output_path/$objdir/lt-$output_name.c"
  51052. + cwrapper="$output_path/$output_name.exe"
  51053. + $RM $cwrappersource $cwrapper
  51054. + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
  51055. +
  51056. + cat > $cwrappersource <<EOF
  51057. +
  51058. +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
  51059. + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  51060. +
  51061. + The $output program cannot be directly executed until all the libtool
  51062. + libraries that it depends on are installed.
  51063. +
  51064. + This wrapper executable should never be moved out of the build directory.
  51065. + If it is, it will not operate correctly.
  51066. +
  51067. + Currently, it simply execs the wrapper *script* "/bin/sh $output",
  51068. + but could eventually absorb all of the scripts functionality and
  51069. + exec $objdir/$outputname directly.
  51070. +*/
  51071. +EOF
  51072. + cat >> $cwrappersource<<"EOF"
  51073. +#include <stdio.h>
  51074. +#include <stdlib.h>
  51075. +#include <unistd.h>
  51076. +#include <malloc.h>
  51077. +#include <stdarg.h>
  51078. +#include <assert.h>
  51079. +#include <string.h>
  51080. +#include <ctype.h>
  51081. +#include <sys/stat.h>
  51082. +
  51083. +#if defined(PATH_MAX)
  51084. +# define LT_PATHMAX PATH_MAX
  51085. +#elif defined(MAXPATHLEN)
  51086. +# define LT_PATHMAX MAXPATHLEN
  51087. +#else
  51088. +# define LT_PATHMAX 1024
  51089. +#endif
  51090. +
  51091. +#ifndef DIR_SEPARATOR
  51092. +# define DIR_SEPARATOR '/'
  51093. +# define PATH_SEPARATOR ':'
  51094. +#endif
  51095. +
  51096. +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
  51097. + defined (__OS2__)
  51098. +# define HAVE_DOS_BASED_FILE_SYSTEM
  51099. +# ifndef DIR_SEPARATOR_2
  51100. +# define DIR_SEPARATOR_2 '\\'
  51101. +# endif
  51102. +# ifndef PATH_SEPARATOR_2
  51103. +# define PATH_SEPARATOR_2 ';'
  51104. +# endif
  51105. +#endif
  51106. +
  51107. +#ifndef DIR_SEPARATOR_2
  51108. +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
  51109. +#else /* DIR_SEPARATOR_2 */
  51110. +# define IS_DIR_SEPARATOR(ch) \
  51111. + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
  51112. +#endif /* DIR_SEPARATOR_2 */
  51113. +
  51114. +#ifndef PATH_SEPARATOR_2
  51115. +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
  51116. +#else /* PATH_SEPARATOR_2 */
  51117. +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
  51118. +#endif /* PATH_SEPARATOR_2 */
  51119. +
  51120. +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
  51121. +#define XFREE(stale) do { \
  51122. + if (stale) { free ((void *) stale); stale = 0; } \
  51123. +} while (0)
  51124. +
  51125. +/* -DDEBUG is fairly common in CFLAGS. */
  51126. +#undef DEBUG
  51127. +#if defined DEBUGWRAPPER
  51128. +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
  51129. +#else
  51130. +# define DEBUG(format, ...)
  51131. +#endif
  51132. +
  51133. +const char *program_name = NULL;
  51134. +
  51135. +void * xmalloc (size_t num);
  51136. +char * xstrdup (const char *string);
  51137. +const char * base_name (const char *name);
  51138. +char * find_executable(const char *wrapper);
  51139. +int check_executable(const char *path);
  51140. +char * strendzap(char *str, const char *pat);
  51141. +void lt_fatal (const char *message, ...);
  51142. +
  51143. +int
  51144. +main (int argc, char *argv[])
  51145. +{
  51146. + char **newargz;
  51147. + int i;
  51148. +
  51149. + program_name = (char *) xstrdup (base_name (argv[0]));
  51150. + DEBUG("(main) argv[0] : %s\n",argv[0]);
  51151. + DEBUG("(main) program_name : %s\n",program_name);
  51152. + newargz = XMALLOC(char *, argc+2);
  51153. +EOF
  51154. +
  51155. + cat >> $cwrappersource <<EOF
  51156. + newargz[0] = (char *) xstrdup("$SHELL");
  51157. +EOF
  51158. +
  51159. + cat >> $cwrappersource <<"EOF"
  51160. + newargz[1] = find_executable(argv[0]);
  51161. + if (newargz[1] == NULL)
  51162. + lt_fatal("Couldn't find %s", argv[0]);
  51163. + DEBUG("(main) found exe at : %s\n",newargz[1]);
  51164. + /* we know the script has the same name, without the .exe */
  51165. + /* so make sure newargz[1] doesn't end in .exe */
  51166. + strendzap(newargz[1],".exe");
  51167. + for (i = 1; i < argc; i++)
  51168. + newargz[i+1] = xstrdup(argv[i]);
  51169. + newargz[argc+1] = NULL;
  51170. +
  51171. + for (i=0; i<argc+1; i++)
  51172. + {
  51173. + DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
  51174. + ;
  51175. + }
  51176. +
  51177. +EOF
  51178. +
  51179. + case $host_os in
  51180. + mingw*)
  51181. + cat >> $cwrappersource <<EOF
  51182. + execv("$SHELL",(char const **)newargz);
  51183. +EOF
  51184. + ;;
  51185. + *)
  51186. + cat >> $cwrappersource <<EOF
  51187. + execv("$SHELL",newargz);
  51188. +EOF
  51189. + ;;
  51190. + esac
  51191. +
  51192. + cat >> $cwrappersource <<"EOF"
  51193. + return 127;
  51194. +}
  51195. +
  51196. +void *
  51197. +xmalloc (size_t num)
  51198. +{
  51199. + void * p = (void *) malloc (num);
  51200. + if (!p)
  51201. + lt_fatal ("Memory exhausted");
  51202. +
  51203. + return p;
  51204. +}
  51205. +
  51206. +char *
  51207. +xstrdup (const char *string)
  51208. +{
  51209. + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
  51210. +;
  51211. +}
  51212. +
  51213. +const char *
  51214. +base_name (const char *name)
  51215. +{
  51216. + const char *base;
  51217. +
  51218. +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  51219. + /* Skip over the disk name in MSDOS pathnames. */
  51220. + if (isalpha ((unsigned char)name[0]) && name[1] == ':')
  51221. + name += 2;
  51222. +#endif
  51223. +
  51224. + for (base = name; *name; name++)
  51225. + if (IS_DIR_SEPARATOR (*name))
  51226. + base = name + 1;
  51227. + return base;
  51228. +}
  51229. +
  51230. +int
  51231. +check_executable(const char * path)
  51232. +{
  51233. + struct stat st;
  51234. +
  51235. + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
  51236. + if ((!path) || (!*path))
  51237. + return 0;
  51238. +
  51239. + if ((stat (path, &st) >= 0) &&
  51240. + (
  51241. + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
  51242. +#if defined (S_IXOTH)
  51243. + ((st.st_mode & S_IXOTH) == S_IXOTH) ||
  51244. +#endif
  51245. +#if defined (S_IXGRP)
  51246. + ((st.st_mode & S_IXGRP) == S_IXGRP) ||
  51247. +#endif
  51248. + ((st.st_mode & S_IXUSR) == S_IXUSR))
  51249. + )
  51250. + return 1;
  51251. + else
  51252. + return 0;
  51253. +}
  51254. +
  51255. +/* Searches for the full path of the wrapper. Returns
  51256. + newly allocated full path name if found, NULL otherwise */
  51257. +char *
  51258. +find_executable (const char* wrapper)
  51259. +{
  51260. + int has_slash = 0;
  51261. + const char* p;
  51262. + const char* p_next;
  51263. + /* static buffer for getcwd */
  51264. + char tmp[LT_PATHMAX + 1];
  51265. + int tmp_len;
  51266. + char* concat_name;
  51267. +
  51268. + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
  51269. +
  51270. + if ((wrapper == NULL) || (*wrapper == '\0'))
  51271. + return NULL;
  51272. +
  51273. + /* Absolute path? */
  51274. +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  51275. + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
  51276. + {
  51277. + concat_name = xstrdup (wrapper);
  51278. + if (check_executable(concat_name))
  51279. + return concat_name;
  51280. + XFREE(concat_name);
  51281. + }
  51282. + else
  51283. + {
  51284. +#endif
  51285. + if (IS_DIR_SEPARATOR (wrapper[0]))
  51286. + {
  51287. + concat_name = xstrdup (wrapper);
  51288. + if (check_executable(concat_name))
  51289. + return concat_name;
  51290. + XFREE(concat_name);
  51291. + }
  51292. +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  51293. + }
  51294. +#endif
  51295. +
  51296. + for (p = wrapper; *p; p++)
  51297. + if (*p == '/')
  51298. + {
  51299. + has_slash = 1;
  51300. + break;
  51301. + }
  51302. + if (!has_slash)
  51303. + {
  51304. + /* no slashes; search PATH */
  51305. + const char* path = getenv ("PATH");
  51306. + if (path != NULL)
  51307. + {
  51308. + for (p = path; *p; p = p_next)
  51309. + {
  51310. + const char* q;
  51311. + size_t p_len;
  51312. + for (q = p; *q; q++)
  51313. + if (IS_PATH_SEPARATOR(*q))
  51314. + break;
  51315. + p_len = q - p;
  51316. + p_next = (*q == '\0' ? q : q + 1);
  51317. + if (p_len == 0)
  51318. + {
  51319. + /* empty path: current directory */
  51320. + if (getcwd (tmp, LT_PATHMAX) == NULL)
  51321. + lt_fatal ("getcwd failed");
  51322. + tmp_len = strlen(tmp);
  51323. + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
  51324. + memcpy (concat_name, tmp, tmp_len);
  51325. + concat_name[tmp_len] = '/';
  51326. + strcpy (concat_name + tmp_len + 1, wrapper);
  51327. + }
  51328. + else
  51329. + {
  51330. + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
  51331. + memcpy (concat_name, p, p_len);
  51332. + concat_name[p_len] = '/';
  51333. + strcpy (concat_name + p_len + 1, wrapper);
  51334. + }
  51335. + if (check_executable(concat_name))
  51336. + return concat_name;
  51337. + XFREE(concat_name);
  51338. + }
  51339. + }
  51340. + /* not found in PATH; assume curdir */
  51341. + }
  51342. + /* Relative path | not found in path: prepend cwd */
  51343. + if (getcwd (tmp, LT_PATHMAX) == NULL)
  51344. + lt_fatal ("getcwd failed");
  51345. + tmp_len = strlen(tmp);
  51346. + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
  51347. + memcpy (concat_name, tmp, tmp_len);
  51348. + concat_name[tmp_len] = '/';
  51349. + strcpy (concat_name + tmp_len + 1, wrapper);
  51350. +
  51351. + if (check_executable(concat_name))
  51352. + return concat_name;
  51353. + XFREE(concat_name);
  51354. + return NULL;
  51355. +}
  51356. +
  51357. +char *
  51358. +strendzap(char *str, const char *pat)
  51359. +{
  51360. + size_t len, patlen;
  51361. +
  51362. + assert(str != NULL);
  51363. + assert(pat != NULL);
  51364. +
  51365. + len = strlen(str);
  51366. + patlen = strlen(pat);
  51367. +
  51368. + if (patlen <= len)
  51369. + {
  51370. + str += len - patlen;
  51371. + if (strcmp(str, pat) == 0)
  51372. + *str = '\0';
  51373. + }
  51374. + return str;
  51375. +}
  51376. +
  51377. +static void
  51378. +lt_error_core (int exit_status, const char * mode,
  51379. + const char * message, va_list ap)
  51380. +{
  51381. + fprintf (stderr, "%s: %s: ", program_name, mode);
  51382. + vfprintf (stderr, message, ap);
  51383. + fprintf (stderr, ".\n");
  51384. +
  51385. + if (exit_status >= 0)
  51386. + exit (exit_status);
  51387. +}
  51388. +
  51389. +void
  51390. +lt_fatal (const char *message, ...)
  51391. +{
  51392. + va_list ap;
  51393. + va_start (ap, message);
  51394. + lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
  51395. + va_end (ap);
  51396. +}
  51397. +EOF
  51398. + # we should really use a build-platform specific compiler
  51399. + # here, but OTOH, the wrappers (shell script and this C one)
  51400. + # are only useful if you want to execute the "real" binary.
  51401. + # Since the "real" binary is built for $host, then this
  51402. + # wrapper might as well be built for $host, too.
  51403. + $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
  51404. + ;;
  51405. + esac
  51406. + $RM $output
  51407. + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
  51408. +
  51409. + $ECHO > $output "\
  51410. +#! $SHELL
  51411. +
  51412. +# $output - temporary wrapper script for $objdir/$outputname
  51413. +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  51414. +#
  51415. +# The $output program cannot be directly executed until all the libtool
  51416. +# libraries that it depends on are installed.
  51417. +#
  51418. +# This wrapper script should never be moved out of the build directory.
  51419. +# If it is, it will not operate correctly.
  51420. +
  51421. +# Sed substitution that helps us do robust quoting. It backslashifies
  51422. +# metacharacters that are still active within double-quoted strings.
  51423. +Xsed='${SED} -e 1s/^X//'
  51424. +sed_quote_subst='$sed_quote_subst'
  51425. +
  51426. +# Be Bourne compatible
  51427. +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
  51428. + emulate sh
  51429. + NULLCMD=:
  51430. + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
  51431. + # is contrary to our usage. Disable this feature.
  51432. + alias -g '\${1+\"\$@\"}'='\"\$@\"'
  51433. + setopt NO_GLOB_SUBST
  51434. +else
  51435. + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
  51436. +fi
  51437. +BIN_SH=xpg4; export BIN_SH # for Tru64
  51438. +DUALCASE=1; export DUALCASE # for MKS sh
  51439. +
  51440. +# The HP-UX ksh and POSIX shell print the target directory to stdout
  51441. +# if CDPATH is set.
  51442. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
  51443. +
  51444. +relink_command=\"$relink_command\"
  51445. +
  51446. +# This environment variable determines our operation mode.
  51447. +if test \"\$libtool_install_magic\" = \"$magic\"; then
  51448. + # install mode needs the following variables:
  51449. + generated_by_libtool_version='$macro_version'
  51450. + notinst_deplibs='$notinst_deplibs'
  51451. +else
  51452. + # When we are sourced in execute mode, \$file and \$ECHO are already set.
  51453. + if test \"\$libtool_execute_magic\" != \"$magic\"; then
  51454. + ECHO=\"$qecho\"
  51455. + file=\"\$0\"
  51456. + # Make sure echo works.
  51457. + if test \"X\$1\" = X--no-reexec; then
  51458. + # Discard the --no-reexec flag, and continue.
  51459. + shift
  51460. + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
  51461. + # Yippee, \$ECHO works!
  51462. + :
  51463. + else
  51464. + # Restart under the correct shell, and then maybe \$ECHO will work.
  51465. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
  51466. + fi
  51467. + fi\
  51468. +"
  51469. + $ECHO >> $output "\
  51470. +
  51471. + # Find the directory that this script lives in.
  51472. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
  51473. + test \"x\$thisdir\" = \"x\$file\" && thisdir=.
  51474. +
  51475. + # Follow symbolic links until we get to the real thisdir.
  51476. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
  51477. + while test -n \"\$file\"; do
  51478. + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
  51479. +
  51480. + # If there was a directory component, then change thisdir.
  51481. + if test \"x\$destdir\" != \"x\$file\"; then
  51482. + case \"\$destdir\" in
  51483. + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
  51484. + *) thisdir=\"\$thisdir/\$destdir\" ;;
  51485. + esac
  51486. + fi
  51487. +
  51488. + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
  51489. + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
  51490. + done
  51491. +
  51492. + # Try to get the absolute directory name.
  51493. + absdir=\`cd \"\$thisdir\" && pwd\`
  51494. + test -n \"\$absdir\" && thisdir=\"\$absdir\"
  51495. +"
  51496. +
  51497. + if test "$fast_install" = yes; then
  51498. + $ECHO >> $output "\
  51499. + program=lt-'$outputname'$exeext
  51500. + progdir=\"\$thisdir/$objdir\"
  51501. +
  51502. + if test ! -f \"\$progdir/\$program\" ||
  51503. + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
  51504. + test \"X\$file\" != \"X\$progdir/\$program\"; }; then
  51505. +
  51506. + file=\"\$\$-\$program\"
  51507. +
  51508. + if test ! -d \"\$progdir\"; then
  51509. + $MKDIR \"\$progdir\"
  51510. + else
  51511. + $RM \"\$progdir/\$file\"
  51512. + fi"
  51513. +
  51514. + $ECHO >> $output "\
  51515. +
  51516. + # relink executable if necessary
  51517. + if test -n \"\$relink_command\"; then
  51518. + if relink_command_output=\`eval \$relink_command 2>&1\`; then :
  51519. + else
  51520. + $ECHO \"\$relink_command_output\" >&2
  51521. + $RM \"\$progdir/\$file\"
  51522. + exit 1
  51523. + fi
  51524. + fi
  51525. +
  51526. + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
  51527. + { $RM \"\$progdir/\$program\";
  51528. + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
  51529. + $RM \"\$progdir/\$file\"
  51530. + fi"
  51531. + else
  51532. + $ECHO >> $output "\
  51533. + program='$outputname'
  51534. + progdir=\"\$thisdir/$objdir\"
  51535. +"
  51536. + fi
  51537. +
  51538. + $ECHO >> $output "\
  51539. +
  51540. + if test -f \"\$progdir/\$program\"; then"
  51541. +
  51542. + # Export our shlibpath_var if we have one.
  51543. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
  51544. + $ECHO >> $output "\
  51545. + # Add our own library path to $shlibpath_var
  51546. + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
  51547. +
  51548. + # Some systems cannot cope with colon-terminated $shlibpath_var
  51549. + # The second colon is a workaround for a bug in BeOS R4 sed
  51550. + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
  51551. +
  51552. + export $shlibpath_var
  51553. +"
  51554. + fi
  51555. +
  51556. + # fixup the dll searchpath if we need to.
  51557. + if test -n "$dllsearchpath"; then
  51558. + $ECHO >> $output "\
  51559. + # Add the dll search path components to the executable PATH
  51560. + PATH=$dllsearchpath:\$PATH
  51561. +"
  51562. + fi
  51563. +
  51564. + $ECHO >> $output "\
  51565. + if test \"\$libtool_execute_magic\" != \"$magic\"; then
  51566. + # Run the actual program with our arguments.
  51567. +"
  51568. + case $host in
  51569. + # Backslashes separate directories on plain windows
  51570. + *-*-mingw | *-*-os2*)
  51571. + $ECHO >> $output "\
  51572. + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
  51573. +"
  51574. + ;;
  51575. +
  51576. + *)
  51577. + $ECHO >> $output "\
  51578. + exec \"\$progdir/\$program\" \${1+\"\$@\"}
  51579. +"
  51580. + ;;
  51581. + esac
  51582. + $ECHO >> $output "\
  51583. + \$ECHO \"\$0: cannot exec \$program \$*\"
  51584. + exit 1
  51585. + fi
  51586. + else
  51587. + # The program doesn't exist.
  51588. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
  51589. + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
  51590. + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
  51591. + exit 1
  51592. + fi
  51593. +fi\
  51594. +"
  51595. + chmod +x $output
  51596. + }
  51597. + exit $EXIT_SUCCESS
  51598. + ;;
  51599. + esac
  51600. +
  51601. + # See if we need to build an old-fashioned archive.
  51602. + for oldlib in $oldlibs; do
  51603. +
  51604. + if test "$build_libtool_libs" = convenience; then
  51605. + oldobjs="$libobjs_save $symfileobj"
  51606. + addlibs="$convenience"
  51607. + build_libtool_libs=no
  51608. + else
  51609. + if test "$build_libtool_libs" = module; then
  51610. + oldobjs="$libobjs_save"
  51611. + build_libtool_libs=no
  51612. + else
  51613. + oldobjs="$old_deplibs $non_pic_objects"
  51614. + if test "$preload" = yes && test -f "$symfileobj"; then
  51615. + oldobjs="$oldobjs $symfileobj"
  51616. + fi
  51617. + fi
  51618. + addlibs="$old_convenience"
  51619. + fi
  51620. +
  51621. + if test -n "$addlibs"; then
  51622. + gentop="$output_objdir/${outputname}x"
  51623. + generated="$generated $gentop"
  51624. +
  51625. + func_extract_archives $gentop $addlibs
  51626. + oldobjs="$oldobjs $func_extract_archives_result"
  51627. + fi
  51628. +
  51629. + # Do each command in the archive commands.
  51630. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
  51631. + cmds=$old_archive_from_new_cmds
  51632. + else
  51633. +
  51634. + # Add any objects from preloaded convenience libraries
  51635. + if test -n "$dlprefiles"; then
  51636. + gentop="$output_objdir/${outputname}x"
  51637. + generated="$generated $gentop"
  51638. +
  51639. + func_extract_archives $gentop $dlprefiles
  51640. + oldobjs="$oldobjs $func_extract_archives_result"
  51641. + fi
  51642. +
  51643. + # POSIX demands no paths to be encoded in archives. We have
  51644. + # to avoid creating archives with duplicate basenames if we
  51645. + # might have to extract them afterwards, e.g., when creating a
  51646. + # static archive out of a convenience library, or when linking
  51647. + # the entirety of a libtool archive into another (currently
  51648. + # not supported by libtool).
  51649. + if (for obj in $oldobjs
  51650. + do
  51651. + func_basename "$obj"
  51652. + $ECHO "$func_basename_result"
  51653. + done | sort | sort -uc >/dev/null 2>&1); then
  51654. + :
  51655. + else
  51656. + $ECHO "copying selected object files to avoid basename conflicts..."
  51657. + gentop="$output_objdir/${outputname}x"
  51658. + generated="$generated $gentop"
  51659. + func_mkdir_p "$gentop"
  51660. + save_oldobjs=$oldobjs
  51661. + oldobjs=
  51662. + counter=1
  51663. + for obj in $save_oldobjs
  51664. + do
  51665. + func_basename "$obj"
  51666. + objbase="$func_basename_result"
  51667. + case " $oldobjs " in
  51668. + " ") oldobjs=$obj ;;
  51669. + *[\ /]"$objbase "*)
  51670. + while :; do
  51671. + # Make sure we don't pick an alternate name that also
  51672. + # overlaps.
  51673. + newobj=lt$counter-$objbase
  51674. + counter=`expr $counter + 1`
  51675. + case " $oldobjs " in
  51676. + *[\ /]"$newobj "*) ;;
  51677. + *) if test ! -f "$gentop/$newobj"; then break; fi ;;
  51678. + esac
  51679. + done
  51680. + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
  51681. + oldobjs="$oldobjs $gentop/$newobj"
  51682. + ;;
  51683. + *) oldobjs="$oldobjs $obj" ;;
  51684. + esac
  51685. + done
  51686. + fi
  51687. + eval cmds=\"$old_archive_cmds\"
  51688. +
  51689. + if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
  51690. + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
  51691. + cmds=$old_archive_cmds
  51692. + else
  51693. + # the command line is too long to link in one step, link in parts
  51694. + func_echo "using piecewise archive linking..."
  51695. + save_RANLIB=$RANLIB
  51696. + RANLIB=:
  51697. + objlist=
  51698. + concat_cmds=
  51699. + save_oldobjs=$oldobjs
  51700. + # Is there a better way of finding the last object in the list?
  51701. + for obj in $save_oldobjs
  51702. + do
  51703. + last_oldobj=$obj
  51704. + done
  51705. + for obj in $save_oldobjs
  51706. + do
  51707. + oldobjs="$objlist $obj"
  51708. + objlist="$objlist $obj"
  51709. + eval test_cmds=\"$old_archive_cmds\"
  51710. + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
  51711. + test "$len" -le "$max_cmd_len"; then
  51712. + :
  51713. + else
  51714. + # the above command should be used before it gets too long
  51715. + oldobjs=$objlist
  51716. + if test "$obj" = "$last_oldobj" ; then
  51717. + RANLIB=$save_RANLIB
  51718. + fi
  51719. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  51720. + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
  51721. + objlist=
  51722. + fi
  51723. + done
  51724. + RANLIB=$save_RANLIB
  51725. + oldobjs=$objlist
  51726. + if test "X$oldobjs" = "X" ; then
  51727. + eval cmds=\"\$concat_cmds\"
  51728. + else
  51729. + eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
  51730. + fi
  51731. + fi
  51732. + fi
  51733. + func_execute_cmds "$cmds" 'exit $?'
  51734. + done
  51735. +
  51736. + test -n "$generated" && \
  51737. + func_show_eval "${RM}r$generated"
  51738. +
  51739. + # Now create the libtool archive.
  51740. + case $output in
  51741. + *.la)
  51742. + old_library=
  51743. + test "$build_old_libs" = yes && old_library="$libname.$libext"
  51744. + func_echo "creating $output"
  51745. +
  51746. + # Preserve any variables that may affect compiler behavior
  51747. + for var in $variables_saved_for_relink; do
  51748. + if eval test -z \"\${$var+set}\"; then
  51749. + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
  51750. + elif eval var_value=\$$var; test -z "$var_value"; then
  51751. + relink_command="$var=; export $var; $relink_command"
  51752. + else
  51753. + func_quote_for_eval "$var_value"
  51754. + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
  51755. + fi
  51756. + done
  51757. + # Quote the link command for shipping.
  51758. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
  51759. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
  51760. + if test "$hardcode_automatic" = yes ; then
  51761. + relink_command=
  51762. + fi
  51763. +
  51764. + # Only create the output if not a dry run.
  51765. + $opt_dry_run || {
  51766. + for installed in no yes; do
  51767. + if test "$installed" = yes; then
  51768. + if test -z "$install_libdir"; then
  51769. + break
  51770. + fi
  51771. + output="$output_objdir/$outputname"i
  51772. + # Replace all uninstalled libtool libraries with the installed ones
  51773. + newdependency_libs=
  51774. + for deplib in $dependency_libs; do
  51775. + case $deplib in
  51776. + *.la)
  51777. + func_basename "$deplib"
  51778. + name="$func_basename_result"
  51779. + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
  51780. + test -z "$libdir" && \
  51781. + func_fatal_error "\`$deplib' is not a valid libtool archive"
  51782. + newdependency_libs="$newdependency_libs $libdir/$name"
  51783. + ;;
  51784. + *) newdependency_libs="$newdependency_libs $deplib" ;;
  51785. + esac
  51786. + done
  51787. + dependency_libs="$newdependency_libs"
  51788. + newdlfiles=
  51789. +
  51790. + for lib in $dlfiles; do
  51791. + case $lib in
  51792. + *.la)
  51793. + func_basename "$lib"
  51794. + name="$func_basename_result"
  51795. + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
  51796. + test -z "$libdir" && \
  51797. + func_fatal_error "\`$lib' is not a valid libtool archive"
  51798. + newdlfiles="$newdlfiles $libdir/$name"
  51799. + ;;
  51800. + *) newdlfiles="$newdlfiles $lib" ;;
  51801. + esac
  51802. + done
  51803. + dlfiles="$newdlfiles"
  51804. + newdlprefiles=
  51805. + for lib in $dlprefiles; do
  51806. + case $lib in
  51807. + *.la)
  51808. + # Only pass preopened files to the pseudo-archive (for
  51809. + # eventual linking with the app. that links it) if we
  51810. + # didn't already link the preopened objects directly into
  51811. + # the library:
  51812. + func_basename "$lib"
  51813. + name="$func_basename_result"
  51814. + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
  51815. + test -z "$libdir" && \
  51816. + func_fatal_error "\`$lib' is not a valid libtool archive"
  51817. + newdlprefiles="$newdlprefiles $libdir/$name"
  51818. + ;;
  51819. + esac
  51820. + done
  51821. + dlprefiles="$newdlprefiles"
  51822. + else
  51823. + newdlfiles=
  51824. + for lib in $dlfiles; do
  51825. + case $lib in
  51826. + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
  51827. + *) abs=`pwd`"/$lib" ;;
  51828. + esac
  51829. + newdlfiles="$newdlfiles $abs"
  51830. + done
  51831. + dlfiles="$newdlfiles"
  51832. + newdlprefiles=
  51833. + for lib in $dlprefiles; do
  51834. + case $lib in
  51835. + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
  51836. + *) abs=`pwd`"/$lib" ;;
  51837. + esac
  51838. + newdlprefiles="$newdlprefiles $abs"
  51839. + done
  51840. + dlprefiles="$newdlprefiles"
  51841. + fi
  51842. + $RM $output
  51843. + # place dlname in correct position for cygwin
  51844. + tdlname=$dlname
  51845. + case $host,$output,$installed,$module,$dlname in
  51846. + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
  51847. + esac
  51848. + $ECHO > $output "\
  51849. +# $outputname - a libtool library file
  51850. +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  51851. +#
  51852. +# Please DO NOT delete this file!
  51853. +# It is necessary for linking the library.
  51854. +
  51855. +# The name that we can dlopen(3).
  51856. +dlname='$tdlname'
  51857. +
  51858. +# Names of this library.
  51859. +library_names='$library_names'
  51860. +
  51861. +# The name of the static archive.
  51862. +old_library='$old_library'
  51863. +
  51864. +# Linker flags that can not go in dependency_libs.
  51865. +inherited_linker_flags='$new_inherited_linker_flags'
  51866. +
  51867. +# Libraries that this one depends upon.
  51868. +dependency_libs='$dependency_libs'
  51869. +
  51870. +# Names of additional weak libraries provided by this library
  51871. +weak_library_names='$weak_libs'
  51872. +
  51873. +# Version information for $libname.
  51874. +current=$current
  51875. +age=$age
  51876. +revision=$revision
  51877. +
  51878. +# Is this an already installed library?
  51879. +installed=$installed
  51880. +
  51881. +# Should we warn about portability when linking against -modules?
  51882. +shouldnotlink=$module
  51883. +
  51884. +# Files to dlopen/dlpreopen
  51885. +dlopen='$dlfiles'
  51886. +dlpreopen='$dlprefiles'
  51887. +
  51888. +# Directory that this library needs to be installed in:
  51889. +libdir='$install_libdir'"
  51890. + if test "$installed" = no && test "$need_relink" = yes; then
  51891. + $ECHO >> $output "\
  51892. +relink_command=\"$relink_command\""
  51893. + fi
  51894. + done
  51895. + }
  51896. +
  51897. + # Do a symbolic link so that the libtool archive can be found in
  51898. + # LD_LIBRARY_PATH before the program is installed.
  51899. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
  51900. + ;;
  51901. + esac
  51902. + exit $EXIT_SUCCESS
  51903. +}
  51904. +
  51905. +{ test "$mode" = link || test "$mode" = relink; } &&
  51906. + func_mode_link ${1+"$@"}
  51907. +
  51908. +
  51909. +# func_mode_uninstall arg...
  51910. +func_mode_uninstall ()
  51911. +{
  51912. + $opt_debug
  51913. + RM="$nonopt"
  51914. + files=
  51915. + rmforce=
  51916. + exit_status=0
  51917. +
  51918. + # This variable tells wrapper scripts just to set variables rather
  51919. + # than running their programs.
  51920. + libtool_install_magic="$magic"
  51921. +
  51922. + for arg
  51923. + do
  51924. + case $arg in
  51925. + -f) RM="$RM $arg"; rmforce=yes ;;
  51926. + -*) RM="$RM $arg" ;;
  51927. + *) files="$files $arg" ;;
  51928. + esac
  51929. + done
  51930. +
  51931. + test -z "$RM" && \
  51932. + func_fatal_help "you must specify an RM program"
  51933. +
  51934. + rmdirs=
  51935. +
  51936. + origobjdir="$objdir"
  51937. + for file in $files; do
  51938. + func_dirname "$file" "" "."
  51939. + dir="$func_dirname_result"
  51940. + if test "X$dir" = X.; then
  51941. + objdir="$origobjdir"
  51942. + else
  51943. + objdir="$dir/$origobjdir"
  51944. + fi
  51945. + func_basename "$file"
  51946. + name="$func_basename_result"
  51947. + test "$mode" = uninstall && objdir="$dir"
  51948. +
  51949. + # Remember objdir for removal later, being careful to avoid duplicates
  51950. + if test "$mode" = clean; then
  51951. + case " $rmdirs " in
  51952. + *" $objdir "*) ;;
  51953. + *) rmdirs="$rmdirs $objdir" ;;
  51954. + esac
  51955. + fi
  51956. +
  51957. + # Don't error if the file doesn't exist and rm -f was used.
  51958. + if { test -L "$file"; } >/dev/null 2>&1 ||
  51959. + { test -h "$file"; } >/dev/null 2>&1 ||
  51960. + test -f "$file"; then
  51961. + :
  51962. + elif test -d "$file"; then
  51963. + exit_status=1
  51964. + continue
  51965. + elif test "$rmforce" = yes; then
  51966. + continue
  51967. + fi
  51968. +
  51969. + rmfiles="$file"
  51970. +
  51971. + case $name in
  51972. + *.la)
  51973. + # Possibly a libtool archive, so verify it.
  51974. + if func_lalib_p "$file"; then
  51975. + func_source $dir/$name
  51976. +
  51977. + # Delete the libtool libraries and symlinks.
  51978. + for n in $library_names; do
  51979. + rmfiles="$rmfiles $objdir/$n"
  51980. + done
  51981. + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
  51982. +
  51983. + case "$mode" in
  51984. + clean)
  51985. + case " $library_names " in
  51986. + # " " in the beginning catches empty $dlname
  51987. + *" $dlname "*) ;;
  51988. + *) rmfiles="$rmfiles $objdir/$dlname" ;;
  51989. + esac
  51990. + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
  51991. + ;;
  51992. + uninstall)
  51993. + if test -n "$library_names"; then
  51994. + # Do each command in the postuninstall commands.
  51995. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
  51996. + fi
  51997. +
  51998. + if test -n "$old_library"; then
  51999. + # Do each command in the old_postuninstall commands.
  52000. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
  52001. + fi
  52002. + # FIXME: should reinstall the best remaining shared library.
  52003. + ;;
  52004. + esac
  52005. + fi
  52006. + ;;
  52007. +
  52008. + *.lo)
  52009. + # Possibly a libtool object, so verify it.
  52010. + if func_lalib_p "$file"; then
  52011. +
  52012. + # Read the .lo file
  52013. + func_source $dir/$name
  52014. +
  52015. + # Add PIC object to the list of files to remove.
  52016. + if test -n "$pic_object" &&
  52017. + test "$pic_object" != none; then
  52018. + rmfiles="$rmfiles $dir/$pic_object"
  52019. + fi
  52020. +
  52021. + # Add non-PIC object to the list of files to remove.
  52022. + if test -n "$non_pic_object" &&
  52023. + test "$non_pic_object" != none; then
  52024. + rmfiles="$rmfiles $dir/$non_pic_object"
  52025. + fi
  52026. + fi
  52027. + ;;
  52028. +
  52029. + *)
  52030. + if test "$mode" = clean ; then
  52031. + noexename=$name
  52032. + case $file in
  52033. + *.exe)
  52034. + func_stripname '' '.exe' "$file"
  52035. + file=$func_stripname_result
  52036. + func_stripname '' '.exe' "$name"
  52037. + noexename=$func_stripname_result
  52038. + # $file with .exe has already been added to rmfiles,
  52039. + # add $file without .exe
  52040. + rmfiles="$rmfiles $file"
  52041. + ;;
  52042. + esac
  52043. + # Do a test to see if this is a libtool program.
  52044. + if func_ltwrapper_p "$file"; then
  52045. + relink_command=
  52046. + func_source $dir/$noexename
  52047. +
  52048. + # note $name still contains .exe if it was in $file originally
  52049. + # as does the version of $file that was added into $rmfiles
  52050. + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
  52051. + if test "$fast_install" = yes && test -n "$relink_command"; then
  52052. + rmfiles="$rmfiles $objdir/lt-$name"
  52053. + fi
  52054. + if test "X$noexename" != "X$name" ; then
  52055. + rmfiles="$rmfiles $objdir/lt-${noexename}.c"
  52056. + fi
  52057. + fi
  52058. + fi
  52059. + ;;
  52060. + esac
  52061. + func_show_eval "$RM $rmfiles" 'exit_status=1'
  52062. + done
  52063. + objdir="$origobjdir"
  52064. +
  52065. + # Try to remove the ${objdir}s in the directories where we deleted files
  52066. + for dir in $rmdirs; do
  52067. + if test -d "$dir"; then
  52068. + func_show_eval "rmdir $dir >/dev/null 2>&1"
  52069. + fi
  52070. + done
  52071. +
  52072. + exit $exit_status
  52073. +}
  52074. +
  52075. +{ test "$mode" = uninstall || test "$mode" = clean; } &&
  52076. + func_mode_uninstall ${1+"$@"}
  52077. +
  52078. +test -z "$mode" && {
  52079. + help="$generic_help"
  52080. + func_fatal_help "you must specify a MODE"
  52081. +}
  52082. +
  52083. +test -z "$exec_cmd" && \
  52084. + func_fatal_help "invalid operation mode \`$mode'"
  52085. +
  52086. +if test -n "$exec_cmd"; then
  52087. + eval exec "$exec_cmd"
  52088. + exit $EXIT_FAILURE
  52089. +fi
  52090. +
  52091. +exit $exit_status
  52092. +
  52093. +
  52094. +# The TAGs below are defined such that we never get into a situation
  52095. +# in which we disable both kinds of libraries. Given conflicting
  52096. +# choices, we go for a static library, that is the most portable,
  52097. +# since we can't tell whether shared libraries were disabled because
  52098. +# the user asked for that or because the platform doesn't support
  52099. +# them. This is particularly important on AIX, because we don't
  52100. +# support having both static and shared libraries enabled at the same
  52101. +# time on that platform, so we default to a shared-only configuration.
  52102. +# If a disable-shared tag is given, we'll fallback to a static-only
  52103. +# configuration. But we'll never go from static-only to shared-only.
  52104. +
  52105. +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
  52106. +build_libtool_libs=no
  52107. +build_old_libs=yes
  52108. +# ### END LIBTOOL TAG CONFIG: disable-shared
  52109. +
  52110. +# ### BEGIN LIBTOOL TAG CONFIG: disable-static
  52111. +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
  52112. +# ### END LIBTOOL TAG CONFIG: disable-static
  52113. +
  52114. +# Local Variables:
  52115. +# mode:shell-script
  52116. +# sh-indentation:2
  52117. +# End:
  52118. +# vi:sw=2
  52119. --- a/bfd/Makefile.in
  52120. +++ b/bfd/Makefile.in
  52121. @@ -312,6 +312,7 @@ ALL_MACHINES = \
  52122. cpu-arc.lo \
  52123. cpu-arm.lo \
  52124. cpu-avr.lo \
  52125. + cpu-avr32.lo \
  52126. cpu-bfin.lo \
  52127. cpu-cr16.lo \
  52128. cpu-cr16c.lo \
  52129. @@ -493,6 +494,7 @@ BFD32_BACKENDS = \
  52130. elf32-arc.lo \
  52131. elf32-arm.lo \
  52132. elf32-avr.lo \
  52133. + elf32-avr32.lo \
  52134. elf32-bfin.lo \
  52135. elf32-cr16.lo \
  52136. elf32-cr16c.lo \
  52137. @@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
  52138. $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
  52139. $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  52140. $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
  52141. +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
  52142. + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
  52143. + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
  52144. + elf32-target.h
  52145. elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
  52146. $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
  52147. $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
  52148. --- /dev/null
  52149. +++ b/bfd/po/Makefile.in
  52150. @@ -0,0 +1,297 @@
  52151. +# Makefile for program source directory in GNU NLS utilities package.
  52152. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <[email protected]>
  52153. +# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
  52154. +#
  52155. +# This file may be copied and used freely without restrictions. It can
  52156. +# be used in projects which are not available under the GNU Public License
  52157. +# but which still want to provide support for the GNU gettext functionality.
  52158. +# Please note that the actual code is *not* freely available.
  52159. +
  52160. +PACKAGE = bfd
  52161. +VERSION = 2.18
  52162. +
  52163. +SHELL = /bin/sh
  52164. +
  52165. +
  52166. +srcdir = .
  52167. +top_srcdir = ..
  52168. +
  52169. +top_builddir = ..
  52170. +
  52171. +prefix = /usr
  52172. +exec_prefix = ${prefix}
  52173. +datadir = $(prefix)/share
  52174. +localedir = $(datadir)/locale
  52175. +gnulocaledir = $(prefix)/share/locale
  52176. +gettextsrcdir = $(prefix)/share/gettext/po
  52177. +subdir = po
  52178. +
  52179. +DESTDIR =
  52180. +
  52181. +INSTALL = /usr/bin/install -c
  52182. +INSTALL_DATA = ${INSTALL} -m 644
  52183. +MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
  52184. +
  52185. +CC = gcc
  52186. +GENCAT = gencat
  52187. +GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
  52188. +MSGFMT = /usr/bin/msgfmt
  52189. +XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
  52190. +MSGMERGE = PATH=../src:$$PATH msgmerge
  52191. +
  52192. +DEFS = -DHAVE_CONFIG_H
  52193. +CFLAGS = -g -O2
  52194. +CPPFLAGS =
  52195. +
  52196. +INCLUDES = -I.. -I$(top_srcdir)/intl
  52197. +
  52198. +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
  52199. +
  52200. +SOURCES = cat-id-tbl.c
  52201. +POFILES = @POFILES@
  52202. +GMOFILES = @GMOFILES@
  52203. +DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
  52204. +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
  52205. +
  52206. +# Note - the following line gets processed by bfd/configure and amended
  52207. +# to contain the full list of source dir POTFILES.
  52208. +SRC-POTFILES = \
  52209. +
  52210. +# Note - the following line gets processed by bfd/configure and amended
  52211. +# to contain the full list of build dir POTFILES.
  52212. +BLD-POTFILES = \
  52213. +
  52214. +CATALOGS = da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo
  52215. +CATOBJEXT = .gmo
  52216. +INSTOBJEXT = .mo
  52217. +
  52218. +.SUFFIXES:
  52219. +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
  52220. +
  52221. +.c.o:
  52222. + $(COMPILE) $<
  52223. +
  52224. +.po.pox:
  52225. + $(MAKE) $(PACKAGE).pot
  52226. + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
  52227. +
  52228. +.po.mo:
  52229. + $(MSGFMT) -o $@ $<
  52230. +
  52231. +.po.gmo:
  52232. + file=`echo $* | sed 's,.*/,,'`.gmo \
  52233. + && rm -f $$file && $(GMSGFMT) -o $$file $<
  52234. +
  52235. +.po.cat:
  52236. + sed -f ../intl/po2msg.sed < $< > $*.msg \
  52237. + && rm -f $@ && $(GENCAT) $@ $*.msg
  52238. +
  52239. +
  52240. +all: all-yes
  52241. +
  52242. +all-yes: $(CATALOGS) # $(PACKAGE).pot
  52243. +all-no:
  52244. +
  52245. +$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
  52246. + $(XGETTEXT) --default-domain=$(PACKAGE) \
  52247. + --directory=$(top_srcdir) \
  52248. + --add-comments --keyword=_ --keyword=N_ \
  52249. + [email protected] \
  52250. + --files-from=$(srcdir)/SRC-POTFILES.in
  52251. + $(XGETTEXT) --default-domain=$(PACKAGE) \
  52252. + --directory=.. \
  52253. + --directory=. \
  52254. + --add-comments --keyword=_ --keyword=N_ \
  52255. + --join-existing \
  52256. + [email protected] \
  52257. + --files-from=$(srcdir)/BLD-POTFILES.in
  52258. + rm -f $(srcdir)/$(PACKAGE).pot
  52259. + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
  52260. +
  52261. +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
  52262. +$(srcdir)/stamp-cat-id: $(PACKAGE).pot
  52263. + rm -f cat-id-tbl.tmp
  52264. + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
  52265. + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
  52266. + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
  52267. + rm cat-id-tbl.tmp; \
  52268. + else \
  52269. + echo cat-id-tbl.c changed; \
  52270. + rm -f $(srcdir)/cat-id-tbl.c; \
  52271. + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
  52272. + fi
  52273. + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
  52274. +
  52275. +
  52276. +install: install-exec install-data
  52277. +install-exec:
  52278. +install-info:
  52279. +install-html:
  52280. +install-data: install-data-yes
  52281. +install-data-no: all
  52282. +install-data-yes: all
  52283. + if test -r $(MKINSTALLDIRS); then \
  52284. + $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
  52285. + else \
  52286. + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
  52287. + fi
  52288. + @catalogs='$(CATALOGS)'; \
  52289. + for cat in $$catalogs; do \
  52290. + cat=`basename $$cat`; \
  52291. + case "$$cat" in \
  52292. + *.gmo) destdir=$(gnulocaledir);; \
  52293. + *) destdir=$(localedir);; \
  52294. + esac; \
  52295. + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
  52296. + dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
  52297. + if test -r $(MKINSTALLDIRS); then \
  52298. + $(MKINSTALLDIRS) $$dir; \
  52299. + else \
  52300. + $(top_srcdir)/mkinstalldirs $$dir; \
  52301. + fi; \
  52302. + if test -r $$cat; then \
  52303. + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
  52304. + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
  52305. + else \
  52306. + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
  52307. + echo "installing $(srcdir)/$$cat as" \
  52308. + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
  52309. + fi; \
  52310. + if test -r $$cat.m; then \
  52311. + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
  52312. + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
  52313. + else \
  52314. + if test -r $(srcdir)/$$cat.m ; then \
  52315. + $(INSTALL_DATA) $(srcdir)/$$cat.m \
  52316. + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
  52317. + echo "installing $(srcdir)/$$cat as" \
  52318. + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
  52319. + else \
  52320. + true; \
  52321. + fi; \
  52322. + fi; \
  52323. + done
  52324. + if test "$(PACKAGE)" = "gettext"; then \
  52325. + if test -r $(MKINSTALLDIRS); then \
  52326. + $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
  52327. + else \
  52328. + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
  52329. + fi; \
  52330. + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
  52331. + $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
  52332. + else \
  52333. + : ; \
  52334. + fi
  52335. +
  52336. +# Define this as empty until I found a useful application.
  52337. +installcheck:
  52338. +
  52339. +uninstall:
  52340. + catalogs='$(CATALOGS)'; \
  52341. + for cat in $$catalogs; do \
  52342. + cat=`basename $$cat`; \
  52343. + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
  52344. + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
  52345. + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
  52346. + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
  52347. + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
  52348. + done
  52349. + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
  52350. +
  52351. +check: all
  52352. +
  52353. +cat-id-tbl.o: ../intl/libgettext.h
  52354. +
  52355. +html dvi pdf ps info tags TAGS ID:
  52356. +
  52357. +mostlyclean:
  52358. + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
  52359. + rm -fr *.o
  52360. +
  52361. +clean: mostlyclean
  52362. +
  52363. +distclean: clean
  52364. + rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
  52365. + rm -f SRC-POTFILES BLD-POTFILES
  52366. +
  52367. +maintainer-clean: distclean
  52368. + @echo "This command is intended for maintainers to use;"
  52369. + @echo "it deletes files that may require special tools to rebuild."
  52370. + rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
  52371. +
  52372. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
  52373. +dist distdir: update-po $(DISTFILES)
  52374. + dists="$(DISTFILES)"; \
  52375. + for file in $$dists; do \
  52376. + ln $(srcdir)/$$file $(distdir) 2> /dev/null \
  52377. + || cp -p $(srcdir)/$$file $(distdir); \
  52378. + done
  52379. +
  52380. +update-po: Makefile
  52381. + $(MAKE) $(PACKAGE).pot
  52382. + PATH=`pwd`/../src:$$PATH; \
  52383. + cd $(srcdir); \
  52384. + catalogs='$(CATALOGS)'; \
  52385. + for cat in $$catalogs; do \
  52386. + cat=`basename $$cat`; \
  52387. + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
  52388. + mv $$lang.po $$lang.old.po; \
  52389. + echo "$$lang:"; \
  52390. + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
  52391. + rm -f $$lang.old.po; \
  52392. + else \
  52393. + echo "msgmerge for $$cat failed!"; \
  52394. + rm -f $$lang.po; \
  52395. + mv $$lang.old.po $$lang.po; \
  52396. + fi; \
  52397. + done
  52398. +
  52399. +SRC-POTFILES: SRC-POTFILES.in
  52400. + ( if test 'x$(srcdir)' != 'x.'; then \
  52401. + posrcprefix='$(top_srcdir)/'; \
  52402. + else \
  52403. + posrcprefix="../"; \
  52404. + fi; \
  52405. + rm -f $@-t $@ \
  52406. + && (sed -e '/^#/d' \
  52407. + -e '/^[ ]*$$/d' \
  52408. + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/[email protected] \
  52409. + | sed -e '$$s/\\$$//') > $@-t \
  52410. + && chmod a-w $@-t \
  52411. + && mv $@-t $@ )
  52412. +
  52413. +BLD-POTFILES: BLD-POTFILES.in
  52414. + ( rm -f $@-t $@ \
  52415. + && (sed -e '/^#/d' \
  52416. + -e '/^[ ]*$$/d' \
  52417. + -e "s@.*@ ../& \\\\@" < $(srcdir)/[email protected] \
  52418. + | sed -e '$$s/\\$$//') > $@-t \
  52419. + && chmod a-w $@-t \
  52420. + && mv $@-t $@ )
  52421. +
  52422. +SRC-POTFILES.in: # ../Makefile
  52423. + cd .. && $(MAKE) po/SRC-POTFILES.in
  52424. +
  52425. +BLD-POTFILES.in: # ../Makefile
  52426. + cd .. && $(MAKE) po/BLD-POTFILES.in
  52427. +
  52428. +# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
  52429. +# here breaks the implementation of the 'distclean' rule for maintainers.
  52430. +# This is because if 'make distclean' is run in the BFD directory, the
  52431. +# Makefile there will be deleted before 'distclean' is made here, and so
  52432. +# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
  52433. +# be satisfied.
  52434. +#
  52435. +# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
  52436. +# however since it is necessary that these files be built during
  52437. +# *configure* time, so that configure can insert them into the
  52438. +# po/Makefile that it is creating, so that the Makefile will have
  52439. +# the correct dependencies.
  52440. +Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
  52441. + cd .. \
  52442. + && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
  52443. + CONFIG_HEADERS= $(SHELL) ./config.status
  52444. +
  52445. +# Tell versions [3.59,3.63) of GNU make not to export all variables.
  52446. +# Otherwise a system limit (for SysV at least) may be exceeded.
  52447. +.NOEXPORT:
  52448. --- a/binutils/Makefile.in
  52449. +++ b/binutils/Makefile.in
  52450. @@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
  52451. $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
  52452. $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
  52453. $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
  52454. - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
  52455. + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
  52456. $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
  52457. $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
  52458. $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
  52459. --- a/ld/Makefile.in
  52460. +++ b/ld/Makefile.in
  52461. @@ -384,7 +384,34 @@ ALL_EMULATIONS = \
  52462. eavr3.o \
  52463. eavr4.o \
  52464. eavr5.o \
  52465. - eavr6.o \
  52466. + eavr6.o \
  52467. + eavr32elf_ap7000.o \
  52468. + eavr32elf_ap7001.o \
  52469. + eavr32elf_ap7002.o \
  52470. + eavr32elf_ap7200.o \
  52471. + eavr32elf_uc3a0128.o \
  52472. + eavr32elf_uc3a0256.o \
  52473. + eavr32elf_uc3a0512.o \
  52474. + eavr32elf_uc3a0512es.o \
  52475. + eavr32elf_uc3a1128.o \
  52476. + eavr32elf_uc3a1256.o \
  52477. + eavr32elf_uc3a1512es.o \
  52478. + eavr32elf_uc3a1512.o \
  52479. + eavr32elf_uc3a364.o \
  52480. + eavr32elf_uc3a364s.o \
  52481. + eavr32elf_uc3a3128.o \
  52482. + eavr32elf_uc3a3128s.o \
  52483. + eavr32elf_uc3a3256.o \
  52484. + eavr32elf_uc3a3256s.o \
  52485. + eavr32elf_uc3b064.o \
  52486. + eavr32elf_uc3b0128.o \
  52487. + eavr32elf_uc3b0256es.o \
  52488. + eavr32elf_uc3b0256.o \
  52489. + eavr32elf_uc3b164.o \
  52490. + eavr32elf_uc3b1128.o \
  52491. + eavr32elf_uc3b1256es.o \
  52492. + eavr32elf_uc3b1256.o \
  52493. + eavr32linux.o \
  52494. ecoff_i860.o \
  52495. ecoff_sparc.o \
  52496. eelf32_spu.o \
  52497. @@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
  52498. $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
  52499. ${GEN_DEPENDS}
  52500. ${GENSCRIPTS} avr6 "$(tdir_avr2)"
  52501. +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
  52502. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52503. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52504. + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
  52505. +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
  52506. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52507. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52508. + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
  52509. +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
  52510. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52511. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52512. + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
  52513. +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
  52514. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52515. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52516. + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
  52517. +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
  52518. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52519. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52520. + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
  52521. +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
  52522. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52523. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52524. + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
  52525. +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
  52526. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52527. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52528. + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
  52529. +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
  52530. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52531. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52532. + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
  52533. +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
  52534. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52535. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52536. + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
  52537. +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
  52538. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52539. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52540. + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
  52541. +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
  52542. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52543. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52544. + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
  52545. +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
  52546. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52547. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52548. + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
  52549. +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
  52550. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52551. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52552. + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
  52553. +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
  52554. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52555. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52556. + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
  52557. +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
  52558. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52559. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52560. + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
  52561. +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
  52562. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52563. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52564. + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
  52565. +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
  52566. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52567. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52568. + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
  52569. +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
  52570. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52571. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52572. + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
  52573. +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
  52574. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52575. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52576. + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
  52577. +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
  52578. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52579. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52580. + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
  52581. +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
  52582. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52583. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52584. + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
  52585. +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
  52586. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52587. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52588. + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
  52589. +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
  52590. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52591. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52592. + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
  52593. +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
  52594. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52595. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52596. + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
  52597. +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
  52598. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52599. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52600. + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
  52601. +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
  52602. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52603. + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
  52604. + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
  52605. +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
  52606. + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
  52607. + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
  52608. + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
  52609. ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
  52610. $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
  52611. ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
  52612. @@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
  52613. || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
  52614. fi
  52615. -install-data-local:
  52616. +# We want install to imply install-info as per GNU standards, despite the
  52617. +# cygnus option.
  52618. +install-data-local: install-info
  52619. $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
  52620. for f in ldscripts/*; do \
  52621. $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
  52622. --- /dev/null
  52623. +++ b/libiberty/required-list
  52624. @@ -0,0 +1 @@
  52625. +./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./alloca.o ./argv.o ./choose-temp.o ./concat.o ./cp-demint.o ./dyn-string.o ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o ./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o ./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o ./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o ./pex-unix.o ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o ./strsignal.o ./unlink-if-ordinary.o ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o
  52626. --- a/opcodes/configure
  52627. +++ b/opcodes/configure
  52628. @@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
  52629. bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
  52630. bfd_arm_arch) ta="$ta arm-dis.lo" ;;
  52631. bfd_avr_arch) ta="$ta avr-dis.lo" ;;
  52632. + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
  52633. bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
  52634. bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
  52635. bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
  52636. @@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
  52637. ta="$ta sh64-dis.lo sh64-opc.lo"
  52638. archdefs="$archdefs -DINCLUDE_SHMEDIA"
  52639. break;;
  52640. - esac;
  52641. + esac
  52642. done
  52643. ta="$ta sh-dis.lo cgen-bitset.lo" ;;
  52644. bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
  52645. --- a/opcodes/Makefile.in
  52646. +++ b/opcodes/Makefile.in
  52647. @@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
  52648. # Header files.
  52649. HFILES = \
  52650. cgen-ops.h cgen-types.h \
  52651. + avr32-asm.h avr32-opc.h \
  52652. fr30-desc.h fr30-opc.h \
  52653. frv-desc.h frv-opc.h \
  52654. h8500-opc.h \
  52655. @@ -291,6 +292,9 @@ CFILES = \
  52656. arc-ext.c \
  52657. arm-dis.c \
  52658. avr-dis.c \
  52659. + avr32-asm.c \
  52660. + avr32-dis.c \
  52661. + avr32-opc.c \
  52662. bfin-dis.c \
  52663. cgen-asm.c \
  52664. cgen-bitset.c \
  52665. @@ -445,6 +449,9 @@ ALL_MACHINES = \
  52666. arc-ext.lo \
  52667. arm-dis.lo \
  52668. avr-dis.lo \
  52669. + avr32-asm.lo \
  52670. + avr32-dis.lo \
  52671. + avr32-opc.lo \
  52672. bfin-dis.lo \
  52673. cgen-asm.lo \
  52674. cgen-bitset.lo \
  52675. @@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
  52676. $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
  52677. opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
  52678. $(INCDIR)/opcode/avr.h
  52679. +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  52680. + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
  52681. + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
  52682. + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
  52683. +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  52684. + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
  52685. + avr32-opc.h opintl.h
  52686. +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  52687. + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
  52688. bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
  52689. $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
  52690. cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \