Module Name:    src
Committed By:   matt
Date:           Tue Mar 18 23:41:36 UTC 2014

Modified Files:
        src/external/gpl3/binutils/dist/gas/config: tc-vax.c tc-vax.h

Log Message:
Add support for the .cfi pseudo-ops for VAX.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/binutils/dist/gas/config/tc-vax.c
cvs rdiff -u -r1.3 -r1.4 src/external/gpl3/binutils/dist/gas/config/tc-vax.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/binutils/dist/gas/config/tc-vax.c
diff -u src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.6 src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.7
--- src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.6	Tue Jul 17 20:29:44 2012
+++ src/external/gpl3/binutils/dist/gas/config/tc-vax.c	Tue Mar 18 23:41:36 2014
@@ -24,6 +24,7 @@
 
 #include "vax-inst.h"
 #include "obstack.h"		/* For FRAG_APPEND_1_CHAR macro in "frags.h" */
+#include "dw2gencfi.h"
 #include "subsegs.h"
 #include "safe-ctype.h"
 
@@ -3570,3 +3571,37 @@ md_atof (int type, char * litP, int * si
 {
   return vax_md_atof (type, litP, sizeP);
 }
+
+void
+vax_cfi_frame_initial_instructions (void)
+{
+  cfi_add_CFA_def_cfa (14, 0);
+}
+
+int
+tc_vax_regname_to_dw2regnum (char *regname)
+{
+  unsigned int i;
+  static const struct { char *name; int dw2regnum; } regnames[] =
+    {
+      { "r0",   0 }, { "r1",  1 }, { "r2",   2 }, { "r3",   3 },
+      { "r4",   4 }, { "r5",  5 }, { "r6",   6 }, { "r7",   7 },
+      { "r8",   8 }, { "r9",  9 }, { "r10", 10 }, { "r11", 11 },
+      { "ap",  12 }, { "fp", 13 }, { "sp",  14 }, { "pc",  15 },
+      { "psw", 16 },
+    };
+
+  for (i = 0; i < ARRAY_SIZE (regnames); ++i)
+    if (strcmp (regnames[i].name, regname) == 0)
+      return regnames[i].dw2regnum;
+
+  return -1;
+}
+
+void
+vax_cfi_emit_pcrel_expr (expressionS *exp, unsigned int nbytes)
+{
+  vax_cons_special_reloc = "pcrel";
+  emit_expr (exp, nbytes);
+  vax_cons_special_reloc = NULL;
+}

Index: src/external/gpl3/binutils/dist/gas/config/tc-vax.h
diff -u src/external/gpl3/binutils/dist/gas/config/tc-vax.h:1.3 src/external/gpl3/binutils/dist/gas/config/tc-vax.h:1.4
--- src/external/gpl3/binutils/dist/gas/config/tc-vax.h:1.3	Thu Apr 14 07:49:48 2011
+++ src/external/gpl3/binutils/dist/gas/config/tc-vax.h	Tue Mar 18 23:41:36 2014
@@ -71,9 +71,17 @@ extern const struct relax_type md_relax_
 		     == S_GET_SEGMENT ((FIX)->fx_addsy)))	\
 	     || S_IS_LOCAL ((FIX)->fx_addsy)))
 
-/*
- * Local Variables:
- * comment-column: 0
- * fill-column: 131
- * End:
- */
+#define TARGET_USE_CFIPOP 1
+
+#define tc_cfi_frame_initial_instructions vax_cfi_frame_initial_instructions
+extern void vax_cfi_frame_initial_instructions (void);
+
+#define tc_regname_to_dw2regnum tc_vax_regname_to_dw2regnum
+extern int tc_vax_regname_to_dw2regnum (char *);
+
+#define tc_cfi_emit_pcrel_expr vax_cfi_emit_pcrel_expr
+extern void vax_cfi_emit_pcrel_expr (expressionS *, unsigned int);
+
+#define DWARF2_LINE_MIN_INSN_LENGTH     1
+#define DWARF2_DEFAULT_RETURN_COLUMN    15
+#define DWARF2_CIE_DATA_ALIGNMENT       -4

Reply via email to