Articulo de referencia

a.fuera

a.out es un formato de archivo utilizado en versiones anteriores de sistemas operativos de computadoras similares a Unix para ejecutables , código objeto y, en sistemas posterio...

a.out es un formato de archivo utilizado en versiones anteriores de sistemas operativos de computadoras similares a Unix para ejecutables , código objeto y, en sistemas posteriores, bibliotecas compartidas . Esta es una forma abreviada de " salida de ensamblador ", el nombre de archivo de la salida del ensamblador PDP-7 de Ken Thompson . [1] El término se aplicó posteriormente al formato del archivo resultante para contrastar con otros formatos de código objeto.

"a.out" sigue siendo el nombre de archivo de salida predeterminado para los ejecutables creados por ciertos compiladores y enlazadores cuando no se especifica ningún nombre de salida, incluso aunque los archivos creados en realidad no estén en el formato a.out. [2]

La compatibilidad con el formato a.out quedó obsoleta en la versión 5.1 del kernel de Linux , y la compatibilidad con el formato se eliminó en las versiones 5.18 y 5.19 del kernel. [3] [4] [5]

Historia

En la primera edición de UNIX apareció un formato a.out para el PDP-7 , similar al formato a.out utilizado en el PDP-11 . [6] Fue reemplazado por el formato COFF en AT&T Unix System V , que a su vez fue reemplazado por el formato ELF en System V Release 4. Los archivos a.out se identifican con los números mágicos con códigos octales 0407, 0410 o 0413. [7]

MINIX 3 cambió a ELF en la versión 3.2.0 de febrero de 2012.

Linux también utilizó a.out sólo hasta el kernel 1.2 (marzo de 1995), cuando fue reemplazado por ELF también para esa plataforma. [8] El soporte de ELF se agregó en el kernel experimental 1.1.52. La transición de Linux a ELF fue más o menos forzada debido a la naturaleza compleja de construir bibliotecas compartidas a.out en esa plataforma, que incluía la necesidad de registrar el espacio de direcciones virtuales en el que se encontraba la biblioteca con una autoridad central, ya que el ld.so de a.out en Linux no podía reubicar bibliotecas compartidas. [9]

Debido a que las cadenas de herramientas de compilación modernas no producían archivos a.out y las instalaciones para el formato sufrían de una pérdida de bits , el formato de archivo a.out en Linux quedó obsoleto con el lanzamiento de la versión 5.1 del núcleo. El soporte para el formato se eliminó de las arquitecturas DEC Alpha y Motorola 68000 , que fueron las últimas arquitecturas que lo usaron, en la versión 5.18. El soporte para a.out en la arquitectura x86 se eliminó por completo en la versión 5.19. [3] [10] [4] [11] [5] [12]

Aunque Berkeley Unix siguió utilizando el formato a.out durante algún tiempo, los sistemas BSD modernos han cambiado desde entonces a ELF. NetBSD/i386 cambió formalmente de a.out a ELF en su versión 1.5 en diciembre de 2000. FreeBSD/i386 cambió a ELF como formato estándar durante la transición de 2.2 a 3.0 en 1998, sin embargo el soporte para a.out permaneció en el sistema. [13] Las diversas variantes de BSD pudieron seguir utilizando binarios a.out mucho después de que Linux se viera obligado a cambiar a ELF, debido a la naturaleza algo más flexible del formato a.out de BSD en comparación con el de Linux. [14] [15]

Depuración

La compatibilidad de a.out con la información de depuración se realiza mediante el uso de entradas especiales en la tabla de símbolos denominadas "stabs" . El formato "stabs" también se ha utilizado en muchas variantes de COFF y ELF .

Véase también

Referencias

  1. ^ Ritchie (1993): "El ensamblador PDP-7 de Thompson superó incluso al de DEC en simplicidad; evaluaba expresiones y emitía los bits correspondientes. No había bibliotecas, ni cargador ni editor de enlaces: se presentaba al ensamblador todo el código fuente de un programa, y ​​el archivo de salida (con un nombre fijo) que surgía era directamente ejecutable. (Este nombre, a.out, explica un poco la etimología de Unix; es la salida del ensamblador. Incluso después de que el sistema obtuviera un enlazador y un medio para especificar otro nombre explícitamente, se mantuvo como el resultado ejecutable predeterminado de una compilación.)"
  2. ^ Wood, Rupert (8 de abril de 2002). "Qué hacer con a.out". gcc-help (lista de correo) . Consultado el 28 de abril de 2007 .
  3. ^ ab "El kernel de Linux finalmente deja de admitir A.out". Phoronix . Consultado el 1 de septiembre de 2020 .
  4. ^ ab "Linux planea dejar de ofrecer compatibilidad con a.out en Alpha y M68k para ver si a alguien le importa - Phoronix". www.phoronix.com . Consultado el 25 de agosto de 2024 .
  5. ^ ab "Linux 5.19 finalmente elimina el soporte obsoleto de a.out x86 - Phoronix". www.phoronix.com . Consultado el 25 de agosto de 2024 .
  6. ^ Ritchie, Dennis (3 de noviembre de 1971). a.out – ensamblador y editor de enlaces (PDF) . Bell Labs . Consultado el 24 de noviembre de 2006 .
  7. ^ "Página a.out de la Sección 5 del manual de Unix 8th". man.cat-v.org . Consultado el 12 de octubre de 2022 .
  8. ^ Barlow, Daniel (14 de julio de 1996). "The Linux ELF HOWTO (v1.29)". Archivado desde el original el 13 de julio de 2004. Consultado el 28 de marzo de 2008 .
  9. ^ Drepper, Ulrich (20 de agosto de 2006). Cómo escribir bibliotecas compartidas (PDF) (Informe técnico). 4.0. Sección 1.1 (Un poco de historia). Archivado (PDF) desde el original el 16 de junio de 2007. Consultado el 20 de junio de 2007. Al introducir bibliotecas compartidas , se tuvieron que tomar ciertas decisiones de diseño para trabajar con las limitaciones de a.out. (...) Por todas estas razones y más, Linux se convirtió pronto a utilizar ELF (Executable Linkage Format) como formato binario.
  10. ^ Petkov, Borislav (5 de marzo de 2019). "x86: Desaprobar el soporte a.out" . Consultado el 5 de marzo de 2019 . Linux admite binarios ELF desde hace unos 25 años. El volcado de núcleo de a.out se ha deteriorado bastante y necesitaría algunas correcciones para que vuelva a funcionar, pero considerando que incluso las cadenas de herramientas no pueden crear ejecutables a.out en su configuración predeterminada, desaprobemos el soporte a.out y eliminémoslo un par de versiones más adelante.
  11. ^ Biederman, Eric W. (9 de marzo de 2022). "a.out: Dejar de crear compatibilidad con a.out/osf1 en alpha y m68k" . Consultado el 25 de agosto de 2024 . Veamos si a alguien le importa la compatibilidad con a.out en las dos últimas arquitecturas que la crean, deshabilitando la creación de la compatibilidad en Kconfig.
  12. ^ Petkov, Borislav (11 de abril de 2022). "x86: Eliminar compatibilidad con a.out" . Consultado el 25 de agosto de 2024 . La confirmación eac616557050 ("x86: Deprecate a.out support") desaprobó la compatibilidad con a.out con la promesa de eliminarla un par de versiones más adelante. Esa confirmación se publicó en la versión 5.1. Ahora, después de más de un par de versiones, nadie se ha quejado, así que elimínenla.
  13. ^ Lucas, Michael W. (2019). Absolute FreeBSD: la guía completa de FreeBSD (3.ª ed.). San Francisco. pág. 408. ISBN 9781593278922.{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  14. ^ Youngdale, Eric (1 de abril de 1995). "El formato de archivo de objetos ELF: Introducción". Archivado desde el original el 10 de marzo de 2009. Consultado el 6 de mayo de 2012. (...) no es imposible diseñar implementaciones de bibliotecas compartidas que funcionen con a.out. Las bibliotecas compartidas actuales de Linux son ciertamente un ejemplo; otro ejemplo son las bibliotecas compartidas de estilo SunOS que actualmente utiliza BSD-du-jour. Las bibliotecas compartidas de estilo SunOS contienen muchos de los mismos conceptos que las bibliotecas compartidas ELF (...)
  15. ^ "Mitos de BSD". Archivado desde el original el 17 de abril de 2007. Consultado el 10 de abril de 2007. No había razones apremiantes para cambiar antes. En particular, FreeBSD no tenía (y no tiene) los problemas para crear bibliotecas compartidas que impulsaron la conversión de Linux de a.out a ELF.
  • Ritchie, Dennis M. (20–23 de abril de 1993). El desarrollo del lenguaje C. Segunda conferencia sobre la historia de los lenguajes de programación SIGPLAN de la ACM (HOPL-II) . Cambridge, MA: ACM . pp. 201–208. doi :10.1145/154766.155580. ISBN . 0-89791-570-4.
Obtenido de "https://es.wikipedia.org/w/index.php?title=A.fuera&oldid=1247762928"