OSDN Git Service

2003-01-06 Dale Johannesen <dalej@apple.com>
[pf3gnuchains/gcc-fork.git] / boehm-gc / os_dep.c
index 88194fe..82386ec 100644 (file)
 
 # ifdef LINUX
 #   pragma weak __data_start
-    extern int __data_start;
+    extern int __data_start[];
 #   pragma weak data_start
-    extern int data_start;
+    extern int data_start[];
 # endif /* LINUX */
-  extern int _end;
+  extern int _end[];
 
   ptr_t GC_data_start;
 
 
 #   ifdef LINUX
       /* Try the easy approaches first:        */
-      if (&__data_start != 0) {
-         GC_data_start = (ptr_t)(&__data_start);
+      if (__data_start != 0) {
+         GC_data_start = (ptr_t)__data_start;
          return;
       }
-      if (&data_start != 0) {
-         GC_data_start = (ptr_t)(&data_start);
+      if (data_start != 0) {
+         GC_data_start = (ptr_t)data_start;
          return;
       }
 #   endif /* LINUX */
-    GC_data_start = GC_find_limit((ptr_t)(&_end), FALSE);
+    GC_data_start = GC_find_limit((ptr_t)_end, FALSE);
   }
 #endif
 
@@ -2174,7 +2174,7 @@ SIG_PF GC_old_segv_handler;       /* Also old MSWIN32 ACCESS_VIOLATION filter */
        char * addr = (char *) (scp -> si_addr);
 #   endif
 #   ifdef LINUX
-#     ifdef I386
+#     if defined(I386) || defined (X86_64)
        char * addr = (char *) (sc.cr2);
 #     else
 #      if defined(M68K)