Exemplo n.º 1
0
Arquivo: outcoff.c Projeto: 7ym0n/note
/***********************************************************
 * 功能:	COFF初始化
 **********************************************************/
void init_coff()
{
	dynarray_init(&sections,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);
}
Exemplo n.º 2
0
/*
 *	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;
}
Exemplo n.º 3
0
/*
 *	initialises interactive state
 */
void eac_init_istate (void)
{
	eac_istate = (eac_istate_t *)smalloc (sizeof (eac_istate_t));

	dynarray_init (eac_istate->procs);

	return;
}
Exemplo n.º 4
0
/*
 *	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;
}
Exemplo n.º 5
0
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);
}
Exemplo n.º 8
0
/*
 *	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;
}
Exemplo n.º 9
0
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);

}
Exemplo n.º 10
0
void
DHCPLeaseListInit(DHCPLeaseListRef list_p)
{
    dynarray_init(list_p, DHCPLeaseDeallocate, NULL);
    return;
}