]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/link: take function address in assembly in TestFuncAlign
authorCherry Mui <cherryyz@google.com>
Tue, 1 Jun 2021 23:16:33 +0000 (19:16 -0400)
committerCherry Mui <cherryyz@google.com>
Thu, 3 Jun 2021 14:27:08 +0000 (14:27 +0000)
In TestFuncAlign we want to get the address of an assembly
function. Take the address in assembly, so we get the actual
function's address, not the wrapper's.

Change-Id: Idc1fe2c8426562c70f8f7d6e489584ef059bc556
Reviewed-on: https://go-review.googlesource.com/c/go/+/324249
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/link_test.go

index 4d6bc76aca82a588ace4b2ca8f48c010b195244b..4a580991ef48cd63b56b5011189f2205a1f59a76 100644 (file)
@@ -524,14 +524,13 @@ const testFuncAlignSrc = `
 package main
 import (
        "fmt"
-       "reflect"
 )
 func alignPc()
+var alignPcFnAddr uintptr
 
 func main() {
-       addr := reflect.ValueOf(alignPc).Pointer()
-       if (addr % 512) != 0 {
-               fmt.Printf("expected 512 bytes alignment, got %v\n", addr)
+       if alignPcFnAddr % 512 != 0 {
+               fmt.Printf("expected 512 bytes alignment, got %v\n", alignPcFnAddr)
        } else {
                fmt.Printf("PASS")
        }
@@ -546,6 +545,9 @@ TEXT        ·alignPc(SB),NOSPLIT, $0-0
        PCALIGN $512
        MOVD    $3, R1
        RET
+
+GLOBL  ·alignPcFnAddr(SB),RODATA,$8
+DATA   ·alignPcFnAddr(SB)/8,$·alignPc(SB)
 `
 
 // TestFuncAlign verifies that the address of a function can be aligned