SINOPSIS
- ld
-
[-o
salida] fichobj...
[-Aarquitectura] [-b formato-entrada] [-Bstatic] [-Bdynamic] [-Bsymbolic] [-c fichórdenes] [--cref] [-d|-dc|-dp]
[-defsym símbolo = expresión] [-e entrada] [-embedded-relocs] [-E] [-export-dynamic] [-f nombre] [--auxiliary nombre] [-F nombre] [--filter nombre] [-format formato-entrada] [-g] [-G tamaño] [-h nombre] [-soname nombre] [--help] [-i] [-lar] [-Ldirbúsqueda] [-M] [-Map fichmapa] [-m emulación] [-n|-N] [-noinhibit-exec] [-no-keep-memory] [-no-warn-mismatch] [-oformat formato-salida] [-R nombrefichero] [-relax] [-r|-Ur] [-rpath directorio] [-rpath-link directorio] [-S] [-s] [-shared] [-sort-common] [-split-by-reloc número] [-split-by-file] [-T fichórdenes] [-Ttext textorg] [-Tdata dataorg] [-Tbss bssorg] [-t] [-u sím] [-V] [-v] [--verbose] [--version] [-warn-common] [-warn-constructors] [-warn-multiple-gp] [-warn-once] [-warn-section-align] [--whole-archive] [--no-whole-archive] [--wrap símbolo] [-X] [-x]
DESCRIPCIÓN
ld combina un número de ficheros objeto y archivos, reubica sus datos y enlaza referencias de símbolos. A menudo el último paso en el proceso de construcción de un nuevo programa compilado para su ejecución es una llamada a ld.ld acepta ficheros de Lenguaje de Órdenes de Enlazador para proporcionar control explícito y total sobre el proceso de enlazado. Esta página del Manual no describe el lenguaje de órdenes; consulte la entrada de menú `ld' en `Info', o el manual ld: El Enlazador de GNU , para todos los detalles sobre el lenguaje de órdenes y sobre otros aspectos del enlazador de GNU.
Esta versión de ld emplea las bibliotecas BFD de propósito general para operar sobre ficheros objeto. Esto permite a ld leer, combinar y escribir ficheros objetos en varios formatos diferentes: por ejemplo, COFF o a.out. Se pueden enlazar juntos formatos diferentes para producir cualquier clase disponible de fichero objeto. Uno puede emplear `objdump -i' para obtener una lista de los formatos soportados en varias arquitecturas; consulte objdump(1).
Aparte de su flexibilidad, el enlazador de GNU es más útil que otros enlazadores en la tarea de proporcionar información de diagnóstico. Muchos enlazadores abandonan la ejecución inmediatamente cuando encuentran un error; mientras sea posible, ld continúa ejecutándose, permitiéndole identificar otros errores (o, en algunos casos, obtener un fichero de salida a pesar del error).
El enlazador de GNU ld está diseñado para cubrir un amplio rango de situaciones, y para ser tan compatible como sea posible con otros enlazadores. Como resultado de esto, uno tiene muchas opciones para controlar su comportamiento a través de la línea de órdenes, y mediante variables de entorno.
OPCIONES
La enorme cantidad de opciones de la línea de órdenes puede parecer intimidatoria, pero en la práctica real pocas de ellas se emplean en cualquier contexto particular. Por ejemplo, un uso frecuente de ld es enlazar ficheros objetos normales de Unix en un sistema Unix normal y con soporte. En tal sistema, para enlazar un fichero hola.o:
$ ld -o salida /lib/crt0.o hola.o -lc
Esto le dice a ld que produzca un fichero llamado salida como resultado de enlazar el fichero /lib/crt0.o con hola.o y la biblioteca libc.a que vendrá de los directorios de búsqueda normales.
Las opciones de la línea de órdenes de ld se pueden dar en cualquier orden, y pueden repetirse a voluntad. Para la mayor parte de ellas, repetir una opción con un argumento diferente no tendrá ningún efecto posterior, o sustituirá a otras ocurrencias anteriores (aquéllas más a la izquierda en la línea de mandato) de la opción.
Las excepciones (que pueden emplearse más de una vez con sentido) son -A, -b (o su sinónimo -format), -defsym, -L, -l, -R, y -u.
La lista de ficheros objetos a enlazar juntos, mostrada como fichobj, puede seguir, preceder, o mezclarse, con las opciones de la línea de órdenes; salvo que un argumento fichobj no puede ponerse entre una letra de opción y su argumento.
Usualmente el enlazador se llama con al menos un fichero objeto, pero también se pueden especificar otras formas de ficheros de entrada binarios con -l, -R, y el guión de lenguaje de órdenes. Si no se especifica en absoluto ningún fichero binario como entrada, el enlazador no produce ninguna salida, y genera el mensaje `No input files', o sea, `ningún fichero de entrada'.
Los argumentos de opciones pueden seguir a la letra de la opción sin ningún espacio en blanco en medio, o pueden darse como argumentos separados que siguen inmediatamente a la opción que los requiere.
- -Aarquitectura
-
En la distribución actual de ld, esta opción sólo es de utilidad para la familia de arquitecturas
Intel 960. En esa configuración de ld, el argumento
arquitectura es uno de los nombres de dos letras que identifican a miembros de
la familia 960; la opción especifica el objetivo de salida deseado, y
avisos sobre culaquier instrucción incompatible en los ficheros de entrada.
También modifica la estrategia de búsqueda del enlazador para archivos
de biblioteca, para soportar el empleo de bibliotecas específicas a
cada arquitectura particular, incluyendo en el bucle de búsqueda
nombres con sufijos que identifican a la arquitectura.
Por ejemplo, si su línea de órdenes de ld incluyera `-ACA' así como `-lprobar', el enlazador buscaría (en sus caminos de búsqueda incorporados, y en cualesquiera otros que Ud. hubiera especificado con -L) una biblioteca con los nombres
probar
libprobar.a
probarca
libprobarca.a
Las primeras dos posibilidades se considerarían en cualquier caso; las dos últimas son debidas al empleo de `-ACA'.
Versiones futuras de ld podrían soportar una funcionalidad similar para otras familias de arquitecturas.
Uno puede usar con sentido -A más de una vez en una línea de órdenes, si una familia de arquitectura permite la combinación de arquitecturas objetivos; cada uso añadirá otro par de variantes de nombres a buscar para cuando -l especifique una biblioteca.
- -b formato-entrada
-
Especifica el formato binario para los ficheros objeto de entrada que
sigan a esta opción en la línea de órdenes. Uno normalmente no
necesita especificar esto, puesto que
ld está configurado para esperar como formato de entrada
predeterminado el más usual en cada máquina. formato-entrada es una cadena de texto, el nombre de un formato particular admitido
por las bibliotecas BDF.
-format formato-entrada tiene el mismo efecto, así como la orden de guión
TARGET.
Uno puede querer emplear esta opción si está enlazando ficheros con un
formato de binario no usual. Uno también puede emplear -b para cambiar entre formatos explícitamente (cuando
se enlacen ficheros objeto de formatos diferentes), incluyendo
-b formato-entrada antes de cada grupo de ficheros objeto en un formato particular.
El formato predeterminado se toma de la variable de entorno GNUTARGET. Uno también pude definir el formato de entrada desde un guión, empleando la orden TARGET.
- -Bstatic
-
No enlazar contra bibliotecas compartidas. Esto sólo tiene sentido en
plataformas que soporten bibliotecas compartidas.
- -Bdynamic
-
Enlaza contra bibliotecas dinámicas. Esto sólo tiene sentido en
plataformas que soporten bibliotecas compartidas. Esta opción
normalmente es la predeterminada en tales plataformas.
- -Bsymbolic
-
Cuando se cree una biblioteca compartida, enlazar referencias a
símbolos globales a la definición dentro de la biblioteca compartida,
si hay. Normalmente, para un programa enlazado contra una biblioteca
compartida es posible sustituir la definición dentro de la biblioteca
compartida. Esta opción sólo tiene sentido en plataformas ELF que
admitan bibliotecas compartidas.
- -c fichórdenes
-
Hace que ld lea órdenes de enlazado desde el fichero
fichórdenes. Estas órdenes sustituirán completamente al formato predeterminado
de enlazado de ld (en vez de añadir); fichórdenes debe especificar todo lo necesario para describir el formato objetivo.
Uno puede también incluir un guión de órdenes de enlazado directamente en la línea de órdenes encerrándolo entre llaves `{' y `}' .
- --cref
-
Muestra una tabla de referencias cruzadas. Si se está generando un
fichero de mapa de enlazado, la tabla de referencias cruzadas se
imprime en el fichero de mapa. Si no, en la salida estándar.
- -d
- -dc
- -dp
-
Estas tres opciones son equivalentes; se admiten las varias formas por
compatibilidad con otros enlazadores. Use cualquiera de ellas para
hacer que ld
asigne espacio para símbolos comunes incluso si se especifica un
fichero de salida reubicable (-r). La orden de guión
FORCE_COMMON_ALLOCATION tiene el mismo efecto.
- -defsym símbolo = expresión
-
Crea un símbolo global en el fichero de salida, conteniendo la
dirección absoluta dada por expresión. Uno puede emplear esta opción tantas veces como sea necesario
para definir múltiples símbolos en la línea de órdenes. Se entienden
unas pocas operaciones aritméticas en la expresión en este
contexto: uno puede dar una constante hexadecimal o el nombre de un
símbolo existente, o emplear
+ y - para añadir o sustraer constantes hexadecimales o símbolos. Si uno
necesita expresiones más elaboradas, considere el empleo del lenguaje
de órdenes del enlazador desde un guión.
- -e entrada
-
Usar entrada como el símbolo explícito para el comienzo de la ejecución de su
programa, en vez del punto de entrada predeterminado.
- -embedded-relocs
-
Esta opción sólo tiene sentido cuando se enlaza código MIPS con PIC
empotrado generado por la opción
-membedded-pic
del compilador y ensamblador de GNU. Hace que el enlazador cree una
tabla que puede emplearse en tiempo de ejecución para reubicar
cualquier dato que haya sido inicializado estáticamente a valores
puntero. Vea el código en
testsuite/ld-empic para más detalles.
- -E
- -export-dynamic
-
Cuando se cree un fichero ELF, añade todos los símbolos a la tabla
dinámica de símbolos. Normalmente, la tabla dinámica de símbolos
contiene solamente los símbolos que sean empleados por un objeto
dinámico. Esta opción se necesita para algunos usos de
dlopen.
- -f nombre
- --auxiliary nombre
-
Cuando se crea un objeto compartido ELF, establece el campo interno
DT_AUXILIARY al nombre especificado. Esto le dice al enlazador
dinámico que la tabla de símbolos del objeto compartido debería
emplearse como un filtro auxiliar en la tabla de símbolos del objeto compartido
nombre.
- -F nombre
- --filter nombre
-
Cuado se crea un objeto compartido ELF, establece el campo interno
DT_FILTER al nombre especificado. Esto le dice al enlazador dinámico
que la tabla de símbolos del objeto compartido debería emplearse como
un filtro en la tabla de símbolos del objeto compartido
nombre.
- -format formato-entrada
-
Sinónimo de -b input-format.
- -g
-
Se acepta pero no tiene efecto; se proporciona por compatibilidad con
otras herramientas.
- -G tamaño
-
Establece el tamaño máximo de objetos a ser optimizados empleando el
registro GP a
tamaño
bajo COFF de MIPS. Para otros formatos de fichero objeto no tiene efecto.
- -h nombre
- -soname nombre
-
Cuando se crea un objeto compartido ELF, establece el campo interno
DT_SONAME al nombre especificado. Cuando un ejecutable se enlaza con
un objeto compartido que tiene un campo DT_SONAME, entonces cuando el
ejecutable se ejecuta el enlazador dinámico intentará cargar el objeto
compartido especificado en el campo DT_SONAME en vez de emplear el
nombre de fichero dado al enlazador.
- --help
-
Muestra un resumen de las opciones de la línea de órdenes en la salida
estándar y acaba. Esta opción y
--version
empiezan con dos guiones en vez de uno por compatibilidad con otros
programas de GNU. Las otras opciones empiezan con un solo guión por
compatibilidad con otros enlazadores.
- -i
-
Efectúa un enlazado incremental (lo mismo que la opción -r).
- -lar
-
Añade un archivo ar a la lista de ficheros a enlazar. Esta opción puede emplearse
cualquier número de veces. ld buscará en su lista de caminos ocurrencias de libar.a para cada ar
especificado.
- -Ldirbúsqueda
-
Esta orden añade el camino dirbúsqueda a la lista de caminos donde
ld buscará archivos de biblioteca. Se puede emplear esta opción
cualquier número de veces.
El conjunto predeterminado de caminos buscados (sin especificar nada con -L) depende de qué modo de emulación esté ld empleando, y en algunos casos también en cómo haya sido configurado. Los caminos también pueden especificarse en un guión de enlazado con la orden SEARCH_DIR.
- -M
-
Muestra (en el fichero de la salida estándar) un mapa de enlazado:
información de diagnóstico sobre dónde se han asociado los símbolos
por ld, e información sobre asignación de almacenamiento común global.
- -Map fichmapa
-
Imprime en el fichero
fichmapa
un mapa de enlazado (vea la opción anterior).
- -m emulación
-
Emula el enlazador
emulación.
Puede listar las emulaciones disponibles con las opciones
--verbose
o
-V.
Esta opción sustituye a lo predeterminado compilado en el enlazador,
que es el sistema para el que se configuró
ld.
- -N
-
especifica legible y modificable para las secciones de texto y datos. Si el formato de salida admite números mágicos al estilo de Unix,
la salida se marca como OMAGIC.
Cuando uno emplea la opción `-N', el enlazador no alinea en páginas el segmento de datos.
- -n
-
establece que el segmento de texto sea de lectura exclusiva, y se
escribe NMAGIC si es posible.
- -noinhibit-exec
-
Normalmente, el enlazador no producirá un fichero de salida si
encuentra errores durante el proceso del enlazado. Con esta opción,
uno puede especificar que desea el fichero de salida incluso después
de producirse errores no fatales.
- -no-keep-memory
-
Normalmente el enlazador optimiza para mayor velocidad en detrimento
del uso de la memoria mediante el almacenamiento temporal de las
tablas de símbolos de los ficheros de entrada en memoria. Esta opción
le dice al enlazador que en lugar de eso optimice para uso de memoria,
releyendo las tablas de símbolos todas las veces que sean
precisas. Esto puede ser necesario si el enlazador se queda sin
memoria cuando enlace un ejecutable muy grande.
- -no-warn-mismatch
-
Normalmente el enlazador dará un error si uno intenta enlazar juntos
ficheros de entrada que por alguna razón no concuerden entre ellos,
quizá porque hayan sido compilados para procesadores diferentes o para
diferente sexo (orden de bits). Esta opción le dice al enlazador que
debería permitir tales errores sin decir nada. Esta opción sólo
debería emplearse con sumo cuidado, en casos donde uno haya tomado
alguna precaución especial que asegure que los errores del enlazador
sean inapropiados.
- -o salida
-
salida es el nombre para el programa producido por ld; si esta opción no se da, se emplea el nombre `a.out'. La orden de guión OUTPUT también puede especificar el nombre del fichero de salida.
- -oformato formato-salida
-
Especifica el formato binario para el fichero objeto de salida. Uno
usualmente no necesita especificarlo, puesto que
ld está configurado para producir como formato de salida
predeterminado el más usual en cada máquina. formato-salida es una cadena de texto, el nombre de un formato particular
soportado por las bibliotecas BFD.
La orden de guión
OUTPUT_FORMAT
también puede especificar el formato de salida, pero esta opción tiene
preferencia sobre esta orden.
- -R nombrefichero
-
Lee nombres de símbolos y sus direcciones desde nombrefichero, pero no
lo reubica ni lo incluye en la salida. Esto permite que su fichero de
salida se refiera simbólicamente a localizaciones absolutas de memoria
definidas en otros programas.
- -relax
-
Una opción con efectos dependientes de la máquina. Actualmente esta
opción sólo está soportada en el H8/300.
En algunas plataformas, emplee esta opción para efectuar optimizaciones globales que sean posibles cuando el enlazador resuelva direccionamiento en su programa, como modos de direccionamiento relajados y síntesis de nuevas instrucciones en el fichero objeto de salida.
En plataformas donde esto no esté soportado, `-relax' se acepta, pero no tiene efecto.
- -r
-
Genera salida reubicable; esto es, genera un fichero de salida que
puede a su vez servir como entrada a ld. Esto se denomina a menudo enlazado parcial.
Como un efecto colateral, en entornos que soporten números mágicos de
Unix, esta opción también establece el número mágico del fichero de
salida a
OMAGIC.
Si esta opción no se da, se produce un fichero absoluto. Cuando se
enlazan programas en C++, esta opción no resuelve referencias a
constructores; -Ur es una alternativa.
Esta opción hace lo mismo que -i.
- -rpath directorio
-
Añade un directorio a los caminos de búsqueda de las bibliotecas en
tiempo de ejecución. Esto se emplea cuando se enlaza un ejecutable ELF
con objetos compartidos. Todos los argumentos
-rpath
se concatenan y se pasan al enlazador de tiempo de ejecución, que los
usa para localizar objetos compartidos en tiempo de ejecución. La
opción
-rpath
también se emplea cuando se localizan objetos compartidos que son
necesitados por objetos compartidos incluidos explícitamente en el
enlace; vea la descripción de la opción
-rpath-link.
Si
-rpath
no se emplea cuando se enlace un ejecutable ELF, se usarán los
contenidos de la variable de entorno
LD_RUN_PATH
si está definida.
La opción -rpath tamibén se puede usar en SunOS. De forma predeterminada, en SunOS, el enlazador formará un camino de búsqueda en tiempo de ejecución a partir de todas las opciones -L que se le den. Si se emplea una opción -rpath, el camino de búsqueda en tiempo de ejecución se formará exclusivamente empleando las opciones -rpath, sin tener en cuenta las opciones -L. Esto puede ser de utilidad cuando se utilice gcc, que añade muchas opciones -L que pueden estar en sistemas montados por NFS.
- -rpath-link directorio
-
Cuando se usa ELF en SunOS, una biblioteca compartida puede requerir
otra. Esto sucede cuando un enlazado con
ld -shared
incluye una biblioteca compartida como uno de los ficheros de entrada.
Cuando el enlazador encuentra una dependencia como ésta cuando está haciendo un enlazado no compartido ni reubicable, automáticamente tratará de localizar la biblioteca compartida requerida e incluirla en el enlace, si no se incluye explícitamente. En tal caso, la opción -rpath-link especifica el primer conjunto de directorios a buscar. La opción -rpath-link puede especificar una secuencia de nombres de directorio bien especificando una lista de nombres separados por dos puntos, o apareciendo varias veces.
Si la biblioteca compartida requerida no se halla, el enlazador mostrará un aviso y seguirá con el enlazado.
- -S
-
Omite información de símbolos (pero no de todos) para el depurador en
el fichero de salida.
- -s
-
Omite toda la información de símbolos en el fichero de salida (``strip'').
- -shared
-
Crea una biblioteca compartida. Esto actualmente sólo se soporta en
plataformas ELF y SunOS (en SunOS no se requiere, puesto que el
enlazador automáticamente creará una biblioteca compartida cuando haya
símbolos no definidos y no se use la opción
-e).
- -sort-common
-
Normalmente, cuando
ld
pone los símbolos globales comunes en las secciones de salida
apropiadas, las ordena por tamaño. Primero pone todos los símbolos de
un byte, luego todos los de dos bytes, después todos los de cuatro
bytes, y por último todos los demás. Esto es para prevenir huecos
entre los símbolos debidos a impedimentos de alineamiento. Esta opción
deshabilita esa ordenación.
- -split-by-reloc núm
-
Intenta crear secciones extra en el fichero de salida de forma que
ninguna sección simple en el fichero contenga más de
núm
reubicaciones.
Esto es útil cuando se genere un reubicable enorme para descargarlo a
ciertos núcleos de tiempo real con el formato de fichero objeto COFF,
puesto que COFF no puede representar más de 65535 reubicaciones en una
sola sección.
Observe que esto no funcionará con formatos de fichero objeto que no
admitan secciones arbitrarias. El enlazador no dividirá secciones de
entrada individuales para la redistribución, de forma que si una sola
sección de entrada contiene más de
núm
reubicaciones una sección de salida contendrá esas mismas reubicaciones.
- -split-by-file
-
Similar a
-split-by-reloc
pero crea una nueva sección de salida para cada fichero de entrada.
- -Tbss org
- -Tdata org
- -Ttext org
-
Usa org como la dirección de comienzo para ---respectivamente--- el
segmento de
bss, datos, o el de texto del fichero de salida.
org debe ser un entero hexadecimal.
- -T fichórdenes
-
Equivalente a -c fichórdenes; admitido por compatibilidad con otras herramientas.
- -t
-
Muestra los nombres de los ficheros de entrada tan pronto como ld los procesa.
- -u sím
-
Fuerza a que sím entre en el fichero de salida como un símbolo no definido.
Esto puede, por ejemplo, activar el enlazado de módulos adicionales
desde las bibliotecas estándar. -u puede repetirse con diferentes argumentos opciones
para introducir símbolos no definidos adicionales.
- -Ur
-
Para programas no C++, esta opción equivale a
-r: genera salida reubicable; esto es, un fichero de salida que puede
a su vez servir de entrada a ld. Cuando se enlazan programas en C++, -Ur
sí resolverá referencias a constructores, no como -r.
- --verbose
-
Muestra el número de versión de ld
y lista las emulaciones soportadas.
Muestra qué ficheros de entrada pueden y no pueden abrirse.
- -v, -V
-
Muestra el número de versión de ld.
La opción
-V
también lista las emulaciones soportadas.
- --version
-
Muestra el número de versión de ld
y acaba.
- -warn-common
-
Avisa cuando un símbolo común se combina con otro símbolo común o con
una definición de símbolo. Los enlazadores de Unix permiten esta
práctica algo discutible, pero los de otros sistemas operativos no. Esta opción le
permite encontrar problemas potenciales provenientes de combinar
símbolos globales.
- -warn-constructors
-
Avisa si se emplea algún constructor global. Esto sólo es de utilidad
para unos pocos formatos de ficheros objeto. Para formatos como COFF o
ELF, el enlazador no puede detectar el empleo de constructores globales.
- -warn-multiple-gp
-
Avisa si el fichero de salida requiere múltiples valores de punteros
globales. Esta opción sólo tiene sentido en ciertos procesadores, como
en los Alpha.
- -warn-once
-
Sólo avisa una vez para cada símbolo indefinido, en lugar de una vez
por cada módulo que lo referencia.
- -warn-section-align
-
Avisa si la dirección de una sección de salida cambia debido al
alineamiento. Normalmente, el alineamiento se establecerá por medio de
una sección de entrada. La dirección cambiará solamente si no se
especifica explícitamente; esto es, si la orden SECTIONS no especifica
una dirección de comienzo para la sección.
- --whole-archive
-
Para cada archivo mencionado en la línea de órdenes tras la opción
--whole-archive,
incluye cada fichero objeto en el archivo en el enlazado, en vez de
buscar en el archivo los ficheros objeto requeridos. Esto se emplea
normalmente para convertir un fichero archivo en una biblioteca
compartida, forzando la inclusión de cada objeto en la biblioteca
compartida resultante.
- --no-whole-archive
-
Desactiva el efecto de la opción
--whole-archive
para archivos que aparecen después en la línea de órdenes.
- --wrap símbolo
-
Usa una función envoltorio para
símbolo.
Cualquier referencia indefinida a
símbolo
se resolverá a __wrap_símbolo.
Cualquier referencia indefinida a __real_símbolo se resolverá
a
símbolo.
- -X
-
Borra todos los símbolos locales temporales. Para la mayoría de
objetivos, éstos son todos los símbolos locales cuyos nombres empiecen
por `L'.
- -x
-
Borra todos los símbolos locales.
ENTORNO
Uno puede cambiar el comportamiento de ld con la variable de entorno GNUTARGET.GNUTARGET determina el formato del fichero objeto de entrada si uno no emplea -b (o su sinónimo -format). Su valor debería ser uno de los nombres BFD de un formato de entrada. Si no existe GNUTARGET en el entorno, ld emplea el formato natural del anfitrión. Si GNUTARGET se establece al valor default, entonces BFD intenta descubrir el formato examinando los ficheros binarios de entrada; este método a menudo tiene éxito, pero hay ambigüedades potenciales, puesto que no hay ningún método que nos asegure que el número mágico empleado para marcar formatos de ficheros objeto sea único. Sin embargo, el procedimiento de configuración para BFD en cada sistema pone el formato convencional para ese sistema en primer lugar en la lista de búsqueda, de forma que las ambigüedades se resuelvan a favor del convenio.
DERECHOS DE COPIA
Copyright (c) 1991, 1992 Free Software Foundation, Inc.Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.
N. del T.: Sólo tiene validez legal el aviso de copyright original.