FreeBSD/contrib/binutils/gas/config/tc-mips.c
/* Mark instruction labels in mips16 mode.  This permits the linker to
   handle them specially, such as generating jalx instructions when
   needed.  We also make them odd for the duration of the assembly, in
   order to generate the right sort of code.  We will make them even
   in the adjust_symtab routine, while leaving them marked.  This is
   convenient for the debugger and the disassembler.  The linker knows
   to make them odd again.  */
Mark instruction labels in mips16 mode.  This permits the linker to
handle them specially, such as generating jalx instructions when
needed.  We also make them odd for the duration of the assembly, in
order to generate the right sort of code.  We will make them even
in the adjust_symtab routine, while leaving them marked.  This is
convenient for the debugger and the disassembler.  The linker knows
to make them odd again.
Mark instruction labels in mips16 mode . This permits the linker to handle them specially such as generating jalx instructions when needed . We also make them odd for the duration of the assembly in order to generate the right sort of code . We will make them even in the adjust_symtab routine while leaving them marked . This is convenient for the debugger and the disassembler . The linker knows to make them odd again .
static void
mips16_mark_labels (void)
{
  segment_info_type *si = seg_info (now_seg);
  struct insn_label_list *l;
  if (!mips_opts.mips16)
    return;
  for (l = si->label_list; l != NULL; l = l->next)
   {
      symbolS *label = l->label;
#if defined(OBJ_ELF) || defined(OBJ_MAYBE_ELF)
      if (IS_ELF)
	S_SET_OTHER (label, STO_MIPS16);
#endif
      if ((S_GET_VALUE (label) & 1) == 0
	  && ! S_IS_WEAK (label)
	  && ! S_IS_EXTERNAL (label)
	  && ! s_is_linkonce (label, now_seg))
	S_SET_VALUE (label, S_GET_VALUE (label) | 1);
    }
}
static void mips16_mark_labels ( void ) { segment_info_type * si = seg_info ( now_seg ) ; struct insn_label_list * l ; if ( ! mips_opts . mips16 ) return ; for ( l = si -> label_list ; l != NULL ; l = l -> next ) { symbolS * label = l -> label ; #if defined ( OBJ_ELF ) || defined ( OBJ_MAYBE_ELF ) if ( IS_ELF ) S_SET_OTHER ( label , STO_MIPS16 ) ; #endif if ( ( S_GET_VALUE ( label ) & 1 ) == 0 && ! S_IS_WEAK ( label ) && ! S_IS_EXTERNAL ( label ) && ! s_is_linkonce ( label , now_seg ) ) S_SET_VALUE ( label , S_GET_VALUE ( label ) | 1 ) ; } }
Mark instruction labels in mips16 mode.
Mark instruction labels in mips16 mode .
/* Don't adjust the address if the label is global or weak, or
	   in a link-once section, since we'll be emitting symbol reloc
	   references to it which will be patched up by the linker, and
	   the final value of the symbol may or may not be MIPS16.  */