X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=boehm-gc%2Fos_dep.c;h=82386ec4fba1bfc93259793ea388faf016e283be;hb=9fb0071e8290a9920e4b6074dd121df6c45aba36;hp=88194fe82db7d307a5fbc23e19ef8d74e8ac2dc5;hpb=11b4f29a3ac806752f8de43d37ca2b3533b7807e;p=pf3gnuchains%2Fgcc-fork.git diff --git a/boehm-gc/os_dep.c b/boehm-gc/os_dep.c index 88194fe82db..82386ec4fba 100644 --- a/boehm-gc/os_dep.c +++ b/boehm-gc/os_dep.c @@ -155,11 +155,11 @@ # 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; @@ -169,16 +169,16 @@ # 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)