mirror of
https://github.com/golang/go
synced 2024-11-12 01:10:21 -07:00
[dev.typeparams] cmd/link: take function address in assembly in TestFuncAlign
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>
This commit is contained in:
parent
95c618e99a
commit
9c054f4137
@ -524,14 +524,13 @@ const testFuncAlignSrc = `
|
|||||||
package main
|
package main
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
|
||||||
)
|
)
|
||||||
func alignPc()
|
func alignPc()
|
||||||
|
var alignPcFnAddr uintptr
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
addr := reflect.ValueOf(alignPc).Pointer()
|
if alignPcFnAddr % 512 != 0 {
|
||||||
if (addr % 512) != 0 {
|
fmt.Printf("expected 512 bytes alignment, got %v\n", alignPcFnAddr)
|
||||||
fmt.Printf("expected 512 bytes alignment, got %v\n", addr)
|
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("PASS")
|
fmt.Printf("PASS")
|
||||||
}
|
}
|
||||||
@ -546,6 +545,9 @@ TEXT ·alignPc(SB),NOSPLIT, $0-0
|
|||||||
PCALIGN $512
|
PCALIGN $512
|
||||||
MOVD $3, R1
|
MOVD $3, R1
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
GLOBL ·alignPcFnAddr(SB),RODATA,$8
|
||||||
|
DATA ·alignPcFnAddr(SB)/8,$·alignPc(SB)
|
||||||
`
|
`
|
||||||
|
|
||||||
// TestFuncAlign verifies that the address of a function can be aligned
|
// TestFuncAlign verifies that the address of a function can be aligned
|
||||||
|
Loading…
Reference in New Issue
Block a user