gen xlat defs.sh(1)
NAMN
maint/gen_xlat_defs.sh — generera xlat .in-filer från Linux UAPI-headerfiler
SYNOPSIS
maint/gen_xlat_defs.sh maint/gen_xlat_defs.sh < xlat_filnamn.in
BESKRIVNING
maint/gen_xlat_defs.sh genererar xlat .in-filer baserat på befintliga filer och Linux UAPI-headerfiler. Skriptet extraherar konstantdefinitioner från Linuxkärnans källkod och producerar arkitekturmedvetna xlat-definitionsfiler som lämpar sig för användning av straces xlat-system.
Skriptet läser en befintlig xlat .in-fil från standard in, extraherar konstantnamn som matchar det angivna mönstret, slår upp deras värden i Linuxkärnans UAPI-headerfiler och skriver ut en uppdaterad .in-fil som inkluderar arkitekturspecifika värdeskillnader där sådana finns.
Skriptet upptäcker automatiskt när en konstant har olika numeriska värden på olika arkitekturer och genererar lämpliga preprocessor-direktiv, såsom #if, #elif, #else och #endif, för att hantera dessa skillnader. Det bevarar även befintliga kommentarer och direktiv från indatafilen, förutom den gamla kommentarraden som anger hur filen genererades.
FLAGGOR
-f VAL_PRINT_FMT
Anger printf-formatsträngen som ska användas för att skriva numeriska värden i utdata. Vanliga format är:
d
Decimalformat, till exempel:
42
#x
Hexadecimalt format med prefixet 0x, till exempel:
0x2a
#o
Oktalt format med prefixet 0, till exempel:
052
u
Osignerat decimalformat, till exempel:
42
-p REGEXP_PATTERN
Anger ett reguljärt uttryck som används för att matcha konstantnamn i indatafilen. Endast rader som matchar detta mönster behandlas.
Mönstret bör matcha prefixet eller namngivningskonventionen för de konstanter som ska extraheras, till exempel:
MADV_ _?MAP_ SO_
-d LINUX_SRC_DIR
Anger sökvägen till Linuxkärnans källkodskatalog. Denna katalog ska innehålla den vanliga katalogstrukturen för Linuxkärnans källkod, inklusive underkataloger under:
include/uapi/
-c COMMON_DEFS_GLOB_PATTERN
Anger ett glob-mönster för att hitta gemensamma, arkitekturoberoende definitioner i Linux UAPI-headerfilerna. Mönstret är relativt till include/uapi/ i Linuxkällkodskatalogen.
Exempel:
asm-generic/mman-common.h asm-generic/socket.h asm-generic/fcntl.h
-a ARCH_DEFS_FILE
Anger filnamnet för den arkitekturspecifika definitionsfilen. Skriptet söker efter denna fil i underkataloger av typen:
arch/*/include/uapi/
i Linuxkällkodskatalogen.
Exempel:
asm/mman.h asm/socket.h asm/fcntl.h
INDATAFORMAT
Skriptet läser en xlat .in-fil från standard in. Indatafilen kan innehålla:
Rader med konstantnamn
Rader som innehåller konstantnamn, eventuellt med avslutande blanktecken, som matchar det angivna reguljära uttrycket. Dessa slås upp i kärnans headerfiler.
Kommentarer
Rader som börjar med # eller innehåller kommentarer i stil med:
/* ... */
Dessa bevaras i utdata.
Tomma rader
Tomma rader bevaras för att bibehålla formateringen.
Direktiv
Särskilda direktiv som #sorted, #unconditional med flera bevaras.
UTDATAFORMAT
Skriptet skriver ut en uppdaterad xlat .in-fil med följande egenskaper:
Generated-by-rubrik
Första raden innehåller en kommentar som anger hur filen genererades, inklusive alla kommandoradsflaggor som användes.
Arkitekturspecifika villkor
När en konstant har olika värden mellan arkitekturer genererar skriptet preprocessor-villkor som:
#if defined __arch1__ || defined __arch2__ CONSTANT_NAME value1 #elif defined __arch3__ CONSTANT_NAME value2 #else CONSTANT_NAME value3 #endif
Bevarat innehåll
Alla kommentarer, tomma rader och direktiv från indata bevaras, förutom den gamla generated-by-raden.
EXEMPEL
Följande exempel visar vanliga användningsmönster.
Generera konstanter för kommandot madvise:
maint/gen_xlat_defs.sh -f 'd' -p 'MADV_' -d /path/to/linux \
-c 'asm-generic/mman-common.h' -a 'asm/mman.h' \
< src/xlat/madvise_cmds.in > src/xlat/madvise_cmds.in.new
Generera mmap-flaggkonstanter med hexadecimal utdata:
maint/gen_xlat_defs.sh -f '#x' -p '_?MAP_' -d /path/to/linux \
-c 'asm-generic/mman*.h' -a 'asm/mman.h' \
< src/xlat/mmap_flags.in > src/xlat/mmap_flags.in.new
Generera konstanter för öppningslägesflaggor med oktal utdata:
maint/gen_xlat_defs.sh -f '#o' -p '[_OF]' -d /path/to/linux \
-c 'asm-generic/fcntl.h' -a 'asm/fcntl.h' \
< src/xlat/open_mode_flags.in > src/xlat/open_mode_flags.in.new
Generera konstanter för socket-alternativ:
maint/gen_xlat_defs.sh -f 'u' -p 'SO_' -d /path/to/linux \
-c 'asm-generic/socket.h' -a 'asm/socket.h' \
< src/xlat/sock_options.in > src/xlat/sock_options.in.new
ARKITEKTURHANTERING
Skriptet hanterar automatiskt arkitekturspecifika skillnader i konstantvärden. Det gör följande:
- Slår först upp konstanten i de gemensamma, arkitekturoberoende headerfilerna för att avgöra standardvärdet.
- Söker därefter igenom alla arkitekturspecifika headerfiler efter andra definitioner av samma konstant.
- Grupperar arkitekturer med samma värde tillsammans med logiska OR-villkor.
- Genererar lämpliga block med #if, #elif, #else och #endif för att hantera alla variationer.
Skriptet utför även särskild hantering för vissa arkitekturalias:
parisc
Mappas till hppa i utdata.
arm64
Inkluderas när aarch64 är definierad.
x86
Expanderas till x86_64 eller i386.
SLUTSTATUS
0
Lyckades.
1
Ett fel inträffade. Detta kan bero på:
Saknade obligatoriska kommandoradsflaggor
Alla fem flaggor krävs:
-f -p -d -c -a
Ogiltig Linuxkällkodskatalog
Den angivna katalogen finns inte eller saknar den förväntade strukturen.
Misslyckad mönstermatchning
Inga konstanter hittades som matchade det angivna mönstret.
NOTERINGAR
Skriptet är utformat för att fungera med Linuxkärnans standardstruktur för källkod, där UAPI-headerfiler finns i:
include/uapi/
och arkitekturspecifika headerfiler finns i:
arch/*/include/uapi/
När en konstant inte hittas i de gemensamma headerfilerna skriver skriptet ut en varning men fortsätter behandlingen. Konstanten kommer då att visas i utdata utan ett standardvärde, och endast arkitekturspecifika definitioner inkluderas om sådana hittas.
Skriptet bevarar indatafilens befintliga struktur och formatering så långt som möjligt. Det uppdaterar endast konstantdefinitionerna och lägger till arkitekturspecifika villkor där det behövs.
SE ÄVEN
Dokumentationen för xlat-filformatet i:
src/xlat/README.md
ger ytterligare information om hur genererade .in-filer används.
FÖRFATTARE
Strace-utvecklarna.
COLOPHON
Denna sida är en del av projektet strace (systemanropsspårare).
Information om projektet finns på:
http://strace.io/
Om du har en felrapport för denna manualsida, skicka den till:
strace-devel@lists.sourceforge.net
Denna sida hämtades från projektets uppströms Git-arkiv:
https://github.com/strace/strace.git
Sidan hämtades den 16 januari 2026. Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet den 13 januari 2026.
Om du hittar renderingsproblem i denna HTML-version av sidan, eller om du anser att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har rättelser eller förbättringar av informationen i detta COLOPHON-avsnitt, som inte är en del av den ursprungliga manualsidan, skicka e-post till:
man-pages@man7.org
GEN_XLAT_DEFS.SH(1)