123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- // +build !race,amd64,go1.16,!go1.25
- // Code generated by Makefile, DO NOT EDIT.
- /*
- * Copyright 2021 ByteDance Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the License );
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package {{PACKAGE}}
- import (
- "unsafe"
- "testing"
- "github.com/bytedance/sonic/loader"
- )
- // copied from g01.20.4 signal_linux_amd64.go
- type sigctxt struct {
- info unsafe.Pointer
- ctxt unsafe.Pointer
- }
- type stackt struct {
- ss_sp *byte
- ss_flags int32
- pad_cgo_0 [4]byte
- ss_size uintptr
- }
- type mcontext struct {
- gregs [23]uint64
- fpregs unsafe.Pointer
- __reserved1 [8]uint64
- }
- type sigcontext struct {
- r8 uint64
- r9 uint64
- r10 uint64
- r11 uint64
- r12 uint64
- r13 uint64
- r14 uint64
- r15 uint64
- rdi uint64
- rsi uint64
- rbp uint64
- rbx uint64
- rdx uint64
- rax uint64
- rcx uint64
- rsp uint64
- rip uint64
- eflags uint64
- cs uint16
- gs uint16
- fs uint16
- __pad0 uint16
- err uint64
- trapno uint64
- oldmask uint64
- cr2 uint64
- fpstate unsafe.Pointer
- __reserved1 [8]uint64
- }
- type ucontext struct {
- uc_flags uint64
- uc_link *ucontext
- uc_stack stackt
- uc_mcontext mcontext
- }
- //go:nosplit
- func (c *sigctxt) regs() *sigcontext {
- return (*sigcontext)(unsafe.Pointer(&(*ucontext)(c.ctxt).uc_mcontext))
- }
- func (c *sigctxt) rsp() uint64 { return c.regs().rsp }
- //go:nosplit
- func (c *sigctxt) sigpc() uintptr { return uintptr(c.rip()) }
- //go:nosplit
- func (c *sigctxt) rip() uint64 { return c.regs().rip }
- func (c *sigctxt) sigsp() uintptr { return uintptr(c.rsp()) }
- func (c *sigctxt) siglr() uintptr { return 0 }
- // only used for test sonic trace
- //go:linkname testSigtrap runtime.testSigtrap
- var testSigtrap func(info unsafe.Pointer, c *sigctxt, gp unsafe.Pointer) bool
- func init() {
- if testSigtrap == nil {
- testSigtrap = sonicSigTrap
- }
- }
- //go:linkname traceback1 runtime.traceback1
- func traceback1(pc, sp, lr uintptr, gp unsafe.Pointer, flags uint);
- func sonicSigTrap(info unsafe.Pointer, c *sigctxt, gp unsafe.Pointer) bool {
- pc := c.sigpc()
- sp := c.sigsp()
- lr := c.siglr()
- traceback1(pc, sp, lr, gp, 0);
- return true
- }
- // =================== register mocked functions ===================
- var F_mock_f32toa func()
- var S_mock_f32toa uintptr
- //go:nosplit
- func mock_f32toa() {
- F_mock_f32toa()
- }
- var F_mock_f64toa func()
- var S_mock_f64toa uintptr
- //go:nosplit
- func mock_f64toa() {
- F_mock_f64toa()
- }
- var F_mock_get_by_path func()
- var S_mock_get_by_path uintptr
- //go:nosplit
- func mock_get_by_path() {
- F_mock_get_by_path()
- }
- var F_mock_html_escape func()
- var S_mock_html_escape uintptr
- //go:nosplit
- func mock_html_escape() {
- F_mock_html_escape()
- }
- var F_mock_i64toa func()
- var S_mock_i64toa uintptr
- //go:nosplit
- func mock_i64toa() {
- F_mock_i64toa()
- }
- var F_mock_lspace func()
- var S_mock_lspace uintptr
- //go:nosplit
- func mock_lspace() {
- F_mock_lspace()
- }
- var F_mock_quote func()
- var S_mock_quote uintptr
- //go:nosplit
- func mock_quote() {
- F_mock_quote()
- }
- var F_mock_skip_array func()
- var S_mock_skip_array uintptr
- //go:nosplit
- func mock_skip_array() {
- F_mock_skip_array()
- }
- var F_mock_skip_number func()
- var S_mock_skip_number uintptr
- //go:nosplit
- func mock_skip_number() {
- F_mock_skip_number()
- }
- var F_mock_skip_one func()
- var S_mock_skip_one uintptr
- //go:nosplit
- func mock_skip_one() {
- F_mock_skip_one()
- }
- var F_mock_skip_object func()
- var S_mock_skip_object uintptr
- //go:nosplit
- func mock_skip_object() {
- F_mock_skip_object()
- }
- var F_mock_skip_one_fast func()
- var S_mock_skip_one_fast uintptr
- //go:nosplit
- func mock_skip_one_fast() {
- F_mock_skip_one_fast()
- }
- var F_mock_u64toa func()
- var S_mock_u64toa uintptr
- //go:nosplit
- func mock_u64toa() {
- F_mock_u64toa()
- }
- var F_mock_unquote func()
- var S_mock_unquote uintptr
- //go:nosplit
- func mock_unquote() {
- F_mock_unquote()
- }
- var F_mock_validate_one func()
- var S_mock_validate_one uintptr
- //go:nosplit
- func mock_validate_one() {
- F_mock_validate_one()
- }
- var F_mock_validate_utf8 func()
- var S_mock_validate_utf8 uintptr
- //go:nosplit
- func mock_validate_utf8() {
- F_mock_validate_utf8()
- }
- var F_mock_validate_utf8_fast func()
- var S_mock_validate_utf8_fast uintptr
- //go:nosplit
- func mock_validate_utf8_fast() {
- F_mock_validate_utf8_fast()
- }
- var F_mock_vnumber func()
- var S_mock_vnumber uintptr
- //go:nosplit
- func mock_vnumber() {
- F_mock_vnumber()
- }
- var F_mock_vsigned func()
- var S_mock_vsigned uintptr
- //go:nosplit
- func mock_vsigned() {
- F_mock_vsigned()
- }
- var F_mock_vunsigned func()
- var S_mock_vunsigned uintptr
- //go:nosplit
- func mock_vunsigned() {
- F_mock_vunsigned()
- }
- var F_mock_vstring func()
- var S_mock_vstring uintptr
- //go:nosplit
- func mock_vstring() {
- F_mock_vstring()
- }
- var F_mock_value func()
- var S_mock_value uintptr
- //go:nosplit
- func mock_value() {
- F_mock_value()
- }
- var F_mock_parse_with_padding func()
- var S_mock_parse_with_padding uintptr
- //go:nosplit
- func mock_parse_with_padding() {
- F_mock_parse_with_padding()
- }
- var F_mock_lookup_small_key func()
- var S_mock_lookup_small_key uintptr
- //go:nosplit
- func mock_lookup_small_key() {
- F_mock_lookup_small_key()
- }
- func init() {
- Mock()
- }
- func Mock() {
- loader.WrapGoC(_mock_text_f64toa, _cfunc_f64toa, []loader.GoC{{"_f64toa", &S_mock_f64toa, &F_mock_f64toa}}, "{{PACKAGE}}", "{{PACKAGE}}/f64toa.c")
- loader.WrapGoC(_mock_text_f32toa, _cfunc_f32toa, []loader.GoC{{"_f32toa", &S_mock_f32toa, &F_mock_f32toa}}, "{{PACKAGE}}", "{{PACKAGE}}/f32toa.c")
- loader.WrapGoC(_mock_text_get_by_path, _cfunc_get_by_path, []loader.GoC{{"_get_by_path", &S_mock_get_by_path, &F_mock_get_by_path}}, "{{PACKAGE}}", "{{PACKAGE}}/get_by_path.c")
- loader.WrapGoC(_mock_text_html_escape, _cfunc_html_escape, []loader.GoC{{"_html_escape", &S_mock_html_escape, &F_mock_html_escape}}, "{{PACKAGE}}", "{{PACKAGE}}/html_escape.c")
- loader.WrapGoC(_mock_text_i64toa, _cfunc_i64toa, []loader.GoC{{"_i64toa", &S_mock_i64toa, &F_mock_i64toa}}, "{{PACKAGE}}", "{{PACKAGE}}/i64toa.c")
- loader.WrapGoC(_mock_text_lspace, _cfunc_lspace, []loader.GoC{{"_lspace", &S_mock_lspace, &F_mock_lspace}}, "{{PACKAGE}}", "{{PACKAGE}}/lspace.c")
- loader.WrapGoC(_mock_text_quote, _cfunc_quote, []loader.GoC{{"_quote", &S_mock_quote, &F_mock_quote}}, "{{PACKAGE}}", "{{PACKAGE}}/quote.c")
- loader.WrapGoC(_mock_text_skip_array, _cfunc_skip_array, []loader.GoC{{"_skip_array", &S_mock_skip_array, &F_mock_skip_array}}, "{{PACKAGE}}", "{{PACKAGE}}/skip_array.c")
- loader.WrapGoC(_mock_text_skip_number, _cfunc_skip_number, []loader.GoC{{"_skip_number", &S_mock_skip_number, &F_mock_skip_number}}, "{{PACKAGE}}", "{{PACKAGE}}/skip_number.c")
- loader.WrapGoC(_mock_text_skip_one, _cfunc_skip_one, []loader.GoC{{"_skip_one", &S_mock_skip_one, &F_mock_skip_one}}, "{{PACKAGE}}", "{{PACKAGE}}/skip_one.c")
- loader.WrapGoC(_mock_text_skip_object, _cfunc_skip_object, []loader.GoC{{"_skip_object", &S_mock_skip_object, &F_mock_skip_object}}, "{{PACKAGE}}", "{{PACKAGE}}/skip_object.c")
- loader.WrapGoC(_mock_text_skip_one_fast, _cfunc_skip_one_fast, []loader.GoC{{"_skip_one_fast", &S_mock_skip_one_fast, &F_mock_skip_one_fast}}, "{{PACKAGE}}", "{{PACKAGE}}/skip_one_fast.c")
- loader.WrapGoC(_mock_text_u64toa, _cfunc_u64toa, []loader.GoC{{"_u64toa", &S_mock_u64toa, &F_mock_u64toa}}, "{{PACKAGE}}", "{{PACKAGE}}/u64toa.c")
- loader.WrapGoC(_mock_text_unquote, _cfunc_unquote, []loader.GoC{{"_unquote", &S_mock_unquote, &F_mock_unquote}}, "{{PACKAGE}}", "{{PACKAGE}}/unquote.c")
- loader.WrapGoC(_mock_text_validate_one, _cfunc_validate_one, []loader.GoC{{"_validate_one", &S_mock_validate_one, &F_mock_validate_one}}, "{{PACKAGE}}", "{{PACKAGE}}/validate_one.c")
- loader.WrapGoC(_mock_text_validate_utf8, _cfunc_validate_utf8, []loader.GoC{{"_validate_utf8", &S_mock_validate_utf8, &F_mock_validate_utf8}}, "{{PACKAGE}}", "{{PACKAGE}}/validate_utf8.c")
- loader.WrapGoC(_mock_text_validate_utf8_fast, _cfunc_validate_utf8_fast, []loader.GoC{{"_validate_utf8_fast", &S_mock_validate_utf8_fast, &F_mock_validate_utf8_fast}}, "{{PACKAGE}}", "{{PACKAGE}}/validate_utf8_fast.c")
- loader.WrapGoC(_mock_text_vnumber, _cfunc_vnumber, []loader.GoC{{"_vnumber", &S_mock_vnumber, &F_mock_vnumber}}, "{{PACKAGE}}", "{{PACKAGE}}/vnumber.c")
- loader.WrapGoC(_mock_text_vsigned, _cfunc_vsigned, []loader.GoC{{"_vsigned", &S_mock_vsigned, &F_mock_vsigned}}, "{{PACKAGE}}", "{{PACKAGE}}/vsigned.c")
- loader.WrapGoC(_mock_text_vunsigned, _cfunc_vunsigned, []loader.GoC{{"_vunsigned", &S_mock_vunsigned, &F_mock_vunsigned}}, "{{PACKAGE}}", "{{PACKAGE}}/vunsigned.c")
- loader.WrapGoC(_mock_text_vstring, _cfunc_vstring, []loader.GoC{{"_vstring", &S_mock_vstring, &F_mock_vstring}}, "{{PACKAGE}}", "{{PACKAGE}}/vstring.c")
- loader.WrapGoC(_mock_text_value, _cfunc_value, []loader.GoC{{"_value", &S_mock_value, &F_mock_value}}, "{{PACKAGE}}", "{{PACKAGE}}/value.c")
- loader.WrapGoC(_mock_text_parse_with_padding, _cfunc_parse_with_padding, []loader.GoC{{"_parse_with_padding", &S_mock_parse_with_padding, &F_mock_parse_with_padding}}, "{{PACKAGE}}", "{{PACKAGE}}/parse_with_padding.c")
- loader.WrapGoC(_mock_text_lookup_small_key, _cfunc_lookup_small_key, []loader.GoC{{"_lookup_small_key", &S_mock_lookup_small_key, &F_mock_lookup_small_key}}, "{{PACKAGE}}", "{{PACKAGE}}/lookup_small_key.c")
- }
- func TestTraceback(t *testing.T) {
- tests := []func() {
- mock_lspace,
- mock_f32toa,
- mock_f64toa,
- mock_html_escape,
- mock_i64toa,
- mock_quote,
- mock_skip_array,
- mock_skip_number,
- mock_skip_one,
- mock_get_by_path,
- mock_skip_object,
- mock_skip_one_fast,
- mock_u64toa,
- mock_unquote,
- mock_validate_one,
- mock_validate_utf8,
- mock_validate_utf8_fast,
- mock_vnumber,
- mock_vsigned,
- mock_vunsigned,
- mock_vstring,
- mock_value,
- mock_parse_with_padding,
- mock_lookup_small_key,
- }
- for _, f := range tests {
- f()
- }
- }
|