This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, moxie] Add moxiebox target


The following binutils patches introduce a new moxie-based target
called moxiebox.  Moxiebox is a VM developed by the bitcoin community
to act as a secure, sandboxed execution environment for bitcoin
automation.

See http://github.com/jgarzik/moxiebox for more information.

I'm checking these changes in.  There's a config.sub change as well
that I'll submit through the regular process.

Thanks,

AG


In bfd..

2014-07-27  Anthony Green  <green@moxielogic.org>

	* config.bfd: Add moxie-*-moxiebox*.

In gas..

2014-07-27  Anthony Green  <green@moxielogic.com>

	* configure.tgt (generic_target): Add moxie-*-moxiebox*
	* config/tc-moxie.c: Remove moxie_target_format.
	(md_begin): Set default target_big_endian.
	* config/tc-moxie.h: Only set TARGET_BYTES_BIG_ENDIAN if unset.
	(TARGET_FORMAT): Set based on target_big_endian.

In ld...

2014-07-27  Anthony Green  <green@moxielogic.com>

	* Makefile.am (ALL_EMULATION_SOURCES): Add moxiebox support.
	(emoxiebox.c): Build.
	* configure.tgt (targ_extra_ofiles): Add moxie-*-moxiebox*.
	* emulparams/moxiebox.sh (TEXT_START_ADDR): New file.
	* Makefile.in: Rebuilt.


diff --git a/bfd/config.bfd b/bfd/config.bfd
index e082f1d..1950ca0 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -446,6 +446,10 @@ case "${targ}" in
     targ_selvecs=moxie_elf32_le_vec
     ;;
 
+  moxie-*-moxiebox*)
+    targ_defvec=moxie_elf32_le_vec
+    ;;
+
   h8300*-*-rtemscoff*)
     targ_defvec=h8300_coff_vec
     targ_underscore=yes
diff --git a/gas/config/tc-moxie.c b/gas/config/tc-moxie.c
index 430a144..02a59b7 100644
--- a/gas/config/tc-moxie.c
+++ b/gas/config/tc-moxie.c
@@ -46,7 +46,6 @@ static valueT md_chars_to_number (char * buf, int n);
 
 /* Byte order.  */
 extern int target_big_endian;
-const char *moxie_target_format = DEFAULT_TARGET_FORMAT;
 
 void
 md_operand (expressionS *op __attribute__((unused)))
@@ -75,6 +74,8 @@ md_begin (void)
   for (count = 0, opcode = moxie_form3_opc_info; count++ < 10; opcode++)
     hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
 
+  target_big_endian = TARGET_BYTES_BIG_ENDIAN;
+
   bfd_set_arch_mach (stdoutput, TARGET_ARCH, 0);
 }
 
@@ -617,11 +618,9 @@ md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED)
     {
     case OPTION_EB: 
       target_big_endian = 1; 
-      moxie_target_format = "elf32-bigmoxie";
       break;
     case OPTION_EL: 
       target_big_endian = 0;
-      moxie_target_format = "elf32-littlemoxie";
       break;
     default:        
       return 0;
diff --git a/gas/config/tc-moxie.h b/gas/config/tc-moxie.h
index d5a24cd..ed4f273 100644
--- a/gas/config/tc-moxie.h
+++ b/gas/config/tc-moxie.h
@@ -19,13 +19,13 @@
    Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #define TC_MOXIE 1
+#ifndef TARGET_BYTES_BIG_ENDIAN
 #define TARGET_BYTES_BIG_ENDIAN 1
+#endif
 #define WORKING_DOT_WORD
 
 /* This macro is the BFD architecture to pass to `bfd_set_arch_mach'.  */
-const char *moxie_target_format;
-#define DEFAULT_TARGET_FORMAT  "elf32-bigmoxie"
-#define TARGET_FORMAT          moxie_target_format
+#define TARGET_FORMAT (target_big_endian ? "elf32-bigmoxie" : "elf32-littlemoxie")
 
 #define TARGET_ARCH bfd_arch_moxie
 
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 7ef0c06..877f34d 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -339,9 +339,10 @@ case ${generic_target} in
   mn10300-*-linux*)			fmt=elf em=linux ;;
   mn10300-*-*)				fmt=elf ;;
 
-  moxie-*-uclinux)			fmt=elf em=linux;;
+  moxie-*-uclinux)			fmt=elf em=linux ;;
+  moxie-*-moxiebox*)                    fmt=elf endian=little ;;
   moxie-*-*)				fmt=elf ;;
-
+    
   mt-*-elf)				fmt=elf bfd_gas=yes ;;
 
   msp430-*-*)				fmt=elf ;;
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 8e8ae20..9575f1f 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -247,6 +247,7 @@ ALL_EMULATION_SOURCES = \
 	eelf32microblazeel.c \
 	eelf32microblaze.c \
 	eelf32moxie.c \
+	emoxiebox.c \
 	eelf32mt.c \
 	eelf32or1k.c \
 	eelf32or1k_linux.c \
@@ -1160,6 +1161,9 @@ eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh $(ELF_DEPS) \
 eelf32moxie.c: $(srcdir)/emulparams/elf32moxie.sh \
   $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 
+emoxiebox.c: $(srcdir)/emulparams/moxiebox.sh \
+  $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+
 eelf32mt.c: $(srcdir)/emulparams/elf32mt.sh \
   $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 971dc5f..f89eaf9 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -555,6 +555,7 @@ ALL_EMULATION_SOURCES = \
 	eelf32microblazeel.c \
 	eelf32microblaze.c \
 	eelf32moxie.c \
+	emoxiebox.c \
 	eelf32mt.c \
 	eelf32or1k.c \
 	eelf32or1k_linux.c \
@@ -1173,6 +1174,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32microblazeel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mipswindiss.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32moxie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emoxiebox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32mt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32or1k.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32or1k_linux.Po@am__quote@
@@ -2600,6 +2602,9 @@ eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh $(ELF_DEPS) \
 eelf32moxie.c: $(srcdir)/emulparams/elf32moxie.sh \
   $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 
+emoxiebox.c: $(srcdir)/emulparams/moxiebox.sh \
+  $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+
 eelf32mt.c: $(srcdir)/emulparams/elf32mt.sh \
   $(ELF_GEN_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 
diff --git a/ld/configure.tgt b/ld/configure.tgt
index e74e9be..33fb378 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -188,6 +188,8 @@ fr30-*-*)		targ_emul=elf32fr30
 frv-*-*linux*)		targ_emul=elf32frvfd ;;
 frv-*-*)		targ_emul=elf32frv ; targ_extra_emuls="elf32frvfd"
 			;;
+moxie-*-moxiebox*)	targ_emul=moxiebox
+			;;
 moxie-*-*)		targ_emul=elf32moxie
 			;;
 h8300-*-hms* | h8300-*-coff* | h8300-*-rtemscoff*)
diff --git a/ld/emulparams/moxiebox.sh b/ld/emulparams/moxiebox.sh
new file mode 100644
index 0000000..99b530a
--- /dev/null
+++ b/ld/emulparams/moxiebox.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=elf
+TEMPLATE_NAME=generic
+EXTRA_EM_FILE=genelf
+OUTPUT_FORMAT="elf32-littlemoxie"
+TEXT_START_ADDR=0x1000
+MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+ARCH=moxie
+EMBEDDED=yes
+STACK_ADDR=0x400000


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]