FreeBSD/contrib/binutils/gas/config/tc-arm.c
/* Return the size of a relaxable adr pseudo-instruction or PC-relative
   load.  */
Return the size of a relaxable adr pseudo-instruction or PC-relative
load.
Return the size of a relaxable adr pseudo - instruction or PC - relative load .
static int
relax_adr (fragS *fragp, asection *sec, long stretch)
{
  addressT addr;
  offsetT val;
  if (!S_IS_DEFINED(fragp->fr_symbol)
      || sec != S_GET_SEGMENT (fragp->fr_symbol))
    return 4;
  val = relaxed_symbol_addr(fragp, stretch);
  addr = fragp->fr_address + fragp->fr_fix;
  addr = (addr + 4) & ~3;
  if (val & 3)
    return 4;
  val -= addr;
  if (val < 0 || val > 1020)
    return 4;
  return 2;
}
static int relax_adr ( fragS * fragp , asection * sec , long stretch ) { addressT addr ; offsetT val ; if ( ! S_IS_DEFINED ( fragp -> fr_symbol ) || sec != S_GET_SEGMENT ( fragp -> fr_symbol ) ) return 4 ; val = relaxed_symbol_addr ( fragp , stretch ) ; addr = fragp -> fr_address + fragp -> fr_fix ; addr = ( addr + 4 ) & ~ 3 ; if ( val & 3 ) return 4 ; val -= addr ; if ( val < 0 || val > 1020 ) return 4 ; return 2 ; }
Return the size of a relaxable adr pseudo-instruction or PC-relative
load.
Return the size of a relaxable adr pseudo - instruction or PC - relative load .
/* Assume worst case for symbols not known to be in the same section.  */ /* Force misaligned targets to 32-bit variant.  */