re PR go/69357 (libgo refers to _end in a non-weak way)
PR go/69537 runtime: Don't refer to _end symbol in shared library. Fixes GCC PR 69357. Reviewed-on: https://go-review.googlesource.com/19362 From-SVN: r233235
This commit is contained in:
parent
41798077bf
commit
cc240aa7d1
@ -1,4 +1,4 @@
|
||||
91833164072078a3fde7e9b05641ec3ed4a2f5d0
|
||||
2ef5f1ca449b5cf07dbbd7b13a50910fb5567372
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -30,6 +30,11 @@
|
||||
|
||||
extern char **environ;
|
||||
|
||||
/* A copy of _end that a shared library can reasonably refer to. */
|
||||
uintptr __go_end;
|
||||
|
||||
extern byte _end[];
|
||||
|
||||
/* The main function. */
|
||||
|
||||
int
|
||||
@ -41,6 +46,7 @@ main (int argc, char **argv)
|
||||
return 0;
|
||||
runtime_isstarted = true;
|
||||
|
||||
__go_end = (uintptr)_end;
|
||||
runtime_check ();
|
||||
runtime_args (argc, (byte **) argv);
|
||||
runtime_osinit ();
|
||||
|
@ -505,7 +505,8 @@ runtime_mallocinit(void)
|
||||
{
|
||||
byte *p, *p1;
|
||||
uintptr arena_size, bitmap_size, spans_size, p_size;
|
||||
extern byte _end[];
|
||||
uintptr *pend;
|
||||
uintptr end;
|
||||
uintptr limit;
|
||||
uint64 i;
|
||||
bool reserved;
|
||||
@ -613,7 +614,12 @@ runtime_mallocinit(void)
|
||||
// So adjust it upward a little bit ourselves: 1/4 MB to get
|
||||
// away from the running binary image and then round up
|
||||
// to a MB boundary.
|
||||
p = (byte*)ROUND((uintptr)_end + (1<<18), 1<<20);
|
||||
|
||||
end = 0;
|
||||
pend = &__go_end;
|
||||
if(pend != nil)
|
||||
end = *pend;
|
||||
p = (byte*)ROUND(end + (1<<18), 1<<20);
|
||||
p_size = bitmap_size + spans_size + arena_size + PageSize;
|
||||
p = runtime_SysReserve(p, p_size, &reserved);
|
||||
if(p == nil)
|
||||
|
@ -863,3 +863,4 @@ extern void _cgo_notify_runtime_init_done (void);
|
||||
extern _Bool runtime_iscgo;
|
||||
extern _Bool runtime_cgoHasExtraM;
|
||||
extern Hchan *runtime_main_init_done;
|
||||
extern uintptr __go_end __attribute__ ((weak));
|
||||
|
Loading…
x
Reference in New Issue
Block a user