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
|
The first line of this file holds the git revision number of the last
|
||||||
merge done from the gofrontend repository.
|
merge done from the gofrontend repository.
|
||||||
|
@ -30,6 +30,11 @@
|
|||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
|
/* A copy of _end that a shared library can reasonably refer to. */
|
||||||
|
uintptr __go_end;
|
||||||
|
|
||||||
|
extern byte _end[];
|
||||||
|
|
||||||
/* The main function. */
|
/* The main function. */
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -41,6 +46,7 @@ main (int argc, char **argv)
|
|||||||
return 0;
|
return 0;
|
||||||
runtime_isstarted = true;
|
runtime_isstarted = true;
|
||||||
|
|
||||||
|
__go_end = (uintptr)_end;
|
||||||
runtime_check ();
|
runtime_check ();
|
||||||
runtime_args (argc, (byte **) argv);
|
runtime_args (argc, (byte **) argv);
|
||||||
runtime_osinit ();
|
runtime_osinit ();
|
||||||
|
@ -505,7 +505,8 @@ runtime_mallocinit(void)
|
|||||||
{
|
{
|
||||||
byte *p, *p1;
|
byte *p, *p1;
|
||||||
uintptr arena_size, bitmap_size, spans_size, p_size;
|
uintptr arena_size, bitmap_size, spans_size, p_size;
|
||||||
extern byte _end[];
|
uintptr *pend;
|
||||||
|
uintptr end;
|
||||||
uintptr limit;
|
uintptr limit;
|
||||||
uint64 i;
|
uint64 i;
|
||||||
bool reserved;
|
bool reserved;
|
||||||
@ -613,7 +614,12 @@ runtime_mallocinit(void)
|
|||||||
// So adjust it upward a little bit ourselves: 1/4 MB to get
|
// So adjust it upward a little bit ourselves: 1/4 MB to get
|
||||||
// away from the running binary image and then round up
|
// away from the running binary image and then round up
|
||||||
// to a MB boundary.
|
// 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_size = bitmap_size + spans_size + arena_size + PageSize;
|
||||||
p = runtime_SysReserve(p, p_size, &reserved);
|
p = runtime_SysReserve(p, p_size, &reserved);
|
||||||
if(p == nil)
|
if(p == nil)
|
||||||
|
@ -863,3 +863,4 @@ extern void _cgo_notify_runtime_init_done (void);
|
|||||||
extern _Bool runtime_iscgo;
|
extern _Bool runtime_iscgo;
|
||||||
extern _Bool runtime_cgoHasExtraM;
|
extern _Bool runtime_cgoHasExtraM;
|
||||||
extern Hchan *runtime_main_init_done;
|
extern Hchan *runtime_main_init_done;
|
||||||
|
extern uintptr __go_end __attribute__ ((weak));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user