From f31fef9800987ae12dfb8d8129c1ced6de20f43b Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 19 Jan 2009 15:46:31 +0000 Subject: * gas/arm/attr-syntax.d: Do not run for non-ELF based ARM targets. * config/tc-arm.h (CONVERT_SYMBOLIC_ATTRIBUTE): Only define for ELF format ARM targets. * config/tc-arm.c (arm_convert_symbolic_attribute): Likewise. --- gas/config/tc-arm.c | 105 +++++++++++++++++++----------------- gas/config/tc-arm.h | 6 ++- gas/testsuite/ChangeLog | 5 ++ gas/testsuite/gas/arm/attr-syntax.d | 1 + 4 files changed, 66 insertions(+), 51 deletions(-) diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index bdd42f8..cf7d74b 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -1,6 +1,6 @@ /* tc-arm.c -- Assemble for the ARM Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 + 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modified by David Taylor (dtaylor@armltd.co.uk) @@ -12727,6 +12727,7 @@ do_vfp_nsyn_cvtz (void) if (flavour >= 0 && flavour < (int) ARRAY_SIZE (enc) && enc[flavour]) do_vfp_nsyn_opcode (enc[flavour]); } + static void do_neon_cvt (void) { @@ -16028,7 +16029,7 @@ static const struct asm_opcode insns[] = nCEF(vcvt, vcvt, 3, (RNSDQ, RNSDQ, oI32b), neon_cvt), nCEF(vcvtb, vcvt, 2, (RVS, RVS), neon_cvtb), nCEF(vcvtt, vcvt, 2, (RVS, RVS), neon_cvtt), - + /* NOTE: All VMOV encoding is special-cased! */ NCE(vmov, 0, 1, (VMOV), neon_mov), @@ -20935,7 +20936,6 @@ s_arm_object_arch (int ignored ATTRIBUTE_UNUSED) ignore_rest_of_line (); } - /* Parse a .fpu directive. */ static void @@ -20967,72 +20967,79 @@ s_arm_fpu (int ignored ATTRIBUTE_UNUSED) } /* Copy symbol information. */ + void arm_copy_symbol_attributes (symbolS *dest, symbolS *src) { ARM_GET_FLAG (dest) = ARM_GET_FLAG (src); } +#ifdef OBJ_ELF /* Given a symbolic attribute NAME, return the proper integer value. Returns -1 if the attribute is not known. */ + int arm_convert_symbolic_attribute (const char *name) { + static const struct + { + const char * name; + const int tag; + } + attribute_table[] = + { + /* When you modify this table you should + also modify the list in doc/c-arm.texi. */ #define T(tag) {#tag, tag} - /* When you modify this table you should also - modify the list in doc/c-arm.texi. */ - static const struct { - const char *name; - const int tag; - } attribute_table[] = { - T(Tag_CPU_raw_name), - T(Tag_CPU_name), - T(Tag_CPU_arch), - T(Tag_CPU_arch_profile), - T(Tag_ARM_ISA_use), - T(Tag_THUMB_ISA_use), - T(Tag_VFP_arch), - T(Tag_WMMX_arch), - T(Tag_Advanced_SIMD_arch), - T(Tag_PCS_config), - T(Tag_ABI_PCS_R9_use), - T(Tag_ABI_PCS_RW_data), - T(Tag_ABI_PCS_RO_data), - T(Tag_ABI_PCS_GOT_use), - T(Tag_ABI_PCS_wchar_t), - T(Tag_ABI_FP_rounding), - T(Tag_ABI_FP_denormal), - T(Tag_ABI_FP_exceptions), - T(Tag_ABI_FP_user_exceptions), - T(Tag_ABI_FP_number_model), - T(Tag_ABI_align8_needed), - T(Tag_ABI_align8_preserved), - T(Tag_ABI_enum_size), - T(Tag_ABI_HardFP_use), - T(Tag_ABI_VFP_args), - T(Tag_ABI_WMMX_args), - T(Tag_ABI_optimization_goals), - T(Tag_ABI_FP_optimization_goals), - T(Tag_compatibility), - T(Tag_CPU_unaligned_access), - T(Tag_VFP_HP_extension), - T(Tag_ABI_FP_16bit_format), - T(Tag_nodefaults), - T(Tag_also_compatible_with), - T(Tag_conformance), - T(Tag_T2EE_use), - T(Tag_Virtualization_use), - T(Tag_MPextension_use) - }; + T (Tag_CPU_raw_name), + T (Tag_CPU_name), + T (Tag_CPU_arch), + T (Tag_CPU_arch_profile), + T (Tag_ARM_ISA_use), + T (Tag_THUMB_ISA_use), + T (Tag_VFP_arch), + T (Tag_WMMX_arch), + T (Tag_Advanced_SIMD_arch), + T (Tag_PCS_config), + T (Tag_ABI_PCS_R9_use), + T (Tag_ABI_PCS_RW_data), + T (Tag_ABI_PCS_RO_data), + T (Tag_ABI_PCS_GOT_use), + T (Tag_ABI_PCS_wchar_t), + T (Tag_ABI_FP_rounding), + T (Tag_ABI_FP_denormal), + T (Tag_ABI_FP_exceptions), + T (Tag_ABI_FP_user_exceptions), + T (Tag_ABI_FP_number_model), + T (Tag_ABI_align8_needed), + T (Tag_ABI_align8_preserved), + T (Tag_ABI_enum_size), + T (Tag_ABI_HardFP_use), + T (Tag_ABI_VFP_args), + T (Tag_ABI_WMMX_args), + T (Tag_ABI_optimization_goals), + T (Tag_ABI_FP_optimization_goals), + T (Tag_compatibility), + T (Tag_CPU_unaligned_access), + T (Tag_VFP_HP_extension), + T (Tag_ABI_FP_16bit_format), + T (Tag_nodefaults), + T (Tag_also_compatible_with), + T (Tag_conformance), + T (Tag_T2EE_use), + T (Tag_Virtualization_use), + T (Tag_MPextension_use) #undef T + }; unsigned int i; if (name == NULL) return -1; - for (i = 0; i < ARRAY_SIZE(attribute_table); i++) + for (i = 0; i < ARRAY_SIZE (attribute_table); i++) if (strcmp (name, attribute_table[i].name) == 0) return attribute_table[i].tag; return -1; } +#endif /* OBJ_ELF */ diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h index 353c9af..15e02c7 100644 --- a/gas/config/tc-arm.h +++ b/gas/config/tc-arm.h @@ -1,6 +1,6 @@ /* This file is tc-arm.h Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modified by David Taylor (dtaylor@armltd.co.uk) @@ -285,5 +285,7 @@ void tc_pe_dwarf2_emit_offset (symbolS *, unsigned int); #endif /* TE_PE */ -extern int arm_convert_symbolic_attribute (const char *); +#ifdef OBJ_ELF #define CONVERT_SYMBOLIC_ATTRIBUTE(name) arm_convert_symbolic_attribute (name) +extern int arm_convert_symbolic_attribute (const char *); +#endif diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 00abbb9..6297ee6 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-01-19 Nick Clifton + + * gas/arm/attr-syntax.d: Do not run for non-ELF based ARM + targets. + 2009-01-19 Andrew Stubbs * gas/arm/attr-order.d: New file. diff --git a/gas/testsuite/gas/arm/attr-syntax.d b/gas/testsuite/gas/arm/attr-syntax.d index 893bdb9..894b829 100644 --- a/gas/testsuite/gas/arm/attr-syntax.d +++ b/gas/testsuite/gas/arm/attr-syntax.d @@ -1,3 +1,4 @@ #source: attr-syntax.s +#not-target: *-*-pe *-*-aout #as: #error: :1: Error: Attribute name not recognised: made_up_tag.*:3: Error: expected , .*:5: Error: expected , -- cgit v1.1