The link failure shows up when using ld from GNU Binutils 2.37, and not with 2.34. * gnu/packages/patches/ocaml-multiple-definitions.patch: New file. * gnu/packages/ocaml.scm (ocaml-4.07-boot)[source]: Use it. * gnu/local.mk (dist_patch_DATA): Add it.
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Avoid multiply-defined symbols that lead to link errors such as:
 | |
| 
 | |
|   gcc -O2 -fno-strict-aliasing -fwrapv -Wall -fno-tree-vrp  -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE  -Wl,-E -o ocamlruni prims.o libcamlruni.a -lm  -ldl -lpthread 
 | |
|   ld: libcamlruni.a(backtrace.i.o):/tmp/guix-build-ocaml-4.07.1.drv-0/ocaml-4.07.1/byterun/backtrace.c:31: multiple definition of `caml_debug_info'; libcamlruni.a(backtrace_prim.i.o):/tmp/guix-build-ocaml-4.07.1.drv-0/ocaml-4.07.1/byterun/backtrace_prim.c:47: first defined here
 | |
| 
 | |
| diff --git a/asmrun/startup.c b/asmrun/startup.c
 | |
| index 070f0c6..cf8a56f 100644
 | |
| --- a/asmrun/startup.c
 | |
| +++ b/asmrun/startup.c
 | |
| @@ -44,7 +44,6 @@
 | |
|  #endif
 | |
|  
 | |
|  extern int caml_parser_trace;
 | |
| -CAMLexport header_t caml_atom_table[256];
 | |
|  char * caml_code_area_start, * caml_code_area_end;
 | |
|  struct ext_table caml_code_fragments_table;
 | |
|  
 | |
| diff --git a/byterun/backtrace.c b/byterun/backtrace.c
 | |
| index 8dfe9b7..9cc9e72 100644
 | |
| --- a/byterun/backtrace.c
 | |
| +++ b/byterun/backtrace.c
 | |
| @@ -28,7 +28,7 @@
 | |
|  #include "caml/fail.h"
 | |
|  
 | |
|  /* The table of debug information fragments */
 | |
| -struct ext_table caml_debug_info;
 | |
| +static struct ext_table caml_debug_info;
 | |
|  
 | |
|  CAMLexport int32_t caml_backtrace_active = 0;
 | |
|  CAMLexport int32_t caml_backtrace_pos = 0;
 | |
| diff --git a/byterun/backtrace_prim.c b/byterun/backtrace_prim.c
 | |
| index e69b256..d794f73 100644
 | |
| --- a/byterun/backtrace_prim.c
 | |
| +++ b/byterun/backtrace_prim.c
 | |
| @@ -44,7 +44,7 @@
 | |
|  #include "caml/backtrace_prim.h"
 | |
|  
 | |
|  /* The table of debug information fragments */
 | |
| -struct ext_table caml_debug_info;
 | |
| +static struct ext_table caml_debug_info;
 | |
|  
 | |
|  CAMLexport char_os * caml_cds_file = NULL;
 | |
|  
 |