/*********************************************************** * 功能: COFF初始化 **********************************************************/ void init_coff() { dynarray_init(§ions,8); nsec_image = 0; sec_text = section_new(".text", IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_CNT_CODE); sec_data = section_new(".data", IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_INITIALIZED_DATA); sec_rdata = section_new(".rdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA); sec_idata = section_new(".idata", IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_INITIALIZED_DATA); sec_bss = section_new(".bss", IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_UNINITIALIZED_DATA); sec_rel = section_new(".rel", IMAGE_SCN_LNK_REMOVE | IMAGE_SCN_MEM_READ); sec_symtab = new_coffsym_section(".symtab", IMAGE_SCN_LNK_REMOVE | IMAGE_SCN_MEM_READ,".strtab"); sec_dynsymtab = new_coffsym_section(".dynsym", IMAGE_SCN_LNK_REMOVE | IMAGE_SCN_MEM_READ,".dynstr"); coffsym_add(sec_symtab,"",0,0,0,IMAGE_SYM_CLASS_NULL); coffsym_add(sec_symtab,".data",0,sec_data->index,0,IMAGE_SYM_CLASS_STATIC); coffsym_add(sec_symtab,".bss",0,sec_bss->index,0,IMAGE_SYM_CLASS_STATIC); coffsym_add(sec_symtab,".rdata",0,sec_rdata->index,0,IMAGE_SYM_CLASS_STATIC); coffsym_add(sec_dynsymtab,"",0,0,0,IMAGE_SYM_CLASS_NULL); }
/* * creates a new traceslang_erefset_t structure */ traceslang_erefset_t *traceslang_newrefset (void) { traceslang_erefset_t *eset = (traceslang_erefset_t *)smalloc (sizeof (traceslang_erefset_t)); dynarray_init (eset->events); return eset; }
/* * initialises interactive state */ void eac_init_istate (void) { eac_istate = (eac_istate_t *)smalloc (sizeof (eac_istate_t)); dynarray_init (eac_istate->procs); return; }
/* * creates a new unixfhscheme_t structure */ static unixfhscheme_t *unix_newfhscheme (void) { unixfhscheme_t *uscheme = (unixfhscheme_t *)smalloc (sizeof (unixfhscheme_t)); dynarray_init (uscheme->ofiles); return uscheme; }
void opcode_dict_init(opcode_dict_t od) { long i; for(i=0;i<OpcodeTypeMax;i+=1) { dynarray_init(&od->stub_by_index[i]); init_hashtab(&od->stub_by_name[i],(hash_func) hash_str, (compare_func) strcmp); } init_hashtab(&od->wordcode_by_stub, (hash_func) hash_ptr, (compare_func) cmp_ptr); init_hashtab(&od->name_by_stub, (hash_func) hash_ptr, (compare_func) cmp_ptr); init_hashtab(&od->overrides_by_stub, (hash_func) hash_ptr, (compare_func) cmp_ptr); }
STATIC DHCPv6SocketGlobalsRef DHCPv6SocketCreateGlobals(void) { DHCPv6SocketGlobalsRef globals = malloc(sizeof(*globals)); if (globals == NULL) { return (NULL); } bzero(globals, sizeof(*globals)); dynarray_init(&globals->sockets, DHCPv6SocketFreeElement, NULL); globals->timer_callout = timer_callout_init(); return (globals); }
static interface_t * S_next_entry(interface_list_t * interfaces, const char * name) { interface_t * entry; if (interfaces->count >= interfaces->size) return (NULL); entry = interfaces->list + interfaces->count++; bzero(entry, sizeof(*entry)); strlcpy(entry->name, name, sizeof(entry->name)); dynarray_init(&entry->inet, inet_addrinfo_free, inet_addrinfo_copy); return (entry); }
/* * initialises keyword processing */ void keywords_init (void) { int i; int maxtag = 0; for (i = MIN_HASH_VALUE; i <= MAX_HASH_VALUE; i++) { if (wordlist[i].name && (wordlist[i].tagval > maxtag)) { maxtag = wordlist[i].tagval; } } dynarray_init (ikeywords); dynarray_setsize (ikeywords, maxtag + 10); for (i = MIN_HASH_VALUE; i <= MAX_HASH_VALUE; i++) { if (wordlist[i].name && (wordlist[i].tagval >= 0)) { DA_SETNTHITEM (ikeywords, wordlist[i].tagval, (keyword_t *)&(wordlist[i])); } } stringhash_sinit (extrakeywords); return; }
void init_lex(){ TkWord * tp; static TkWord keywords[] = { {TK_PLUS, NULL, "+", NULL, NULL}, {TK_MINUS, NULL, "-", NULL, NULL}, {TK_STAR, NULL, "*", NULL, NULL}, {TK_DIVIDE, NULL, "/", NULL, NULL}, {TK_MOD, NULL, "%", NULL, NULL}, {TK_EQ, NULL, "==", NULL, NULL}, {TK_NEQ, NULL, "!=", NULL, NULL}, {TK_LT, NULL, "<", NULL, NULL}, {TK_LEQ, NULL, "<=", NULL, NULL}, {TK_GT, NULL, ">", NULL, NULL}, {TK_GEQ, NULL, ">=", NULL, NULL}, {TK_ASSIGN, NULL, "=", NULL, NULL}, {TK_POINTSTO, NULL, "->", NULL, NULL}, {TK_DOT, NULL, ".", NULL, NULL}, {TK_AND, NULL, "&", NULL, NULL}, {TK_OPENPA, NULL, "(", NULL, NULL}, {TK_CLOSEPA, NULL, ")", NULL, NULL}, {TK_OPENBR, NULL, "[", NULL, NULL}, {TK_CLOSEBR, NULL, "]", NULL, NULL}, {TK_BEGIN, NULL, "{", NULL, NULL}, {TK_END, NULL, "}", NULL, NULL}, {TK_SEMICOLON, NULL, ";", NULL, NULL}, {TK_COMMA, NULL, ",", NULL, NULL}, {TK_ELLIPSIS, NULL, "...", NULL, NULL}, {TK_EOF, NULL, "End_Of_File", NULL, NULL}, /** 常量*/ {TK_CINT, NULL, "cint", NULL, NULL}, {TK_CCHAR, NULL, "cchar", NULL, NULL}, {TK_CSTR, NULL, "cstr", NULL, NULL}, /**关键字*/ {KW_CHAR, NULL, "char", NULL, NULL}, {KW_SHORT, NULL, "short", NULL, NULL}, {KW_INT, NULL, "int", NULL, NULL}, {KW_VOID, NULL, "void", NULL, NULL}, {KW_STRUCT, NULL, "struct", NULL, NULL}, {KW_IF, NULL, "if", NULL, NULL}, {KW_ELSE, NULL, "else", NULL, NULL}, {KW_FOR, NULL, "for", NULL, NULL}, {KW_CONTINUE, NULL, "continue", NULL, NULL}, {KW_BREAK, NULL, "break", NULL, NULL}, {KW_RETURN, NULL, "return", NULL, NULL}, {KW_SIZEOF, NULL, "sizeof", NULL, NULL}, {KW_ALIGN, NULL, "__align", NULL, NULL}, {KW_CDECL, NULL, " __cdecl", NULL, NULL}, {KW_STDCALL, NULL, " __stdall", NULL, NULL}, /**标识符*/ {0, NULL, NULL, NULL, NULL} }; dynarray_init(&tktable,8); for(tp = &keywords[0];tp->spelling != NULL;tp++) tkword_direct_insert(tp); }
void DHCPLeaseListInit(DHCPLeaseListRef list_p) { dynarray_init(list_p, DHCPLeaseDeallocate, NULL); return; }