fprintf (info->stream, "-"); objdump_print_value (secaddr - vma, info->stream);
(*info->fprintf_func) (info->stream, "-"); objdump_print_value (secaddr - vma, info);
objdump_print_address (vma, info)     bfd_vma vma;     struct disassemble_info *info;{  /* @@ Would it speed things up to cache the last two symbols returned,     and maybe their address ranges?  For many processors, only one memory     operand can be present at a time, so the 2-entry cache wouldn't be     constantly churned by code doing heavy memory accesses.  */  /* Indices in `sorted_syms'.  */  long min = 0;  long max = sorted_symcount;  long thisplace;  fprintf_vma (info->stream, vma);  if (sorted_symcount < 1)    return;  /* Perform a binary search looking for the closest symbol to the     required value.  We are searching the range (min, max].  */  while (min + 1 < max)    {      asymbol *sym;      thisplace = (max + min) / 2;      sym = sorted_syms[thisplace];      if (bfd_asymbol_value (sym) > vma)	max = thisplace;      else if (bfd_asymbol_value (sym) < vma)	min = thisplace;      else	{	  min = thisplace;	  break;	}    }  /* The symbol we want is now in min, the low end of the range we     were searching.  If there are several symbols with the same     value, we want the first one.  */  thisplace = min;  while (thisplace > 0	 && (bfd_asymbol_value (sorted_syms[thisplace])	     == bfd_asymbol_value (sorted_syms[thisplace - 1])))    --thisplace;  {    /* If the file is relocateable, and the symbol could be from this       section, prefer a symbol from this section over symbols from       others, even if the other symbol's value might be closer.              Note that this may be wrong for some symbol references if the       sections have overlapping memory ranges, but in that case there's       no way to tell what's desired without looking at the relocation       table.  */    struct objdump_disasm_info *aux;    long i;    aux = (struct objdump_disasm_info *) info->application_data;    if (sorted_syms[thisplace]->section != aux->sec	&& (aux->require_sec	    || ((aux->abfd->flags & HAS_RELOC) != 0		&& vma >= bfd_get_section_vma (aux->abfd, aux->sec)		&& vma < (bfd_get_section_vma (aux->abfd, aux->sec)			  + bfd_section_size (aux->abfd, aux->sec)))))      {	for (i = thisplace + 1; i < sorted_symcount; i++)	  {	    if (bfd_asymbol_value (sorted_syms[i])		!= bfd_asymbol_value (sorted_syms[thisplace]))	      break;	  }	--i;	for (; i >= 0; i--)	  {	    if (sorted_syms[i]->section == aux->sec		&& (i == 0		    || sorted_syms[i - 1]->section != aux->sec		    || (bfd_asymbol_value (sorted_syms[i])			!= bfd_asymbol_value (sorted_syms[i - 1]))))	      {		thisplace = i;		break;	      }	  }	if (sorted_syms[thisplace]->section != aux->sec)	  {	    /* We didn't find a good symbol with a smaller value.               Look for one with a larger value.  */	    for (i = thisplace + 1; i < sorted_symcount; i++)	      {		if (sorted_syms[i]->section == aux->sec)		  {		    thisplace = i;		    break;		  }	      }	  }	if (sorted_syms[thisplace]->section != aux->sec	    && (aux->require_sec		|| ((aux->abfd->flags & HAS_RELOC) != 0		    && vma >= bfd_get_section_vma (aux->abfd, aux->sec)		    && vma < (bfd_get_section_vma (aux->abfd, aux->sec)			      + bfd_section_size (aux->abfd, aux->sec)))))	  {	    bfd_vma secaddr;	    fprintf (info->stream, " <%s",		     bfd_get_section_name (aux->abfd, aux->sec));	    secaddr = bfd_get_section_vma (aux->abfd, aux->sec);	    if (vma < secaddr)	      {		fprintf (info->stream, "-");		objdump_print_value (secaddr - vma, info->stream);	      }	    else if (vma > secaddr)	      {		fprintf (info->stream, "+");		objdump_print_value (vma - secaddr, info->stream);	      }	    fprintf (info->stream, ">");	    return;	  }      }  }  fprintf (info->stream, " <%s", sorted_syms[thisplace]->name);  if (bfd_asymbol_value (sorted_syms[thisplace]) > vma)    {      fprintf (info->stream, "-");      objdump_print_value (bfd_asymbol_value (sorted_syms[thisplace]) - vma,			   info->stream);    }  else if (vma > bfd_asymbol_value (sorted_syms[thisplace]))    {      fprintf (info->stream, "+");      objdump_print_value (vma - bfd_asymbol_value (sorted_syms[thisplace]),			   info->stream);    }  fprintf (info->stream, ">");}