References

09/03/2001 6:27 pm


GNU tools (PDF files converted from CVS)

GNU1. Richard M. Stallman "Using and Porting the GNU Compiler Collection" 2.8MB

This is a PDF file converted from gcc.texi in the gcc v3.1 CVS tree. There is a valuable section "Extensions to the C Language Family", you should read (especially about __attribute__ specifier). Stallman also contributed an interesting section entitled "Linux and the GNU Project".

GNU2. Richard M. Stallman and Zachary Weinberg "The C Preprocessor" 368KB

This is a PDF file converted from cpp.texi in the gcc v3.1 CVS tree.

GNU3. Roland H. Pesch, Jeffrey M. Osier, and Cygnus Support "The gnu Binary Utilities" 312KB

This is a PDF file converted from binutils.texi in the binutils CVS tree (Version 2.11.90).

GNU4. Roland Pesch "GASP, an assembly preprocessor" 212KB

This is a PDF file converted from gasp.texi in the binutils CVS tree (Version 1).

GNU5. Dean Elsner, Jay Fenlason & friends "Using as (GNU assembler)" 1MB

This is a PDF file converted from as.texinfo in the binutils CVS tree (Version 2.11.90).

GNU6. Steve Chamberlain Ian Lance Taylor "Using ld (GNU linker)" 500KB

This is a PDF file converted from ld.texinfo in the binutils CVS tree (Version 2.11.90). I believe that "Linker scripts" section would be most informative to system programmers.

GNU7. Per Bothner, Steve Chamberlain, Ian Lance Taylor, DJ Delorie, and Cygnus Support "A guide to the internals of the GNU linker" 128KB

This is a PDF file converted from ldint.texinfo in the binutils CVS tree. This manuscript describes the linker emulation in details.

GNU8. Steve Chamberlain and Cygnus Support "libbfd, the Binary File Descriptor Library" 640KB

This is a PDF file converted from bfd.texinfo in the binutils CVS tree (BFD Version < 3.0).

GNU9. Jay Fenlason and Richard Stallman "GNU gprof (GNU profiler)" 240KB

This is a PDF file converted from gprof.texi in the binutils CVS tree.

GNU10. Neil Booth "Cpplib Internals (the core of the GNU C Preprocessor)" 88KB

This is a PDF file converted from cppinternals.texi in the binutils CVS tree.


Assembly programming

ASM1. "Linux Assembly"

If you are interested in assembly programming, this site is the first place to visit.

ASM2. Brian Raiter : "A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux"

One of the most execellent programming articles I've ever read. Brian clearly presents the essence of executable file. It's really an exciting story. He says, "Size is everything!".

ASM3. "NASM - The Netwide Assembler Project - FREE 80x86 assembler"

NASM is a worldwide free x86 assembler. It's syntax is based on Intel format and can handle both of 16 bits / 32 bits addressing modes. If you hate AT&T syntax, NASM would be your partner.

ASM4. Konstantin Boldyshev "Startup state of Linux/i386 ELF binary"

This is a valuable article explaining an initial stack layout of ELF binary at startup.

ASM5. Bjorn Chambless : "Linux Assembly Tutorial, CS 200"

General introductions.

ASM6. Brennan Underwood : "Brennan's Guide to Inline Assembly"

ASM7. "DJGPP QuickAsm Programming Guide"

GCC inline assembly syntax is a nightmare. These articles may help you.


Binary format

BIN1. "Executable and Linking Format (ELF)" 149KB Tool Interface Standards, Protable Formats Specification, Ver 1.1

This file is the bible of ELF and describes every data structure in it. Dynamic linking and loading sections, however, are quite hard to understand...

BIN2. Hongjiu Lu : "ELF:From the Programmer's Perspective" 187KB May 17, 1995

This article reveals the meanings of .ctors, .dtors, .init, .fini sections and .crti.o, .crtbegin.o, .crtend.o, .crtn.o object files. Their explanations are not appeared in the above reference (BIN1). You can also find sample source listings for dynamic loading.

BIN3. "Microsoft Portable Executable and Common Object File Format Specification" Microsoft Corp.

Currently ELF is dominant in UNIX environemt, but COFF is still using in some restricted areas. The latter format is something outdated, but it is light and ease to be implemented.COFF has been employed in Windows NT, and Microsoft had published this definitive article.

BIN4. "DJGPP COFF spec"

Another COFF format reference in DJGPP.


Unordered yet
Ford B. et al. "Multiboot specification"

Specification note of multiboot, which is adabpted by the famous loader GNU Grub.