
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
På 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
as
, ld
, objdump
, readelf
) för objektfiler, bibliotek och länkningssteg..cfi_*
) som beskriver stackramar; kan nu syntetiseras till SFrame på s390x.-menable-sysreg-checking
av).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.xtheadvdot
(vektordot-ops). MIPS: xmipscbop
, xmipscmov
, xmipsexectl
, xmipslsp
(kontroll/mem-primitiver).-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.rdcntvl.w
, rdcntvh.w
, rdcntid.w
) och striktare uttrycksdiagnostik.readelf --sections
och objdump --sframe
där stöds.
Källa :
https://linuxiac.com/gnu-binutils-2-45-expands-risc-v-support