// Copyright 2024 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package checktest defines some code and data for use in // the crypto/internal/fips140/check test. package checktest import ( _ "crypto/internal/fips140/check" "runtime" _ "unsafe" // go:linkname ) var NOPTRDATA int = 1 // The linkname here disables asan registration of this global, // because asan gets mad about rodata globals. // //go:linkname RODATA crypto/internal/fips140/check/checktest.RODATA var RODATA int32 // set to 2 in asm.s // DATA needs to have both a pointer and an int so that _some_ of it gets // initialized at link time, so it is treated as DATA and not BSS. // The pointer is deferred to init time. var DATA = struct { P *int X int }{&NOPTRDATA, 3} var NOPTRBSS int var BSS *int func TEXT() {} var ( globl12 [12]byte globl8 [8]byte ) func init() { globl8 = [8]byte{1, 2, 3, 4, 5, 6, 7, 8} globl12 = [12]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} runtime.Gosched() sum := byte(0) for _, x := range globl12 { sum += x } if sum != 78 { panic("globl12 did not sum properly") } sum = byte(0) for _, x := range globl8 { sum += x } if sum != 36 { panic("globl8 did not sum properly") } }