Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Aug 2014 01:48:00 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r269797 - in stable/10: contrib/binutils/gas/config sys/arm/ti
Message-ID:  <53e820d1.2928.482367bc@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Mon Aug 11 01:48:00 2014
New Revision: 269797
URL: http://svnweb.freebsd.org/changeset/base/269797

Log:
  MFC r269393, r269394, r269395:
  
    Fix parsing of arch extensions in binutils/gas.
    Use ".arch_extension sec" when compiling ARM TI code that uses the
    security extensions.

Modified:
  stable/10/contrib/binutils/gas/config/tc-arm.c
  stable/10/sys/arm/ti/ti_smc.S
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/contrib/binutils/gas/config/tc-arm.c
==============================================================================
--- stable/10/contrib/binutils/gas/config/tc-arm.c	Mon Aug 11 01:29:28 2014	(r269796)
+++ stable/10/contrib/binutils/gas/config/tc-arm.c	Mon Aug 11 01:48:00 2014	(r269797)
@@ -3837,6 +3837,7 @@ s_arm_eabi_attribute (int ignored ATTRIB
 #endif /* OBJ_ELF */
 
 static void s_arm_arch (int);
+static void s_arm_arch_extension (int);
 static void s_arm_object_arch (int);
 static void s_arm_cpu (int);
 static void s_arm_fpu (int);
@@ -3891,6 +3892,7 @@ const pseudo_typeS md_pseudo_table[] =
   { "syntax",	   s_syntax,	  0 },
   { "cpu",	   s_arm_cpu,	  0 },
   { "arch",	   s_arm_arch,	  0 },
+  { "arch_extension",	   s_arm_arch_extension,	  0 },
   { "object_arch", s_arm_object_arch,	0 },
   { "fpu",	   s_arm_fpu,	  0 },
 #ifdef OBJ_ELF
@@ -20154,6 +20156,7 @@ static const struct arm_option_cpu_value
   {"xscale",		ARM_FEATURE (0, ARM_CEXT_XSCALE)},
   {"iwmmxt",		ARM_FEATURE (0, ARM_CEXT_IWMMXT)},
   {"iwmmxt2",		ARM_FEATURE (0, ARM_CEXT_IWMMXT2)},
+  {"sec",		ARM_FEATURE (ARM_EXT_V6Z, 0)},
   {NULL,		ARM_ARCH_NONE}
 };
 
@@ -20337,7 +20340,7 @@ arm_parse_arch (char * str)
     }
 
   for (opt = arm_archs; opt->name != NULL; opt++)
-    if (streq (opt->name, str))
+    if (strncmp (opt->name, str, optlen) == 0)
       {
 	march_cpu_opt = &opt->value;
 	march_fpu_opt = &opt->default_fpu;
@@ -20738,6 +20741,34 @@ s_arm_arch (int ignored ATTRIBUTE_UNUSED
   ignore_rest_of_line ();
 }
 
+/* Parse a .arch_extension directive.  */
+
+static void
+s_arm_arch_extension (int ignored ATTRIBUTE_UNUSED)
+{
+  const struct arm_option_cpu_value_table *opt;
+  char saved_char;
+  char *name;
+
+  name = input_line_pointer;
+  while (*input_line_pointer && !ISSPACE(*input_line_pointer))
+    input_line_pointer++;
+  saved_char = *input_line_pointer;
+  *input_line_pointer = 0;
+
+  for (opt = arm_extensions; opt->name != NULL; opt++)
+    if (streq (opt->name, name))
+      {
+	ARM_MERGE_FEATURE_SETS (cpu_variant, cpu_variant, opt->value);
+	*input_line_pointer = saved_char;
+	demand_empty_rest_of_line ();
+	return;
+      }
+
+  as_bad (_("unknown architecture `%s'\n"), name);
+  *input_line_pointer = saved_char;
+  ignore_rest_of_line ();
+}
 
 /* Parse a .object_arch directive.  */
 

Modified: stable/10/sys/arm/ti/ti_smc.S
==============================================================================
--- stable/10/sys/arm/ti/ti_smc.S	Mon Aug 11 01:29:28 2014	(r269796)
+++ stable/10/sys/arm/ti/ti_smc.S	Mon Aug 11 01:48:00 2014	(r269797)
@@ -26,7 +26,8 @@
 #include <machine/asm.h>
 __FBSDID("$FreeBSD$");
 
-.arch armv7a
+	.arch armv7a
+	.arch_extension sec
 
 /* Issue a smc #0 call */
 /* r0 and r1 contains the eventual arguments, r2 contains the function ID */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53e820d1.2928.482367bc>