ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
symgen.c 파일 참조
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
+ symgen.c에 대한 include 의존 그래프

데이타 구조

struct  elf_header
 
struct  elf32_dyn
 
struct  group
 
struct  Elf32_Phdr
 
struct  Elf32_Rel
 
struct  SymbolTable
 
struct  SectionHeader
 
struct  Elf32_Rela
 

매크로

#define _DEBUG
 
#define KERNELAT   0xc0000000
 
#define ENVSIZE   0x1000
 
#define ELF32_ST_BIND(i)   ((i)>>4)
 
#define ELF32_ST_TYPE(i)   ((i) & 0xf)
 
#define ELF32_ST_INFO(b, t)   (((b) << 4) + ((t) & 0xf))
 
#define ELF32_SET_ST_TYPE(v, i)   ((v) = ((v) & 0xF0) | ((i) & 0x0F))
 
#define ELF32_R_SYM(i)   ((i) >> 8)
 
#define ELF32_R_TYPE(i)   ((unsigned char)(i))
 
#define INVALID   (~0)
 
#define IS_TEXT(flags)   (((flags) & SHF_EXECINSTR) == SHF_EXECINSTR && ((flags) & SHF_ALLOC) == SHF_ALLOC)
 
#define IS_RODATA(flags)   (((flags) & SHF_ALLOC) == SHF_ALLOC && ((flags) & SHF_WRITE) != SHF_WRITE && ((flags) & SHF_EXECINSTR) != SHF_EXECINSTR)
 
#define IS_RWDATA(flags)   (((flags) & SHF_ALLOC) == SHF_ALLOC && ((flags) & SHF_WRITE) == SHF_WRITE && ((flags) & SHF_EXECINSTR) != SHF_EXECINSTR)
 

타입정의

typedef unsigned long Elf32_Addr
 
typedef unsigned short Elf32_Half
 
typedef unsigned long Elf32_Off
 
typedef unsigned long Elf32_Sword
 
typedef unsigned long Elf32_Word
 
typedef struct elf_header Elf32_Hdr
 
typedef struct SectionHeader Elf32_Shdr
 

열거형 타입

enum  E_TYPE {
  ET_NONE = 0, ET_REL = 1, ET_EXEC = 2, ET_DYN = 3,
  ET_CORE = 4, ET_LOPROC = 0xff00, ET_HIPROC = 0xffff, ET_NONE = 0,
  ET_REL = 1, ET_EXEC = 2, ET_DYN = 3, ET_CORE = 4,
  ET_LOPROC = 0xff00, ET_HIPROC = 0xffff
}
 
enum  E_MACHINE {
  EM_NONE = 0, EM_M32 = 1, EM_SPARC = 2, EM_386 = 3,
  EM_68K = 4, EM_88K = 5, EM_860 = 7, EM_MIPS = 8,
  EM_NONE = 0, EM_M32 = 1, EM_SPARC = 2, EM_386 = 3,
  EM_68K = 4, EM_88K = 5, EM_860 = 7, EM_MIPS = 8
}
 
enum  E_VERSION { EV_NONE = 0, EV_CURRENT = 1, EV_NONE = 0, EV_CURRENT = 1 }
 
enum  ELF_IDENTIFICATION {
  EI_MAG0 = 0, EI_MAG1 = 1, EI_MAG2 = 2, EI_MAG3 = 3,
  EI_CLASS = 4, EI_DATA = 5, EI_VERSION = 6, EI_PAD = 7,
  EI_NIDENT = 16, EI_MAG0 = 0, EI_MAG1 = 1, EI_MAG2 = 2,
  EI_MAG3 = 3, EI_CLASS = 4, EI_DATA = 5, EI_VERSION = 6,
  EI_PAD = 7, EI_NIDENT = 16
}
 
enum  ELF_MAGIC {
  ELFMAG0 = 0x7f, ELFMAG1 = 'E', ELFMAG2 = 'L', ELFMAG3 = 'F',
  ELFMAG0 = 0x7f, ELFMAG1 = 'E', ELFMAG2 = 'L', ELFMAG3 = 'F'
}
 
enum  EFL_CLASS {
  ELFCLASSNONE = 0, ELFCLASS32 = 1, ELFCLASS64 = 2, ELFCLASSNONE = 0,
  ELFCLASS32 = 1, ELFCLASS64 = 2
}
 
enum  EI_DATA {
  ELFDATANONE = 0, ELFDATA2LSB = 1, ELFDATA2MSB = 2, ELFDATANONE = 0,
  ELFDATA2LSB = 1, ELFDATA2MSB = 2
}
 
enum  DT_TAG {
  DT_NULL = 0, DT_NEEDED = 1, DT_PLTRELSZ = 2, DT_PLTGOT = 3,
  DT_HASH = 4, DT_STRTAB = 5, DT_SYMTAB = 6, DT_RELA = 7,
  DT_RELASZ = 8, DT_RELAENT = 9, DT_STRSZ = 10, DT_SYMENT = 11,
  DT_INIT = 12, DT_FINI = 13, DT_SONAME = 14, DT_RPATH = 15,
  DT_SYMBOLIC = 16, DT_REL = 17, DT_RELSZ = 18, DT_RELENT = 19,
  DT_PLTREL = 20, DT_DEBUG = 21, DT_TEXTREL = 22, DT_JMPREL = 23,
  DT_LOPROC = 0x70000000, DT_HIPROC = 0x7fffffff, DT_NULL = 0, DT_NEEDED = 1,
  DT_PLTRELSZ = 2, DT_PLTGOT = 3, DT_HASH = 4, DT_STRTAB = 5,
  DT_SYMTAB = 6, DT_RELA = 7, DT_RELASZ = 8, DT_RELAENT = 9,
  DT_STRSZ = 10, DT_SYMENT = 11, DT_INIT = 12, DT_FINI = 13,
  DT_SONAME = 14, DT_RPATH = 15, DT_SYMBOLIC = 16, DT_REL = 17,
  DT_RELSZ = 18, DT_RELENT = 19, DT_PLTREL = 20, DT_DEBUG = 21,
  DT_TEXTREL = 22, DT_JMPREL = 23, DT_LOPROC = 0x70000000, DT_HIPROC = 0x7fffffff
}
 
enum  { GRP_COMDAT = 0x01 }
 
enum  ProgramFlags {
  PF_X = 0x01, PF_W = 0x02, PF_R = 0x04, PF_MASKPROC = 0xF0000000,
  PF_X = 0x01, PF_W = 0x02, PF_R = 0x04, PF_MASKPROC = 0xF0000000
}
 
enum  SegmentType {
  PT_NULL = 0x00, PT_LOAD = 0x01, PT_DYNAMIC = 0x02, PT_INTERP = 0x03,
  PT_NOTE = 0x04, PT_SHLIB = 0x05, PT_PHDR = 0x06, PT_LOPROC = 0x70000000,
  PT_HIPROC = 0x7fffffff, PT_NULL = 0x00, PT_LOAD = 0x01, PT_DYNAMIC = 0x02,
  PT_INTERP = 0x03, PT_NOTE = 0x04, PT_SHLIB = 0x05, PT_PHDR = 0x06,
  PT_LOPROC = 0x70000000, PT_HIPROC = 0x7fffffff
}
 
enum  REL_TYPE {
  R_386_NONE = 0, R_386_32 = 1, R_386_PC32 = 2, R_386_GOT32 = 3,
  R_386_PLT32 = 4, R_386_COPY = 5, R_386_GLOB_DAT = 6, R_386_JMP_SLOT = 7,
  R_386_RELATIVE = 8, R_386_GOTOFF = 9, R_386_GOTPC = 10, R_386_NONE = 0,
  R_386_32 = 1, R_386_PC32 = 2, R_386_GOT32 = 3, R_386_PLT32 = 4,
  R_386_COPY = 5, R_386_GLOB_DAT = 6, R_386_JMP_SLOT = 7, R_386_RELATIVE = 8,
  R_386_GOTOFF = 9, R_386_GOTPC = 10
}
 
enum  ST_TYPE {
  STT_NOTYPE = 0, STT_OBJECT = 1, STT_FUNC = 2, STT_SECTION = 3,
  STT_FILE = 4, STT_LOPROC = 13, STT_HIPROC = 15, STT_NOTYPE = 0,
  STT_OBJECT = 1, STT_FUNC = 2, STT_SECTION = 3, STT_FILE = 4,
  STT_LOPROC = 13, STT_HIPROC = 15
}
 
enum  ST_BIND {
  STB_LOCAL = 0, STB_GLOBAL = 1, STB_WEAK = 2, STB_LOPROC = 13,
  STB_HIPROC = 15, STB_LOCAL = 0, STB_GLOBAL = 1, STB_WEAK = 2,
  STB_LOPROC = 13, STB_HIPROC = 15
}
 
enum  { STN_UNDEF = 0 }
 
enum  SH_TYPE {
  SHT_NULL = 0, SHT_PROGBITS = 1, SHT_SYMTAB = 2, SHT_STRTAB = 3,
  SHT_RELA = 4, SHT_HASH = 5, SHT_DYNAMIC = 6, SHT_NOTE = 7,
  SHT_NOBITS = 8, SHT_REL = 9, SHT_SHLIB = 10, SHT_DYNSYM = 11,
  SHT_INIT_ARRAY = 12, SHT_FINI_ARRAY = 13, SHT_PREINIT_ARRAY = 16, SHT_GROUP = 17,
  SHT_SYMTAB_SHNDX = 18, SHT_LOPROC = 0x70000000, SHT_HIPROC = 0x7fffffff, SHT_LOUSER = 0x80000000,
  SHT_HIUSER = 0xffffffff, SHT_NULL = 0, SHT_PROGBITS = 1, SHT_SYMTAB = 2,
  SHT_STRTAB = 3, SHT_RELA = 4, SHT_HASH = 5, SHT_DYNAMIC = 6,
  SHT_NOTE = 7, SHT_NOBITS = 8, SHT_REL = 9, SHT_SHLIB = 10,
  SHT_DYNSYM = 11, SHT_INIT_ARRAY = 12, SHT_FINI_ARRAY = 13, SHT_PREINIT_ARRAY = 16,
  SHT_GROUP = 17, SHT_SYMTAB_SHNDX = 18, SHT_LOPROC = 0x70000000, SHT_HIPROC = 0x7fffffff,
  SHT_LOUSER = 0x80000000, SHT_HIUSER = 0xffffffff
}
 
enum  SH_FLAG {
  SHF_WRITE = 0x01, SHF_ALLOC = 0x02, SHF_EXECINSTR = 0x04, SHF_MERGE = 0x10,
  SHF_STRINGS = 0x20, SHF_INFO_LINK = 0x40, SHF_LINK_ORDER = 0x80, SHF_OS_NONCONFORMING = 0x100,
  SHF_GROUP = 0x200, SHF_TLS = 0x400, SHF_MASKOS = 0xff000000, SHF_AMD64_LARGE = 0x10000000,
  SHF_ORDERED = 0x40000000, SHF_EXCLUDE = 0x80000000, SHF_MASKPROC = 0xf0000000, SHF_WRITE = 0x01,
  SHF_ALLOC = 0x02, SHF_EXECINSTR = 0x04, SHF_MERGE = 0x10, SHF_STRINGS = 0x20,
  SHF_INFO_LINK = 0x40, SHF_LINK_ORDER = 0x80, SHF_OS_NONCONFORMING = 0x100, SHF_GROUP = 0x200,
  SHF_TLS = 0x400, SHF_MASKOS = 0xff000000, SHF_AMD64_LARGE = 0x10000000, SHF_ORDERED = 0x40000000,
  SHF_EXCLUDE = 0x80000000, SHF_MASKPROC = 0xf0000000
}
 
enum  SH_IDX {
  SHN_UNDEF = 0, SHN_LORESERVE = 0xff00, SHN_LOPROC = 0xff00, SHN_BEFORE = 0xff00,
  SHN_AFTER = 0xff01, SHN_HIPROC = 0xff1f, SHN_LOOS = 0xff20, SHN_HIOS = 0xff3f,
  SHN_ABS = 0xfff1, SHN_COMMON = 0xfff2, SHN_XINDEX = 0xffff, SHN_HIRESERVE = 0xffff,
  SHN_UNDEF = 0, SHN_LORESERVE = 0xff00, SHN_LOPROC = 0xff00, SHN_BEFORE = 0xff00,
  SHN_AFTER = 0xff01, SHN_HIPROC = 0xff1f, SHN_LOOS = 0xff20, SHN_HIOS = 0xff3f,
  SHN_ABS = 0xfff1, SHN_COMMON = 0xfff2, SHN_XINDEX = 0xffff, SHN_HIRESERVE = 0xffff
}
 

함수

int main (int argc, char *argv[])
 

변수

enum E_TYPE __attribute__
 

매크로 문서화

#define _DEBUG
#define ENVSIZE   0x1000
#define KERNELAT   0xc0000000

함수 문서화

int main ( int  argc,
char *  argv[] 
)

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.: