summaryrefslogtreecommitdiffstats
path: root/abs/extra/ocaml/fix-ocaml-binutils-2.21.patch
blob: fa7664cecc98d7d5d97ee6d8fb035c2e229bff57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
From: Stephane Glondu <steph@glondu.net>
Date: Tue, 8 Mar 2011 21:17:40 +0100
Subject: [PATCH] Fix ocamlopt w.r.t. binutils 2.21
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bug: http://caml.inria.fr/mantis/view.php?id=5237
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617404
Authors: Eric Cooper, spiralvoice
Reviewed-by: Stéphane Glondu <steph@glondu.net>
---
 asmcomp/amd64/emit.mlp |   13 +++++++------
 asmcomp/i386/emit.mlp  |    6 +++---
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
index 4a3f844..525c6e6 100644
--- a/asmcomp/amd64/emit.mlp
+++ b/asmcomp/amd64/emit.mlp
@@ -679,17 +679,18 @@ let fundecl fundecl =
   emit_all true fundecl.fun_body;
   List.iter emit_call_gc !call_gc_sites;
   emit_call_bound_errors ();
+  begin match Config.system with
+    "linux" | "gnu" ->
+      `	.type	{emit_symbol fundecl.fun_name},@function\n`;
+      `	.size	{emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
+    | _ -> ()
+  end;
   if !float_constants <> [] then begin
     if macosx
     then `	.literal8\n`
     else `	.section	.rodata.cst8,\"a\",@progbits\n`;
     List.iter emit_float_constant !float_constants
-  end;
-  match Config.system with
-    "linux" | "gnu" ->
-      `	.type	{emit_symbol fundecl.fun_name},@function\n`;
-      `	.size	{emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
-  | _ -> ()
+  end
 
 (* Emission of data *)
 
diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp
index 2992f29..0b1252c 100644
--- a/asmcomp/i386/emit.mlp
+++ b/asmcomp/i386/emit.mlp
@@ -905,12 +905,12 @@ let fundecl fundecl =
   emit_all true fundecl.fun_body;
   List.iter emit_call_gc !call_gc_sites;
   emit_call_bound_errors ();
-  List.iter emit_float_constant !float_constants;
-  match Config.system with
+  begin match Config.system with
     "linux_elf" | "bsd_elf" | "gnu" ->
       `	.type	{emit_symbol fundecl.fun_name},@function\n`;
       `	.size	{emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
-  | _ -> ()
+  | _ -> () end;
+  List.iter emit_float_constant !float_constants
 
 
 (* Emission of data *)
--