.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "dpkg-buildflags 1" .TH dpkg-buildflags 1 "2022-09-01" "1.20.12" "dpkg suite" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAMN" .IX Header "NAMN" dpkg-buildflags \- returnerar byggflaggor att anv\(:anda f\(:or att bygga paket .SH "SYNOPS" .IX Header "SYNOPS" \&\fBdpkg-buildflags\fR [\fIflagga\fR...] \fIkommando\fR .SH "BESKRIVNING" .IX Header "BESKRIVNING" \&\fBdpkg-buildflags\fR \(:ar ett verktyg f\(:or att h\(:amta kompileringsflaggor att anv\(:anda f\(:or att bygga Debianpaket. .PP De f\(:orvalda flaggorna anges av leverant\(:oren, men de kan ut\(:okas/\(:overstyras p\(oa flera s\(:att: .IP "1." 4 p\(oa hela systemet med \fB/etc/dpkg/buildflags.conf\fR; .IP "2." 4 f\(:or den nuvarande anv\(:andaren med \fB\f(CB$XDG_CONFIG_HOME\fB/dpkg/buildflags.conf\fR d\(:ar \fB\f(CB$XDG_CONFIG_HOME\fB\fR har standardv\(:ardet \fB\f(CB$HOME\fB/.config\fR; .IP "3." 4 tempor\(:art av anv\(:andaren med milj\(:ovariabler (se stycket \fBMILJ\(:O\fR). .IP "4." 4 dynamiskt av paketansvariga med milj\(:ovariabler som s\(:atts via \fBdebian/rules\fR (se stycket \fBMILJ\(:O\fR). .PP Konfigurationsfilerna kan inneh\(oalla fyra sorters direktiv: .IP "\fB\s-1SET\s0\fR \fIflagga v\(:arde\fR" 4 .IX Item "SET flagga v\(:arde" \(:Overstyr flaggan \fIflagga\fR till att ha v\(:ardet \fIv\(:arde\fR. .IP "\fB\s-1STRIP\s0\fR \fIflagga v\(:arde\fR" 4 .IX Item "STRIP flagga v\(:arde" Ta bort alla flaggor som listas i \fIv\(:arde\fR fr\(oan flaggan som anges i \&\fIflagga\fR. .IP "\fB\s-1APPEND\s0\fR \fIflagga v\(:arde\fR" 4 .IX Item "APPEND flagga v\(:arde" Ut\(:oka flaggan \fIflagga\fR genom att l\(:agga till alternativen som anges i \&\fIv\(:arde\fR. Ett blanksteg l\(:aggs till f\(:ore v\(:ardet om flaggans nuvarande v\(:arde inte \(:ar tomt. .IP "\fB\s-1PREPEND\s0\fR \fIflagga v\(:arde\fR" 4 .IX Item "PREPEND flagga v\(:arde" Ut\(:oka flaggan \fIflagga\fR genom att l\(:agga till alternativen som anges i \&\fIv\(:arde\fR f\(:orst. Ett blanksteg l\(:aggs till efter v\(:ardet om flaggans nuvarande v\(:arde inte \(:ar tomt. .PP Konfigurationsfilerna kan inneh\(oalla kommentarer p\(oa rader som b\(:orjar med ett nummertecken (#). \(:Aven tomma rader ignoreras. .SH "KOMMANDON" .IX Header "KOMMANDON" .IP "\fB\-\-dump\fR" 4 .IX Item "--dump" Skriv alla kompileringsflaggor och deras v\(:arde p\(oa standard ut. En flagga skrivs per rad, avdelade fr\(oan sitt v\(:arde med ett likamedtecken (\(rq\fIflagga\fR=\fIv\(:arde\fR\(rq). Detta \(:ar standard\(oatg\(:arden. .IP "\fB\-\-list\fR" 4 .IX Item "--list" Skriv ut listan \(:over flaggor som st\(:ods av den aktuella leverant\(:oren (en per rad). Se stycket \fB\s-1FLAGGOR SOM\s0 ST\(:ODS\fR f\(:or mer information om dem. .IP "\fB\-\-status\fR" 4 .IX Item "--status" Visa information som kan vara anv\(:andbar f\(:or att f\(:orklara \fBdpkg-buildflags\fR beteende (sedan dpkg 1.16.5): relevanta milj\(:ovariabler, aktuell \(oaterf\(:ors\(:aljare, status f\(:or alla funktionsflaggor. Skriv \(:aven ut slutgiltiga kompilatorflaggor och deras k\(:alla. .Sp Detta \(:ar t\(:ankt att k\(:oras fr\(oan \fBdebian/rules\fR s\(oa att byggloggen inneh\(oaller ett tydligt sp\(oar \(:over de anv\(:anda byggflaggorna. Det kan vara anv\(:andbart f\(:or att diagnostisera problem r\(:orande dessa. .IP "\fB\-\-export=\fR\fIformat\fR" 4 .IX Item "--export=format" Skriv kommandon som kan anv\(:andas f\(:or att exportera alla kompileringsflaggor f\(:or n\(oagot specifikt verktyg. Om \fIformat\fR inte anges antas \fBsh\fR. Endast kompileringsflaggor som b\(:orjar med en stor bokstav tas med, andra antas att inte vara l\(:ampliga f\(:or milj\(:on. Format som st\(:ods: .RS 4 .IP "\fBsh\fR" 4 .IX Item "sh" Skalkommandon f\(:or att s\(:atta och exportera alla kompileringsflaggor i milj\(:on. Flaggv\(:ardena citeras s\(oa att utdata \(:ar redo att utv\(:arderas av ett skal. .IP "\fBcmdline\fR" 4 .IX Item "cmdline" Argument att s\(:anda till byggprogrammets kommandorad f\(:or att anv\(:anda alla kompileringsflaggor (sedan dpkg 1.17.0). Flaggornas v\(:arde citeras enligt skalsyntax. .IP "\fBconfigure\fR" 4 .IX Item "configure" Detta \(:ar ett gammalt alias f\(:or \fBcmdline\fR. .IP "\fBmake\fR" 4 .IX Item "make" Make-direktiv f\(:or att s\(:atta och exportera alla kompileringsflaggor i milj\(:on. Utdata kan skrivas till ett makefil-fragment och utv\(:arderas med ett \&\fBinclude\fR\-direktiv. .RE .RS 4 .RE .IP "\fB\-\-get\fR \fIflagga\fR" 4 .IX Item "--get flagga" Skriv ut v\(:ardet p\(oa flaggan p\(oa standard ut. Avslutar med 0 om flaggan \(:ar k\(:and, om inte avslutar den med 1. .IP "\fB\-\-origin\fR \fIflagga\fR" 4 .IX Item "--origin flagga" Anger ursprunget till flaggan som returneras av \fB\-\-get\fR. Avslutar med 0 om flaggan \(:ar k\(:and, om inte avslutar med 1. Ursprunget kan vara ett av f\(:oljande v\(:arden: .RS 4 .IP "\fBvendor\fR" 4 .IX Item "vendor" originalflagga satt av leverant\(:oren returneras; .IP "\fBsystem\fR" 4 .IX Item "system" flaggan \(:ar satt/modifierad av systemkonfigurationen; .IP "\fBuser\fR" 4 .IX Item "user" flaggan \(:ar satt/modifierad av anv\(:andarkonfigurationen; .IP "\fBenv\fR" 4 .IX Item "env" flaggan \(:ar satt/modifierad av en milj\(:ospecifik konfiguration. .RE .RS 4 .RE .IP "\fB\-\-query\fR" 4 .IX Item "--query" Srkiv ut information som kan vara anv\(:andbar f\(:or att f\(:orklara programmets beteende: aktuell \(oaterf\(:ors\(:aljare, relevanta milj\(:ovariabler, funktionsomr\(oaden, status f\(:or alla funktionsflaggor, och kompilatorflaggorna med sina ursprung (sedan dpkg 1.19.0). .Sp Till exempel: .Sp .Vb 3 \& Vendor: Debian \& Environment: \& DEB_CFLAGS_SET=\-O0 \-Wall \& \& Area: qa \& Features: \& bug=no \& canary=no \& \& Area: reproducible \& Features: \& timeless=no \& \& Flag: CFLAGS \& Value: \-O0 \-Wall \& Origin: env \& \& Flag: CPPFLAGS \& Value: \-D_FORTIFY_SOURCE=2 \& Origin: vendor .Ve .IP "\fB\-\-query\-features\fR \fIomr\(oade\fR" 4 .IX Item "--query-features omr\(oade" Skriv ut funktioner aktiverade f\(:or ett givet omr\(oade (sedan dpkg 1.16.2). De enda f\(:or n\(:arvarande k\(:anda omr\(oadena p\(oa Debian och dess derivat \(:ar \fBfuture\fR, \&\fBqa\fR, \fBreproducible\fR, \fBsanitize\fR och \fBhardening\fR, se avsnittet \&\fBFUNKTIONSOMR\(oADEN\fR f\(:or fler detaljer. Avslutar med 0 om omr\(oadet \(:ar k\(:ant, avslutar annars med 1. .Sp Utdata \(:ar p\(oa RFC822\-headerformat, med en sektion per funktion. Till exempel: .Sp .Vb 2 \& Feature: pie \& Enabled: yes \& \& Feature: stackprotector \& Enabled: yes .Ve .IP "\fB\-\-help\fR" 4 .IX Item "--help" Visar hj\(:alpsk\(:arm och avslutar. .IP "\fB\-\-version\fR" 4 .IX Item "--version" Visar version och avslutar. .SH "FLAGGOR SOM ST\(:ODS" .IX Header "FLAGGOR SOM ST\(:ODS" .IP "\fB\s-1CFLAGS\s0\fR" 4 .IX Item "CFLAGS" Flaggor f\(:or C\-kompilatorn. Standardv\(:ardet som satts av leverant\(:oren inneh\(oaller \fB\-g\fR och den f\(:orvalda optimeringsniv\(oan (vanligtvis \fB\-O2\fR, eller \&\fB\-O0\fR om milj\(:ovariabeln \fB\s-1DEB_BUILD_OPTIONS\s0\fR definierar \fInoopt\fR). .IP "\fB\s-1CPPFLAGS\s0\fR" 4 .IX Item "CPPFLAGS" Flaggor f\(:or C\-f\(:orprocesseraren. F\(:orvalt v\(:arde: tomt. .IP "\fB\s-1CXXFLAGS\s0\fR" 4 .IX Item "CXXFLAGS" Flaggor f\(:or \*(C+\-kompilatorn. Samma som \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1OBJCFLAGS\s0\fR" 4 .IX Item "OBJCFLAGS" Flaggor f\(:or Objective C\-kompilatorn. Samma som \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1OBJCXXFLAGS\s0\fR" 4 .IX Item "OBJCXXFLAGS" Flaggor f\(:or Objective \*(C+\-kompilatorn. Samma som \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1GCJFLAGS\s0\fR" 4 .IX Item "GCJFLAGS" Flaggor f\(:or \s-1GNU\s0 Java-kompilatorn (gcj). En delm\(:angd av \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1DFLAGS\s0\fR" 4 .IX Item "DFLAGS" Flaggor f\(:or D\-kompilatorn (ldc eller gdc). Sedan dpkg 1.20.6. .IP "\fB\s-1FFLAGS\s0\fR" 4 .IX Item "FFLAGS" Flaggor f\(:or Fortran 77\-kompilatorn. En delm\(:angd av \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1FCFLAGS\s0\fR" 4 .IX Item "FCFLAGS" Flaggor f\(:or Fortran 9x\-kompilatorn. Samma som \fB\s-1FFLAGS\s0\fR. .IP "\fB\s-1LDFLAGS\s0\fR" 4 .IX Item "LDFLAGS" Flaggor som s\(:ands till kompilatorn vid l\(:ankning av bin\(:arer eller delade objekt (om l\(:ankaren anropas direkt m\(oaste \fB\-Wl\fR och \fB,\fR tas bort fr\(oan dessa flaggor). Standardv\(:arde: tomt. .PP Nya flaggor kan komma att l\(:aggas till i framtiden om behovet uppst\(oar (till exempel f\(:or att st\(:oda andra spr\(oak). .SH "FUNKTIONSOMR\(oADEN" .IX Header "FUNKTIONSOMR\(oADEN" Varje omr\(oadesfunktion kan aktiveras och inaktiveras i omr\(oadesv\(:ardet i milj\(:ovariablerna \fB\s-1DEB_BUILD_OPTIONS\s0\fR och \fB\s-1DEB_BUILD_MAINT_OPTIONS\s0\fR modifierarna \(rq\fB+\fR\(rq och \(rq\fB\-\fR\(rq. Till exempel, f\(:or att aktivera \&\fBhardening\fR\-funktionen \(rqpie\(rq och inaktivera funktionen \(rqfortify\(rq genom att ange detta i \fBdebian/rules\fR: .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify .Ve .PP Den speciella funktionen \fBall\fR kan anv\(:andas f\(:or att aktivera eller inaktivera alla omr\(oadesfunktioner samtidigt. Du kan till exempel inaktivera allt i omr\(oadet \fBhardening\fR och endast aktivera \(rqformat\(rq och \(rqfortify\(rq med: .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify .Ve .SS "future" .IX Subsection "future" Flera kommandoradsflaggor (beskrivna nedan) kan anv\(:andas f\(:or att aktivera funktioner som borde vara aktiverade som standard, men som inte kan vara det p\(oa grund av bak\(oatkompatibilitetsorsaker. .IP "\fBlfs\fR" 4 .IX Item "lfs" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) aktiverar st\(:od f\(:or stora filer p\(oa 32\-bitars\-arkitekturer d\(:ar deras \s-1ABI\s0 inte som f\(:orval inkluderar \&\s-1LFS,\s0 genom att l\(:agga till \fB\-D_LARGEFILE_SOURCE \-D_FILE_OFFSET_BITS=64\fR till \&\fB\s-1CPPFLAGS\s0\fR. .SS "qa" .IX Subsection "qa" Flera kommandoradsflaggor (beskrivna nedan) kan anv\(:andas f\(:or att g\(:ora det l\(:attare att hitta problem i k\(:allkoden eller byggsystemet. .IP "\fBbug\fR" 4 .IX Item "bug" Inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till ytterligare varningar som p\(oalitligt uppt\(:acket problematisk k\(:allkod. Varningarna \(:ar \(:odesdigra. De enda flaggor som f\(:or n\(:arvarande st\(:ods \(:ar \fB\s-1CFLAGS\s0\fR och \fB\s-1CXXFLAGS\s0\fR med flaggorna satt till \fB\-Werror=array\-bounds\fR, \fB\-Werror=clobbered\fR, \&\fB\-Werror=implicit\-function\-declaration\fR och \&\fB\-Werror=volatile\-register\-var\fR. .IP "\fBcanary\fR" 4 .IX Item "canary" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till overksamma tjallarflaggor till byggflaggorna, s\(oa att byggloggarna kan kontrolleras f\(:or att se hur byggflaggor vidarebefordras f\(:or att g\(:ora det enklare att hitta n\(:ar vanliga byggflagor utesluts. De enda flaggor som st\(:ods \(:ar f\(:or n\(:arvarande \&\fB\s-1CPPFLAGS\s0\fR, \fB\s-1CFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR och \fB\s-1OBJCXXFLAGS\s0\fR med flaggorna satta till \fB\-D_\|_DEB_CANARY_\fR\fIflag\fR_\fIslumpm\(:assigt\-id\fR\fB_\|_\fR, och \&\fB\s-1LDFLAGS\s0\fR satt till \fB\-Wl,\-z,deb\-canary\-\fR\fIslumpm\(:assigt\-id\fR. .SS "sanitize" .IX Subsection "sanitize" Du kan anv\(:anda flera kompileringsflaggor (se detaljer nedan) f\(:or att sanera den f\(:ardiga bin\(:aren mot minnesf\(:ord\(:arvningsar, minnesl\(:ackor, anv\(:andning efter frigivning, datakappl\(:opningsfel i tr\(oadar och fel i f\(:orbindels med odefinierat beteende. \fBObservera\fR: dessa flaggor b\(:or \fBinte\fR anv\(:andas f\(:or produktionsbygg eftersom de kan minska p\(oalitligheten f\(:or korrekt kod, minska s\(:akerheten eller till och med funktionsrikedomen. .IP "\fBaddress\fR" 4 .IX Item "address" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till \&\fB\-fsanitize=address\fR till \fB\s-1LDFLAGS\s0\fR och \fB\-fsanitize=address \&\-fno\-omit\-frame\-pointer\fR till \fB\s-1CFLAGS\s0\fR och \fB\s-1CXXFLAGS\s0\fR. .IP "\fBthread\fR" 4 .IX Item "thread" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till \&\fB\-fsanitize=thread\fR till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR och \fB\s-1LDFLAGS\s0\fR. .IP "\fBleak\fR" 4 .IX Item "leak" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till \&\fB\-fsanitize=leak\fR till \fB\s-1LDFLAGS\s0\fR. Den inaktiveras automatiskt om antingen funktionen \fBaddress\fR eller \fBthread\fR aktiveras, eftersom de implicerar den. .IP "\fBundefined\fR" 4 .IX Item "undefined" Den h\(:ar inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till \&\fB\-fsanitize=undefined\fR till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR och \fB\s-1LDFLAGS\s0\fR. .SS "hardening" .IX Subsection "hardening" Du kan anv\(:anda flera kompileringsflaggor (se detaljer nedan) f\(:or att h\(:arda den f\(:ardiga bin\(:aren mot minnesf\(:ord\(:arvningsangrepp, eller f\(:or att ge ytterligare varningsmeddelanden under kompileringen. F\(:orutom det som anges nedan aktiveras dessa som standard f\(:or arkitekturer som st\(:oder dem. .IP "\fBformat\fR" 4 .IX Item "format" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \fB\-Wformat \&\-Werror=format\-security\fR till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR och \&\fB\s-1OBJCXXFLAGS\s0\fR. Detta kommer att varna om ol\(:amplig anv\(:andning av formatstr\(:angar, och att misslyckas n\(:ar formatfunktionerna anv\(:ands p\(oa ett s\(:att som representerar m\(:ojliga s\(:akerhetsproblem. F\(:or n\(:arvarande varnar detta om anrop till funktionerna \fBprintf\fR och \fBscanf\fR d\(:ar formatstr\(:angen inte \(:ar en fast str\(:ang och n\(:ar det inte finns n\(oagra formatargument, som i \&\fBprintf(foo);\fR ist\(:allet f\(:or \fBprintf(\*(L"%s\*(R", foo);\fR Detta kan vara ett s\(:akerhetsh\(oal om formatstr\(:angen kommer fr\(oan en obetrodd k\(:alla och inneh\(oaller \(rq%n\(rq. .IP "\fBfortify\fR" 4 .IX Item "fortify" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \fB\-D_FORTIFY_SOURCE=2\fR till \fB\s-1CPPFLAGS\s0\fR. Kompilatorn har under kodgenereringen k\(:annedom om en hel del information om buffertstorlekar (d\(:ar till\(:ampligt) och f\(:ors\(:oker ers\(:atta os\(:akra funktionsanrop med obegr\(:ansade buffertl\(:angder med l\(:angdbegr\(:ansade dito. Det h\(:ar \(:ar speciellt anv\(:andbart f\(:or gammal, skr\(:apig kod. Dessutom blockeras formatstr\(:angar i skrivbart minne som inneh\(oaller \(rq%n\(rq. Om ett program \(:ar beroende av en s\(oadan formatstr\(:ang m\(oaste det g\(oas runt i kod. .Sp Observera att f\(:or att den h\(:ar flaggan ska ha n\(oagon funktion m\(oaste k\(:allkoden ocks\(oa kompileras med \fB\-O1\fR eller h\(:ogre. Om milj\(:ovariabeln \&\fB\s-1DEB_BUILD_OPTIONS\s0\fR inneh\(oaller \fInoopt\fR kommer st\(:odet f\(:or \fBfortify\fR att inaktiverats, p\(oa grund av nya varningar som ges av glibc 2.16 och senare. .IP "\fBstackprotector\fR" 4 .IX Item "stackprotector" Inst\(:allningen (aktiverad som f\(:orval om stackprotectorstrong inte anv\(:ands) l\(:agger till \fB\-fstack\-protector \-\-param=ssp\-buffer\-size=4\fR till \fB\s-1CFLAGS\s0\fR, \&\fB\s-1CXXFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \fB\s-1FFLAGS\s0\fR och \&\fB\s-1FCFLAGS\s0\fR. Detta l\(:agger till s\(:akerhetskontroller mot stack\(:overskrivningar, vilket g\(:or att m\(oanga m\(:ojliga kodinjiceringsangrepp ist\(:allet avbryter programmet. I det b\(:asta fallet g\(:or det kodinjiceringsangrepp till \(:overbelastnignsangrepp eller icke-problem (beroende p\(oa programmet). .Sp Den h\(:ar funktionen kr\(:aver l\(:ankning mot glibc (eller ett annat bibliotek som tillhandah\(oaller \fB_\|_stack_chk_fail\fR), s\(oa det m\(oaste inaktiveras n\(:ar du bygger med \fB\-nostdlib\fR eller \fB\-ffreestanding\fR eller liknande. .IP "\fBstackprotectorstrong\fR" 4 .IX Item "stackprotectorstrong" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \fB\-fstack\-protector\-strong\fR till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \&\fB\s-1FFLAGS\s0\fR och \fB\s-1FCFLAGS\s0\fR. Detta \(:ar en starkare variant av \fBstackprotector\fR, men utan markanta prestandaminskningar. .Sp Om du inaktiverar \fBstackprotector\fR inaktiveras \(:aven denna inst\(:allning. .Sp Funktionen har samma krav som \fBstackprotector\fR, och kr\(:aver dessutom gcc 4.9 eller senare. .IP "\fBrelro\fR" 4 .IX Item "relro" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \fB\-Wl,\-z,relro\fR till \&\fB\s-1LDFLAGS\s0\fR. Vid inl\(:asning av programmet m\(oaste l\(:ankaren skriva till flera ELF-minnessektioner. Den h\(:ar inst\(:allningen flaggar till inl\(:asaren att dessa sektioner ska g\(:oras skrivskyddade innan programmet f\(oar kontroll. Detta skyddar huvudsaklingen mot GOT\-\(:overskrivningsangrepp. Om inst\(:allningen inaktiveras kommer \(:aven \fBbindnow\fR att inaktiveras. .IP "\fBbindnow\fR" 4 .IX Item "bindnow" Inst\(:allningen (inaktiverad som f\(:orval) l\(:agger till \fB\-Wl,\-z,bindnow\fR till \&\fB\s-1LDFLAGS\s0\fR. Vid inl\(:asning av programmet l\(:oses alla dynamiska symboler, vilket g\(:or att hela \s-1PLT\s0 kan markeras som skrivskyddad (p\(oa grund av \fBrelro\fR ovan). Inst\(:allningen kan inte aktiveras om \fBrelro\fR inte \(:ar aktiverad. .IP "\fBpie\fR" 4 .IX Item "pie" Den h\(:ar inst\(:allningen (utan globalt f\(:orval sedan dpkg 1.18.23, eftersom den aktiveras som f\(:orval numera av gcc p\(oa Debianarkitekturerna amd64, arm64, armel, armhf, hurd\-i386, i386, kfreebsd\-amd64, kfreebsd\-i386, mips, mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc och sparc64) l\(:agger till de flaggor som kr\(:avs f\(:or att aktivera eller inaktivera \s-1PIE\s0 via gcc-specifikationsfiler, om det beh\(:ovs, beroende p\(oa om gcc l\(:agger till flaggorna sj\(:alv p\(oa arkitekturen eller inte. Om inst\(:allningen aktiveras och gcc injicerar flaggorna l\(:agger den inte till N\(oagonting. Om inst\(:allningen \(:ar aktiverad och gcc inte injicerar flaggorna, l\(:agger den till \fB\-fPIE\fR (via \&\fI/usr/share/dpkg/pie\-compiler.specs\fR) till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \&\fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \fB\s-1FFLAGS\s0\fR och \fB\s-1FCFLAGS\s0\fR, och \&\fB\-fPIE \-pie\fR (via \fI/usr/share/dpkg/pie\-link.specs\fR) till \fB\s-1LDFLAGS\s0\fR. N\(:ar inst\(:allningen \(:ar inaktiverad och gcc injicerar flaggorna, l\(:agger den till \&\fB\-fno\-PIE\fR (via \fI/usr/share/dpkg/no\-pie\-compile.specs\fR) to \fB\s-1CFLAGS\s0\fR, \&\fB\s-1CXXFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \fB\s-1FFLAGS\s0\fR till \&\fB\s-1FCFLAGS\s0\fR, och \fB\-fno\-PIE \-no\-pie\fR (via \fI/usr/share/dpkg/no\-pie\-link.specs\fR) till \fB\s-1LDFLAGS\s0\fR. .Sp Positionsoberoende exekverbara program (\s-1PIE\s0) beh\(:ovs f\(:or att dra f\(:ordel av slumpm\(:assig adressrymd (\s-1ASLR\s0), vilket st\(:ods av vissa versioner av k\(:arnan. Medan \s-1ASLR\s0 redan kan anv\(:andas f\(:or datautrymmen i stacken och heap:en (brk och mmap), m\(oaste kodomr\(oaden f\(:orst kompileras som positionsoberoende. Delade bibliotek g\(:or redan detta (\-fPIC), s\(oa de drar automatiskt f\(:ordel av \s-1ASLR\s0 medan bin\(:ara .text\-regioner m\(oaste byggas med \s-1PIE\s0 f\(:or att uppn\(oa \s-1ASLR.\s0 N\(:ar detta sker \(:ar ROP-angrepp (Return Oriented Programming) mycket sv\(oarare eftersom det inte finns n\(oagra statiska platser att studsa fr\(oan i ett minnesf\(:ord\(:arvningsangrepp. .Sp \&\s-1PIE\s0 \(:ar inte kompatibelt med \fB\-fPIC\fR, s\(oa allm\(:an f\(:orsiktighet m\(oaste tas vid bygge av delade objekt. Men eftersom PIE-flaggorna som skapas injiceras via gcc-specifikationsfiler b\(:or det alltid vara s\(:akert att ovillkorligen s\(:atta dem oberoende av typen av objekt som kompileras eller l\(:ankas. .Sp Statiska bibliotek kan anv\(:andas av program eller andra delade bibliotek. Beroende p\(oa vilka flaggor som anv\(:ands f\(:or att kompilera objekten inuti ett statisk bibliotek kan dessa vara anv\(:andas av olika upps\(:attningar objekt: .RS 4 .IP "inget" 4 .IX Item "inget" Kan varken l\(:ankas till ett PIE-program eller ett delat bibliotek. .IP "\fB\-fPIE\fR" 4 .IX Item "-fPIE" Kan l\(:ankas till alla program, men inte ett delat bibliotek (rekommenderas). .IP "\fB\-fPIC\fR" 4 .IX Item "-fPIC" Kan l\(:ankas till alla program och delade bibliotek. .RE .RS 4 .Sp Om flaggorna beh\(:over s\(:attas manuellt och gcc:s spec-injektion f\(:orbig\(oas, finns det flera saker man beh\(:over t\(:anka p\(oa. Att ovillkorligen och explicit s\(:anda \fB\-fPIE\fR, \fB\-fpie\fR eller \fB\-pie\fR till ett byggsystem som anv\(:ander libtool \(:ar s\(:akert eftersom flaggorna kommer skalas av n\(:ar delade bibliotek byggs. P\(oa projekt som bygger b\(oade program och delade bibliotek kan du annars beh\(:ova se till att \fB\-fPIC\fR alltid s\(:ands sist i kompileringsflaggor s\(oasom \&\fB\s-1CFLAGS\s0\fR n\(:ar delade bibliotek byggs (s\(oa att den \(:overstyre en tidigare angiven \fB\-PIE\fR), och att \fB\-shared\fR s\(:ands sist till l\(:ankflaggor s\(oasom \&\fB\s-1LDFLAGS\s0\fR (s\(oa att den \(:overstyr en tidigare angiven \fB\-pie\fR). \fBObservera:\fR Detta beh\(:over inte g\(:oras med standard-gcc-specifikationsmaskineriet. .Sp Eftersom \s-1PIE\s0 i till\(:agg implementeras med ett generellt register kan vissa arkitekturer med f\(oa register (men inte l\(:angre i386 eftersom optimeringar implementerats i gcc >= 5) se prestandaf\(:orluster upp till 15% i v\(:aldigt textsegment-tunga programs k\(:orning; de flesta k\(:orningar ser mindre \(:an 1%. Arkitekturer med m\(oanga generella register (t.ex amd64) ser inte en lika stor v\(:arsta falls\-f\(:orlust. .RE .SS "reproducible" .IX Subsection "reproducible" Kompileringsflaggorna som anges nedan kan anv\(:andas f\(:or att g\(:ora det l\(:attare att reproducera byggbarhet eller tillhandah\(oalla ytterligare varningsflaggor under kompileringen. F\(:orutom det som anges nedan aktiveras dessa som standard f\(:or arkitekturer som st\(:oder dem. .IP "\fBtimeless\fR" 4 .IX Item "timeless" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \fB\-Wdate\-time\fR till \&\fB\s-1CPPFLAGS\s0\fR. Detta ger varningar n\(:ar makrona \fB_\|_TIME_\|_\fR, \fB_\|_DATE_\|_\fR eller \&\fB_\|_TIMESTAMP_\|_\fR anv\(:ands. .IP "\fBfixfilepath\fR" 4 .IX Item "fixfilepath" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \&\fB\-ffile\-prefix\-map=\fR\fIBYGGS\(:OKV\(:AG\fR\fB=.\fR till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \&\fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \fB\s-1FFLAGS\s0\fR och \fB\s-1FCFLAGS\s0\fR d\(:ar \&\fBBYGGS\(:OKV\(:AG\fR. Detta f\(oar till effekt att byggs\(:okv\(:agen f\(:orsvinner fr\(oan alla genererade filer. .Sp Om b\(oade \fBfixdebugpath\fR och \fBfixfilepath\fR anges tar denna flagga f\(:oretr\(:ade, eftersom den \(:ar en \(:overm\(:angd av den f\(:orstn\(:amnda. .IP "\fBfixdebugpath\fR" 4 .IX Item "fixdebugpath" Inst\(:allningen (aktiverad som f\(:orval) l\(:agger till \&\fB\-fdebug\-prefix\-map=\fR\fIBYGGS\(:OKV\(:AG\fR\fB=.\fR till till \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \&\fB\s-1OBJCFLAGS\s0\fR, \fB\s-1OBJCXXFLAGS\s0\fR, \fB\s-1GCJFLAGS\s0\fR, \fB\s-1FFLAGS\s0\fR och \fB\s-1FCFLAGS\s0\fR. Detta f\(oar till effekt att byggs\(:okv\(:agen f\(:orsvinner fr\(oan alla genererade fels\(:okningssymboler. .SH "MILJ\(:OVARIABLER" .IX Header "MILJ\(:OVARIABLER" Det finns tv\(oa upps\(:attningar milj\(:ovariabler som utf\(:or samma operationer, den f\(:orsta (\s-1DEB_\s0\fIflagga\fR_\fIop\fR) b\(:or aldrig anv\(:andas inuti \fBdebian/rules\fR). Den \(:ar t\(:ankt f\(:or anv\(:andare som vill bygga om k\(:allkodspaketet med andra byggflaggor. Den andra upps\(:attningen (\s-1DEB_\s0\fIflagga\fR_MAINT_\fIop\fR) b\(:or endast anv\(:andas i \fBdebian/rules\fR av paketansvariga f\(:or att \(:andra de slutgiltiga byggflaggorna. .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_SET\fR" 4 .IX Item "DEB_flagga_SET" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_MAINT_SET\fR" 4 .IX Item "DEB_flagga_MAINT_SET" .PD Denna variabel kan anv\(:andas f\(:or att tvinga fram v\(:ardet som returneras f\(:or given \fIflagga\fR. .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_STRIP\fR" 4 .IX Item "DEB_flagga_STRIP" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_MAINT_STRIP\fR" 4 .IX Item "DEB_flagga_MAINT_STRIP" .PD Denna variabel kan anv\(:andas f\(:or att tillhandah\(oalla en blankstegsavdelad lista med flaggor som kommer att tas bort fr\(oan upps\(:attningen flaggor som ges f\(:or given \fIflagga\fR. .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_APPEND\fR" 4 .IX Item "DEB_flagga_APPEND" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_MAINT_APPEND\fR" 4 .IX Item "DEB_flagga_MAINT_APPEND" .PD Denna variabel kan anv\(:andas f\(:or att l\(:agga till ytterligare flaggor till v\(:ardet som returneras f\(:or given \fIflagga\fR. .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_PREPEND\fR" 4 .IX Item "DEB_flagga_PREPEND" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflagga\fR\fB_MAINT_PREPEND\fR" 4 .IX Item "DEB_flagga_MAINT_PREPEND" .PD Denna variabel kan anv\(:andas f\(:or att l\(:agga till ytterligare flaggor f\(:orst i v\(:ardet som returneras f\(:or given \fIflagga\fR. .IP "\fB\s-1DEB_BUILD_OPTIONS\s0\fR" 4 .IX Item "DEB_BUILD_OPTIONS" .PD 0 .IP "\fB\s-1DEB_BUILD_MAINT_OPTIONS\s0\fR" 4 .IX Item "DEB_BUILD_MAINT_OPTIONS" .PD De h\(:ar variablerna kan anv\(:andas av en anv\(:andare eller utvecklare f\(:or att sl\(oa av/p\(oa olika omr\(oadesfunktioner som p\(oaverkar byggflaggorna. Variabeln \&\fB\s-1DEB_BUILD_MAINT_OPTIONS\s0\fR\-variabeln \(:overstyr alla inst\(:allningar i funktionsomr\(oaden i \fB\s-1DEB_BUILD_OPTIONS\s0\fR. Se avsnittet \fBFUNKTIONSOMR\(oADEN\fR f\(:or mer information. .IP "\fB\s-1DEB_VENDOR\s0\fR" 4 .IX Item "DEB_VENDOR" Inst\(:allningen anger den aktuella \(oaterf\(:ors\(:aljaren. Om den inte \(:ar satt kommer \(oaterf\(:ors\(:aljaren att identifieras genom att l\(:asa \&\fB/etc/dpkg/origins/default\fR. .IP "\fB\s-1DEB_BUILD_PATH\s0\fR" 4 .IX Item "DEB_BUILD_PATH" Den h\(:ar variabeln anger byggs\(:okv\(:agen (sedan dpkg 1.18.8) att anv\(:anda i funktioner s\(oasom \fBfixdebugpath\fR s\(oa att de kan styras av anroparen. Variabeln \(:ar f\(:or n\(:arvarande specifik f\(:or Debian och dess derivat. .IP "\fB\s-1DPKG_COLORS\s0\fR" 4 .IX Item "DPKG_COLORS" V\(:aljer f\(:argl\(:age (sedan dpkg 1.18.5). F\(:or n\(:arvarande godtas f\(:oljande v\(:arden: \&\fBauto\fR (f\(:orval), \fBalways\fR och \fBnever\fR. .IP "\fB\s-1DPKG_NLS\s0\fR" 4 .IX Item "DPKG_NLS" Om satt, anv\(:ands f\(:or att best\(:amma om lokalt spr\(oakst\(:od ska aktiveras, \(:aven k\(:ant som internationaliseringsst\(:od (eller i18n) (sedan dpkg 1.19.0). Till\(oatna v\(:arden \(:ar: \fB0\fR och \fB1\fR (f\(:orval). .SH "FILER" .IX Header "FILER" .SS "Konfigurationsfiler" .IX Subsection "Konfigurationsfiler" .IP "\fB/etc/dpkg/buildflags.conf\fR" 4 .IX Item "/etc/dpkg/buildflags.conf" Konfigurationsfil f\(:or hela systemet. .IP "\fB\f(CB$XDG_CONFIG_HOME\fB/dpkg/buildflags.conf\fR eller" 4 .IX Item "$XDG_CONFIG_HOME/dpkg/buildflags.conf eller" .PD 0 .IP "\fB\f(CB$HOME\fB/.config/dpkg\-buildflags.conf\fR" 4 .IX Item "$HOME/.config/dpkg-buildflags.conf" .PD Anv\(:andarens konfigurationsfil. .SS "Paketeringsst\(:od" .IX Subsection "Paketeringsst\(:od" .IP "\fB/usr/share/dpkg/buildflags.mk\fR" 4 .IX Item "/usr/share/dpkg/buildflags.mk" Makefile-klipp som l\(:aser in (och eventuellt exporterar) alla flaggor som st\(:od av \fBdpkg-buildflags\fR till variabler (sedan dpkg 1.16.1). .SH "EXEMPEL" .IX Header "EXEMPEL" F\(:or att s\(:anda byggflaggor till en byggkommandorad i en makefil: .Sp .Vb 1 \& $(MAKE) $(shell dpkg\-buildflags \-\-export=cmdline) \& \& ./configure $(shell dpkg\-buildflags \-\-export=cmdline) .Ve .PP F\(:or att s\(:atta byggflaggor i ett skalskript eller skalfragment kan \fBeval\fR anv\(:andas f\(:or att tolka utdata och exportera flaggorna i milj\(:on: .Sp .Vb 1 \& eval "$(dpkg\-buildflags \-\-export=sh)" && make .Ve .PP eller f\(:or att s\(:atta positionsparametrarna f\(:or att s\(:anda till ett kommando: .Sp .Vb 2 \& eval "set \-\- $(dpkg\-buildflags \-\-export=cmdline)" \& for dir in a b c; do (cd $dir && ./configure "$@" && make); done .Ve .SS "Anv\(:anda i debian/rules" .IX Subsection "Anv\(:anda i debian/rules" Du b\(:or anropa \fBdpkg-buildflags\fR eller inkludera \fBbuildflags.mk\fR fr\(oan filen \&\fBdebian/rules\fR f\(:or att h\(:amta de byggflaggor det \(:ar n\(:odv\(:andigt att s\(:anda till byggsystemet. Observera att \(:aldre versioner av \fBdpkg-buildpackages\fR (f\(:ore dpkg 1.16.1) exporterade dessa flaggor automatiskt. Du b\(:or dock inte bero p\(oa detta, eftersom detta f\(:orhindrar k\(:orning av \fBdebian/rules\fR manuellt. .PP F\(:or paket med autoconf-liknande byggsystem kan du s\(:anda relevanta flaggor direkt till configure eller \fBmake\fR(1), som visas ovan. .PP I andra byggsystem, eller om du vill ha mer finkorning styrning av vilka flaggor som s\(:ands vart, kan du anv\(:anda \fB\-\-get\fR. Eller s\(oa kan du ist\(:allet inkludera \fBbuildflags.mk\fR, som tar hand om anropet till \fBdpkg-buildflags\fR och lagringen av byggflaggorna i make-variabler. .PP Om du vill exportera alla byggflaggor till milj\(:on (d\(:ar de kan f\(oangas upp av ditt byggsystem): .Sp .Vb 2 \& DPKG_EXPORT_BUILDFLAGS = 1 \& include /usr/share/dpkg/buildflags.mk .Ve .PP F\(:or extra styrning av vad som expoteras kan du manuellt exportera variablerna (eftersom inga av dem exporteras som standard): .Sp .Vb 2 \& include /usr/share/dpkg/buildflags.mk \& export CPPFLAGS CFLAGS LDFLAGS .Ve .PP Du kan naturligtvis dessutom manuellt s\(:anda flaggorna till kommandon: .Sp .Vb 3 \& include /usr/share/dpkg/buildflags.mk \& build\-arch: \& $(CC) \-o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .Ve .SH "\(:OVERS\(:ATTNING" .IX Header "\(:OVERS\(:ATTNING" Peter Krefting och Daniel Nylander.