.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" 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 "2023-08-30" "1.22.0" "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 "NOM" .IX Header "NOM" dpkg-buildflags \- Renvoie les options de compilation \(`a utiliser pour la construction du paquet .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBdpkg-buildflags\fR [\fIoption\fR...] [\fIcommande\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBdpkg-buildflags\fR est un script qui permet de r\('ecup\('erer les options de compilation \(`a utiliser pour la construction d'un paquet. .PP Les drapeaux par d\('efaut sont d\('efinis par le distributeur mais peuvent \(^etre \('etendus ou remplac\('es de plusieurs fa\(,cons : .IP "1." 4 pour tout le syst\(`eme avec \fB/etc/dpkg/buildflags.conf\fR ; .IP "2." 4 pour l'utilisateur courant avec \fB\f(CB$XDG_CONFIG_HOME\fB/dpkg/buildflags.conf\fR o\(`u la valeur par d\('efaut de \fB\f(CB$XDG_CONFIG_HOME\fB\fR est \fB\f(CB$HOME\fB/.config\fR ; .IP "3." 4 temporairement par l'utilisateur avec des variables d'environnement (voir \fB\s-1VARIABLES D\s0'\s-1ENVIRONNEMENT\s0\fR) ; .IP "4." 4 dynamiquement par le responsable du paquet avec des variables d'environnement \(`a l'aide de \fBdebian/rules\fR (voir \fB\s-1VARIABLES D\s0'\s-1ENVIRONNEMENT\s0\fR). .PP Les fichiers de configuration peuvent contenir quatre types de directives : .IP "\fB\s-1SET\s0\fR \fIdrapeau\fR \fIvaleur\fR" 4 .IX Item "SET drapeau valeur" Remplace le drapeau \fIdrapeau\fR par la valeur \fIvaleur\fR. .IP "\fB\s-1STRIP\s0\fR \fIdrapeau\fR \fIvaleur\fR" 4 .IX Item "STRIP drapeau valeur" Strip from the flag named \fIflag\fR all the build flags listed in \fIvalue\fR. Since dpkg 1.16.1. .IP "\fB\s-1APPEND\s0\fR \fIdrapeau\fR \fIvaleur\fR" 4 .IX Item "APPEND drapeau valeur" \('Etend le drapeau \fIdrapeau\fR avec les options indiqu\('ees dans \fIvaleur\fR. Une espace est ajout\('ee au d\('ebut de ce qui est ajout\('e si la valeur actuelle du drapeau n'est pas vide. .IP "\fB\s-1PREPEND\s0\fR \fIdrapeau\fR \fIvaleur\fR" 4 .IX Item "PREPEND drapeau valeur" Extend the flag named \fIflag\fR by prepending the options given in \fIvalue\fR. A space is appended to the prepended value if the flag's current value is non-empty. Since dpkg 1.16.1. .PP Les fichiers de configuration peuvent contenir des commentaires sur les lignes commen\(,cant par un di\(`ese (#). Les lignes vides sont \('egalement ignor\('ees. .PP This program was introduced in dpkg 1.15.7. .SH "COMMANDES" .IX Header "COMMANDES" .IP "\fB\-\-dump\fR" 4 .IX Item "--dump" Affiche sur la sortie standard tous les drapeaux de compilation et leurs valeurs. Un drapeau par ligne est affich\('e, suivi de sa valeur, s\('epar\('ee par le caract\(`ere \(Fo \('egal \(Fc (\(Fo \fIdrapeau\fR=\fIvaleur\fR \(Fc). Il s'agit de l'action par d\('efaut. .IP "\fB\-\-list\fR" 4 .IX Item "--list" Affiche la liste des drapeaux g\('er\('es par le distributeur actuel (un par ligne). Voir la section \fB\s-1DRAPEAUX\s0 G\('ER\('ES\fR pour plus d'informations sur chacun d'eux. .IP "\fB\-\-status\fR" 4 .IX Item "--status" Display any information that can be useful to explain the behavior of \fBdpkg-buildflags\fR (since dpkg 1.16.5): relevant environment variables, current vendor, state of all feature flags. Also print the resulting compiler flags with their origin. .Sp Cette option est destin\('ee \(`a \(^etre utilis\('ee depuis \fBdebian/rules\fR, afin de garder dans le journal de construction une trace claire des drapeaux de compilation utilis\('es. Cela peut \(^etre utile pour diagnostiquer des probl\(`emes qui y seraient li\('es. .IP "\fB\-\-export=\fR\fIformat\fR" 4 .IX Item "--export=format" Affiche sur la sortie standard les commandes qui permettent d'exporter tous les drapeaux de compilation pour un outil particulier. Si \fIformat\fR n'est pas sp\('ecifi\('e, sa valeur est \fBsh\fR. Seuls les drapeaux de compilation commen\(,cant par une majuscule sont inclus, les autres \('etant suppos\('es inadapt\('es \(`a l'environnement. Formats pris en charge : .RS 4 .IP "\fBsh\fR" 4 .IX Item "sh" Commandes shell pour d\('efinir et exporter tous les drapeaux de compilation dans l'environnement. Les valeurs drapeau sont prot\('eg\('ees et ainsi la sortie est pr\(^ete \(`a \(^etre \('evalu\('ee par un shell. .IP "\fBcmdline\fR" 4 .IX Item "cmdline" Arguments \(`a passer \(`a la ligne de commande d'un programme de construction pour utiliser tous les drapeaux de compilation (depuis dpkg 1.17.0). Les valeurs drapeau sont prot\('eg\('ees dans la syntaxe du shell. .IP "\fBconfigure\fR" 4 .IX Item "configure" C'est un ancien alias pour \fBcmdline\fR. .IP "\fBmake\fR" 4 .IX Item "make" Directives de make pour d\('efinir et exporter tous les drapeaux de compilation dans l'environnement. La sortie peut \(^etre \('ecrite dans un fragment de Makefile et \('evalu\('ee en utilisant une directive \fBinclude\fR. .RE .RS 4 .RE .IP "\fB\-\-get\fR \fIdrapeau\fR" 4 .IX Item "--get drapeau" Affiche la valeur de ce drapeau sur la sortie standard. Retourne un code de sortie \fB0\fR si le drapeau est connu et \fB1\fR s'il est inconnu. .IP "\fB\-\-origin\fR \fIdrapeau\fR" 4 .IX Item "--origin drapeau" Affiche l'origine de la valeur renvoy\('ee par \fB\-\-get\fR. Retourne un code de sortie \fB0\fR si le drapeau est connu et \fB1\fR s'il est inconnu. L'origine est une des valeurs suivantes : .RS 4 .IP "\fBvendor\fR" 4 .IX Item "vendor" le drapeau d\('efini \(`a l'origine par le distributeur est renvoy\('e ; .IP "\fBsystem\fR" 4 .IX Item "system" le drapeau est plac\('e ou modifi\('e par un r\('eglage syst\(`eme ; .IP "\fBuser\fR" 4 .IX Item "user" le drapeau est plac\('e ou modifi\('e par une configuration sp\('ecifique \(`a l'utilisateur ; .IP "\fBenv\fR" 4 .IX Item "env" le drapeau est plac\('e ou modifi\('e par une configuration sp\('ecifique dans l'environnement. .RE .RS 4 .RE .IP "\fB\-\-query\fR" 4 .IX Item "--query" Print any information that can be useful to explain the behavior of the program: current vendor, relevant environment variables, feature areas, state of all feature flags, whether a feature is handled as a builtin default by the compiler (since dpkg 1.21.14), and the compiler flags with their origin (since dpkg 1.19.0). .Sp Par exemple : .Sp .Vb 3 \& Vendor: Debian \& Environment: \& DEB_CFLAGS_SET=\-O0 \-Wall \& \& Area: qa \& Features: \& bug=no \& canary=no \& Builtins: \& \& Area: hardening \& Features: \& pie=no \& Builtins: \& pie=yes \& \& Area: reproducible \& Features: \& timeless=no \& Builtins: \& \& Flag: CFLAGS \& Value: \-O0 \-Wall \& Origin: env \& \& Flag: CPPFLAGS \& Value: \-D_FORTIFY_SOURCE=2 \& Origin: vendor .Ve .IP "\fB\-\-query\-features\fR \fIdomaine\fR" 4 .IX Item "--query-features domaine" Affiche les fonctionnalit\('es activ\('ees pour un domaine donn\('e (depuis dpkg 1.16.2). Si la fonctionnalit\('e est g\('er\('ee par le compilateur (m\(^eme seulement sur quelques architectures) comme une fonction par d\('efaut, alors un champ \fBBuiltin\fR est affich\('e (depuis dpkg 1.21.14). Les seuls domaines reconnus actuellement sur Debian et ses d\('eriv\('es sont \fBfuture\fR, \fBqa\fR, \fBreproducible\fR, \fBsanitize\fR et \fBhardening\fR, voir la section \fB\s-1ZONES D\s0'\s-1OPTION\s0\fR pour plus de d\('etails. Renvoie un code de sortie \fB0\fR si le domaine est connu et \fB1\fR s'il est inconnu. .Sp L'affichage est dans le format \s-1RFC822,\s0 avec une section par fonctionnalit\('e. Par exemple : .Sp .Vb 3 \& Feature: pie \& Enabled: yes \& Builtin: yes \& \& Feature: stackprotector \& Enabled: yes .Ve .IP "\fB\-\-help\fR" 4 .IX Item "--help" Afficher un message d'aide puis quitter. .IP "\fB\-\-version\fR" 4 .IX Item "--version" Afficher le num\('ero de version puis quitter. .SH "DRAPEAUX G\('ER\('ES" .IX Header "DRAPEAUX G\('ER\('ES" .IP "\fB\s-1ASFLAGS\s0\fR" 4 .IX Item "ASFLAGS" Options de l'assembleur. Valeur par d\('efaut : aucune. Depuis dpkg 1.21.0. .IP "\fB\s-1CFLAGS\s0\fR" 4 .IX Item "CFLAGS" Options du compilateur C. La valeur par d\('efaut d\('efinie par le distributeur comporte \fB\-g\fR et le niveau d'optimisation par d\('efaut (\fB\-O2\fR en g\('en\('eral, ou \fB\-O0\fR si la variable d'environnement \fB\s-1DEB_BUILD_OPTIONS\s0\fR contient \fInoopt\fR). .IP "\fB\s-1CPPFLAGS\s0\fR" 4 .IX Item "CPPFLAGS" Options du pr\('eprocesseur C. Valeur par d\('efaut : aucune. .IP "\fB\s-1CXXFLAGS\s0\fR" 4 .IX Item "CXXFLAGS" Options du compilateur \*(C+. Analogue \(`a \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1OBJCFLAGS\s0\fR" 4 .IX Item "OBJCFLAGS" Options for the Objective C compiler. Same as \fB\s-1CFLAGS\s0\fR. Since dpkg 1.17.7. .IP "\fB\s-1OBJCXXFLAGS\s0\fR" 4 .IX Item "OBJCXXFLAGS" Options for the Objective \*(C+ compiler. Same as \fB\s-1CXXFLAGS\s0\fR. Since dpkg 1.17.7. .IP "\fB\s-1GCJFLAGS\s0\fR" 4 .IX Item "GCJFLAGS" Options du compilateur Java \s-1GNU\s0 (gcj). Un sous-ensemble de \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1DFLAGS\s0\fR" 4 .IX Item "DFLAGS" Options du compilateur D (ldc ou gdc). Depuis dpkg 1.20.6. .IP "\fB\s-1FFLAGS\s0\fR" 4 .IX Item "FFLAGS" Options du compilateur Fortran 77. Un sous-ensemble de \fB\s-1CFLAGS\s0\fR. .IP "\fB\s-1FCFLAGS\s0\fR" 4 .IX Item "FCFLAGS" Options for the Fortran 9x compiler. Same as \fB\s-1FFLAGS\s0\fR. Since dpkg 1.17.7. .IP "\fB\s-1LDFLAGS\s0\fR" 4 .IX Item "LDFLAGS" Options pass\('ees au compilateur lors du processus de liaison des ex\('ecutables ou des objets partag\('es (si le linker est appel\('e directement, alors \fB\-Wl\fR et \fB,\fR doivent \(^etre retir\('es de ces options). Valeur par d\('efaut : aucune. .PP De nouveaux drapeaux pourront \(^etre ajout\('es si besoin est (par exemple pour la prise en charge de nouveaux langages). .SH "ZONES D'OPTION" .IX Header "ZONES D'OPTION" Chaque option de zone peut \(^etre activ\('ee ou d\('esactiv\('ee avec les valeurs \fB\s-1DEB_BUILD_OPTIONS\s0\fR et \fB\s-1DEB_BUIL_MAINT_OPTIONS\s0\fR de l'espace de variables d'environnement gr\(^ace aux modificateurs \(Fo \fB+\fR \(Fc et \(Fo \fB\-\fR \(Fc. Par exemple, pour activer l'option \fBhardening\fR \(Fo pie \(Fc et d\('esactiver l'option \(Fo fortify \(Fc, il est possible d'indiquer cela dans \fBdebian/rules\fR : .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify .Ve .PP L'option sp\('eciale \fBall\fR (valable dans toutes les zones) peut \(^etre utilis\('ee pour activer ou d\('esactiver toutes les options de la zone \(`a la fois. Ainsi, tout d\('esactiver dans la zone \fBhardening\fR en n'activant que \(Fo format \(Fc et \(Fo fortify \(Fc peut \(^etre r\('ealis\('e avec : .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify .Ve .SS "abi" .IX Subsection "abi" Several compile-time options (detailed below) can be used to enable features that can change the \s-1ABI\s0 of a package, but cannot be enabled by default due to backwards compatibility reasons unless coordinated or checked individually. .IP "\fBlfs\fR" 4 .IX Item "lfs" This setting (since dpkg 1.22.0; disabled by default) enables Large File Support on 32\-bit architectures where their \s-1ABI\s0 does not include \s-1LFS\s0 by default, by adding \fB\-D_LARGEFILE_SOURCE \-D_FILE_OFFSET_BITS=64\fR to \fB\s-1CPPFLAGS\s0\fR. .Sp When this feature is enabled it will override the value from the same feature in the \fBfuture\fR feature area. .IP "\fBtime64\fR" 4 .IX Item "time64" This setting (since dpkg 1.22.0; disabled by default) enables 64\-bit time_t support on 32\-bit architectures where their \s-1ABI\s0 does not include it by default, by adding \fB\-D_TIME_BITS=64\fR to \fB\s-1CPPFLAGS\s0\fR. This setting automatically enables the \fBlfs\fR feature as it requires it. .SS "future" .IX Subsection "future" Plusieurs options de compilation (d\('etaill\('ees ci-dessous) peuvent \(^etre utilis\('ees pour activer des fonctionnalit\('es qui devraient \(^etre activ\('ees par d\('efaut, mais ne peuvent pas l'\(^etre pour des raisons de compatibilit\('e avec les versions pr\('ec\('edentes. .IP "\fBlfs\fR" 4 .IX Item "lfs" This setting (since dpkg 1.19.0; disabled by default) is now an alias for the \fBlfs\fR feature in the \fBabi\fR area, use that instead. The feature from the \fBabi\fR area overrides this setting. .SS "qa" .IX Subsection "qa" Plusieurs options de compilation (d\('etaill\('ees ci-dessous) peuvent \(^etre utilis\('ees pour d\('etecter des probl\(`emes dans le code source ou dans le syst\(`eme de construction. .IP "\fBbug\fR" 4 .IX Item "bug" This setting (since dpkg 1.17.4; disabled by default) adds any warning option that reliably detects problematic source code. The warnings are fatal. The only currently supported flags are \fB\s-1CFLAGS\s0\fR and \fB\s-1CXXFLAGS\s0\fR with flags set to \fB\-Werror=array\-bounds\fR, \fB\-Werror=clobbered\fR, \fB\-Werror=implicit\-function\-declaration\fR and \fB\-Werror=volatile\-register\-var\fR. .IP "\fBcanary\fR" 4 .IX Item "canary" This setting (since dpkg 1.17.14; disabled by default) adds dummy canary options to the build flags, so that the build logs can be checked for how the build flags propagate and to allow finding any omission of normal build flag settings. The only currently supported flags are \fB\s-1CPPFLAGS\s0\fR, \fB\s-1CFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR and \fB\s-1OBJCXXFLAGS\s0\fR with flags set to \fB\-D_\|_DEB_CANARY_\fR\fIflag\fR_\fIrandom-id\fR\fB_\|_\fR, and \fB\s-1LDFLAGS\s0\fR set to \fB\-Wl,\-z,deb\-canary\-\fR\fIrandom-id\fR. .SS "optimize" .IX Subsection "optimize" Plusieurs options de compilation (d\('etaill\('ees ci-dessous) peuvent \(^etre utilis\('ees pour aider \(`a optimiser un binaire produit (depuis dpkg 1.21.0). \fBNote\fR : activer \fBtoutes\fR ces options peuvent aboutir \(`a des objets binaires non-reproductibles. .IP "\fBlto\fR" 4 .IX Item "lto" Ce r\('eglage (depuis dpkg 1.21.0 ; d\('esactiv\('e par d\('efaut) active \(Fo Link Time Optimization \(Fc en ajoutant \fB\-flto=auto \-ffat\-lto\-objects\fR \(`a \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, \fB\s-1FCFLAGS\s0\fR et \fB\s-1LDFLAGS\s0\fR. .SS "sanitize" .IX Subsection "sanitize" Plusieurs options de compilation (d\('etaill\('ees ci-dessous) peuvent \(^etre utilis\('ees pour aider \(`a nettoyer le binaire compil\('e face aux corruptions de la m\('emoire, aux fuites de m\('emoire, \(`a l'utilisation de m\('emoire apr\(`es lib\('eration et \(`a des bogues au comportement ind\('efini. \fBNote\fR : ces options ne devraient pas \(^etre utilis\('ees pour des constructions en production, car elles peuvent r\('eduire la fiabilit\('e du code, r\('eduire la s\('ecurit\('e ou m\(^eme les fonctionnalit\('es. .IP "\fBaddress\fR" 4 .IX Item "address" This setting (since dpkg 1.18.0; disabled by default) adds \fB\-fsanitize=address\fR to \fB\s-1LDFLAGS\s0\fR and \fB\-fsanitize=address \-fno\-omit\-frame\-pointer\fR to \fB\s-1CFLAGS\s0\fR and \fB\s-1CXXFLAGS\s0\fR. .IP "\fBthread\fR" 4 .IX Item "thread" This setting (since dpkg 1.18.0; disabled by default) adds \fB\-fsanitize=thread\fR to \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR and \fB\s-1LDFLAGS\s0\fR. .IP "\fBleak\fR" 4 .IX Item "leak" This setting (since dpkg 1.18.0; disabled by default) adds \fB\-fsanitize=leak\fR to \fB\s-1LDFLAGS\s0\fR. It gets automatically disabled if either the \fBaddress\fR or the \fBthread\fR features are enabled, as they imply it. .IP "\fBundefined\fR" 4 .IX Item "undefined" This setting (since dpkg 1.18.0; disabled by default) adds \fB\-fsanitize=undefined\fR to \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR and \fB\s-1LDFLAGS\s0\fR. .SS "hardening" .IX Subsection "hardening" Plusieurs options de compilation (d\('etaill\('ees ci-dessous) peuvent \(^etre utilis\('ees pour accro\(^itre la r\('esistance du binaire compil\('e face aux attaques par corruption de la m\('emoire ou fournir des messages d'avertissement suppl\('ementaires lors de la compilation. Sauf mention contraire (voir ci-dessous), ces options sont activ\('ees par d\('efaut pour les architectures qui les g\(`erent. .IP "\fBformat\fR" 4 .IX Item "format" This setting (since dpkg 1.16.1; enabled by default) adds \fB\-Wformat \-Werror=format\-security\fR to \fB\s-1CFLAGS\s0\fR, \fB\s-1CXXFLAGS\s0\fR, \fB\s-1OBJCFLAGS\s0\fR and \fB\s-1OBJCXXFLAGS\s0\fR. This will warn about improper format string uses, and will fail when format functions are used in a way that represent possible security problems. At present, this warns about calls to \fBprintf\fR and \fBscanf\fR functions where the format string is not a string literal and there are no format arguments, as in \fBprintf(foo);\fR instead of \fBprintf(\*(L"%s\*(R", foo);\fR This may be a security hole if the format string came from untrusted input and contains \(oq%n\(cq. .IP "\fBfortify\fR" 4 .IX Item "fortify" This setting (since dpkg 1.16.1; enabled by default) adds \fB\-D_FORTIFY_SOURCE=2\fR to \fB\s-1CPPFLAGS\s0\fR. 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 \(oq%n\(cq are blocked. If an application depends on such a format string, it will need to be worked around. .Sp Veuillez noter que pour que cette option fasse effet, le source devra aussi \(^etre compil\('ee avec \fB\-O1\fR ou plus. Si la variable d'environnement \fB\s-1DEB_BUILD_OPTIONS\s0\fR contient \fInoopt\fR, la prise en charge de \fBfortify\fR sera d\('esactiv\('ee du fait des nouveaux avertissements \('emis par la glibc version 2.16 et ult\('erieure. .IP "\fBstackprotector\fR" 4 .IX Item "stackprotector" This setting (since dpkg 1.16.1; enabled by default if stackprotectorstrong is not in use) adds \fB\-fstack\-protector \-\-param=ssp\-buffer\-size=4\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 and \fB\s-1FCFLAGS\s0\fR. This adds safety checks against stack overwrites. This renders many potential code injection attacks into aborting situations. In the best case this turns code injection vulnerabilities into denial of service or into non-issues (depending on the application). .Sp Cette fonctionnalit\('e impose de lier le code \(`a la glibc (ou toute autre biblioth\(`eque fournissant \fB_\|_stack_chk_fail\fR) et doit donc \(^etre d\('esactiv\('ee lorsque le code est construit avec \fB\-nostdlib\fR, \fB\-ffreestanding\fR ou \('equivalents. .IP "\fBstackprotectorstrong\fR" 4 .IX Item "stackprotectorstrong" This setting (since dpkg 1.17.11; enabled by default) adds \fB\-fstack\-protector\-strong\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 and \fB\s-1FCFLAGS\s0\fR. This is a stronger variant of \fBstackprotector\fR, but without significant performance penalties. .Sp D\('esactiver \fBstackprotector\fR d\('esactive \('egalement ce param\(`etre. .Sp Cette fonctionnalit\('e a les m\(^eme exigences que \fBstackprotector\fR, en plus de n\('ecessiter gcc 4.9 ou plus r\('ecent. .IP "\fBstackclask\fR" 4 .IX Item "stackclask" This setting (since dpkg 1.22.0; enabled by default) adds \fB\-fstack\-clash\-protection\fR on \fBamd64\fR, \fBarm64\fR, \fBarmhf\fR and \fBarmel\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 and \fB\s-1FCFLAGS\s0\fR. This adds code to prevent stack clash style attacks. .IP "\fBbranch\fR" 4 .IX Item "branch" This setting (since dpkg 1.22.0; enabled by default) adds \fB\-fcf\-protection\fR on \fBamd64\fR and \fB\-mbranch\-protection=standard\fR on \fBarm64\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 and \fB\s-1FCFLAGS\s0\fR. This adds branch protection to indirect calls, jumps and returns to check whether these are valid at run-time. .IP "\fBrelro\fR" 4 .IX Item "relro" This setting (since dpkg 1.16.1; enabled by default) adds \fB\-Wl,\-z,relro\fR to \fB\s-1LDFLAGS\s0\fR. During program load, several \s-1ELF\s0 memory sections need to be written to by the linker. This flags the loader to turn these sections read-only before turning over control to the program. Most notably this prevents \s-1GOT\s0 overwrite attacks. If this option is disabled, \fBbindnow\fR will become disabled as well. .IP "\fBbindnow\fR" 4 .IX Item "bindnow" This setting (since dpkg 1.16.1; disabled by default) adds \fB\-Wl,\-z,now\fR to \fB\s-1LDFLAGS\s0\fR. During program load, all dynamic symbols are resolved, allowing for the entire \s-1PLT\s0 to be marked read-only (due to \fBrelro\fR above). The option cannot become enabled if \fBrelro\fR is not enabled. .IP "\fBpie\fR" 4 .IX Item "pie" This setting (since dpkg 1.16.1; with no global default since dpkg 1.18.23, as it is enabled by default now by gcc on the amd64, arm64, armel, armhf, hurd\-i386, i386, kfreebsd\-amd64, kfreebsd\-i386, mips, mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc and sparc64 Debian architectures) adds the required options to enable or disable \s-1PIE\s0 via gcc specs files, if needed, depending on whether gcc injects on that architecture the flags by itself or not. When the setting is enabled and gcc injects the flags, it adds nothing. When the setting is enabled and gcc does not inject the flags, it adds \fB\-fPIE\fR (via \fI/usr/share/dpkg/pie\-compiler.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 and \fB\s-1FCFLAGS\s0\fR, and \fB\-fPIE \-pie\fR (via \fI/usr/share/dpkg/pie\-link.specs\fR) to \fB\s-1LDFLAGS\s0\fR. When the setting is disabled and gcc injects the flags, it adds \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 and \fB\s-1FCFLAGS\s0\fR, and \fB\-fno\-PIE \-no\-pie\fR (via \fI/usr/share/dpkg/no\-pie\-link.specs\fR) to \fB\s-1LDFLAGS\s0\fR. .Sp Les ex\('ecutables \(`a position ind\('ependante (\(Fo Position Independent Executable \(Fc) permettent d'utiliser la randomisation de l'organisation de l'espace d'adressage (\s-1ASLR :\s0 \(Fo Address Space Layout Randomization \(Fc), qui est g\('er\('ee par certaines versions du noyau. Bien que \s-1ASLR\s0 puisse d\('ej\(`a \(^etre mise en \(oeuvre pour les zones de donn\('ees dans la pile et le tampon (brk et mmap), les zones de codes doivent \(^etre compil\('ees comme ind\('ependantes de la position. Les biblioth\(`eques partag\('ees font d\('ej\(`a cela (\fB\-fPIC\fR) ce qui permet automatiquement d'utiliser \s-1ASLR.\s0 Par contre les r\('egions .text binaires doivent \(^etre construites en mode \s-1PIE\s0 pour mettre en \(oeuvre \s-1ASLR.\s0 Une fois cela r\('ealis\('e, les attaques \s-1ROP\s0 (\(Fo Return Oriented Programming \(Fc) deviennent plus difficiles, car il n'existe pas d'emplacement statique d'o\(`u rebondir pendant une attaque par corruption de la m\('emoire. .Sp \&\s-1PIE\s0 n'est pas compatible avec \fBfPIC\fR, aussi, en g\('en\('eral, des pr\('ecautions doivent \(^etre prises lors de la construction d'objets partag\('es. Mais comme les drapeaux \s-1PIE\s0 \('emis sont inject\('es par des fichiers de sp\('ecifications de gcc, il devrait toujours \(^etre s\(^ur de les d\('efinir sans condition ind\('ependamment du type d'objet en train d'\(^etre compil\('e ou li\('e. .Sp Les biblioth\(`eques statiques peuvent \(^etre utilis\('ees par des programmes ou d'autres biblioth\(`eques partag\('ees. Selon les drapeaux utilis\('es pour compiler tous les objets d'une biblioth\(`eque statique, ces biblioth\(`eques seront utilisables par divers ensembles d'objets : .RS 4 .IP "none" 4 .IX Item "none" Ne peut \(^etre li\('e ni \(`a un programme \s-1PIE,\s0 ni \(`a une biblioth\(`eque partag\('ee. .IP "\fB\-fPIE\fR" 4 .IX Item "-fPIE" Peut \(^etre li\('e \(`a tout programme, mais pas \(`a une biblioth\(`eque partag\('ee (recommand\('e). .IP "\fB\-fPIC\fR" 4 .IX Item "-fPIC" Peut \(^etre li\('e \(`a tout programme et toute biblioth\(`eque partag\('ee. .RE .RS 4 .Sp If there is a need to set these flags manually, bypassing the gcc specs injection, there are several things to take into account. Unconditionally and explicitly passing \fB\-fPIE\fR, \fB\-fpie\fR or \fB\-pie\fR to a build-system using libtool is safe as these flags will get stripped when building shared libraries. Otherwise on projects that build both programs and shared libraries you might need to make sure that when building the shared libraries \fB\-fPIC\fR is always passed last (so that it overrides any previous \fB\-PIE\fR) to compilation flags such as \fB\s-1CFLAGS\s0\fR, and \fB\-shared\fR is passed last (so that it overrides any previous \fB\-pie\fR) to linking flags such as \fB\s-1LDFLAGS\s0\fR. \fBNote\fR: This should not be needed with the default gcc specs machinery. .Sp De plus, comme la protection \s-1PIE\s0 est mise en \(oeuvre \(`a l'aide d'un registre global, certaines architectures priv\('ees de registre (mais plus i386 depuis les optimisations mises en \(oeuvre dans gcc >= 5) peuvent souffrir de pertes de performances allant jusqu'\(`a 15 % sur des charges d'applications utilisant largement les segments de texte ; le plus souvent, cette perte de performances n\(cqexc\('edera pas 1 %. Pour des architectures offrant plus de registres globaux (par exemple amd64), cette p\('enalisation n'existe pratiquement pas. .RE .SS "reproducible" .IX Subsection "reproducible" Les options de compilation (d\('etaill\('ees ci-dessous) peuvent aider \(`a am\('eliorer la reproductibilit\('e de la construction ou fournir des messages d'avertissement suppl\('ementaires lors de la compilation. Sauf mention contraire (voir ci-dessous), ces options sont activ\('ees par d\('efaut pour les architectures qui les g\(`erent. .IP "\fBtimeless\fR" 4 .IX Item "timeless" This setting (since dpkg 1.17.14; enabled by default) adds \fB\-Wdate\-time\fR to \fB\s-1CPPFLAGS\s0\fR. This will cause warnings when the \fB_\|_TIME_\|_\fR, \fB_\|_DATE_\|_\fR and \fB_\|_TIMESTAMP_\|_\fR macros are used. .IP "\fBfixfilepath\fR" 4 .IX Item "fixfilepath" This setting (since dpkg 1.19.1; enabled by default) adds \fB\-ffile\-prefix\-map=\fR\fI\s-1BUILDPATH\s0\fR\fB=.\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 and \fB\s-1FCFLAGS\s0\fR where \fB\s-1BUILDPATH\s0\fR is set to the top-level directory of the package being built. This has the effect of removing the build path from any generated file. .Sp Si \(`a la fois \fBfixdebugpath\fR et \fBfixfilepath\fR sont d\('efinis, cette option a la priorit\('e parce c'est un sur-ensemble du premier. .Sp \&\fBNote\fR: If the build process captures the build flags into the resulting built objects, that will make the package unreproducible. And while disabling this option might make some of the objects reproducible again this would also require disabling \fBfixdebugpath\fR, which might make any generated debug symbols objects unreproducible. The ideal fix is to stop capturing build flags. .IP "\fBfixdebugpath\fR" 4 .IX Item "fixdebugpath" This setting (since dpkg 1.18.5; enabled by default) adds \fB\-fdebug\-prefix\-map=\fR\fI\s-1BUILDPATH\s0\fR\fB=.\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 and \fB\s-1FCFLAGS\s0\fR where \fB\s-1BUILDPATH\s0\fR is set to the top-level directory of the package being built. This has the effect of removing the build path from any generated debug symbols. .Sp \&\fBNote\fR: This feature has similar reproducible properties as \fBfixfilepath\fR. .SH "ENVIRONNEMENT" .IX Header "ENVIRONNEMENT" Deux jeux de variables d'environnement effectuent les m\(^emes op\('erations. Le premier (\s-1DEB_\s0\fIdrapeau\fR_\fIop\('eration\fR) ne devrait jamais \(^etre utilis\('e depuis \fBdebian/rules\fR. Il est destin\('e aux utilisateurs souhaitant recompiler le paquet source avec des drapeaux de compilation modifi\('es. Le second (\s-1DEB_\s0\fIdrapeau\fR_MAINT_\fIop\('eration\fR) ne doit \(^etre utilis\('e que dans \fBdebian/rules\fR par les responsables de paquets pour modifier les drapeaux de compilation concern\('es. .IP "\fB\s-1DEB_\s0\fR\fIdrapeau\fR\fB_SET\fR" 4 .IX Item "DEB_drapeau_SET" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_MAINT_SET\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_MAINT_SET (since dpkg 1.16.1)" .PD Cette variable permet de forcer la valeur renvoy\('ee pour le \fIdrapeau\fR indiqu\('e. .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_STRIP\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_STRIP (since dpkg 1.16.1)" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_MAINT_STRIP\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_MAINT_STRIP (since dpkg 1.16.1)" .PD Cette variable peut \(^etre utilis\('ee pour fournir une liste d'options (s\('epar\('ees par des espaces) qui seront retir\('ees du jeu de drapeaux renvoy\('e pour le \fIdrapeau\fR indiqu\('e. .IP "\fB\s-1DEB_\s0\fR\fIdrapeau\fR\fB_APPEND\fR" 4 .IX Item "DEB_drapeau_APPEND" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_MAINT_APPEND\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_MAINT_APPEND (since dpkg 1.16.1)" .PD Cette variable permet d'ajouter des options \(`a la valeur renvoy\('ee pour le \fIdrapeau\fR indiqu\('e. .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_PREPEND\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_PREPEND (since dpkg 1.16.1)" .PD 0 .IP "\fB\s-1DEB_\s0\fR\fIflag\fR\fB_MAINT_PREPEND\fR (since dpkg 1.16.1)" 4 .IX Item "DEB_flag_MAINT_PREPEND (since dpkg 1.16.1)" .PD Cette variable permet de pr\('efixer la valeur renvoy\('ee pour le \fIdrapeau\fR indiqu\('e par des options suppl\('ementaires. .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 (since dpkg 1.16.1)" 4 .IX Item "DEB_BUILD_MAINT_OPTIONS (since dpkg 1.16.1)" .PD Ces variables peuvent \(^etre utilis\('ees par un utilisateur ou un responsable de paquet pour activer ou d\('esactiver diff\('erentes options de zone qui affectent les drapeaux de construction. La variable \fB\s-1DEB_BUILD_MAINT_OPTIONS\s0\fR outrepasse tous les param\(`etres de la zone d'options \fB\s-1DEB_BUILD_OPTIONS\s0\fR. Voir la section \fB\s-1ZONES D\s0'\s-1OPTION\s0\fR pour plus de d\('etails. .IP "\fB\s-1DEB_VENDOR\s0\fR" 4 .IX Item "DEB_VENDOR" Ce r\('eglage d\('efinit l'\('editeur (\(Fo vendor \(Fc) actuel. Si cette valeur est vide, le contenu du fichier \fB/etc/dpkg/origins/default\fR est utilis\('e. .IP "\fB\s-1DEB_BUILD_PATH\s0\fR" 4 .IX Item "DEB_BUILD_PATH" Cette variable configure le chemin de construction (depuis dpkg 1.18.8) \(`a utiliser avec des fonctions telles que \fBfixdebugpath\fR de telle sorte qu'elles soient contr\(^ol\('ees par l'appelant. Cette variable est actuellement sp\('ecifique \(`a Debian et \(`a ses d\('eriv\('es. .IP "\fB\s-1DPKG_COLORS\s0\fR" 4 .IX Item "DPKG_COLORS" D\('efinit le mode de couleur (depuis dpkg 1.18.5). Les valeurs actuellement accept\('ees sont \fBauto\fR (par d\('efaut), \fBalways\fR et \fBnever\fR. .IP "\fB\s-1DPKG_NLS\s0\fR" 4 .IX Item "DPKG_NLS" Si cette variable est d\('efinie, elle sera utilis\('ee pour d\('ecider l'activation de la prise en charge des langues (\s-1NLS\s0 \(en Native Language Support), connu aussi comme la gestion de l'internationalisation (ou i18n) (depuis dpkg 1.19.0). Les valeurs permises sont : \fB0\fR et \fB1\fR (par d\('efaut). .SH "FICHIERS" .IX Header "FICHIERS" .SS "Fichiers de configuration." .IX Subsection "Fichiers de configuration." .IP "\fB/etc/dpkg/buildflags.conf\fR" 4 .IX Item "/etc/dpkg/buildflags.conf" Fichier de configuration pour l'ensemble du syst\(`eme. .IP "\fB\f(CB$XDG_CONFIG_HOME\fB/dpkg/buildflags.conf\fR ou" 4 .IX Item "$XDG_CONFIG_HOME/dpkg/buildflags.conf ou" .PD 0 .IP "\fB\f(CB$HOME\fB/.config/dpkg/buildflags.conf\fR" 4 .IX Item "$HOME/.config/dpkg/buildflags.conf" .PD Fichier de configuration propre \(`a l'utilisateur .SS "Gestion de l'empaquetage" .IX Subsection "Gestion de l'empaquetage" .IP "\fB/usr/share/dpkg/buildflags.mk\fR" 4 .IX Item "/usr/share/dpkg/buildflags.mk" Fragment de fichier Makefile qui chargera (et facultativement exportera) dans les variables (depuis dpkg 1.16.1) tous les drapeaux pris en charge par \fBdpkg-buildflags\fR. .SH "EXEMPLES" .IX Header "EXEMPLES" Pour passer des drapeaux de compilation \(`a une commande de compilation dans un Makefile : .Sp .Vb 1 \& $(MAKE) $(shell dpkg\-buildflags \-\-export=cmdline) \& \& ./configure $(shell dpkg\-buildflags \-\-export=cmdline) .Ve .PP Pour d\('efinir les drapeaux de compilation dans un script shell ou un fragment de shell, on peut utiliser \fBeval\fR pour interpr\('eter la sortie et exporter les drapeaux dans l'environnement : .Sp .Vb 1 \& eval "$(dpkg\-buildflags \-\-export=sh)" && make .Ve .PP ou d\('efinir les param\(`etres de position \(`a passer \(`a la commande : .Sp .Vb 2 \& eval "set \-\- $(dpkg\-buildflags \-\-export=cmdline)" \& for dir in a b c; do (cd $dir && ./configure "$@" && make); done .Ve .SS "Utilisation dans debian/rules" .IX Subsection "Utilisation dans debian/rules" Il faut appeler \fBdpkg-buildflags\fR ou inclure \fBbuildflags.mk\fR \(`a partir du fichier \fBdebian/rules\fR pour obtenir les drapeaux de compilation n\('ecessaires \(`a passer au syst\(`eme de construction. Veuillez noter que les anciennes versions de \fBdpkg-buildpackage\fR (ant\('erieures \(`a dpkg 1.16.1) exportaient ces drapeaux automatiquement. N\('eanmoins, il est d\('econseill\('e de d\('ependre de ce comportement parce qu'il casse l'appel manuel de \fBdebian/rules\fR. .PP Pour les paquets avec des syst\(`emes de construction du style autoconf, il est possible de passer les options appropri\('ees \(`a configure ou \fBmake\fR(1) directement, comme vu ci-dessus. .PP Pour d'autres syst\(`emes de construction ou si on souhaite un contr\(^ole extr\(^emement pr\('ecis sur le choix et la position o\(`u sont pass\('es les drapeaux, \fB\-\-get\fR peut \(^etre utilis\('e. Autrement, il est possible d'inclure \fBbuildflags.mk\fR qui s'occupe de l'appel de \fBdpkg-buildflags\fR et du placement des drapeaux de compilation dans les variables de make. .PP Si vous voulez exporter tous les drapeaux de compilation dans l'environnement (o\(`u le syst\(`eme de construction peut les r\('ecup\('erer) : .Sp .Vb 2 \& DPKG_EXPORT_BUILDFLAGS = 1 \& include /usr/share/dpkg/buildflags.mk .Ve .PP Pour un contr\(^ole suppl\('ementaire sur ce qui est export\('e, vous pouvez exporter manuellement les variables (puisque aucune n'est export\('ee par d\('efaut) : .Sp .Vb 2 \& include /usr/share/dpkg/buildflags.mk \& export CPPFLAGS CFLAGS LDFLAGS .Ve .PP Et enfin, vous pouvez bien s\(^ur passer manuellement les drapeaux aux commandes : .Sp .Vb 3 \& include /usr/share/dpkg/buildflags.mk \& build\-arch: \& $(CC) \-o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .Ve .SH "TRADUCTION" .IX Header "TRADUCTION" Ariel \s-1VARDI\s0 , 2002. Philippe Batailler, 2006. Nicolas Fran\(,cois, 2006. Veuillez signaler toute erreur \(`a .