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 ”`

