123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- .text
- .code32
- .arch i386
- .section ".prefix", "a", @progbits
- .org 0x00
-
- /* DOS (.com) header
- *
- * EFI executables seem to leave most of this empty
- */
- mzhdr:
- .ascii "MZ" /* Magic number */
- .word 0 /* Bytes on last page of file */
- .word 0 /* Pages in file */
- .word 0 /* Relocations */
- .word 0 /* Size of header in paragraphs */
- .word 0 /* Minimum extra paragraphs needed */
- .word 0 /* Maximum extra paragraphs needed */
- .word 0 /* Initial (relative) SS value */
- .word 0 /* Initial SP value */
- .word 0 /* "Checksum" */
- .word 0 /* Initial IP value */
- .word 0 /* Initial (relative) CS value */
- .word 0 /* File address of relocation table */
- .word 0 /* Ovesrlay number */
- .word 0, 0, 0, 0 /* Reserved words */
- .word 0 /* OEM identifier (for e_oeminfo) */
- .word 0 /* OEM information; e_oemid specific */
- .word 0, 0, 0, 0, 0 /* Reserved words */
- .word 0, 0, 0, 0, 0 /* Reserved words */
- .long pehdr_lma /* File address of new exe header */
- .size mzhdr, . - mzhdr
-
- /* PE header */
- .org 0xc0 /* For compatibility with MS toolchain */
- pehdr:
- .ascii "PE\0\0" /* Magic number */
- .word 0x014c /* CPU architecture: i386 */
- .word num_pe_sections /* Number of sections */
- .long 0x10d1a884 /* Timestamp */
- .long 0 /* Symbol table */
- .long 0 /* Number of symbols */
- .word opthdr_size /* Size of optional header */
- .word 0x2102 /* Characteristics */
- .size pehdr, . - pehdr
- .equ pehdr_lma, pehdr - mzhdr
-
- /* "Optional" header */
- opthdr:
- .word 0x010b /* Magic number */
- .byte 0 /* Linker major version number */
- .byte 0 /* Linker minor version number */
- .long _text_filesz /* Size of text section */
- .long _data_filesz /* Size of data section */
- .long _bss_filesz /* Size of bss section */
- .long efi_entry_lma /* Entry point */
- .long _text_lma /* Text section start RVA */
- .long _data_lma /* Data section start RVA */
- .long 0 /* Image base address */
- .long _max_align /* Section alignment */
- .long _max_align /* File alignment */
- .word 0 /* Operating system major version number */
- .word 0 /* Operating system minor version number */
- .word 0 /* Image major version number */
- .word 0 /* Image minor version number */
- .word 0 /* Subsystem major version number */
- .word 0 /* Subsystem minor version number */
- .long 0 /* Reserved */
- .long _filesz /* Total image size */
- .long _prefix_filesz /* Total header size */
- .long 0 /* "Checksum" */
- .word 0x0a /* Subsystem: EFI */
- .word 0 /* DLL characteristics */
- .long 0 /* Size of stack reserve */
- .long 0 /* Size of stack commit */
- .long 0 /* Size of heap reserve */
- .long 0 /* Size of heap commit */
- .long 0 /* Loader flags */
- .long 16 /* Number of data directory entries */
- .long 0, 0 /* Export directory */
- .long 0, 0 /* Import directory */
- .long 0, 0 /* Resource directory */
- .long 0, 0 /* Exception directory */
- .long 0, 0 /* Security directory */
- .long _reloc_lma, _reloc_filesz /* Base relocation directory */
- .long debugdir_lma, debugdir_size /* Debug directory */
- .long 0, 0 /* Description directory */
- .long 0, 0 /* Special directory */
- .long 0, 0 /* Thread storage directory */
- .long 0, 0 /* Load configuration directory */
- .long 0, 0 /* Bound import directory */
- .long 0, 0 /* Import address table directory */
- .long 0, 0 /* Delay import directory */
- .long 0, 0 /* Reserved */
- .long 0, 0 /* Reserved */
- .size opthdr, . - opthdr
- .equ opthdr_size, . - opthdr
-
- /* PE sections */
- pe_sections:
- text_section:
- .asciz ".text" /* Section name */
- .align 8
- .long _text_filesz /* Section size */
- .long _text_lma /* Relative Virtual Address */
- .long _text_filesz /* Section size (rounded up) */
- .long _text_lma /* Pointer to raw data */
- .long 0 /* Link-time relocations */
- .long 0 /* Line numbers */
- .word 0 /* Number of link-time relocations */
- .word 0 /* Number of line numbers */
- .long 0x68000020 /* Characteristics */
- rodata_section:
- .asciz ".rodata" /* Section name */
- .align 8
- .long _rodata_filesz /* Section size */
- .long _rodata_lma /* Relative Virtual Address */
- .long _rodata_filesz /* Section size (rounded up) */
- .long _rodata_lma /* Pointer to raw data */
- .long 0 /* Link-time relocations */
- .long 0 /* Line numbers */
- .word 0 /* Number of link-time relocations */
- .word 0 /* Number of line numbers */
- .long 0x48000040 /* Characteristics */
- data_section:
- .asciz ".data" /* Section name */
- .align 8
- .long _data_filesz /* Section size */
- .long _data_lma /* Relative Virtual Address */
- .long _data_filesz /* Section size (rounded up) */
- .long _data_lma /* Pointer to raw data */
- .long 0 /* Link-time relocations */
- .long 0 /* Line numbers */
- .word 0 /* Number of link-time relocations */
- .word 0 /* Number of line numbers */
- .long 0xc8000040 /* Characteristics */
- reloc_section:
- .asciz ".reloc" /* Section name */
- .align 8
- .long _reloc_filesz /* Section size */
- .long _reloc_lma /* Relative Virtual Address */
- .long _reloc_filesz /* Section size (rounded up) */
- .long _reloc_lma /* Pointer to raw data */
- .long 0 /* Link-time relocations */
- .long 0 /* Line numbers */
- .word 0 /* Number of link-time relocations */
- .word 0 /* Number of line numbers */
- .long 0x42000040 /* Characteristics */
-
- pe_sections_end:
- .size pe_sections, . - pe_sections
- .equ num_pe_sections, ( ( . - pe_sections ) / 0x28 )
-
- /* Debug directory */
- .section ".rodata"
- .globl debugdir
- debugdir:
- .long 0 /* Characteristics */
- .long 0x10d1a884 /* Timestamp */
- .word 0 /* Major version */
- .word 0 /* Minor version */
- .long 0x02 /* RSDS? */
- .long codeview_rsds_size /* Size of data */
- .long codeview_rsds_lma /* RVA */
- .long codeview_rsds_lma /* File offset */
- .size debugdir, . - debugdir
- .equ debugdir_size, . - debugdir
- /* Codeview structure */
- .globl codeview_rsds
- codeview_rsds:
- .ascii "RSDS" /* Magic number */
- .long 0, 0, 0, 0, 0 /* Unused by EFI */
- .asciz "efiprefix.pdb"
- .size codeview_rsds, . - codeview_rsds
- .equ codeview_rsds_size, . - codeview_rsds
|