FreeBSD/contrib/binutils/gas/config/tc-arm.c
/* We need to be able to fix up arbitrary expressions in some statements.
   This is so that we can handle symbols that are an arbitrary distance from
   the pc.  The most common cases are of the form ((+/-sym -/+ . - 8) & mask),
   which returns part of an address in a form which will be valid for
   a data instruction.	We do this by pushing the expression into a symbol
   in the expr_section, and creating a fix for that.  */
We need to be able to fix up arbitrary expressions in some statements.
This is so that we can handle symbols that are an arbitrary distance from
the pc.  The most common cases are of the form ((+/-sym -/+ . - 8) & mask),
which returns part of an address in a form which will be valid for
a data instruction.  We do this by pushing the expression into a symbol
in the expr_section, and creating a fix for that.
We need to be able to fix up arbitrary expressions in some statements . This is so that we can handle symbols that are an arbitrary distance from the pc . The most common cases are of the form (( + / - sym - / + . - 8 ) & mask ) which returns part of an address in a form which will be valid for a data instruction . We do this by pushing the expression into a symbol in the expr_section and creating a fix for that .
static void
fix_new_arm (fragS *	   frag,
	     int	   where,
	     short int	   size,
	     expressionS * exp,
	     int	   pc_rel,
	     int	   reloc)
{
  fixS *	   new_fix;
  switch (exp->X_op)
    {
    case O_constant:
    case O_symbol:
    case O_add:
    case O_subtract:
      new_fix = fix_new_exp (frag, where, size, exp, pc_rel, reloc);
      break;
    default:
      new_fix = fix_new (frag, where, size, make_expr_symbol (exp), 0,
			 pc_rel, reloc);
      break;
    }
  new_fix->tc_fix_data = thumb_mode;
}
static void fix_new_arm ( fragS * frag , int where , short int size , expressionS * exp , int pc_rel , int reloc ) { fixS * new_fix ; switch ( exp -> X_op ) { case O_constant : case O_symbol : case O_add : case O_subtract : new_fix = fix_new_exp ( frag , where , size , exp , pc_rel , reloc ) ; break ; default : new_fix = fix_new ( frag , where , size , make_expr_symbol ( exp ) , 0 , pc_rel , reloc ) ; break ; } new_fix -> tc_fix_data = thumb_mode ; }
We need to be able to fix up arbitrary expressions in some statements.
We need to be able to fix up arbitrary expressions in some statements .
/* Mark whether the fix is to a THUMB instruction, or an ARM
     instruction.  */