case OPTION_32: mips_64 = 0; break;  case OPTION_64: { const char **list, **l;  list = bfd_target_list (); for (l = list; *l != NULL; l++) if (strcmp (*l, "elf64-bigmips") == 0 || strcmp (*l, "elf64-littlemips") == 0) break; if (*l == NULL) as_fatal ("No compiled in support for 64 bit object file format"); free (list); mips_64 = 1; } break;
md_parse_option (c, arg)     int c;     char *arg;{  switch (c)    {    case OPTION_TRAP:      mips_trap = 1;      break;    case OPTION_BREAK:      mips_trap = 0;      break;    case OPTION_EB:      target_big_endian = 1;      break;    case OPTION_EL:      target_big_endian = 0;      break;    case 'O':      if (arg && arg[1] == '0')	mips_optimize = 1;      else	mips_optimize = 2;      break;    case 'g':      if (arg == NULL)	mips_debug = 2;      else	mips_debug = atoi (arg);      /* When the MIPS assembler sees -g or -g2, it does not do         optimizations which limit full symbolic debugging.  We take         that to be equivalent to -O0.  */      if (mips_debug == 2)	mips_optimize = 0;      break;    case OPTION_MIPS1:      mips_isa = 1;      if (mips_cpu == -1)	mips_cpu = 3000;      break;    case OPTION_MIPS2:      mips_isa = 2;      if (mips_cpu == -1)	mips_cpu = 6000;      break;    case OPTION_MIPS3:      mips_isa = 3;      if (mips_cpu == -1)	mips_cpu = 4000;      break;    case OPTION_MIPS4:      mips_isa = 4;      if (mips_cpu == -1)	mips_cpu = 8000;      break;    case OPTION_MCPU:      {	char *p;	/* Identify the processor type */	p = arg;	if (strcmp (p, "default") == 0	    || strcmp (p, "DEFAULT") == 0)	  mips_cpu = -1;	else	  {	    int sv = 0;	    /* We need to cope with the various "vr" prefixes for the 4300	       processor.  */	    if (*p == 'v' || *p == 'V')	      {		sv = 1;		p++;	      }	    if (*p == 'r' || *p == 'R')	      p++;	    mips_cpu = -1;	    switch (*p)	      {	      case '1':		if (strcmp (p, "10000") == 0		    || strcmp (p, "10k") == 0		    || strcmp (p, "10K") == 0)		  mips_cpu = 10000;		break;	      case '2':		if (strcmp (p, "2000") == 0		    || strcmp (p, "2k") == 0		    || strcmp (p, "2K") == 0)		  mips_cpu = 2000;		break;	      case '3':		if (strcmp (p, "3000") == 0		    || strcmp (p, "3k") == 0		    || strcmp (p, "3K") == 0)		  mips_cpu = 3000;		break;	      case '4':		if (strcmp (p, "4000") == 0		    || strcmp (p, "4k") == 0		    || strcmp (p, "4K") == 0)		  mips_cpu = 4000;		else if (strcmp (p, "4100") == 0)                  {                    mips_cpu = 4100;                    if (mips_4100 < 0)                      mips_4100 = 1;                  }		else if (strcmp (p, "4300") == 0)		  mips_cpu = 4300;		else if (strcmp (p, "4400") == 0)		  mips_cpu = 4400;		else if (strcmp (p, "4600") == 0)		  mips_cpu = 4600;		else if (strcmp (p, "4650") == 0)		  {		    mips_cpu = 4650;		    if (mips_4650 < 0)		      mips_4650 = 1;		  }		else if (strcmp (p, "4010") == 0)		  {		    mips_cpu = 4010;		    if (mips_4010 < 0)		      mips_4010 = 1;		  }		break;	      case '6':		if (strcmp (p, "6000") == 0		    || strcmp (p, "6k") == 0		    || strcmp (p, "6K") == 0)		  mips_cpu = 6000;		break;	      case '8':		if (strcmp (p, "8000") == 0		    || strcmp (p, "8k") == 0		    || strcmp (p, "8K") == 0)		  mips_cpu = 8000;		break;	      case 'o':		if (strcmp (p, "orion") == 0)		  mips_cpu = 4600;		break;	      }	    if (sv && mips_cpu != 4300 && mips_cpu != 4100)	      {		as_bad ("ignoring invalid leading 'v' in -mcpu=%s switch", arg);		return 0;	      }	    if (mips_cpu == -1)	      {		as_bad ("invalid architecture -mcpu=%s", arg);		return 0;	      }	  }      }      break;    case OPTION_M4650:      mips_4650 = 1;      break;    case OPTION_NO_M4650:      mips_4650 = 0;      break;    case OPTION_M4010:      mips_4010 = 1;      break;    case OPTION_NO_M4010:      mips_4010 = 0;      break;    case OPTION_M4100:      mips_4100 = 1;      break;    case OPTION_NO_M4100:      mips_4100 = 0;      break;    case OPTION_MEMBEDDED_PIC:      mips_pic = EMBEDDED_PIC;      if (USE_GLOBAL_POINTER_OPT && g_switch_seen)	{	  as_bad ("-G may not be used with embedded PIC code");	  return 0;	}      g_switch_value = 0x7fffffff;      break;  /* When generating ELF code, we permit -KPIC and -call_shared to     select SVR4_PIC, and -non_shared to select no PIC.  This is     intended to be compatible with Irix 5.  */    case OPTION_CALL_SHARED:      if (OUTPUT_FLAVOR != bfd_target_elf_flavour)	{	  as_bad ("-call_shared is supported only for ELF format");	  return 0;	}      mips_pic = SVR4_PIC;      if (g_switch_seen && g_switch_value != 0)	{	  as_bad ("-G may not be used with SVR4 PIC code");	  return 0;	}      g_switch_value = 0;      break;    case OPTION_NON_SHARED:      if (OUTPUT_FLAVOR != bfd_target_elf_flavour)	{	  as_bad ("-non_shared is supported only for ELF format");	  return 0;	}      mips_pic = NO_PIC;      break;    case 'G':      if (! USE_GLOBAL_POINTER_OPT)	{	  as_bad ("-G is not supported for this configuration");	  return 0;	}      else if (mips_pic == SVR4_PIC || mips_pic == EMBEDDED_PIC)	{	  as_bad ("-G may not be used with SVR4 or embedded PIC code");	  return 0;	}      else	g_switch_value = atoi (arg);      g_switch_seen = 1;      break;    default:      return 0;    }  return 1;}