/* tc-hppa.c -- Assemble for the PA
Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
/* ??? It might be better to hide this +8 stuff in tc_cfi_emit_pcrel_expr,
undefine DIFF_EXPR_OK, and let these sorts of complex expressions fail
when R_HPPA_COMPLEX == R_PARISC_UNIMPLEMENTED. */
- if (fixp->fx_r_type == R_HPPA_COMPLEX && fixp->fx_pcrel)
+ if (fixp->fx_r_type == (bfd_reloc_code_real_type) R_HPPA_COMPLEX
+ && fixp->fx_pcrel)
{
fixp->fx_r_type = R_HPPA_PCREL_CALL;
fixp->fx_offset += 8;
if (insn->exp.X_op == O_modulus)
{
char *s, c;
- int retval;
input_line_pointer = *strp;
s = *strp;
c = *s;
*s = 0;
- retval = pa_get_absolute_expression (insn, strp);
+ pa_get_absolute_expression (insn, strp);
input_line_pointer = save_in;
*s = c;
/* Handle an add condition. */
case 'A':
+ /* PR gas/11395
+ If we are looking for 64-bit add conditions and we
+ do not have the ",*" prefix, then we have no match. */
+ if (*s != ',')
+ break;
+ /* Fall through. */
case 'a':
cmpltr = 0;
flag = 0;
!= (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
return;
+ if (call_info->start_symbol == NULL)
+ /* This can happen if there were errors earlier on in the assembly. */
+ return;
+
/* Replace the start symbol with a local symbol that will be reduced
to a section offset. This avoids problems with weak functions with
multiple definitions, etc. */
/* Mark the end of the function, stuff away the location of the frag
for the end of the function, and finally call pa_build_unwind_subspace
to add an entry in the unwind table. */
+ (void) where;
hppa_elf_mark_end_of_function ();
pa_build_unwind_subspace (last_call_info);
#else
to the SOM BFD backend. */
#ifdef obj_set_symbol_type
obj_set_symbol_type (bfdsym, (int) type);
+#else
+ (void) type;
#endif
/* Now that the type of the exported symbol has been handled,
arg_reloc = pa_align_arg_reloc (temp, pa_build_arg_reloc (name));
#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC)
symbol_arg_reloc_info (symbolP) |= arg_reloc;
+#else
+ (void) arg_reloc;
#endif
*input_line_pointer = c;
}
arg_reloc = pa_build_arg_reloc (name);
#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC)
symbol_arg_reloc_info (symbolP) |= arg_reloc;
+#else
+ (void) arg_reloc;
#endif
*input_line_pointer = c;
}
{
char *name, *ss_name, c;
char loadable, code_only, comdat, common, dup_common, zero, sort;
- int i, access, space_index, alignment, quadrant, applicable, flags;
+ int i, access_ctr, space_index, alignment, quadrant, applicable, flags;
sd_chain_struct *space;
ssd_chain_struct *ssd;
asection *section;
/* Load default values. */
sort = 0;
- access = 0x7f;
+ access_ctr = 0x7f;
loadable = 1;
comdat = 0;
common = 0;
space_index = pa_def_subspaces[i].space_index;
alignment = pa_def_subspaces[i].alignment;
quadrant = pa_def_subspaces[i].quadrant;
- access = pa_def_subspaces[i].access;
+ access_ctr = pa_def_subspaces[i].access;
sort = pa_def_subspaces[i].sort;
break;
}
{
*input_line_pointer = c;
input_line_pointer++;
- access = get_absolute_expression ();
+ access_ctr = get_absolute_expression ();
}
else if ((strncasecmp (name, "sort", 4) == 0))
{
current_subspace = update_subspace (space, ss_name, loadable,
code_only, comdat, common,
- dup_common, sort, zero, access,
+ dup_common, sort, zero, access_ctr,
space_index, alignment, quadrant,
section);
else
current_subspace = create_new_subspace (space, ss_name, loadable,
code_only, comdat, common,
dup_common, zero, sort,
- access, space_index,
+ access_ctr, space_index,
alignment, quadrant, section);
demand_empty_rest_of_line ();
int dup_common,
int is_zero ATTRIBUTE_UNUSED,
int sort,
- int access,
+ int access_ctr,
int space_index ATTRIBUTE_UNUSED,
int alignment ATTRIBUTE_UNUSED,
int quadrant,
}
#ifdef obj_set_subsection_attributes
- obj_set_subsection_attributes (seg, space->sd_seg, access, sort,
+ obj_set_subsection_attributes (seg, space->sd_seg, access_ctr, sort,
quadrant, comdat, common, dup_common);
#endif
int dup_common,
int sort,
int zero ATTRIBUTE_UNUSED,
- int access,
+ int access_ctr,
int space_index ATTRIBUTE_UNUSED,
int alignment ATTRIBUTE_UNUSED,
int quadrant,
chain_entry = is_defined_subspace (name);
#ifdef obj_set_subsection_attributes
- obj_set_subsection_attributes (section, space->sd_seg, access, sort,
+ obj_set_subsection_attributes (section, space->sd_seg, access_ctr, sort,
quadrant, comdat, common, dup_common);
#endif