.\" 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 "deb-src-symbols 5" .TH deb-src-symbols 5 "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 "NOME" .IX Header "NOME" deb-src-symbols \- ficheiro modelo de biblioteca partilhada extensiva de Debian .SH "SINOPSE" .IX Header "SINOPSE" \&\fBdebian/\fR\fIpackage\fR\fB.symbols.\fR\fIarch\fR, \fBdebian/symbols.\fR\fIarch\fR, \&\fBdebian/\fR\fIpackage\fR\fB.symbols\fR, \fBdebian/symbols\fR .SH "DESCRI\(,C\(~AO" .IX Header "DESCRI\(,C\(~AO" Os modelos de ficheiros symbol s\(~ao enviados em pacotes fonte Debian, e o seu formato \('e um superconjunto dos ficheiros symbols enviados em pacotes bin\('arios, veja \fBdeb\-symbols\fR\|(5). .SS "Coment\('arios" .IX Subsection "Coment\('arios" Coment\('arios s\(~ao suportados em modelos de ficheiros de s\('imbolos: Qualquer linha com um \(oq#\(cq no primeiro caractere \('e um coment\('ario excepto se come\(,car com \(oq#include\(cq (veja sec\(,c\(~ao \fBUsando inclus\(~oes\fR). As linhas que come\(,cam com \(oq#MISSING:\(cq s\(~ao coment\('arios especiais que documentam s\('imbolos que desapareceram. .SS "Usando substitui\(,c\(~ao de #PACKAGE#" .IX Subsection "Usando substitui\(,c\(~ao de #PACKAGE#" Em alguns casos raros, o nome da biblioteca varia entre arquitecturas. Para evitar dificultar o nome do pacote no ficheiro de s\('imbolos, voc\(^e pode usar o marcador \fI#PACKAGE#\fR. Ser\('a substitu\('ido pelo nome real do pacote durante a instala\(,c\(~ao dos ficheiros de s\('imbolos. Contrariamente ao marcador \&\fI#MINVER#\fR, \fI#PACKAGE#\fR nunca ir\('a aparecer num ficheiro de s\('imbolos dentro de um pacote bin\('ario. .SS "Usar etiquetas s\('imbolo" .IX Subsection "Usar etiquetas s\('imbolo" Etiquetagem de s\('imbolos \('e \('util para marcar s\('imbolos que s\(~ao especiais em algum modo. Qualquer s\('imbolo pode ter um n\('umero arbitr\('ario de etiquetas associadas com ele. Enquanto todas as etiquetas s\(~ao analisadas e guardadas, apenas algumas delas s\(~ao compreendidas pelo \fBdpkg-gensymbols\fR e despoletam manuseamento especial dos s\('imbolos. Veja a sub\-sec\(,c\(~ao \fBEtiquetas s\('imbolo standard\fR para refer\(^encia a estas etiquetas. .PP A especifica\(,c\(~ao de etiqueta vem logo antes do nome do s\('imbolo (n\(~ao \('e permitido nenhum espa\(,co em branco entre eles). Come\(,ca sempre com um abre\-par\(^entesis \fB(\fR, termina com um fecha\-par\(^entesis \fB)\fR e tem de conter pelo menos uma etiqueta. M\('ultiplas etiquetas s\(~ao separadas pelo caractere \&\fB|\fR. Cada etiqueta pode opcionalmente ter um valor que \('e separado do nome da etiqueta com um caractere \fB=\fR. Os nomes de etiquetas e valores podem ser strings arbitr\('arias excepto que n\(~ao podem conter nenhum dos caracteres especiais \fB)\fR \fB|\fR \fB=\fR. Nomes de s\('imbolos que seguem a especifica\(,c\(~ao das etiquetas podem opcionalmente ser citados com os caracteres \fB'\fR ou \fB"\fR para permitir espa\(,cos em brando neles. No entanto, se n\(~ao existirem etiquetas especificadas para o s\('imbolo, as cita\(,c\(~oes s\(~ao tratadas como parte do nome do s\('imbolo o qual continua at\('e ao primeiro espa\(,co. .PP .Vb 3 \& (tag1=i am marked|tag name with space)"tagged quoted symbol"@Base 1.0 \& (optional)tagged_unquoted_symbol@Base 1.0 1 \& untagged_symbol@Base 1.0 .Ve .PP O primeiro s\('imbolo no exemplo \('e chamado \fItagged quoted symbol\fR e tem duas etiquetas: \fItag1\fR com valor \fIi am marked\fR e \fItag name with space\fR que n\(~ao tem nenhum valor. O segundo s\('imbolo chamado \fItagged_unquoted_symbol\fR \('e apenas etiquetado com a etiqueta chamada \fIoptional\fR. O \('ultimo s\('imbolo \('e um exemplo do s\('imbolo normal n\(~ao etiquetado. .PP Como as etiquetas de s\('imbolos s\(~ao uma extens\(~ao do formato \fBdeb-symbols\fR(5), elas apenas fazer parte dos ficheiros de s\('imbolos usados em pacotes fonte (esses ficheiros devem depois ser vistos como modelos usados para compilar os ficheiros de s\('imbolos que s\(~ao embebidos em pacotes bin\('arios. Quando \&\fBdpkg-gensymbols\fR \('e chamado sem a op\(,c\(~ao \fB\-t\fR, ir\('a escrever ficheiros de s\('imbolos compat\('iveis com o formato \fBdeb-symbols\fR(5): processa totalmente os s\('imbolos de acordo com os requerimentos das suas etiquetas standard e remove todas as etiquetas do resultado. Pelo contr\('ario, em modo de modelo (\fB\-t\fR) todos os s\('imbolos e suas etiquetas (tanto standard como desconhecidas) s\(~ao mantidas no resultado e s\(~ao escritas no seu formato original como foram carregadas. .SS "Etiquetas s\('imbolo standard" .IX Subsection "Etiquetas s\('imbolo standard" .IP "\fBoptional\fR" 4 .IX Item "optional" Um s\('imbolo marcado como opcional pode desaparecer da biblioteca a qualquer altura e isso nunca far\('a o \fBdpkg-gensymbols\fR falhar. No entanto, s\('imbolos opcionais desaparecidos ir\(~ao continuamente aparecer como \s-1MISSING\s0 no diff em cada nova revis\(~ao do pacote. Este comportamento serve como lembrete para o maintainer que tal s\('imbolo precisa de ser removido do ficheiro de s\('imbolos ou re-adicionado \(`a biblioteca. Quando o s\('imbolo opcional, que foi anteriormente declarado como \s-1MISSING,\s0 subitamente reaparece na pr\('oxima revis\(~ao, ser\('a actualizado de volta para o estado de \*(L"existente\*(R" com a sua vers\(~ao m\('inima inalterada. .Sp Esta etiqueta \('e \('util para s\('imbolos que s\(~ao privados e para o seu desaparecimento n\(~ao causar a rutura da \s-1ABI.\s0 Por exemplo, a maioria das instala\(,c\(~oes de modelos \*(C+ caiem nesta categoria. Como qualquer outra etiqueta, esta tamb\('em pode ter uma valor arbitr\('ario: isso podia ser usado para indicar porqu\(^e o s\('imbolo \('e considerado opcional. .IP "\fBarch=\fR\fIarchitecture-list\fR" 4 .IX Item "arch=architecture-list" .PD 0 .IP "\fBarch\-bits=\fR\fIarchitecture-bits\fR" 4 .IX Item "arch-bits=architecture-bits" .IP "\fBarch\-endian=\fR\fIarchitecture-endianness\fR" 4 .IX Item "arch-endian=architecture-endianness" .PD Estas bandeiras permitem-nos restringir o conjunto de arquitecturas onde o s\('imbolo \('e suposto existir. As bandeiras \fBarch-bits\fR e \fBarch-endian\fR s\(~ao suportadas desde dpkg 1.18.0. Quando a lista de s\('imbolos \('e actualizada com os s\('imbolos descobertos na biblioteca, todos os s\('imbolos espec\('ificos de arquitectura que n\(~ao dizem respeito \(`a arquitectura da m\('aquina actual s\(~ao tratados como se n\(~ao existissem. Se um s\('imbolo espec\('ifico\-de\-arquitectura que corresponda \(`a arquitectura da m\('aquina anfitri\(~a atual n\(~ao existir na biblioteca, aplica-se os procedimentos normais para s\('imbolos em falta e isso pode causar que \fBdpkg-gensymbols\fR falhe. Por outro lado, se o s\('imbolo espec\('ifico\-de arquitectura for encontrado onde n\(~ao era suporto existir (porque a arquitectura da m\('aquina actual n\(~ao est\('a listada na etiqueta ou porque n\(~ao corresponde ao endianness e bits), \('e tornado neutro em arquitectura (isto \('e, as etiquetas arch, arch-bits e arch-endian s\(~ao largadas e o s\('imbolo ir\('a aparecer no diff devido a esta altera\(,c\(~ao), mas n\(~ao \('e considerado como novo. .Sp Quando opera no modo predefinido n\(~ao\-modelo, entre os s\('imbolos espec\('ificos de arquitectura, apenas aqueles que correspondem \(`a arquitectura da m\('aquina anfitri\(~a actual s\(~ao escritos no ficheiro de s\('imbolos. Pelo contr\('ario, quando se opera em modo de modelo, todos os s\('imbolos espec\('ificos\-de\-arquitectura (incluindo aqueles de arquitecturas alien\('igenas) s\(~ao sempre escritos no ficheiro de s\('imbolos. .Sp O formato de \fIarchitecture-list\fR \('e o mesmo que o usado no campo \&\fBBuild-Depends\fR de \fIdebian/control\fR (excepto nos par\(^entesis rectos []). Por exemplo, o primeiro s\('imbolo da lista em baixo ser\('a considerado apenas nas arquitecturas alpha, any\-amd64 e ia64, o segundo apenas em arquitecturas de linux, enquanto o terceiro em todas excepto em armel. .Sp .Vb 3 \& (arch=alpha any\-amd64 ia64)64bit_specific_symbol@Base 1.0 \& (arch=linux\-any)linux_specific_symbol@Base 1.0 \& (arch=!armel)symbol_armel_does_not_have@Base 1.0 .Ve .Sp O \fIarchitecture-bits\fR ou \('e \fB32\fR ou \('e \fB64\fR. .Sp .Vb 2 \& (arch\-bits=32)32bit_specific_symbol@Base 1.0 \& (arch\-bits=64)64bit_specific_symbol@Base 1.0 .Ve .Sp A \fIarquitectura-classe-endian\fR \('e ou \fBlittle\fR ou \fBbig\fR. .Sp .Vb 2 \& (arch\-endian=little)little_endian_specific_symbol@Base 1.0 \& (arch\-endian=big)big_endian_specific_symbol@Base 1.0 .Ve .Sp M\('ultiplas restri\(,c\(~oes podem ser ligadas em corrente. .Sp .Vb 1 \& (arch\-bits=32|arch\-endian=little)32bit_le_symbol@Base 1.0 .Ve .IP "\fBallow-internal\fR" 4 .IX Item "allow-internal" O dpkg-gensymbols tem uma lista interna de s\('imbolos que n\(~ao devem aparecer em ficheiros de s\('imbolos pois eles s\(~ao geralmente apenas efeitos secund\('arios de detalhes de implementa\(,c\(~ao da ferramenta-cadeia (desde dpkg 1.20.1). Se por alguma raz\(~ao, voc\(^e querer realmente que um desses s\('imbolos seja inclu\('ido no ficheiro de s\('imbolos, voc\(^e deve etiquetar o s\('imbolo com \&\fBallow-internal\fR. Pode ser necess\('ario para algumas ferramentas-cadeia de baixo n\('ivel como \(lqlibgcc\(rq. .IP "\fBignore-blacklist\fR" 4 .IX Item "ignore-blacklist" Um alias descontinuado para \fBallow-internal\fR (desde dpkg 1.20.1, suportado desde dpkg 1.15.3). .IP "\fBc++\fR" 4 .IX Item "c++" indica o padr\(~ao de s\('imbolos \fIc++\fR . Veja a sub\-sec\(,c\(~ao \fBUsar padr\(~oes de s\('imbolos\fR em baixo. .IP "\fBsymver\fR" 4 .IX Item "symver" Indica o padr\(~ao de s\('imbolos \fIsymver\fR (vers\(~ao de s\('imbolo). Veja a sub\-sec\(,c\(~ao \&\fBUsar padr\(~oes de s\('imbolos\fR em baixo. .IP "\fBregex\fR" 4 .IX Item "regex" Indica o padr\(~ao de s\('imbolos \fIregex\fR. Veja a sub\-sec\(,c\(~ao \fBUsar padr\(~oes de s\('imbolos\fR em baixo. .SS "Usar padr\(~oes de s\('imbolos" .IX Subsection "Usar padr\(~oes de s\('imbolos" Ao contr\('ario de uma especifica\(,c\(~ao de s\('imbolo standard, um padr\(~ao pode cobrir v\('arios s\('imbolos reais da biblioteca. \fBdpkg-gensymbols\fR ir\('a tentar corresponder cada padr\(~ao com cada s\('imbolo real que \fIn\(~ao\fR tem uma contrapartida de s\('imbolo espec\('ifica definida no ficheiro de s\('imbolos. Sempre que o primeiro padr\(~ao de correspond\(^encia \('e encontrado, todas as suas etiquetas e propriedades ser\(~ao usadas como a especifica\(,c\(~ao base do s\('imbolo. Se nenhum dos padr\(~oes corresponder, o s\('imbolo ir\('a ser considerado como novo. .PP Um padr\(~ao \('e considerado perdido se n\(~ao corresponder a nenhum s\('imbolo da biblioteca. Por predefini\(,c\(~ao isto ir\('a despoletar que \fBdpkg-gensymbols\fR falhe sob \fB\-c1\fR ou n\('ivel mais alto. No entanto, se a falha for indesej\('avel, o padr\(~ao pode ser marcado com a etiqueta \fIoptional\fR. Ent\(~ao se o padr\(~ao n\(~ao corresponder a nada, ir\('a apenas aparecer no diff como \s-1MISSING.\s0 Al\('em disso, como qualquer s\('imbolo, o padr\(~ao pode ser limitado a arquitecturas espec\('ificas com a etiqueta \fIarch\fR. Por favor consulte a sub.sec\(,c\(~ao \&\fBEtiquetas s\('imbolo standard\fR em cima para mais informa\(,c\(~ao. .PP Padr\(~oes s\(~ao uma extens\(~ao do formato \fBdeb-symbols\fR(5) por isso eles s\(~ao apenas v\('alidos em modelos de ficheiros de s\('imbolos. A sintaxe de especifica\(,c\(~ao de padr\(~oes n\(~ao \('e em nada diferente daquela de um s\('imbolo espec\('ifico. No entanto, a parte da especifica\(,c\(~ao com o nome do s\('imbolo serve como uma express\(~ao para ser correspondida contra \fIname@version\fR do s\('imbolo real. De modo a se distinguir entre tipos diferentes de padr\(~oes, um padr\(~ao ser\('a tipicamente etiquetado com uma etiqueta especial. .PP At\('e ao momento, \fBdpkg-gensymbols\fR suporta tr\(^es tipos de padr\(~ao b\('asicos: .IP "\fBc++\fR" 4 .IX Item "c++" Este padr\(~ao \('e denotado pela etiqueta \fIc++\fR. Corresponde apenas a s\('imbolos \&\*(C+ pelo seu nome desmutilado de s\('imbolo (como emitido pelo utilit\('ario \&\fBc++filt\fR(1)). Este padr\(~ao \('e muito jeitoso para corresponder a s\('imbolos cujos nomes mutilados podem variar por entre diferentes arquitecturas enquanto que os seus nomes desmutilados permanecem iguais. Um grupo de tais s\('imbolos \('e \fInon-virtual thunks\fR que t\(^em embebidos desvios espec\('ificos de arquitectura nos seus nomes mutilados. Uma inst\(^ancia comum deste caso \('e um destruidor virtual que sob heran\(,ca diamante precisa de um s\('imbolo thunk n\(~ao\-virtual. Por exemplo, mesmo que _ZThn8_N3NSB6ClassDD1Ev@Base em arquitecturas de 32bit provavelmente seja _ZThn16_N3NSB6ClassDD1Ev@Base em 64bit, pode ser correspondido com um \('unico padr\(~ao \fIc++\fR: .Sp .Vb 4 \& libdummy.so.1 libdummy1 #MINVER# \& [...] \& (c++)"non\-virtual thunk to NSB::ClassD::~ClassD()@Base" 1.0 \& [...] .Ve .Sp O nome desmembrado em cima pode ser obtido ao executar o seguinte comando: .Sp .Vb 1 \& $ echo \*(Aq_ZThn8_N3NSB6ClassDD1Ev@Base\*(Aq | c++filt .Ve .Sp Por favor note que enquanto o nome mutilado \('e \('unico na biblioteca por defini\(,c\(~ao, isto n\(~ao \('e necessariamente verdade para nomes n\(~ao\-mutilados. Um par de s\('imbolos reais distintos podem ter o mesmo nome mutilado. Por exemplo, esse \('e o caso com s\('imbolos thunk n\(~ao.virtuais em configura\(,c\(~oes de heran\(,ca complexa ou com a maioria dos construtores e destrutores (pois o g++ tipicamente gera dois s\('imbolos reais para eles). No entanto, como estas colis\(~oes acontecem no n\('ivel de \s-1ABI,\s0 n\(~ao devem degradar a qualidade do ficheiro de s\('imbolos. .IP "\fBsymver\fR" 4 .IX Item "symver" Este padr\(~ao \('e denotado pela etiqueta \fIsymver\fR. Bibliotecas bem mantidas t\(^em os s\('imbolos organizados pela vers\(~ao, onde cada vers\(~ao corresponde \(`a vers\(~ao do autor de onde o s\('imbolo foi obtido. Se for esse o caso, voc\(^e pode usar um padr\(~ao \fIsymver\fR para corresponder a qualquer s\('imbolo associado \(`a vers\(~ao espec\('ifica. Por exemplo: .Sp .Vb 5 \& libc.so.6 libc6 #MINVER# \& (symver)GLIBC_2.0 2.0 \& [...] \& (symver)GLIBC_2.7 2.7 \& access@GLIBC_2.0 2.2 .Ve .Sp Todos os s\('imbolos associados com vers\(~oes \s-1GLIBC_2.0\s0 e \s-1GLIBC_2.7\s0 ir\(~ao para vers\(~oes m\('inimas de 2.0 e 2.7 respetivamente com a excep\(,c\(~ao do s\('imbolo access@GLIBC_2.0. O \('ultimo ir\('a tornar-se uma depend\(^encia m\('inima em libc6 vers\(~ao 2.2 apenas de estar no escopo do padr\(~ao \*(L"(symver)GLIBC_2.0\*(R" porque s\('imbolos espec\('ificos tomam preced\(^encia sobre padr\(~oes. .Sp Por favor note que apesar de os padr\(~oes de wildcard ao estilo antigo (denotados por \*(L"*@version\*(R" no campo do nome do s\('imbolo) ainda serem suportados, estes foram descontinuados pela nova sintaxe \&\*(L"(symver|optional)version\*(R". Por exemplo, \*(L"*@GLIBC_2.0 2.0\*(R" deve ser escrito como \*(L"(symver|optional)GLIBC_2.0 2.0\*(R" se for necess\('ario o mesmo comportamento. .IP "\fBregex\fR" 4 .IX Item "regex" Padr\(~oes de express\(~oes regulares s\(~ao denotadas pela etiqueta \fIregex\fR. Eles correspondem pelas express\(~oes regulares perl especificadas no campo do nome do s\('imbolo. Uma express\(~ao regular corresponde tal como est\('a, assim n\(~ao se esque\(,ca de a arrancar com o caractere \fI^\fR ou poder\('a corresponder a qualquer parte da string \fIname@version\fR do s\('imbolo real. Por exemplo: .Sp .Vb 3 \& libdummy.so.1 libdummy1 #MINVER# \& (regex)"^mystack_.*@Base$" 1.0 \& (regex|optional)"private" 1.0 .Ve .Sp S\('imbolos como \*(L"mystack_new@Base\*(R", \*(L"mystack_push@Base\*(R", \*(L"mystack_pop@Base\*(R" etc. ir\(~ao corresponder ao primeiro padr\(~ao, enquanto ex. \*(L"ng_mystack_new@Base\*(R" n\(~ao o far\(~ao. O segundo padr\(~ao ir\('a corresponder a todos os s\('imbolos que tenham a string \*(L"private\*(R" nos seus nomes e as correspond\(^encias ir\(~ao herdar a etiqueta \fIoptional\fR a partir do padr\(~ao. .PP Os padr\(~oes b\('asicos listados em cima podem ser combinados onde isso fizer sentido, nesse caso, eles s\(~ao processados pela ordem em que as etiquetas est\(~ao especificadas. Por exemplo, ambos: .PP .Vb 2 \& (c++|regex)"^NSA::ClassA::Private::privmethod\ed\e(int\e)@Base" 1.0 \& (regex|c++)N3NSA6ClassA7Private11privmethod\edEi@Base 1.0 .Ve .PP ir\('a corresponder aos s\('imbolos \*(L"_ZN3NSA6ClassA7Private11privmethod1Ei@Base\*(R" e \&\*(L"_ZN3NSA6ClassA7Private11privmethod2Ei@Base\*(R". Quando coincide o primeiro padr\(~ao, o s\('imbolo cru \('e primeiro desmutilado como s\('imbolo \*(C+, depois o nome desmutilado \('e coincidido com a express\(~ao regular. Por outro lado, quando coincide o segundo padr\(~ao, a express\(~ao regular \('e coincidida com o nome cru do s\('imbolo, depois os s\('imbolo \('e testado se \('e um \*(C+ ao tentar desmutil\('a\-lo. Uma falha de qualquer padr\(~ao b\('asico ir\('a resultar na falha de todo o padr\(~ao. Por isso, por exemplo, \&\*(L"_\|_N3NSA6ClassA7Private11privmethod\edEi@Base\*(R" n\(~ao ir\('a corresponder a nenhum dos padr\(~oes porque n\(~ao \('e um s\('imbolo \*(C+ v\('alido. .PP Em geral, todos os padr\(~oes s\(~ao divididos em dois grupos: aliases (basic \&\fIc++\fR e \fIsymver\fR) e padr\(~oes gen\('ericos (\fIregex\fR, todas as combina\(,c\(~oes de m\('ultiplos padr\(~oes b\('asicos). A correspond\(^encia de padr\(~oes b\('asicos baseados-em-alias \('e r\('apida (O(1)) enquanto que padr\(~oes gen\('ericos s\(~ao O(N) (N \&\- contagem de padr\(~ao gen\('erico) para cada s\('imbolo. Assim, \('e recomendado n\(~ao sobre-utilizar padr\(~oes gen\('ericos. .PP Quando m\('ultiplos padr\(~oes correspondem ao mesmo s\('imbolo real, os aliases (primeiro \fIc++\fR, depois \fIsymver\fR) s\(~ao preferidos sobre padr\(~oes gen\('ericos. Padr\(~oes gen\('ericos s\(~ao correspondidos pela ordem que s\(~ao encontrados no modelo de ficheiro de s\('imbolos at\('e ao primeiro sucesso. Por favor note, no entanto, esse reordenar manual das entradas no ficheiro modelo n\(~ao \('e recomendado porque \fBdpkg-gensymbols\fR gera diffs baseados na ordem alfanum\('erica dos seus nomes. .SS "Usando inclus\(~oes" .IX Subsection "Usando inclus\(~oes" Quando o conjunto de s\('imbolos exportados difere entre arquitecturas, pode tornar-se ineficiente usar um \('unico ficheiro de s\('imbolos. Nesses casos, uma directiva de inclus\(~ao pode provar ser \('util de v\('arias maneiras: .IP "\(bu" 4 Voc\(^e pode factorizar a parte comum em algum ficheiro externo e incluir esse ficheiro no seu ficheiro \fIpackage\fR.symbols.\fIarch\fR ao usar uma directiva de inclus\(~ao como esta: .Sp .Vb 1 \& #include "I.symbols.common" .Ve .IP "\(bu" 4 A directiva de inclus\(~ao pode tamb\('em ser etiquetada como qualquer s\('imbolo: .Sp .Vb 1 \& (tag|...|tagN)#include "file\-to\-include" .Ve .Sp Como resultado, todos os s\('imbolos inclu\('idos de \fIfile-to-include\fR ser\(~ao considerados para serem etiquetados com \fItag\fR ... \fItagN\fR por predefini\(,c\(~ao. Voc\(^e pode usar esta funcionalidade para criar um ficheiro \&\fIpackage\fR.symbols comum que inclui ficheiros de s\('imbolos espec\('ificos de arquitectura: .Sp .Vb 4 \& common_symbol1@Base 1.0 \& (arch=amd64 ia64 alpha)#include "package.symbols.64bit" \& (arch=!amd64 !ia64 !alpha)#include "package.symbols.32bit" \& common_symbol2@Base 1.0 .Ve .PP Os ficheiros de s\('imbolos s\(~ao lidos linha a linha, e as directivas de inclus\(~ao s\(~ao processadas assim que s\(~ao encontradas. Isto significa que o conte\('udo do ficheiro inclu\('ido pode sobrepor qualquer conte\('udo que apareceu antes da directiva de inclus\(~ao e que qualquer conte\('udo ap\('os a directiva pode sobrepor qualquer coisa contida no ficheiro inclu\('ido. Qualquer s\('imbolo (ou mesmo outra directiva #include) no ficheiro inclu\('ido pode especificar etiquetas adicionais ou sobrepor valores das etiquetas herdadas e a sua especifica\(,c\(~ao de etiqueta. Contudo, n\(~ao existe maneira do s\('imbolo remover qualquer das etiquetas herdadas. .PP Um ficheiro inclu\('ido pode repetir a linha de cabe\(,calho que cont\('em o \s-1SONAME\s0 da biblioteca. Nesse caso, sobrep\(~oe qualquer linha de cabe\(,calho lida anteriormente. No entanto, geralmente \('e melhor duplicar as linhas de cabe\(,calho. Um modo de fazer isto \('e o seguinte: .PP .Vb 2 \& #include "libsomething1.symbols.common" \& arch_specific_symbol@Base 1.0 .Ve .SH "VEJA TAMB\('EM" .IX Header "VEJA TAMB\('EM" \&\fBdeb-symbols\fR(5), \fBdpkg-shlibdeps\fR(1), \fBdpkg-gensymbols\fR(1). .SH "TRADU\(,C\(~AO" .IX Header "TRADU\(,C\(~AO" Am\('erico Monteiro .PP Se encontrar algum erro na tradu\(,c\(~ao deste documento, por favor comunique para Am\('erico Monteiro .