Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Старый формат исполняемых файлов Unix
Old Unix executable file format
a.out — это формат файла, используемый в более ранних версиях Unix-подобных операционных систем для исполняемых файлов, объектного кода и, в более поздних системах, общих библиотек. Это сокращенная форма от "assembler output" – имени файла вывода ассемблера PDP-7, разработанного Кеном Томпсоном. Позже этот термин стали применять к формату результирующего файла, чтобы отличать его от других форматов объектного кода. "a.out" по-прежнему остается именем файла по умолчанию для исполняемых файлов, создаваемых некоторыми компиляторами и компоновщиками, если не указано другое имя, хотя создаваемые файлы на самом деле могут быть не в формате a.out. Поддержка формата a.out была удалена в версии ядра Linux 5.18.
a. out is a file format used in older versions of Unix like computer operating systems for executables, object code, and, in later systems, shared libraries. This is an abbreviated form of "assembler output", the filename of the output of Ken Thompson's PDP 7 assembler. 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 certain compilers and linkers when no output name is specified, even though the created files actually are not in the a. out format. Support for the a. out format was removed in Linux kernel version 5.18.
История
Формат a.out для PDP 7, аналогичный формату a.out, используемому на PDP 11, появился в первом издании UNIX. Он был вытеснен форматом COFF в AT&T Unix System V, который, в свою очередь, был вытеснен форматом ELF в System V Release 4. Файлы a.out идентифицируются магическими числами с октальными кодами 0407, 0410 или 0413. Хотя Berkeley Unix продолжала использовать формат a.out некоторое время, современные системы BSD впоследствии перешли на ELF. NetBSD/i386 официально перешла с a.out на ELF в выпуске 1.5 (декабрь 2000 года). FreeBSD/i386 перешла на ELF в качестве стандартного формата во время перехода с 2.2 на 3.0 в 1998 году, однако поддержка a.out осталась в системе. MINIX 3 перешла на ELF в выпуске 3.2.0 (февраль 2012 года). Linux также использовал a.out только до ядра 1.2 (март 1995 года), когда он был заменен ELF и для этой платформы. Поддержка ELF была добавлена в экспериментальном ядре 1.1.52. Переход Linux на ELF был в значительной степени вынужден из-за сложности создания разделяемых библиотек на этой платформе, что включало необходимость регистрации виртуального адресного пространства, в котором располагалась библиотека, в централизованном органе, поскольку a.out ld.so в Linux не мог перемещать разделяемые библиотеки. Различные варианты BSD смогли продолжать использовать исполняемые файлы a.out спустя долгое время после того, как Linux был вынужден перейти на ELF, благодаря несколько более гибкому характеру формата a.out BSD по сравнению с форматом Linux. Формат файла a.out в Linux был объявлен устаревшим с выпуском ядра Linux 5.1, а последние части кода, обрабатывающие его, были удалены в версии 5.18.
An a. out format for the PDP 7, similar to the a. out format used on the PDP 11, appeared in the first edition of UNIX. It was superseded by the COFF format in AT&T Unix System V, which was in turn superseded by the ELF format in System V Release 4. a. out files are identified by the magic numbers with octal codes 0407, 0410 or 0413. Though Berkeley Unix continued using the a. out format for some time, modern BSD systems have since switched to ELF. NetBSD/i386 switched formally from a. out to ELF in its 1.5 release (Dec. 2000). FreeBSD/i386 switched to ELF as a standard format during the 2.2 to 3.0 transition in 1998, however support for a. out remained in the system. MINIX 3 switched to ELF in the 3.2.0 release (Feb. 2012). Linux also used a. out only until kernel 1.2 (Mar. 1995), when it was superseded by ELF for that platform as well. 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 building a. 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 the a. out ld. so in Linux was unable to relocate shared libraries. The various BSD flavors were able to continue using a. out binaries long after Linux was forced to switch to ELF, due to the somewhat more flexible nature of the BSD a. out format compared to that of Linux. The a. out file format on Linux was deprecated with the release of the 5.1 Linux kernel and the last parts of source code handling it were removed in 5.18.
Очистка
Поддержка вывода отладочной информации осуществляется посредством специальных записей в таблице символов, называемых stabs. Формат stabs также использовался во многих вариантах COFF и ELF.
The a. out support for debug information is done through the use of special entries in the symbol table called stabs. The stabs format has also been used in many COFF and ELF variations.