diff options
Diffstat (limited to 'usr.bin/file')
| -rw-r--r-- | usr.bin/file/Magdir/alpha | 21 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/amanda | 7 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/amigaos | 10 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/asterix | 17 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/digital | 41 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/island | 9 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/mach | 38 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/osf1 | 10 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/sniffer | 63 | ||||
| -rw-r--r-- | usr.bin/file/Magdir/xenix | 72 | ||||
| -rw-r--r-- | usr.bin/file/internat.c | 72 | ||||
| -rw-r--r-- | usr.bin/file/readelf.c | 318 | ||||
| -rw-r--r-- | usr.bin/file/readelf.h | 167 |
13 files changed, 0 insertions, 845 deletions
diff --git a/usr.bin/file/Magdir/alpha b/usr.bin/file/Magdir/alpha deleted file mode 100644 index 42e19176c98a..000000000000 --- a/usr.bin/file/Magdir/alpha +++ /dev/null @@ -1,21 +0,0 @@ -#------------------------------------------------------------------------------ -# alpha architecture description -# - -0 leshort 0603 COFF format alpha ->22 leshort&030000 !020000 executable ->24 leshort 0410 pure ->24 leshort 0413 paged ->22 leshort&020000 !0 dynamically linked ->16 lelong !0 not stripped ->16 lelong 0 stripped ->22 leshort&030000 020000 shared library ->24 leshort 0407 object ->27 byte x - version %d ->26 byte x .%d ->28 byte x -%d - -# Basic recognition of OSF/1 core dumps - Mike Bremford <mike@opac.bl.uk> -# -0 string Core\001 COFF format core dump (OSF/1) ->24 string >\0 generated by '%s' diff --git a/usr.bin/file/Magdir/amanda b/usr.bin/file/Magdir/amanda deleted file mode 100644 index 57c4359fc169..000000000000 --- a/usr.bin/file/Magdir/amanda +++ /dev/null @@ -1,7 +0,0 @@ -#------------------------------------------------------------------------------ -# amanda: file(1) magic for amanda file format -# -0 string AMANDA:\ TAPESTART\ DATE AMANDA dump header file, ->23 string X ->>25 string >\ Unused %s ->23 string >\ DATE %s diff --git a/usr.bin/file/Magdir/amigaos b/usr.bin/file/Magdir/amigaos deleted file mode 100644 index 6073936e17bd..000000000000 --- a/usr.bin/file/Magdir/amigaos +++ /dev/null @@ -1,10 +0,0 @@ -#------------------------------------------------------------------------------ -# amigaos: file(1) magic for AmigaOS binary formats: - -# -# From ignatios@cs.uni-bonn.de (Ignatios Souvatzis) -# Some formats are still missing: AmigaOS special IFF's, e.g.: FORM....CTLG -# (the others should be seperate, anyway) -# -0 belong 0x000003f3 AmigaOS loadseg()ble executable/binary -0 belong 0x000003e7 AmigaOS object/library data diff --git a/usr.bin/file/Magdir/asterix b/usr.bin/file/Magdir/asterix deleted file mode 100644 index d89504a2407f..000000000000 --- a/usr.bin/file/Magdir/asterix +++ /dev/null @@ -1,17 +0,0 @@ - -#------------------------------------------------------------------------------ -# asterix: file(1) magic for Aster*x; SunOS 5.5.1 gave the 4-character -# strings as "long" - we assume they're just strings: -# From: guy@netapp.com (Guy Harris) -# -0 string *STA Aster*x ->7 string WORD Words Document ->7 string GRAP Graphic ->7 string SPRE Spreadsheet ->7 string MACR Macro -0 string 2278 Aster*x Version 2 ->29 byte 0x36 Words Document ->29 byte 0x35 Graphic ->29 byte 0x32 Spreadsheet ->29 byte 0x38 Macro - diff --git a/usr.bin/file/Magdir/digital b/usr.bin/file/Magdir/digital deleted file mode 100644 index f4ebbff985bd..000000000000 --- a/usr.bin/file/Magdir/digital +++ /dev/null @@ -1,41 +0,0 @@ -# Digital UNIX - Info -# -0 string ^!<arch>\n_______64E Alpha archive ->22 string X -- out of date -# -# Alpha COFF Based Executables -# The stripped stuff really needs to be an 8 byte (64 bit) compare, -# but this works -0 leshort 0x183 COFF format alpha ->22 leshort&020000 &010000 sharable library, ->22 leshort&020000 ^010000 dynamically linked, ->24 leshort 0410 pure ->24 leshort 0413 demand paged ->8 lelong >0 executable or object module, not stripped ->8 lelong 0 ->>12 lelong 0 executable or object module, stripped ->>12 lelong >0 executable or object module, not stripped ->27 byte >0 - version %d. ->26 byte >0 %d- ->28 leshort >0 %d -# -# The next is incomplete, we could tell more about this format, -# but its not worth it. -0 leshort 0x188 Alpha compressed COFF -0 leshort 0x18f Alpha u-code object -# -# -# Some other interesting Digital formats, -0 string \377\377\177 ddis/ddif -0 string \377\377\174 ddis/dots archive -0 string \377\377\176 ddis/dtif table data -0 string \033c\033 LN03 output -0 long 04553207 X image -# -0 string !<PDF>!\n profiling data file -# -# Locale data tables (MIPS and Alpha). -# -0 short 0x0501 locale data table ->6 short 0x24 for MIPS ->6 short 0x40 for Alpha diff --git a/usr.bin/file/Magdir/island b/usr.bin/file/Magdir/island deleted file mode 100644 index 9903cddf9217..000000000000 --- a/usr.bin/file/Magdir/island +++ /dev/null @@ -1,9 +0,0 @@ - -#------------------------------------------------------------------------------ -# island: file(1) magic for IslandWite/IslandDraw, from SunOS 5.5.1 -# "/etc/magic": -# From: guy@netapp.com (Guy Harris) -# -4 string pgscriptver IslandWrite document -13 string DrawFile IslandDraw document - diff --git a/usr.bin/file/Magdir/mach b/usr.bin/file/Magdir/mach deleted file mode 100644 index 308325ee4e4e..000000000000 --- a/usr.bin/file/Magdir/mach +++ /dev/null @@ -1,38 +0,0 @@ -#------------------------------------------------------------------------------ -# mach file description -# -0 belong 0xcafebabe mach-o fat file ->4 belong 1 with 1 architecture ->4 belong >1 ->>4 belong x with %ld architectures -# -0 belong 0xfeedface mach-o ->12 belong 1 object ->12 belong 2 executable ->12 belong 3 shared library ->12 belong 4 core ->12 belong 5 preload executable ->12 belong >5 ->>12 belong x filetype=%ld ->4 belong <0 ->>4 belong x architecture=%ld ->4 belong 1 vax ->4 belong 2 romp ->4 belong 3 architecture=3 ->4 belong 4 ns32032 ->4 belong 5 ns32332 ->4 belong 6 for m68k architecture ->4 belong 7 i386 ->4 belong 8 mips ->4 belong 9 ns32532 ->4 belong 10 architecture=10 ->4 belong 11 hp pa-risc ->4 belong 12 acorn ->4 belong 13 m88k ->4 belong 14 sparc ->4 belong 15 i860-big ->4 belong 16 i860 ->4 belong 17 rs6000 ->4 belong 18 powerPC ->4 belong >18 ->>4 belong x architecture=%ld diff --git a/usr.bin/file/Magdir/osf1 b/usr.bin/file/Magdir/osf1 deleted file mode 100644 index d2868c3dd7d4..000000000000 --- a/usr.bin/file/Magdir/osf1 +++ /dev/null @@ -1,10 +0,0 @@ -# -# Mach magic number info -# -0 long 0xefbe OSF/Rose object -# I386 magic number info -# -0 short 0565 i386 COFF object -# -0 string Core Alpha Digital UNIX core file ->24 string >\0 \b, generated from '%s' diff --git a/usr.bin/file/Magdir/sniffer b/usr.bin/file/Magdir/sniffer deleted file mode 100644 index 861ec8c85dd3..000000000000 --- a/usr.bin/file/Magdir/sniffer +++ /dev/null @@ -1,63 +0,0 @@ - -#------------------------------------------------------------------------------ -# sniffer: file(1) magic for packet captured files -# -# From: guy@netapp.com (Guy Harris) -# -# Microsoft NetMon (packet capture/display program) capture files. -# -0 string RTSS NetMon capture file ->4 byte x - version %d ->5 byte x \b.%d -# -# Network General Sniffer capture files (the Sniffer software does, -# after all, run under MS-DOS...). -# -0 string TRSNIFF\ data\ \ \ \ \032 Sniffer capture file ->23 leshort x - version %d ->25 leshort x \b.%d ->33 byte x (Format %d, ->32 byte 0 Token ring) ->32 byte 1 Ethernet) ->32 byte 2 ARCnet) ->32 byte 3 StarLAN) ->32 byte 4 PC Network broadband) ->32 byte 5 LocalTalk) ->32 byte 6 Znet) -# -# (We call them "tcpdump capture file(s)" for now, as "tcpdump" is -# the main program that uses that format, but there's also "tcpview", -# and there may be others in the future.) -# -0 ubelong 0xa1b2c3d4 tcpdump capture file (big-endian) ->4 beshort x - version %d ->6 beshort x \b.%d ->20 belong 0 (No link-layer encapsulation ->20 belong 1 (Ethernet ->20 belong 2 (3Mb Ethernet ->20 belong 3 (AX.25 ->20 belong 4 (ProNet ->20 belong 5 (Chaos ->20 belong 6 (IEEE 802.x network ->20 belong 7 (ARCnet ->20 belong 8 (SLIP ->20 belong 9 (PPP ->20 belong 10 (FDDI ->20 belong 11 (RFC 1483 ATM ->16 belong x \b, capture length %d) -0 ulelong 0xa1b2c3d4 tcpdump capture file (little-endian) ->4 leshort x - version %d ->6 leshort x \b.%d ->20 lelong 0 (No link-layer encapsulation ->20 lelong 1 (Ethernet ->20 lelong 2 (3Mb Ethernet ->20 lelong 3 (AX.25 ->20 lelong 4 (ProNet ->20 lelong 5 (Chaos ->20 lelong 6 (IEEE 802.x network ->20 lelong 7 (ARCnet ->20 lelong 8 (SLIP ->20 lelong 9 (PPP ->20 lelong 10 (FDDI ->20 lelong 11 (RFC 1483 ATM ->16 lelong x \b, capture length %d) diff --git a/usr.bin/file/Magdir/xenix b/usr.bin/file/Magdir/xenix deleted file mode 100644 index 1acadec62a01..000000000000 --- a/usr.bin/file/Magdir/xenix +++ /dev/null @@ -1,72 +0,0 @@ - -#------------------------------------------------------------------------------ -# xenix: file(1) magic for Microsoft Xenix -# -# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small -# model" lifted from "magic.xenix", with comment "derived empirically; -# treat as folklore until proven" -# -# "small model", "large model", "huge model" stuff lifted from XXX -# -# XXX - "x.out" collides with PDP-11 archives -# -0 string core core file (Xenix) -0 byte 0x80 8086 relocatable (Microsoft) -0 leshort 0xff65 x.out ->2 string __.SYMDEF randomized ->0 byte x archive -0 leshort 0x206 Microsoft a.out ->8 leshort 1 Middle model ->0x1e leshort &0x10 overlay ->0x1e leshort &0x2 separate ->0x1e leshort &0x4 pure ->0x1e leshort &0x800 segmented ->0x1e leshort &0x400 standalone ->0x1e leshort &0x8 fixed-stack ->0x1c byte &0x80 byte-swapped ->0x1c byte &0x40 word-swapped ->0x10 lelong >0 not-stripped ->0x1e leshort ^0xc000 pre-SysV ->0x1e leshort &0x4000 V2.3 ->0x1e leshort &0x8000 V3.0 ->0x1c byte &0x4 86 ->0x1c byte &0xb 186 ->0x1c byte &0x9 286 ->0x1c byte &0xa 386 ->0x1f byte <0x040 small model ->0x1f byte =0x048 large model ->0x1f byte =0x049 huge model ->0x1e leshort &0x1 executable ->0x1e leshort ^0x1 object file ->0x1e leshort &0x40 Large Text ->0x1e leshort &0x20 Large Data ->0x1e leshort &0x120 Huge Objects Enabled ->0x10 lelong >0 not stripped - -0 leshort 0x140 old Microsoft 8086 x.out ->0x3 byte &0x4 separate ->0x3 byte &0x2 pure ->0 byte &0x1 executable ->0 byte ^0x1 relocatable ->0x14 lelong >0 not stripped - -0 lelong 0x206 b.out ->0x1e leshort &0x10 overlay ->0x1e leshort &0x2 separate ->0x1e leshort &0x4 pure ->0x1e leshort &0x800 segmented ->0x1e leshort &0x400 standalone ->0x1e leshort &0x1 executable ->0x1e leshort ^0x1 object file ->0x1e leshort &0x4000 V2.3 ->0x1e leshort &0x8000 V3.0 ->0x1c byte &0x4 86 ->0x1c byte &0xb 186 ->0x1c byte &0x9 286 ->0x1c byte &0x29 286 ->0x1c byte &0xa 386 ->0x1e leshort &0x4 Large Text ->0x1e leshort &0x2 Large Data ->0x1e leshort &0x102 Huge Objects Enabled - -0 leshort 0x580 XENIX 8086 relocatable or 80286 small model diff --git a/usr.bin/file/internat.c b/usr.bin/file/internat.c deleted file mode 100644 index 59a508a4f75c..000000000000 --- a/usr.bin/file/internat.c +++ /dev/null @@ -1,72 +0,0 @@ -#include "file.h" - -#include <string.h> - -#define F 0 -#define T 1 - -/* - * List of characters that look "reasonable" in international - * language texts. That's almost all characters :), except a - * few in the control range of ASCII (all the known international - * charactersets share the bottom half with ASCII). - */ -static char maybe_internat[256] = { - F, F, F, F, F, F, F, F, T, T, T, T, T, T, F, F, /* 0x0X */ - F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, /* 0x1X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x2X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x3X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x4X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x5X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x6X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, F, /* 0x7X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x8X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x9X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0xaX */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0xbX */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0xcX */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0xdX */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0xeX */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T /* 0xfX */ -}; - -/* Maximal length of a line we consider "reasonable". */ -#define MAXLINELEN 300 - -int -internatmagic(buf, nbytes) - unsigned char *buf; - int nbytes; -{ - int i; - unsigned char *cp; - - nbytes--; - - /* First, look whether there are "unreasonable" characters. */ - for (i = 0, cp = buf; i < nbytes; i++, cp++) - if (!maybe_internat[*cp]) - return 0; - - /* - * Now, look whether the file consists of lines of - * "reasonable" length. - */ - - for (i = 0; i < nbytes;) { - cp = memchr(buf, '\n', nbytes - i); - if (cp == NULL) { - /* Don't fail if we hit the end of buffer. */ - if (i + MAXLINELEN >= nbytes) - break; - else - return 0; - } - if (cp - buf > MAXLINELEN) - return 0; - i += (cp - buf + 1); - buf = cp + 1; - } - ckfputs("International language text", stdout); - return 1; -} diff --git a/usr.bin/file/readelf.c b/usr.bin/file/readelf.c deleted file mode 100644 index 2ae533b2bea7..000000000000 --- a/usr.bin/file/readelf.c +++ /dev/null @@ -1,318 +0,0 @@ - -#ifdef BUILTIN_ELF -#include <sys/types.h> -#include <string.h> -#include <stdio.h> -#include <ctype.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> - -#include "readelf.h" -#include "file.h" - -static void doshn __P((int, off_t, int, size_t, char *)); -static void dophn_exec __P((int, off_t, int, size_t, char *)); -static void dophn_core __P((int, off_t, int, size_t, char *)); - -static void -doshn(fd, off, num, size, buf) - int fd; - off_t off; - int num; - size_t size; - char *buf; -{ - /* - * This works for both 32-bit and 64-bit ELF formats, - * because it looks only at the "sh_type" field, which is - * always 32 bits, and is preceded only by the "sh_name" - * field which is also always 32 bits, and because it uses - * the shdr size from the ELF header rather than using - * the size of an "Elf32_Shdr". - */ - Elf32_Shdr *sh = (Elf32_Shdr *) buf; - - if (lseek(fd, off, SEEK_SET) == -1) - error("lseek failed (%s).\n", strerror(errno)); - - for ( ; num; num--) { - if (read(fd, buf, size) == -1) - error("read failed (%s).\n", strerror(errno)); - if (sh->sh_type == SHT_SYMTAB) { - (void) printf (", not stripped"); - return; - } - } - (void) printf (", stripped"); -} - -/* - * Look through the program headers of an executable image, searching - * for a PT_INTERP section; if one is found, it's dynamically linked, - * otherwise it's statically linked. - */ -static void -dophn_exec(fd, off, num, size, buf) - int fd; - off_t off; - int num; - size_t size; - char *buf; -{ - /* I am not sure if this works for 64 bit elf formats */ - Elf32_Phdr *ph = (Elf32_Phdr *) buf; - - if (lseek(fd, off, SEEK_SET) == -1) - error("lseek failed (%s).\n", strerror(errno)); - - for ( ; num; num--) { - if (read(fd, buf, size) == -1) - error("read failed (%s).\n", strerror(errno)); - if (ph->p_type == PT_INTERP) { - /* - * Has an interpreter - must be a dynamically-linked - * executable. - */ - printf(", dynamically linked"); - return; - } - } - printf(", statically linked"); -} - -size_t prpsoffsets[] = { - 100, /* SunOS 5.x */ - 32, /* Linux */ -}; - -#define NOFFSETS (sizeof prpsoffsets / sizeof prpsoffsets[0]) - -/* - * Look through the program headers of an executable image, searching - * for a PT_NOTE section of type NT_PRPSINFO, with a name "CORE"; if one - * is found, try looking in various places in its contents for a 16-character - * string containing only printable characters - if found, that string - * should be the name of the program that dropped core. - * Note: right after that 16-character string is, at least in SunOS 5.x - * (and possibly other SVR4-flavored systems) and Linux, a longer string - * (80 characters, in 5.x, probably other SVR4-flavored systems, and Linux) - * containing the start of the command line for that program. - */ -static void -dophn_core(fd, off, num, size, buf) - int fd; - off_t off; - int num; - size_t size; - char *buf; -{ - /* - * This doesn't work for 64-bit ELF, as the "p_offset" field is - * 64 bits in 64-bit ELF. - */ - /* - * This doesn't work for 64-bit ELF, as the "p_offset" field is - * 64 bits in 64-bit ELF. - */ - Elf32_Phdr *ph = (Elf32_Phdr *) buf; - Elf32_Nhdr *nh; - size_t offset, noffset, reloffset; - unsigned char c; - int i, j; - char nbuf[BUFSIZ]; - int bufsize; - - for ( ; num; num--) { - if (lseek(fd, off, SEEK_SET) == -1) - error("lseek failed (%s).\n", strerror(errno)); - if (read(fd, buf, size) == -1) - error("read failed (%s).\n", strerror(errno)); - off += size; - if (ph->p_type != PT_NOTE) - continue; - if (lseek(fd, ph->p_offset, SEEK_SET) == -1) - error("lseek failed (%s).\n", strerror(errno)); - bufsize = read(fd, nbuf, BUFSIZ); - if (bufsize == -1) - error("read failed (%s).\n", strerror(errno)); - offset = 0; - for (;;) { - if (offset >= bufsize) - break; - nh = (Elf32_Nhdr *)&nbuf[offset]; - offset += sizeof *nh; - - /* - * If this note isn't an NT_PRPSINFO note, it's - * not what we're looking for. - */ - if (nh->n_type != NT_PRPSINFO) { - offset += nh->n_namesz; - offset = ((offset + 3)/4)*4; - offset += nh->n_descsz; - offset = ((offset + 3)/4)*4; - continue; - } - - /* - * Make sure this note has the name "CORE". - */ - if (offset + nh->n_namesz >= bufsize) { - /* - * We're past the end of the buffer. - */ - break; - } - if (nh->n_namesz != 5 - || strcmp(&nbuf[offset], "CORE") != 0) - continue; - offset += nh->n_namesz; - offset = ((offset + 3)/4)*4; - - /* - * Extract the program name. We assume it to be - * 16 characters (that's what it is in SunOS 5.x - * and Linux). - * - * Unfortunately, it's at a different offset in - * SunOS 5.x and Linux, so try multiple offsets. - * If the characters aren't all printable, reject - * it. - */ - for (i = 0; i < NOFFSETS; i++) { - reloffset = prpsoffsets[i]; - noffset = offset + reloffset; - for (j = 0; j < 16; - j++, noffset++, reloffset++) { - /* - * Make sure we're not past the end - * of the buffer; if we are, just - * give up. - */ - if (noffset >= bufsize) - return; - - /* - * Make sure we're not past the - * end of the contents; if we - * are, this obviously isn't - * the right offset. - */ - if (reloffset >= nh->n_descsz) - goto tryanother; - - c = nbuf[noffset]; - if (c != '\0' && !isprint(c)) - goto tryanother; - } - - /* - * Well, that worked. - */ - printf(", from '%.16s'", - &nbuf[offset + prpsoffsets[i]]); - return; - - tryanother: - ; - } - offset += nh->n_descsz; - offset = ((offset + 3)/4)*4; - } - } -} - -void -tryelf(fd, buf, nbytes) - int fd; - char *buf; - int nbytes; -{ - union { - int32 l; - char c[sizeof (int32)]; - } u; - - /* - * ELF executables have multiple section headers in arbitrary - * file locations and thus file(1) cannot determine it from easily. - * Instead we traverse thru all section headers until a symbol table - * one is found or else the binary is stripped. - */ - if (buf[EI_MAG0] != ELFMAG0 || buf[EI_MAG1] != ELFMAG1 - || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3) - return; - - - if (buf[4] == ELFCLASS32) { - Elf32_Ehdr elfhdr; - if (nbytes <= sizeof (Elf32_Ehdr)) - return; - - - u.l = 1; - (void) memcpy(&elfhdr, buf, sizeof elfhdr); - /* - * If the system byteorder does not equal the - * object byteorder then don't test. - * XXX - we could conceivably fix up the "dophn_XXX()" and - * "doshn()" routines to extract stuff in the right - * byte order.... - */ - if ((u.c[sizeof(long) - 1] + 1) == elfhdr.e_ident[5]) { - if (elfhdr.e_type == ET_CORE) - dophn_core(fd, elfhdr.e_phoff, elfhdr.e_phnum, - elfhdr.e_phentsize, buf); - else { - if (elfhdr.e_type == ET_EXEC) { - dophn_exec(fd, elfhdr.e_phoff, - elfhdr.e_phnum, - elfhdr.e_phentsize, buf); - } - doshn(fd, elfhdr.e_shoff, elfhdr.e_shnum, - elfhdr.e_shentsize, buf); - } - } - return; - } - - if (buf[4] == ELFCLASS64) { - Elf64_Ehdr elfhdr; - if (nbytes <= sizeof (Elf64_Ehdr)) - return; - - - u.l = 1; - (void) memcpy(&elfhdr, buf, sizeof elfhdr); - - /* - * If the system byteorder does not equal the - * object byteorder then don't test. - * XXX - we could conceivably fix up the "dophn_XXX()" and - * "doshn()" routines to extract stuff in the right - * byte order.... - */ - if ((u.c[sizeof(long) - 1] + 1) == elfhdr.e_ident[5]) { -#ifdef notyet - if (elfhdr.e_type == ET_CORE) - dophn_core(fd, elfhdr.e_phoff, elfhdr.e_phnum, - elfhdr.e_phentsize, buf); - else -#endif - { -#ifdef notyet - if (elfhdr.e_type == ET_EXEC) { - dophn_exec(fd, elfhdr.e_phoff, - elfhdr.e_phnum, - elfhdr.e_phentsize, buf); - } -#endif - doshn(fd, elfhdr.e_shoff, elfhdr.e_shnum, - elfhdr.e_shentsize, buf); - } - } - return; - } -} -#endif diff --git a/usr.bin/file/readelf.h b/usr.bin/file/readelf.h deleted file mode 100644 index 853eed600f95..000000000000 --- a/usr.bin/file/readelf.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * readelf.h - * @(#)$Id: readelf.h,v 1.1.1.1 1997/03/18 17:58:55 mpp Exp $ - * - * Provide elf data structures for non-elf machines, allowing file - * non-elf hosts to determine if an elf binary is stripped. - * Note: cobbled from the linux header file, with modifications - */ -#ifndef __fake_elf_h__ -#define __fake_elf_h__ - -typedef unsigned int Elf32_Addr; -typedef unsigned short Elf32_Half; -typedef unsigned int Elf32_Off; -typedef unsigned int Elf32_Word; -typedef unsigned char Elf32_Char; - -/* XXX: We need 64 bit numbers here */ -typedef u_quad_t Elf64_Addr; -typedef unsigned short Elf64_Half; -typedef u_quad_t Elf64_Off; -typedef unsigned int Elf64_Word; -typedef unsigned char Elf64_Char; - -#define EI_NIDENT 16 - -typedef struct { - Elf32_Char e_ident[EI_NIDENT]; - Elf32_Half e_type; - Elf32_Half e_machine; - Elf32_Word e_version; - Elf32_Addr e_entry; /* Entry point */ - Elf32_Off e_phoff; - Elf32_Off e_shoff; - Elf32_Word e_flags; - Elf32_Half e_ehsize; - Elf32_Half e_phentsize; - Elf32_Half e_phnum; - Elf32_Half e_shentsize; - Elf32_Half e_shnum; - Elf32_Half e_shstrndx; -} Elf32_Ehdr; - -typedef struct { - Elf64_Char e_ident[EI_NIDENT]; - Elf64_Half e_type; - Elf64_Half e_machine; - Elf64_Word e_version; - Elf64_Addr e_entry; /* Entry point */ - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf64_Word e_flags; - Elf64_Half e_ehsize; - Elf64_Half e_phentsize; - Elf64_Half e_phnum; - Elf64_Half e_shentsize; - Elf64_Half e_shnum; - Elf64_Half e_shstrndx; -} Elf64_Ehdr; - -/* e_type */ -#define ET_EXEC 2 -#define ET_CORE 4 - -/* sh_type */ -#define SHT_SYMTAB 2 -#define SHT_NOTE 7 - -/* elf type */ -#define ELFDATANONE 0 /* e_ident[EI_DATA] */ -#define ELFDATA2LSB 1 -#define ELFDATA2MSB 2 - -/* elf class */ -#define ELFCLASSNONE 0 -#define ELFCLASS32 1 -#define ELFCLASS64 2 - -/* magic number */ -#define EI_MAG0 0 /* e_ident[] indexes */ -#define EI_MAG1 1 -#define EI_MAG2 2 -#define EI_MAG3 3 -#define EI_CLASS 4 -#define EI_DATA 5 -#define EI_VERSION 6 -#define EI_PAD 7 - -#define ELFMAG0 0x7f /* EI_MAG */ -#define ELFMAG1 'E' -#define ELFMAG2 'L' -#define ELFMAG3 'F' -#define ELFMAG "\177ELF" - -typedef struct { - Elf32_Word p_type; - Elf32_Off p_offset; - Elf32_Addr p_vaddr; - Elf32_Addr p_paddr; - Elf32_Word p_filesz; - Elf32_Word p_memsz; - Elf32_Word p_flags; - Elf32_Word p_align; -} Elf32_Phdr; - -#define PT_NULL 0 /* p_type */ -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_NUM 7 - -typedef struct { - Elf32_Word sh_name; - Elf32_Word sh_type; - Elf32_Word sh_flags; - Elf32_Addr sh_addr; - Elf32_Off sh_offset; - Elf32_Word sh_size; - Elf32_Word sh_link; - Elf32_Word sh_info; - Elf32_Word sh_addralign; - Elf32_Word sh_entsize; -} Elf32_Shdr; - -typedef struct { - Elf64_Word sh_name; - Elf64_Word sh_type; - Elf64_Off sh_flags; - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - Elf64_Off sh_size; - Elf64_Word sh_link; - Elf64_Word sh_info; - Elf64_Off sh_addralign; - Elf64_Off sh_entsize; -} Elf64_Shdr; - -/* Notes used in ET_CORE */ -#define NT_PRSTATUS 1 -#define NT_PRFPREG 2 -#define NT_PRPSINFO 3 -#define NT_TASKSTRUCT 4 - -/* Note header in a PT_NOTE section */ -typedef struct elf_note { - Elf32_Word n_namesz; /* Name size */ - Elf32_Word n_descsz; /* Content size */ - Elf32_Word n_type; /* Content type */ -} Elf32_Nhdr; - -typedef struct { - Elf64_Word n_namesz; - Elf64_Word n_descsz; - Elf64_Word n_type; -} Elf64_Nhdr; - -#define NT_PRSTATUS 1 -#define NT_PRFPREG 2 -#define NT_PRPSINFO 3 -#define NT_PRXREG 4 -#define NT_PLATFORM 5 -#define NT_AUXV 6 - -#endif |
