blob: 43aae6c34e48604e8cfd18f4d24d335dec25bf8d [file] [log] [blame]
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH dpkg\-buildflags 1 2011\-09\-13 Debianprojektet Dpkg\-sviten
.SH NAMN
dpkg\-buildflags \- returnerar byggflaggor att använda för att bygga paket
.
.SH SYNOPS
\fBdpkg\-buildflags\fP [\fIflagga\fP...] \fIkommando\fP
.
.SH BESKRIVNING
\fBdpkg\-buildflags\fP är ett verktyg för att hämta kompileringsflaggor att
använda för att bygga Debianpaket.
.
De förvalda flaggorna anges av leverantören, men de kan utökasverstyras på
flera sätt:
.IP 1.
på hela systemet med \fB/etc/dpkg/buildflags.conf\fP;
.IP 2.
för den nuvarande användaren med \fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP
där \fB$XDG_CONFIG_HOME\fP har standardvärdet \fB$HOME/.config\fP;
.IP 3.
temporärt av användaren med miljövariabler (se stycket \fBMILJÖ\fP).
.IP 4.
dynamiskt av paketansvariga med miljövariabler som sätts via \fBdebian/rules\fP
(se stycket \fBMILJÖ\fP).
.P
Konfigurationsfilerna kan innehålla två sorters direktiv:
.TP
\fBSET\fP\fI flagga värde\fP
Överstyr flaggan \fIflagga\fP till att ha värdet \fIvärde\fP.
.TP
\fBSTRIP\fP\fI flagga värde\fP
Ta bort alla flaggor som listas i \fIvärde\fP från flaggan som anges i
\fIflagga\fP.
.TP
\fBAPPEND\fP\fI flagga värde\fP
Utöka flaggan \fIflagga\fP genom att lägga till alternativen som anges i
\fIvärde\fP. Ett blanksteg läggs till före värdet om flaggans nuvarande värde
inte är tomt.
.TP
\fBPREPEND\fP\fI flagga värde\fP
Utöka flaggan \fIflagga\fP genom att lägga till alternativen som anges i
\fIvärde\fP först. Ett blanksteg läggs till efter värdet om flaggans nuvarande
värde inte är tomt.
.P
Konfigurationsfilerna kan innehålla kommentarer på rader som börjar med ett
nummertecken (#). Även tomma rader ignoreras.
.SH KOMMANDON
.TP
\fB\-\-dump\fP
Skriv alla kompileringsflaggor och deras värde på standard ut. En flagga
skrivs per rad, avdelade från sitt värde med ett likamedtecken
("\fIflagga\fP=\fIvärde\fP"). Detta är standardåtgärden.
.TP
\fB\-\-list\fP
Skriv ut listan över flaggor som stöds av den aktuella leverantören (en per
rad). Se stycket \fBFLAGGOR SOM STÖDS\fP för mer information om dem.
.TP
\fB\-\-export=\fP\fIformat\fP
Skriv skal\- (om \fIformat\fP är \fBsh\fP) eller make\-kommandon (om \fIformat\fP är
\fBmake\fP) som kan användas för att exportera alla kompileringsflaggor i
miljön till standard ut. Om \fIformat\fP är \fBconfigure\fP kan utdata användas på
en \fB./configure\fP\-kommandorad. Om \fIformat\fP inte anges antas \fBsh\fP. Endast
kompileringsflaggor som börjar med en stor bokstav tas med, andra antas att
inte vara lämpliga för miljön.
.TP
\fB\-\-get\fP\fI flagga\fP
Skriv ut värdet på flaggan på standard ut. Avslutar med 0 om flaggan är
känd, om inte avslutar den med 1.
.TP
\fB\-\-origin\fP\fI flagga\fP
Anger ursprunget till flaggan som returneras av \fB\-\-get\fP. Avslutar med 0 om
flaggan är känd, om inte avslutar med 1. Ursprunget kan vara ett av följande
värden:
.RS
.TP
\fBvendor\fP
originalflagga satt av leverantören returneras;
.TP
\fBsystem\fP
flaggan är satt/modifierad av systemkonfigurationen;
.TP
\fBuser\fP
flaggan är satt/modifierad av användarkonfigurationen;
.TP
\fBenv\fP
flaggan är satt/modifierad av en miljöspecifik konfiguration.
.RE
.TP
\fB\-\-help\fP
Visar hjälpskärm och avslutar.
.TP
\fB\-\-version\fP
Visar version och avslutar.
.
.SH "FLAGGOR SOM STÖDS"
.TP
\fBCFLAGS\fP
Flaggor för C\-kompilatorn. Standardvärdet som satts av leverantören
innehåller \fI\-g\fP och den förvalda optimeringsnivån (vanligtvis \fI\-O2\fP, eller
\fI\-O0\fP om miljövariabeln \fBDEB_BUILD_OPTIONS\fP definierar \fInoopt\fP).
.TP
\fBCPPFLAGS\fP
Flaggor för C\-förprocesseraren. Förvalt värde: tomt.
.TP
\fBCXXFLAGS\fP
Flaggor för C++\-kompilatorn. Samma som \fBCFLAGS\fP.
.TP
\fBFFLAGS\fP
Flaggor för Fortrankompilatorn. Samma som \fBCFLAGS\fP.
.TP
\fBLDFLAGS\fP
Flaggor som sänds till kompilatorn vid länkning av binärer eller delade
objekt (om länkaren anropas direkt måste \fB\-Wl\fP och \fB,\fP tas bort från dessa
flaggor). Standardvärde: tomt.
.
.SH FILER
.TP
\fB/etc/dpkg/buildflags.conf\fP
Konfigurationsfil för hela systemet.
.TP
\fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP eller \fB$HOME/.config/dpkg/buildflags.conf\fP
Användarens konfigurationsfil.
.SH MILJÖVARIABLER
Det finns två uppsättningar miljövariabler som utför samma operationer, den
första (DEB_\fIflagga\fP_\fIop\fP) bör aldrig användas inuti \fBdebian/rules\fP). Den
är tänkt för användare som vill bygga om källkodspaketet med andra
byggflaggor. Den andra uppsättningen (DEB_\fIflagga\fP_MAINT_\fIop\fP) bör endast
användas i \fBdebian/rules\fP av paketansvariga för att ändra de slutgiltiga
byggflaggorna.
.TP
\fBDEB_\fP\fIflagga\fP\fB_SET\fP
.TQ
\fBDEB_\fP\fIflagga\fP\fB_MAINT_SET\fP
Denna variabel kan användas för att tvinga fram värdet som returneras för
given \fIflagga\fP.
.TP
\fBDEB_\fP\fIflagga\fP\fB_STRIP\fP
.TQ
\fBDEB_\fP\fIflagga\fP\fB_MAINT_STRIP\fP
Denna variabel kan användas för att tillhandahålla en blankstegsavdelad
lista med flaggor som kommer att tas bort från uppsättningen flaggor som ges
för given \fIflagga\fP.
.TP
\fBDEB_\fP\fIflagga\fP\fB_APPEND\fP
.TQ
\fBDEB_\fP\fIflagga\fP\fB_MAINT_APPEND\fP
Denna variabel kan användas för att lägga till ytterligare flaggor till
värdet som returneras för given \fIflagga\fP.
.TP
\fBDEB_\fP\fIflagga\fP\fB_PREPEND\fP
.TQ
\fBDEB_\fP\fIflagga\fP\fB_MAINT_PREPEND\fP
Denna variabel kan användas för att lägga till ytterligare flaggor först i
värdet som returneras för given \fIflagga\fP.
.TP
\fBDEB_BUILD_MAINT_OPTIONS\fP
Den här variabeln kan användas för att slå av/på olika härdningsbyggflaggor
genom alternativet \fBhardening\fP. Se avsnittet \fBHÄRDNING\fP för mer
information.
.
.SH HÄRDNING
Du kan använda flera kompileringsflaggor (se detaljer nedan) för att härda
den färdiga binären mot minnesfördärvningsangrepp, eller för att ge
ytterligare varningsmeddelanden under kompileringen. Förutom det som anges
nedan aktiveras dessa som standard för arkitekturer som stöder dem.
.P
Varje härdningsfunktion kan aktiveras och inaktiveras i miljövariabeln
\fBDEB_BUILD_MAINT_OPTIONS\fP värde \fBhardening\fP med modifierarna "+" och
"\-". Du kan till exempel aktivera och funktionen "pie" och inaktivera
funktionen "fortify" genom att ange detta i \fBdebian/rules\fP:
.P
export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify
.P
Den speciella funktionen \fBall\fP kan användas för att aktivera eller
inaktivera alla härdningsfunktioner samtidigt. Du kan till exempel
inaktivera allt och endast aktivera "format" och "fortify" med:
.P
export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify
.
.TP
\fBformat\fP
Inställningen (aktiverad som standard) lägger till \fB\-Wformat
\-Wformat\-security \-Werror=format\-security\fP till \fBCFLAGS\fP och
\fBCXXFLAGS\fP. Detta kommer att varna om olämplig användning av
formatsträngar, och att misslyckas när formatfunktionerna används på ett
sätt som representerar möjliga säkerhetsproblem. För närvarande varnar detta
om anrop till funktionerna \fBprintf\fP och \fBscanf\fP där formatsträngen inte är
en fast sträng och när det inte finns några formatargument, som i
\fBprintf(foo);\fP istället för \fBprintf("%s", foo);\fP Detta kan vara ett
säkerhetshål om formatsträngen kommer från en obetrodd källa och innehåller
"%n".
.
.TP
\fBfortify\fP
Inställningen (aktiverad som standard) lägger till \fB\-D_FORTIFY_SOURCE=2\fP
till \fBCFLAGS\fP. Kompilatorn har under kodgenereringen kännedom om en hel del
information om buffertstorlekar (där tillämpligt) och försöker ersätta
osäkra funktionsanrop med obegränsade buffertlängder med längdbegränsade
dito. Det här är speciellt användbart för gammal, skräpig kod. Dessutom
blockeras formatsträngar i skrivbart minne som innehåller "%n". Om ett
program är beroende av en sådan formatsträng måste det gås runt i kod.
Observera att, för att den här flaggan skall ha någon effekt, måste
källkoden också kompileras med \fB\-O1\fP eller högre.
.TP
\fBstackprotector\fP
Inställningen (aktiverad som standard) lägger till \fB\-fstack\-protector
\-\-param=ssp\-buffer\-size=4\fP till \fBCFLAGS\fP och \fBCXXFLAGS\fP. Detta lägger till
säkerhetskontroller mot stacköverskrivningar, vilket gör att många möjliga
kodinjiceringsangrepp istället avbryter programmet. I det bästa fallet gör
det kodinjiceringsangrepp till överbelastnignsangrepp eller icke\-problem
(beroende på programmet).
Den här funktionen kräver länkning mot glibc (eller ett annat bibliotek som
tillhandahåller \fB__stack_chk_fail\fP), så det måste inaktiveras när du bygger
med \fB\-nostdlib\fP eller \fB\-ffreestanding\fP eller liknande.
.
.TP
\fBrelro\fP
Inställningen (aktiverad som standard) lägger till \fB\-Wl,\-z,relro\fP till
\fBLDFLAGS\fP. Vid inläsning av programmet måste länkaren skriva till flera
ELF\-minnessektioner. Den här inställningen flaggar till inläsaren att dessa
sektioner skall göras skrivskyddade innan programmet får kontroll. Detta
skyddar huvudsaklingen mot GOT\-överskrivningsangrepp.
.
.TP
\fBbindnow\fP
This setting (disabled by default) adds \fB\-Wl,\-z,now\fP to \fBLDFLAGS\fP. During
program load, all dynamic symbols are resolved, allowing for the entire PLT
to be marked read\-only (due to \fBrelro\fP above).
.
.TP
\fBpie\fP
Inställningen (inaktiverad som standard) lägger till \fB\-fPIE\fP till \fBCFLAGS\fP
och \fBCXXFLAGS\fP, samt \fB\-fPIE \-pie\fP till \fBLDFLAGS\fP. Positionsoberoende
exekverbara program (PIE) behövs för att dra fördel av slumpmässig
adressrymd (ASLR), vilket stöds av vissa versioner av kärnan. Medan ASLR
redan kan användas för datautrymmen i stacken och heap:en (brk och mmap),
måste kodområden först kompileras som positionsoberoende. Delade bibliotek
gör redan detta (\-fPI C), så de drar automatiskt fördel av ASLR medan binära
\&.text\-regioner måste byggas med PIE för att uppnå ASLR. När detta sker är
ROP\-angrepp (Return Oriented Programming) mycket svårare eftersom det inte
finns några statiska platser att studsa från i ett
minnesfördärvningsangrepp.
Detta är inte kompatibelt med \fB\-fPIC\fP så man måste vara försiktig när man
bygger delade objekt.
Eftersom PIE i tillägg implementeras med ett generellt register kan vissa
arkitekturer (huvudsakligen i386) se prestandaförluster upp till 15% i
väldigt textsegment\-tunga programs körning; de flesta körningar ser mindre
än 1%. Arkitekturer med många generella register (t.ex amd64) ser inte en
lika stor värsta falls\-förlust.
.
.SH FÖRFATTARE
Upphovsrättsskyddat © 2010\-2011 Raphaël Hertzog
.sp
Upphovsrättsskyddat © 2011 Kees Cook
.sp
Detta är fri programvara; se GNU General Public License version 2 eller
senare för kopieringsvillkor. Det finns INGEN GARANTI.
.SH "ÖVERSÄTTNING"
Peter Krefting och Daniel Nylander.