Provided by: dpkg-dev_1.16.1.2ubuntu7_all bug

NAMN

       dpkg-buildflags  -  returnerar  byggflaggor  att  anvanda for att bygga
       paket

SYNOPS

       dpkg-buildflags [flagga...] kommando

BESKRIVNING

       dpkg-buildflags ar ett verktyg for att  hamta  kompileringsflaggor  att
       anvanda  for  att  bygga  Debianpaket.   De forvalda flaggorna anges av
       leverantoren, men de kan utokas/overstyras pa flera satt:

       1.     pa hela systemet med /etc/dpkg/buildflags.conf;

       2.     for         den         nuvarande         anvandaren         med
              $XDG_CONFIG_HOME/dpkg/buildflags.conf  dar  $XDG_CONFIG_HOME har
              standardvardet $HOME/.config;

       3.     temporart av anvandaren med miljovariabler (se stycket MILJ"O).

       4.     dynamiskt av paketansvariga med  miljovariabler  som  satts  via
              debian/rules (se stycket MILJ"O).

       Konfigurationsfilerna kan innehalla tva sorters direktiv:

       SET flagga v"arde
              Overstyr flaggan flagga till att ha vardet v"arde.

       STRIP flagga v"arde
              Ta bort alla flaggor som listas i v"arde fran flaggan som anges i
              flagga.

       APPEND flagga v"arde
              Utoka flaggan flagga genom att lagga till alternativen som anges
              i  v"arde.  Ett  blanksteg  laggs  till  fore  vardet om flaggans
              nuvarande varde inte ar tomt.

       PREPEND flagga v"arde
              Utoka flaggan flagga genom att lagga till alternativen som anges
              i v"arde forst. Ett blanksteg laggs till efter vardet om flaggans
              nuvarande varde inte ar tomt.

       Konfigurationsfilerna kan innehalla kommentarer pa rader som borjar med
       ett nummertecken (#). Aven tomma rader ignoreras.

KOMMANDON

       --dump Skriv  alla  kompileringsflaggor och deras varde pa standard ut.
              En flagga skrivs per rad,  avdelade  fran  sitt  varde  med  ett
              likamedtecken ("flagga=v"arde"). Detta ar standardatgarden.

       --list Skriv   ut  listan  over  flaggor  som  stods  av  den  aktuella
              leverantoren (en per rad). Se stycket FLAGGOR SOM ST"ODS for  mer
              information om dem.

       --export=format
              Skriv skal- (om format ar sh) eller make-kommandon (om format ar
              make)   som   kan    anvandas    for    att    exportera    alla
              kompileringsflaggor  i  miljon  till  standard  ut. Om format ar
              configure kan utdata anvandas pa en ./configure-kommandorad.  Om
              format  inte  anges  antas  sh.  Endast  kompileringsflaggor som
              borjar med en stor bokstav tas med, andra antas  att  inte  vara
              lampliga for miljon.

       --get flagga
              Skriv  ut  vardet  pa  flaggan pa standard ut. Avslutar med 0 om
              flaggan ar kand, om inte avslutar den med 1.

       --origin flagga
              Anger ursprunget till flaggan som returneras av --get.  Avslutar
              med 0 om flaggan ar kand, om inte avslutar med 1. Ursprunget kan
              vara ett av foljande varden:

              vendor originalflagga satt av leverantoren returneras;

              system flaggan ar satt/modifierad av systemkonfigurationen;

              user   flaggan ar satt/modifierad av anvandarkonfigurationen;

              env    flaggan   ar   satt/modifierad   av   en    miljospecifik
                     konfiguration.

       --help Visar hjalpskarm och avslutar.

       --version
              Visar version och avslutar.

FLAGGOR SOM ST"ODS

       CFLAGS Flaggor   for   C-kompilatorn.   Standardvardet   som  satts  av
              leverantoren innehaller -g  och  den  forvalda  optimeringsnivan
              (vanligtvis  -O2,  eller -O0 om miljovariabeln DEB_BUILD_OPTIONS
              definierar noopt).

       CPPFLAGS
              Flaggor for C-forprocesseraren. Forvalt varde: tomt.

       CXXFLAGS
              Flaggor for C++-kompilatorn. Samma som CFLAGS.

       FFLAGS Flaggor for Fortrankompilatorn. Samma som CFLAGS.

       LDFLAGS
              Flaggor som sands till kompilatorn vid lankning av binarer eller
              delade  objekt  (om  lankaren anropas direkt maste -Wl och , tas
              bort fran dessa flaggor). Standardvarde: tomt.

FILER

       /etc/dpkg/buildflags.conf
              Konfigurationsfil for hela systemet.

       $XDG_CONFIG_HOME/dpkg/buildflags.conf                             eller
       $HOME/.config/dpkg/buildflags.conf
              Anvandarens konfigurationsfil.

MILJ"OVARIABLER

       Det finns tva uppsattningar miljovariabler som utfor samma operationer,
       den forsta (DEB_flagga_op) bor aldrig anvandas inuti debian/rules). Den
       ar  tankt  for  anvandare  som  vill bygga om kallkodspaketet med andra
       byggflaggor. Den andra uppsattningen (DEB_flagga_MAINT_op)  bor  endast
       anvandas  i debian/rules av paketansvariga for att andra de slutgiltiga
       byggflaggorna.

       DEB_flagga_SET
       DEB_flagga_MAINT_SET
              Denna variabel kan anvandas  for  att  tvinga  fram  vardet  som
              returneras for given flagga.

       DEB_flagga_STRIP
       DEB_flagga_MAINT_STRIP
              Denna   variabel   kan   anvandas   for  att  tillhandahalla  en
              blankstegsavdelad lista med flaggor som kommer att tas bort fran
              uppsattningen flaggor som ges for given flagga.

       DEB_flagga_APPEND
       DEB_flagga_MAINT_APPEND
              Denna  variabel  kan  anvandas  for  att  lagga till ytterligare
              flaggor till vardet som returneras for given flagga.

       DEB_flagga_PREPEND
       DEB_flagga_MAINT_PREPEND
              Denna variabel kan  anvandas  for  att  lagga  till  ytterligare
              flaggor forst i vardet som returneras for given flagga.

       DEB_BUILD_MAINT_OPTIONS
              Den   har  variabeln  kan  anvandas  for  att  sla  av/pa  olika
              hardningsbyggflaggor genom alternativet hardening. Se  avsnittet
              H"ARDNING for mer information.

H"ARDNING

       Du  kan  anvanda  flera kompileringsflaggor (se detaljer nedan) for att
       harda den fardiga binaren mot minnesfordarvningsangrepp, eller for  att
       ge ytterligare varningsmeddelanden under kompileringen. Forutom det som
       anges nedan aktiveras dessa som standard for  arkitekturer  som  stoder
       dem.

       Varje  hardningsfunktion kan aktiveras och inaktiveras i miljovariabeln
       DEB_BUILD_MAINT_OPTIONS varde hardening med modifierarna "+"  och  "-".
       Du  kan  till  exempel  aktivera  och  funktionen  "pie" och inaktivera
       funktionen "fortify" genom att ange detta i debian/rules:

         export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

       Den speciella funktionen  all  kan  anvandas  for  att  aktivera  eller
       inaktivera  alla  hardningsfunktioner  samtidigt.  Du  kan till exempel
       inaktivera allt och endast aktivera "format" och "fortify" med:

         export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify

       format Installningen (aktiverad  som  standard)  lagger  till  -Wformat
              -Wformat-security   -Werror=format-security   till   CFLAGS  och
              CXXFLAGS. Detta kommer  att  varna  om  olamplig  anvandning  av
              formatstrangar,   och   att  misslyckas  nar  formatfunktionerna
              anvands pa ett satt som representerar mojliga  sakerhetsproblem.
              For  narvarande  varnar  detta om anrop till funktionerna printf
              och scanf dar formatstrangen inte ar en fast strang och nar  det
              inte finns nagra formatargument, som i printf(foo); istallet for
              printf("%s",  foo);  Detta  kan   vara   ett   sakerhetshal   om
              formatstrangen  kommer  fran  en  obetrodd  kalla och innehaller
              "%n".

       fortify
              This setting (enabled by default)  adds  -D_FORTIFY_SOURCE=2  to
              CPPFLAGS. During code generation the compiler knows a great deal
              of information about buffer sizes (where possible), and attempts
              to  replace insecure unlimited length buffer function calls with
              length-limited ones. This is especially useful for  old,  crufty
              code.   Additionally,  format  strings  in  writable memory that
              contain '%n' are blocked. If an application depends  on  such  a
              format string, it will need to be worked around.

              Observera  att,  for  att den har flaggan skall ha nagon effekt,
              maste kallkoden ocksa kompileras med -O1 eller hogre.

       stackprotector
              Installningen   (aktiverad    som    standard)    lagger    till
              -fstack-protector   --param=ssp-buffer-size=4  till  CFLAGS  och
              CXXFLAGS.   Detta   lagger    till    sakerhetskontroller    mot
              stackoverskrivningar,    vilket    gor    att    manga   mojliga
              kodinjiceringsangrepp istallet avbryter programmet. I det  basta
              fallet gor det kodinjiceringsangrepp till overbelastnignsangrepp
              eller icke-problem (beroende pa programmet).

              Den har funktionen kraver lankning mot glibc  (eller  ett  annat
              bibliotek  som  tillhandahaller  __stack_chk_fail), sa det maste
              inaktiveras nar du bygger  med  -nostdlib  eller  -ffreestanding
              eller liknande.

       relro  Installningen  (aktiverad som standard) lagger till -Wl,-z,relro
              till LDFLAGS. Vid inlasning av programmet maste lankaren  skriva
              till  flera  ELF-minnessektioner.  Den har installningen flaggar
              till inlasaren att dessa  sektioner  skall  goras  skrivskyddade
              innan  programmet far kontroll. Detta skyddar huvudsaklingen mot
              GOT-overskrivningsangrepp.

       bindnow
              This setting (disabled by default) adds -Wl,-z,now  to  LDFLAGS.
              During  program load, all dynamic symbols are resolved, allowing
              for the entire PLT to be marked read-only (due to relro above).

       pie    Installningen (inaktiverad som standard) lagger till -fPIE  till
              CFLAGS   och   CXXFLAGS,   samt   -fPIE   -pie   till   LDFLAGS.
              Positionsoberoende exekverbara program (PIE) behovs for att  dra
              fordel  av  slumpmassig adressrymd (ASLR), vilket stods av vissa
              versioner  av  karnan.  Medan  ASLR  redan  kan   anvandas   for
              datautrymmen  i  stacken  och  heap:en  (brk  och  mmap),  maste
              kodomraden  forst  kompileras  som  positionsoberoende.   Delade
              bibliotek  gor  redan  detta  (-fPI  C),  sa de drar automatiskt
              fordel av ASLR medan binara .text-regioner maste byggas med  PIE
              for  att  uppna  ASLR.  Nar  detta  sker  ar ROP-angrepp (Return
              Oriented Programming) mycket svarare  eftersom  det  inte  finns
              nagra    statiska    platser    att    studsa    fran    i   ett
              minnesfordarvningsangrepp.

              Detta ar inte kompatibelt med -fPIC sa man maste vara  forsiktig
              nar man bygger delade objekt.

              Eftersom  PIE i tillagg implementeras med ett generellt register
              kan    vissa    arkitekturer     (huvudsakligen     i386)     se
              prestandaforluster  upp  till  15%  i  valdigt textsegment-tunga
              programs  korning;  de  flesta  korningar  ser  mindre  an   1%.
              Arkitekturer  med manga generella register (t.ex amd64) ser inte
              en lika stor varsta falls-forlust.

F"ORFATTARE

       Upphovsrattsskyddat (C) 2010-2011 Raphael Hertzog

       Upphovsrattsskyddat (C) 2011 Kees Cook

       Detta ar fri programvara; se GNU General Public License version 2 eller
       senare for kopieringsvillkor. Det finns INGEN GARANTI.

"OVERS"ATTNING

       Peter Krefting och Daniel Nylander.