/* tc-sh64.c -- Assemble code for the SuperH SH SHcompact and SHmedia.
- Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
- Free Software Foundation.
+ Copyright (C) 2000-2016 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
offsetT value = fragP->fr_offset
+ (fragP->fr_symbol == NULL ? 0 : S_GET_VALUE (fragP->fr_symbol));
- if (value >= ((offsetT) -1 << 15) && value < ((offsetT) 1 << 15))
+ if (value >= (-((offsetT) 1 << 15)) && value < ((offsetT) 1 << 15))
{
/* Fits in 16-bit signed number. */
int what = GET_WHAT (fragP->fr_subtype);
shmedia_parse_exp (char *s, shmedia_operand_info *op)
{
char *save;
- char *new;
+ char *new_pointer;
save = input_line_pointer;
input_line_pointer = s;
expression (&op->immediate);
if (op->immediate.X_op == O_absent)
as_bad (_("missing operand"));
- new = input_line_pointer;
+ new_pointer = input_line_pointer;
input_line_pointer = save;
- return new;
+ return new_pointer;
}
/* Parse an operand. Store pointer to next character in *PTR. */
/* Don't allow complex expressions here. */
if (opjp->immediate.X_op_symbol != NULL)
{
- as_bad(_("invalid operand: expression in PT target"));
+ as_bad (_("invalid operand: expression in PT target"));
return 0;
}
/* Don't allow complex expressions here. */
if (opjp->immediate.X_op_symbol != NULL)
{
- as_bad(_("invalid operand: expression in PT target"));
+ as_bad (_("invalid operand: expression in PT target"));
return 0;
}
case BFD_RELOC_64:
case BFD_RELOC_64_PCREL:
- know (0 /* Shouldn't get here. */);
- break;
+ /* Fall through. */
default:
/* If section was SHcompact, use its function. */
else
{
symbolS *dl_symp;
- const char *name = S_GET_NAME (symp);
- char *dl_name
- = xmalloc (strlen (name) + sizeof (DATALABEL_SUFFIX));
+ const char * sname = S_GET_NAME (symp);
+ char *dl_name = concat (sname, DATALABEL_SUFFIX, (char *) NULL);
/* Now we copy the datalabel-qualified symbol into a symbol
with the same name, but with " DL" appended. We mark the
the main symbol, so we don't have to inspect all symbol
names. Note that use of "datalabel" is not expected to
be a common case. */
- strcpy (dl_name, name);
- strcat (dl_name, DATALABEL_SUFFIX);
/* A FAKE_LABEL_NAME marks "$" or ".". There can be any
number of them and all have the same (faked) name; we
must make a new one each time. */
- if (strcmp (name, FAKE_LABEL_NAME) == 0)
+ if (strcmp (sname, FAKE_LABEL_NAME) == 0)
dl_symp = symbol_make (dl_name);
else
dl_symp = symbol_find_or_make (dl_name);