]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix racewalk after writebarrierfat was renamed to typedmemmove
authorDaniel Morsing <daniel.morsing@gmail.com>
Sat, 10 Jan 2015 17:53:13 +0000 (17:53 +0000)
committerDaniel Morsing <daniel.morsing@gmail.com>
Sun, 11 Jan 2015 09:34:53 +0000 (09:34 +0000)
Renaming the function broke the race detector since it looked for the
name, didn't find it anymore and didn't insert the necessary
instrumentation.

Change-Id: I11fed6e807cc35be5724d26af12ceff33ebf4f7b
Reviewed-on: https://go-review.googlesource.com/2661
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
src/cmd/gc/racewalk.c

index c9e27fe5604a88ae45016c3ff343861fb2e8bdf7..de9e32b2a8b3c0fe964072cdf8af4ea5c2761812 100644 (file)
@@ -210,11 +210,12 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
        case OCALLFUNC:
                // Instrument dst argument of runtime.writebarrier* calls
                // as we do not instrument runtime code.
-               if(n->left->sym != S && n->left->sym->pkg == runtimepkg && strncmp(n->left->sym->name, "writebarrier", 12) == 0) {
+               if(n->left->sym != S && n->left->sym->pkg == runtimepkg && 
+               (strncmp(n->left->sym->name, "writebarrier", 12) == 0 || strcmp(n->left->sym->name, "typedmemmove") == 0)) {
                        // Find the dst argument.
                        // The list can be reordered, so it's not necessary just the first or the second element.
                        for(l = n->list; l; l = l->next) {
-                               if(strcmp(n->left->sym->name, "writebarrierfat") == 0) {
+                               if(strcmp(n->left->sym->name, "typedmemmove") == 0) {
                                        if(l->n->left->xoffset == widthptr)
                                                break;
                                } else {