Ejemplo n.º 1
0
int find_name(pid_t pid, const char *name, const char *libn,
              unsigned long *addr) {
    struct mm mm[1000] = { 0 };
    unsigned long libcaddr;
    int nmm;
    char libc[1024] = { 0 };
    symtab_t s;

    if (0 > load_memmap(pid, mm, &nmm)) {
        ALOGD("cannot read memory map\n");
        return -1;
    }
    if (0
        > find_libname((char *) libn, (char *) libc, sizeof(libc),
                       &libcaddr, mm, nmm)) {
        ALOGD("cannot find lib: %s\n", libn);
        return -1;
    }
    //ALOGD("lib: >%s<\n", libc)
    s = load_symtab(libc);
    if (!s) {
        ALOGD("cannot read symbol table\n");
        return -1;
    }
    if (0 > lookup_func_sym(s, (char *) name, addr)) {
        ALOGD("cannot find function: %s\n", name);
        return -1;
    }
    *addr += libcaddr;
    return 0;
}
Ejemplo n.º 2
0
static int
find_name(pid_t pid, char *name, unsigned long *addr)
{
	struct mm mm[1000];
	unsigned long libcaddr;
	int nmm;
	char libc[256];
	symtab_t s;

	if (0 > load_memmap(pid, mm, &nmm)) {
		printf("cannot read memory map\n");
		return -1;
	}
	if (0 > find_libc(libc, sizeof(libc), &libcaddr, mm, nmm)) {
		printf("cannot find libc\n");
		return -1;
	}
	s = load_symtab(libc);
	if (!s) {
		printf("cannot read symbol table\n");
		return -1;
	}
	if (0 > lookup_func_sym(s, name, addr)) {
		printf("cannot find %s\n", name);
		return -1;
	}
	*addr += libcaddr;
	return 0;
}
Ejemplo n.º 3
0
int find_name(pid_t pid, char *name, char *libn, unsigned long *addr)
{
	struct mm mm[250];
	unsigned long libcaddr;
	int nmm;
	char libc[256];
	symtab_t s;
	int load_memmap_return;


	load_memmap_return =  load_memmap(pid, mm, &nmm);

	if (0 > load_memmap_return) {
		//printf("cannot read memory map\n");
		return load_memmap_return;
	}
	if (0 > find_libname(libn, libc, sizeof(libc), &libcaddr, mm, nmm)) {
		log("cannot find libc\n");
		return -2;
	}
	s = load_symtab(libc);
	if (!s) {
		//printf("cannot read symbol table\n");
		return -3;
	}
	if (0 > lookup_func_sym(s, name, addr)) {
		//printf("cannot find %s\n", name);
		return -4;
	}
	*addr += libcaddr;
	return 0;
}
Ejemplo n.º 4
0
int find_name(pid_t pid, char *name, char *libn, unsigned long *addr)
{
	struct mm mm[250];
	unsigned long libcaddr;
	int nmm;
	char libc[512];
	symtab_t s;
	int load_memmap_return;
	int tmp;


	load_memmap_return =  load_memmap(pid, mm, &nmm);

	if (0 > load_memmap_return) {
		//printf("cannot read memory map\n");
		return load_memmap_return;
	}
	if (0 > find_libname(libn, libc, sizeof(libc), &libcaddr, mm, nmm)) {
/* #ifdef DEBUG_UTIL  */
/* 	  log("cannot find %s\n", libn); */
/* #endif */
	  return -2;
	}
	s = load_symtab(libc);
	if (!s) {
		//printf("cannot read symbol table\n");
		return -3;
	}

/* #ifdef DEBUG_UTIL  */
/* 	log("pid %d, name %s, libn %s\n", pid, name, libn); */
/* #endif */

	if (0 > lookup_func_sym(s, name, addr)) {

/* #ifdef DEBUG_UTIL  */
/* 	  log("fail\n"); */
/* 	  log("find_name: cannot find %s\n", name); */
/* #endif */
	  return -4;

	}


/* #ifdef DEBUG_UTIL */
/* 	log("not fail %p %d\n", addr, *addr); */
/* #endif */
	
	//tmp = 4;

	*addr += libcaddr;

	return 0;
}
Ejemplo n.º 5
0
sym_strtab	*get_sym_strtab(char const* bin)
{
  Elf_Scn	*sym_scn;
  int		fd;
  sym_strtab	*list = NULL;

  init_libelf(&fd, bin);
  sym_scn = get_sym_shdr();
  load_symtab(&list, sym_scn);
  resolve_relocations(&list);
  elf_end(e);
  close(fd);
  return list;
}
/* Try to find a symbol table in either MOD->main.elf or MOD->debug.elf.  */
static void
find_symtab (Dwfl_Module *mod)
{
  if (mod->symdata != NULL	/* Already done.  */
      || mod->symerr != DWFL_E_NOERROR) /* Cached previous failure.  */
    return;

  find_file (mod);
  mod->symerr = mod->elferr;
  if (mod->symerr != DWFL_E_NOERROR)
    return;

  /* First see if the main ELF file has the debugging information.  */
  Elf_Scn *symscn = NULL, *xndxscn = NULL;
  GElf_Word strshndx = 0;
  mod->symerr = load_symtab (&mod->main, &mod->symfile, &symscn,
			     &xndxscn, &mod->syments, &strshndx);
  switch (mod->symerr)
    {
    default:
      return;

    case DWFL_E_NOERROR:
      break;

    case DWFL_E_NO_SYMTAB:
      /* Now we have to look for a separate debuginfo file.  */
      mod->symerr = find_debuginfo (mod);
      switch (mod->symerr)
	{
	default:
	  return;

	case DWFL_E_NOERROR:
	  mod->symerr = load_symtab (&mod->debug, &mod->symfile, &symscn,
				     &xndxscn, &mod->syments, &strshndx);
	  break;

	case DWFL_E_CB:		/* The find_debuginfo hook failed.  */
	  mod->symerr = DWFL_E_NO_SYMTAB;
	  break;
	}

      switch (mod->symerr)
	{
	default:
	  return;

	case DWFL_E_NOERROR:
	  break;

	case DWFL_E_NO_SYMTAB:
	  if (symscn != NULL)
	    {
	      /* We still have the dynamic symbol table.  */
	      mod->symerr = DWFL_E_NOERROR;
	      break;
	    }

	  /* Last ditch, look for dynamic symbols without section headers.  */
	  find_dynsym (mod);
	  return;
	}
      break;
    }

  /* This does some sanity checks on the string table section.  */
  if (elf_strptr (mod->symfile->elf, strshndx, 0) == NULL)
    {
    elferr:
      mod->symerr = DWFL_E (LIBELF, elf_errno ());
      return;
    }

  /* Cache the data; MOD->syments was set above.  */

  mod->symstrdata = elf_getdata (elf_getscn (mod->symfile->elf, strshndx),
				 NULL);
  if (mod->symstrdata == NULL)
    goto elferr;

  if (xndxscn == NULL)
    mod->symxndxdata = NULL;
  else
    {
      mod->symxndxdata = elf_getdata (xndxscn, NULL);
      if (mod->symxndxdata == NULL)
	goto elferr;
    }

  mod->symdata = elf_getdata (symscn, NULL);
  if (mod->symdata == NULL)
    goto elferr;
}
void main(){

FILE *infile,*outfile;
char currch,nextch,ch[100],*chp;
staggered_list *listpointer,*root=create_list_with_file("B:keywords");
SYMTAB_ENTRY **symtab=create_symbol_table_array(100);
int dat,length_of;
TOKEN *token,t;
NODE *node;


                int g2_001_DATA_STUFFSUB_A;
                int g3_001_REST_SUBTREE_A;
                int g4_001_SINGLE_SUBTREE_A;
                int g5_001_DOUBLE_SUBTREE_A;
                int g6_001_WORD_SUBTREE_A;
      /**************************************************************************/
      /**************************************************************************/
      /******************** DRIVING PROCEDURE    B:\OPSANYL *********************/
      /**************************************************************************/
       PROCEDURE_DIVISION:
      /**/
      /** The ops analyser takes the .ops file*/
      /** and tokenises it for processing by*/
      /** the ops builder*/
      /**/
       C1_001_OPS_ANALYSER:
           goto C1_002_OPS_START;
       C1_002_OPS_START_EX:
           goto C1_003_OPS;
       C1_003_OPS_EX:
           goto C1_015_OPS_END;
       C1_015_OPS_END_EX:
           goto veryend;
      /**/
       C1_002_OPS_START:
  /*028*/      token=&t;
  /*001*/      infile=open_input("b:altest.ops");
  /*003*/      outfile=open_output("b:opsout.dat");
  /*008*/      load_symtab(symtab,"b:symtable.out");
           cross_reference(symtab,100);
  /*005*/      currch=getc(infile);
           if(currch!=EOF) nextch=getc(infile);
           goto C1_002_OPS_START_EX;
      /**/
       C1_003_OPS:
       C1_004_OP_GROUP_EX:
           if(!(
  /*C01*/         (currch==EOF)
))
                   goto C1_004_OP_GROUP;
           goto C1_003_OPS_EX;
      /**/
       C1_004_OP_GROUP:
           goto C1_005_OP_NUM_REC;
       C1_005_OP_NUM_REC_EX:
           goto C1_014_REST_SUBTREE;
       C1_014_REST_SUBTREE_EX:
           goto C1_004_OP_GROUP_EX;
      /**/
      /** an op consists of the op number*/
      /** followed by the rest of it*/
      /**/
       C1_005_OP_NUM_REC:
           goto C1_006_OP_NUM;
       C1_006_OP_NUM_EX:
           goto C1_011_DATA;
       C1_011_DATA_EX:
           goto C1_005_OP_NUM_REC_EX;
      /**/
       C1_006_OP_NUM:
           goto C1_007_OP_NUM_START;
       C1_007_OP_NUM_START_EX:
           goto C1_008_OP_NUM_BODY;
       C1_008_OP_NUM_BODY_EX:
           goto C1_010_OP_NUM_END;
       C1_010_OP_NUM_END_EX:
           goto C1_006_OP_NUM_EX;
      /**/
       C1_007_OP_NUM_START:
  /*007*/      chp=ch;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C1_007_OP_NUM_START_EX;
      /**/
       C1_008_OP_NUM_BODY:
       C1_009_OP_NUM_NUMBER_EX:
           if(!(
  /*C02*/         (currch==' ')
))
                   goto C1_009_OP_NUM_NUMBER;
           goto C1_008_OP_NUM_BODY_EX;
      /**/
       C1_009_OP_NUM_NUMBER:
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C1_009_OP_NUM_NUMBER_EX;
      /**/
       C1_010_OP_NUM_END:
  /*018*/      dat=str_to_int(ch);
  /*022*/      token->token_type=OP_NUM;token->value.keyword_number=dat;
  /*012*/      write_token(outfile,token);
           goto C1_010_OP_NUM_END_EX;
      /**/
       C1_011_DATA:
       C1_012_DATA_GROUP_EX:
           if(!(
  /*C03*/         (currch==EOF || currch=='\n')
))
                   goto C1_012_DATA_GROUP;
           goto C1_011_DATA_EX;
      /**/
       C1_012_DATA_GROUP:
           goto C1_013_DATA_STUFFSUB;
       C1_013_DATA_STUFFSUB_EX:
           goto C1_012_DATA_GROUP_EX;
      /**/
       C1_013_DATA_STUFFSUB:
                g2_001_DATA_STUFFSUB_A=0;
           goto C2_001_DATA_STUFFSUB;
       C2_001_EXIT01:
           goto C1_013_DATA_STUFFSUB_EX;
      /**/
       C1_014_REST_SUBTREE:
                g3_001_REST_SUBTREE_A=0;
           goto C3_001_REST_SUBTREE;
       C3_001_EXIT01:
           goto C1_014_REST_SUBTREE_EX;
      /**/
       C1_015_OPS_END:
  /*002*/      close_file(infile);
  /*004*/      close_file(outfile);
           goto C1_015_OPS_END_EX;
      /**/
       C2_001_DATA_STUFFSUB:
           goto C2_002_BLANKS;
       C2_002_BLANKS_EX:
           goto C2_004_DATA;
       C2_004_DATA_EX:
       C2_001_DATA_STUFFSUB_A:
                switch(g2_001_DATA_STUFFSUB_A){
                case 0 : goto C2_001_EXIT01;break;
                case 1 : goto C2_001_EXIT03;break;
                }
      /**/
       C2_002_BLANKS:
       C2_003_BLANK_EX:
           if(!(
  /*C04*/         (currch!=' ')
))
                   goto C2_003_BLANK;
           goto C2_002_BLANKS_EX;
      /**/
       C2_003_BLANK:
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C2_003_BLANK_EX;
      /**/
       C2_004_DATA:
           if((
  /*C05*/         (currch=='"' || currch=='\'')
))
                   goto C2_005_NON_NUM_LITERAL;
           if((
  /*C06*/         (currch=='.')
))
                   goto C2_010_FULLSTOP;
           if((
  /*C07*/         (currch!='"' &&
               currch!='\'' &&
               currch!='.' &&
               currch!='\n')
))
                   goto C2_012_WORD;
       C2_005_NON_NUM_LITERAL_EX:
       C2_010_FULLSTOP_EX:
       C2_012_WORD_EX:
           goto C2_004_DATA_EX;
      /**/
       C2_005_NON_NUM_LITERAL:
           if((
  /*C08*/         (currch=='\'')
))
                   goto C2_006_SINGLE;
           if((
  /*C09*/         (currch=='"')
))
                   goto C2_008_DOUBLE;
       C2_006_SINGLE_EX:
       C2_008_DOUBLE_EX:
           goto C2_005_NON_NUM_LITERAL_EX;
      /**/
       C2_006_SINGLE:
           goto C2_007_SINGLE_SUBTREE;
       C2_007_SINGLE_SUBTREE_EX:
           goto C2_006_SINGLE_EX;
      /**/
       C2_007_SINGLE_SUBTREE:
                g4_001_SINGLE_SUBTREE_A=0;
           goto C4_001_SINGLE_SUBTREE;
       C4_001_EXIT01:
           goto C2_007_SINGLE_SUBTREE_EX;
      /**/
       C2_008_DOUBLE:
           goto C2_009_DOUBLE_SUBTREE;
       C2_009_DOUBLE_SUBTREE_EX:
           goto C2_008_DOUBLE_EX;
      /**/
       C2_009_DOUBLE_SUBTREE:
                g5_001_DOUBLE_SUBTREE_A=0;
           goto C5_001_DOUBLE_SUBTREE;
       C5_001_EXIT01:
           goto C2_009_DOUBLE_SUBTREE_EX;
      /**/
       C2_010_FULLSTOP:
           goto C2_011_PERIOD;
       C2_011_PERIOD_EX:
           goto C2_010_FULLSTOP_EX;
      /**/
       C2_011_PERIOD:
  /*013*/      token->token_type=FULLSTOP;token->value.keyword_number=FULLSTOP;
  /*012*/      write_token(outfile,token);
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C2_011_PERIOD_EX;
      /**/
       C2_012_WORD:
           goto C2_013_WORD_SUBTREE;
       C2_013_WORD_SUBTREE_EX:
           goto C2_012_WORD_EX;
      /**/
       C2_013_WORD_SUBTREE:
                g6_001_WORD_SUBTREE_A=0;
           goto C6_001_WORD_SUBTREE;
       C6_001_EXIT01:
           goto C2_013_WORD_SUBTREE_EX;
      /**/
       C6_001_WORD_SUBTREE:
           goto C6_002_WORD_START;
       C6_002_WORD_START_EX:
           goto C6_003_WORD_BODY;
       C6_003_WORD_BODY_EX:
       C6_001_WORD_SUBTREE_A:
                switch(g6_001_WORD_SUBTREE_A){
                case 0 : goto C6_001_EXIT01;break;
                }
      /**/
       C6_002_WORD_START:
  /*007*/      chp=ch;
  /*019*/      *chp='\0';
           goto C6_002_WORD_START_EX;
      /**/
       C6_003_WORD_BODY:
           goto C6_004_KEYWORD;
       C6_004_KEYWORD_EX:
       C6_009_NON_KEYWOR_D_EX:
           goto C6_003_WORD_BODY_EX;
      /**/
       C6_004_KEYWORD:
           goto C6_005_KEYWORD_START;
       C6_005_KEYWORD_START_EX:
           goto C6_006_KEYWORD_BODY;
       C6_006_KEYWORD_BODY_EX:
           goto C6_008_KEYWORD_END;
       C6_008_KEYWORD_END_EX:
           goto C6_004_KEYWORD_EX;
      /**/
       C6_005_KEYWORD_START:
  /*009*/      listpointer=root;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*010*/      listpointer=check_pointer(listpointer,currch);
           if((
  /*Q01*/         (!isupper(currch)) && currch!='-'
))
                   goto C6_009_NON_KEYWOR_D;
           if((
  /*Q02*/         listpointer==NULL
))
                   goto C6_009_NON_KEYWOR_D;
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C6_005_KEYWORD_START_EX;
      /**/
       C6_006_KEYWORD_BODY:
       C6_007_KEYWORD_CHAR_EX:
           if(!(
  /*C10*/         (currch==' ' || currch=='\n' ||
               currch=='.' || currch==EOF)
))
                   goto C6_007_KEYWORD_CHAR;
           goto C6_006_KEYWORD_BODY_EX;
      /**/
       C6_007_KEYWORD_CHAR:
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*010*/      listpointer=check_pointer(listpointer,currch);
           if((
  /*Q01*/         (!isupper(currch)) && currch!='-'
))
                   goto C6_009_NON_KEYWOR_D;
           if((
  /*Q02*/         listpointer==NULL
))
                   goto C6_009_NON_KEYWOR_D;
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C6_007_KEYWORD_CHAR_EX;
      /**/
       C6_008_KEYWORD_END:
  /*011*/      dat=get_data(listpointer);
           if((
  /*Q03*/         dat==NULL
))
                   goto C6_009_NON_KEYWOR_D;
  /*014*/      token->token_type=KEYWORD;token->value.keyword_number=dat;
  /*012*/      write_token(outfile,token);
           goto C6_008_KEYWORD_END_EX;
      /**/
       C6_009_NON_KEYWOR_D:
           goto C6_010_CHARS;
       C6_010_CHARS_EX:
           goto C6_015_CHOICE;
       C6_015_CHOICE_EX:
           goto C6_009_NON_KEYWOR_D_EX;
      /**/
       C6_010_CHARS:
           goto C6_011_CHARS_START;
       C6_011_CHARS_START_EX:
           goto C6_012_CHARS_BODY;
       C6_012_CHARS_BODY_EX:
           goto C6_014_CHARS_END;
       C6_014_CHARS_END_EX:
           goto C6_010_CHARS_EX;
      /**/
       C6_011_CHARS_START:
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C6_011_CHARS_START_EX;
      /**/
       C6_012_CHARS_BODY:
       C6_013_CHAR_EX:
           if(!(
  /*C10*/         (currch==' ' || currch=='\n' ||
               currch=='.' || currch==EOF)
))
                   goto C6_013_CHAR;
           goto C6_012_CHARS_BODY_EX;
      /**/
       C6_013_CHAR:
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C6_013_CHAR_EX;
      /**/
       C6_014_CHARS_END:
  /*027*/      node=look_for_by_name(ch,symtab);
           goto C6_014_CHARS_END_EX;
      /**/
       C6_015_CHOICE:
           if((
  /*C11*/         (node==NULL && isdigit(ch[0]))
))
                   goto C6_016_POSSIBLE_NUMBER;
           if((
  /*C18*/         (node!=NULL)
))
                   goto C6_018_VARIABLE;
       C6_016_POSSIBLE_NUMBER_EX:
       C6_018_VARIABLE_EX:
           goto C6_015_CHOICE_EX;
      /**/
       C6_016_POSSIBLE_NUMBER:
           goto C6_017_NUMBER;
       C6_017_NUMBER_EX:
           goto C6_016_POSSIBLE_NUMBER_EX;
      /**/
       C6_017_NUMBER:
  /*018*/      dat=str_to_int(ch);
  /*024*/      token->token_type=NUMERIC;token->value.keyword_number=dat;
  /*012*/      write_token(outfile,token);
           goto C6_017_NUMBER_EX;
      /**/
       C6_018_VARIABLE:
           goto C6_019_VAR_START;
       C6_019_VAR_START_EX:
           goto C6_018_VARIABLE_EX;
      /**/
       C6_019_VAR_START:
  /*023*/      token->token_type=VARIABLE_NAME;token->value.var_values.hash=node->own.hash;
           token->value.var_values.unique=node->own.unique;
  /*012*/      write_token(outfile,token);
           goto C6_019_VAR_START_EX;
      /**/
       C3_001_REST_SUBTREE:
           goto C3_002_REST_OF_GROUP;
       C3_002_REST_OF_GROUP_EX:
       C3_001_REST_SUBTREE_A:
                switch(g3_001_REST_SUBTREE_A){
                case 0 : goto C3_001_EXIT01;break;
                }
      /**/
       C3_002_REST_OF_GROUP:
       C3_003_DATA_GROUP_EX:
           if(!(
  /*C12*/         (currch==EOF || isdigit(currch))
))
                   goto C3_003_DATA_GROUP;
           goto C3_002_REST_OF_GROUP_EX;
      /**/
       C3_003_DATA_GROUP:
           goto C3_004_DATA;
       C3_004_DATA_EX:
           goto C3_007_DATA_END;
       C3_007_DATA_END_EX:
           goto C3_003_DATA_GROUP_EX;
      /**/
       C3_004_DATA:
       C3_005_LINE_EX:
           if(!(
  /*C13*/         (currch=='\n' || currch==EOF)
))
                   goto C3_005_LINE;
           goto C3_004_DATA_EX;
      /**/
       C3_005_LINE:
           goto C3_006_DATA_STUFFSUB;
       C3_006_DATA_STUFFSUB_EX:
           goto C3_005_LINE_EX;
      /**/
       C3_006_DATA_STUFFSUB:
                g2_001_DATA_STUFFSUB_A=1;
           goto C2_001_DATA_STUFFSUB;
       C2_001_EXIT03:
           goto C3_006_DATA_STUFFSUB_EX;
      /**/
       C3_007_DATA_END:
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C3_007_DATA_END_EX;
      /**/
       C4_001_SINGLE_SUBTREE:
           goto C4_002__START;
       C4_002__START_EX:
           goto C4_003__BODY;
       C4_003__BODY_EX:
           goto C4_007__END;
       C4_007__END_EX:
       C4_001_SINGLE_SUBTREE_A:
                switch(g4_001_SINGLE_SUBTREE_A){
                case 0 : goto C4_001_EXIT01;break;
                }
      /**/
       C4_002__START:
  /*007*/      chp=ch;
  /*019*/      *chp='\0';
  /*025*/      length_of=0;
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C4_002__START_EX;
      /**/
       C4_003__BODY:
       C4_004_CHAR_EX:
           if(!(
  /*C16*/         (currch=='\'' && nextch!='\'')
))
                   goto C4_004_CHAR;
           goto C4_003__BODY_EX;
      /**/
       C4_004_CHAR:
           if((
  /*C14*/         (currch=='\'' && nextch=='\'')
))
                   goto C4_005_QUOTE_QUOTE;
           if(!(
  /*C14*/         (currch=='\'' && nextch=='\'')
))
                   goto C4_006_ANY;
       C4_005_QUOTE_QUOTE_EX:
       C4_006_ANY_EX:
           goto C4_004_CHAR_EX;
      /**/
       C4_005_QUOTE_QUOTE:
  /*026*/      length_of++;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C4_005_QUOTE_QUOTE_EX;
      /**/
       C4_006_ANY:
  /*026*/      length_of++;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C4_006_ANY_EX;
      /**/
       C4_007__END:
  /*017*/      token->token_type=NON_NUMERIC_LITERAL_LENGTH;token->value.keyword_number=
                                                                           length_of;
  /*012*/      write_token(outfile,token);
  /*016*/      token->token_type=NON_NUMERIC_LITERAL;token->value.string=ch;
  /*012*/      write_token(outfile,token);
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C4_007__END_EX;
      /**/
       C5_001_DOUBLE_SUBTREE:
           goto C5_002__START;
       C5_002__START_EX:
           goto C5_003__BODY;
       C5_003__BODY_EX:
           goto C5_007__END;
       C5_007__END_EX:
       C5_001_DOUBLE_SUBTREE_A:
                switch(g5_001_DOUBLE_SUBTREE_A){
                case 0 : goto C5_001_EXIT01;break;
                }
      /**/
       C5_002__START:
  /*007*/      chp=ch;
  /*019*/      *chp='\0';
  /*025*/      length_of=0;
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C5_002__START_EX;
      /**/
       C5_003__BODY:
       C5_004_CHAR_EX:
           if(!(
  /*C17*/         (currch=='"' && nextch!='"')
))
                   goto C5_004_CHAR;
           goto C5_003__BODY_EX;
      /**/
       C5_004_CHAR:
           if((
  /*C15*/         (currch=='"' && nextch=='"')
))
                   goto C5_005_QUOTE_QUOTE;
           if(!(
  /*C15*/         (currch=='"' && nextch=='"')
))
                   goto C5_006_ANY;
       C5_005_QUOTE_QUOTE_EX:
       C5_006_ANY_EX:
           goto C5_004_CHAR_EX;
      /**/
       C5_005_QUOTE_QUOTE:
  /*026*/      length_of++;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C5_005_QUOTE_QUOTE_EX;
      /**/
       C5_006_ANY:
  /*026*/      length_of++;
  /*021*/      *chp=currch;
  /*020*/      chp++;
  /*019*/      *chp='\0';
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C5_006_ANY_EX;
      /**/
       C5_007__END:
  /*017*/      token->token_type=NON_NUMERIC_LITERAL_LENGTH;token->value.keyword_number=
                                                                           length_of;
  /*012*/      write_token(outfile,token);
  /*016*/      token->token_type=NON_NUMERIC_LITERAL;token->value.string=ch;
  /*012*/      write_token(outfile,token);
  /*006*/      currch=nextch;
           if(nextch!=EOF) nextch=getc(infile);
           goto C5_007__END_EX;
      /**/
      /*   Data Analysis Map*/
      /**/
      /*                         ------------- Data Analysis By -------------*/
      /**/
      /*                         BOX TYPE               OPERATION  ALLOCATION*/
      /*  Tree name: OPS-ANALYSER*/
      /**/
      /*                         Leaf      :   5          Operations:  19*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   0*/
      /*                         Sequences :   5*/
      /*                         Iterations:   3*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   2   -->    DATA-STUFFSUB*/
      /*                                                  REST-SUBTREE*/
      /**/
      /*  Tree name: DATA-STUFFSUB*/
      /**/
      /*                         Leaf      :   2          Operations:   4*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   2*/
      /*                         Sequences :   5*/
      /*                         Iterations:   1*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   3   -->    SINGLE-SUBTREE*/
      /*                                                  DOUBLE-SUBTREE*/
      /*                                                  WORD-SUBTREE*/
      /**/
      /*  Tree name: WORD-SUBTREE*/
      /**/
      /*                         Leaf      :   9          Operations:  27*/
      /*                                                  Quits     :   5*/
      /*                         Selections:   1*/
      /*                         Sequences :   6*/
      /*                         Iterations:   2*/
      /*                         Backtracks:   1*/
      /*                         Subtrees  :   0*/
      /**/
      /*  Tree name: REST-SUBTREE*/
      /**/
      /*                         Leaf      :   1          Operations:   1*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   0*/
      /*                         Sequences :   3*/
      /*                         Iterations:   2*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   1   -->    DATA-STUFFSUB*/
      /**/
      /*  Tree name: SINGLE-SUBTREE*/
      /**/
      /*                         Leaf      :   4          Operations:  20*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   1*/
      /*                         Sequences :   1*/
      /*                         Iterations:   1*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   0*/
      /**/
      /*  Tree name: DOUBLE-SUBTREE*/
      /**/
      /*                         Leaf      :   4          Operations:  20*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   1*/
      /*                         Sequences :   1*/
      /*                         Iterations:   1*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   0*/
      /**/
      /**/
      /**/
veryend: ;
}
Ejemplo n.º 8
0
void
elf_hide(int pfile, char *p)
{
	int             i;
	Elf_Ehdr       *pehdr;
	Elf_Shdr       *pshdr;
	Elf_Phdr       *pphdr;
	struct stat     sb;

	pexe = p;
	pehdr = (Elf_Ehdr *) pexe;

#ifdef DEBUG
	printf("elf header\n");
	printf("e_type %x\n", pehdr->e_type);
	printf("e_machine %x\n", pehdr->e_machine);
	printf("e_version %x\n", pehdr->e_version);
	printf("e_entry %x\n", pehdr->e_entry);
	printf("e_phoff %x\n", pehdr->e_phoff);
	printf("e_shoff %x\n", pehdr->e_shoff);
	printf("e_flags %x\n", pehdr->e_flags);
	printf("e_ehsize %x\n", pehdr->e_ehsize);
	printf("e_phentsize %x\n", pehdr->e_phentsize);
	printf("e_phnum %x\n", pehdr->e_phnum);
	printf("e_shentsize %x\n", pehdr->e_shentsize);
	printf("e_shnum %x\n", pehdr->e_shnum);
	printf("e_shstrndx %x\n", pehdr->e_shstrndx);
#endif

	load_shstr_tab(pehdr, pexe);
#ifdef DEBUG
	for (i = 0; i < pehdr->e_shnum; i++) {
		pshdr = (Elf_Phdr *) (pexe + pehdr->e_shoff +
		    (i * pehdr->e_shentsize));

		printf("section header %d\n", i);
		printf("sh_name %x ", pshdr->sh_name);
		fprint_shstr(stdout, pshdr->sh_name);
		printf("\n");
		printf("sh_type %x\n", pshdr->sh_type);
		printf("sh_flags %x\n", pshdr->sh_flags);
		printf("sh_addr %x\n", pshdr->sh_addr);
		printf("sh_offset %x\n", pshdr->sh_offset);
		printf("sh_size %x\n", pshdr->sh_size);
		printf("sh_link %x\n", pshdr->sh_link);
		printf("sh_info %x\n", pshdr->sh_info);
		printf("sh_addralign %x\n", pshdr->sh_addralign);
		printf("sh_entsize %x\n", pshdr->sh_entsize);
	}
#endif				/* DEBUG */

#ifdef DEBUG
	for (i = 0; i < pehdr->e_phnum; i++) {
		pshdr = (Elf_Phdr *) (pexe + pehdr->e_phoff +
		    (i * pehdr->e_phentsize));

		printf("program header %d\n", i);
		printf("p_type %x\n", pphdr->p_type);
		printf("p_offset %x\n", pphdr->p_offset);
		printf("p_vaddr %x\n", pphdr->p_vaddr);
		printf("p_paddr %x\n", pphdr->p_paddr);
		printf("p_filesz %x\n", pphdr->p_filesz);
		printf("p_memsz %x\n", pphdr->p_memsz);
		printf("p_flags %x\n", pphdr->p_flags);
		printf("p_align %x\n", pphdr->p_align);
	}
#endif				/* DEBUG */
#if 0
	for (i = 0; i < pehdr->e_shnum; i++) {
		pshdr = (Elf_Phdr *) (pexe + pehdr->e_shoff +
		    (i * pehdr->e_shentsize));
		if (strcmp(".strtab", get_shstr(pshdr->sh_name)) == 0)
			break;
	}
	fprint_shstr(stdout, pshdr->sh_name);
	printf("\n");
#endif

	load_strtab(pehdr, pexe);
	load_symtab(pehdr, pexe);

	munmap(pexe, sb.st_size);
	close(pfile);
}
void main(){

FILE *infile;
SYMTAB_ENTRY **symtab=create_symbol_table_array(100);
int eof;
TOKEN *token,t;
NODE *node;
COND *cond;
COND **cond_array=create_cond_array();


                int g2_001_LHS_A;
                int g3_001_KEYWORDS_A;
                int g4_001_RHS_A;
                int g5_001_GROUP_SUBTREE_A;
      /**************************************************************************/
      /**************************************************************************/
      /******************* DRIVING PROCEDURE    B:\CONDSBLD ********************/
      /**************************************************************************/
       PROCEDURE_DIVISION:
      /**/
      /** take the output from the condition*/
      /** tokeniser, it consists of an iteration*/
      /** of condition number, left hand side,*/
      /** a relational operator ie NOT >, or >*/
      /** then the right hand side*/
      /**/
       C1_001_CONDS_BUILD:
           goto C1_002_CONDS_START;
       C1_002_CONDS_START_EX:
           goto C1_003_CONDS_BODY;
       C1_003_CONDS_BODY_EX:
           goto C1_009_CONDS_END;
       C1_009_CONDS_END_EX:
           goto veryend;
      /**/
       C1_002_CONDS_START:
  /*001*/      infile=open_input("b:cndout.dat");
  /*007*/      load_symtab(symtab,"b:symtable.out");
           cross_reference(symtab,100);
  /*005*/      token=&t;
  /*006*/      eof=get_token(infile,token);
           goto C1_002_CONDS_START_EX;
      /**/
       C1_003_CONDS_BODY:
       C1_004_COND_EX:
           if(!(
  /*C01*/         (eof==1)
))
                   goto C1_004_COND;
           goto C1_003_CONDS_BODY_EX;
      /**/
       C1_004_COND:
           goto C1_005_COND_NUM;
       C1_005_COND_NUM_EX:
           goto C1_006_LHS;
       C1_006_LHS_EX:
           goto C1_007_KEYWORDS;
       C1_007_KEYWORDS_EX:
           goto C1_008_RHS;
       C1_008_RHS_EX:
           goto C1_004_COND_EX;
      /**/
       C1_005_COND_NUM:
  /*010*/      cond=create_cond();
  /*011*/      cond_array[token->value.keyword_number]=cond;
  /*006*/      eof=get_token(infile,token);
           goto C1_005_COND_NUM_EX;
      /**/
       C1_006_LHS:
                g2_001_LHS_A=0;
           goto C2_001_LHS;
       C2_001_EXIT01:
           goto C1_006_LHS_EX;
      /**/
       C1_007_KEYWORDS:
                g3_001_KEYWORDS_A=0;
           goto C3_001_KEYWORDS;
       C3_001_EXIT01:
           goto C1_007_KEYWORDS_EX;
      /**/
       C1_008_RHS:
                g4_001_RHS_A=0;
           goto C4_001_RHS;
       C4_001_EXIT01:
           goto C1_008_RHS_EX;
      /**/
       C1_009_CONDS_END:
  /*002*/      close_file(infile);
  /*004*/      save_cond_array("b:cndout2.dat",cond_array);
           goto C1_009_CONDS_END_EX;
      /**/
       C5_001_GROUP_SUBTREE:
           if((
  /*C08*/         (token->token_type==RELATIONAL_OP)
))
                   goto C5_002_RELATIONAL;
           if((
  /*C09*/         (token->token_type==KEYWORD)
))
                   goto C5_008_VERB;
       C5_002_RELATIONAL_EX:
       C5_008_VERB_EX:
       C5_001_GROUP_SUBTREE_A:
                switch(g5_001_GROUP_SUBTREE_A){
                case 0 : goto C5_001_EXIT02;break;
                case 1 : goto C5_001_EXIT03;break;
                }
      /**/
       C5_002_RELATIONAL:
           goto C5_003_RELATIONAL_BODY;
       C5_003_RELATIONAL_BODY_EX:
           goto C5_007_RELATIONAL_END;
       C5_007_RELATIONAL_END_EX:
           goto C5_002_RELATIONAL_EX;
      /**/
       C5_003_RELATIONAL_BODY:
           if((
  /*C10*/         (token->value.keyword_number==GREATER_THAN)
))
                   goto C5_004_GREATER_SYMBOL;
           if((
  /*C11*/         (token->value.keyword_number==LESS_THAN)
))
                   goto C5_005_LESS_SYMBOL;
           if((
  /*C12*/         (token->value.keyword_number==EQUAL_TO)
))
                   goto C5_006_EQUAL_SYMBOL;
       C5_004_GREATER_SYMBOL_EX:
       C5_005_LESS_SYMBOL_EX:
       C5_006_EQUAL_SYMBOL_EX:
           goto C5_003_RELATIONAL_BODY_EX;
      /**/
       C5_004_GREATER_SYMBOL:
  /*014*/      cond->relation.relation=GREATER_THAN;
           goto C5_004_GREATER_SYMBOL_EX;
      /**/
       C5_005_LESS_SYMBOL:
  /*015*/      cond->relation.relation=LESS_THAN;
           goto C5_005_LESS_SYMBOL_EX;
      /**/
       C5_006_EQUAL_SYMBOL:
  /*016*/      cond->relation.relation=EQUAL_TO;
           goto C5_006_EQUAL_SYMBOL_EX;
      /**/
       C5_007_RELATIONAL_END:
  /*006*/      eof=get_token(infile,token);
           goto C5_007_RELATIONAL_END_EX;
      /**/
       C5_008_VERB:
           goto C5_009_VERB_BODY;
       C5_009_VERB_BODY_EX:
           goto C5_019_VERB_END;
       C5_019_VERB_END_EX:
           goto C5_008_VERB_EX;
      /**/
       C5_009_VERB_BODY:
           if((
  /*C13*/         (token->value.keyword_number==GREATER)
))
                   goto C5_010_GREATER;
           if((
  /*C14*/         (token->value.keyword_number==LESS)
))
                   goto C5_013_LESS;
           if((
  /*C15*/         (token->value.keyword_number==EQUAL)
))
                   goto C5_016_EQUAL;
       C5_010_GREATER_EX:
       C5_013_LESS_EX:
       C5_016_EQUAL_EX:
           goto C5_009_VERB_BODY_EX;
      /**/
       C5_010_GREATER:
           goto C5_011_GREATER;
       C5_011_GREATER_EX:
           goto C5_012_THAN;
       C5_012_THAN_EX:
           goto C5_010_GREATER_EX;
      /**/
       C5_011_GREATER:
  /*006*/      eof=get_token(infile,token);
           goto C5_011_GREATER_EX;
      /**/
       C5_012_THAN:
  /*014*/      cond->relation.relation=GREATER_THAN;
           goto C5_012_THAN_EX;
      /**/
       C5_013_LESS:
           goto C5_014_LESS;
       C5_014_LESS_EX:
           goto C5_015_THAN;
       C5_015_THAN_EX:
           goto C5_013_LESS_EX;
      /**/
       C5_014_LESS:
  /*006*/      eof=get_token(infile,token);
           goto C5_014_LESS_EX;
      /**/
       C5_015_THAN:
  /*015*/      cond->relation.relation=LESS_THAN;
           goto C5_015_THAN_EX;
      /**/
       C5_016_EQUAL:
           goto C5_017_EQUAL;
       C5_017_EQUAL_EX:
           goto C5_018_TO;
       C5_018_TO_EX:
           goto C5_016_EQUAL_EX;
      /**/
       C5_017_EQUAL:
  /*006*/      eof=get_token(infile,token);
           goto C5_017_EQUAL_EX;
      /**/
       C5_018_TO:
  /*016*/      cond->relation.relation=EQUAL_TO;
           goto C5_018_TO_EX;
      /**/
       C5_019_VERB_END:
  /*006*/      eof=get_token(infile,token);
           goto C5_019_VERB_END_EX;
      /**/
      /** skip the IS, take the NOT and the*/
      /** relational and build a relational part o*/
      /** f the condition*/
      /**/
       C3_001_KEYWORDS:
           goto C3_002_KSTART;
       C3_002_KSTART_EX:
           goto C3_003_POSS_IS;
       C3_003_POSS_IS_EX:
           goto C3_005_KEYWORD_GROUP;
       C3_005_KEYWORD_GROUP_EX:
       C3_001_KEYWORDS_A:
                switch(g3_001_KEYWORDS_A){
                case 0 : goto C3_001_EXIT01;break;
                }
      /**/
       C3_002_KSTART:
  /*023*/      printf("relation bit\n");
           goto C3_002_KSTART_EX;
      /**/
       C3_003_POSS_IS:
           if((
  /*C05*/         (token->token_type==KEYWORD &&
               token->value.keyword_number==IS)
))
                   goto C3_004_IS;
       C3_004_IS_EX:
           goto C3_003_POSS_IS_EX;
      /**/
       C3_004_IS:
  /*006*/      eof=get_token(infile,token);
           goto C3_004_IS_EX;
      /**/
       C3_005_KEYWORD_GROUP:
           if((
  /*C06*/         (token->token_type==KEYWORD &&
               token->value.keyword_number==NOT)
))
                   goto C3_006_NOT_GROUP;
           if((
  /*C07*/         (token->token_type==KEYWORD ||
               token->token_type==RELATIONAL_OP)
))
                   goto C3_010_NOT_NOT_GROUP;
       C3_006_NOT_GROUP_EX:
       C3_010_NOT_NOT_GROUP_EX:
           goto C3_005_KEYWORD_GROUP_EX;
      /**/
       C3_006_NOT_GROUP:
           goto C3_007_NOT;
       C3_007_NOT_EX:
           goto C3_008_GROUP;
       C3_008_GROUP_EX:
           goto C3_006_NOT_GROUP_EX;
      /**/
       C3_007_NOT:
  /*006*/      eof=get_token(infile,token);
  /*017*/      cond->relation.not=YES_STATUS;
           goto C3_007_NOT_EX;
      /**/
       C3_008_GROUP:
           goto C3_009_GROUP_SUBTREE;
       C3_009_GROUP_SUBTREE_EX:
           goto C3_008_GROUP_EX;
      /**/
       C3_009_GROUP_SUBTREE:
                g5_001_GROUP_SUBTREE_A=0;
           goto C5_001_GROUP_SUBTREE;
       C5_001_EXIT02:
           goto C3_009_GROUP_SUBTREE_EX;
      /**/
       C3_010_NOT_NOT_GROUP:
           goto C3_011_GROUP;
       C3_011_GROUP_EX:
           goto C3_010_NOT_NOT_GROUP_EX;
      /**/
       C3_011_GROUP:
           goto C3_012_GROUP_SUBTREE;
       C3_012_GROUP_SUBTREE_EX:
           goto C3_011_GROUP_EX;
      /**/
       C3_012_GROUP_SUBTREE:
                g5_001_GROUP_SUBTREE_A=1;
           goto C5_001_GROUP_SUBTREE;
       C5_001_EXIT03:
           goto C3_012_GROUP_SUBTREE_EX;
      /**/
       C4_001_RHS:
           goto C4_002_RHS_START;
       C4_002_RHS_START_EX:
           goto C4_003_RHS_BODY;
       C4_003_RHS_BODY_EX:
           goto C4_007_RHS_END;
       C4_007_RHS_END_EX:
       C4_001_RHS_A:
                switch(g4_001_RHS_A){
                case 0 : goto C4_001_EXIT01;break;
                }
      /**/
       C4_002_RHS_START:
  /*022*/      printf("right hand side\n");getchar();
  /*021*/      cond->relation.not=NO_STATUS;
           goto C4_002_RHS_START_EX;
      /**/
       C4_003_RHS_BODY:
           if((
  /*C02*/         (token->token_type==NUMERIC)
))
                   goto C4_004_INTEGER;
           if((
  /*C03*/         (token->token_type==VARIABLE_NAME)
))
                   goto C4_005_VARIABLE;
           if((
  /*C04*/         (token->token_type==NON_NUMERIC_LITERAL)
))
                   goto C4_006_STRING;
       C4_004_INTEGER_EX:
       C4_005_VARIABLE_EX:
       C4_006_STRING_EX:
           goto C4_003_RHS_BODY_EX;
      /**/
       C4_004_INTEGER:
  /*018*/      cond->rhs.type=SIDE_LITERAL;
           cond->rhs.contents.numeric_literal=token->value.keyword_number;
  /*025*/      printf("numeric value \n");
           goto C4_004_INTEGER_EX;
      /**/
       C4_005_VARIABLE:
  /*009*/      node=look_for(token->value.var_values.unique,
                         token->value.var_values.hash,
                         symtab);
  /*020*/      cond->rhs.type=SIDE_VAR;
           cond->rhs.contents.variable=node;
  /*026*/      printf("variable\n");
           goto C4_005_VARIABLE_EX;
      /**/
       C4_006_STRING:
  /*019*/      cond->rhs.type=SIDE_NON_LITERAL;
           cond->rhs.contents.non_numeric_literal=token->value.string;
  /*028*/      printf("string2\n");
           goto C4_006_STRING_EX;
      /**/
       C4_007_RHS_END:
  /*006*/      eof=get_token(infile,token);
           goto C4_007_RHS_END_EX;
      /**/
       C2_001_LHS:
           goto C2_002_LHS_START;
       C2_002_LHS_START_EX:
           goto C2_003_LHS_BODY;
       C2_003_LHS_BODY_EX:
           goto C2_007_LHS_END;
       C2_007_LHS_END_EX:
       C2_001_LHS_A:
                switch(g2_001_LHS_A){
                case 0 : goto C2_001_EXIT01;break;
                }
      /**/
       C2_002_LHS_START:
  /*024*/      printf("lefthand side\n");
           goto C2_002_LHS_START_EX;
      /**/
       C2_003_LHS_BODY:
           if((
  /*C02*/         (token->token_type==NUMERIC)
))
                   goto C2_004_INTEGER;
           if((
  /*C03*/         (token->token_type==VARIABLE_NAME)
))
                   goto C2_005_VARIABLE;
           if((
  /*C04*/         (token->token_type==NON_NUMERIC_LITERAL)
))
                   goto C2_006_STRING;
       C2_004_INTEGER_EX:
       C2_005_VARIABLE_EX:
       C2_006_STRING_EX:
           goto C2_003_LHS_BODY_EX;
      /**/
       C2_004_INTEGER:
  /*003*/      cond->lhs.type=SIDE_LITERAL;
  /*008*/      cond->lhs.contents.numeric_literal=token->value.keyword_number;
  /*025*/      printf("numeric value \n");
           goto C2_004_INTEGER_EX;
      /**/
       C2_005_VARIABLE:
  /*009*/      node=look_for(token->value.var_values.unique,
                         token->value.var_values.hash,
                         symtab);
  /*013*/      cond->lhs.contents.variable=node;
           cond->lhs.type=SIDE_VAR;  
  /*026*/      printf("variable\n");
           goto C2_005_VARIABLE_EX;
      /**/
       C2_006_STRING:
  /*012*/      cond->lhs.type=SIDE_NON_LITERAL;
           cond->lhs.contents.non_numeric_literal=token->value.string;
  /*027*/      printf("string\n");
           goto C2_006_STRING_EX;
      /**/
       C2_007_LHS_END:
  /*006*/      eof=get_token(infile,token);
           goto C2_007_LHS_END_EX;
      /**/
      /*   Data Analysis Map*/
      /**/
      /*                         ------------- Data Analysis By -------------*/
      /**/
      /*                         BOX TYPE               OPERATION  ALLOCATION*/
      /*  Tree name: CONDS-BUILD*/
      /**/
      /*                         Leaf      :   3          Operations:   9*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   0*/
      /*                         Sequences :   2*/
      /*                         Iterations:   1*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   3   -->    LHS*/
      /*                                                  KEYWORDS*/
      /*                                                  RHS*/
      /**/
      /*  Tree name: GROUP-SUBTREE*/
      /**/
      /*                         Leaf      :  11          Operations:  11*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   3*/
      /*                         Sequences :   5*/
      /*                         Iterations:   0*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   0*/
      /**/
      /*  Tree name: KEYWORDS*/
      /**/
      /*                         Leaf      :   3          Operations:   4*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   2*/
      /*                         Sequences :   5*/
      /*                         Iterations:   0*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   2   -->    GROUP-SUBTREE*/
      /*                                                  GROUP-SUBTREE*/
      /**/
      /*  Tree name: RHS*/
      /**/
      /*                         Leaf      :   5          Operations:  10*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   1*/
      /*                         Sequences :   1*/
      /*                         Iterations:   0*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   0*/
      /**/
      /*  Tree name: LHS*/
      /**/
      /*                         Leaf      :   5          Operations:  10*/
      /*                                                  Quits     :   0*/
      /*                         Selections:   1*/
      /*                         Sequences :   1*/
      /*                         Iterations:   0*/
      /*                         Backtracks:   0*/
      /*                         Subtrees  :   0*/
      /**/
      /**/
      /**/
veryend: ;
}