Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

a.out

From Wikipedia, the free encyclopedia
Old Unix executable file format

a.out
Filename extension
none,.o,.so,.out
Magic number0407,0410,0413 (in octal);0107,0108,010B (in hexadecimal)
Developed byAT&T
Type of formatBinary,executable,object,shared libraries

a.out is afile format used in older versions ofUnix-like computeroperating systems forexecutables,object code, and, in later systems,shared libraries. This is an abbreviated form of "assembler output", the filename of the output ofKen Thompson'sPDP-7 assembler.[1] The term was subsequently applied to the format of the resulting file to contrast with other formats for object code.

"a.out" remains the default output file name for executables created by certaincompilers andlinkers when no output name is specified, even though the created files actually are not in the a.out format, but often inELF.[2]

Support for thea.out format was deprecated inLinux kernel version 5.1, and support for the format was removed across the 5.18 and 5.19 kernel releases.[3][4][5]

History

[edit]

Ana.out format for thePDP-7, similar to thea.out format used on thePDP-11, appeared in the first edition of UNIX.[6]It was superseded by theCOFF format inAT&T Unix System V, which was in turn superseded by theELF format inSystem V Release 4.a.out files are identified by themagic numbers withoctal codes 0407, 0410 or 0413.[7]

MINIX 3 switched to ELF in the 3.2.0 release of February 2012.

Linux also useda.out only until kernel 1.2 (Mar. 1995), when it was superseded by ELF for that platform as well.[8] ELF support was added in the experimental 1.1.52 kernel. Linux's transition to ELF was more or less forced due to the complex nature of buildinga.out shared libraries on that platform, which included the need to register the virtual address space at which the library was located with a central authority, as thea.outld.so in Linux was unable torelocate shared libraries.[9]

Because modern compiler toolchains did not producea.out files, and facilities for the format were suffering frombit rot, thea.out file format on Linux was deprecated with the release of the kernel version 5.1. Support for the format was removed from theDEC Alpha andMotorola 68000 architectures, which were the last architectures that used it, in version 5.18. Support fora.out in the x86 architecture was removed completely in version 5.19.[3][10][4][11][5][12]

ThoughBerkeley Unix continued using thea.out format for some time, modern BSD systems have since switched to ELF.NetBSD/i386 switched formally froma.out to ELF in its 1.5 release in December 2000.FreeBSD/i386 switched to ELF as a standard format during the 2.2 to 3.0 transition in 1998, however support fora.out remained in the system.[13] The various BSD flavors were able to continue usinga.out binaries long after Linux was forced to switch to ELF, due to the somewhat more flexible nature of the BSDa.out format compared to that of Linux.[14][15]

Debugging

[edit]

Thea.out support fordebug information is done through the use of special entries in the symbol table calledstabs. The stabs format has also been used in manyCOFF andELF variations.

See also

[edit]

References

[edit]
  1. ^Ritchie (1993): "Thompson's PDP-7 assembler outdid even DEC's in simplicity; it evaluated expressions and emitted the corresponding bits. There were no libraries, no loader or link editor: the entire source of a program was presented to the assembler, and the output file—with a fixed name—that emerged was directly executable. (This name,a.out, explains a bit of Unix etymology; it is the output of the assembler. Even after the system gained a linker and a means of specifying another name explicitly, it was retained as the default executable result of a compilation.)"
  2. ^Wood, Rupert (8 April 2002)."What to do with a.out".gcc-help (Mailing list). Retrieved28 April 2007.
  3. ^ab"Linux Kernel Finally Deprecating A.out Support".Phoronix. Retrieved1 September 2020.
  4. ^ab"Linux Plans To Stop Building a.out Support On Alpha & M68k To See If Anyone Cares - Phoronix".www.phoronix.com. Retrieved25 August 2024.
  5. ^ab"Linux 5.19 Finally Removes Obsolete x86 a.out support - Phoronix".www.phoronix.com. Retrieved25 August 2024.
  6. ^Ritchie, Dennis (3 November 1971).a.out – assembler and link editor output(PDF).Bell Labs. Retrieved24 November 2006.
  7. ^"a.out page from Section 5 of the unix 8th manual".man.cat-v.org. Retrieved12 October 2022.
  8. ^Barlow, Daniel (14 July 1996)."The Linux ELF HOWTO (v1.29)". Archived fromthe original on 13 July 2004. Retrieved28 March 2008.
  9. ^Drepper, Ulrich (20 August 2006).How To Write Shared Libraries(PDF) (Technical report). 4.0. Section 1.1 (A Little Bit of History).Archived(PDF) from the original on 16 June 2007. Retrieved20 June 2007.When introducing shared libraries certain design decisions had to be made to work in the limitations of a.out. (...) For all these reasons and more, Linux converted early on to using ELF (Executable Linkage Format) as the binary format.
  10. ^Petkov, Borislav (5 March 2019)."x86: Deprecate a.out support". Retrieved5 March 2019.Linux supports ELF binaries for ~25 years now. a.out coredumping has bitrotten quite significantly and would need some fixing to get it into shape again but considering how even the toolchains cannot create a.out executables in its default configuration, let's deprecate a.out support and remove it a couple of releases later, instead.
  11. ^Biederman, Eric W. (9 March 2022)."a.out: Stop building a.out/osf1 support on alpha and m68k". Retrieved25 August 2024.Let's see if anyone cares about a.out support on the last two architectures that build it, by disabling the build of the support in Kconfig.
  12. ^Petkov, Borislav (11 April 2022)."x86: Remove a.out support". Retrieved25 August 2024.Commit eac616557050 ("x86: Deprecate a.out support") deprecated a.out support with the promise to remove it a couple of releases later. That commit landed in v5.1. Now it is more than a couple of releases later, no one has complained so remove it.
  13. ^Lucas, Michael W. (2019).Absolute FreeBSD : the complete guide to FreeBSD (3rd ed.). San Francisco. p. 408.ISBN 9781593278922.{{cite book}}: CS1 maint: location missing publisher (link)
  14. ^Youngdale, Eric (1 April 1995)."The ELF Object File Format: Introduction".Archived from the original on 10 March 2009. Retrieved6 May 2012.(...) it is not impossible to design shared library implementations that work with a.out. The current Linux shared libraries are certainly one example; another example is SunOS-style shared libraries which are currently used by BSD-du-jour. SunOS-style shared libraries contain a lot of the same concepts as ELF shared libraries (...)
  15. ^"BSD Myths".Archived from the original on 17 April 2007. Retrieved10 April 2007.There were no pressing reasons to switch earlier. In particular, FreeBSD did not (and does not) have the problems building shared libraries that spurred the Linux conversion from a.out to ELF.

Further reading

[edit]

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=A.out&oldid=1324310119"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp