~ubuntu-branches/debian/sid/gcc-4.8/sid

« back to all changes in this revision

Viewing changes to .svn/pristine/cd/cdee46b9d07011a2211a911dd31e63a38a00ee8f.svn-base

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-12-19 19:48:34 UTC
  • Revision ID: package-import@ubuntu.com-20141219194834-4dz1q7rrn5pad823
Tags: 4.8.4-1
* GCC 4.8.4 release.
  - Fix PR target/61407 (darwin), PR middle-end/58624 (ice),
    PR sanitizer/64265 (wrong code).
* Require recent binutils to pass go test failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# DP: Build gcj for aarch64-linux-gnu
 
2
 
 
3
ChangeLog:
 
4
 
 
5
2013-04-16  Andreas Schwab  <schwab@suse.de>
 
6
 
 
7
        * configure.ac (aarch64-*-*): Don't disable java.
 
8
        * configure: Regenerate.
 
9
 
 
10
libjava/ChangeLog:
 
11
 
 
12
2013-04-16  Andreas Schwab  <schwab@suse.de>
 
13
 
 
14
        * configure.host: Add support for aarch64.
 
15
        * sysdep/aarch64/locks.h: New file.
 
16
 
 
17
libjava/classpath/ChangeLog.gcj
 
18
 
 
19
2013-04-16  Andreas Schwab  <schwab@suse.de>
 
20
 
 
21
        * native/fdlibm/ieeefp.h: Add support for aarch64.
 
22
 
 
23
Index: configure.ac
 
24
===================================================================
 
25
--- a/src/configure.ac  (revision 197996)
 
26
+++ b/src/configure.ac  (revision 197997)
 
27
@@ -611,6 +611,8 @@
 
28
 
 
29
 # Disable Java if libffi is not supported.
 
30
 case "${target}" in
 
31
+  aarch64-*-*)
 
32
+    ;;
 
33
   alpha*-*-*)
 
34
     ;;
 
35
   arm*-*-*)
 
36
Index: configure
 
37
===================================================================
 
38
--- a/src/configure     (revision 197996)
 
39
+++ b/src/configure     (revision 197997)
 
40
@@ -3272,6 +3272,8 @@
 
41
 
 
42
 # Disable Java if libffi is not supported.
 
43
 case "${target}" in
 
44
+  aarch64-*-*)
 
45
+    ;;
 
46
   alpha*-*-*)
 
47
     ;;
 
48
   arm*-*-*)
 
49
Index: libjava/configure.host
 
50
===================================================================
 
51
--- a/src/libjava/configure.host        (revision 197996)
 
52
+++ b/src/libjava/configure.host        (revision 197997)
 
53
@@ -81,6 +81,11 @@
 
54
 
 
55
 # This case statement supports per-CPU defaults.
 
56
 case "${host}" in
 
57
+  aarch64*-linux*)
 
58
+       libgcj_interpreter=yes
 
59
+       sysdeps_dir=aarch64
 
60
+       ATOMICSPEC=-fuse-atomic-builtins
 
61
+       ;;
 
62
   arm*-elf)
 
63
        with_libffi_default=no
 
64
        PROCESS=Ecos
 
65
@@ -289,6 +294,12 @@
 
66
        sysdeps_dir=i386
 
67
        DIVIDESPEC=-f%{m32:no-}use-divide-subroutine
 
68
        ;;
 
69
+  aarch64*-linux* )
 
70
+       slow_pthread_self=no
 
71
+       can_unwind_signal=no
 
72
+       CHECKREFSPEC=-fcheck-references
 
73
+       DIVIDESPEC=-fuse-divide-subroutine
 
74
+       ;;
 
75
   arm*-linux* )
 
76
        slow_pthread_self=no
 
77
        can_unwind_signal=no
 
78
Index: libjava/classpath/native/fdlibm/ieeefp.h
 
79
===================================================================
 
80
--- a/src/libjava/classpath/native/fdlibm/ieeefp.h      (revision 197996)
 
81
+++ b/src/libjava/classpath/native/fdlibm/ieeefp.h      (revision 197997)
 
82
@@ -4,6 +4,14 @@
 
83
 #ifndef __IEEE_BIG_ENDIAN
 
84
 #ifndef __IEEE_LITTLE_ENDIAN
 
85
 
 
86
+#ifdef __aarch64__
 
87
+#ifdef __AARCH64EB__
 
88
+#define __IEEE_BIG_ENDIAN
 
89
+#else
 
90
+#define __IEEE_LITTLE_ENDIAN
 
91
+#endif
 
92
+#endif
 
93
+
 
94
 #ifdef __alpha__
 
95
 #define __IEEE_LITTLE_ENDIAN
 
96
 #endif
 
97
Index: libjava/sysdep/aarch64/locks.h
 
98
===================================================================
 
99
--- a/src/libjava/sysdep/aarch64/locks.h        (revision 0)
 
100
+++ b/src/libjava/sysdep/aarch64/locks.h        (revision 197997)
 
101
@@ -0,0 +1,57 @@
 
102
+// locks.h - Thread synchronization primitives. AArch64 implementation.
 
103
+
 
104
+#ifndef __SYSDEP_LOCKS_H__
 
105
+#define __SYSDEP_LOCKS_H__
 
106
+
 
107
+typedef size_t obj_addr_t;     /* Integer type big enough for object   */
 
108
+                               /* address.                             */
 
109
+
 
110
+// Atomically replace *addr by new_val if it was initially equal to old.
 
111
+// Return true if the comparison succeeded.
 
112
+// Assumed to have acquire semantics, i.e. later memory operations
 
113
+// cannot execute before the compare_and_swap finishes.
 
114
+inline static bool
 
115
+compare_and_swap(volatile obj_addr_t *addr,
 
116
+                 obj_addr_t old,
 
117
+                 obj_addr_t new_val)
 
118
+{
 
119
+  return __sync_bool_compare_and_swap(addr, old, new_val);
 
120
+}
 
121
+
 
122
+// Set *addr to new_val with release semantics, i.e. making sure
 
123
+// that prior loads and stores complete before this
 
124
+// assignment.
 
125
+inline static void
 
126
+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
 
127
+{
 
128
+  __sync_synchronize();
 
129
+  *addr = new_val;
 
130
+}
 
131
+
 
132
+// Compare_and_swap with release semantics instead of acquire semantics.
 
133
+// On many architecture, the operation makes both guarantees, so the
 
134
+// implementation can be the same.
 
135
+inline static bool
 
136
+compare_and_swap_release(volatile obj_addr_t *addr,
 
137
+                        obj_addr_t old,
 
138
+                        obj_addr_t new_val)
 
139
+{
 
140
+  return __sync_bool_compare_and_swap(addr, old, new_val);
 
141
+}
 
142
+
 
143
+// Ensure that subsequent instructions do not execute on stale
 
144
+// data that was loaded from memory before the barrier.
 
145
+inline static void
 
146
+read_barrier()
 
147
+{
 
148
+  __sync_synchronize();
 
149
+}
 
150
+
 
151
+// Ensure that prior stores to memory are completed with respect to other
 
152
+// processors.
 
153
+inline static void
 
154
+write_barrier()
 
155
+{
 
156
+  __sync_synchronize();
 
157
+}
 
158
+#endif