Change export code to use the backend interface.
authorIan Lance Taylor <iant@google.com>
Fri, 27 May 2011 22:46:11 +0000 (22:46 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 27 May 2011 22:46:11 +0000 (22:46 +0000)
* go-backend.c: Include "output.h".
(go_write_export_data): New function.
* go-c.h (go_write_export_data): Declare.
* Make-lang.in (go/go-backend.o): Depend on output.h.
(go/export.o): Depend on $(GO_C_H).  Do not depend on
$(MACHMODE_H), output.h, or $(TARGET_H).

From-SVN: r174366

gcc/go/ChangeLog
gcc/go/Make-lang.in
gcc/go/go-backend.c
gcc/go/go-c.h
gcc/go/gofrontend/export.cc
gcc/go/gofrontend/export.h

index 1e936a69c93b6f00e6a8bbda80751bcaa86c6ce5..5df1e050b8748f8d2fabe17f0dde48aa8dae9e55 100644 (file)
@@ -1,3 +1,12 @@
+2011-05-27  Ian Lance Taylor  <iant@google.com>
+
+       * go-backend.c: Include "output.h".
+       (go_write_export_data): New function.
+       * go-c.h (go_write_export_data): Declare.
+       * Make-lang.in (go/go-backend.o): Depend on output.h.
+       (go/export.o): Depend on $(GO_C_H).  Do not depend on
+       $(MACHMODE_H), output.h, or $(TARGET_H).
+
 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
 
        * Make-lang.in (GCCGO_OBJS): Remove prefix.o.
index 82e219baa6fecc00f5cd9d3b736a3438d2ac5670..ef5dc753d0a1ca215438e30466250055c5c49482 100644 (file)
@@ -224,7 +224,7 @@ GO_IMPORT_H = go/gofrontend/import.h go/gofrontend/export.h
 GO_RUNTIME_H = go/gofrontend/runtime.h go/gofrontend/runtime.def
 
 go/go-backend.o: go/go-backend.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
-       $(TM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(TARGET_H)
+       $(TM_H) $(RTL_H) $(TREE_H) $(TM_P_H) output.h $(TARGET_H)
 
 go/go-lang.o: go/go-lang.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(OPTS_H) \
                $(TREE_H) $(GIMPLE_H) $(GGC_H) $(TOPLEV_H) debug.h options.h \
@@ -248,8 +248,8 @@ go/%.o: go/gofrontend/%.cc
 go/dataflow.o: go/gofrontend/dataflow.cc $(GO_SYSTEM_H) $(GO_GOGO_H) \
        $(GO_EXPRESSIONS_H) $(GO_STATEMENTS_H) go/gofrontend/dataflow.h
 go/export.o: go/gofrontend/export.cc $(GO_SYSTEM_H) \
-       $(srcdir)/../include/sha1.h $(MACHMODE_H) output.h $(TARGET_H) \
-       $(GO_GOGO_H) $(GO_TYPES_H) $(GO_STATEMENTS_H) go/gofrontend/export.h
+       $(srcdir)/../include/sha1.h $(GO_C_H) $(GO_GOGO_H) $(GO_TYPES_H) \
+       $(GO_STATEMENTS_H) go/gofrontend/export.h
 go/expressions.o: go/gofrontend/expressions.cc $(GO_SYSTEM_H) $(TOPLEV_H) \
        intl.h $(TREE_H) $(GIMPLE_H) tree-iterator.h convert.h $(REAL_H) \
        realmpfr.h $(GO_C_H) $(GO_GOGO_H) $(GO_TYPES_H) \
index 5ecc99bb18ebef02c1581999aa3d270b4003fcca..60a97db7df4e295ce7f391d33c67d2897773bed1 100644 (file)
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "tree.h"
 #include "tm_p.h"
+#include "output.h"
 #include "target.h"
 
 #include "go-c.h"
@@ -91,3 +92,21 @@ go_imported_unsafe (void)
   /* Let the backend know that the options have changed.  */
   targetm.override_options_after_change ();
 }
+
+/* This is called by the Go frontend proper to add data to the
+   .go_export section.  */
+
+void
+go_write_export_data (const char *bytes, unsigned int size)
+{
+  static section* sec;
+
+  if (sec == NULL)
+    {
+      gcc_assert (targetm.have_named_sections);
+      sec = get_section (".go_export", SECTION_DEBUG, NULL);
+    }
+
+  switch_to_section (sec);
+  assemble_string (bytes, size);
+}
index 1c7a3b1f0c6ccb9aaaf80d7641729b6ef3945bf3..f70f1ad6ccf656e574b480066e277264b601f54b 100644 (file)
@@ -66,6 +66,8 @@ extern void go_trampoline_info (unsigned int *size, unsigned int *alignment);
 
 extern void go_imported_unsafe (void);
 
+extern void go_write_export_data (const char *, unsigned int);
+
 #if defined(__cplusplus) && !defined(ENABLE_BUILD_WITH_CXX)
 } /* End extern "C".  */
 #endif
index 538fb97ce6806f63b94bdacee512616d01d171f8..48088adddd3374862032ffe8a9ab2e429f6cc9e4 100644 (file)
@@ -5,20 +5,10 @@
 // license that can be found in the LICENSE file.
 
 #include "go-system.h"
-#include "sha1.h"
-
-#ifndef ENABLE_BUILD_WITH_CXX
-extern "C"
-{
-#endif
 
-#include "machmode.h"
-#include "output.h"
-#include "target.h"
+#include "sha1.h"
 
-#ifndef ENABLE_BUILD_WITH_CXX
-}
-#endif
+#include "go-c.h"
 
 #include "gogo.h"
 #include "types.h"
@@ -416,7 +406,6 @@ Export::Stream::write_checksum(const std::string& s)
 // Class Stream_to_section.
 
 Stream_to_section::Stream_to_section()
-  : section_(NULL)
 {
 }
 
@@ -425,15 +414,5 @@ Stream_to_section::Stream_to_section()
 void
 Stream_to_section::do_write(const char* bytes, size_t length)
 {
-  section* sec = (section*) this->section_;
-  if (sec == NULL)
-    {
-      go_assert(targetm.have_named_sections);
-
-      sec = get_section(".go_export", SECTION_DEBUG, NULL);
-      this->section_ = (void*) sec;
-    }
-
-  switch_to_section(sec);
-  assemble_string(bytes, length);
+  go_write_export_data (bytes, length);
 }
index 4a1fd2b64247f70e32d624f51fceaa66045521e9..ef249779303da9dd6ecc258884d654634b3275c2 100644 (file)
@@ -179,11 +179,6 @@ class Stream_to_section : public Export::Stream
  protected:
   void
   do_write(const char*, size_t);
-
- private:
-  // The section we are writing to; this is really union section
-  // defined in output.h.
-  void* section_;
 };
 
 #endif // !defined(GO_EXPORT_H)