int get_elf_header(Elf32_Ehdr* p_Elf32_hdr, FILE* p_file) {
  int nbread;
  nbread = fread(p_Elf32_hdr, sizeof(elf_Ehdr), 1, p_file);

  if (nbread != 1) {
    fprintf(stderr, "Error : while reading ELF header (fread() returned %d)\n", nbread);
    exit(-1);
  }

  invert2(p_Elf32_hdr->e_type);            /* $$$$KMK: bad code !!! Endianess dependant ! */
  invert2(p_Elf32_hdr->e_machine);
  invert4(p_Elf32_hdr->e_version);
  invert4(p_Elf32_hdr->e_entry);
  invert4(p_Elf32_hdr->e_phoff);
  invert4(p_Elf32_hdr->e_shoff);
  invert4(p_Elf32_hdr->e_flags);
  invert2(p_Elf32_hdr->e_ehsize);
  invert2(p_Elf32_hdr->e_phentsize);
  invert2(p_Elf32_hdr->e_phnum);
  invert2(p_Elf32_hdr->e_shentsize);
  invert2(p_Elf32_hdr->e_shnum);
  invert2(p_Elf32_hdr->e_shstrndx);
  return (p_Elf32_hdr->e_type == ET_EXEC)
         && (p_Elf32_hdr->e_machine == EM_SPARC)
         && (p_Elf32_hdr->e_version == EV_CURRENT)
         && (p_Elf32_hdr->e_ident[EI_CLASS] == ELFCLASS32)
         && (p_Elf32_hdr->e_ident[EI_DATA] == ELFDATA2MSB)
         && (p_Elf32_hdr->e_ident[EI_VERSION] == EV_CURRENT);
}
Exemple #2
0
int main() {

printf("Start....");
start:

	printf("\n(input) ");			//계산기 프로그램 시작
	scanf("%s", in1);

	str_in1 = strlen(in1);
																
	c_hoice();

	if (chosen != 1){

	scanf("%s", in2);
	str_in2 = strlen(in2);

	scanf("%s", in3);

	str_in3 = strlen(in3);          

	check_sign_in1();
	check_sign_in3();
	re_array_in1();
	re_array_in3();

	separate();


	if(in2[0] == '-'){
		if(minus_sign_count == 0)
			in2[0] = '-';
		else if(minus_sign_count == 1){
			if(if_minus_first == 1){
			in2[0] = '+';
			when_put_minus =1;}
			if(if_minus_last == 1)
			in2[0] = '+';}
		else{
			in2[0] = '-';
			when_remove_minus =1;}}


	else if(in2[0] == '+'){
		if(minus_sign_count == 0)
			in2[0] = '+';
		else if(minus_sign_count == 1){
			if(if_minus_first == 1)
			in2[0] = '-';
			if(if_minus_last == 1)
			in2[0] = '-';}
		else{ 
			in2[0] = '+';
			when_put_minus=1;}}


	else if(in2[0] == '*'){
		if(minus_sign_count == 0 || minus_sign_count == 2)
			in2[0] = '*';
		else if(minus_sign_count == 1){
			in2[0] = '*';	
			when_put_minus=1;}}

	else if(in2[0] == '/'){
		if(minus_sign_count == 0 || minus_sign_count == 2)
			in2[0] = '/';
		else if(minus_sign_count == 1){
			in2[0] = '/';	
			when_put_minus=1;}}
		
	else if(in2[0] == '%'){
		if(minus_sign_count == 0 || minus_sign_count == 2)
			in2[0] = '%';
		else if(minus_sign_count == 1){
			in2[0] = '%';	
			when_put_minus=1;}}
			


	switch (in2[0]) 				{		
	
	case '+' : { invert1(); convert1(); plus(); convert2(); invert2(); break; }
	case '-' : { invert1(); compare(); convert1(); minus(); convert2(); invert2(); break; }
	case '*' : { invert1(); invert1_mul_s();  multiply(); invert2(); invert2_mul_s(); break;  }
	case '/' : { invert1(); compare(); convert1(); divide(); convert2(); invert2(); break; }
	case '%' : { invert1(); compare(); convert1(); remain(); convert2(); invert2(); break; }

	default: ;
									}	

	printf("        = ");

	if(when_put_minus == 1)
	printf("-");	
	//	if(when_remove_minus == 1)
	//여기서 - 부호 하나를 배열에서 빼주는 명령어 쓸 수 없을까?
			

	if (daeso == 1)
	printf("-");
	comma(res_j);
	if (p != 0)
	{printf(".");
	comma(res_s);}					

	}

    initialization();

	goto start;

	return 0;
}
int main() {

	printf("Start....");
start:

	printf("\n(input) ");			//계산기 프로그램 시작

	input();

	error();

	if(again == 1)
	{
	initialization();
		goto start;
	}

	c_hoice();

	if (chosen != 1){    //in1에 입력받은 문자가 1자리 대소문자가 아닌 경우

		var_cal();
		if (var_cal_switch == 1)
		{
			printf("        = error\n");
			initialization();
			goto start;
		}

		check_sign_in1();   // input1 +/- 부호 체크
		check_sign_in3();   // input3 +/- 부호 체크
		re_array_in1();     // 다항 연산 고려  순서 바꿔 저장
		re_array_in3();     // 다항 연산 고려  순사 바꿔 저장
		separate();

		which_sign();


		switch (in2[0]) 				{		

			case '+' : { invert1(); convert1(); plus(); convert2(); invert2(); break; }
			case '-' : { invert1(); compare(); convert1(); minus(); convert2(); invert2(); break; }
			case '*' : { invert1(); invert1_mul_s();  multiply(); invert2(); invert2_mul_s(); break;  }
			case '/' : { dividing(); break; }
			case '%' : { remain2(); break; }

			default: ;
		}	

		printf("        = ");

		if(when_put_minus == 1)
			printf("-");	


		if (daeso == 1)
			printf("-");
		comma(res_j);
		if (p != 0)
		{printf(".");
			comma(res_s);}					

	}

	initialization();

	goto start;

	return 0;
}