diff options
Diffstat (limited to 'libgo/runtime/runtime_c.c')
-rw-r--r-- | libgo/runtime/runtime_c.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/libgo/runtime/runtime_c.c b/libgo/runtime/runtime_c.c index 18222c1..f92bdd4 100644 --- a/libgo/runtime/runtime_c.c +++ b/libgo/runtime/runtime_c.c @@ -116,7 +116,7 @@ runtime_signalstack(byte *p, uintptr n) if(p == nil) st.ss_flags = SS_DISABLE; if(sigaltstack(&st, nil) < 0) - *(int *)0xf1 = 0xf1; + abort(); } int32 go_open(char *, int32, int32) @@ -199,10 +199,13 @@ getEnd() uintptr getText(void) __asm__ (GOSYM_PREFIX "runtime.getText"); +extern void main_main(void*) + __asm__(GOSYM_PREFIX "main.main"); + uintptr getText(void) { - return (uintptr)(const void *)(getText); + return (uintptr)(const void *)(main_main); } // Return the end of the text segment, assumed to come after the @@ -224,6 +227,24 @@ getEtext(void) return (uintptr)(p); } +// Return the start of the BSS section. + +uintptr getBSS(void) + __asm__ (GOSYM_PREFIX "runtime.getBSS"); + +uintptr +getBSS(void) +{ + const void *p; + + p = __edata; + if (p == NULL) + p = _edata; + if (p == NULL) + p = __bss_start; + return (uintptr)(p); +} + // CPU-specific initialization. // Fetch CPUID info on x86. |