case IMAGE_REL_PPC_TOCREL16:
ppc_coff_rtype2howto (relent, internal)     arelent *relent;     struct internal_reloc *internal;{    /* We can encode one of three things in the type field, aside from the     type:     1. IMAGE_REL_PPC_NEG - indicates the value field is a subtraction        value, rather than an addition value     2. IMAGE_REL_PPC_BRTAKEN, IMAGE_REL_PPC_BRNTAKEN - indicates that        the branch is expected to be taken or not.     3. IMAGE_REL_PPC_TOCDEFN - toc slot definition in the file     For now, we just strip this stuff to find the type, and ignore it other     than that.  */  unsigned short r_type  = EXTRACT_TYPE (internal->r_type);  unsigned short r_flags = EXTRACT_FLAGS(internal->r_type);  unsigned short junk    = EXTRACT_JUNK (internal->r_type);  /* the masking process only slices off the bottom byte for r_type. */  if ( r_type > MAX_RELOC_INDEX )     {      fprintf(stderr, 	      "ppc_coff_rtype2howto: reloc index %d out of range [%d, %d]\n",	      internal->r_type, 0, MAX_RELOC_INDEX);      abort();    }  /* check for absolute crap */  if ( junk != 0 )    {      fprintf(stderr, 	      "ppc_coff_rtype2howto: reloc index %d contains junk %d\n",	      internal->r_type, junk);      abort();    }#ifdef DEBUG_RELOC  /* now examine flags */  if (r_flags != 0)     {      fprintf (stderr, "Reloc with flags found!");      if ( r_flags & IMAGE_REL_PPC_NEG ) 	fprintf (stderr, " NEG");      if ( r_flags & IMAGE_REL_PPC_BRTAKEN )	fprintf (stderr, " BRTAKEN");      if ( r_flags & IMAGE_REL_PPC_BRNTAKEN )	fprintf (stderr, " BRNTAKEN");      if ( r_flags & IMAGE_REL_PPC_TOCDEFN )	fprintf (stderr, " TOCDEFN");      fprintf(stderr, "\n");    }#endif  switch(r_type)     {    case IMAGE_REL_PPC_ADDR16:    case IMAGE_REL_PPC_REL24:    case IMAGE_REL_PPC_ADDR24:    case IMAGE_REL_PPC_TOCREL16:    case IMAGE_REL_PPC_ADDR32:    case IMAGE_REL_PPC_IFGLUE:    case IMAGE_REL_PPC_ADDR32NB:    case IMAGE_REL_PPC_SECTION:    case IMAGE_REL_PPC_SECREL:      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, internal);      break;    case IMAGE_REL_PPC_IMGLUE:      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, internal);      break;    default:      fprintf(stderr, 	      "Warning: Unsupported reloc %s [%d] used -- it may not work.\n",	      ppc_coff_howto_table[r_type].name,	      r_type);      break;    }    relent->howto = ppc_coff_howto_table + r_type;  }