• GNU Binutils 2.47 gör utvecklarnas verktygslåda snabbare och mer flexibel

    GNU-projektet har släppt Binutils 2.47, en ny version av den viktiga verktygssamling som används för att bygga och analysera program i Linux. Uppdateringen ger bland annat bättre stöd för RISC-V, nya möjligheter vid felsökning och snabbare länkning av stora program.

    GNU-projektet har släppt GNU Binutils 2.47, en ny version av den verktygssamling som används för att bygga, länka och undersöka program på Linux och andra Unixliknande operativsystem.

    Binutils arbetar oftast i bakgrunden och märks därför sällan av vanliga datoranvändare. För programmerare, systemutvecklare och skapare av Linuxdistributioner är verktygen däremot mycket viktiga. De används tillsammans med bland annat kompilatorn GCC, standardbiblioteket glibc och felsökaren GDB.

    Vad är GNU Binutils?

    När en programmerare skriver ett program måste källkoden gå igenom flera steg innan den kan köras av datorn.

    Först översätts programkoden till maskinkod. Därefter måste olika delar av programmet kopplas samman till en färdig körbar fil. Binutils innehåller flera av de verktyg som behövs under denna process.

    Bland de mest kända verktygen finns:

    • as – omvandlar assemblerkod till objektfiler.
    • ld – länkar samman objektfiler och bibliotek till färdiga program.
    • objdump – visar information om innehållet i körbara filer och objektfiler.
    • readelf – granskar ELF-filer, som är det vanligaste formatet för körbara program i Linux.
    • ar – skapar och hanterar statiska programbibliotek.

    De flesta utvecklare använder inte alla dessa kommandon direkt. I stället anropas de automatiskt av kompilatorer och byggsystem.

    Enklare felsökning av program

    Både objdump och readelf har fått det nya alternativet:

    --debug-dir=DIR

    Det gör det möjligt att ange en särskild katalog där verktygen ska leta efter separata filer med felsökningsinformation.

    Felsökningsinformation innehåller exempelvis funktionsnamn, variabelnamn och kopplingar mellan maskinkod och programmets ursprungliga källkod. Informationen är mycket användbar när ett program kraschar eller beter sig fel.

    I många Linuxdistributioner lagras felsökningsinformationen separat från själva programmet. Det gör programfilerna mindre, samtidigt som utvecklare fortfarande kan installera den mer detaljerade informationen när den behövs.

    Med det nya alternativet blir det enklare att undersöka program när felsökningsfilerna ligger på en annan plats än normalt.

    Objdump kan visa globala variabler

    Verktyget objdump har även fått alternativet:

    --map-global-vars

    Det kan användas för att visa var globala variabler finns i en objektfil och vilken typ av information de innehåller.

    En global variabel är en variabel som kan användas av flera delar av ett program. Sådana variabler kan ibland göra program svårare att felsöka, eftersom innehållet kan ändras från många olika platser.

    Den nya funktionen kan därför hjälpa utvecklare att förstå hur ett program använder sitt minne och hur olika variabler är placerade i den färdiga programfilen.

    Objektfiler kan behandlas som ett bibliotek

    Länkaren har fått stöd för alternativen:

    --start-lib

    --end-lib

    De gör det möjligt att behandla en grupp objektfiler ungefär som om de låg i ett statiskt bibliotek.

    Ett statiskt bibliotek är normalt en samling färdigkompilerade objektfiler som har packats ihop i en arkivfil. Med de nya alternativen behöver utvecklaren inte alltid skapa en sådan arkivfil först.

    Det kan förenkla byggprocessen, särskilt i stora projekt där många mindre objektfiler ska kopplas samman.

    Länkaren tar då endast med de objektfiler som verkligen behövs, på ungefär samma sätt som när ett vanligt statiskt bibliotek används.

    Snabbare länkning kan ge större programfiler

    BFD-länkaren stöder nu optimeringsnivån:

    -O 0

    När denna nivå används slutar länkaren att slå samman innehållet i vissa sektioner som innehåller identiska eller liknande data.

    Normalt försöker länkaren minska storleken på det färdiga programmet genom att kombinera exempelvis identiska textsträngar eller annan återkommande information.

    Det arbetet kan dock ta tid, särskilt när mycket stora program ska byggas.

    Genom att använda -O 0 kan länkningen därför gå betydligt snabbare. Nackdelen är att det färdiga programmet kan bli större eftersom information som hade kunnat delas i stället sparas flera gånger.

    Det blir alltså en avvägning mellan byggtid och filstorlek.

    Funktionen kan vara särskilt användbar under utveckling, när ett program kompileras och länkas om många gånger. Inför en slutlig utgåva kan utvecklaren sedan välja en högre optimeringsnivå för att skapa en mindre programfil.

    Förbättrat stöd för RISC-V

    GNU Binutils 2.47 utökar även stödet för processorarkitekturen RISC-V.

    RISC-V är en öppen processorarkitektur. Till skillnad från flera traditionella processorplattformar kan den användas och vidareutvecklas utan att tillverkare behöver betala licensavgifter för själva instruktionsuppsättningen.

    Arkitekturen används bland annat i mikrokontroller, inbyggda system, forskningsprojekt, servrar och experimentella persondatorer.

    Den nya versionen av Binutils innehåller stöd för flera ytterligare RISC-V-utökningar, däribland:

    • zalasr 1.0
    • svrsw60t59b 1.0
    • zvabd 1.0
    • smpmpmt 1.0

    Stöd har också lagts till för flera instruktioner som utför vektoriella punktprodukter.

    Vektorberäkningar gör det möjligt för processorn att bearbeta flera tal samtidigt i stället för ett tal i taget. Det är särskilt användbart inom områden som bildbehandling, artificiell intelligens, vetenskapliga beräkningar och signalbehandling.

    Punktprodukter är en vanlig matematisk operation inom exempelvis maskininlärning. Bättre stöd för sådana instruktioner gör det möjligt för utvecklare att skapa program som mer effektivt utnyttjar moderna RISC-V-processorer.

    Äldre 32-bitars S/390 fasas ut

    Stödet för den 32-bitars IBM S/390-plattformen har nu markerats som föråldrat.

    Det innebär inte nödvändigtvis att stödet försvinner omedelbart, men det är en tydlig signal om att det kan tas bort i en framtida version.

    Den modernare 64-bitarsarkitekturen S/390x påverkas inte. Den fortsätter att stödjas och underhållas.

    S/390 och S/390x används främst i IBM:s stordatorsystem. Att den äldre 32-bitarsversionen fasas ut är därför ett naturligt steg när allt fler system använder 64-bitarsprocessorer och modernare programvara.

    En viktig uppdatering som arbetar i bakgrunden

    GNU Binutils 2.47 innehåller inga funktioner som vanliga datoranvändare kommer att se direkt på skrivbordet. Uppdateringen är ändå betydelsefull.

    Nästan alla program i en Linuxdistribution har vid något tillfälle passerat genom en assembler, länkare eller något annat verktyg från Binutils.

    Förbättringarna kan ge utvecklare snabbare byggprocesser, bättre möjligheter att undersöka programfiler och utökat stöd för nya processorinstruktioner.

    GNU Binutils 2.47 finns tillgänglig som källkod från GNU-projektets servrar. Användare av Linuxdistributioner med löpande uppdateringar kan räkna med att versionen dyker upp i pakethanteraren när distributionernas utvecklare har hunnit testa och paketera den.

    https://lists.gnu.org/archive/html/info-gnu/2026-07/msg00006.html

    Fakta: GNU Binutils 2.47

    • Utvecklare: GNU-projektet
    • ”`
    • Typ av programvara: Verktyg för assemblering, länkning och analys av binära filer
    • Viktiga verktyg: as, ld, objdump, readelf och ar
    • Nyheter: Förbättrad felsökning, nya länkaralternativ och snabbare länkning
    • Processorstöd: Utökat stöd för flera nya RISC-V-instruktioner
    • Utfasning: Stödet för 32-bitars IBM S/390 har markerats som föråldrat
    • Licens: Fri programvara inom GNU-projektet
    • ”`
  • Frame – en helt ny X11-server skriven i assembler

    Samtidigt som stora delar av Linuxvärlden lämnar det gamla grafiksystemet X11 till förmån för Wayland väljer den norske utvecklaren Geir Isene att gå åt motsatt håll. Han har byggt en helt ny X11-server från grunden – skriven nästan uteslutande i assembler för x86-64-processorer.

    Projektet heter Frame och är ett tekniskt experiment som försöker besvara en ovanlig fråga: Hur liten och enkel kan en fungerande grafisk Linuxmiljö egentligen bli?

    Programmet som placerar bilden på skärmen

    För att förstå vad Frame gör behöver man först känna till vad en grafikserver är.

    När ett program som Firefox eller GIMP vill visa ett fönster på skärmen ritar programmet normalt inte direkt mot bildskärmen. I stället skickar det instruktioner till ett underliggande system som hanterar fönster, tangentbord, muspekare och bildskärmar.

    På traditionella Linuxdatorer har denna uppgift länge skötts av X.Org Server, den vanligaste implementationen av X11-systemet. X11 har sina rötter i 1980-talet och har under årtionden byggts ut för att fungera med många olika datorer, grafikkort och användningsområden.

    Resultatet är ett stort och komplicerat system med många historiska lager.

    Frame försöker i stället börja om från början.

    Byggd direkt ovanpå Linuxkärnan

    Frame bygger inte vidare på X.Org och använder inte heller vanliga programbibliotek som libc, Mesa, Xlib eller FreeType. I stället kommunicerar servern direkt med Linuxkärnan genom systemanrop.

    För att visa grafik använder Frame Linux gränssnitt DRM och KMS, vilka hanterar grafikkort och bildskärmslägen. Tangentbord och mus läses genom evdev, det normala gränssnittet för inmatningsenheter i Linux.

    Program som Firefox kommunicerar med Frame genom själva X11-protokollet.

    Man kan likna det vid att bygga en bil utan att köpa färdiga delar från en underleverantör. I stället tillverkar utvecklaren stora delar av motorn, elsystemet och instrumentpanelen själv och kopplar dem direkt till chassit.

    Resultatet är en statiskt länkad programfil utan vanliga beroenden till installerade bibliotek.

    Skriven i assembler

    De flesta moderna program skrivs i språk som C, C++, Rust eller Python. Frame är i stället skriven i assembler.

    Assembler ligger mycket nära processorns egna maskininstruktioner. Utvecklaren arbetar därför direkt med register, minnesadresser, instruktioner och systemanrop.

    Det ger stor kontroll över exakt vad datorn gör, men gör samtidigt utvecklingen betydligt mer komplicerad. Funktioner som vanliga programmeringsspråk och bibliotek erbjuder automatiskt måste ofta byggas manuellt.

    Frame består enligt utvecklaren av omkring 20 000 rader assemblerkod. Vid en senare genomgång låg källkoden närmare 25 000 rader. Det är fortfarande litet jämfört med etablerade grafiksystem, men antalet kodrader säger inte automatiskt något om stabilitet, säkerhet eller hur komplett programmet är.

    Kan redan köra Firefox och GIMP

    Frame är långt ifrån en fullständig implementation av X11, men servern stöder redan tillräckligt många delar av protokollet för att kunna köra riktiga skrivbordsprogram.

    Bland funktionerna finns stöd för att skapa och hantera fönster, läsa tangentbord och mus, hantera urklipp, bilder och egenskaper samt kommunicera med program genom X11-protokollet.

    Servern innehåller även stöd för flera vanliga X11-utökningar, exempelvis RANDR för bildskärmshantering, SHAPE för fönster med särskilda former och MIT-SHM för snabbare överföring av bilddata mellan program.

    Isene uppger att han använder Frame som sin dagliga grafikserver och att både Firefox och bildredigeringsprogrammet GIMP fungerar på systemet.

    Det betyder dock inte att alla X11-program fungerar. X11 är ett omfattande protokoll med många funktioner och tillägg som utvecklats under flera årtionden. Program kan därför använda funktioner som Frame ännu inte känner till.

    En hel skrivbordsmiljö i assembler

    Frame är nära kopplad till ett större projekt som heter CHasm, en förkortning av ”CHange to ASM”.

    CHasm består av flera små Linuxprogram som också är skrivna i x86-64-assembler. Där ingår bland annat:

    • Tile, en fönsterhanterare som placerar fönster sida vid sida.
    • Glass, en terminalemulator.
    • Bare, ett kommandoskal.
    • Strip, en statusrad.
    • Bolt, ett skärmlås och inloggningsverktyg.

    Tillsammans kan dessa program skapa en komplett, men mycket minimalistisk, grafisk Linuxsession. Projekten är fristående och utgör inte en traditionell skrivbordsmiljö som KDE Plasma eller GNOME.

    CHasm-verktygen kommunicerar direkt med Linuxkärnan eller med X11-protokollet och saknar dynamiska programberoenden. Enligt projektets dokumentation omfattar den körbara delen av hela sessionen mindre än 500 kilobyte, även om detta inte inkluderar Linuxkärnan, drivrutinerna eller de vanliga program som användaren startar.

    Ett skrivbord som försöker göra ingenting

    Ett av projektets viktigaste mål är att datorn ska vara helt stilla när användaren inte arbetar.

    Moderna skrivbordsmiljöer kan ha många processer som regelbundet vaknar för att kontrollera tiden, uppdatera animationer, läsa systeminformation eller kontrollera om något har förändrats. Varje sådan aktivitet använder lite processortid och kan i teorin påverka batteritiden.

    Frame och CHasm är i stället konstruerade för att vänta tills det faktiskt händer något, exempelvis att användaren rör musen eller att ett program skickar nya bilddata.

    Isene genomförde ett informellt test där Frame och X.Org hade ungefär samma totala strömförbrukning när datorn stod oanvänd. X.Org använde däremot enligt hans mätning nästan tre gånger så mycket processortid.

    Skillnaden i total strömförbrukning var liten eftersom bildskärmen, nätverket och andra delar av datorn använder betydligt mer energi än en vilande grafikserver. Mätningen är dessutom utförd av utvecklaren själv på en enda dator och ska därför inte betraktas som ett oberoende prestandatest.

    Artificiell intelligens har hjälpt till

    Projektet har utvecklats med omfattande hjälp av AI-verktyget Claude Code. Isene beskriver hur han förklarar problem och önskade funktioner för AI-systemet, som sedan hjälper till att skapa och ändra assemblerkoden.

    Det gör Frame intressant även ur ett annat perspektiv. Att skriva en X11-server i assembler är normalt ett mycket tidskrävande specialprojekt. Moderna AI-verktyg kan göra det möjligt för en ensam utvecklare att experimentera med systemprogrammering på en nivå som tidigare ofta krävde större grupper.

    Samtidigt innebär AI-genererad kod inte att programmet automatiskt är korrekt. En grafikserver hanterar minne, inmatning, andra program och hårdvara. Fel kan orsaka allt från grafikproblem och krascher till säkerhetsbrister.

    Frame behöver därför granskas, testas och underhållas på samma sätt som all annan systemnära programvara – kanske ännu mer noggrant eftersom assembler saknar många av de säkerhetsfunktioner som finns i modernare språk.

    Ingen ersättare för X.Org ännu

    Frame är för närvarande ett experimentellt projekt och inte ett praktiskt alternativ för vanliga Linuxanvändare.

    Servern fungerar endast på Linuxdatorer med x86-64-processor. Den saknar delar av X11-protokollet, har begränsat hårdvarustöd och använder huvudsakligen mjukvarurendering i stället för fullständig grafikacceleration.

    Det finns inte heller några etablerade installationspaket eller färdiga inloggningssessioner för stora Linuxdistributioner. Projektet är främst byggt för utvecklarens egen dator och hans eget arbetssätt.

    CHasm-dokumentationen säger uttryckligen att verktygen främst publiceras som inspiration. Tanken är inte nödvändigtvis att användare ska installera dem som de är, utan att intresserade utvecklare ska studera, ändra och anpassa koden efter sina egna behov.

    Ett experiment om kontroll och enkelhet

    Frame kommer sannolikt inte att ersätta X.Org eller konkurrera med Wayland inom den närmaste framtiden. Projektets verkliga betydelse ligger i stället i vad det demonstrerar.

    Det visar att det fortfarande är möjligt för en enskild utvecklare att bygga en fungerande grafikserver direkt ovanpå Linuxkärnan. Det visar också hur mycket av ett modernt datorsystem som egentligen består av valbara lager – bibliotek, ramverk och verktyg som är praktiska, men inte alltid absolut nödvändiga.

    Frame är därför mindre en färdig produkt och mer ett tekniskt laboratorium.

    Projektet ställer en fråga som ofta försvinner när programvaran växer: Hur mycket kod behöver vi egentligen för att öppna ett fönster, ta emot ett tangenttryck och placera några bildpunkter på skärmen?

    Geir Isenes svar är att det går att göra med betydligt mindre än vad dagens vanliga Linuxskrivbord använder – men också att enkelhet på ytan kan kräva mycket avancerat arbete under huven.

    https://github.com/isene/chasm

    $ teknisk_faktaruta –frame
    Projekt: Frame
    Typ: Experimentell X11-server
    Utvecklare: Geir Isene
    Plattform: Linux på x86-64
    Programmeringsspråk: x86-64-assembler
    Kodmängd: Cirka 20 000 rader assemblerkod
    Grafik: DRM/KMS och mjukvarurendering
    Inmatning: evdev för tangentbord och mus
    Kommunikation: X11:s trådprotokoll
    X11-utökningar: Bland annat RANDR, SHAPE, XInput2 och MIT-SHM
    Externa beroenden: Inga vanliga körberoenden som libc, Mesa, Xlib eller FreeType
    Testade program: Bland annat Firefox och GIMP
    Status: Experimentellt och ännu inte en fullständig ersättare för X.Org
    root@linux:~# Frame är användbart på utvecklarens dator, men saknar fortfarande fullständigt protokoll- och hårdvarustöd.
  • Stöd för AMD Zen 6, Arm v9.7 och mer RISC-V

    När nästa generations processorer från AMD, Arm och RISC-V står för dörren måste även mjukvarans grundverktyg ligga steget före. Med GNU Binutils 2.46 tar utvecklarvärlden ett viktigt kliv mot framtiden genom att lägga till stöd för kommande CPU-arkitekturer, förbättrad felsökning och en moderniserad verktygskedja som gör fria operativsystem redo för hårdvara som ännu inte nått marknaden.

    När nya generationer av processorer närmar sig marknaden räcker det inte med snabbare kisel och fler kärnor. För att operativsystem och program verkligen ska kunna utnyttja ny hårdvara måste verktygen som bygger dem hänga med. Med version 2.46 tar GNU Binutils ett tydligt kliv framåt och gör utvecklare redo för kommande CPU-arkitekturer.

    Stöd för AMD Zen 6, Arm v9.7 och mer RISC-V

    En av de mest uppmärksammade nyheterna är att Binutils 2.46 nu har stöd för AMD:s kommande Zen 6-arkitektur. Även om processorerna ännu inte finns på marknaden innebär detta att mjukvara kan byggas och testas i god tid, så att ekosystemet är redo vid lansering.

    På Arm-sidan fortsätter utvecklingen i snabb takt. Stödet för Arm v9.6 är nu färdigställt, samtidigt som Arm v9.7 introduceras via flaggan -march=armv9.7-a. Dessutom finns tidigt stöd för framtida tekniker som POE2 och vMTE, vilket visar att verktygskedjan redan blickar framåt mot nästa generation av Arm-baserade system.

    Även RISC-V får ett lyft. Nya tillägg som sdtrig v1.0 och ssstrict v1.0 stärker stödet för den öppna instruktionsuppsättningen och gör plattformen mer attraktiv för både forskning och kommersiella produkter.

    SFrame Version 3 blir standard

    Assemblern i Binutils 2.46 använder nu SFrame Version 3 som standard. Det här påverkar framför allt hur stackramar och felsökningsinformation hanteras. För utvecklare innebär det bättre stöd för mycket stora program, över 2 gigabyte i storlek, mer flexibla ramlayouter och tydligare information om yttersta funktionsramar. Även hanteringen av signaler förbättras, vilket ger mer tillförlitliga bakspår vid felsökning.

    Nytt delat bibliotek för SFrame

    Som en följd av SFrame-uppdateringen introduceras ett nytt versionerat delat bibliotek, libsframe.so.3. Det använder symbolversionering under namnet LIBSFRAME_3.0 och är ett viktigt steg för att säkerställa långsiktig kompatibilitet mellan olika versioner av verktygen.

    Striktare kontroller och färre dolda fel

    Utvecklarna har också passat på att skärpa den interna kvaliteten. Verktyg som objcopy gör nu striktare kontroller av målformat, vilket gör att felaktig användning upptäcks tidigare i byggprocessen. Det äldre, mer tillåtande beteendet finns fortfarande kvar, men kräver nu att man uttryckligen anger vilket format som ska användas.

    Städning bland gamla plattformar

    För att minska underhållsbördan har stödet för vissa äldre och i praktiken oanvända mål tagits bort. Exempel på detta är NaCl och Solaris på PowerPC. Genom att rensa bort sådant som inte längre används kan utvecklingen fokusera på moderna och relevanta plattformar.

    Fler förbättringar under huven

    Utöver de stora nyheterna innehåller Binutils 2.46 mängder av buggfixar och mindre förbättringar. Programmet readelf kan nu visa innehållet i Global Offset Tables, stödet för länkartaggning har förbättrats och källkodstarbollarna skapas på ett sätt som underlättar reproducerbara byggen.

    En tyst men viktig uppdatering

    GNU Binutils 2.46 är ingen version som märks direkt av vanliga användare, men för utvecklare och hela open source-världen är den central. Den gör verktygskedjan redo för framtidens processorer, förbättrar felsökning i stora program och minskar teknisk skuld. Det är ännu ett exempel på hur grundläggande infrastruktur ofta utvecklas i det tysta, men med enorm betydelse för allt som byggs ovanpå.

    https://sourceware.org/pipermail/binutils/2026-February/148149.html

    Teknisk faktaruta: GNU Binutils 2.46
    Vad är det?
    Verktygssamling för binärhantering i GNU-toolchain, bl.a. assembler (as), länkare (ld), objcopy, readelf.
    Processor- och ISA-stöd
    • AMD: igenkänning/stöd för Zen 6
    • Arm: Arm v9.6 färdigställt, Arm v9.7 via -march=armv9.7-a
    • Arm: tidigt stöd för kommande tekniker (POE2, vMTE)
    • RISC-V: nya tillägg, bl.a. sdtrig v1.0 och ssstrict v1.0
    SFrame (stack frame-format)
    Assemblern emitterar SFrame Version 3 som standard, med stöd för binärer > 2 GiB, flexiblare frame-layout, markering av yttersta frames och förbättrad hantering av signal-trampoliner.
    Nytt bibliotek
    Ny versionerad delad bibliotekfil: libsframe.so.3
    Symbolversionering: LIBSFRAME_3.0
    Skärpta kontroller
    Striktare validering och plugin-hantering. Exempel: objcopy kontrollerar målformat hårdare; äldre beteende kan kräva att utdataformat anges explicit.
    Övrigt
    • readelf kan visa innehåll i Global Offset Tables (GOT)
    • förbättrad linker-taggning
    • borttaget stöd för vissa äldre mål (t.ex. NaCl, Solaris/PowerPC)
    • jämn release: GOLD-länkaren ingår i källträdet
  • GNU Binutils 2.45 – Stort lyft för RISC-V och nya funktioner för flera arkitekturer

    GNU-projektet har släppt version 2.45 av GNU Binutils, en samling viktiga kommandoradsverktyg för lågnivåprogrammering. Binutils används för att skapa, analysera och manipulera objektfiler (mellanformatet som kompilatorer producerar innan det blir körbara program), bibliotek och färdiga exekverbara filer.

    Tillsammans med GCC (GNU Compiler Collection – GNU:s samling av kompilatorer), glibc (GNU C Library – standardbibliotek för C-språket) och GDB (GNU Debugger – felsökningsverktyg) utgör Binutils kärnan i den öppna GNU-verktygskedjan som driver stora delar av Linux-världen.

    Den nya versionen innehåller både grundläggande förbättringar och omfattande stöd för nya processorinstruktioner i arkitekturer som RISC-V, Arm v9.6, LoongArch och x86.

    Mer pålitliga stackspårningar med SFrame

    En av de mest tekniskt betydelsefulla nyheterna är förbättringarna i SFrame, ett format för att lagra komprimerad information om funktionsanrop och returadresser.

    När ett program kraschar eller behöver analyseras kan utvecklare använda stack traces (anropsstackar) för att se exakt var i koden något gick fel. Med SFrame i version 2 blir denna information mer kompakt och samtidigt mer exakt, vilket särskilt gynnar verktyg som körs utanför själva processen (till exempel felsökningsverktyg som analyserar kärndumpar).

    I och med version 2.45:

    • GAS (GNU Assembler – översättare från assemblerkod till maskinkod) genererar nu SFrame-sektioner med SHT_GNU_SFRAME-typen och flaggan SFRAME_F_FDE_FUNC_START_PCREL som standard.
    • IBM\:s s390x-plattform (64-bitars version av stordatorarkitekturen System/390) får för första gången möjlighet att generera SFrame direkt från CFI-direktiv (Call Frame Information – metadata som beskriver hur stackramar byggs upp och återställs).

    Nya verktyg direkt i assemblerkoden

    Utvecklare får även två nya direktiv:

    • .errif – kastar ett felmeddelande vid ett visst villkor.
    • .warnif – ger en varning vid ett visst villkor.

    Villkoren utvärderas först när filen är helt assemblerad, vilket gör det möjligt att samla in mer kontext innan felmeddelandet visas. Detta är användbart i stora kodbaser eller firmwareprojekt.

    RISC-V tar flera steg framåt

    RISC-V är en öppen processorinstruktionsuppsättning (ISA – Instruction Set Architecture) som kan användas royaltyfritt av tillverkare. Den växer snabbt i betydelse, och Binutils 2.45 bygger ut stödet rejält:

    • Stöd för Privileged Specification v1.13 – den del av RISC-V-specifikationen som reglerar hur operativsystem och hårdvara kommunicerar på låg nivå.
    • Tre nya profiler (20, 22 och 23) som definierar färdiga kombinationer av instruktionstillägg.
    • Nytt direktiv .bfloat16 – hantering av 16-bitars flyttal i formatet Brain Floating Point, populärt i maskininlärning.
    • Stöd för en lång lista av standardtillägg som exempelvis:
    • sha – hårdvaruacceleration för SHA-kryptografi.
    • zce – komprimerade instruktioner för inbyggda system.
    • smrnmi – säker maskinvaruhantering av icke-maskerbara avbrott.
    • Stöd för leverantörsspecifika tillägg, bland annat från:
    • T-Head (Alibaba Groups processordivision): xtheadvdot – specialinstruktioner för vektorberäkningar.
    • MIPS: instruktioner som förbättrar minnesoperationer och kontrollflöde.

    En viktig förändring är också att $x-mappningssymboler nu ersätts med \$x för att bättre ange vilken ISA de tillhör. Detta kan kräva att viss äldre RISC-V-kod byggs om.

    Arm v9.6 – försprång till framtida CPU-funktioner

    För Arm tillkommer flaggan -march=armv9.6-a i assemblern. Den aktiverar redan nu stöd för kommande instruktioner som väntas i kommersiella processorer från slutet av 2025 och framåt.

    Några exempel:

    • +sme2p2 – nästa generation av Scalable Matrix Extension, för maskininlärning och vektorberäkningar.
    • +ssve-aes – effektivare AES-kryptering med Scalable Vector Extension (SVE).
    • +f8f32mm – snabbare matrismultiplikation med 8-bitars och 32-bitars flyttal.

    x86 och LoongArch – små men viktiga uppdateringar

    x86-sidan:

    • Stöd för Zhaoxin PadLock XMODX – en uppsättning kryptografiska instruktioner i vissa kinesiska x86-processorer.
    • Borttagning av stöd för 256-bitars varianten av AVX10.2-avrundningsinstruktioner – eftersom alla berörda CPU\:er redan stöder 512-bitarsvarianten.

    För LoongArch (en kinesisk processorarkitektur):

    • Nya alias för vissa 32-bitars instruktionsvarianter.
    • Förbättrade varningar när .align-direktiv eller matematiska uttryck riskerar att ge fel (till exempel negativa skiftningar eller division med noll).

    Slutsats

    GNU Binutils 2.45 är en ovanligt stor uppdatering – särskilt för dem som utvecklar kod nära hårdvaran. Den stärker debugmöjligheterna, inför nya verktyg i själva assemblern och ger utvecklare tillgång till nästa generations processorfunktioner redan idag.

    För RISC-V betyder det här ett bredare och mer komplett verktygsstöd, för Arm öppnar det dörren till framtida vektor- och krypteringsförbättringar, och för både x86 och LoongArch handlar det om små men värdefulla optimeringar

    https://www.gnu.org/software/binutils

    GNU Binutils 2.45 — Tekniska begrepp & förkortningar
    Binutils
    Samling lågnivåverktyg (bl.a. as, ld, objdump, readelf) för objektfiler, bibliotek och länkningssteg.
    GAS
    GNU Assembler – översätter assembler till maskinkod/ELF; i 2.45 genererar GAS SFrame V2 per default.
    ELF
    Executable and Linkable Format – standard för binärformat på Unix-lika system; sektioner, symboltabeller, relokerings-poster m.m.
    SFrame (V2)
    Kompakt stack-unwindformat för out-of-process stacktracing; lagrar återställningsregler per funktion utan full DWARF-overhead.
    SHT_GNU_SFRAME
    ELF-sektionstyp som identifierar SFrame-data; gör att verktyg kan hitta och tolka SFrame deterministiskt.
    SFRAME_F_FDE_FUNC_START_PCREL
    Header-flagga som anger att funktionsstart i FDE (Frame Description Entry) är PC-relativ – robustare symbolik/relokering.
    CFI
    Call Frame Information – metadata (ofta via .cfi_*) som beskriver stackramar; kan nu syntetiseras till SFrame på s390x.
    s390x
    64-bitars IBM Z/System z-ISA; Binutils 2.45 kan generera SFrame direkt från CFI för bättre felsökning på mainframe.
    .errif / .warnif
    GAS-direktiv som utvärderar villkor vid filslut och emitterar fel/varning; bra för policy-kontroller i firmware/SDK-träd.
    AArch64 sysregs
    Systemregister i 64-bitars Arm; 2.45 kan assemblera samtliga utan extra spärrar (-menable-sysreg-checking av).
    RISC-V ISA
    Öppen instruktionsuppsättning; 2.45 stödjer Privileged Spec v1.13, profiler 20/22/23, och ett brett spektrum av extensions.
    Privileged v1.13
    Spec för trap/CSR/virt mm. (OS-nivå); uppdaterade regler för maskin-/supervisor-lägen och delegationsvägar.
    Profiler 20/22/23
    Kuraterade paket av extension-kombinationer för definierade “capability tiers”; förenklar toolchain-målsättning.
    .bfloat16
    Assemblerliteral för Brain Float 16 (8-bit exponent, 7-bit mantissa+sign); nyttjas i ML-kernels på RVV/SME-lika enheter.
    $x → $x<isa>
    RISC-V-mappingsymbol byter semantik: explicit ISA-tagg per kodö i stället för implicit ärvning; kan kräva ombyggnad.
    Standard-ext.
    sha (SHA-accel), zce (compressed embedded), ssqosid/ssnpm/smnpm/smmpm/sspm/supm (privilege mgmt/QoS), ssccfg, svvptc (virt/ptc), zilsd/zclsd (load/store dags), smrnmi (RM-NMI) m.fl.
    Vendor-ext.
    T-Head: xtheadvdot (vektordot-ops). MIPS: xmipscbop, xmipscmov, xmipsexectl, xmipslsp (kontroll/mem-primitiver).
    Armv9.6-A
    -march=armv9.6-a aktiverar bl.a. +sme2p2 (SME v2p2), +ssve-aes (SVE-optimerad AES), +f8f16mm/+f8f32mm (FP8-matrismul), +sve2p2, m.fl. för pre-silicon-validering.
    SVE/SME
    Scalable Vector Extension / Scalable Matrix Extension – vektor- och matrisaccel med vektorlängds-agnostisk semantik.
    x86 XMODX
    Zhaoxin PadLock XMODX – nya kryptoinstruktioner. Samtidigt tas 256-bitars AVX10.2-rounding path bort (512-bit antas).
    AVX10.2
    Advanced Vector Extensions 10.2 – uniform ISA över 128–512b; 2.45 slopar en äldre 256b-avrundningskodväg.
    LoongArch
    Kinesisk RISC-ISA; 2.45 lägger till LA32R-alias (rdcntvl.w, rdcntvh.w, rdcntid.w) och striktare uttrycksdiagnostik.
    .align (3:e arg)
    Max bytes att hoppa; 2.45 varnar på out-of-range. Extra kontroller för negativa shifts och /% med noll.
    Tips: Aktivera SFrame-emission i byggkedjan och validera med readelf --sections och objdump --sframe där stöds.

    Källa :

    https://linuxiac.com/gnu-binutils-2-45-expands-risc-v-support

Etikett: assembler

  • GNU Binutils 2.47 gör utvecklarnas verktygslåda snabbare och mer flexibel

    GNU-projektet har släppt Binutils 2.47, en ny version av den viktiga verktygssamling som används för att bygga och analysera program i Linux. Uppdateringen ger bland annat bättre stöd för RISC-V, nya möjligheter vid felsökning och snabbare länkning av stora program. GNU-projektet har släppt GNU Binutils 2.47, en ny version av den verktygssamling som används för…

  • Frame – en helt ny X11-server skriven i assembler

    Samtidigt som stora delar av Linuxvärlden lämnar det gamla grafiksystemet X11 till förmån för Wayland väljer den norske utvecklaren Geir Isene att gå åt motsatt håll. Han har byggt en helt ny X11-server från grunden – skriven nästan uteslutande i assembler för x86-64-processorer. Projektet heter Frame och är ett tekniskt experiment som försöker besvara en…

  • Stöd för AMD Zen 6, Arm v9.7 och mer RISC-V

    När nästa generations processorer från AMD, Arm och RISC-V står för dörren måste även mjukvarans grundverktyg ligga steget före. Med GNU Binutils 2.46 tar utvecklarvärlden ett viktigt kliv mot framtiden genom att lägga till stöd för kommande CPU-arkitekturer, förbättrad felsökning och en moderniserad verktygskedja som gör fria operativsystem redo för hårdvara som ännu inte nått…

  • GNU Binutils 2.45 – Stort lyft för RISC-V och nya funktioner för flera arkitekturer

    GNU-projektet har släppt version 2.45 av GNU Binutils, en samling viktiga kommandoradsverktyg för lågnivåprogrammering. Binutils används för att skapa, analysera och manipulera objektfiler (mellanformatet som kompilatorer producerar innan det blir körbara program), bibliotek och färdiga exekverbara filer. Tillsammans med GCC (GNU Compiler Collection – GNU:s samling av kompilatorer), glibc (GNU C Library – standardbibliotek för…