| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 | 
#------------------------------------------------------------------------------# $File: intel,v 1.23 2022/10/31 13:22:26 christos Exp $# intel:  file(1) magic for x86 Unix## Various flavors of x86 UNIX executable/object (other than Xenix, which# is in "microsoft").  DOS is in "msdos"; the ambitious soul can do# Windows as well.## Windows NT belongs elsewhere, as you need x86 and MIPS and Alpha and# whatever comes next (HP-PA Hummingbird?).  OS/2 may also go elsewhere# as well, if, as, and when IBM makes it portable.## The `versions' should be un-commented if they work for you.# (Was the problem just one of endianness?)#0	leshort		0502		basic-16 executable>12	lelong		>0		not stripped#>22	leshort		>0		- version %d0	leshort		0503		basic-16 executable (TV)>12	lelong		>0		not stripped#>22	leshort		>0		- version %d0	leshort		0510		x86 executable>12	lelong		>0		not stripped0	leshort		0511		x86 executable (TV)>12	lelong		>0		not stripped0	leshort		=0512		iAPX 286 executable small model (COFF)>12	lelong		>0		not stripped#>22	leshort		>0		- version %d0	leshort		=0522		iAPX 286 executable large model (COFF)>12	lelong		>0		not stripped#>22	leshort		>0		- version %d# updated by Joerg Jenderek at Oct 2015# https://de.wikipedia.org/wiki/Common_Object_File_Format# http://www.delorie.com/djgpp/doc/coff/filhdr.html# ./msdos (version 5.25) labeled the next entry as "MS Windows COFF Intel 80386 object file"# ./intel (version 5.25) label labeled the next entry as "80386 COFF executable"# SGI labeled the next entry as "iAPX 386 executable" --Dan Quinlan0	leshort		=0514# use subroutine to display name+flags+variables for common object formatted files>0	use				display-coff#>12	lelong		>0		not stripped# no hint found, that at offset 22 is version#>22	leshort		>0		- version %d0	leshort		0x0200# no F_EXEC flag bit implies Intel ia64 COFF object file without optional header>18	leshort		^0x0002# skip some DEGAS high-res uncompressed bitmap *.pi3 handled by ./images like# GEMINI03.PI3 MODEM2.PI3 POWERFIX.PI3 sigirl1.pi3 vanna5.pi3# by test for valid starting character (often point 0x2E) of 1st section name>>20	ubyte		>0x1F>>>0	use				display-coff# F_EXEC flag bit implies Intel ia64 COFF executable>18	leshort		&0x0002>>0	use				display-coff0	leshort		0x8664>0	use				display-coff# rom: file(1) magic for BIOS ROM Extensions found in intel machines#      mapped into memory between 0xC0000 and 0xFFFFF# From: Alex Myczko <alex@aiei.ch># updated by Joerg Jenderek# https://en.wikipedia.org/wiki/Option_ROM# URL:		http://fileformats.archiveteam.org/wiki/BIOS# Reference:	http://www.lejabeach.com/sisubb/BIOS_Disassembly_Ninjutsu_Uncovered.pdf0	beshort		0x55AA# skip misidentified raspberry pi pieeprom-*.bin by check for# unlikely high ROM size (0xF0*512=240*512) and not observed start instruction 0x0F >2	ubeshort	!0xF00F# skip 2 byte sized eof.bin with start magic >>0	use		rom-x860	name		rom-x86>0	beshort		x		BIOS (ia32) ROM Ext.#!:mime	application/octet-stream!:mime	application/x-ibm-rom!:ext	rom/bin################################################################################# not Plug aNd Play ($PnP) like 00000000 (ide_xtp.bin kvmvapic.bin V7VGA.ROM) 000000fc (MCT-VGA.bin)# 55aaf00f (pieeprom-*.bin) 55aa40e9 (Trm3x5.bin) 24506f4f (sgabios-bin.rom)# 55aa4be9 (vgabios-stdvga.rom vgabios-cirrus-bin.rom vgabios-vmware-bin.rom)>(26.s)	ubelong		!0x24506e50#>(26.s)	ubelong		!0x24506e50	NOT PNP=%8.8x# also not PCI (PCIR) implies "old" ISA cards or foo like: 8a168404 (MCT-VGA.bin)# 55aaf00f (pieeprom*.bin)>>(24.s)	ubelong	!0x50434952#>>(24.s)	ubelong	!0x50434952	ISA CARD=%8.8x# "old" identification strings used in file version 5.41 and earlier# probably an USB controller>>>5	string		USB		USB# probably	https://en.wikipedia.org/wiki/Preboot_Execution_Environment>>>7	string		LDR		UNDI image# probably another Adaptec SCSI controller>>>26	string		Adaptec		Adaptec# http://minuszerodegrees.net/rom/bin/adaptec_aha1542cp_bios_908501-00.bin# already done by PNP variant#>>>28	string		Adaptec		Adaptec# probably Promise SCSI controller>>>42	string		PROMISE		Promise# old test for IBM compatible Video cards; INTERNAL FACTS WHY IS THIS WORKING?>30      string          IBM          IBM comp. Video# display exact text for IBM compatible Video cards with longer text>>33	ubyte		!0>>>30	string		x		"%s"# http://minuszerodegrees.net/rom/bin/unknown/MCT-VGA-16%20-%20TDVGA%203588%20BIOS%20Version%20V1.04A.zip# "IBM COMPATIBLETDVGA 3588 BIOS Version V1.04A2+"	"MCT-VGA-16 - TDVGA 3588 BIOS Version V1.04A.bin" # "IBM VGA Compatible\001"				NVidia44.bin# "IBM EGA ROM Video Seven BIOS Code, Version 1.04"	V7VGA.ROM# "IBM"							vgabios-stdvga.rom# "IBM"							vgabios-vmware-bin.rom:# "IBM"							vgabios-cirrus-bin.rom# "IBM"							vgabios-virtio-bin.rom################################################################################# ROM size in 512B blocks must be interpreted as unsigned for ROM of network cards# like: efi-eepro100.rom efi-rtl8139.rom pxe-e1000.rom>2       ubyte            x            (%u*512)# file name		file size	calculated size	remark# eof.bin		2		-		with start magic nothing is shown here# orchid.bin		188		0	=0*512	on window 95 CD in Drivers\audio\orchid3d# multiboot.bin		1024		1024	=2*512	QEMU emulator# loader1.bin		512		2048	=4*512# ide_xtp.bin		8192		8192	=16*512# kvmvapic.bin		9216		9216	=18*512# V7VGA.ROM		18832		16384	=32*512# adaptec1542.bin	32768		16384	=32*512# MCT-VGA.bin		32768		24576	=48*512# 2975BIOS.BIN		32768		32256	=63*512# efi-e1000.rom		196608		64000	=125*512# efi-rtl8139.rom	176640		66048	=129*512# pieeprom*.bin		524288		122880	=240*512################################################################################# initialization vector with executable code; often near JuMP instruction E9 yy zz>3	ubyte			=0xE9	jmp# jmp offset like: 008fh 0093h 009fh 00afh 0143h 3ad7h 5417h 54ech 594dh 895fh >>4	uleshort		x	%#4.4x# for initialization vector samples without 3 byte jump instruction>3	ubyte			!0xE9	instruction#	eb4b3734h	NVidia44.bin#	00003234h	V7VGA.ROM#	060e0731h	kvmvapic.bin#	cb000000h	linuxboot-bin.rom#	e80d0fcbh	PXE-Intel.rom#	b8004875h	orchid.bin>>3	ubelong			x	%#8.8x# For misidentified raspberry pi pieeprom-*.bin like: 0xf00f#>2	ubeshort		x	\b, AT 2 %#4.4x#################################################################################		new sections for BIOS (ia32) ROM Extension# 4 bytes ASCII Signature "$PnP" for Plug aNd Play expansion header>(26.s)	string		=$PnP		\b;#>(26.s)	string		=$PnP		FOUND $PnP# at 1Ah possible offset to expansion header structure; new for Plug aNd Play>>26		uleshort	x	at %#x PNP# Plug and Play vendor+device ID like: 0 0x000f1000 (2975BIOS.BIN) 0x31121095 (4243.bin) 0x04904215 (adaptec1542.bin)#>>(26.s+0x0A)	ulelong		!0	NOT-nullID=%8.8x>>(26.s+0x0A)	uleshort	!0# show PnP Vendor identification in human readable text form instead of numeric# For adaptec_ava1515_bios_585201-00.bin reverted endian! BUT IS THIS ALWAYS TRUE?>>>(26.s+0x0C)	use		\^PCI-vendor>>>(26.s+0x0A)	ubeshort	x	device=%#4.4x# 3 byte Device type code; probably the same meaning as in PCI section?# OK for	storage controller SCSI		(2975BIOS.BIN adaptec1542.bin)# and		network controller ethernet	(efi-e1000.rom efi-rtl8139.rom)>>(26.s+0x12)	use		PCI-class# structure revision like: 01h>>(26.s+4)	ubyte		!1	\b, revision %u# PnP Header structure length in multiple of 16 bytes like: 2>>(26.s+5)	uleshort	!2	\b, length %u*16# offset to next header; 0 if none>>(26.s+7)	uleshort	!0	\b, at %#x next header# reserved byte; seems to be zero>>(26.s+8)	ubyte		!0	\b, reserved %#x# 8-bit checksum for this header; calculated and patched by patch2pnprom>>(26.s+9)	ubyte		!0	\b, CRC %#x# pointer to optional manufacturer string; like: 0 (4243.bin) 59h 5ch 60h c7h 14eh 27ch 296h 324h 3662h>>(26.s+0x0E)	uleshort	>0	\b, at %#x>>>(26.s+0x0C)	uleshort	x# manufacturer ASCII-Z string like "http://ipxe.org" "Plop - Elmar Hanlhofer www.plop.at" "QEMU">>>>(&0.s)	string		x	"%s"# pointer to optional product string; like: 0 (2975BIOS.BIN) 6ch 70h 7ch d9h 160h 281h 29bh 329h>>(26.s+0x10)	uleshort	>0	\b, at %#x>>>(26.s+0x0E)	uleshort	x# often human readable product ASCII-Z string like "iPXE" "Plop Boot Manager" # "multiboot loader" "Intel UNDI, PXE-2.0 (build 082)">>>>(&0.s)	string		x	"%s"# PnP Device indicators; contains bits that identify the device as being capable of bootable#>>(26.s+0x15)	ubyte		x	\b, INDICATORS %#x# device is a display device>>(26.s+0x15)	ubyte		&0x01	\b, display# device is an input device>>(26.s+0x15)	ubyte		&0x02	\b, input# device is an IPL device>>(26.s+0x15)	ubyte		&0x04	\b, IPL#>>(26.s+0x15)	ubyte		&0x08	reserved# ROM is only required if this device is selected as a boot device>>(26.s+0x15)	ubyte		&0x10	\b, bootable# indicates ROM is read cacheable>>(26.s+0x15)	ubyte		&0x20	\b, cacheable# ROM may be shadowed in RAM>>(26.s+0x15)	ubyte		&0x40	\b, shadowable# ROM supports the device driver initialization model>>(26.s+0x15)	ubyte		&0x80	\b, InitialModel# boot connection vector; an offset to a routine that hook into INT 9h, INT 10h, or INT 13h# 0 means disabled 0x0429 (4650_sr5.bin) 0x0072 (adaptec1542.bin)>>(26.s+0x16)	uleshort	!0	\b, boot vector offset %#x# disconnect vector; offset to routine that do cleanup from an unsuccessful boot attempt>>(26.s+0x18)	uleshort	!0	\b, disconnect offset %#x# bootstrap entry point/vector (BEV); offset to a routine (like RPL) that hook into INT 19h# 0 means disabled 0x3c (multiboot.bin) 0x358 (efi-rtl8139.rom) 0xae7 (PXE-Intel.rom)>>(26.s+0x1A)	uleshort	!0	\b, bootstrap offset %#x# 2nd reserved area; seems to be zero>>(26.s+0x1C)	uleshort	!0	\b, 2nd reserved %#x# static resource information vector; 0 means disabled>>(26.s+0x1E)	uleshort	!0	\b, static offset %#4.4x################################################################################# 4 bytes ASCII Signature "PCIR" for PCI Data Structure#>(24.s)	string			=PCIR	FOUND PCIR>(24.s)	string			=PCIR	\b;# pointer to PCI data structure like: 1Ch 38h 104h 8E44h >>24	uleshort		x	at %#x PCI# Vendor identification (ID)		https://pci-ids.ucw.cz/v2.2/pci.ids#>>(24.s+4)	uleshort	x	ID=%4.4x# show Vendor identification in human readable text form instead of numeric>>(24.s+4)	use		PCI-vendor# device identification (ID)>>(24.s+6)	uleshort	x	device=%#4.4x# Base+sub class code			https://wiki.osdev.org/PCI>>(24.s+0x0D)	use		PCI-class# pointer to vital product data (VPD); 0 indicates no VPD; WHAT EXACTLY iS VPD?>>(24.s+8)	uleshort	!0	\b, at %#x VPD# PCI data structure length like: 24h 28h>>(24.s+0xA)	uleshort	>0x28	\b, length %u# PCI data structure revision like: 0 3>>(24.s+0xC)	ubyte		>0	\b, revision %u# image length (hexadecimal) in multiple of 512 bytes like: 54 56 68 6a 76 78 7c 7d 7e 7f 80 81 83# Apparently this gives the same information as given by byte at offset 2 but as 16-bit#>>(24.s+0x10)	uleshort	x	\b, length %u*512# revision level of code/data like: 0 1 201h 502h>>(24.s+0xC)	ubyte		>1	\b, code revision %#x# code type: 0~Intel x86/PC-AT compatible 1~Open firmware standard for PCI42 FF~Reserved>>(24.s+0x14)	ubyte		>0	\b, code type %#x# last image indicator; bit 7 indicates "last image"; bits 0-6 are reserved>>(24.s+0x15)	ubyte		>0>>>(24.s+0x15)	ubyte		=0x80	\b, last ROM# THIS SHOULD NOT HAPPEN!>>>(24.s+0x15)	ubyte		!0x80	\b, indicator %x# 3rd reserved area; seems to be zero in most cases but not for# efi-e1000.rom efi-rtl8139.rom>>(24.s+0x16)	ubeshort	!0	\b, 3rd reserved %#x# Flash descriptors for Intel SPI flash roms.# From Dr. Jesus <j@hug.gs>0	lelong		0x0ff0a55a	Intel serial flash for ICH/PCH ROM <= 5 or 3400 series A-step16	lelong		0x0ff0a55a	Intel serial flash for PCH ROM# From: 	Joerg Jenderek# URL:		https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface# Reference:	https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf# Note:		generated for example by `cat /sys/firmware/acpi/tables/DSDT MyDSDT.aml`0	string		DSDT>0	use		acpi-table# not tested or other file format0	string		APIC>0	use		acpi-table#0	string		ASF!#>0	use		acpi-table0	string		FACP>0	use		acpi-table#0	string		FACS#>0	use		acpi-table0	string		MCFG>0	use		acpi-table0	string		SLIC>0	use		acpi-table0	string		SSDT>0	use		acpi-table0	name		acpi-table# skip ASCII text starting with DSDT by looking for valid "low" revision>8	ubyte		<17	ACPI Machine Language file# assume that ACPI tables size are lower than 16 MiB#>4	ulelong		<0x01000000# DSDT for Differentiated System Description Table>>0	string		x	'%.4s'#!:mime	application/octet-stream!:mime	application/x-intel-aml!:ext	aml# the manufacture model ID like: VBOXBIOS BXDSDT>>16	string		>\0	%.8s# OEM revision of DSDT for supplied OEM Table ID like: 0 1 2 20090511>>>24	ulelong		x	%x# OEM ID like: INTEL VBOX (VirtualBox) BXDSDT (qemu) MEDION or \030\001\0\0 for s3pt.aml>>10	ubyte		>040	by %c>>>11		ubyte	>040	\b%c>>>>12		ubyte	>040	\b%c>>>>>13		ubyte	>040	\b%c>>>>>>14	ubyte	>040	\b%c>>>>>>>15	ubyte	>040	\b%c# This field also sets the global integer width for the AML interpreter.# Values less than two will cause the interpreter to use 32-bit.# Values of two and greater will cause the interpreter to use full 64-bit.# 16 for asf!.aml, 67 fo rsdp.aml>>8	ubyte		x	\b, revision %u# length, in bytes, of the entire DSDT (including the header)>>4	ulelong		x	\b, %u bytes# entire table must sum to zero#>>9	ubyte		x	\b, checksum %#x# vendor ID for the ASL Compiler like: INTL MSFT ...>>28	string		>\0	\b, created by %.4s# revision number of the ASL Compiler like: 20051117 20140724 20190703 20200110 ...>>>32	ulelong		x	%x
 |