libclamav/elf.h
8808f2a2
 /*
  *  Copyright (C) 2005 Tomasz Kojm <tkojm@clamav.net>
  *
  *  Header structures based on ELF: Executable and Linkable Format, Portable
  *  Formats Specification, Version 1.1
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
30738099
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
8808f2a2
  */
 
 #ifndef __ELF_H
 #define __ELF_H
 
 #include "cltypes.h"
 #include "clamav.h"
1ec94c6b
 #include "execs.h"
605b8cf0
 #include "others.h"
8808f2a2
 
 struct elf_file_hdr32 {
     unsigned char e_ident[16];
     uint16_t e_type;
     uint16_t e_machine;
     uint32_t e_version;
     uint32_t e_entry;
     uint32_t e_phoff;
     uint32_t e_shoff;
     uint32_t e_flags;
     uint16_t e_ehsize;
     uint16_t e_phentsize;
     uint16_t e_phnum;
     uint16_t e_shentsize;
     uint16_t e_shnum;
     uint16_t e_shstrndx;
 };
 
 struct elf_section_hdr32 {
     uint32_t sh_name;
     uint32_t sh_type;
     uint32_t sh_flags;
     uint32_t sh_addr;
     uint32_t sh_offset;
     uint32_t sh_size;
     uint32_t sh_link;
     uint32_t sh_info;
     uint32_t sh_addralign;
     uint32_t sh_entsize;
 };
 
605b8cf0
 int cli_scanelf(int desc, cli_ctx *ctx);
8808f2a2
 
1ec94c6b
 int cli_elfheader(int desc, struct cli_exe_info *elfinfo);
 
8808f2a2
 #endif