[PATCH 1/9] Gccgo port to s390[x] -- part I

Dominik Vogt vogt@linux.vnet.ibm.com
Tue Sep 9 12:48:00 GMT 2014


This patch fixes bug 60406 in an architecture independent way.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60406

The key change in this patch is to use
_Unwind_FindEnclosingFunction() to identify the defering function.
However, this does not work on platforms that still use SJLJ
exceptions.

ChangeLog
2014-09-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>

        * libgo/runtime/proc.c (runtime_main): Initialize new structure fields.
        * libgo/runtime/go-recover.c (__go_can_recover): Rewrite logic to detect
        recover by return address.
        * libgo/runtime/go-defer.c (__go_set_defer_retaddr): Removed.
        (__go_set_defering_fn): Replacement for __go_set_defer_retaddr.
        (__go_defer): Initialize new structure fields.
        * libgo/runtime/go-defer.h (struct __go_defer_stack): Replace __retaddr
        with __defering_fn.

gcc/go/ChangeLog
2014-09-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>

        * gofrontend/statements.cc (build_thunk): The thunk uses the new
        libgo runtime runctions __go_set_defering_fn and no longer depends
        on the fake label and fake return value.
        * gofrontend/runtime.def: Replace SET_DEFER_RETADDR with
        SET_DEFERING_FN.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-GO-Fix-recover-logic-in-libgo-and-gofrontend.patch
Type: text/x-diff
Size: 8288 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20140909/3f6135fc/attachment.bin>


More information about the Gcc-patches mailing list