[MLton-commit] r6905

Wesley Terpstra wesley at mlton.org
Fri Oct 3 16:26:40 PDT 2008


In order to build static libraries under MinGW, this binutils patch is needed.
I've added it here for now until there is an official release including it.


----------------------------------------------------------------------

A   mlton/trunk/package/mingw/binutils-coffgen.patch

----------------------------------------------------------------------

Added: mlton/trunk/package/mingw/binutils-coffgen.patch
===================================================================
--- mlton/trunk/package/mingw/binutils-coffgen.patch	2008-10-03 23:25:18 UTC (rev 6904)
+++ mlton/trunk/package/mingw/binutils-coffgen.patch	2008-10-03 23:26:39 UTC (rev 6905)
@@ -0,0 +1,107 @@
+Index: bfd/coff64-rs6000.c
+===================================================================
+RCS file: /cvs/src/src/bfd/coff64-rs6000.c,v
+retrieving revision 1.71
+diff -c -3 -p -r1.71 coff64-rs6000.c
+*** bfd/coff64-rs6000.c	18 Jul 2008 11:30:22 -0000	1.71
+--- bfd/coff64-rs6000.c	30 Sep 2008 10:07:17 -0000
+*************** static const struct xcoff_backend_data_r
+*** 2580,2586 ****
+        coff_print_aux,
+        dummy_reloc16_extra_cases,
+        dummy_reloc16_estimate,
+!       NULL,			/* bfd_coff_sym_is_global */
+        coff_compute_section_file_positions,
+        NULL,			/* _bfd_coff_start_final_link */
+        xcoff64_ppc_relocate_section,
+--- 2580,2586 ----
+        coff_print_aux,
+        dummy_reloc16_extra_cases,
+        dummy_reloc16_estimate,
+!       NULL,			/* bfd_coff_symbol_classification */
+        coff_compute_section_file_positions,
+        NULL,			/* _bfd_coff_start_final_link */
+        xcoff64_ppc_relocate_section,
+Index: bfd/coffgen.c
+===================================================================
+RCS file: /cvs/src/src/bfd/coffgen.c,v
+retrieving revision 1.67
+diff -c -3 -p -r1.67 coffgen.c
+*** bfd/coffgen.c	14 Aug 2008 02:38:22 -0000	1.67
+--- bfd/coffgen.c	30 Sep 2008 10:07:17 -0000
+*************** coff_write_native_symbol (bfd *abfd,
+*** 1082,1087 ****
+--- 1082,1092 ----
+  			    debug_string_size_p);
+  }
+  
++ static void
++ null_error_handler (const char * fmt ATTRIBUTE_UNUSED, ...)
++ {
++ }
++ 
+  /* Write out the COFF symbols.  */
+  
+  bfd_boolean
+*************** coff_write_symbols (bfd *abfd)
+*** 1138,1143 ****
+--- 1143,1184 ----
+  	}
+        else
+  	{
++ 	  if (coff_backend_info (abfd)->_bfd_coff_classify_symbol != NULL)
++ 	    {
++ 	      bfd_error_handler_type current_error_handler;
++ 	      enum coff_symbol_classification class;
++ 	      unsigned char *n_sclass;
++ 
++ 	      /* Suppress error reporting by bfd_coff_classify_symbol.
++ 		 Error messages can be generated when we are processing a local
++ 		 symbol which has no associated section and we do not have to
++ 		 worry about this, all we need to know is that it is local.  */
++ 	      current_error_handler = bfd_set_error_handler (null_error_handler);
++ 	      class = bfd_coff_classify_symbol (abfd, &c_symbol->native->u.syment);
++ 	      (void) bfd_set_error_handler (current_error_handler);
++ 	  
++ 	      n_sclass = &c_symbol->native->u.syment.n_sclass;
++ 
++ 	      /* If the symbol class has been changed (eg objcopy/ld script/etc)
++ 		 we cannot retain the existing sclass from the original symbol.
++ 		 Weak symbols only have one valid sclass, so just set it always.
++ 		 If it is not local class and should be, set it C_STAT.
++ 		 If it is global and not classified as global, or if it is
++ 		 weak (which is also classified as global), set it C_EXT.  */
++ 
++ 	      if (symbol->flags & BSF_WEAK)
++ 		*n_sclass = obj_pe (abfd) ? C_NT_WEAK : C_WEAKEXT;
++ 	      else if (symbol->flags & BSF_LOCAL && class != COFF_SYMBOL_LOCAL)
++ 		*n_sclass = C_STAT;
++ 	      else if (symbol->flags & BSF_GLOBAL
++ 		       && (class != COFF_SYMBOL_GLOBAL
++ #ifdef COFF_WITH_PE
++ 			   || *n_sclass == C_NT_WEAK
++ #endif
++ 			   || *n_sclass == C_WEAKEXT))
++ 		c_symbol->native->u.syment.n_sclass = C_EXT;
++ 	    }
++ 
+  	  if (!coff_write_native_symbol (abfd, c_symbol, &written,
+  					 &string_size, &debug_string_section,
+  					 &debug_string_size))
+Index: gas/config/tc-tic4x.c
+===================================================================
+RCS file: /cvs/src/src/gas/config/tc-tic4x.c,v
+retrieving revision 1.26
+diff -c -3 -p -r1.26 tc-tic4x.c
+*** gas/config/tc-tic4x.c	14 Aug 2008 14:54:40 -0000	1.26
+--- gas/config/tc-tic4x.c	30 Sep 2008 10:07:19 -0000
+*************** tic4x_globl (int ignore ATTRIBUTE_UNUSED
+*** 821,826 ****
+--- 821,827 ----
+        *input_line_pointer = c;
+        SKIP_WHITESPACE ();
+        S_SET_STORAGE_CLASS (symbolP, C_EXT);
++       S_SET_EXTERNAL (symbolP);
+        if (c == ',')
+  	{
+  	  input_line_pointer++;




More information about the MLton-commit mailing list