FreeBSD/contrib/binutils/gas/config/tc-arm.c
/* Find the real, Thumb encoded start of a Thumb function.  */
Find the real, Thumb encoded start of a Thumb function.
Find the real Thumb encoded start of a Thumb function .
static symbolS *
find_real_start (symbolS * symbolP)
{
  char *       real_start;
  const char * name = S_GET_NAME (symbolP);
  symbolS *    new_target;
#define STUB_NAME ".real_start_of"
  if (name == NULL)
    abort ();
  if (S_IS_LOCAL (symbolP) || name[0] == '.')
    return symbolP;
  real_start = ACONCAT ((STUB_NAME, name, NULL));
  new_target = symbol_find (real_start);
  if (new_target == NULL)
    {
      as_warn ("Failed to find real start of function: %s\n", name);
      new_target = symbolP;
    }
  return new_target;
}
static symbolS * find_real_start ( symbolS * symbolP ) { char * real_start ; const char * name = S_GET_NAME ( symbolP ) ; symbolS * new_target ; #define STUB_NAME  ".real_start_of" if ( name == NULL ) abort ( ) ; if ( S_IS_LOCAL ( symbolP ) || name [ 0 ] == ' ' ) return symbolP ; real_start = ACONCAT ( ( STUB_NAME , name , NULL ) ) ; new_target = symbol_find ( real_start ) ; if ( new_target == NULL ) { as_warn ( " \n " , name ) ; new_target = symbolP ; } return new_target ; }
Find the real, Thumb encoded start of a Thumb function.
Find the real Thumb encoded start of a Thumb function .
/* This definition must agree with the one in gcc/config/arm/thumb.c.	 */ /* The compiler may generate BL instructions to local labels because
     it needs to perform a branch to a far away location. These labels
     do not have a corresponding ".real_start_of" label.  We check
     both for S_IS_LOCAL and for a leading dot, to give a way to bypass
     the ".real_start_of" convention for nonlocal branches.  */